:root{color-scheme:dark;--bg: #08090b;--surface: rgba(18, 19, 23, .78);--surface-solid: #121317;--fg: #f4f1e9;--muted: #aaa7a0;--accent: #e3435f;--pink: #f187ae;--cyan: #83c4c8;--line: rgba(244, 241, 233, .2);--font-ui: ui-sans-serif, -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Microsoft YaHei", sans-serif;--font-display: ui-serif, "Songti SC", "STSong", serif}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;letter-spacing:0}html,body{width:100%;height:100%;overflow:hidden;overscroll-behavior:none;touch-action:none;background:#000;color:var(--fg);font-family:var(--font-ui);user-select:none;-webkit-user-select:none}button{font:inherit}#renderCanvas{position:fixed;inset:0;width:100vw;height:100vh;display:block;outline:none;image-rendering:pixelated;touch-action:none}#boot-overlay{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#020203;text-align:center;cursor:pointer;transition:opacity .45s ease}#boot-overlay:before{content:"";position:absolute;width:min(72vw,460px);height:1px;top:34%;background:#e3435f73;box-shadow:0 24vh #83c4c82e}#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 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:-1.25rem 0 1rem;color:var(--muted);font-size:.68rem;line-height:1.5}#boot-logo{position:relative;font-family:var(--font-display);font-size:clamp(2rem,8vw,4.75rem);font-weight:700;line-height:1.05;color:var(--fg);text-shadow:0 0 24px rgba(227,67,95,.45);margin-bottom:1rem}#boot-sub{position:relative;color:var(--muted);font-size:.75rem;margin-bottom:2rem;animation:breathe 1.6s ease-in-out infinite}#boot-progress{width:min(62vw,320px);height:3px;overflow:hidden;background:#22242a}#boot-bar{display:block;width:0;height:100%;background:var(--accent);box-shadow:0 0 16px #e3435fe6;transition:width .22s 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:.35;background:repeating-linear-gradient(to bottom,transparent 0,transparent 3px,rgba(0,0,0,.18) 4px);mix-blend-mode:multiply}#crt-vignette{background:radial-gradient(ellipse at center,transparent 54%,rgba(0,0,0,.58) 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:8px;min-height:34px;padding:0 11px;border:1px solid var(--line);border-radius:7px;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:#ffffff1f}#progress-fill{display:block;width:0;height:100%;background:linear-gradient(90deg,var(--accent),var(--cyan));transition:width .45s 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:7px;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:#e3435f94}#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:9px;pointer-events:none;text-shadow:0 2px 8px #000}#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 rgba(244,241,233,.24);border-radius:7px;background:#0a0b0eb8;box-shadow:0 10px 28px #00000052;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 rgba(131,196,200,.18);background:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.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:-3px 0 0 -3px;border-radius:50%;background:var(--pink);box-shadow:0 0 8px #f187aeb3}.minimap-target.near{background:#fff;box-shadow:0 0 0 4px #f187ae2e,0 0 12px var(--pink)}.minimap-target.done{opacity:.2;box-shadow:none}.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 rgba(131,196,200,.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:8px 12px;transform:translate(-50%,12px) scale(.96);border:1px solid var(--line);border-radius:6px;background:#0a0b0ec2;color:var(--fg);opacity:0;pointer-events:none;font-size:.72rem;text-align:center;backdrop-filter:blur(12px);transition:opacity .18s ease-out,transform .28s cubic-bezier(.2,.8,.2,1)}#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 rgba(244,241,233,.28);border-radius:50%;background:#1213176b;box-shadow:inset 0 0 0 12px #ffffff06;backdrop-filter:blur(10px);transition:background .1s ease-out,transform .1s ease-out}.joy-base.pressed{background:#121317ad;transform:scale(1.02)}.joy-stick{position:absolute;left:50%;top:50%;width:50px;height:50px;margin:-25px;border:1px solid rgba(244,241,233,.74);border-radius:50%;background:#e3435fa3;box-shadow:0 4px 16px #0006;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 rgba(241,135,174,.88);border-radius:50%;background:#6f2237ad;color:var(--fg);font-size:.8rem;font-weight:650;backdrop-filter:blur(12px);transition:transform .1s ease-out,background .1s ease-out,opacity .18s ease-out}.act-btn:disabled{opacity:.34}.act-btn.pressed:not(:disabled),.act-btn:active:not(:disabled){transform:scale(.92);background:#e3435fe0}.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:#121317ad;color:var(--fg);font-size:.76rem;backdrop-filter:blur(12px)}.inventory-btn:active{transform:scale(.93);background:#83c4c86b}.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:16px;border:1px solid rgba(244,241,233,.26);border-radius:8px;background:#0c0d10e6;box-shadow:0 18px 48px #0000007a;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 ease-out,transform .3s cubic-bezier(.2,.8,.2,1)}.dialog-box.active{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.dialog-speaker{min-height:1em;margin-bottom:7px;color:var(--pink);font-size:.76rem;font-weight:700}.dialog-text{min-height:3.6em;color:var(--fg);font-size:clamp(.86rem,2.4vw,.98rem);line-height:1.65;white-space:pre-line;word-break:break-word}.dialog-choices{display:grid;gap:8px;margin-top:12px;max-height:min(44vh,320px);overflow-y:auto}.choice-btn,.modal-card button{width:100%;min-height:44px;padding:10px 12px;border:1px solid rgba(244,241,233,.2);border-radius:6px;background:#ffffff0e;color:var(--fg);text-align:left;cursor:pointer}.choice-btn:active,.modal-card button:active{transform:scale(.985);background:#e3435f5c}button:focus-visible,#boot-overlay:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.dialog-continue{min-height:1em;margin-top:6px;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:20px;background:#000000a3;backdrop-filter:blur(12px)}.modal-card{width:min(100%,380px);max-height:min(82vh,620px);overflow-y:auto;padding:22px 20px;border:1px solid rgba(241,135,174,.48);border-radius:8px;background:#121317f5;box-shadow:0 24px 70px #00000094;text-align:center}.modal-card h2{margin-bottom:16px;color:var(--pink);font-family:var(--font-display);font-size:1.35rem}.modal-card button{margin-top:8px;text-align:center}.memory-caption{margin-bottom:12px;color:var(--pink);font-size:.72rem}.memory-empty{color:var(--muted);font-size:.72rem}.gift-card p{margin:10px 0 18px;color:var(--muted);line-height:1.6}.gift-card b{color:var(--fg)}.gift-card code{padding:3px 6px;border-radius:4px;background:#83c4c81f;color:var(--cyan);user-select:text}.envelope{width:56px;height:40px;margin:0 auto 18px;border:1px solid var(--pink);border-radius:5px;color:transparent;transform:rotate(-3deg);box-shadow:inset 0 -20px #f187ae14,0 0 28px #f187ae2e}.mic-meter{position:fixed;left:50%;top:50%;z-index:65;width:min(82vw,320px);padding:18px;transform:translate(-50%,-50%);border:1px solid var(--line);border-radius:8px;background:#0c0d10eb;backdrop-filter:blur(18px);text-align:center}.mic-meter span{display:block;margin-bottom:12px;color:var(--cyan);font-size:.76rem}.mic-meter div{height:7px;overflow:hidden;background:#ffffff1a}.mic-meter i{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left;background:var(--cyan)}.danger-flash{position:fixed;inset:0;z-index:75;background:#d51536;pointer-events:none;animation:dangerFlash .16s steps(2) 3}.enter-venue-btn{position:fixed;left:50%;top:50%;z-index:55;min-height:48px;padding:0 22px;transform:translate(-50%,-50%) scale(1);border:1px solid rgba(241,135,174,.8);border-radius:7px;background:#0c0d10d1;color:var(--fg);font-weight:700;cursor:pointer;box-shadow:0 14px 38px #00000075,0 0 30px #f187ae2e;backdrop-filter:blur(18px);animation:enterButton 1.5s ease-in-out infinite}.hold-ring{position:fixed;left:50%;top:50%;z-index:54;width:82px;height:82px;transform:translate(-50%,-50%) scale(.8);border:2px solid rgba(244,241,233,.5);border-radius:50%;opacity:0;pointer-events:none;transition:opacity .3s ease-out,transform .3s ease-out}.hold-ring>span{position:absolute;left:50%;top:calc(100% + 14px);width:max-content;max-width:72vw;transform:translate(-50%);color:#f4f1e9e0;font-size:.75rem;font-weight:650;line-height:1.4;text-shadow:0 2px 10px #000}.hold-ring:before,.hold-ring:after{content:"";position:absolute;left:50%;top:50%;background:#f4f1e980;transform:translate(-50%,-50%)}.hold-ring:before{width:14px;height:1px}.hold-ring:after{width:1px;height:14px}.hold-ring.visible{opacity:1;transform:translate(-50%,-50%) scale(1)}.hold-ring.holding{border-color:var(--pink);box-shadow:0 0 0 8px #f187ae14,0 0 32px #f187ae80;animation:holdProgress 1.5s linear both}.hold-ring.holding>span{color:#fff}@keyframes holdProgress{0%{transform:translate(-50%,-50%) scale(1)}to{transform:translate(-50%,-50%) scale(1.22)}}.enter-venue-btn:active{transform:translate(-50%,-50%) scale(.95)}@keyframes enterButton{50%{box-shadow:0 14px 38px #00000075,0 0 42px #f187ae66}}@keyframes dangerFlash{50%{opacity:.08}}#scene-fade{position:fixed;inset:0;z-index:70;background:#000;opacity:0;pointer-events:none;transition:opacity .42s ease}#scene-fade.active{opacity:1;pointer-events:auto}#orientation-hint{position:fixed;inset:0;z-index:90;display:grid;place-items:center;background:#000}.hidden{display:none!important}@media (max-width: 540px){#progress-label{display:none}#progress-wrap{grid-template-columns:minmax(72px,96px) auto}.dialog-box{padding:14px}.dialog-choices{max-height:36vh}#nearby-prompt{bottom:calc(max(18px,env(safe-area-inset-bottom)) + 126px)}}@media (min-width: 541px){#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:76vh;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:#f187aeb8;background:#ffffff17}}@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{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{border-color:var(--fg)}}
