@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600&family=Noto+Sans+SC:wght@300;400;500;600&display=swap');
:root{--ink:#353c33;--muted:#73796b;--gold:#a17b48;--line:#68705c35;--paper:#f5f2e9;--serif:'Noto Serif SC','Songti SC',SimSun,serif;--sans:'Noto Sans SC',sans-serif}*{box-sizing:border-box}body{margin:0;background:#d9ddcf;color:var(--ink);font-family:var(--sans);font-size:13px;overflow:hidden}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}button:focus-visible,a:focus-visible,label:focus-within{outline:2px solid #9d7747;outline-offset:5px}button:hover{filter:brightness(.9)}[hidden]{display:none!important}#world{position:fixed;inset:0;touch-action:none;cursor:grab}#world:active{cursor:grabbing}#world canvas{width:100%;height:100%;display:block}#dates{position:absolute;inset:0;pointer-events:none;z-index:2}.world-date{position:absolute;text-align:center;white-space:nowrap;color:#faf2dd;text-shadow:0 2px 12px #3c3b2f60;will-change:transform,opacity;clip-path:inset(0 0 0 0)}.world-date small{font-size:9px;letter-spacing:3px;display:block;margin-bottom:9px}.world-date strong{font-family:var(--serif);font-size:22px;font-weight:400;letter-spacing:3px}.world-date .date-line{display:block;height:22px;width:1px;background:#f9edcb80;margin:12px auto 0}.vignette{position:fixed;inset:0;pointer-events:none;background:linear-gradient(180deg,#f5f3e995,transparent 24%,transparent 64%,#e7e9daeb 92%,#e9ebde),linear-gradient(90deg,#e5e9dc45,transparent 45%);z-index:3}.topbar{position:absolute;top:0;left:0;right:0;padding:30px 46px;display:flex;align-items:center;justify-content:space-between;z-index:5}.brand{display:flex;gap:13px;align-items:center;text-decoration:none;color:var(--ink);font-family:var(--serif);font-size:22px;letter-spacing:3px}.brand-symbol{font-size:39px;font-family:serif;font-weight:300;color:#8b774b;line-height:1}.brand small{display:block;font:8px var(--sans);letter-spacing:3.2px;margin-top:6px}.exhibition{display:flex;align-items:center;gap:11px;font-size:10px;letter-spacing:1px;color:#65715e}.live-dot{height:5px;width:5px;border-radius:100%;background:#758169;box-shadow:0 0 0 4px #7b8b7110}.divider{height:12px;width:1px;background:var(--line);margin:0 4px}.top-actions{display:flex;align-items:center;gap:20px}.icon-btn{border:1px solid #7b816955;width:29px;height:29px;border-radius:50%;font:14px Georgia}.album-btn{background:#f8f6ec80;border:1px solid #8a917255;border-radius:5px;padding:11px 16px;font-size:11px;display:flex;align-items:center;gap:9px;backdrop-filter:blur(12px)}.album-btn .plus{border-left:1px solid var(--line);padding-left:12px;margin-left:10px;color:#7a815e}.intro{position:absolute;z-index:4;left:6%;top:27%;pointer-events:none;transition:opacity .8s,transform .8s}.intro.walking{opacity:0;transform:translateY(-15px);pointer-events:none}.eyebrow{font-size:8px;letter-spacing:2.8px;color:#7f806d;display:flex;gap:12px;align-items:center}.eyebrow>span{width:28px;height:1px;background:#85816a}.intro h1{font-family:var(--serif);font-size:clamp(34px,3.6vw,60px);font-weight:400;line-height:1.6;letter-spacing:7px;margin:20px 0 22px}.intro p{font-size:11px;line-height:2.4;letter-spacing:1.5px;color:#727b67}.begin-btn{pointer-events:auto;display:flex;gap:45px;align-items:center;margin-top:27px;background:#3b4639;color:#f4f0e0;padding:15px 23px;border-radius:3px;font-size:11px;letter-spacing:2px;box-shadow:0 7px 20px #36452b15}.begin-btn span{font-size:18px;font-weight:300}.intro-note{font-size:8px;letter-spacing:1.5px;color:#7e8771;margin-top:16px}.scene-label{position:absolute;right:47px;top:138px;display:flex;flex-direction:column;gap:9px;writing-mode:vertical-rl;font-size:9px;letter-spacing:3px;color:#69725c88;z-index:4}.scene-label span:last-child{margin-top:16px;font-family:var(--serif);font-size:11px;letter-spacing:4px}.crosshair{position:absolute;top:50%;left:50%;height:3px;width:3px;border-radius:50%;background:#fff9;box-shadow:0 0 3px #464f3430;pointer-events:none;z-index:4}.walk-controls{position:absolute;z-index:5;bottom:155px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:15px;padding:9px 16px;background:#f7f7ed8c;backdrop-filter:blur(18px);border:1px solid #fbf9eea6;box-shadow:0 4px 24px #3f4b2e0a;border-radius:40px}.control-icon{font-family:Georgia;font-size:23px;width:19px;line-height:26px}.control-separator{width:1px;height:16px;background:var(--line);margin:0 2px}.play-btn{border-radius:50%;width:39px;height:39px;background:#465341;color:#f4f0df;font-size:12px;padding-left:9px}.speed-btn{font:11px var(--sans);width:22px}.walk-caption{position:absolute;top:69px;left:0;right:0;text-align:center;font-size:9px;letter-spacing:3px;color:#78816a;white-space:nowrap}.keyboard-tip{position:absolute;bottom:169px;left:46px;display:flex;align-items:center;gap:4px;z-index:5;font-size:9px;color:#76816a}.key{font:8px var(--sans);border:1px solid #8792744d;border-radius:3px;width:19px;height:20px;display:grid;place-items:center;background:#f4f6ea40}.keyboard-tip>span:nth-child(5){margin-left:6px}.keyboard-tip i{width:1px;height:11px;background:var(--line);margin:0 10px}.music-pill{position:absolute;bottom:165px;right:46px;z-index:5;display:flex;align-items:center;gap:12px;font-size:9px;color:#69755d;border:1px solid #85907130;border-radius:30px;padding:11px 14px;background:#edf0e148}.music-bars{display:flex;gap:2px;align-items:center;height:12px}.music-bars i{height:7px;width:2px;background:#879273}.music-bars i:nth-child(2){height:12px}.music-bars i:nth-child(3){height:9px}.music-pill.playing .music-bars i{animation:bars .9s infinite alternate}.music-pill.playing .music-bars i:nth-child(2){animation-delay:-.4s}.music-pill.playing .music-bars i:nth-child(3){animation-delay:-.2s}@keyframes bars{to{height:3px}}.timeline{position:absolute;bottom:0;left:46px;right:46px;height:111px;z-index:5;border-top:1px solid #7e886229}.timeline-top{display:flex;align-items:center;justify-content:space-between;margin-top:18px;font-size:9px;letter-spacing:1.4px;color:#6b755e}.tiny-diamond{margin-right:9px;color:#8c835d}.timeline-end{font-size:8px;color:#859074}.timeline-end span{margin-left:20px}#journey-counter{position:absolute;left:50%;transform:translateX(-50%);font:12px Georgia;color:#556345}#journey-counter i{font-size:10px;color:#889177;font-style:normal}.timeline-track{height:48px;position:relative;margin-top:20px}.track-line,.track-progress{position:absolute;left:0;right:0;top:4px;height:1px;background:#8c987530}.track-progress{right:auto;background:#8a7852;width:0}#timeline-markers{position:absolute;inset:0;pointer-events:none}.timeline-marker{position:absolute;top:0;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:11px;pointer-events:auto;padding:0;background:none;min-width:45px}.timeline-marker i{height:8px;width:8px;border-radius:50%;background:#bbc3a9;border:2px solid #e8ecdc;box-shadow:0 0 0 1px #929c7b55}.timeline-marker span{font:9px Georgia;letter-spacing:1px;color:#939b83}.timeline-marker.active i{background:#8d7950;box-shadow:0 0 0 4px #9a8d6320}.timeline-marker.active span{color:#726440}#journey{position:absolute;left:0;top:-7px;width:100%;height:20px;margin:0;opacity:0;cursor:ew-resize;pointer-events:none}.moment-hint{position:absolute;left:50%;bottom:245px;transform:translateX(-50%);text-align:center;z-index:5;color:#444f3b;text-shadow:0 0 12px #f3f1dc}.moment-hint>span{font:15px var(--serif);letter-spacing:3px;display:block}.moment-hint button{font-size:9px;letter-spacing:2px;margin-top:12px;padding:8px 16px;background:#f3f2dfb0;border-radius:30px;border:1px solid #f9f7ed90}.overlay{position:fixed;inset:0;background:#2b322c50;backdrop-filter:blur(4px);z-index:9}.drawer{position:fixed;top:0;bottom:0;right:0;width:460px;max-width:100%;background:#f6f3eb;z-index:10;padding:32px;overflow-y:auto;box-shadow:-10px 0 70px #28352320}.drawer-head{display:flex;justify-content:space-between;align-items:flex-start}.drawer h2,dialog h2{font:24px var(--serif);letter-spacing:1px;font-weight:400;line-height:1.6;margin:16px 0}.close-btn{font:27px Arial;color:#8d927f;width:32px;height:32px;flex-shrink:0}.drawer-description{color:#858975;font-size:11px;line-height:2;margin:0 0 22px}.upload-zone{border:1px dashed #a8ac93;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 12px;background:#edeedf70;cursor:pointer;border-radius:5px}.upload-zone>span{font:27px Arial;color:#899277;margin-bottom:8px}.upload-zone strong{font-size:12px;font-weight:400}.upload-zone small{font-size:9px;color:#8b917e;text-align:center;line-height:2;margin-top:10px}.upload-zone.dragover{border-color:#6b7756;background:#dce3ca}.collection-heading{display:flex;justify-content:space-between;align-items:center;margin:28px 0 14px;font-size:11px}.collection-heading small{color:#89917b;margin-left:6px}.collection-heading button{font-size:9px;color:#9b8b71;border-bottom:1px solid #c8bdab;padding-bottom:3px}.photo-row{display:grid;grid-template-columns:64px 1fr 22px;gap:12px;align-items:center;padding:13px 0;border-bottom:1px solid #b4b79d30}.photo-row img{height:68px;width:64px;object-fit:cover;border-radius:3px}.photo-row input{display:block;width:100%;border:0;background:transparent;color:#4e5845;font-family:var(--sans);font-size:11px;padding:6px 0;outline-offset:2px}.photo-row input[type=date]{font-size:10px;color:#929880}.delete-photo{color:#9b9c8a;font-size:18px}.music-section{border-top:1px solid #adb49a40;margin-top:28px;padding-top:16px}.music-section h3{font:15px var(--serif);font-weight:400}.music-upload{display:flex;gap:12px;align-items:center;padding:15px;background:#e8ebdc80;border-radius:4px;color:#6c785b;cursor:pointer}.music-upload span:first-child{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:11px}.volume-row{display:flex;gap:12px;align-items:center;margin-top:14px;color:#879075;font-size:10px}.volume-row input{accent-color:#7c8865;flex:1;width:80px;height:3px}.volume-row button{font-size:10px}.storage-note{font-size:9px;color:#979b88;line-height:1.9;margin-top:22px}.done-btn{display:flex;justify-content:space-between;align-items:center;gap:30px;background:#46543e;color:#f4f0e1;width:100%;padding:15px 18px;border-radius:3px;font-size:11px;margin-top:22px}dialog{border:1px solid #f9f6e7;background:#f4f1e7;color:var(--ink);border-radius:7px;padding:40px;max-width:470px;width:90%;box-shadow:0 15px 90px #26331c30}dialog::backdrop{background:#29312a70;backdrop-filter:blur(9px)}dialog>.close-btn{position:absolute;top:12px;right:12px}dialog p{font-size:12px;line-height:2.3;color:#7b826d}dialog b{font-weight:500;color:#4e5c42}#photo-dialog{max-width:90vw;width:max-content;max-height:93dvh;background:#f4f1e7;padding:35px 22px 20px;overflow:auto}#photo-dialog img{max-width:calc(90vw - 48px);max-height:70dvh;display:block;object-fit:contain}#photo-dialog>div{padding:20px 5px 0;display:flex;gap:30px;align-items:center;justify-content:space-between}#full-date{font:12px Georgia;color:#919777;letter-spacing:2px}#full-title{font-size:17px;margin:0}#toast{position:absolute;z-index:30;bottom:45px;left:50%;transform:translate(-50%,20px);opacity:0;background:#3d493aeb;color:#f3efdf;border-radius:6px;padding:13px 20px;font-size:11px;pointer-events:none;transition:.3s;max-width:90%;text-align:center;line-height:1.8}#toast.visible{opacity:1;transform:translate(-50%,0)}#loading{position:fixed;inset:0;z-index:40;background:#e8eadd;display:flex;align-items:center;justify-content:center;flex-direction:column;transition:opacity 1s}.loader-symbol{font:50px Georgia;color:#a39670;animation:pulse 2s infinite}#loading p{font:17px var(--serif);letter-spacing:4px;margin-top:26px}#loading small{font-size:10px;color:#929a80;letter-spacing:2px}@keyframes pulse{50%{opacity:.35;transform:rotate(90deg)}}.touch-controls{display:none}
@media(min-width:1700px){.intro{left:8%;top:29%}.walk-controls{bottom:180px}.keyboard-tip,.music-pill{bottom:190px}.timeline{height:128px}.moment-hint{bottom:275px}}
@media(max-width:900px){.topbar{padding:24px}.exhibition{display:none}.intro{left:7%;top:25%}.intro h1{font-size:44px}.scene-label{right:24px}.keyboard-tip{left:24px;bottom:162px;font-size:8px;gap:3px}.keyboard-tip i,.keyboard-tip>span:last-child{display:none}.music-pill{right:24px;bottom:161px}.music-pill #music-label{max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.walk-controls{gap:10px;padding:8px 12px}.timeline{left:24px;right:24px}.timeline-end{display:none}}
@media(max-width:600px){.topbar{padding:23px 20px}.brand{font-size:18px;gap:8px}.brand-symbol{font-size:32px}.brand small{font-size:6px;letter-spacing:2.8px}.top-actions{gap:12px}.icon-btn{height:25px;width:25px}.album-btn{font-size:10px;padding:9px 10px;gap:6px}.album-btn .plus{display:none}.intro{top:24%;left:8%}.intro h1{font-size:38px;letter-spacing:5px;margin:18px 0}.intro p{font-size:10px;letter-spacing:1px}.eyebrow{font-size:7px;letter-spacing:2px}.begin-btn{margin-top:23px;padding:12px 18px}.scene-label{top:130px;right:18px;font-size:7px}.scene-label span:last-child{font-size:9px}.keyboard-tip{display:none}.music-pill{bottom:228px;right:20px;padding:9px 11px;font-size:8px;gap:7px}.music-pill #music-label{max-width:90px}.walk-controls{bottom:143px}.walk-caption{top:65px;font-size:8px}.timeline{left:24px;right:24px;height:95px}.timeline-top{font-size:8px;margin-top:15px}.timeline-track{margin-top:19px}.timeline-marker span{font-size:8px}.moment-hint{bottom:245px;max-width:70%}.moment-hint>span{font-size:12px}.moment-hint button{font-size:8px}.touch-controls{position:absolute;left:20px;bottom:224px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:4px}.touch-controls button{background:#f3f4e870;backdrop-filter:blur(10px);border:1px solid #fcfbed90;width:33px;height:31px;margin:0 1px;border-radius:5px;color:#74805e}.drawer{padding:28px 23px}.drawer h2{font-size:21px}.drawer-description{font-size:10px}dialog{padding:35px 25px}dialog h2{font-size:22px}dialog p{font-size:11px}#photo-dialog>div{display:block}#full-title{margin-top:10px}}
/* Closing uses opacity only, preserving its pacing without spatial motion. */
@media(prefers-reduced-motion:reduce){*:not(#ending-dialog):not(#ending-dialog *),*:before,*:after{animation:none!important;scroll-behavior:auto!important}}
.world-date{color:#687052;text-shadow:0 1px 10px #fff5d670}.world-date .date-line{background:#8a8c6260}#journey{pointer-events:auto;z-index:1}#timeline-markers{z-index:2}
@media(max-height:700px){.intro{top:24%}.intro h1{font-size:35px;line-height:1.5;margin:15px 0}.intro p{font-size:10px;line-height:2}.begin-btn{margin-top:16px;padding:11px 18px}.intro-note{margin-top:10px;font-size:7px}.walk-controls{bottom:125px}.walk-caption{top:65px}.keyboard-tip,.music-pill{bottom:140px}.timeline{height:90px}.timeline-top{margin-top:14px}.timeline-track{margin-top:17px}.moment-hint{bottom:217px}.touch-controls{bottom:204px}}
@media(max-height:700px) and (max-width:900px){.intro{top:23%}.intro h1{font-size:31px;line-height:1.45}.intro p{font-size:9px}.begin-btn{margin-top:13px}.intro-note{display:none}.music-pill{bottom:202px}.keyboard-tip{display:none}.scene-label{display:none}}
.world-date{padding:10px 15px;background:#f4efdaca;backdrop-filter:blur(8px);border:1px solid #fff7df70;border-radius:3px;text-shadow:none}.world-date small{font-size:7px;margin-bottom:6px;letter-spacing:2px}.world-date strong{font-size:16px;letter-spacing:2px}.world-date .date-line{display:none}.moment-hint{top:104px;bottom:auto}.moment-hint>span{font-size:12px}.moment-hint button{margin-top:8px;padding:6px 12px}
@media(max-width:600px){.moment-hint{top:96px}.moment-hint>span{font-size:10px}.world-date strong{font-size:14px}}
/* A quiet final curtain, reached by walking to the end of the road. */
#ending-dialog{position:fixed;inset:0;margin:0;max-width:none;max-height:none;width:100%;height:100dvh;padding:28px;overflow:auto;border:0;border-radius:0;box-shadow:none;background:radial-gradient(ellipse at 50% 37%,#fcf8ebe8,#e9ecdfed 70%);color:#49513d}
#ending-dialog::backdrop{background:#dbe0cc70;backdrop-filter:blur(12px);animation:ending-backdrop 3.8s ease both}
#ending-dialog[open]{display:grid;place-items:center;animation:ending-curtain 3.8s ease both}
#ending-dialog[open] .ending-card>*{animation:ending-line 2.4s ease both}
#ending-dialog[open] .ending-eyebrow,#ending-dialog[open] .ending-symbol,#ending-dialog[open] .ending-dates{animation-delay:.8s}
#ending-dialog[open] #ending-title{animation-delay:1.8s}
#ending-dialog[open] #ending-copy{animation-delay:2.8s}
#ending-dialog[open] .ending-divider,#ending-dialog[open] #ending-count{animation-delay:3.4s}
#ending-dialog[open] .ending-actions,#ending-dialog[open] .ending-footnote{animation-delay:4.2s}
.ending-card{text-align:center;width:min(100%,540px);padding:20px 0}
.ending-eyebrow{display:flex;align-items:center;justify-content:center;gap:15px;font-size:8px;letter-spacing:2.6px;color:#95977b}
.ending-eyebrow span{height:1px;width:38px;background:#a6aa8a60}
.ending-symbol{font:41px Georgia;color:#a09167;margin:30px 0 19px}
.ending-dates{font:11px Georgia;letter-spacing:2px;color:#8c9278;margin:0 0 18px}
#ending-title{font:400 clamp(34px,5vw,54px)/1.6 var(--serif);letter-spacing:8px;color:#48533b;margin:16px 0 20px}
#ending-copy{font:11px/2.5 var(--sans);letter-spacing:2px;color:#899078;margin:0}
.ending-divider{display:flex;align-items:center;justify-content:center;gap:15px;margin:27px 0 13px;color:#9e9b7b}
.ending-divider span{height:1px;width:65px;background:#a6aa8a40}.ending-divider i{font:13px Georgia;font-style:normal}
#ending-count{font:10px var(--sans);letter-spacing:2px;color:#94997f;margin:0}
.ending-actions{display:flex;flex-direction:column;align-items:center;gap:12px;margin:30px 0 0}
.ending-actions button{font-size:11px;letter-spacing:2px;padding:14px 22px;border-radius:3px;width:210px;display:flex;justify-content:space-between;align-items:center}
#ending-restart{background:#48573f;color:#f5f0df;box-shadow:0 6px 20px #59664512}#ending-back{font-size:9px;color:#8a9277;background:transparent}
#ending-dialog .ending-footnote{font:9px var(--serif);letter-spacing:3px;color:#a0a58d;margin:25px 0 0}
.topbar,.timeline,.walk-controls,.touch-controls,.music-pill,.keyboard-tip,.moment-hint{transition:opacity 2s ease}
.ending-open .topbar,.ending-open .timeline,.ending-open .walk-controls,.ending-open .touch-controls,.ending-open .music-pill,.ending-open .keyboard-tip,.ending-open .moment-hint,.ending-settling .topbar,.ending-settling .timeline,.ending-settling .walk-controls,.ending-settling .touch-controls,.ending-settling .music-pill,.ending-settling .keyboard-tip,.ending-settling .moment-hint{opacity:0}
@keyframes ending-curtain{from{opacity:0}to{opacity:1}}
@keyframes ending-line{from{opacity:0}to{opacity:1}}
@keyframes ending-backdrop{from{background:#dbe0cc00;backdrop-filter:blur(0)}to{background:#dbe0cc70;backdrop-filter:blur(12px)}}
@media(max-height:780px){.ending-card{padding:0}.ending-symbol{font-size:30px;margin:20px 0 14px}#ending-title{font-size:34px;line-height:1.5;margin:12px 0 16px}.ending-divider{margin-top:18px}.ending-actions{margin-top:22px;gap:6px}#ending-dialog .ending-footnote{margin-top:16px}}
@media(max-width:600px){#ending-dialog{padding:22px}.ending-eyebrow{font-size:6px;letter-spacing:2px;gap:10px}.ending-eyebrow span{width:24px}.ending-dates{font-size:9px;letter-spacing:1px}#ending-copy{font-size:10px}.ending-actions button{width:200px}}
.photo-preview{position:relative;width:64px;height:68px}.gif-badge{position:absolute;right:4px;bottom:4px;padding:2px 4px;font:7px var(--sans);letter-spacing:1px;color:#fff9e8;background:#45503dc9;border-radius:2px;pointer-events:none}
.live-import-guide{margin:14px 0;color:#818970;font-size:10px;line-height:1.9}.live-import-guide summary{cursor:pointer;color:#6c785c}.live-import-guide p{margin:9px 0;font-size:9px}.live-row-actions{display:flex;gap:12px;margin:4px 0}.live-row-actions button{font-size:9px;padding:2px 0;color:#8c8469;border-bottom:1px solid #b8b39860}.media-note{display:block;font-size:8px;line-height:1.8;color:#9c8464;margin-top:5px}.upload-zone[aria-busy=true]{opacity:.6;pointer-events:none}#full-video{display:block;max-width:calc(90vw - 48px);max-height:70dvh;width:auto;min-width:min(60vw,420px);background:#1f251d;margin:0 auto}#full-media-note{max-width:600px;font-size:10px;line-height:1.9;color:#8c785b;margin:14px 0 0}#download-original{display:inline-block;font-size:10px;color:#7c8768;margin-top:14px;text-decoration:none;border-bottom:1px solid #a0aa8a60}

