@charset "UTF-8";
:root{--ink:#193b78;--blue:#204ccc;--pink:#ff7eae;--yellow:#ffe871;--line:#254b85}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;background:#b9e7ff;min-height:100vh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:4px solid #e64586;outline-offset:5px}button{touch-action:manipulation}button:disabled{cursor:default}[hidden]{display:none!important}body:before{content:"";position:fixed;inset:0;z-index:-2;background-image:radial-gradient(#fff8 1.3px,transparent 1.3px);background-size:20px 20px}.site-wrap{max-width:1280px;padding:0 44px;margin:auto}header{height:98px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #244a8024}.brand{text-decoration:none;color:var(--ink);font-weight:900;font-size:23px;display:flex;align-items:center;gap:7px;letter-spacing:-1px}.brand span{background:var(--yellow);border:2px solid var(--ink);border-radius:8px;padding:1px 6px;transform:rotate(-6deg)}.brand i{font-style:normal;font-size:10px;letter-spacing:1px;width:50px;line-height:1.1;margin-left:7px}.replay,.skip{border:1.5px solid var(--ink);border-radius:99px;padding:10px 17px;background:#ffffff90;font-size:14px;font-weight:600;min-height:44px}.heading{text-align:center;padding:38px 0 28px}.eyebrow{display:flex;justify-content:center;gap:14px;align-items:center;font-size:14px;font-weight:700;letter-spacing:1px}.eyebrow>span:first-child{padding:5px 14px;border-radius:30px;border:1.5px solid var(--ink);background:#fff}.date{font-variant-numeric:tabular-nums}h1{margin:13px 0 14px;font-size:clamp(40px,5vw,68px);line-height:1.16;letter-spacing:-3px;font-weight:950}.number{font-size:1.27em;padding-left:5px;letter-spacing:-5px;text-shadow:3px 3px 0 #fff}.pink{color:#f65b97;display:inline-block;transform:rotate(-9deg)}.huzhou{display:inline-block;font-size:.57em;letter-spacing:0;background:var(--yellow);border:2px solid var(--ink);border-radius:13px;padding:6px 15px;transform:rotate(-7deg);margin-left:20px;position:relative;vertical-align:middle;box-shadow:3px 4px 0 var(--ink)}.spark{position:absolute;right:-23px;top:-27px;color:#f75b94;font-size:42px;-webkit-text-stroke:1.5px var(--ink)}.heading p{margin:10px 0;font-size:18px;font-weight:600;letter-spacing:2px}.small-note{font-size:14px;margin-top:13px;color:#41668b}.teams{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;align-items:start}.team{position:relative;--accent:#ffe88b;--surface:#fffdf2;background:var(--surface);border:2px solid var(--line);border-radius:23px;box-shadow:5px 6px 0 #30508b;overflow:visible;padding:18px 19px 0;transition:transform .22s}.team.shanghai{--accent:#adcfff;--surface:#f4f8ff;transform:rotate(1deg)}.team.hefei{transform:rotate(-1deg)}.team.ninghang{--accent:#ffb3d0;--surface:#fff4f8;transform:rotate(-.8deg)}.team-top{display:flex;gap:8px;align-items:center;font-size:10px;letter-spacing:1px;font-weight:800}.team-index{font-size:17px;letter-spacing:-1px}.team-tag{margin-left:auto;letter-spacing:0;font-size:12px;background:var(--accent);border:1px solid var(--line);padding:4px 7px;border-radius:20px;white-space:nowrap}.team h2{font-size:28px;letter-spacing:-.5px;margin:16px 0 3px}.route{font-size:14px;color:#5b7291;font-weight:600}.crew-stage{position:relative;margin-top:11px}.crew-button{border:0;background:none;display:block;width:100%;padding:0;position:relative;height:197px;transition:transform .2s}.crew-button:hover{transform:translateY(-4px)}.original-members{display:flex;align-items:center;justify-content:center;height:170px}.original{width:29%;height:116px;object-fit:cover;object-position:center 25%;border:4px solid white;box-shadow:0 0 0 2px var(--ink);border-radius:45%;margin:0 -5px;transform:rotate(-5deg)}.original:nth-child(even){transform:rotate(7deg)}.face-8{object-position:50% 43%}.face-6{object-position:50% 25%}.crew-image{width:100%;height:185px;object-fit:contain;display:block;filter:drop-shadow(0 5px 0 #213e6e12)}.tap-hint{position:absolute;bottom:0;left:50%;transform:translateX(-50%) rotate(-3deg);white-space:nowrap;border:1.5px solid var(--line);background:var(--accent);border-radius:20px;padding:5px 13px;font-size:13px;font-weight:700;box-shadow:2px 2px 0 var(--ink)}.member-names{text-align:center;font-size:14px;font-weight:700;margin:15px -5px 14px}.transport{position:relative;border-top:1.5px dashed #183e7638;padding-top:7px}.vehicle-button{border:0;background:transparent;width:100%;padding:0 0 14px}.vehicle-art{display:block;font-size:78px;height:100px}.vehicle-image{height:125px;max-width:100%;width:245px;object-fit:contain;display:block;margin:auto;transition:transform .24s}.vehicle-button:hover .vehicle-image{transform:translateX(7px) rotate(-2deg)}.vehicle-label{display:flex;align-items:center;justify-content:center;gap:10px;font-size:14px;font-weight:800}.vehicle-label>span{font-weight:500;font-size:12px;color:#63718a}.team-bottom{border-top:1px solid #264e8328;display:flex;align-items:center;gap:6px;padding:13px 0;font-size:11px;font-weight:600;letter-spacing:0}.team-bottom>span:last-child{margin-left:auto;color:#74819b}.status-dot{height:6px;width:6px;border-radius:50%;background:#3f75ca}.bubble{position:absolute;z-index:5;background:#fff;border:2px solid var(--ink);box-shadow:4px 5px 0 #15387930;border-radius:30px;padding:17px 20px;font-size:15px;font-weight:700;line-height:1.65;text-align:center;animation:pop .22s ease-out;pointer-events:none}.bubble:after{content:"";position:absolute;width:15px;height:15px;background:white;transform:rotate(45deg);bottom:-9px;left:50%;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink)}.team-bubble{left:-8px;right:-8px;bottom:65px}.car-bubble{bottom:100px;left:0;right:0}.departure{text-align:center;padding:38px 0 22px}.boarding{font-size:13px;letter-spacing:1px;display:block;margin-bottom:13px;font-weight:600}.start{display:block;margin:0 auto;background:var(--blue);color:#fff;border:2px solid #132f74;border-radius:18px;padding:18px 29px;font-size:20px;font-weight:800;box-shadow:4px 5px 0 #132f74;transition:transform .18s,box-shadow .18s;min-height:64px}.start>span{font-size:27px;padding-left:30px;color:var(--yellow)}.start:hover{transform:translate(-1px,-3px);box-shadow:5px 8px 0 #132f74}.start:active{transform:translate(3px,3px);box-shadow:1px 2px 0 #132f74}.departure p{font-size:13px;color:#4c698c;margin:15px 0 0}footer{display:flex;justify-content:space-between;padding:22px 0 28px;color:#52769b;font-size:11px;font-weight:600;letter-spacing:1px}.intro{position:fixed;inset:0;background:#8ed2ff;z-index:20;display:flex;align-items:center;justify-content:center;overflow:hidden;transition:opacity .45s,transform .45s;background-image:radial-gradient(#ffffff70 1.5px,transparent 1.5px);background-size:25px 25px}.intro-active{overflow:hidden}.intro.leaving{opacity:0;transform:scale(1.08);pointer-events:none}.skip{position:absolute;right:25px;top:max(25px,env(safe-area-inset-top));z-index:2}.intro-content{text-align:center;width:min(650px,90vw)}.ticket-tag{display:inline-block;background:#ffe66e;border:2px solid var(--ink);border-radius:7px;padding:8px 14px;font-size:13px;font-weight:800;letter-spacing:2px;transform:rotate(-4deg);box-shadow:3px 3px 0 var(--ink)}.intro-pre{font-size:17px;margin:26px 0 7px}.intro-logo{display:flex;align-items:center;justify-content:center;gap:12px;font-size:54px;font-weight:950;animation:pop .65s cubic-bezier(.2,1.8,.5,1)}.intro-logo strong{font-size:120px;letter-spacing:-10px;text-shadow:5px 5px 0 white}.intro-logo .plus{display:inline-block;color:#ff6ca8;animation:plusspin 1s ease-out .5s both}.intro-members{display:flex;justify-content:center;padding:12px 0 18px}.intro-members img{width:62px;height:70px;border:3px solid #fff;border-radius:42%;object-fit:cover;object-position:center 25%;margin-left:-6px;box-shadow:0 3px 0 #183e76;animation:arrival .6s cubic-bezier(.2,1.5,.4,1) calc(.25s + var(--i)*.13s) both;transform:rotate(calc((var(--i) - 4)*3deg))}.intro-members img:last-child{object-position:50% 43%}.intro-destination{font-size:27px;font-weight:900;margin:6px 0 18px;animation:arrival .6s 1.5s both}.intro-route{display:flex;justify-content:center;gap:10px}.intro-route span{border:1.5px solid var(--ink);padding:6px 13px;border-radius:30px;background:white;font-size:14px}.loading-track{width:230px;height:9px;border:1.5px solid var(--ink);border-radius:10px;margin:28px auto 12px;background:#fff;overflow:hidden}.loading-track i{display:block;height:100%;background:#fd7caf;width:0;animation:load 4.4s linear forwards}.intro-date{font-size:13px;letter-spacing:1px}.next-ticket{max-width:640px;text-align:center;background:#fffef4;border:2px solid var(--ink);border-radius:25px;box-shadow:8px 8px 0 #23447f;margin:70px auto;padding:45px 30px}.next-ticket h1{font-size:52px;letter-spacing:-1px;margin-top:28px}.next-ticket p{line-height:1.9;font-size:18px}.next-date{font-size:20px;letter-spacing:2px;font-weight:800}.ticket-line{border-top:2px dashed #99b0cf;margin:28px 0}.boop{animation:boop .3s ease}#confetti{position:fixed;inset:0;pointer-events:none;z-index:30;overflow:hidden}#confetti i{position:absolute;left:var(--x);top:-25px;width:10px;height:18px;animation:fall 1.8s ease-in var(--d) both}@keyframes fall{to{transform:translateY(105vh) rotate(var(--r))}}@keyframes pop{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes arrival{from{opacity:0;translate:0 35px}to{opacity:1;translate:0 0}}@keyframes plusspin{from{transform:rotate(-180deg) scale(0)}to{transform:rotate(-9deg) scale(1)}}@keyframes load{to{width:100%}}@keyframes boop{50%{transform:rotate(-3deg) scale(1.04)}}
@media(min-width:1300px){.site-wrap{max-width:1330px}.crew-button{height:216px}.crew-image{height:205px}}
@media(max-width:950px){.site-wrap{padding:0 25px}.teams{gap:16px}.team{padding:15px 12px 0}.team-top{letter-spacing:0;font-size:9px;gap:4px}.team-tag{font-size:10px;padding:4px}.team h2{font-size:24px}.team-bottom{font-size:10px}.crew-button{height:165px}.crew-image{height:155px}.member-names{font-size:12px}.vehicle-image{height:112px}.heading{padding-top:30px}}
@media(max-width:680px){.site-wrap{padding:0 21px}header{height:76px}.brand{font-size:20px}.brand i{font-size:9px}.replay{font-size:12px;padding:8px 12px}.heading{padding:29px 0 26px}.eyebrow{font-size:12px;gap:10px;letter-spacing:0}h1{font-size:43px;letter-spacing:-2px;margin-top:16px}.number{letter-spacing:-3px}.huzhou{font-size:23px;margin-left:10px;padding:6px 10px;border-radius:10px}.spark{font-size:30px;right:-15px;top:-20px}.heading p{font-size:16px;letter-spacing:1px}.small-note{font-size:12px;margin-top:11px}.teams{grid-template-columns:1fr;gap:27px;max-width:430px;margin:auto}.team{padding:19px 22px 0}.team-top{font-size:11px;letter-spacing:1px}.team-tag{font-size:12px;padding:4px 8px}.team h2{font-size:29px}.route{font-size:14px}.crew-button{height:220px}.crew-image{height:216px}.member-names{font-size:14px;margin-top:13px}.vehicle-image{height:140px;width:270px}.team-bottom{font-size:12px;padding:14px 0}.vehicle-label{font-size:15px}.tap-hint{font-size:14px}.original-members{height:200px}.original{height:130px}.departure{padding-top:34px}.start{font-size:18px;padding:17px 20px;width:100%;max-width:430px}.start>span{padding-left:10px}.boarding{font-size:12px}.intro-logo{font-size:38px;gap:7px}.intro-logo strong{font-size:100px}.intro-members img{width:43px;height:52px;margin-left:-3px}.intro-content{width:92vw}.intro-route span{font-size:12px;padding:6px 10px}.intro-destination{font-size:25px}.intro-date{font-size:12px}.next-ticket{margin:40px auto;padding:34px 20px}.next-ticket h1{font-size:40px}.next-ticket p{font-size:16px}.next-date{font-size:16px}footer{font-size:10px;letter-spacing:0;gap:10px}.ticket-tag{font-size:11px}.bubble{font-size:15px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

body{background-image:url('assets/travel-bg.png');background-size:cover;background-position:center;background-attachment:fixed}body:before{background:#c6ebff35}.intro{background-image:linear-gradient(#9ddcff55,#9ddcff55),url('assets/travel-bg.png');background-size:cover;background-position:center}.site-wrap{position:relative}.team{box-shadow:5px 6px 0 #30508b}.heading{filter:drop-shadow(0 1px 0 #ffffff80)}@media(max-width:680px){body{background-size:auto 100vh;background-position:center top}.intro{background-size:auto 100%;}.heading h1{white-space:nowrap}}
/* Individual photo interactions: keep original faces and team card design. */
.people{display:flex;justify-content:center;align-items:center;min-height:197px;gap:10px;padding:10px 0}.person{position:relative;border:0;background:none;padding:0;min-width:0;text-align:center;transition:transform .2s}.person:hover{transform:translateY(-4px)}.portrait-frame{display:block;width:88px;height:100px;border:4px solid white;outline:2px solid var(--ink);border-radius:43% 43% 39% 39%;overflow:hidden;position:relative;box-shadow:3px 4px 0 #183e7620;background:#d5e8f8}.portrait-frame img{width:100%;height:100%;object-fit:cover;object-position:50% 25%;display:block;transform:scale(1.05)}.person-name{font-size:13px;font-weight:700;display:block;margin-top:9px;white-space:nowrap}.person-name small{display:block;font-size:10px;font-weight:500;margin-top:2px;color:#62789c}.duo{gap:22px}.duo .portrait-frame{width:108px;height:132px}.hefei-people{display:grid;grid-template-columns:1fr 1fr;gap:12px 18px;min-height:248px}.pair{display:flex;gap:7px;justify-content:center}.hefei-people .portrait-frame{width:55px;height:65px;border-width:3px}.hefei-people .person-name{font-size:12px}.solo{grid-column:1/-1;display:flex;justify-content:center;margin-top:4px}.solo .portrait-frame{width:67px;height:72px}.person-5 img{transform:scale(1.9);object-position:50% 34%;transform-origin:54% 31%}.person-9 img{transform:scale(2.6);transform-origin:49% 12%;object-position:center 12%}.person-8 img{transform:scale(1.9);transform-origin:50% 27%;object-position:center 27%}.person-7 img{transform:scale(1.9);transform-origin:58% 32%;object-position:center 30%}.person-8.is-dog img{transform:scale(1.85);transform-origin:center 48%;object-position:center 48%}.team-slogan-button{display:block;border:1.5px solid var(--line);background:var(--accent);border-radius:20px;padding:7px 13px;font-size:13px;font-weight:700;margin:4px auto 0;min-height:40px}.person-bubble{bottom:50px;left:-5px;right:-5px;pointer-events:none}.tears{display:none;position:absolute;top:33%;left:0;width:100%;font-size:18px;white-space:nowrap;text-align:center;filter:drop-shadow(0 1px 0 white)}.crying .tears{display:block;animation:cry .8s ease-in infinite}.crying .portrait-frame{animation:sob .45s ease-in-out infinite}.duo{min-height:248px}.member-names{display:none}.transport{margin-top:16px}.intro-members img{width:55px}.intro-members img:nth-child(5){object-position:50% 30%}.intro-members img:nth-child(7){object-position:50% 32%}.intro-members img:nth-child(8){object-position:50% 25%}.intro-members img:nth-child(9){object-position:50% 12%}@keyframes cry{from{translate:0 0;opacity:.9}to{translate:0 20px;opacity:.2}}@keyframes sob{50%{transform:rotate(2deg) translateY(1px)}}@media(max-width:950px) and (min-width:681px){.hefei-people{gap:12px 9px}.hefei-people .portrait-frame{width:43px;height:59px}.duo{gap:12px}.duo .portrait-frame{width:78px;height:115px}}@media(max-width:680px){.hefei-people{gap:14px 22px}.hefei-people .portrait-frame{width:64px;height:77px}.solo .portrait-frame{width:74px;height:80px}.duo{min-height:220px}.duo .portrait-frame{width:110px;height:140px}.intro-members img{width:36px;height:48px}.person-name{font-size:14px}.hefei-people .person-name{font-size:13px}.team-slogan-button{font-size:14px}.person-bubble{bottom:53px}}
/* Transparent photo heads, assembled as an independent-click sticker collage. */
.portrait-frame,.duo .portrait-frame,.hefei-people .portrait-frame,.solo .portrait-frame{border:0;outline:0;border-radius:0;box-shadow:none;background:transparent;overflow:visible;width:100px;height:104px}.head-art{display:block;width:100%;height:100%;background-size:300% 100%;background-repeat:no-repeat;filter:drop-shadow(2px 4px 0 #183e7630);transition:transform .2s}.person{transform:rotate(-6deg)}.person:nth-child(even){transform:rotate(7deg)}.person:hover{transform:translateY(-5px) rotate(0deg)}.person-name{position:relative;display:inline-block;background:#ffffffde;border:1px solid #254b8530;border-radius:14px;padding:2px 9px;margin-top:-2px;transform:rotate(3deg);font-size:13px}.hefei-people{gap:4px 3px;min-height:256px}.hefei-people .pair{gap:0}.hefei-people .portrait-frame{width:76px;height:92px}.solo{margin-top:-7px}.solo .portrait-frame{width:90px;height:96px}.solo .person{transform:rotate(2deg)}.duo{gap:0;min-height:256px}.duo .portrait-frame{width:145px;height:167px}.duo .person:first-child{margin-right:-16px;z-index:1}.person-name small{margin-top:0}.person-9 .tears{top:37%;font-size:19px}.is-dog .head-art{background-size:cover;background-position:center 48%;border-radius:35%;background-size:185% auto}.intro-head{display:block;width:70px;height:80px;background-size:300% 100%;background-repeat:no-repeat;margin-left:-7px;filter:drop-shadow(1px 3px 0 #183e7630);animation:arrival .6s cubic-bezier(.2,1.5,.4,1) calc(.25s + var(--i)*.13s) both;transform:rotate(calc((var(--i) - 4)*3deg))}@media(max-width:950px) and (min-width:681px){.hefei-people .portrait-frame{width:56px;height:82px}.duo .portrait-frame{width:106px;height:145px}.hefei-people .pair{gap:0}}@media(max-width:680px){.hefei-people{gap:1px 6px;min-height:277px}.hefei-people .portrait-frame{width:84px;height:107px}.solo .portrait-frame{width:96px;height:105px}.duo .portrait-frame{width:153px;height:177px}.duo{min-height:224px}.intro-head{width:43px;height:64px;margin-left:-5px}.person-name{font-size:14px}.hefei-people .person-name{font-size:13px}}@media(max-width:370px){.hefei-people .portrait-frame{width:70px;height:95px}.duo .portrait-frame{width:132px;height:162px}}
