:root{color-scheme:dark;--color-bg: oklch(11% .012 345);--color-surface: oklch(18% .018 345 / .76);--color-surface-solid: oklch(18% .018 345);--color-surface-deep: oklch(13% .012 345 / .9);--color-ink: oklch(94% .018 78);--color-ink-muted: oklch(75% .018 75);--color-ink-soft: oklch(94% .018 78 / .72);--color-accent: oklch(51% .17 18);--color-accent-ink: oklch(97% .012 78);--color-pink: oklch(76% .105 358);--color-cyan: oklch(78% .065 188);--color-gold: oklch(75% .095 78);--color-focus: oklch(84% .09 188);--color-error: oklch(63% .2 22);--color-success: oklch(75% .11 162);--color-rule: oklch(94% .018 78 / .18);--color-scrim: oklch(4% .004 345 / .76);--color-black: oklch(5% .008 345);--color-rose-45: rgba(227, 67, 95, .45);--color-cyan-18: rgba(131, 196, 200, .18);--color-accent-28: rgba(189, 45, 73, .28);--color-loading-track: #22242a;--color-rose-9: rgba(227, 67, 95, .9);--color-light-16: rgba(255, 255, 255, .16);--color-shadow-42: rgba(0, 0, 0, .42);--color-shadow-3: rgba(0, 0, 0, .3);--color-light-12: rgba(255, 255, 255, .12);--color-rose-58: rgba(227, 67, 95, .58);--color-paper-24: rgba(244, 241, 233, .24);--color-glass-72: rgba(10, 11, 14, .72);--color-shadow-32: rgba(0, 0, 0, .32);--color-light-045: rgba(255, 255, 255, .045);--color-pink-7: rgba(241, 135, 174, .7);--color-pink-18: rgba(241, 135, 174, .18);--color-alert-solid: #ff395f;--color-alert-92: rgba(255, 57, 95, .92);--color-alert-52: rgba(255, 57, 95, .52);--color-cyan-8: rgba(131, 196, 200, .8);--color-alert-16: rgba(255, 57, 95, .16);--color-alert-95: rgba(255, 57, 95, .95);--color-glass-76: rgba(10, 11, 14, .76);--color-paper-28: rgba(244, 241, 233, .28);--color-control-42: rgba(18, 19, 23, .42);--color-light-025: rgba(255, 255, 255, .025);--color-control-68: rgba(18, 19, 23, .68);--color-paper-74: rgba(244, 241, 233, .74);--color-rose-64: rgba(227, 67, 95, .64);--color-shadow-4: rgba(0, 0, 0, .4);--color-pink-88: rgba(241, 135, 174, .88);--color-action-warm-68: rgba(111, 34, 55, .68);--color-rose-88: rgba(227, 67, 95, .88);--color-cyan-42: rgba(131, 196, 200, .42);--color-paper-26: rgba(244, 241, 233, .26);--color-panel-warm-9: rgba(12, 13, 16, .9);--color-shadow-48: rgba(0, 0, 0, .48);--color-paper-2: rgba(244, 241, 233, .2);--color-light-055: rgba(255, 255, 255, .055);--color-rose-36: rgba(227, 67, 95, .36);--color-shadow-64: rgba(0, 0, 0, .64);--color-pink-48: rgba(241, 135, 174, .48);--color-control-96: rgba(18, 19, 23, .96);--color-shadow-58: rgba(0, 0, 0, .58);--color-cyan-12: rgba(131, 196, 200, .12);--color-pink-08: rgba(241, 135, 174, .08);--color-panel-warm-92: rgba(12, 13, 16, .92);--color-cyan-78: rgba(131, 196, 200, .78);--color-light-1: rgba(255, 255, 255, .1);--color-light-72: rgba(255, 255, 255, .72);--color-light-06: rgba(255, 255, 255, .06);--color-cyan-24: rgba(131, 196, 200, .24);--color-cyan-34: rgba(131, 196, 200, .34);--color-panel-warm-84: rgba(12, 13, 16, .84);--color-paper-4: rgba(244, 241, 233, .4);--color-paper-08: rgba(244, 241, 233, .08);--color-clock-face: #17181c;--color-shadow-52: rgba(0, 0, 0, .52);--color-cyan-08: rgba(131, 196, 200, .08);--color-paper-62: rgba(244, 241, 233, .62);--color-rose-82: rgba(227, 67, 95, .82);--color-cyan-82: rgba(131, 196, 200, .82);--color-cyan-72: rgba(131, 196, 200, .72);--color-cyan-16: rgba(131, 196, 200, .16);--color-rose-72: rgba(227, 67, 95, .72);--color-cyan-36: rgba(131, 196, 200, .36);--color-cyan-38: rgba(131, 196, 200, .38);--color-panel-warm-82: rgba(12, 13, 16, .82);--color-danger-flash: #d51536;--color-chase-8: rgba(11, 12, 15, .8);--color-shadow-36: rgba(0, 0, 0, .36);--color-paper-12: rgba(244, 241, 233, .12);--color-alert-72: rgba(255, 57, 95, .72);--color-danger-deep-86: rgba(31, 10, 16, .86);--color-alert-soft: #ff708c;--color-success-deep-86: rgba(9, 28, 29, .86);--color-pink-72: rgba(241, 135, 174, .72);--color-light-09: rgba(255, 255, 255, .09);--color-stage-shadow-side: oklch(5% .01 345 / .78);--color-stage-shadow-floor: oklch(5% .01 345 / .56);--color-shadow-72: rgba(0, 0, 0, .72);--color-gold-48: rgba(215, 170, 103, .48);--color-ink-72: rgba(243, 237, 227, .72);--color-ink-78: rgba(243, 237, 227, .78);--color-ink-34: rgba(243, 237, 227, .34);--color-gold-68: rgba(215, 170, 103, .68);--color-gold-66: rgba(215, 170, 103, .66);--color-venue-86: rgba(12, 9, 11, .86);--color-accent-pressed-88: rgba(86, 20, 38, .88);--color-cyan-soft-44: rgba(143, 200, 195, .44);--color-panel-66: rgba(8, 8, 10, .66);--color-shadow-25: rgba(0, 0, 0, .25);--color-panel-84: rgba(8, 8, 10, .84);--color-shadow-28: rgba(0, 0, 0, .28);--color-ink-22: rgba(243, 237, 227, .22);--color-panel-26: rgba(8, 8, 10, .26);--color-ink-06: rgba(243, 237, 227, .06);--color-ink-62: rgba(243, 237, 227, .62);--color-accent-58: rgba(189, 45, 73, .58);--color-gold-7: rgba(215, 170, 103, .7);--color-action-66: rgba(77, 25, 38, .66);--color-accent-84: rgba(189, 45, 73, .84);--color-shadow-08: rgba(0, 0, 0, .08);--color-shadow-62: rgba(0, 0, 0, .62);--color-hud-54: rgba(8, 7, 9, .54);--color-shadow-82: rgba(0, 0, 0, .82);--color-gold-54: rgba(215, 170, 103, .54);--color-dialog-86: rgba(9, 8, 10, .86);--color-shadow-34: rgba(0, 0, 0, .34);--color-ink-16: rgba(243, 237, 227, .16);--color-ink-12: rgba(243, 237, 227, .12);--color-accent-18: rgba(189, 45, 73, .18);--color-cyan-soft-1: rgba(143, 200, 195, .1);--color-scrim-76: rgba(3, 3, 4, .76);--color-modal-97: rgba(14, 12, 15, .97);--color-ink-045: rgba(243, 237, 227, .045);--color-gold-06: rgba(215, 170, 103, .06);--color-gold-14: rgba(215, 170, 103, .14);--color-accent-hover-92: rgba(67, 19, 33, .92);--bg: var(--color-bg);--surface: var(--color-surface);--surface-solid: var(--color-surface-solid);--fg: var(--color-ink);--muted: var(--color-ink-muted);--accent: var(--color-accent);--pink: var(--color-pink);--cyan: var(--color-cyan);--gold: var(--color-gold);--line: var(--color-rule);--font-ui: ui-sans-serif, -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Microsoft YaHei", sans-serif;--font-display: "Songti SC", "STSong", serif;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-7: 1.75rem;--space-8: 2rem;--space-9: 2.25rem;--space-10: 2.5rem;--text-caption: .68rem;--text-body: 1rem;--text-display: 5.4rem;--radius-sharp: 2px;--radius-control: 6px;--rule-hairline: 1px;--dur-instant: .1s;--dur-short: .18s;--dur-medium: .3s;--dur-long: .48s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.7, 0, .84, 0);--ease-in-out: cubic-bezier(.65, 0, .35, 1)}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;letter-spacing:0}html,body{width:100%;height:100dvh;overflow:clip;overflow-x:clip;overscroll-behavior:none;touch-action:none;background:var(--bg);color:var(--fg);font-family:var(--font-ui);user-select:none;-webkit-user-select:none}button{font:inherit;touch-action:manipulation;-webkit-user-select:none;user-select:none}button:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}button:disabled,button[aria-disabled=true]{opacity:.5;cursor:not-allowed}button[data-state=loading]{cursor:progress}button[data-state=error]{border-color:var(--color-error)}button[data-state=success]{border-color:var(--color-success)}#renderCanvas{position:fixed;inset:0;width:100%;height:100dvh;display:block;outline:none;image-rendering:auto;touch-action:none}#boot-overlay{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg);text-align:center;cursor:pointer;transition:opacity var(--dur-long) var(--ease-out)}#boot-overlay:before{content:"";position:absolute;width:min(72vw,460px);height:1px;top:34%;background:var(--color-rose-45);box-shadow:0 24dvh 0 var(--color-cyan-18)}#boot-overlay.fade{opacity:0;pointer-events:none}#boot-overlay.loading{cursor:progress}#boot-overlay.loading #boot-bar{width:34%;animation:boot-loading 1.25s var(--ease-in-out) infinite}#boot-overlay.ready:active #boot-logo{transform:scale(.98)}#boot-overlay.failed #boot-sub{color:var(--accent);animation:none}#boot-detail{position:relative;min-height:1.25rem;max-width:min(78vw,360px);margin:calc(-1 * var(--space-5)) 0 var(--space-4);color:var(--muted);font-size:.68rem;line-height:1.5}#boot-logo{position:relative;font-family:var(--font-display);font-size:3rem;font-weight:700;line-height:1.05;color:var(--fg);text-shadow:0 0 32px var(--color-accent-28);margin-bottom:var(--space-4)}#boot-sub{position:relative;color:var(--muted);font-size:.75rem;margin-bottom:var(--space-8);animation:breathe 1.6s var(--ease-in-out) infinite}#boot-progress{width:min(62vw,320px);height:3px;overflow:hidden;background:var(--color-loading-track)}#boot-bar{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left center;background:var(--accent);box-shadow:0 0 16px var(--color-rose-9);transition:transform .22s var(--ease-out)}@keyframes breathe{0%,to{opacity:.5}50%{opacity:1}}@keyframes boot-loading{0%{transform:translate(-115%)}55%,to{transform:translate(295%)}}#crt-scanlines,#crt-vignette{position:fixed;inset:0;z-index:30;pointer-events:none}#crt-scanlines{opacity:.07;background:repeating-linear-gradient(13deg,transparent 0 3px,var(--color-light-16) 4px,transparent 5px 8px);mix-blend-mode:soft-light}#crt-vignette{background:radial-gradient(ellipse at center,transparent 58%,var(--color-shadow-42) 100%)}.scene-escape #crt-scanlines{opacity:.08}.scene-escape #crt-vignette{background:radial-gradient(ellipse at center,transparent 68%,var(--color-shadow-3) 100%)}#hud-layer{position:fixed;inset:0;z-index:40;pointer-events:none}#progress-wrap{position:absolute;top:max(12px,env(safe-area-inset-top));left:max(14px,env(safe-area-inset-left));display:grid;grid-template-columns:auto minmax(72px,112px) auto;align-items:center;gap:var(--space-2);min-height:34px;padding:0 var(--space-3);border:1px solid var(--line);border-radius:2px;background:var(--surface);backdrop-filter:blur(18px) saturate(130%);-webkit-backdrop-filter:blur(18px) saturate(130%);font-size:.68rem}#progress-label{color:var(--muted)}#progress-track{height:4px;overflow:hidden;background:var(--color-light-12)}#progress-fill{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left center;background:var(--gold);transition:transform .45s var(--ease-out)}#progress-value{min-width:2.5em;text-align:right;font-variant-numeric:tabular-nums}.icon-btn{position:absolute;top:max(12px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--fg);font-size:1.4rem;line-height:1;pointer-events:auto;backdrop-filter:blur(18px) saturate(130%);-webkit-backdrop-filter:blur(18px) saturate(130%)}.icon-btn:active{transform:scale(.94);background:var(--color-rose-58)}#room-hud{position:fixed;top:max(62px,calc(env(safe-area-inset-top) + 58px));left:max(14px,env(safe-area-inset-left));z-index:42;display:flex;align-items:baseline;gap:var(--space-2);pointer-events:none;text-shadow:0 2px 8px var(--color-black)}#room-minimap{position:fixed;top:max(70px,calc(env(safe-area-inset-top) + 58px));right:max(14px,env(safe-area-inset-right));z-index:45;width:92px;height:92px;overflow:hidden;border:1px solid var(--color-paper-24);border-radius:7px;background:var(--color-glass-72);box-shadow:0 10px 28px var(--color-shadow-32);backdrop-filter:blur(14px) saturate(120%);-webkit-backdrop-filter:blur(14px) saturate(120%);pointer-events:none}.minimap-grid{position:absolute;inset:7px;border:1px solid var(--color-cyan-18);background:linear-gradient(var(--color-light-045) 1px,transparent 1px),linear-gradient(90deg,var(--color-light-045) 1px,transparent 1px);background-size:25% 25%}.minimap-target,.minimap-player{position:absolute;display:block;pointer-events:none}.minimap-target{width:6px;height:6px;margin:calc(-1 * var(--space-1)) 0 0 calc(-1 * var(--space-1));border-radius:50%;background:var(--pink);box-shadow:0 0 8px var(--color-pink-7)}.minimap-target.near{background:var(--color-accent-ink);box-shadow:0 0 0 4px var(--color-pink-18),0 0 12px var(--pink)}.minimap-target.done{opacity:.2;box-shadow:none}.minimap-pursuer.hostile{z-index:3;width:8px;height:8px;margin:calc(-1 * var(--space-1)) 0 0 calc(-1 * var(--space-1));background:var(--color-alert-solid);box-shadow:0 0 10px var(--color-alert-92);animation:minimap-danger-pulse .72s var(--ease-in-out) infinite alternate}.minimap-pursuer.hostile:after{content:"";position:absolute;left:50%;top:50%;width:20px;height:20px;transform:translate(-50%,-50%);border:1px solid var(--color-alert-52);border-radius:50%}.minimap-pursuer.objective{width:8px;height:8px;margin:calc(-1 * var(--space-1)) 0 0 calc(-1 * var(--space-1));border-radius:1px;background:var(--cyan);box-shadow:0 0 10px var(--color-cyan-8);transform:rotate(45deg)}@keyframes minimap-danger-pulse{to{box-shadow:0 0 0 5px var(--color-alert-16),0 0 13px var(--color-alert-95)}}.minimap-player{left:50%;top:50%;z-index:2;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:11px solid var(--cyan);filter:drop-shadow(0 0 5px var(--color-cyan-8));transform-origin:50% 50%}#room-hud span{color:var(--cyan);font-size:.65rem;font-variant-numeric:tabular-nums}#room-hud strong{font-family:var(--font-display);font-size:1.25rem}#nearby-prompt{position:fixed;left:50%;bottom:calc(max(18px,env(safe-area-inset-bottom)) + 14px);z-index:48;max-width:min(62vw,320px);padding:var(--space-2) var(--space-3);transform:translate(-50%,12px) scale(.96);border:1px solid var(--line);border-radius:6px;background:var(--color-glass-76);color:var(--fg);opacity:0;pointer-events:none;font-size:.72rem;text-align:center;backdrop-filter:blur(12px);transition:opacity .18s var(--ease-out),transform .28s var(--ease-out)}#nearby-prompt.visible{opacity:1;transform:translate(-50%) scale(1)}#mobile-controls{position:fixed;inset:0;z-index:50;pointer-events:none}#mobile-controls .ctrl{position:absolute;pointer-events:auto;touch-action:none}.joy-base{left:max(20px,env(safe-area-inset-left));bottom:max(20px,env(safe-area-inset-bottom));width:116px;height:116px;border:1px solid var(--color-paper-28);border-radius:50%;background:var(--color-control-42);box-shadow:inset 0 0 0 12px var(--color-light-025);backdrop-filter:blur(10px);transition:background .1s var(--ease-out),transform .1s var(--ease-out)}.joy-base.pressed{background:var(--color-control-68);transform:scale(1.02)}.joy-stick{position:absolute;left:50%;top:50%;width:50px;height:50px;margin:calc(-1 * var(--space-6));border:1px solid var(--color-paper-74);border-radius:50%;background:var(--color-rose-64);box-shadow:0 4px 16px var(--color-shadow-4);will-change:transform}.act-btn{right:max(22px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom));width:82px;height:82px;border:1px solid var(--color-pink-88);border-radius:50%;background:var(--color-action-warm-68);color:var(--fg);font-size:.8rem;font-weight:650;backdrop-filter:blur(12px);transition:transform .1s var(--ease-out),background .1s var(--ease-out),opacity .18s var(--ease-out)}.act-btn:disabled{opacity:.34}.act-btn.pressed:not(:disabled),.act-btn:active:not(:disabled){transform:scale(.92);background:var(--color-rose-88)}.inventory-btn{right:max(35px,calc(env(safe-area-inset-right) + 13px));bottom:max(118px,calc(env(safe-area-inset-bottom) + 112px));width:52px;height:52px;border:1px solid var(--line);border-radius:50%;background:var(--color-control-68);color:var(--fg);font-size:.76rem;backdrop-filter:blur(12px)}.inventory-btn:active{transform:scale(.93);background:var(--color-cyan-42)}.dialog-box{position:fixed;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));z-index:56;width:min(720px,calc(100% - 24px));margin:0 auto;padding:var(--space-4);border:1px solid var(--color-paper-26);border-radius:8px;background:var(--color-panel-warm-9);box-shadow:0 18px 48px var(--color-shadow-48);opacity:0;transform:translateY(18px) scale(.98);pointer-events:none;backdrop-filter:blur(24px) saturate(125%);-webkit-backdrop-filter:blur(24px) saturate(125%);transition:opacity .16s var(--ease-out),transform .3s var(--ease-out)}.dialog-box.active{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.dialog-speaker{min-height:1em;margin-bottom:var(--space-2);color:var(--pink);font-size:.76rem;font-weight:700}.dialog-text{min-height:3.6em;color:var(--fg);font-size:.92rem;line-height:1.65;white-space:pre-line;word-break:break-word}.dialog-choices{display:grid;gap:var(--space-2);margin-top:var(--space-3);max-height:min(44dvh,320px);overflow-y:auto}.choice-btn,.modal-card button{width:100%;min-height:44px;padding:var(--space-3) var(--space-3);border:1px solid var(--color-paper-2);border-radius:6px;background:var(--color-light-055);color:var(--fg);text-align:left;cursor:pointer}.choice-btn:active,.modal-card button:active{transform:scale(.985);background:var(--color-rose-36)}button:focus-visible,#boot-overlay:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.dialog-continue{min-height:1em;margin-top:var(--space-2);color:var(--cyan);font-size:.68rem;text-align:right}.modal{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:var(--space-5);background:var(--color-shadow-64);backdrop-filter:blur(12px)}.modal-card{width:min(100%,380px);max-height:min(82dvh,620px);overflow-y:auto;padding:var(--space-6) var(--space-5);border:1px solid var(--color-pink-48);border-radius:8px;background:var(--color-control-96);box-shadow:0 24px 70px var(--color-shadow-58);text-align:center}.modal-card h2{margin-bottom:var(--space-4);color:var(--pink);font-family:var(--font-display);font-size:1.35rem}.modal-card button{margin-top:var(--space-2);text-align:center}.memory-caption{margin-bottom:var(--space-3);color:var(--pink);font-size:.72rem}.memory-empty{color:var(--muted);font-size:.72rem}.gift-card p{margin:var(--space-3) 0 var(--space-5);color:var(--muted);line-height:1.6}.gift-card b{color:var(--fg)}.gift-card code{padding:var(--space-1) var(--space-2);border-radius:4px;background:var(--color-cyan-12);color:var(--cyan);user-select:text}.envelope{position:relative;width:56px;height:40px;margin:0 auto var(--space-5);border:1px solid var(--pink);border-radius:5px;color:var(--gold);transform:rotate(-3deg);box-shadow:inset 0 -20px 0 var(--color-pink-08),0 0 28px var(--color-pink-18)}.envelope:before{content:"";position:absolute;inset:0;background:linear-gradient(34deg,transparent 49%,currentColor 50%,transparent 51%),linear-gradient(-34deg,transparent 49%,currentColor 50%,transparent 51%);opacity:.72}.mic-meter{position:fixed;left:50%;top:50%;z-index:65;width:min(82vw,320px);padding:var(--space-5);transform:translate(-50%,-50%);border:1px solid var(--line);border-radius:8px;background:var(--color-panel-warm-92);backdrop-filter:blur(18px);text-align:center;pointer-events:auto}.mic-meter>span{display:block;margin-bottom:var(--space-3);color:var(--cyan);font-size:.76rem;font-weight:700}.mic-wave{display:flex;align-items:center;justify-content:center;gap:var(--space-1);height:54px}.mic-wave i{width:4px;height:42px;border-radius:2px;background:var(--color-cyan-78);transform:scaleY(.12);transition:transform 75ms linear}.mic-track{position:relative;height:8px;overflow:hidden;background:var(--color-light-1)}.mic-track b{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left;background:var(--cyan);transition:transform 75ms linear}.mic-track em{position:absolute;left:72%;top:0;width:1px;height:100%;background:var(--color-light-72)}.mic-meter output{display:block;margin:var(--space-2) 0 var(--space-1);color:var(--fg);font-size:.72rem;font-variant-numeric:tabular-nums}.mic-meter button{min-height:44px;margin-top:var(--space-3);padding:0 var(--space-4);border:1px solid var(--line);border-radius:6px;background:var(--color-light-06);color:var(--fg)}.mic-meter button:active{transform:scale(.97);background:var(--color-cyan-24)}.clock-panel,.rhythm-panel{position:fixed;left:50%;top:max(168px,calc(env(safe-area-inset-top) + 156px));z-index:55;display:grid;justify-items:center;gap:var(--space-2);width:min(62vw,210px);padding:var(--space-3) var(--space-4);transform:translate(-50%);border:1px solid var(--color-cyan-34);border-radius:7px;background:var(--color-panel-warm-84);box-shadow:0 14px 34px var(--color-shadow-42);pointer-events:none;backdrop-filter:blur(18px) saturate(125%)}.clock-panel-title,.rhythm-panel>span{color:var(--cyan);font-size:.68rem;font-weight:700}.clock-dial{position:relative;width:106px;height:106px;border:1px solid var(--color-paper-4);border-radius:50%;background:radial-gradient(circle,var(--color-paper-08) 0 4%,transparent 5%),var(--color-clock-face);box-shadow:inset 0 0 22px var(--color-shadow-52),0 0 24px var(--color-cyan-08)}.clock-ticks i{position:absolute;left:calc(50% - 1px);top:5px;width:2px;height:7px;background:var(--color-paper-62);transform-origin:1px 48px;transform:rotate(calc(var(--tick) * 30deg))}.clock-hand{position:absolute;left:50%;bottom:50%;display:block;transform-origin:50% 100%;transition:transform .28s var(--ease-out)}.clock-hour{width:4px;height:29px;border-radius:2px;background:var(--fg);transform:translate(-50%) rotate(var(--hour-angle))}.clock-minute{width:2px;height:39px;background:var(--pink);transform:translate(-50%) rotate(var(--minute-angle))}.clock-pin{position:absolute;left:50%;top:50%;width:8px;height:8px;transform:translate(-50%,-50%);border-radius:50%;background:var(--cyan)}.clock-readout{color:var(--fg);font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums}.clock-panel.moving{animation:clock-panel-tick .28s var(--ease-out)}.clock-panel.wrong{border-color:var(--color-rose-82);animation:clock-panel-error .32s var(--ease-out)}.clock-panel.solved{border-color:var(--color-cyan-82);animation:clock-panel-solved .7s var(--ease-out)}.rhythm-guide,.rhythm-entered{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);width:100%}.rhythm-guide b{color:var(--muted);font-size:.66rem;font-weight:600;text-align:center}.rhythm-entered i{display:grid;place-items:center;height:32px;border:1px solid var(--line);border-radius:50%;color:var(--muted);font-style:normal}.rhythm-entered i.correct{border-color:var(--color-cyan-72);background:var(--color-cyan-16);color:var(--color-accent-ink);transform:scale(1.05)}.rhythm-entered i.wrong{border-color:var(--color-rose-72);color:var(--accent)}.rhythm-panel output{color:var(--muted);font-size:.68rem}.rhythm-panel.error{animation:clock-panel-error .32s var(--ease-out)}.rhythm-panel.solved{animation:clock-panel-solved .7s var(--ease-out)}@keyframes clock-panel-tick{45%{transform:translate(-50%) rotate(1.2deg) scale(1.015)}}@keyframes clock-panel-error{25%{transform:translate(calc(-50% - 5px))}55%{transform:translate(calc(-50% + 5px))}}@keyframes clock-panel-solved{45%{transform:translate(-50%) scale(1.055);box-shadow:0 0 36px var(--color-cyan-36)}}@keyframes clock-ui-rumble{35%{transform:translate(2px) rotate(.4deg)}70%{transform:translate(-2px) rotate(-.35deg)}}@keyframes clock-ui-error{25%{transform:translate(-4px)}55%{transform:translate(4px)}}@keyframes clock-ui-stopped{45%{filter:brightness(1.32)}}.clock-rumble #room-hud,.clock-rumble #room-minimap,.clock-rumble .dialog-box.active{animation:clock-ui-rumble .28s var(--ease-out)}.clock-error #room-hud,.clock-error #room-minimap,.clock-error .dialog-box.active{animation:clock-ui-error .32s var(--ease-out)}.clock-stopped #room-hud,.clock-stopped #room-minimap,.clock-stopped .dialog-box.active{animation:clock-ui-stopped .7s var(--ease-out)}.phonograph-panel{position:fixed;left:50%;top:max(178px,calc(env(safe-area-inset-top) + 166px));z-index:55;display:grid;justify-items:center;gap:var(--space-2);width:min(70vw,260px);padding:var(--space-3) var(--space-4);transform:translate(-50%);border:1px solid var(--color-cyan-38);border-radius:7px;background:var(--color-panel-warm-82);box-shadow:0 12px 32px var(--color-shadow-42);color:var(--fg);pointer-events:none;backdrop-filter:blur(18px) saturate(125%);transition:border-color .16s var(--ease-out),transform .16s var(--ease-out)}.phonograph-title{color:var(--cyan);font-size:.68rem;font-weight:700}.phonograph-sequence{display:flex;gap:var(--space-2)}.phonograph-step{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--color-paper-2);border-radius:50%;color:var(--muted);font-style:normal;transition:color .16s var(--ease-out),background .16s var(--ease-out),transform .16s var(--ease-out)}.phonograph-step.done{border-color:var(--color-cyan-72);background:var(--color-cyan-18);color:var(--color-accent-ink);transform:scale(1.06)}.phonograph-status{min-height:1.4em;color:var(--muted);font-size:.7rem;line-height:1.4;text-align:center}.phonograph-panel.error{border-color:var(--color-rose-82);transform:translate(-50%) translate(4px)}.danger-flash{position:fixed;inset:0;z-index:75;background:var(--color-danger-flash);pointer-events:none;animation:dangerFlash .16s steps(2) 3}.chase-panel{position:fixed;left:max(14px,env(safe-area-inset-left));top:max(106px,calc(env(safe-area-inset-top) + 98px));z-index:46;width:min(218px,calc(100% - 142px));padding:var(--space-3) var(--space-3);border:1px solid var(--color-paper-24);border-radius:7px;background:var(--color-chase-8);box-shadow:0 10px 28px var(--color-shadow-36);color:var(--fg);pointer-events:none;backdrop-filter:blur(16px) saturate(125%);-webkit-backdrop-filter:blur(16px) saturate(125%);transition:border-color .16s var(--ease-out),background .16s var(--ease-out)}.chase-heading,.chase-detail{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.chase-heading span{color:var(--pink);font-size:.72rem;font-weight:750}.chase-heading output{color:var(--color-accent-ink);font-size:.82rem;font-weight:750;font-variant-numeric:tabular-nums}.chase-progress{height:4px;margin:var(--space-2) 0 var(--space-2);overflow:hidden;border-radius:2px;background:var(--color-paper-12)}.chase-progress b{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left center;background:var(--cyan);transition:transform .1s linear,background .16s var(--ease-out)}.chase-detail{color:var(--muted);font-size:.59rem;line-height:1.35}.chase-detail span{min-width:0}.chase-detail em{flex:0 0 auto;color:var(--cyan);font-style:normal;font-variant-numeric:tabular-nums}.chase-panel.danger{border-color:var(--color-alert-72);background:var(--color-danger-deep-86)}.chase-panel.danger .chase-heading output,.chase-panel.danger .chase-detail em{color:var(--color-alert-soft)}.chase-panel.danger .chase-progress b{background:var(--color-alert-solid)}.chase-panel.hit{animation:chase-hit .28s var(--ease-out)}.chase-panel.solved{border-color:var(--color-cyan-72);background:var(--color-success-deep-86)}.chase-panel.solved .chase-heading span,.chase-panel.solved .chase-heading output,.chase-panel.solved .chase-detail em{color:var(--cyan)}@keyframes chase-hit{30%{transform:translate(-4px)}65%{transform:translate(4px)}}@keyframes dangerFlash{50%{opacity:.08}}#scene-fade{position:fixed;inset:0;z-index:70;background:var(--color-black);opacity:0;pointer-events:none;transition:opacity .42s var(--ease-in-out)}#scene-fade.active{opacity:1;pointer-events:auto}.scene-story.story-cut #scene-fade{animation:story-cut var(--dur-long) var(--ease-in-out)}@keyframes story-cut{0%,to{opacity:0}42%{opacity:.34}}#orientation-hint{position:fixed;inset:0;z-index:90;display:grid;place-items:center;background:var(--color-black)}.hidden{display:none!important}@media (max-width: 540px){#progress-label{display:none}#progress-wrap{grid-template-columns:minmax(72px,96px) auto}.dialog-box{padding:var(--space-4)}.dialog-choices{max-height:36dvh}#nearby-prompt{bottom:calc(max(18px,env(safe-area-inset-bottom)) + 126px)}}@media (min-width: 541px) and (hover: hover) and (pointer: fine){#room-minimap{display:none}}@media (max-height: 500px){.joy-base{width:96px;height:96px}.act-btn{width:70px;height:70px}.inventory-btn{right:31px;bottom:96px;width:46px;height:46px}.dialog-box{max-height:76dvh;overflow-y:auto}#room-hud{top:max(56px,calc(env(safe-area-inset-top) + 52px))}}@media (hover: hover) and (pointer: fine){.joy-base{opacity:.5}.choice-btn:hover,.modal-card button:hover{border-color:var(--color-pink-72);background:var(--color-light-09)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}.dialog-box,#nearby-prompt{transform:none}.danger-flash{opacity:.16}}@media (prefers-reduced-transparency: reduce){#progress-wrap,.icon-btn,.dialog-box,.modal-card,.joy-base,.act-btn,.inventory-btn,.chase-panel{backdrop-filter:none;background:var(--surface-solid)}}@media (prefers-contrast: more){#progress-wrap,.icon-btn,.dialog-box,.modal-card,.joy-base,.act-btn,.inventory-btn,.chase-panel{border-color:var(--fg)}}.scene-welcome #crt-vignette{background:linear-gradient(90deg,var(--color-stage-shadow-side),transparent 58%),linear-gradient(0deg,var(--color-stage-shadow-floor),transparent 42%)}.welcome-editorial{position:fixed;z-index:44;left:max(6vw,env(safe-area-inset-left));top:max(15dvh,calc(env(safe-area-inset-top) + 5rem));width:min(54rem,78vw);pointer-events:none;text-shadow:0 2px 24px var(--color-shadow-72);animation:welcome-arrive .78s var(--ease-out) both}.welcome-kicker{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);color:var(--gold);font-size:.68rem;font-weight:700}.welcome-kicker span{padding:var(--space-2) var(--space-2);border:1px solid var(--color-gold-48);color:var(--fg)}.welcome-editorial h1{min-width:0;max-width:9ch;color:var(--fg);font-family:var(--font-display);font-size:5.4rem;font-weight:700;line-height:.98;overflow-wrap:anywhere}.welcome-editorial h1 span,.welcome-editorial h1 strong{display:block}.welcome-editorial h1 span{color:var(--color-ink-72);font-size:.42em;font-weight:500}.welcome-editorial h1 strong{color:var(--fg);font-weight:700}.welcome-lede{max-width:28rem;margin-top:var(--space-5);color:var(--color-ink-78);font-family:var(--font-display);font-size:1.08rem;line-height:1.6}.flower-meter{display:flex;align-items:center;width:min(15rem,70vw);margin-top:var(--space-9);padding-top:.75rem;border-top:1px solid var(--color-ink-34);color:var(--muted);font-size:.7rem}.flower-meter span{margin-right:auto}.flower-meter b{color:var(--gold);font-variant-numeric:tabular-nums}.welcome-editorial.is-touched .flower-meter{border-color:var(--color-gold-68)}.welcome-editorial.is-complete .flower-meter span{color:var(--fg)}.enter-venue-btn{position:fixed;z-index:55;left:auto;top:auto;right:max(5vw,env(safe-area-inset-right));bottom:max(5dvh,env(safe-area-inset-bottom));display:grid;grid-template-columns:minmax(0,1fr) auto;min-width:min(20rem,calc(100% - 2rem));min-height:68px;padding:var(--space-3) var(--space-4);transform:none;border:1px solid var(--color-gold-66);border-radius:2px;background:var(--color-venue-86);color:var(--fg);box-shadow:0 18px 52px var(--color-shadow-42);backdrop-filter:blur(18px) saturate(118%);cursor:pointer;text-align:left;transition:transform var(--dur-instant) var(--ease-out),background-color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out);animation:venue-materialize .42s var(--ease-out) both}.enter-venue-btn span,.enter-venue-btn strong{grid-column:1;white-space:nowrap}.enter-venue-btn span{color:var(--gold);font-size:.65rem;font-weight:600}.enter-venue-btn strong{margin-top:var(--space-1);color:var(--fg);font-family:var(--font-display);font-size:1.05rem}.enter-venue-btn i{grid-column:2;grid-row:1 / 3;align-self:center;color:var(--gold);font-size:1.6rem;font-style:normal}.enter-venue-btn:active{transform:scale(.97);background:var(--color-accent-pressed-88)}@keyframes welcome-arrive{0%{opacity:0;transform:translateY(1.25rem)}}@keyframes venue-materialize{0%{opacity:0;transform:translateY(.9rem)}}.scene-escape #room-hud{align-items:center;gap:var(--space-3)}.scene-escape #room-hud span{min-width:3.4rem;padding:var(--space-2) var(--space-2);border:1px solid var(--color-cyan-soft-44);color:var(--cyan);text-align:center}.scene-escape #room-hud strong{color:var(--fg);font-size:1.2rem;font-weight:500}.scene-escape #crt-vignette{background:radial-gradient(ellipse at center,transparent 70%,var(--color-shadow-3) 100%)}#room-minimap{border-radius:2px;background:var(--color-panel-66);box-shadow:0 14px 40px var(--color-shadow-25)}#nearby-prompt{border-radius:2px;background:var(--color-panel-84);box-shadow:0 12px 36px var(--color-shadow-28)}.joy-base{border-color:var(--color-ink-22);background:var(--color-panel-26);box-shadow:inset 0 0 0 1px var(--color-ink-06)}.joy-stick{border-color:var(--color-ink-62);background:var(--color-accent-58);box-shadow:0 8px 22px var(--color-shadow-32)}.act-btn{border-color:var(--color-gold-7);background:var(--color-action-66);color:var(--fg)}.act-btn.pressed:not(:disabled),.act-btn:active:not(:disabled){background:var(--color-accent-84)}.scene-escape.dialog-open #mobile-controls{opacity:.14;pointer-events:none;transition:opacity .18s var(--ease-out)}.scene-escape.dialog-open #mobile-controls .ctrl{pointer-events:none}.scene-story #crt-scanlines{opacity:.025}.scene-story #crt-vignette{background:linear-gradient(to bottom,var(--color-shadow-08),transparent 34%,transparent 60%,var(--color-shadow-62))}.scene-story #progress-wrap{background:var(--color-hud-54)}.story-cinema-meta{position:fixed;z-index:43;top:max(4.2rem,calc(env(safe-area-inset-top) + 4rem));left:max(1rem,env(safe-area-inset-left));display:grid;gap:var(--space-1);padding-left:.75rem;border-left:1px solid var(--color-gold-66);pointer-events:none;text-shadow:0 2px 12px var(--color-shadow-82)}.story-cinema-meta span,.story-cinema-meta i{color:var(--gold);font-size:.6rem;font-style:normal}.story-cinema-meta strong{color:var(--fg);font-family:var(--font-display);font-size:1rem;font-weight:500}.dialog-box{left:max(3vw,env(safe-area-inset-left));right:auto;bottom:max(3dvh,env(safe-area-inset-bottom));width:min(42rem,calc(100% - 6vw));padding:var(--space-5) var(--space-5);border:0;border-top:1px solid var(--color-gold-54);border-radius:0;background:var(--color-dialog-86);box-shadow:0 24px 70px var(--color-shadow-34);transform:translateY(1rem);backdrop-filter:blur(20px) saturate(110%)}.dialog-box.active{transform:translateY(0)}.dialog-speaker{margin-bottom:var(--space-2);color:var(--gold);font-family:var(--font-display);font-size:.86rem;font-weight:600}.dialog-text{min-height:3.3em;max-width:52ch;font-size:1.02rem;line-height:1.72}.dialog-choices{counter-reset:route;gap:0;margin-top:var(--space-4);border-top:1px solid var(--color-ink-16)}.choice-btn{counter-increment:route;display:grid;grid-template-columns:2.2rem minmax(0,1fr);align-items:center;min-height:50px;padding:var(--space-3) var(--space-1);border:0;border-bottom:1px solid var(--color-ink-12);border-radius:0;background:transparent;color:var(--fg);line-height:1.45;text-align:left;white-space:nowrap;transition:transform var(--dur-instant) var(--ease-out),background-color var(--dur-short) var(--ease-out)}.choice-btn:before{content:"0" counter(route);color:var(--gold);font-size:.64rem;font-variant-numeric:tabular-nums}.choice-btn:active{transform:translate(.35rem);background:var(--color-accent-18)}.choice-btn:focus-visible{background:var(--color-cyan-soft-1)}.dialog-continue{color:var(--gold)}.modal{background:var(--color-scrim-76)}.modal-card{border-color:var(--color-gold-48);border-radius:2px;background:var(--color-modal-97)}.modal-card h2{color:var(--gold);font-weight:500}.modal-card button{max-width:100%;overflow:hidden;border-radius:2px;background:var(--color-ink-045);text-overflow:ellipsis;white-space:nowrap}.gift-card code{border-radius:1px;background:var(--color-cyan-soft-1)}.envelope{border-color:var(--gold);border-radius:1px;box-shadow:inset 0 -20px 0 var(--color-gold-06),0 0 28px var(--color-gold-14)}.ori-icon{width:2.5rem;height:4rem;border:1px solid var(--fg);border-radius:.45rem}@media (max-width: 540px){.welcome-editorial{left:max(1.25rem,env(safe-area-inset-left));top:max(13dvh,calc(env(safe-area-inset-top) + 4rem));width:calc(100% - 2.5rem)}.welcome-editorial h1{max-width:7ch;font-size:3.5rem}.welcome-lede{max-width:20ch}.flower-meter{margin-top:var(--space-6)}.enter-venue-btn{right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom))}.story-cinema-meta{top:max(4rem,calc(env(safe-area-inset-top) + 3.8rem))}.story-cinema-meta i{display:none}.dialog-box{left:max(.75rem,env(safe-area-inset-left));right:max(.75rem,env(safe-area-inset-right));bottom:max(.75rem,env(safe-area-inset-bottom));width:auto;max-height:56dvh;padding:var(--space-4);overflow-y:auto}.scene-escape .dialog-box{bottom:max(10.5rem,calc(env(safe-area-inset-bottom) + 10rem))}.dialog-text{font-size:.9rem}.choice-btn{min-height:48px}}@media (hover: hover) and (pointer: fine){.enter-venue-btn:hover{border-color:var(--gold);background:var(--color-accent-hover-92)}.choice-btn:hover{transform:translate(.25rem);background:var(--color-ink-06)}}@media (prefers-reduced-motion: reduce){.welcome-editorial,.enter-venue-btn{animation:none}}@media (prefers-reduced-transparency: reduce){.enter-venue-btn,.scene-story .dialog-box{backdrop-filter:none;background:var(--surface-solid)}}
