:root{--paper:#f5f4ef;--ink:#344544;--muted:#8e9a94;--blue:#4d889c;--line:#c7cfca;--jade:#8eafa1;--ease:cubic-bezier(.22,.72,.22,1)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{background:var(--paper);color:var(--ink);font-family:"PingFang SC","Microsoft YaHei",sans-serif;font-weight:400;-webkit-font-smoothing:antialiased}button,input{font:inherit}button{color:inherit;border:0;border-radius:0;background:none;padding:10px;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible,canvas:focus-visible{outline:1px solid var(--blue);outline-offset:6px}button:disabled{cursor:default;opacity:.4}button:hover{color:var(--blue)}button[hidden],[hidden]{display:none!important}.paper{position:fixed;inset:0;pointer-events:none;opacity:.11;z-index:30;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.74' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23808777' filter='url(%23n)' opacity='.23' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
#header{position:fixed;left:4.5vw;right:4.5vw;top:27px;height:44px;display:flex;align-items:center;justify-content:space-between;gap:30px;z-index:40;transition:opacity .5s}.brand{display:flex;align-items:center;gap:10px;padding:0;font-family:"Songti SC",STSong,serif;font-size:24px;letter-spacing:3px}.brand-mark{display:block;width:25px;height:39px;overflow:hidden;position:relative;mix-blend-mode:multiply}.brand-mark img{width:61px;height:61px;max-width:none;position:absolute;left:-18px;top:-10px}nav{display:flex;gap:clamp(12px,2.4vw,40px);align-items:center;margin-left:auto;margin-right:3vw}nav button{padding:8px 0;color:#929d97;font-size:12px;letter-spacing:2px;white-space:nowrap;transition:color .3s}nav button[aria-current="step"]{color:#3f686b}.tiny{font-size:11px;letter-spacing:1px;color:var(--muted);white-space:nowrap}body[data-scene="cover"] #header{opacity:0;pointer-events:none}
main{width:100%;height:100%}.cover{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:4vh;animation:fade-in 1.2s both}.cover-logo{width:clamp(185px,24vh,265px);height:clamp(185px,24vh,265px);object-fit:contain;mix-blend-mode:multiply;margin-bottom:-25px}.cover h1{font-family:"Songti SC",STSong,serif;font-size:clamp(44px,5.6vw,70px);font-weight:400;letter-spacing:.22em;margin:0 0 0 .22em}.cover-en{font-size:10px;color:#91a19b;letter-spacing:.5em;margin:15px 0 0 .5em}.cover .text-action{margin-top:52px;font-size:20px}.cover-foot{position:absolute;bottom:6.5vh;font-size:11px;letter-spacing:3px;color:#98a19a}
#experience{position:absolute;inset:0}.scene-stage{position:absolute;top:10vh;right:2.5vw;bottom:10vh;left:29vw;transition:opacity .7s,transform 1s var(--ease)}#model,#effects,#model-fallback{position:absolute;inset:0;width:100%;height:100%;outline-offset:-10px}#model{touch-action:none;cursor:default}#effects{pointer-events:none}#model-fallback{object-fit:contain}.ground-shadow{position:absolute;left:19%;right:12%;bottom:7%;height:9%;border-radius:50%;background:radial-gradient(ellipse,#7c8d7816,transparent 70%);filter:blur(8px);pointer-events:none}.story{position:absolute;left:6vw;top:24vh;width:25vw;max-width:330px;z-index:3;transition:opacity .4s,transform .6s}.chapter{font-size:10px;letter-spacing:3px;color:#8d9f96;text-transform:uppercase}.story h1,.micro-copy h1{font-family:"Songti SC",STSong,serif;font-size:clamp(30px,3.1vw,49px);font-weight:400;letter-spacing:3px;line-height:1.5;margin:24px 0 18px}.story p{font-size:12px;line-height:2.2;letter-spacing:1px;color:#89958d;margin:0;max-width:24em}.text-action{display:inline-flex;align-items:center;position:relative;gap:15px;padding:12px 0;margin-top:34px;color:#4c7f8b;font-family:"Songti SC",STSong,serif;font-size:22px;letter-spacing:3px;white-space:nowrap;transition:color .3s,transform .3s}.text-action:hover{color:#2f6a7e;transform:translateX(3px)}.arrow{font-family:Arial,sans-serif;font-size:21px;color:#89a9ac;transition:transform .3s}.text-action:hover .arrow{transform:translate(3px,-3px)}.cue{display:inline-block;position:relative;width:18px;height:18px;flex:none;align-self:center}.cue i{position:absolute;left:7px;top:8px;width:4px;height:4px;border-radius:50%;background:#5691a0}.cue:before,.cue:after{content:"";position:absolute;left:0;top:0;width:18px;height:18px;border-radius:50%;border:1px solid #7da9ad;animation:ripple 2.4s infinite}.cue:after{animation-delay:1.2s}.action-note{margin-top:14px!important;font-size:10px!important;color:#a4aaa0!important}.story.busy .text-action{opacity:0;pointer-events:none}#part-index{display:flex;gap:10px;margin-top:22px}#part-index i{width:19px;height:2px;background:#d8ded7;transition:background .4s}#part-index i.done{background:#8fae9d}#part-index i.current{background:#4f8692}
#hotspots{position:absolute;inset:0;pointer-events:none}.hotspot{position:absolute;left:0;top:0;pointer-events:auto;display:flex;align-items:center;gap:9px;padding:13px 10px;white-space:nowrap;transform:translate(-10px,-50%);color:#657f7b;font-size:11px;letter-spacing:1px;transition:opacity .4s;z-index:2}.hotspot .spot{width:7px;height:7px;position:relative;border-radius:50%;background:#80a89e;box-shadow:0 0 0 5px #eff3ecb8}.hotspot.active .spot{background:#4f8e9a}.hotspot.active .spot:after{content:"";position:absolute;inset:-7px;border:1px solid #79a9a0;border-radius:50%;animation:ripple 2.4s infinite}.hotspot:before{content:"";position:absolute;left:15px;top:50%;width:20px;height:1px;background:#91aba177;transform:translateX(-29px)}
.playback{position:absolute;bottom:4.3vh;left:36vw;right:9vw;z-index:5}.playback-top,.playback-bottom{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#8a9b94;letter-spacing:1px}.playback-top button{padding:8px 0;font-size:11px}.playback-top #play{min-width:80px;text-align:left;color:#567c82}#timeline{appearance:none;width:100%;height:18px;background:transparent;cursor:pointer;margin:5px 0;accent-color:#628c8b}#timeline::-webkit-slider-runnable-track{height:2px;background:linear-gradient(to right,#739d9d var(--progress,0%),#d4ddd3 var(--progress,0%))}#timeline::-webkit-slider-thumb{appearance:none;width:10px;height:10px;border-radius:50%;background:#eff3eb;border:1px solid #719897;margin-top:-4px}#timeline::-moz-range-track{height:2px;background:#ccd7cd}#timeline::-moz-range-thumb{width:9px;height:9px;border:1px solid #719897;background:#eff3eb}.playback-bottom{font-size:9px}.qualitative{position:absolute;bottom:3.2vh;left:6vw;font-size:9px;color:#a3aaa0;letter-spacing:2px}.scene-tools{position:absolute;bottom:6vh;left:6vw;display:flex;gap:24px;z-index:5}.scene-tools button{font-size:11px;letter-spacing:2px;padding:8px 0;color:#78938b}#orbit-hint{position:absolute;left:50%;bottom:0;transform:translateX(-50%);font-size:11px;letter-spacing:2px;color:#7c9690;white-space:nowrap;transition:opacity .5s}#orbit-hint>span{font-size:22px;margin-right:10px;display:inline-block;animation:hand 2s infinite}#orbit-hint small{display:block;text-align:center;font-size:9px;letter-spacing:1px;color:#a4afa6;margin-top:7px}.orbit-used #orbit-hint{opacity:0}
body[data-scene="explore"] .scene-stage{left:20vw;right:5vw}body[data-scene="explore"] #model{cursor:grab}body[data-scene="explore"] #model:active{cursor:grabbing}body[data-scene="explore"] .story{top:20vh;width:20vw}body[data-scene="explore"] .story h1{font-size:clamp(28px,2.8vw,42px)}body[data-scene="gel"] .scene-stage{left:29vw;right:2vw}
#micro{position:absolute;inset:0;overflow:hidden;background:radial-gradient(ellipse at 62% 53%,#f3f0e7a8,transparent 65%)}#micro-canvas{position:absolute;inset:12vh 0 9vh;width:100%;height:79vh}.micro-copy{position:absolute;top:19vh;left:6vw;max-width:310px;pointer-events:none}.micro-copy h1{font-size:clamp(27px,2.8vw,42px);max-width:6em}.micro-copy p{font-size:12px;line-height:2;color:#87978c;max-width:20em;letter-spacing:1px}.micro-steps{position:absolute;bottom:8vh;left:6vw;display:flex;gap:24px}.micro-steps button{font-size:11px;letter-spacing:2px;color:#9ba99a;padding:8px 0}.micro-steps button.active{color:#4c7e7d}.micro-legend{position:absolute;right:7vw;top:16vh;display:flex;gap:22px;font-size:10px;letter-spacing:1px;color:#94a391}.micro-legend span{display:flex;gap:7px;align-items:center}.micro-legend i{width:5px;height:5px;border-radius:50%;display:inline-block}.water-dot{background:#8bb6c5}.dye-dot{background:#687ca8}.site-dot{background:#aa9a72}#micro-next{position:absolute;right:7vw;bottom:6.5vh;margin:0;font-size:20px}.micro-note{position:absolute;left:6vw;bottom:3vh;font-size:9px;color:#abb2a3;letter-spacing:1px}
#ending{position:absolute;inset:0;background:#f5f4ef;overflow:hidden;opacity:1}.ending-light{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 38%,#fffefad9,transparent 65%);opacity:0;transition:opacity 1.2s}.ending-brand{position:absolute;top:10.5vh;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:0;opacity:0;clip-path:inset(0 100% 0 0);transition:opacity 1s,clip-path 1.1s steps(12,end)}.ending-brand img{width:100px;height:100px;object-fit:contain;mix-blend-mode:multiply}.ending-brand>span{font-family:"Songti SC",STSong,serif;font-size:27px;letter-spacing:8px}.slogan{position:absolute;left:50%;top:26vh;transform:translateX(-50%);width:min(770px,68vw);aspect-ratio:1.8;z-index:2}#slogan-art{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(2,1fr);width:100%;height:100%}.slogan-letter{background-image:url("assets/slogan-art.png");background-size:400% 200%;background-repeat:no-repeat;opacity:0;clip-path:inset(0 100% 0 0);filter:blur(.5px);transform:translateY(5px);transition:opacity .15s,clip-path .36s steps(8,end),filter .45s,transform .6s var(--ease);mix-blend-mode:multiply}.slogan-letter.visible{opacity:1;clip-path:inset(0 0 0 0);filter:blur(0);transform:translateY(0)}.ending-device{position:absolute;width:min(430px,34vw);height:37vh;object-fit:contain;bottom:-1vh;left:50%;transform:translate(-50%,12px);opacity:0;mix-blend-mode:multiply;transition:opacity 1.5s,transform 1.7s var(--ease)}body[data-scene="ending"] .ending-light.reveal{opacity:1}.ending-brand.reveal{opacity:1;clip-path:inset(0 0 0 0)}.ending-device.reveal{opacity:.6;transform:translate(-50%,0)}#skip-ending{position:absolute;bottom:4vh;right:5vw;z-index:3;color:#99a397}body[data-scene="ending"] nav button{color:#adb4aa}body[data-scene="ending"] nav button[aria-current="step"]{color:#64796e}
#transition{position:fixed;inset:0;background:#f5f4ef;z-index:35;pointer-events:none;opacity:0;transition:opacity .3s}.transitioning #transition{opacity:1}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes ripple{0%{transform:scale(.5);opacity:0}20%{opacity:.65}100%{transform:scale(1.7);opacity:0}}@keyframes hand{0%,100%{transform:translateX(-3px)}50%{transform:translateX(3px)}}@keyframes fade-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1600px){.story{left:8vw}.scene-stage{left:31vw;right:5vw}.story h1{font-size:50px}}@media(max-width:900px){#header{left:5vw;right:5vw;top:19px;gap:12px}.brand{font-size:20px}.brand-mark{display:none}nav{gap:17px;margin:0}nav button{font-size:10px;letter-spacing:1px}#fullscreen{display:none}.story{left:6vw;top:19vh;width:28vw}.story h1{font-size:30px}.story p{font-size:11px}.scene-stage{left:29vw;right:0;top:13vh;bottom:14vh}.text-action{font-size:20px;gap:10px}.hotspot{font-size:9px}.playback{left:34vw;right:6vw}.micro-copy{max-width:25vw}.micro-copy h1{font-size:28px}.micro-legend{gap:12px;right:5vw;font-size:9px}.slogan{width:80vw;top:29vh}.ending-device{width:39vw}}
@media(max-width:600px){#header{top:max(17px,env(safe-area-inset-top));left:6vw;right:6vw;height:auto;align-items:flex-start}.brand{font-size:19px;padding-top:2px;letter-spacing:2px}nav{max-width:76%;justify-content:flex-end;gap:8px 15px;flex-wrap:wrap}nav button{font-size:10px;padding:5px 0}.cover-logo{width:220px;height:220px;margin-bottom:-24px}.cover h1{font-size:53px}.cover-foot{font-size:9px;letter-spacing:2px;bottom:7vh}.cover .text-action{margin-top:42px}.story{left:7vw;top:14vh;width:85vw;max-width:none}.chapter{font-size:9px;letter-spacing:2px}.story h1{font-size:29px;line-height:1.3;margin:13px 0 10px}.story p{font-size:10px;line-height:1.9;max-width:28em}.story .text-action{font-size:18px;margin-top:12px;padding:7px 0}.action-note{display:none}.scene-stage,body[data-scene="gel"] .scene-stage{top:34vh;bottom:13vh;left:0;right:0}.ground-shadow{bottom:10%}.hotspot{font-size:9px;padding:13px 7px;gap:7px}.hotspot:before{display:none}#part-index{position:absolute;top:18px;right:2vw;margin:0;gap:6px}#part-index i{width:12px}.playback{left:8vw;right:8vw;bottom:max(3vh,env(safe-area-inset-bottom))}.playback-top,.playback-bottom{font-size:9px}.qualitative{left:7vw;bottom:12vh;font-size:8px}.scene-tools{bottom:4vh;left:8vw;gap:28px}.scene-tools button{font-size:10px}body[data-scene="explore"] .scene-stage{left:0;right:0;top:30vh;bottom:12vh}body[data-scene="explore"] .story{width:85vw;top:15vh}body[data-scene="explore"] .story h1{font-size:28px}#orbit-hint{font-size:10px;bottom:1vh}#orbit-hint small{font-size:8px}.micro-copy{left:7vw;top:16vh;max-width:84vw}.micro-copy h1{font-size:29px;max-width:none;margin:13px 0}.micro-copy p{font-size:10px;max-width:30em}.micro-legend{right:auto;left:7vw;top:35vh;gap:22px;font-size:9px}#micro-canvas{inset:34vh 0 16vh;height:50vh}.micro-steps{left:7vw;bottom:13vh;gap:24px}.micro-steps button{font-size:10px}#micro-next{right:7vw;bottom:5.5vh;font-size:18px}.micro-note{font-size:8px;bottom:3vh;max-width:45vw;line-height:1.6}.ending-brand{top:17vh}.ending-brand img{width:85px;height:85px}.ending-brand>span{font-size:25px}.slogan{width:92vw;top:36vh}.ending-device{width:66vw;height:30vh;bottom:1vh}#skip-ending{bottom:4vh;font-size:9px}}
.cover{background:var(--paper)}body[data-scene="gel"] #model{cursor:pointer}.slogan{aspect-ratio:1672/941}#slogan-art{position:relative;display:block}.slogan-letter{position:absolute;inset:0;background-size:100% 100%;clip-path:inset(var(--closed))}.slogan-letter.visible{clip-path:inset(var(--clip))}
body[data-scene="ending"] #header .brand,body[data-scene="ending"] #fullscreen{visibility:hidden;pointer-events:none}body[data-scene="ending"] nav{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .4s}body[data-scene="ending"].menu-open nav{opacity:1;visibility:visible;pointer-events:auto}body[data-scene="ending"] #menu-toggle{display:block;color:#8b988c}
body[data-scene="ending"] #header{opacity:0;pointer-events:none}.ending-brand{top:20vh;background:var(--paper)}.ending-brand img{width:145px;height:145px}.slogan{top:43vh;width:min(520px,64vw)}@media(max-width:600px){.ending-brand{top:22vh}.ending-brand img{width:125px;height:125px}.slogan{top:43vh;width:84vw}}
.ending-light{display:none}.ending-brand{top:26vh;background:transparent;mix-blend-mode:multiply;clip-path:none;transform:translate(-50%,8px) scale(.985);transition:opacity 2.8s ease,transform 3.5s ease}.ending-brand.reveal{clip-path:none;transform:translate(-50%,0) scale(1)}.ending-brand img{width:170px;height:170px;filter:contrast(1.14) brightness(1.035);mix-blend-mode:normal}.slogan{top:52vh;width:min(720px,84vw);aspect-ratio:7.30}#slogan-art{display:flex;align-items:stretch;position:relative}.slogan-letter{position:relative;inset:auto;display:block;flex-grow:0;flex-shrink:0;height:100%;clip-path:none;opacity:0;filter:none;transform:none;transition:none}.slogan-letter.visible{clip-path:none;opacity:1;transform:none;filter:none}#typing-cursor{position:absolute;top:8%;height:77%;width:2px;background:#47534e;opacity:0;pointer-events:none}#typing-cursor.active{animation:caret .82s steps(1,end) infinite;opacity:1}@keyframes caret{0%,54%{opacity:1}55%,100%{opacity:0}}@media(max-width:600px){.ending-brand{top:29vh}.ending-brand img{width:145px;height:145px}.slogan{top:53vh;width:90vw}#typing-cursor{width:1.3px}}
.cover-logo{mix-blend-mode:normal}.ending-brand{mix-blend-mode:normal}.ending-brand img{filter:none;mix-blend-mode:normal}
.ending-brand{top:50%;left:50%;width:min(1200px,125vw);height:min(1100px,120vh);z-index:1;justify-content:center;transform:translate(-50%,-50%) scale(.95);opacity:0;transition:opacity .55s ease,transform .8s var(--ease);pointer-events:none}.ending-brand img{width:100%;height:100%;object-fit:contain}.ending-brand.reveal{opacity:1;transform:translate(-50%,-50%) scale(1)}.slogan{z-index:2;transform:translate(-50%,0);transition:transform .55s var(--ease)}.slogan.settled{transform:translate(-50%,-26px)}@media(max-width:600px){.ending-brand{top:50%;width:125vw;height:105vh}.ending-brand img{width:100%;height:100%}.slogan.settled{transform:translate(-50%,-18px)}}
.cover-logo,.brand-mark img,.ending-brand img{}.slogan.settled .slogan-letter.visible{filter:drop-shadow(0 0 2px rgba(245,244,239,.95)) drop-shadow(0 0 5px rgba(245,244,239,.9)) drop-shadow(0 0 9px rgba(245,244,239,.7))}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;animation-iteration-count:1!important}.cue:before,.cue:after{opacity:.4}.slogan-letter{transform:none;filter:none}.ending-device{transform:translateX(-50%)}}
