/* 01 · 全局色彩、可访问焦点与背景；所有装饰层都不阻挡点击。 */
:root{color-scheme:dark;--bg:#080e22;--ink:#f0f2fa;--muted:#909bb6;--blue:#a0c8ff;--line:rgba(151,177,224,.16);--gold:#e8c69c;font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);min-height:100vh;overflow-x:hidden}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit}button:disabled{cursor:wait;opacity:.65}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #b9d8ff;outline-offset:5px}h1:focus,main:focus{outline:none}[hidden]{display:none!important}::selection{background:#365c95;color:white}.skip-link{position:fixed;top:-70px;left:20px;z-index:100;background:#fff;color:#111;padding:14px}.skip-link:focus{top:15px}.ambient{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:-1;background:radial-gradient(ellipse at 50% 50%,#14234b55,transparent 64%)}.orb{position:absolute;border-radius:50%;filter:blur(85px);opacity:.12}.orb-one{width:700px;height:500px;top:15%;left:calc(50% - 350px);background:#4277ed}.orb-two{width:300px;height:300px;right:-150px;bottom:0;background:#99a8e8}.stars{position:absolute;inset:0;background-image:radial-gradient(circle,#85a6e880 1px,transparent 1.5px),radial-gradient(circle,#87b8f366 .7px,transparent 1.2px);background-size:173px 191px,257px 269px;background-position:32px 35px,128px 148px;opacity:.35;mask-image:linear-gradient(transparent,#000 30%,#000 70%,transparent)}
.site-header{max-width:1440px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:30px 5%;height:106px}.brand{display:flex;align-items:center;gap:11px;font-size:15px;letter-spacing:2px;font-weight:650;white-space:nowrap}.brand-mark{font-size:41px;line-height:1;color:#a5c7ff;transform:rotate(-14deg)}.brand-light{font-weight:350;margin-left:4px}.brand small{display:block;letter-spacing:2.8px;font-size:7px;color:#6f7f9f;margin-top:8px}.site-header nav{display:flex;gap:29px;align-items:center;font-size:12px}.edition{font-size:10px;letter-spacing:1.3px;color:#7d8bac}.quiet-button{border:0;background:transparent;color:#abb4cc;font-size:11px;padding:8px 0}.nav-link{border-left:1px solid var(--line);padding-left:25px}.nav-link span{color:var(--blue);margin-left:16px}.site-footer{display:flex;justify-content:space-between;align-items:center;max-width:1440px;margin:0 auto;padding:23px 5%;font-size:9px;letter-spacing:1.5px;color:#7482a2;border-top:1px solid #7f96b710;gap:15px}.status{display:flex;align-items:center;gap:8px;letter-spacing:.5px}.status i,.visitor-pill i{width:5px;height:5px;border-radius:50%;background:#8db5c9;box-shadow:0 0 10px #75b9dc}.page{max-width:1280px;margin:auto;padding:0 5%;min-height:calc(100svh - 171px)}.eyebrow{font-size:9px;letter-spacing:3.3px;color:#9caccd;display:flex;align-items:center;gap:14px}.eyebrow>span{height:1px;width:28px;background:#547399}h1{font-size:clamp(36px,4.6vw,62px);font-weight:500;letter-spacing:4px;line-height:1.35;margin:22px 0 16px}h1>span{color:#a8c8ff}p{line-height:1.8}.mobile-only{display:none}
/* 02 · 欢迎页舞台：门的透视、地面和轨道。 */
.intro{text-align:center;padding-top:35px}.intro .eyebrow{justify-content:center}.intro p{font-size:12px;letter-spacing:1.4px;color:var(--muted);margin:0}.entrance-scene{position:relative;height:480px;max-width:960px;margin:10px auto 0;display:flex;justify-content:space-between;align-items:flex-start;padding:78px 80px 0;perspective:1000px}.floor{position:absolute;bottom:10px;left:-5%;width:110%;height:180px;background:repeating-linear-gradient(90deg,transparent 0,transparent 119px,#45619212 120px,#45619212 121px),repeating-linear-gradient(0deg,transparent 0,transparent 54px,#45619214 55px,#45619214 56px);transform:perspective(220px) rotateX(53deg);transform-origin:bottom;mask-image:radial-gradient(ellipse,#000,transparent 72%);pointer-events:none}.orbit{position:absolute;border:1px solid #5473a424;border-radius:50%;left:50%;top:26px;transform:translateX(-50%);pointer-events:none}.orbit-one{width:360px;height:360px}.orbit-two{width:440px;height:440px;top:-14px;border-style:dashed;border-color:#52689913}.orbit-one:before,.orbit-one:after{content:'';position:absolute;width:4px;height:4px;border-radius:50%;background:#b3d6ff;box-shadow:0 0 12px #a8d3ff;top:22px;left:86px}.orbit-one:after{top:288px;left:320px;background:var(--gold)}
.door{background:transparent;border:0;position:relative;width:180px;padding:0;z-index:2;text-align:left;--door-color:#d4b38b;--door-rgb:210,167,114}.door-verify{--door-color:#8fbbef;--door-rgb:102,156,244}.door-number{display:block;color:#7b8bac;font-size:8px;letter-spacing:2px;margin-bottom:17px}.door-frame{display:block;position:relative;width:180px;height:245px;border:1px solid var(--door-color);border-radius:88px 88px 2px 2px;padding:9px;box-shadow:0 0 30px rgba(var(--door-rgb),.1),inset 0 0 30px rgba(var(--door-rgb),.04);perspective:600px}.door-frame:before{content:'';position:absolute;inset:-6px;border:1px solid rgba(var(--door-rgb),.2);border-radius:95px 95px 2px 2px}.door-panel{display:block;position:relative;width:100%;height:100%;border:1px solid rgba(var(--door-rgb),.4);border-radius:80px 80px 0 0;background:linear-gradient(160deg,rgba(var(--door-rgb),.07),#0c142a 75%);transform-origin:left;transition:transform .7s cubic-bezier(.2,.8,.2,1),box-shadow .4s}.door-window{position:absolute;left:50%;top:66px;transform:translateX(-50%);font-size:34px;color:var(--door-color);text-shadow:0 0 35px rgba(var(--door-rgb),.6)}.door-window:after{content:'';position:absolute;border:1px solid rgba(var(--door-rgb),.2);width:60px;height:60px;border-radius:50%;top:-5px;left:-14px}.door-verify .door-window:after{left:-12px}.door-handle{position:absolute;width:4px;height:27px;background:var(--door-color);border-radius:5px;right:19px;bottom:74px;box-shadow:0 0 12px rgba(var(--door-rgb),.25)}.door-glow{position:absolute;inset:0;background:radial-gradient(ellipse at bottom,rgba(var(--door-rgb),.22),transparent 65%);pointer-events:none}.door-label{display:block;color:#ecdfd1;letter-spacing:2px;font-size:17px;margin-top:26px}.door-verify .door-label{color:#c0d6fb}.door-label>span{float:right;font-size:17px;opacity:.6;transition:transform .3s}.door-description{display:block;color:#8c97b1;font-size:10px;letter-spacing:.8px;margin-top:10px}.door:hover .door-panel,.door:focus-visible .door-panel{transform:rotateY(-12deg);box-shadow:0 0 20px rgba(var(--door-rgb),.15)}.door:hover .door-label>span{transform:translate(3px,-3px)}.door-push[data-selected-door="guest"] .door-guest .door-panel,.door-push[data-selected-door="verify"] .door-verify .door-panel{transform:rotateY(-78deg)}.door-frame:after{content:'';position:absolute;top:100%;height:72px;left:-35px;width:248px;background:radial-gradient(ellipse at top,rgba(var(--door-rgb),.13),transparent 64%);pointer-events:none}.welcome-dialogue{position:absolute;top:9px;left:50%;transform:translateX(-50%);width:252px;z-index:7;background:linear-gradient(140deg,#1d2d49e8,#121c33ed);border:1px solid #839bc22b;border-radius:12px;padding:16px 20px;box-shadow:0 9px 35px #050b2140;pointer-events:none}.welcome-dialogue:after{content:'';position:absolute;width:13px;height:13px;background:#142039;border-right:1px solid #839bc22b;border-bottom:1px solid #839bc22b;transform:rotate(45deg);left:118px;bottom:-7px}.dialogue-speaker{color:#9dc7ff;font-size:9px;letter-spacing:1px;display:flex;align-items:center;gap:6px}.dialogue-speaker i{width:4px;height:4px;background:#9dc7ff;border-radius:50%}.welcome-dialogue p{font-size:12px;letter-spacing:1px;margin:9px 0 0}.dialogue-dots{position:absolute;right:15px;bottom:8px;color:#a9bfdf;letter-spacing:3px}.scene-hint{display:flex;justify-content:center;align-items:center;gap:12px;color:#6f7f9f;font-size:9px;letter-spacing:.7px;margin:6px 0 30px}.scene-hint>span:first-child{font-size:20px;color:#a3bce1}.hint-line{width:20px;height:1px;background:#46577c}.camera-forward .entrance-scene{transform:scale(1.17);opacity:0;filter:blur(6px);transition:transform .7s,opacity .7s,filter .7s}.camera-forward .intro{opacity:0;transition:opacity .5s}
/* 03 · 同一角色在三个空间的位置。变换保持连续，SVG 元素各自负责小动作。 */
.guide{position:absolute;z-index:6;left:50%;top:379px;width:300px;transform:translateX(-50%);transition:left 1s cubic-bezier(.25,.8,.2,1),top 1s cubic-bezier(.25,.8,.2,1),width 1s,transform 1s;--look-x:0px;--look-y:0px}.guide-button{display:block;width:100%;padding:0;background:transparent;border:0;cursor:pointer}.whale-girl{width:100%;display:block;overflow:visible;filter:drop-shadow(0 12px 30px #6194f322)}.guide-caption{text-align:center;font-size:8px;letter-spacing:1px;color:#677da2;margin-top:-8px}.character-float{animation:float 5s ease-in-out infinite;transform-origin:center}.whale-tail{animation:tail 4s ease-in-out infinite;transform-origin:260px 360px}.eye{animation:blink 6.8s infinite;transform-box:fill-box;transform-origin:center}.eye-right{animation-delay:.04s}.pupil{transform:translate(var(--look-x),var(--look-y));transition:transform .15s}.magnifier,.confusion{opacity:0;transition:opacity .2s}.guide[data-mood="happy"] .mouth{d:path('M194 214Q208 237 222 214');fill:#d4919f}.guide[data-mood="happy"] .character-head{transform:rotate(-3deg);transform-origin:207px 190px}.guide[data-mood="confused"] .confusion{opacity:1}.guide[data-mood="confused"] .character-head{transform:rotate(7deg);transform-origin:207px 190px}.guide[data-mood="confused"] .mouth{d:path('M200 222Q208 215 215 222')}.guide[data-mood="inspecting"] .magnifier{opacity:1}.guide[data-mood="inspecting"] .eye-right{animation:none;transform:scale(1.45);transform-origin:center}.guide[data-mood="inspecting"] .eye-left{animation:none;transform:scaleY(.13)}.guide[data-mood="inspecting"] .character-head{animation:inspect .65s ease-in-out infinite;transform-origin:207px 240px}.guide[data-mood="rubbing"] .arm-left{animation:rub .3s ease-in-out infinite;transform-origin:155px 265px}.guide[data-mood="rubbing"] .eye{animation:none;transform:scaleY(.1)}.tail-sweep .whale-tail{animation:sweep .55s ease-in-out 2}.guide.verify{left:calc(50% - 285px);top:388px;width:285px}.guide.gallery{position:fixed;left:calc(100% - 72px);top:calc(100% - 178px);width:136px;transform:translateX(-50%);z-index:15}.guide.gallery .guide-caption{display:none}.guide.gallery .whale-girl{filter:drop-shadow(0 0 25px #3867b140)}.guide.swimming .character-float{animation:swim .9s ease-in-out}.guide-chat{position:fixed;right:35px;bottom:190px;z-index:18;background:#16223b;border:1px solid #809bc93d;box-shadow:0 15px 60px #0006;border-radius:14px;padding:24px;max-width:310px;font-size:12px}.guide-chat button{position:absolute;top:6px;right:9px;border:0;background:transparent;font-size:20px;color:#a9b8d5}.guide-chat p{color:var(--muted)}.guide-chat a{color:var(--blue)}
@keyframes float{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-9px) rotate(1deg)}}@keyframes tail{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(9deg)}}@keyframes blink{0%,42%,46%,95%,99%,100%{transform:scaleY(1)}44%,97%{transform:scaleY(.07)}}@keyframes inspect{0%,100%{transform:rotate(-7deg) translateX(-5px)}50%{transform:rotate(7deg) translateX(5px)}}@keyframes rub{0%,100%{transform:rotate(12deg) translateY(-30px)}50%{transform:rotate(20deg) translateY(-48px)}}@keyframes sweep{0%,100%{transform:rotate(0)}50%{transform:rotate(-35deg)}}@keyframes swim{0%{transform:rotate(-8deg) translateY(-20px)}50%{transform:rotate(12deg) translateY(12px)}100%{transform:rotate(0)}}
/* 04 · 验票空间与表单。原生 input 覆盖整个上传区域，鼠标和键盘均可用。 */
.verify-page{padding-top:20px}.back-link{font-size:11px;color:#8f9cba;display:inline-block;padding:8px 0}.verify-layout{display:grid;grid-template-columns:1fr 1fr;gap:100px;max-width:960px;margin:36px auto 45px;align-items:start}.verify-story{padding-top:24px}.verify-story h1{font-size:50px;margin:23px 0 19px}.verify-story>p{font-size:12px;color:var(--muted);letter-spacing:1px}.speech{position:relative;border:1px solid #839bc226;background:#16233a80;border-radius:10px;padding:13px 16px;font-size:12px;color:#c8d9f7;max-width:320px;margin-top:24px;line-height:1.7;z-index:8}.speech:after{content:'';position:absolute;width:10px;height:10px;border-right:1px solid #839bc226;border-bottom:1px solid #839bc226;background:#131e34;bottom:-6px;left:35px;transform:rotate(45deg)}.ticket-form{background:linear-gradient(155deg,#19263eb5,#101a308f);border:1px solid #8aabd52b;border-radius:18px;padding:28px 30px;box-shadow:0 20px 90px #02071750;position:relative;z-index:8}.form-heading{display:flex;gap:13px;align-items:center;margin-bottom:24px}.mini-symbol{color:var(--gold);font-size:29px}.form-heading h2{font-size:16px;font-weight:500;letter-spacing:1px;margin:0}.form-heading p{font-size:10px;color:var(--muted);margin:5px 0 0}.demo-badge{font-size:9px;letter-spacing:1px;border:1px solid #bfa57855;color:#d5ba8b;padding:4px 6px;border-radius:4px;margin-left:auto;white-space:nowrap}.upload-zone{position:relative;border:1px dashed #819dc74d;border-radius:10px;min-height:168px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;transition:background .2s,border .2s;background:#111a2b55;overflow:hidden}.upload-zone input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.upload-zone:focus-within{outline:2px solid var(--blue);outline-offset:4px}.upload-zone:hover,.upload-zone.dragging,.upload-zone.has-file{border-color:#87baea;background:#20375270}.upload-icon{font-size:28px;color:#a4c4ed;line-height:1}.upload-zone strong{font-size:12px;font-weight:400;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-zone>span:not(.upload-icon){font-size:10px;color:#8e9cba}.upload-zone small{font-size:9px;color:#7283a6}.file-row{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:9px;color:#8facca;min-height:24px}.file-row button{font-size:10px;color:#c5d8f3;background:transparent;border:0;padding:4px}.form-divider{display:flex;align-items:center;gap:11px;font-size:9px;color:#7586a9;margin:16px 0 22px}.form-divider span{height:1px;flex:1;background:#899fc620}.ticket-form label{font-size:10px;color:#b5c4df;letter-spacing:.8px}.code-field{display:flex;align-items:center;border:1px solid #8aabd52e;border-radius:7px;background:#0d172a;margin-top:10px;gap:12px;padding:0 14px}.code-field>span{color:#95b4e1;font-size:21px}.code-field input{width:100%;border:0;background:transparent;padding:14px 0;color:#e2edff;font-size:12px;letter-spacing:1px;min-width:0}.code-field input::placeholder{color:#647699}.code-field:focus-within{border-color:#a8caff;box-shadow:0 0 0 2px #6e9edf18}.code-field input:focus{outline:none}.demo-help{font-size:9px;color:#7f91b6;margin:9px 0 0}.demo-help button{background:transparent;border:0;color:#bdd6fb;font-size:10px;padding:5px 2px;letter-spacing:.7px}.demo-help button span{font-size:8px;color:#768baa;margin-left:9px}.form-error{color:#e3aeba;font-size:11px;min-height:18px;margin:9px 0;line-height:1.5}.primary-button{background:linear-gradient(120deg,#a9cfff,#7fabe5);border:1px solid #c4deff70;color:#11233f;border-radius:7px;font-size:12px;font-weight:600;letter-spacing:1px;padding:15px 18px;width:100%;display:flex;justify-content:space-between;align-items:center;transition:filter .2s,transform .2s}.primary-button:hover{filter:brightness(1.1);transform:translateY(-1px)}.demo-note{display:flex;align-items:flex-start;gap:9px;font-size:9px;color:#8594b2;margin-top:17px}.demo-note>span{padding-top:2px;color:#acbfdc}.demo-note p{margin:0;line-height:1.8}
/* 05 · 转场独立覆盖层。角色 z-index 在水波之上，没有粒子消失步骤。 */
.transition{position:fixed;inset:0;z-index:12;pointer-events:none;overflow:hidden}.transition.running .wave-front{position:absolute;inset:-35% -80%;background:radial-gradient(ellipse at 10% 50%,#afedff00 30%,#9be8ffbb 46%,#3d89cf 52%,#215699e8 61%,#1c3768 75%);border-radius:45%;animation:wave-pass 1.65s cubic-bezier(.4,0,.2,1) forwards}.transition.running .wave-ring{position:absolute;width:130vw;height:150vh;left:-120vw;top:-25vh;border:2px solid #c2f8ffb3;border-radius:50%;box-shadow:0 0 40px #87e7ff70,inset 0 0 40px #87e7ff70;animation:ring-pass 1.65s ease-in-out forwards}.guide.tail-sweep,.guide.swimming{z-index:14}.skip-animation{position:fixed;right:25px;bottom:25px;z-index:30;border:1px solid #b7d3f866;background:#101f3ce8;border-radius:25px;padding:11px 17px;font-size:11px;color:#d1e6ff}.flying-ticket{position:fixed;width:110px;height:67px;padding:10px;border-radius:6px;border:1px solid #e6d4b0;background:#e9d5af;color:#344563;box-shadow:0 8px 30px #0005;z-index:16;pointer-events:none;left:0;top:0;text-align:center}.flying-ticket span{display:block;font-size:7px;letter-spacing:2px}.flying-ticket strong{font-size:23px;line-height:1.1;display:block}.flying-ticket small{font-size:5px;letter-spacing:1px;display:block}.flying-ticket.fly-in{animation:ticket-in .65s cubic-bezier(.3,.8,.4,1) forwards}.flying-ticket.held{transform:translate(var(--to-x),var(--to-y)) rotate(-8deg) scale(.7)}.flying-ticket.fly-back{animation:ticket-back .85s ease-in-out forwards}@keyframes ticket-in{from{transform:translate(var(--from-x),var(--from-y)) rotate(0)}to{transform:translate(var(--to-x),var(--to-y)) rotate(-8deg) scale(.7)}}@keyframes ticket-back{from{transform:translate(var(--to-x),var(--to-y)) rotate(-8deg) scale(.7)}to{transform:translate(var(--from-x),var(--from-y)) rotate(12deg);opacity:0}}@keyframes wave-pass{0%{transform:translateX(-85%) rotate(-16deg)}50%{transform:translateX(-5%) rotate(-8deg)}100%{transform:translateX(90%) rotate(0)}}@keyframes ring-pass{to{left:150vw}}
/* 字符/简历来源先收拢淡出，接上飞出的纸质门票；不改变表单值。 */
.ticket-source{animation:source-glow .65s ease-in-out}.ticket-source input,.ticket-source strong{animation:source-to-ticket .65s ease-in-out}@keyframes source-glow{50%{border-color:#e6c997;box-shadow:0 0 24px #dfc18d40}}@keyframes source-to-ticket{40%,65%{opacity:.12;transform:scale(.92)}100%{opacity:1;transform:scale(1)}}
/* 06 · 临时展厅和自绘动态占位插画。只有用户点击播放后才播放预演。 */
.gallery-page{padding-top:48px;padding-bottom:50px}.gallery-intro{display:flex;align-items:center;justify-content:space-between;gap:30px}.gallery-intro h1{font-size:42px;margin:18px 0 12px;letter-spacing:2px}.gallery-intro p{font-size:11px;color:var(--muted);margin:0}.visitor-pill{border:1px solid var(--line);border-radius:8px;padding:13px 18px;display:grid;grid-template-columns:6px auto;gap:6px 10px;align-items:center;font-size:11px;white-space:nowrap;background:#17233b60}.visitor-pill small{grid-column:2;font-size:8px;color:#8193b8}.gallery-bar{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:22px 0;font-size:9px;color:#8a9ab9;letter-spacing:1px;margin-top:42px}.gallery-bar b{margin-left:9px;color:#d4e3fb;font-weight:400}.work-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.work-card{display:block;text-align:left;background:transparent;border:0;padding:0;position:relative}.work-card .art{aspect-ratio:1.35;border-radius:8px;transition:transform .4s,box-shadow .4s;border:1px solid #7ca4ce29}.work-card:hover .art{transform:translateY(-5px);box-shadow:0 15px 45px #0004}.art-index{position:absolute;top:14px;left:16px;color:#e1effc90;font-size:9px;letter-spacing:1px}.preview-chip{position:absolute;top:calc((100vw - 240px)/4.05 - 30px);bottom:auto;right:15px;background:#0d1a3499;border:1px solid #a3c7e533;border-radius:15px;padding:5px 9px;color:#d5e6ff;font-size:8px;backdrop-filter:blur(5px)}.work-meta{display:block;font-size:8px;color:#7a91b7;letter-spacing:1.5px;margin:23px 0 12px}.work-card h2{font-size:19px;letter-spacing:1px;font-weight:400;margin:0}.work-card h2 span{float:right;color:#8fa7d0;font-size:16px}.work-card>p{font-size:10px;color:#7f91b2;margin:10px 0 17px}.work-access{display:block;font-size:8px;letter-spacing:.5px;color:#a6bcdb;border-top:1px solid var(--line);padding-top:14px}.gallery-note{display:flex;align-items:center;gap:18px;border:1px solid #9bb5d61a;padding:21px 26px;border-radius:9px;background:#1b2b421f;margin-top:43px}.gallery-note>span{color:#b2cff6;font-size:29px}.gallery-note p{font-size:12px;margin:0;color:#c5d2e8}.gallery-note small{display:block;font-size:9px;color:#778aac;margin-top:3px}.gallery-note a{margin-left:auto;color:#a9c9f2;font-size:10px;white-space:nowrap}.art{position:relative;overflow:hidden;background:#0f2740}.ocean{background:radial-gradient(ellipse at 48% 15%,#548caf30,transparent 55%),linear-gradient(#0e1a36,#28586b)}.moon{position:absolute;width:42px;height:42px;border-radius:50%;background:#c6e6e3;box-shadow:0 0 65px #a5d3e377;left:47%;top:20%}.sea{position:absolute;width:150%;height:70%;left:-25%;border-radius:48% 54% 0 0;border-top:1px solid #96d3e38c;background:#23556c;transform:rotate(-9deg);bottom:-38%}.sea-two{bottom:-23%;background:#153e57;transform:rotate(8deg)}.sea-one{bottom:-6%;background:linear-gradient(#337187,#1e4360)}.sea-three{bottom:-34%;background:#0e2c44;transform:rotate(-5deg)}.art-fish{position:absolute;left:47%;top:57%;font-size:65px;color:#a5d2df;transform:rotate(-18deg);font-family:Georgia,serif;text-shadow:0 0 25px #9eecff44}.planet{background:radial-gradient(ellipse at 50% 90%,#4e3b8455,transparent 75%),#14152d}.planet-body{position:absolute;width:40%;aspect-ratio:1;border-radius:50%;left:30%;top:23%;background:radial-gradient(circle at 30% 25%,#bab4e2,#5d608e 35%,#252640 74%);box-shadow:20px 10px 50px #111329,-5px -2px 45px #aa9fd92e}.planet-orbit{position:absolute;width:76%;height:32%;border:1px solid #a29adb88;border-radius:50%;left:12%;top:35%;transform:rotate(-25deg);box-shadow:0 0 5px #ad96f155}.planet i{position:absolute;width:2px;height:2px;background:#ccc9e5;border-radius:50%;top:22%;left:22%;box-shadow:45px 90px 0 #9396bd,168px -9px 0 #ced5e0,203px 90px 0 #ccc9e5}.bamboo{background:radial-gradient(ellipse at 70% 20%,#669e7755,transparent 65%),linear-gradient(140deg,#122b29,#071b21)}.bamboo-stem{position:absolute;width:6px;height:140%;background:linear-gradient(90deg,#163f36,#315a41);top:-20%;left:25%;transform:rotate(15deg);box-shadow:inset 1px 0 0 #729b7655}.stem-two{left:65%;transform:rotate(-7deg);width:8px}.stem-three{left:86%;transform:rotate(10deg);width:4px;opacity:.5}.bamboo-stem:before,.bamboo-stem:after{content:'';position:absolute;width:90px;height:18px;background:linear-gradient(20deg,#204b37,#65946b);border-radius:0 100% 0 100%;left:0;top:42%;transform:rotate(-30deg);transform-origin:left}.bamboo-stem:after{top:60%;left:-80px;transform:rotate(30deg);transform-origin:right}.bamboo-light{position:absolute;width:90%;height:18%;top:20%;left:20%;transform:rotate(-40deg);background:#b7d6a929;filter:blur(15px)}
dialog{padding:0;border:1px solid #95afd139;border-radius:16px;width:min(640px,calc(100% - 30px));max-height:88svh;background:#101c32;color:var(--ink);box-shadow:0 20px 100px #0008;overflow:auto}dialog::backdrop{background:#050b1ccc;backdrop-filter:blur(8px)}.dialog-close{position:absolute;top:12px;right:12px;z-index:2;font-size:24px;width:35px;height:35px;background:#07152aaa;border:1px solid #9eb7d933;border-radius:50%}.dialog-body{padding:25px 30px 30px}.dialog-body h2{font-size:26px;font-weight:400;letter-spacing:2px;margin:13px 0}.dialog-body p{font-size:12px;color:#9eafcb}.dialog-body .primary-button{margin-top:20px}.dialog-body .preview-note{font-size:9px}.dialog-body .eyebrow{letter-spacing:1.5px}.dialog-body h3{font-size:14px;font-weight:500}.dialog-body .demo-badge{margin-left:9px}.behind-scenes{border-top:1px solid var(--line);margin-top:22px}.locked-detail{display:flex;gap:15px;border-top:1px solid var(--line);margin-top:22px;align-items:center}.locked-detail>span{color:#b4cef5;font-size:28px}.locked-detail a{color:var(--blue);font-size:10px}dialog .art{height:265px}.playing .sea{animation:sea-breathe 4s ease-in-out infinite}.playing .sea-two{animation-delay:-2s}.playing .planet-orbit{animation:orbit-turn 12s linear infinite}.playing .planet-body{animation:float 6s ease-in-out infinite}.playing .bamboo-stem{animation:bamboo-sway 4s ease-in-out infinite;transform-origin:bottom}.playing .stem-two{animation-delay:-2s}@keyframes sea-breathe{50%{transform:translateX(3%) translateY(8px) rotate(3deg)}}@keyframes orbit-turn{to{transform:rotate(335deg)}}@keyframes bamboo-sway{50%{transform:rotate(8deg)}}
/* 07 · 自适应布局：手机保留双门和中央导游，不用缩放整个桌面页面。 */
@media(min-width:1280px){.preview-chip{top:218px}}
@media(max-width:1000px){.edition{display:none}.entrance-scene{padding-left:40px;padding-right:40px}.verify-layout{gap:45px}.guide.verify{left:26%;width:260px}.gallery-intro h1{font-size:35px}.work-grid{gap:18px}.preview-chip{top:auto;bottom:177px}}
@media(max-width:700px){.site-header{height:86px;padding:22px 6%}.brand{font-size:11px;gap:7px;letter-spacing:1.3px}.brand-mark{font-size:31px}.brand small{font-size:5px;letter-spacing:1.7px}.site-header nav{gap:14px}.nav-link{display:none}.quiet-button{font-size:9px}.page{padding:0 6%;min-height:calc(100svh - 164px)}.intro{padding-top:24px}.eyebrow{font-size:7px;letter-spacing:2px;gap:9px}.eyebrow>span{width:15px}h1{font-size:36px;letter-spacing:2px;margin-top:19px}.intro p{font-size:10px;letter-spacing:.6px}.mobile-only{display:block}.entrance-scene{height:498px;margin:22px -5px 0;padding:257px 7px 0;gap:20px}.door{width:127px}.door-number{font-size:6px;letter-spacing:1.4px;margin-bottom:11px}.door-frame{width:127px;height:159px;border-radius:64px 64px 2px 2px;padding:7px}.door-frame:before{border-radius:68px 68px 2px 2px;inset:-4px}.door-panel{border-radius:57px 57px 0 0}.door-window{top:39px;font-size:25px}.door-window:after{width:43px;height:43px;left:-10px;top:-3px}.door-verify .door-window:after{left:-8px}.door-handle{height:18px;width:3px;right:14px;bottom:35px}.door-label{font-size:14px;margin-top:17px;letter-spacing:1px}.door-description{font-size:8px;letter-spacing:0;line-height:1.7;margin-top:6px}.door-frame:after{width:180px;left:-27px}.orbit-one{width:260px;height:260px;top:30px}.orbit-two{width:300px;height:300px;top:10px}.orbit-one:after{top:200px;left:234px}.welcome-dialogue{top:0;width:220px;padding:12px 18px}.welcome-dialogue p{font-size:11px;line-height:1.6;margin-top:7px}.welcome-dialogue:after{left:100px}.dialogue-speaker{font-size:8px}.guide{top:327px;width:215px}.guide-caption{font-size:7px;margin-top:-5px}.floor{height:145px;bottom:23px}.scene-hint{font-size:8px;gap:7px;margin:0 0 23px}.scene-hint .hint-line{display:none}.scene-hint{flex-wrap:wrap}.site-footer{padding:18px 6%;flex-wrap:wrap;font-size:7px;letter-spacing:.7px;gap:10px}.site-footer #footer-note{display:none}.status{font-size:7px}.verify-page{padding-top:8px}.back-link{font-size:10px}.verify-layout{display:block;margin:12px auto 30px}.verify-story{position:relative;height:244px;padding-top:5px}.verify-story .eyebrow{font-size:7px}.verify-story h1{font-size:33px;margin:16px 0 10px}.verify-story>p{font-size:10px;line-height:1.8}.speech{font-size:9px;padding:10px 12px;max-width:190px;margin-top:12px}.guide.verify{left:calc(100% - 90px);top:163px;width:166px;pointer-events:none}.guide.verify .guide-caption{display:none}.ticket-form{padding:22px;max-width:460px;margin:auto}.form-heading{margin-bottom:20px;gap:10px}.form-heading h2{font-size:14px}.form-heading p{font-size:9px}.upload-zone{min-height:145px}.gallery-page{padding-top:30px;padding-bottom:30px}.gallery-intro{display:block}.gallery-intro h1{font-size:30px;letter-spacing:1px;line-height:1.5}.gallery-intro p{font-size:10px}.visitor-pill{display:inline-grid;margin-top:20px;padding:9px 12px;font-size:10px}.gallery-bar{margin-top:25px;padding:18px 0;font-size:8px}.work-grid{grid-template-columns:1fr;gap:33px}.work-card .art{aspect-ratio:1.5}.work-card h2{font-size:19px}.work-meta{margin-top:17px}.preview-chip{top:calc((100vw - 46px)/1.5 - 36px);bottom:auto;font-size:9px}.gallery-note{margin-top:30px;padding:18px;gap:12px;flex-wrap:wrap;margin-right:40px}.gallery-note p{font-size:10px}.gallery-note small{font-size:8px}.gallery-note a{margin-left:40px;font-size:9px}.guide.gallery{width:112px;left:calc(100% - 55px);top:calc(100% - 146px)}.guide-chat{right:14px;bottom:153px;max-width:280px;font-size:11px}.dialog-body{padding:22px}.dialog-body .eyebrow{font-size:7px}dialog .art{height:210px}}
@media(max-width:360px){.brand{font-size:9px}.intro h1{font-size:31px}.door{width:115px}.door-frame{width:115px}.door-frame:after{width:calc(100% + 30px);left:-15px}.door-description{font-size:7px}.scene-hint{font-size:7px}.guide.verify{width:144px;left:calc(100% - 72px)}.verify-story h1{font-size:29px}.speech{max-width:173px}.form-heading h2{font-size:12px}.ticket-form{padding:18px}}
@media(min-width:701px) and (max-height:800px){.intro{padding-top:14px}.entrance-scene{height:439px;padding-top:63px}.welcome-dialogue{top:0}.guide.welcome{top:340px;width:280px}.scene-hint{margin-top:0}.verify-layout{margin-top:18px}.guide.verify{top:358px}}
/* 普通导航直接就位；只有水波后的游动才插值，避免返回页面时角色留在旧角落。 */
.guide{transition:none}.guide.swimming{transition:left 1s cubic-bezier(.25,.8,.2,1),top 1s cubic-bezier(.25,.8,.2,1),width 1s,transform 1s}
/* 验票角色避开桌面对话框；窄屏验票时临时停靠视野上方，再继续游入展厅。 */
@media(min-width:701px){.guide.verify{top:490px}}
@media(min-width:701px) and (max-height:800px){.guide.verify{top:455px}}
@media(max-width:700px){.guide.verify.checking-staged{position:fixed;top:12px;left:calc(100% - 98px);width:190px;z-index:20;pointer-events:none;transition:none}.ticket-check #verification-speech{position:fixed;top:25px;left:14px;width:calc(100% - 190px);max-width:none;margin:0;background:#142544f5;box-shadow:0 10px 45px #0008;z-index:19;font-size:10px}.ticket-check:before{content:'';position:fixed;inset:0 0 auto;height:252px;background:linear-gradient(#081126f5 65%,transparent);z-index:18;pointer-events:none}}
/* 08 · 减少动画：清除持续动画和过渡，JS 时间线同时立即推进，不等待装饰。 */
.reduce-motion *,.reduce-motion *:before,.reduce-motion *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(prefers-reduced-motion:reduce){body:not(.motion-override) *{scroll-behavior:auto}}
