:root{color-scheme:dark;--ink:#e9eff9;--muted:#8a9eb8;--accent:#a8d6ff}*{box-sizing:border-box}body{margin:0;background:#030611;color:var(--ink);font-family:"Microsoft YaHei","PingFang SC",sans-serif;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:wait;opacity:.5}button:focus-visible,a:focus-visible{outline:2px solid #c7e9ff;outline-offset:5px}button{touch-action:manipulation}#space,.nebula,.lens,.cockpit,#universe{position:fixed;inset:0;width:100%;height:100%}#space{z-index:0}.nebula{pointer-events:none;z-index:1;opacity:.65;background:radial-gradient(ellipse at 20% 55%,#22478625,transparent 45%),radial-gradient(ellipse at 79% 32%,#6a458926,transparent 46%)}#universe{z-index:2;perspective:1000px;perspective-origin:50% 45%;overflow:hidden}#scene{position:absolute;inset:0;transform-style:preserve-3d}.memory-plane{position:absolute;left:50%;top:45%;width:min(92vw,1600px);height:72vh;transform-style:preserve-3d;will-change:transform,opacity;pointer-events:none}.portal{position:absolute;inset:0;border:1px solid #c2e3ff55;border-radius:3px;background:#0b1526;box-shadow:0 0 24px #9abfff24,0 0 100px #80adff12;overflow:hidden}.portal:before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;box-shadow:inset 0 0 65px #02071170;border:6px solid #bddeff05}.portal:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#02091655,transparent 28%,transparent 75%,#08132725);pointer-events:none;z-index:2}.memory-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}.plane-caption{position:absolute;bottom:19px;left:23px;z-index:3;font-size:9px;letter-spacing:4px;color:#e8effcc2;text-shadow:0 2px 6px #000}.portal-corner{position:absolute;width:22px;height:22px;border-color:#d1eaffb3;border-style:solid;z-index:4;filter:drop-shadow(0 0 5px #acd9ff)}.portal-corner.tl{top:-5px;left:-5px;border-width:1px 0 0 1px}.portal-corner.tr{top:-5px;right:-5px;border-width:1px 1px 0 0}.portal-corner.bl{bottom:-5px;left:-5px;border-width:0 0 1px 1px}.portal-corner.br{bottom:-5px;right:-5px;border-width:0 1px 1px 0}.plane-id{position:absolute;top:-28px;left:0;font:9px monospace;letter-spacing:3px;color:#b1c9e6a0}.plane-line{position:absolute;top:50%;left:-45px;width:26px;height:1px;background:#b9e0ff66}.lens{z-index:3;pointer-events:none;background:radial-gradient(ellipse at 50% 42%,transparent 45%,#02061199 100%)}.cockpit{z-index:4;pointer-events:none;border-radius:46% 46% 12% 12% / 12% 12% 6% 6%;border:1px solid #b2d9ff12;box-shadow:inset 0 0 60px #0005}.crosshair{position:absolute;top:45%;left:50%;width:14px;height:14px;transform:translate(-50%,-50%);border:1px solid #bbdfff55;border-radius:50%;opacity:0;transition:opacity .8s}.flying .crosshair{opacity:1}.horizon{position:absolute;top:45%;width:28px;height:1px;background:#9fcaff50}.horizon:after{content:"";position:absolute;top:-7px;height:15px;width:1px;background:#9fcaff50}.horizon.left{left:20px}.horizon.right{right:20px;transform:rotate(180deg)}.bearing{position:absolute;top:24px;left:50%;transform:translateX(-50%);color:#aac7e56b;font-size:12px;letter-spacing:9px}header{position:fixed;z-index:6;top:24px;left:3.5vw;right:3.5vw;display:flex;justify-content:space-between;align-items:center}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font-size:10px;letter-spacing:3px;color:#cfdbed}.brand>span{font-size:31px;color:#bad8f5}.glass{background:#101c2c55;border:1px solid #b9d9ff24;border-radius:3px;padding:10px 16px;font-size:10px;letter-spacing:2px;backdrop-filter:blur(12px)}.glass span{margin-left:17px}.destination{position:fixed;z-index:5;top:83px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;white-space:nowrap;color:#b4c7df;font-size:9px;letter-spacing:3px;transition:opacity .5s}.signal{width:4px;height:4px;border-radius:50%;background:#b9e0fb;box-shadow:0 0 9px #87c9ff}.divider{height:8px;width:1px;background:#8bafd04d}.memory-info{position:fixed;z-index:5;left:0;right:0;bottom:91px;text-align:center;transition:opacity .45s,transform .7s;pointer-events:none}#counter{font:8px monospace;color:#829ab8;letter-spacing:4px;margin:0 0 10px}h1{font-family:"Songti SC","SimSun",serif;font-size:clamp(20px,2.2vw,32px);font-weight:400;letter-spacing:4px;margin:0;text-shadow:0 2px 22px #000}h1 br{display:none}.photo-actions{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:13px;pointer-events:auto}.text-button{border:0;background:none;font-size:9px;letter-spacing:1px;color:#9fb4cf;padding:5px}.text-button:hover{color:#e2efff}#sample-note{font-size:8px;color:#70839e;letter-spacing:1px}.flying .memory-info{opacity:0;transform:translateY(12px);pointer-events:none}.flying .photo-actions{pointer-events:none}footer{position:fixed;z-index:6;left:3.5vw;right:3.5vw;bottom:25px;display:flex;justify-content:space-between;align-items:center}.tools{display:flex;gap:8px;min-width:150px}.icon-button{border:1px solid #b8d4fb20;background:#06101c55;border-radius:50%;width:33px;height:33px;color:#99aecb;font-size:12px;backdrop-filter:blur(10px)}.icon-button[aria-pressed=true]{background:#c0dcff25;border-color:#c0dcff70;color:#fff}#stops{display:flex;align-items:center;gap:23px}.stop{position:relative;border:0;background:none;padding:12px 7px;color:#657d9b;font:9px monospace;min-width:26px}.stop:after{content:"";position:absolute;left:calc(100% + 1px);top:50%;height:1px;width:17px;background:#9abce328}.stop:last-child:after{display:none}.stop.active{color:#e4f2ff}.stop.active:before{content:"";position:absolute;left:50%;bottom:3px;transform:translateX(-50%);width:3px;height:3px;border-radius:50%;background:#c0e6ff;box-shadow:0 0 12px #85caff}.next{min-width:150px;display:flex;justify-content:space-between;gap:24px;align-items:center;background:#adcfff0c;border:1px solid #b5d9ff55;border-radius:3px;padding:12px 17px;font-size:10px;letter-spacing:2px;backdrop-filter:blur(14px);transition:background .2s}.next:hover{background:#adcfff20}.next span{font-size:20px;line-height:12px}dialog{width:min(460px,90vw);color:#dce8f6;background:linear-gradient(145deg,#142238,#060d1b);border:1px solid #b1d7ff44;border-radius:8px;padding:26px;box-shadow:0 30px 100px #0008}dialog::backdrop{background:#020711bb;backdrop-filter:blur(16px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between}dialog h2{font-size:16px;font-weight:400;letter-spacing:4px}.dialog-heading button{background:none;border:0;color:#9cb1cd;font-size:26px}#map-stops{display:grid;gap:8px;margin:20px 0}#map-stops button{display:flex;gap:25px;align-items:center;padding:16px;background:#b8d9ff05;border:1px solid #b8d9ff20;font-size:12px;letter-spacing:2px;text-align:left}#map-stops button.active{border-color:#b8d9ff88;background:#b8d9ff10}#map-stops button span{color:#7c9cbd;font:10px monospace}dialog p{font-size:10px;line-height:1.8;color:#7e94b1}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
@media(max-width:700px){header{top:18px;left:22px;right:22px}.brand{font-size:9px;letter-spacing:2px}.brand>span{font-size:26px}.glass{padding:9px 12px;font-size:9px}.bearing{display:none}.destination{top:80px;font-size:8px;gap:7px;letter-spacing:2px}.memory-plane{width:104vw;height:59svh;top:42%}#universe{perspective-origin:50% 42%}.plane-id{font-size:7px;letter-spacing:2px;top:-23px}.plane-caption{font-size:8px;left:16px;bottom:15px;letter-spacing:3px}.horizon{top:42%;width:13px}.horizon.left{left:6px}.horizon.right{right:6px}.crosshair{top:42%}.memory-info{bottom:101px;padding:0 20px}h1{font-size:21px;line-height:1.5;letter-spacing:2px}h1 br{display:block}#counter{display:none}.photo-actions{margin-top:9px}.text-button{font-size:9px}footer{bottom:22px;left:19px;right:19px;gap:8px}.tools{min-width:0;gap:6px}.icon-button{width:30px;height:30px}.next{min-width:110px;padding:11px 12px;font-size:9px;gap:8px;letter-spacing:1px}#stops{gap:9px}.stop{min-width:20px;padding:12px 3px;font-size:8px}.stop:after{width:6px}.cockpit{border-radius:0}}
@media(max-height:600px){.destination{top:65px}.memory-plane{height:65vh}.memory-info{bottom:65px}h1{font-size:19px}h1 br{display:none}#counter{display:none}.photo-actions{margin-top:4px}footer{bottom:12px}.plane-caption{bottom:12px}.plane-id{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}

/* Dream passage: memories emerge inside nebulae rather than on screens. */
body{background:#030713}
.nebula{background:radial-gradient(ellipse at 18% 55%,#37699130,transparent 52%),radial-gradient(ellipse at 82% 26%,#9d6ab72e,transparent 48%);opacity:.9}
.memory-plane{width:min(115vw,1900px);height:85vh;top:44%}
.portal{border:0;border-radius:0;box-shadow:none;background:none;overflow:hidden;mask-image:radial-gradient(ellipse 59% 64% at 50% 48%,#000 28%,#000e 46%,#0008 65%,transparent 88%)}
.portal:before{display:none}
.portal:after{display:none}
.memory-photo{filter:saturate(.8);opacity:.94}
.portal-corner,.plane-id,.plane-caption,.plane-line,.cockpit{display:none}
.lens{background:radial-gradient(ellipse at 50% 42%,transparent 42%,#02061188 100%)}
#stardust{position:fixed;inset:0;width:100%;height:100%;z-index:4;pointer-events:none}
.destination{top:88px;color:#c5d6ee99;font-size:8px;letter-spacing:4px}
.memory-info{bottom:104px}
#counter{display:none}
h1{font-size:clamp(23px,2.3vw,34px);letter-spacing:5px;text-shadow:0 3px 35px #020713}
header,.destination,.photo-actions,#pause,#sound,.gesture-hint{transition:opacity 0.4s ease,transform 0.4s ease}
.glass,.icon-button,.next{border-color:#c5def329;background:#14213a22}
.brand{color:#cedcef9c}

/* 四角控制栏自动休眠/放映沉浸：四角全部隐去，只留核心婚纱照、唯美诗词与时间轮 */
.controls-asleep header,
.controls-asleep .destination,
.controls-asleep .photo-actions,
.controls-asleep .gesture-hint,
.controls-asleep #pause,
.controls-asleep #sound,
body.movie-immersive header,
body.movie-immersive .destination,
body.movie-immersive .photo-actions,
body.movie-immersive .gesture-hint,
body.movie-immersive #pause,
body.movie-immersive #sound{
  opacity:0!important;
  pointer-events:none!important;
  transition:opacity 0.4s ease,transform 0.4s ease!important;
}

.controls-asleep header,
.controls-asleep .destination,
body.movie-immersive header,
body.movie-immersive .destination{
  transform:translateY(-8px);
}

.controls-asleep .photo-actions,
.controls-asleep #pause,
.controls-asleep #sound,
body.movie-immersive .photo-actions,
body.movie-immersive #pause,
body.movie-immersive #sound{
  transform:translateY(8px);
}

.controls-asleep header:focus-within,
.controls-asleep .photo-actions:focus-within{
  opacity:1;
  pointer-events:auto;
  transform:none;
}

/* 拨动时间轮或航行跃迁中：其他界面元素暂时隐去，保护视线纯净 */
body.dial-active header,
body.dial-active .destination,
body.dial-active .photo-actions,
body.dial-active .gesture-hint,
body.dial-active #pause,
body.dial-active #sound,
body.flying header,
body.flying .destination,
body.flying .memory-info,
body.flying .gesture-hint,
body.flying #pause,
body.flying #sound{
  opacity:0!important;
  pointer-events:none!important;
  transition:opacity 0.45s cubic-bezier(0.25, 1, 0.5, 1),transform 0.45s cubic-bezier(0.25, 1, 0.5, 1)!important;
}
body.dial-active header,
body.dial-active .destination,
body.flying header,
body.flying .destination{
  transform:translateY(-8px);
}
body.flying .memory-info{
  transform:translateY(12px);
}
body.dial-active #pause,
body.dial-active #sound,
body.flying #pause,
body.flying #sound{
  transform:translateY(8px);
}
@media(max-width:700px){.memory-plane{width:125vw;height:72svh;top:43%}.portal{mask-image:radial-gradient(ellipse 67% 62% at 50% 48%,#000 27%,#000e 47%,#0008 68%,transparent 92%)}.memory-info{bottom:110px}h1{font-size:23px;letter-spacing:3px}.destination{top:83px}.photo-actions{margin-top:13px}}
@media(max-height:600px){.memory-info{bottom:63px}h1{font-size:20px}.memory-plane{height:90vh}.destination{top:67px}}
@media(prefers-reduced-motion:reduce){header,footer,.destination,.photo-actions{transition:none}}
.photo-credits{display:grid;gap:8px;border-top:1px solid #bbd8ff22;padding-top:15px}.photo-credits a{font-size:10px;color:#a0bdd9;text-decoration:none}.photo-credits a:hover{text-decoration:underline}
/* Personal photography: preserve the complete composition and natural color. */
.memory-photo{object-fit:contain;filter:none;opacity:1}
.portal{mask-image:radial-gradient(ellipse 73% 78% at 50% 47%,#000 52%,#000d 72%,transparent 100%)}
.album-controls{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:12px;pointer-events:auto}
.album-controls button{border:1px solid #c5def329;border-radius:50%;width:28px;height:28px;background:#07132466;color:#d6e8fc;font-size:20px;line-height:20px}
#album-count{font:10px monospace;letter-spacing:2px;color:#adc2dc;min-width:52px}
.memory-info{bottom:91px}.photo-actions{margin-top:5px}
.flying .album-controls{pointer-events:none}
.controls-asleep .album-controls{opacity:0;pointer-events:none}
.controls-asleep .album-controls:focus-within{opacity:1;pointer-events:auto}
@media(max-width:700px){.memory-plane{width:110vw;height:68svh;top:40%}.portal{mask-image:radial-gradient(ellipse 81% 80% at 50% 47%,#000 55%,#000d 78%,transparent 100%)}.memory-info{bottom:89px}h1{font-size:20px}.album-controls{margin-top:8px}}
.memory-plane{width:104vw;max-width:1850px}
@media(max-width:700px){.memory-plane{width:106vw}}
/* Photo-level route: keep nearby stops visible, all 43 available in the map. */
.stop[hidden]{display:none}
#stops{gap:10px}.stop:after{width:7px}
#map-dialog{max-height:85svh;width:min(620px,92vw)}
#map-stops{max-height:60svh;overflow-y:auto;overscroll-behavior:contain}
#map-stops button{padding:10px;gap:15px;flex-shrink:0}
#map-stops img{width:68px;height:48px;object-fit:cover;border-radius:3px;flex-shrink:0}
@media(max-width:700px){#stops{gap:3px;max-width:130px;overflow:hidden}.stop{min-width:14px;padding:10px 1px;font-size:7px}.stop:after{display:none}#map-stops img{width:56px;height:44px}}
/* Gesture hints follow the same quiet auto-hide behavior as the controls. */
.gesture-hint{position:fixed;bottom:76px;left:0;right:0;z-index:5;text-align:center;font-size:9px;letter-spacing:2px;color:#9eb3ce88;pointer-events:none;transition:opacity 1.1s}
.touch-hint{display:none}
.controls-asleep .gesture-hint,.flying .gesture-hint{opacity:0}
#universe{touch-action:pan-y pinch-zoom}
@media(pointer:coarse){.touch-hint{display:inline}.wheel-hint{display:none}}
@media(prefers-reduced-motion:reduce){.gesture-hint{transition:none}}

/* Cinematic prologue: your photography comes before the universe. */
.viewer-header-actions{display:flex;gap:10px}
.speed-control{position:relative;display:inline-flex}
.speed-btn{display:inline-flex;align-items:center;gap:4px;cursor:pointer;white-space:nowrap;transition:background .25s ease,border-color .25s ease}
.speed-btn:hover,.speed-control.open .speed-btn{background:rgba(180,215,255,0.18)!important;border-color:rgba(195,228,255,0.6)!important}
.speed-menu{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%) translateY(-4px);background:rgba(8,16,28,0.95);border:1px solid rgba(185,217,255,0.3);border-radius:4px;padding:4px;display:flex;flex-direction:column;gap:2px;min-width:68px;backdrop-filter:blur(16px);box-shadow:0 10px 30px rgba(0,0,0,0.65),0 0 16px rgba(140,195,255,0.12);z-index:100;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}
.speed-control.open .speed-menu,.speed-menu:not([hidden]){opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}
@media(hover:hover){.speed-control:hover .speed-menu{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}}
.speed-opt{background:none;border:0;color:#8da4c4;font:10px monospace;letter-spacing:1px;padding:6px 10px;border-radius:3px;text-align:center;transition:all .15s ease;cursor:pointer;white-space:nowrap}
.speed-opt:hover{background:rgba(185,217,255,0.18);color:#f0f5fc}
.speed-opt.active{background:rgba(180,215,255,0.25);color:#cbe4ff;font-weight:bold;box-shadow:inset 0 0 8px rgba(150,205,255,0.25)}
@media(max-width:700px){.speed-menu{min-width:60px;padding:3px}.speed-opt{padding:5px 8px;font-size:9px}}
.movie-control{position:relative;display:inline-flex}
.movie-control .movie-btn{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}
.movie-menu-btn{padding:10px 8px;font-size:9px;border-top-left-radius:0;border-bottom-left-radius:0;border-left:1px solid rgba(185,217,255,0.18);line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.movie-control:hover .movie-btn,.movie-control:hover .movie-menu-btn,
.movie-control.open .movie-btn,.movie-control.open .movie-menu-btn{background:rgba(180,215,255,0.18)!important;border-color:rgba(195,228,255,0.6)!important}
.movie-menu{position:absolute;top:calc(100% + 6px);right:0;background:rgba(8,16,28,0.95);border:1px solid rgba(185,217,255,0.3);border-radius:6px;padding:5px;display:flex;flex-direction:column;gap:4px;min-width:180px;backdrop-filter:blur(18px);box-shadow:0 10px 30px rgba(0,0,0,0.7),0 0 16px rgba(140,195,255,0.15);z-index:100;opacity:0;pointer-events:none;transform:translateY(-4px);transition:opacity .2s ease,transform .2s ease}
.movie-control.open .movie-menu,.movie-menu:not([hidden]){opacity:1;pointer-events:auto;transform:translateY(0)}
@media(hover:hover){.movie-control:hover .movie-menu{opacity:1;pointer-events:auto;transform:translateY(0)}}
.movie-opt{display:flex;align-items:center;gap:10px;background:none;border:0;color:#9ab4d3;padding:8px 10px;border-radius:4px;text-align:left;transition:all .18s ease;cursor:pointer}
.movie-opt:hover{background:rgba(185,217,255,0.14);color:#f0f6ff}
.movie-opt.active{background:rgba(180,215,255,0.22);color:#d4e9ff}
.opt-badge{font-size:13px;width:18px;text-align:center;color:#b9dcff}
.opt-body{display:flex;flex-direction:column;gap:2px}
.opt-title{font-size:11px;font-weight:600;letter-spacing:1px}
.opt-sub{font-size:8px;color:#6c85a5;letter-spacing:0.5px}
.movie-opt.active .opt-sub{color:#9abedb}
.movie-btn{display:inline-flex;align-items:center;gap:6px;transition:background .25s ease,border-color .25s ease,box-shadow .25s ease,color .25s ease}
.movie-btn.active{background:rgba(180,215,255,0.22)!important;border-color:rgba(195,228,255,0.75)!important;color:#ffffff!important;box-shadow:0 0 14px rgba(150,205,255,0.45)!important}
.movie-btn .movie-icon{font-size:10px;line-height:1}
@media(max-width:700px){.movie-btn{padding:10px 8px!important;gap:4px!important}.movie-btn .movie-text{font-size:8px}.movie-menu-btn{padding:10px 5px!important;font-size:7px}.movie-menu{min-width:160px;right:-15px}.movie-opt{padding:6px 8px;gap:8px}.opt-title{font-size:10px}.opt-sub{font-size:7px}}
#star-home{position:fixed;inset:0;z-index:5;overflow:hidden;color:#fffaf1}
#star-home[hidden]{display:none}
.home-view #universe,.home-view #memory-info,.home-view .destination,.home-view footer,.home-view .gesture-hint,.home-view .viewer-header-actions{display:none}
.home-view header{z-index:8;opacity:1;pointer-events:auto}
.home-view .brand{color:#f5f2e7;font-size:10px;letter-spacing:2px}
.cinema-frame,.cinema-frame picture,.cinema-frame img,.cinema-shade,.film-grain{position:absolute;inset:0;width:100%;height:100%}
.cinema-frame img{object-fit:cover;object-position:55% 40%;filter:saturate(.83)}
.cinema-shade{background:linear-gradient(90deg,#0a160eab 0%,#0c160e48 39%,transparent 65%),linear-gradient(0deg,#07110fe6 0%,#07110f44 26%,transparent 57%,#07110f44 100%)}
.film-grain{opacity:.08;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 150 150' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='white' filter='url(%23n)' d='M0 0h150v150H0z'/%3E%3C/svg%3E");pointer-events:none}
.opening-index{position:absolute;right:4%;top:39px;display:flex;align-items:center;gap:13px;font:8px monospace;letter-spacing:2px;color:#f6f3eaa6}.record-dot{width:4px;height:4px;border-radius:50%;background:#e8d6b8}.index-line{width:24px;height:1px;background:#f8efdc66}
.opening-copy{position:absolute;left:7%;top:31%;max-width:530px}
.opening-overline{font-size:10px;letter-spacing:5px;color:#eee5d0b3;margin:0 0 23px}
#home-title{font-family:'Songti SC','SimSun',serif;font-size:clamp(40px,4.6vw,70px);font-weight:400;letter-spacing:6px;line-height:1.4;margin:0;color:#faf7ee;text-shadow:0 2px 26px #06150d44}
#home-title br{display:block}
.opening-subtitle{font-size:11px;color:#ecebd1bd;letter-spacing:2px;margin:25px 0 0;line-height:1.8}
.story-enter{display:flex;align-items:center;gap:16px;border:0;background:none;color:#fff5df;padding:12px 0;margin-top:28px;font-size:11px;letter-spacing:3px;cursor:pointer}
.play-circle{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;border:1px solid #f4e3c777;font:20px Georgia;transition:background .3s,transform .3s}
.story-enter:hover .play-circle{background:#e8d7b62a;transform:rotate(12deg)}
.button-line{height:1px;width:42px;background:#e8dab673}
.opening-count{display:block;font-size:8px;letter-spacing:2px;margin:8px 0 0 58px;color:#e4dfc480}
.opening-bottom{position:absolute;left:7%;right:7%;bottom:37px;border-top:1px solid #f0e4c533;padding-top:21px;display:flex;justify-content:space-between;align-items:start;gap:20px}
.opening-bottom>div{position:relative;display:flex;flex-direction:column;gap:9px;min-width:0}
.opening-bottom small{font-size:7px;letter-spacing:2px;color:#e8dec573}
.opening-bottom strong{font-size:12px;letter-spacing:2px;font-weight:400;color:#e8e9df}
.opening-bottom>div>span{font-size:8px;color:#dddcc17a;letter-spacing:1px}
.chapter-current:before{content:'';position:absolute;top:-23px;left:0;width:75%;height:2px;background:#e5d4ad;box-shadow:0 0 12px #f8d9a24d}
.chapter-future{opacity:.6}
.opening-bottom .glass{font-size:8px;letter-spacing:1px;background:none;border:1px solid #e3dbbe33;color:#e3ddc8;padding:10px;white-space:nowrap}
#cinema-transition{position:fixed;inset:0;z-index:20;pointer-events:none;overflow:hidden}#cinema-transition[hidden]{display:none}
.departing-frame{position:absolute;left:50%;top:50%;width:100%;height:100%;overflow:hidden;will-change:transform,opacity;transform-origin:center}
.departing-frame picture,.departing-frame img,.departing-shade{position:absolute;inset:0;width:100%;height:100%}.departing-frame img{object-fit:cover;object-position:55% 40%;filter:saturate(.83)}.departing-shade{background:linear-gradient(90deg,#0a160eab,transparent 65%),linear-gradient(0deg,#07110fe6,transparent 57%)}
#launch-overlay{position:fixed;inset:0;z-index:25;pointer-events:none}#launch-overlay[hidden]{display:none}
#launch-status{position:absolute;bottom:12%;left:0;right:0;text-align:center;font-size:12px;font-family:'SimSun',serif;letter-spacing:4px;color:#f1eadc;text-shadow:0 2px 18px #000}
#skip-launch{position:absolute;right:4%;top:30px;pointer-events:auto;border:1px solid #c9def244;background:#07132377;color:#c9d9eb;padding:11px 16px;font-size:9px;letter-spacing:2px;border-radius:3px}
.cinema-transit #star-home,.cinema-transit header,.cinema-transit footer,.cinema-transit .destination,.cinema-transit #memory-info,.cinema-transit .gesture-hint{opacity:0!important;pointer-events:none!important}
#universe{transition:opacity .8s}.cinema-transit #universe{opacity:0}.cinema-transit #stardust{opacity:0}
@media(max-width:700px){.home-view .brand{font-size:9px}.opening-index{top:32px;right:6%;font-size:6px;letter-spacing:1px;gap:7px}.opening-index .index-line{display:none}.cinema-frame img,.departing-frame img{object-position:50% 30%;filter:saturate(.87)}.cinema-shade{background:linear-gradient(0deg,#04120dec 0%,#0b180fb3 23%,#0a140f12 59%,#07110f38 100%)}.departing-shade{background:linear-gradient(0deg,#04120dec 0%,#0b180fb3 23%,#0a140f12 59%,#07110f38 100%)}.opening-copy{top:auto;bottom:24%;left:7%;right:7%}.opening-overline{font-size:8px;letter-spacing:3px;margin-bottom:13px}#home-title{font-size:36px;line-height:1.4;letter-spacing:4px}.opening-subtitle{font-size:9px;letter-spacing:1px;margin-top:15px}.story-enter{font-size:10px;letter-spacing:2px;margin-top:16px;gap:13px;padding:7px 0}.play-circle{width:36px;height:36px}.opening-count{font-size:7px;letter-spacing:1px;margin:5px 0 0 49px}.opening-bottom{left:7%;right:7%;bottom:28px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding-top:16px}.opening-bottom>div{gap:7px}.opening-bottom small{font-size:5px;letter-spacing:1px}.opening-bottom strong{font-size:9px;letter-spacing:0}.opening-bottom>div>span{font-size:7px;letter-spacing:0}.chapter-current:before{top:-18px}.opening-bottom .glass{grid-column:1/-1;justify-self:end;padding:6px 9px;font-size:7px;margin-top:8px}.viewer-header-actions{gap:6px}.viewer-header-actions .glass{font-size:8px;padding:10px 7px}}
@media(max-height:650px) and (min-width:701px){.opening-copy{top:23%}#home-title{font-size:38px}.opening-overline{margin-bottom:12px}.opening-subtitle{margin-top:12px}.story-enter{margin-top:12px}.opening-bottom{bottom:20px;padding-top:14px}.chapter-current:before{top:-16px}.opening-count{display:none}}
@media(prefers-reduced-motion:reduce){#universe,.play-circle{transition:none}}
@media(min-width:701px) and (max-width:1100px){.opening-copy{top:auto;bottom:24%}#home-title{font-size:42px}.opening-overline{margin-bottom:16px}.opening-subtitle{margin-top:18px}.story-enter{margin-top:19px}.cinema-shade{background:linear-gradient(0deg,#07110fe6,transparent 65%),linear-gradient(90deg,#0a160e70,transparent 65%)}}
.cinema-frame img,.departing-frame img{object-position:50% 57%;filter:saturate(.95)}
@media(max-width:700px){.cinema-frame img,.departing-frame img{object-position:50% 45%;filter:saturate(.95)}.opening-copy{top:13%;bottom:auto}.opening-overline{margin-bottom:10px}#home-title{font-size:30px}.opening-subtitle{margin-top:10px}.story-enter{margin-top:9px}.opening-count{display:none}.cinema-shade,.departing-shade{background:linear-gradient(180deg,#07110f77 0%,#07110f38 26%,transparent 45%,transparent 65%,#07110fd9 100%)}}
#cinema-transition .departing-frame{border:0!important;border-radius:0!important;box-shadow:none!important;filter:none!important;overflow:hidden;background:#c4d7e9}
#cinema-transition .departing-frame picture,#cinema-transition .departing-frame img{border-radius:0}
.passage-clouds{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.cloud-passage #launch-status{opacity:0;pointer-events:none}
.cloud-passage #skip-launch{background:#071b3273;backdrop-filter:blur(12px);border-color:#d6e6f377;color:#fff;text-shadow:0 1px 4px #03152b66}
.cloud-passage #universe{opacity:0;transition:opacity .9s ease}
@media(prefers-reduced-motion:reduce){.cloud-passage #universe{transition:none}}
/* Preserve the original wedding photograph on the cinematic cover. */
.cinema-frame img{filter:none!important;image-rendering:auto}
.cinema-shade{background:linear-gradient(90deg,#07110e66 0%,transparent 62%),linear-gradient(0deg,#07110e88 0%,transparent 42%,#07110e22 100%)}
.film-grain{display:none}
@media(max-width:700px){.cinema-frame img{filter:none!important}}
/* Homepage photo fidelity: original JPG, no blur, no grain, no filter. */
.home-view .cinema-frame img{filter:none!important;opacity:1!important;image-rendering:auto;object-fit:cover;object-position:50% 52%;transform:none!important}
.home-view .cinema-shade{background:linear-gradient(90deg,rgba(5,12,9,.36),rgba(5,12,9,0) 62%),linear-gradient(0deg,rgba(5,12,9,.42),rgba(5,12,9,0) 38%)}
.home-view .film-grain{display:none!important}
@media(max-width:700px){.home-view .cinema-frame img{object-position:50% 48%;filter:none!important}}

/* Chronometer Time Dial - 精密时间刻度轮盘 */
#stops.time-dial{
  position:absolute!important;
  left:50%!important;
  transform:translateX(-50%)!important;
  display:flex!important;
  align-items:center!important;
  width:min(440px,52vw)!important;
  max-width:480px!important;
  height:46px!important;
  overflow:hidden!important;
  gap:0!important;
  padding:0!important;
  background:rgba(3,7,18,0.001)!important;
  border:none!important;
  box-shadow:none!important;
  backdrop-filter:none!important;
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 16%,#000 84%,transparent 100%)!important;
  mask-image:linear-gradient(90deg,transparent 0%,#000 16%,#000 84%,transparent 100%)!important;
  touch-action:none!important;
  user-select:none!important;
  -webkit-user-select:none!important;
  cursor:ew-resize!important;
}
#stops.time-dial:active{cursor:grabbing!important}
.time-dial-needle{
  position:absolute;
  left:50%;
  top:0;
  bottom:0;
  width:2px;
  transform:translateX(-50%);
  background:linear-gradient(180deg,rgba(200,230,255,0.95) 0%,rgba(246,228,204,1) 50%,rgba(160,205,255,0.4) 100%);
  box-shadow:0 0 12px rgba(185,220,255,0.9);
  pointer-events:none;
  z-index:6;
}
.time-dial-needle:before{
  content:'';
  position:absolute;
  top:3px;
  left:50%;
  transform:translateX(-50%) rotate(45deg);
  width:5px;
  height:5px;
  background:#fdf2e2;
  box-shadow:0 0 8px #ffdca6;
}
.time-dial-needle:after{
  content:'';
  position:absolute;
  bottom:3px;
  left:50%;
  transform:translateX(-50%);
  width:4px;
  height:4px;
  border-radius:50%;
  background:#aadcff;
  box-shadow:0 0 7px #7cc0ff;
}
.time-track{
  display:flex!important;
  align-items:center!important;
  height:100%!important;
  will-change:transform;
  pointer-events:none;
}
.stop-tick{
  flex-shrink:0!important;
  width:44px!important;
  min-width:44px!important;
  height:100%!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  border:0!important;
  background:none!important;
  padding:0!important;
  margin:0!important;
  color:#728ca8!important;
  pointer-events:none!important;
  transform-origin:center center;
  transition:color 0.2s ease,transform 0.2s ease,opacity 0.2s ease!important;
}
.stop-tick:after,.stop-tick:before{
  display:none!important;
}
.tick-label{
  font:10px monospace;
  letter-spacing:1px;
  color:inherit;
  line-height:1;
  margin-bottom:4px;
  pointer-events:none;
}
.tick-mark{
  width:1px;
  height:6px;
  background:rgba(165,195,230,0.35);
  transition:all 0.25s ease;
  pointer-events:none;
}
.tick-mark.major{
  height:9px;
  background:rgba(205,230,255,0.6);
  width:1.2px;
}
.stop-tick.active{
  color:#ffffff!important;
}
.stop-tick.active .tick-label{
  color:#ffffff!important;
  font-weight:bold;
  text-shadow:0 0 12px rgba(195,225,255,0.95),0 0 24px rgba(160,205,255,0.6);
}
.stop-tick.active .tick-mark{
  height:13px!important;
  background:#d8eeff!important;
  box-shadow:0 0 9px #85caff,0 0 16px rgba(133,202,255,0.5)!important;
  width:1.5px!important;
}
@media(max-width:700px){
  #stops.time-dial{
    width:min(240px,calc(100vw - 110px))!important;
    max-width:250px!important;
    height:42px!important;
    border:none!important;
    box-shadow:none!important;
    -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 14%,#000 86%,transparent 100%)!important;
    mask-image:linear-gradient(90deg,transparent 0%,#000 14%,#000 86%,transparent 100%)!important;
  }
  .stop-tick{
    width:38px!important;
    min-width:38px!important;
  }
  .tick-label{
    font-size:9px!important;
    margin-bottom:3px!important;
  }
  .tick-mark{
    height:5px!important;
  }
  .tick-mark.major{
    height:8px!important;
  }
  .stop-tick.active .tick-mark{
    height:11px!important;
  }
}

