@font-face{font-family:Source Han Sans;src:url('./assets/fonts/SourceHanSansSC-subset.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#0d0d0d;color:#e4e4e4;font-family:'Source Han Sans',sans-serif;font-weight:400}body{touch-action:none}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:1px solid #b1b1b1;outline-offset:5px}#experience,#scene,#fallback,.vignette{position:absolute;inset:0;width:100%;height:100%}#scene{display:block;cursor:grab}#scene:active{cursor:grabbing}.vignette{pointer-events:none;background:radial-gradient(ellipse at 50% 49%,transparent 34%,#05050530 100%),linear-gradient(0deg,#07070790 0%,transparent 26%,transparent 78%,#07070748 100%);z-index:1}.hud{position:absolute;z-index:3;transition:opacity .5s,transform .5s}.top{left:28px;right:28px;top:max(28px,env(safe-area-inset-top));display:flex;align-items:center;gap:17px}.wordmark{color:#e3e3e3;text-decoration:none;display:flex;flex-direction:column;gap:2px}.brand{font-size:22px;letter-spacing:.15em;line-height:1;font-weight:700}.descriptor{font-size:7px;letter-spacing:.32em;color:#999999}.weather{font-size:10px;letter-spacing:.16em;margin-left:auto;color:#c3c3c3;display:flex;align-items:center;gap:7px}.weather i{width:4px;height:4px;border-radius:50%;background:#aaaaaa;box-shadow:0 0 10px #d8d8d850}.icon-button{display:grid;place-items:center;background:none;border:0;color:#c2c2c2;width:32px;height:36px;padding:6px;margin-right:-6px}.icon-button svg{width:18px;height:18px}.intro{left:29px;top:max(110px,calc(env(safe-area-inset-top) + 82px));pointer-events:none}.eyebrow{font-size:8px;letter-spacing:.23em;font-weight:500;color:#9f9f9f}.intro p{font-size:20px;line-height:1.85;letter-spacing:.12em;font-weight:300;margin:12px 0}.intro.faded{opacity:0;transform:translateY(-7px)}.bottom{bottom:max(27px,calc(env(safe-area-inset-bottom) + 14px));left:50%;width:min(calc(100% - 42px),410px);transform:translateX(-50%)}.view-caption{display:flex;justify-content:space-between;align-items:center;margin:0 4px 13px;font-size:10px;letter-spacing:.13em;color:#b5b5b5}#gesture-hint{font-size:9px;letter-spacing:.08em;color:#808080}.view-controls{display:flex;align-items:center;background:#151515b0;border:1px solid #c6c6c61c;border-radius:9px;padding:5px;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:0 8px 32px #0003;gap:3px}.view-controls button{color:#aeaeae;flex:1;min-height:43px;border:0;background:transparent;border-radius:5px;white-space:nowrap;font-size:11px;letter-spacing:.09em;transition:background .3s,color .3s}.view-controls button.active{color:#e7e7e7;background:#c3c3c312;box-shadow:inset 0 0 0 1px #cfcfcf1c}.view-controls button:hover{color:#fff;background:#ffffff0b}.loading{position:absolute;inset:0;background:#0d0d0d;z-index:10;display:flex;align-items:center;justify-content:center;gap:12px;font-size:11px;letter-spacing:.15em;color:#a7a7a7;transition:opacity .8s}.loading-mark{width:6px;height:6px;background:#a2a2a2;box-shadow:0 0 22px #9f9f9f66;border-radius:50%;animation:breathe 1.6s infinite}@keyframes breathe{50%{opacity:.3}}.loading.done{opacity:0;pointer-events:none}.fallback-note{position:absolute;left:0;right:0;bottom:118px;z-index:2;text-align:center;color:#969696;font-size:9px;letter-spacing:.05em}#restore-ui{position:absolute;bottom:max(26px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:4;border:1px solid #bfbfbf22;background:#13131370;color:#dadada;padding:12px 20px;border-radius:40px;font-size:10px;backdrop-filter:blur(10px)}body.clean .hud{opacity:0;pointer-events:none}.toast{position:absolute;top:90px;left:50%;transform:translateX(-50%);background:#ffffff08;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid #ffffff20;box-shadow:0 4px 18px #00000026;padding:9px 14px;color:#d3d3d3;z-index:5;border-radius:20px;font-size:10px;white-space:nowrap}.no-script{position:absolute;inset:40% 10%;text-align:center;font-size:13px;line-height:2}[hidden]{display:none!important}@media(min-width:800px){.top{left:44px;right:44px;top:36px}.intro{left:45px;top:132px}.intro p{font-size:25px}.bottom{bottom:32px;width:405px}.weather{font-size:11px}.brand{font-size:26px}.descriptor{font-size:8px}.view-controls button{min-height:45px;font-size:12px}.fallback-note{bottom:128px}}@media(max-height:660px){.intro{top:88px}.intro p{font-size:16px}.bottom{bottom:max(16px,env(safe-area-inset-bottom))}.view-controls button{min-height:40px}.top{top:max(20px,env(safe-area-inset-top))}.view-caption{margin-bottom:9px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.hotspots{inset:0;pointer-events:none}.hotspot{position:absolute;transform:translate(-50%,-50%);height:48px;min-width:64px;padding:0 12px;display:flex;gap:7px;align-items:center;justify-content:center;border:0;background:transparent;color:#e1e1e1;font-size:10px;letter-spacing:.07em;pointer-events:auto;text-shadow:0 1px 8px #000}.spot-ring{width:7px;height:7px;border:1px solid #d4d4d4;border-radius:50%;background:#cbcbcb26;box-shadow:0 0 0 4px #0f0f0f38,0 0 14px #d5d5d533;transition:transform .2s}.spot-label{padding:5px 7px;background:#00000014;border:1px solid #d3d3d31b;border-radius:3px;backdrop-filter:blur(6px)}.hotspot:hover .spot-ring{transform:scale(1.45)}.hotspot:hover .spot-label{background:#ffffff0c}.back-overall{top:max(84px,calc(env(safe-area-inset-top) + 59px));right:27px;color:#bbbbbb;background:#10101080;border:1px solid #bababa23;padding:10px 12px;border-radius:5px;font-size:10px;min-height:42px;letter-spacing:.08em;backdrop-filter:blur(9px)}body.fallback-mode .hotspots,body.fallback-mode .back-overall{display:none}body.fallback-mode #gesture-hint{visibility:hidden}body.fallback-mode .view-controls button[data-view]:not([data-view=street]){opacity:.35;cursor:default}@media(min-width:800px){.back-overall{right:44px;top:98px}}

.brand-logo{display:block;width:104px;height:auto;object-fit:contain}@media(min-width:800px){.brand-logo{width:124px}}

/* Night weather and environmental sound: small controls, no settings screen. */
.weather-switch{margin-left:auto;display:flex;align-items:center;gap:2px;padding:3px;background:#12121252;border:1px solid #c0c0c01a;border-radius:6px;backdrop-filter:blur(12px)}.weather-switch button{border:0;background:transparent;color:#a8a8a8;padding:9px 8px;min-height:36px;min-width:36px;font-size:10px;letter-spacing:.05em;border-radius:3px;white-space:nowrap}.weather-switch button.active{color:#e6e6e6;background:#d1d1d118}.weather-switch button:hover{color:#f5f5f5}.ambient-control{position:relative}.ambient-control .icon-button{margin-right:0;width:32px;height:40px}.sound-on{display:none}.ambient-control.is-on .sound-on{display:initial}.ambient-control.is-on .sound-off{display:none}.ambient-control.is-on #ambient-toggle{color:#c6c6c6}.ambient-volume-wrap{position:absolute;right:0;top:48px;display:none;grid-template-columns:auto 82px;align-items:center;gap:6px 9px;padding:10px 12px;border:1px solid #c0c0c01b;border-radius:6px;background:#161616cc;backdrop-filter:blur(14px);color:#adadad;white-space:nowrap;box-shadow:0 6px 24px #0002}.ambient-control.is-open .ambient-volume-wrap{display:grid}.ambient-volume-wrap label{font-size:9px;letter-spacing:.06em}.ambient-volume-wrap input{margin:0;accent-color:#b3b3b3;width:82px;height:20px;cursor:pointer;touch-action:pan-x}.ambient-volume-wrap input:focus-visible{outline:1px solid #b1b1b1;outline-offset:3px}#ambient-space{grid-column:1/-1;font-size:8px;letter-spacing:.06em;color:#858585}.top{gap:10px}.back-overall{top:max(86px,calc(env(safe-area-inset-top) + 62px))}body[data-ambient=on] .back-overall{top:max(208px,calc(env(safe-area-inset-top) + 184px))}@media(max-width:430px){.top{left:20px;right:20px;gap:6px}.brand-logo{width:88px}.weather-switch button{padding:9px 6px;min-width:33px}.top>#hide-ui{width:27px;margin-right:-5px}.ambient-control .icon-button{width:28px}.ambient-volume-wrap{right:-30px}.back-overall{right:20px;top:max(86px,calc(env(safe-area-inset-top) + 62px))}}@media(min-width:800px){.weather-switch button{font-size:11px;padding:8px 11px}.back-overall{top:98px}body[data-ambient=on] .back-overall{top:212px}}@media(max-height:660px){.ambient-volume-wrap{top:42px}.back-overall{top:82px}body[data-ambient=on] .back-overall{top:202px}.intro{top:106px}}

/* Floating glass view switcher. Blur is confined to this small control. */
.bottom{width:min(calc(100% - 24px),500px)}
.view-controls{display:block;position:relative;isolation:isolate;overflow-x:auto;overflow-y:hidden;padding:6px;border:1px solid #fafafa2c;border-radius:999px;background:linear-gradient(160deg,#ffffff0a,#ffffff02 55%),#00000024;box-shadow:inset 0 1px 0 #ffffff10,0 8px 28px #00000030;backdrop-filter:none;-webkit-backdrop-filter:none;scrollbar-width:none;overscroll-behavior-x:contain;scroll-padding-inline:6px;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
.view-controls::-webkit-scrollbar{display:none}
.view-track{position:relative;display:flex;gap:3px;width:100%;min-width:430px}
.view-controls button{position:relative;z-index:1;flex:1 1 0;min-width:0;min-height:44px;padding:11px 8px;border:0;border-radius:999px;background:transparent;color:#c9c9c9;font-size:11px;letter-spacing:.05em;white-space:nowrap;transition:color .24s;touch-action:none}
.view-controls button.active{color:#f8f8f8;background:#ffffff1c;box-shadow:inset 0 0 0 1px #ffffff20}
.view-controls.has-slider button.active{background:transparent;box-shadow:none}
.view-controls button:focus-visible{outline:1px solid #efefef;outline-offset:-3px}
.view-controls button:disabled{cursor:default}
.view-selection{position:absolute;z-index:0;inset:0 auto auto 0;width:0;height:100%;border:1px solid #ffffff30;border-radius:999px;background:linear-gradient(155deg,#ffffff25,#ffffff0c 68%);box-shadow:inset 0 1px 0 #ffffff24,inset 0 -1px 0 #ffffff08,0 2px 8px #00000012;pointer-events:none;opacity:0;transform:translate3d(0,0,0);transition:transform .46s cubic-bezier(.22,.8,.25,1),width .46s cubic-bezier(.22,.8,.25,1),opacity .2s}
.view-controls.has-slider .view-selection{opacity:1}
.view-controls.is-dragging,.view-controls.is-dragging button{cursor:grabbing}
.view-controls.is-dragging .view-selection{transition:none}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.view-controls{background:linear-gradient(160deg,#ffffff0a,#ffffff02 55%),#ffffff02;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}}
@media(hover:hover){.view-controls button:hover{color:#fff;background:#ffffff08}.view-controls.has-slider button.active:hover{background:transparent}}
@media(min-width:800px){.view-controls button{min-height:46px;font-size:12px}}
@media(max-height:660px){.view-controls button{min-height:44px}}
@media(prefers-reduced-motion:reduce){.view-controls{scroll-behavior:auto}.view-selection,.view-controls button{transition:none!important}}
@media(prefers-reduced-transparency:reduce){.view-controls{background:#222222;backdrop-filter:none;-webkit-backdrop-filter:none}.view-selection{background:#434343}}
@media(forced-colors:active){.view-controls{border:1px solid CanvasText;background:Canvas;backdrop-filter:none;-webkit-backdrop-filter:none}.view-selection{background:Highlight;border-color:Highlight}.view-controls.has-slider button.active{color:HighlightText}.view-controls button{color:ButtonText}}

/* Compact shared sound control: independently adjustable music and ambience. */
#music-status,#audio-retry{grid-column:1/-1;font-size:9px;letter-spacing:.02em}#music-status{color:#b5b5b5;white-space:normal;max-width:188px;line-height:1.5}#audio-retry{border:1px solid #c0c0c033;border-radius:4px;color:#e6e6e6;background:#d1d1d114;min-height:30px;padding:4px 8px;text-align:center}#audio-retry[hidden]{display:none}.ambient-volume-wrap{grid-template-columns:auto 90px;max-width:min(240px,calc(100vw - 40px))}.ambient-volume-wrap input{width:90px}.ambient-control.is-open:not(.is-on) #ambient-toggle{color:#b5b5b5}

/* The same small frosted capsules for weather, sound and navigation actions. */
.weather-switch,.top .icon-button,.back-overall,#restore-ui,.ambient-volume-wrap{border:1px solid #fafafa2c;background:linear-gradient(160deg,#ffffff0a,#ffffff02 55%),#00000024;box-shadow:inset 0 1px 0 #ffffff10,0 8px 28px #00000030;backdrop-filter:none;-webkit-backdrop-filter:none}
.weather-switch{position:relative;isolation:isolate;flex:none;gap:2px;padding:4px;border-radius:999px}
.weather-switch button{position:relative;z-index:1;min-width:40px;min-height:38px;padding:8px;border-radius:999px;color:#c9c9c9;transition:color .24s}
.weather-switch button.active{color:#f8f8f8;background:#ffffff1c;box-shadow:inset 0 0 0 1px #ffffff20}
.weather-switch.has-slider button.active{background:transparent;box-shadow:none}
.weather-selection{position:absolute;inset:0 auto auto 0;z-index:0;width:0;height:0;opacity:0;pointer-events:none;border:1px solid #ffffff30;border-radius:999px;background:linear-gradient(155deg,#ffffff25,#ffffff0c 68%);box-shadow:inset 0 1px 0 #ffffff24,inset 0 -1px 0 #ffffff08,0 2px 8px #00000012;transition:transform .46s cubic-bezier(.22,.8,.25,1),width .46s cubic-bezier(.22,.8,.25,1),height .46s cubic-bezier(.22,.8,.25,1),opacity .2s}
.weather-switch.has-slider .weather-selection{opacity:1}
.top .icon-button,.top>#hide-ui{flex:none;width:40px;height:40px;margin-right:0;padding:10px;border-radius:50%;color:#c9c9c9;transition:color .24s,border-color .24s}
.top .ambient-control{flex:none}
.ambient-control.is-on #ambient-toggle{color:#e2e2e2;border-color:#f3f3f34d}
.back-overall,#restore-ui{border-radius:999px;min-height:42px;color:#e3e3e3;padding:10px 15px}
.ambient-volume-wrap{border-radius:18px;color:#c9c9c9}
#music-status{color:#cbcbcb}
#ambient-space{color:#b3b3b3}
#audio-retry{border-radius:999px;color:#f3f3f3;background:#ffffff12;border-color:#ffffff26}
.weather-switch button:focus-visible,.top .icon-button:focus-visible,.back-overall:focus-visible,#restore-ui:focus-visible,#audio-retry:focus-visible{outline:1px solid #efefef;outline-offset:3px}
.weather-switch button:focus-visible{outline-offset:-3px}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.weather-switch,.top .icon-button,.back-overall,#restore-ui,.ambient-volume-wrap{background:linear-gradient(160deg,#ffffff0a,#ffffff02 55%),#ffffff02;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.ambient-volume-wrap{background:linear-gradient(160deg,#ffffff0a,#ffffff02 55%),#ffffff04}}
@media(hover:hover){.weather-switch button:hover{color:#fff;background:#ffffff08}.weather-switch.has-slider button.active:hover{background:transparent}.top .icon-button:hover,.back-overall:hover,#restore-ui:hover{color:#fff;border-color:#ffffff45}}
@media(max-width:430px){.weather-switch button{min-width:38px;padding:8px 6px}.top .icon-button,.top>#hide-ui{width:40px;height:40px}}
@media(max-width:360px){.top{left:16px;right:16px;gap:4px}.brand-logo{width:72px}.weather-switch button{min-width:36px;padding:8px 6px}.ambient-volume-wrap{right:-30px}}
@media(prefers-reduced-motion:reduce){.weather-selection,.weather-switch button,.top .icon-button{transition:none!important}}
@media(prefers-reduced-transparency:reduce){.weather-switch,.top .icon-button,.back-overall,#restore-ui,.ambient-volume-wrap{background:#222222;backdrop-filter:none;-webkit-backdrop-filter:none}.weather-selection{background:#434343}}
@media(forced-colors:active){.weather-switch,.top .icon-button,.back-overall,#restore-ui,.ambient-volume-wrap{background:Canvas;border-color:CanvasText;backdrop-filter:none;-webkit-backdrop-filter:none}.weather-selection{background:Highlight;border-color:Highlight}.weather-switch button{color:ButtonText}.weather-switch.has-slider button.active{color:HighlightText}}

/* Leave room for the optional browser-blocked retry row. */
body[data-ambient=on][data-sound-retry=true] .back-overall{top:max(250px,calc(env(safe-area-inset-top) + 226px))}@media(min-width:800px){body[data-ambient=on][data-sound-retry=true] .back-overall{top:256px}}@media(max-height:660px){body[data-ambient=on][data-sound-retry=true] .back-overall{top:240px}}


/* Neutral, transparent range controls: override platform accent fills too. */
.ambient-volume-wrap input[type=range]{appearance:none;-webkit-appearance:none;height:20px;border:0;padding:0;background:transparent;accent-color:#e8e8e8;color:#e8e8e8}
.ambient-volume-wrap input[type=range]::-webkit-slider-runnable-track{height:3px;border:1px solid #ffffff24;border-radius:999px;background:#ffffff30}
.ambient-volume-wrap input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:12px;height:12px;margin-top:-5.5px;border:1px solid #ffffff80;border-radius:50%;background:#ffffffe6;box-shadow:0 1px 5px #00000040}
.ambient-volume-wrap input[type=range]::-moz-range-track{height:3px;border:1px solid #ffffff24;border-radius:999px;background:#ffffff30}
.ambient-volume-wrap input[type=range]::-moz-range-progress{height:3px;border:0;border-radius:999px;background:#ffffff65}
.ambient-volume-wrap input[type=range]::-moz-range-thumb{width:12px;height:12px;border:1px solid #ffffff80;border-radius:50%;background:#ffffffe6;box-shadow:0 1px 5px #00000040}
.ambient-control.is-on #ambient-toggle{color:#fff;border-color:#ffffff4d}
.view-caption,.weather-switch button,.view-controls button,.top .icon-button,.back-overall,#restore-ui,.ambient-volume-wrap,.toast{text-shadow:0 1px 5px #00000030}
@media(forced-colors:active){.ambient-volume-wrap input[type=range]{forced-color-adjust:auto;accent-color:CanvasText}.ambient-volume-wrap input[type=range]::-webkit-slider-runnable-track{background:Canvas;border-color:CanvasText}.ambient-volume-wrap input[type=range]::-webkit-slider-thumb{background:CanvasText;border-color:Canvas}.ambient-volume-wrap input[type=range]::-moz-range-track{background:Canvas;border-color:CanvasText}.ambient-volume-wrap input[type=range]::-moz-range-thumb{background:CanvasText;border-color:Canvas}.ambient-volume-wrap input[type=range]::-moz-range-progress{background:CanvasText}}

/* A quiet welcome follows the real scene loader, without an entrance gate. */
.loading{flex-direction:column;gap:17px;text-align:center;padding:24px}
.loading-welcome{font-family:'Source Han Sans',sans-serif;font-size:clamp(15px,3.8vw,22px);font-weight:400;letter-spacing:.1em;line-height:1.7;color:#dedede;margin:0}
.loading-listen{display:inline-flex;font-family:'Source Han Sans',sans-serif;font-size:12px;font-weight:400;letter-spacing:.17em;line-height:1.6;color:#ababab}
.loading-dot{animation:listen-loading-dot 1.8s ease-in-out infinite;opacity:.25}
.loading-dot:nth-child(3){animation-delay:.2s}.loading-dot:nth-child(4){animation-delay:.4s}
@keyframes listen-loading-dot{0%,80%,100%{opacity:.25}35%{opacity:1}}
.loading-line{display:block;flex:none;width:76px;height:1px;margin-top:-7px;overflow:hidden;background:#ffffff1c}.loading-line i{display:block;width:32%;height:100%;background:#d4d4d4;animation:listen-loading-line 2.2s cubic-bezier(.4,0,.2,1) infinite;transform:translateX(-120%)}
@keyframes listen-loading-line{0%{transform:translateX(-120%);opacity:.3}45%{opacity:.85}100%{transform:translateX(420%);opacity:.3}}

/* Poster UI stays neutral glass; the original artwork retains its own colors. */
.poster-entry,.poster-glass{font-family:'Source Han Sans',sans-serif;font-weight:400;border:1px solid #fafafa2c;background:linear-gradient(160deg,#ffffff0a,#ffffff02 55%),#00000024;box-shadow:inset 0 1px 0 #ffffff10,0 8px 28px #00000024;color:#e3e3e3;border-radius:999px;text-decoration:none;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.poster-entry{display:flex;align-items:center;justify-content:center;gap:8px;left:28px;bottom:max(121px,calc(env(safe-area-inset-bottom) + 108px));padding:9px 14px;font-size:10px;letter-spacing:.09em;min-height:42px}
.poster-entry svg{width:17px;height:17px;flex:none}.poster-entry:focus-visible,.poster-glass:focus-visible{outline:1px solid #efefef;outline-offset:4px}
.poster-dialog{position:fixed;inset:0;max-width:none;max-height:none;width:100%;height:100%;height:100dvh;margin:0;padding:0;border:0;background:linear-gradient(145deg,#ffffff07,#ffffff02),#11111196;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);color:#e7e7e7;font-family:'Source Han Sans',sans-serif;font-weight:400;overscroll-behavior:contain;touch-action:pan-x pan-y pinch-zoom;z-index:20}
.poster-dialog::backdrop{background:#00000042}
.poster-shell{display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden;padding:max(23px,env(safe-area-inset-top)) 0 max(22px,env(safe-area-inset-bottom));--poster-card-width:min(77vw,390px,calc((100dvh - 210px)*.749))}
.poster-header{display:flex;justify-content:space-between;align-items:center;flex:none;padding:0 26px;gap:16px;min-height:44px}
.poster-heading{display:flex;align-items:baseline;gap:16px;min-width:0}.poster-heading h1{font-family:'Source Han Sans',sans-serif;font-weight:400;font-size:15px;letter-spacing:.12em;margin:0}.poster-heading #poster-count{color:#adadad;font-size:10px;letter-spacing:.12em;font-variant-numeric:tabular-nums;white-space:nowrap}
.poster-close,.poster-arrow{width:44px;height:44px;display:grid;place-items:center;flex:none;padding:11px}.poster-close svg,.poster-arrow svg{width:20px;height:20px}.poster-hint{flex:none;margin:9px 26px 0;color:#929292;font-size:10px;letter-spacing:.06em;line-height:1.7}
.poster-stage{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center}
.poster-track{position:relative;display:flex;align-items:center;gap:28px;flex:1;min-height:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-inline:calc((100% - var(--poster-card-width))/2);padding:20px calc((100% - var(--poster-card-width))/2) 12px;touch-action:pan-x;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.poster-track::-webkit-scrollbar{display:none}.poster-track:focus-visible{outline:0}.poster-track:focus-visible .poster-card:has([aria-current=true]) .poster-image-button{outline:1px solid #d0d0d0;outline-offset:5px}
.poster-card{flex:0 0 var(--poster-card-width);width:var(--poster-card-width);min-width:0;max-height:100%;margin:0;scroll-snap-align:center;scroll-snap-stop:normal}
.poster-image-button{position:relative;display:block;width:100%;aspect-ratio:var(--poster-aspect,.75);padding:0;overflow:hidden;border:1px solid #ffffff1a;border-radius:3px;background:#ffffff04;box-shadow:0 12px 45px #00000038;cursor:zoom-in;touch-action:pan-x;color:#b7b7b7;font-family:'Source Han Sans',sans-serif}
.poster-image-button img{display:block;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .24s ease;user-select:none;-webkit-user-select:none}.poster-card.is-loaded img{opacity:1}.poster-card figcaption{color:#c6c6c6;text-align:center;font-family:'Source Han Sans',sans-serif;font-size:11px;font-weight:400;letter-spacing:.05em;line-height:1.7;margin:15px 3px 0;min-height:38px;display:flex;justify-content:center;align-items:flex-start}.poster-image-error{display:none;position:absolute;inset:45% 20px auto;font-size:10px;line-height:1.8}.poster-card.has-error .poster-image-error{display:block}
.poster-footer{position:relative;flex:none;display:flex;align-items:center;justify-content:center;gap:12px;min-height:46px;margin-top:5px;padding:0 26px}.poster-pagination{display:flex;gap:12px}.poster-arrow:disabled{opacity:.3;cursor:default}.poster-back,.poster-original{min-height:40px;padding:10px 14px;font-size:10px;letter-spacing:.06em;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap}.poster-original svg{width:13px;height:13px}
.poster-expanded{display:flex;flex:1;min-height:0;align-items:center;justify-content:center;flex-direction:column;padding:19px 24px 8px;touch-action:pan-x pan-y pinch-zoom}.poster-expanded img{display:block;min-width:0;min-height:0;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;flex:1;opacity:0;transition:opacity .24s ease;box-shadow:0 14px 50px #0003}.poster-expanded.is-loaded img{opacity:1}.poster-expanded p{flex:none;color:#d0d0d0;font-size:11px;letter-spacing:.05em;text-align:center;line-height:1.7;margin:12px 0 0;max-width:680px}.poster-dialog.is-enlarged .poster-stage{overflow:hidden}
.poster-message{position:absolute;z-index:2;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;flex-direction:column;gap:16px;max-width:calc(100% - 48px);text-align:center;color:#b7b7b7;font-size:11px;letter-spacing:.05em;line-height:1.8}.poster-message button{min-height:40px;padding:9px 20px;font-size:11px}
body.poster-gallery-open{touch-action:auto}body.poster-gallery-open #scene,body.poster-gallery-open #fallback{pointer-events:none}body.poster-gallery-open .hud{pointer-events:none}
@media(hover:hover){.poster-entry:hover,.poster-glass:not(:disabled):hover{border-color:#ffffff50;color:#fff;background-color:#ffffff08}.poster-image-button:hover{border-color:#ffffff50}}
@media(min-width:800px){.poster-entry{left:44px;bottom:128px;font-size:11px}.poster-shell{padding-top:max(30px,env(safe-area-inset-top));padding-bottom:max(28px,env(safe-area-inset-bottom))}.poster-header{padding:0 44px}.poster-heading h1{font-size:17px}.poster-hint{margin-left:44px}.poster-track{gap:48px}.poster-expanded{padding:16px 54px 12px}.poster-footer{gap:20px}}
@media(max-width:430px){.poster-entry{left:20px}.poster-header{padding:0 20px}.poster-hint{margin-left:20px;font-size:9px}.poster-track{gap:21px}.poster-expanded{padding:17px 14px 9px}.poster-footer{gap:10px;padding:0 14px}.poster-back,.poster-original{padding:10px 12px}.poster-pagination{gap:9px}}
@media(max-height:660px){.poster-entry{bottom:max(112px,calc(env(safe-area-inset-bottom) + 98px))}.poster-shell{--poster-card-width:min(62vw,340px,calc((100dvh - 176px)*.749));padding-top:max(12px,env(safe-area-inset-top));padding-bottom:max(10px,env(safe-area-inset-bottom))}.poster-hint{margin-top:3px}.poster-track{padding-top:12px;padding-bottom:0}.poster-card figcaption{margin-top:9px;min-height:32px;font-size:10px}.poster-expanded{padding-top:8px;padding-bottom:4px}.poster-expanded p{font-size:10px;margin-top:8px}.poster-footer{margin-top:0}}
@media(prefers-reduced-motion:reduce){.loading-dot{animation:none;opacity:.8}.loading-line i{width:100%;animation:none;transform:none;opacity:.5}.poster-track{scroll-behavior:auto}.poster-image-button img,.poster-expanded img{transition:none}}
@media(prefers-reduced-transparency:reduce){.poster-entry,.poster-glass,.poster-dialog{background:#222;backdrop-filter:none;-webkit-backdrop-filter:none}}
@media(forced-colors:active){.poster-entry,.poster-glass,.poster-dialog{background:Canvas;color:CanvasText;border-color:CanvasText;backdrop-filter:none;-webkit-backdrop-filter:none}.poster-heading #poster-count,.poster-hint,.poster-card figcaption,.poster-expanded p{color:CanvasText}.poster-image-button{border-color:CanvasText}.poster-image-button img,.poster-expanded img{forced-color-adjust:none}}

/* All six camera views remain visible on phones; no horizontal swipe needed. */
@media(max-width:640px){
  body{--mobile-view-bottom:max(16px,calc(env(safe-area-inset-bottom) + 12px))}
  .bottom{position:fixed;bottom:var(--mobile-view-bottom);width:min(calc(100% - 24px),500px)}
  .view-caption{line-height:16px;margin-bottom:10px;white-space:nowrap}
  .view-controls{overflow:hidden;border-radius:28px;cursor:default;touch-action:manipulation}
  .view-track{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:44px;min-width:0;gap:3px}
  .view-controls button{height:44px;min-height:44px;padding:8px 6px;font-size:12px;line-height:20px;touch-action:manipulation}
  .poster-entry{position:fixed;bottom:calc(var(--mobile-view-bottom) + 143px);min-height:44px}
  .fallback-note{position:fixed;bottom:calc(var(--mobile-view-bottom) + 196px)}
}
