:root{
  --bg:#05080b;--ink:#f4ead7;--muted:#b7aa91;--gold:#d9ae59;--gold2:#ffe5a0;
  --cyan:#73d4d0;--violet:#9b8bd5;--bad:#f08a75;--line:rgba(238,216,168,.24);
  --panel:rgba(8,11,15,.9);--safe-t:max(10px,env(safe-area-inset-top));
  --safe-r:max(12px,env(safe-area-inset-right));--safe-b:max(10px,env(safe-area-inset-bottom));
  --safe-l:max(12px,env(safe-area-inset-left));
}
*{box-sizing:border-box}
html,body{width:100%;height:100%;margin:0;overflow:hidden;background:var(--bg);color:var(--ink)}
body{font-family:"Yu Mincho","Hiragino Mincho ProN","Noto Serif JP",Georgia,serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible{outline:3px solid var(--gold2);outline-offset:3px}
.hidden{display:none!important}
#game{position:fixed;inset:0;background:#05080b;opacity:1;transition:opacity .5s}
#game.is-loading{opacity:0}
#webgl{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}
#webgl.dragging{cursor:grabbing}
.scene-fx{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 34%,rgba(1,3,5,.3) 72%,rgba(1,2,4,.76));mix-blend-mode:multiply}
.scene-fx:after{content:"";position:absolute;inset:0;opacity:.16;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.38'/%3E%3C/svg%3E")}
.topbar{position:fixed;z-index:20;left:0;right:0;top:0;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:var(--safe-t) var(--safe-r) 8px var(--safe-l);background:linear-gradient(#040609e8,#0406098f,transparent);pointer-events:none}
.brand,.top-actions,.room-nav,.objective-card,.control-guide,.map-button{pointer-events:auto}
.brand{display:flex;align-items:center;gap:10px;min-height:50px;padding:0;border:0;background:none;text-align:left;cursor:pointer}
.brand-seal{display:grid;place-items:center;width:42px;height:42px;border:1px solid #d9ae5970;border-radius:11px 11px 11px 3px;color:var(--gold2);background:#11151bcc;box-shadow:inset 0 0 18px #d9ae5914}
.brand b,.brand small{display:block}.brand b{font-size:14px;letter-spacing:.1em}.brand small{margin-top:2px;color:var(--muted);font:10px system-ui,sans-serif;letter-spacing:.1em}
.top-actions{display:flex;gap:7px}.icon-button{position:relative;display:flex;align-items:center;justify-content:center;gap:7px;min-width:72px;min-height:48px;padding:8px 11px;border:1px solid var(--line);border-radius:13px;background:#080c10b8;backdrop-filter:blur(12px);cursor:pointer}
.icon-button:hover{border-color:#ffe5a080;background:#171b21d9}.icon-button i{font-style:normal}.icon-button span{font:12px system-ui,sans-serif}.icon-button em{position:absolute;right:-4px;top:-5px;display:grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border:2px solid var(--bg);border-radius:99px;color:#211504;background:var(--gold2);font:700 10px system-ui,sans-serif}
.room-copy{position:fixed;z-index:12;left:max(26px,calc(50% - 620px));top:clamp(85px,12vh,124px);width:min(420px,calc(100vw - 40px));pointer-events:none;text-shadow:0 4px 22px #000;transition:opacity .22s}
.room-copy p:first-child,.overline,.dialog-frame header p{margin:0 0 8px;color:var(--gold2);font:700 10px system-ui,sans-serif;letter-spacing:.22em;text-transform:uppercase}
.room-copy h1{margin:0;font-size:clamp(34px,5vw,62px);font-weight:500;letter-spacing:-.05em}.room-copy p:last-child{margin:12px 0 0;color:#d4c8b0;font:13px/1.8 system-ui,sans-serif}
.objective-card{position:fixed;z-index:20;left:var(--safe-l);bottom:max(86px,calc(env(safe-area-inset-bottom) + 76px));width:min(340px,calc(100vw - 24px));padding:13px 15px;border:1px solid var(--line);border-radius:16px;background:#070a0ed9;box-shadow:0 14px 40px #0008;backdrop-filter:blur(13px)}
.objective-card span{display:block;margin-bottom:6px;color:var(--gold2);font:700 10px system-ui,sans-serif;letter-spacing:.15em}.objective-card strong{display:block;font-size:14px;font-weight:500;line-height:1.55}.objective-card button{min-height:44px;margin:5px 0 -7px -9px;padding:7px 9px;border:0;color:var(--gold2);background:none;font:11px system-ui,sans-serif;cursor:pointer}
.objective-card em{position:absolute;right:12px;top:11px;color:var(--gold2);font:700 10px system-ui,sans-serif;font-style:normal;letter-spacing:.08em}
.control-guide{position:fixed;z-index:14;right:var(--safe-r);bottom:max(84px,calc(env(safe-area-inset-bottom) + 76px));display:flex;gap:10px;padding:9px 12px;border:1px solid var(--line);border-radius:999px;color:var(--muted);background:#070a0ebd;font:10px system-ui,sans-serif;backdrop-filter:blur(10px)}
.room-nav{position:fixed;z-index:24;left:0;right:0;bottom:0;display:flex;justify-content:center;gap:7px;padding:8px var(--safe-r) var(--safe-b) var(--safe-l);background:linear-gradient(transparent,#040609c9 30%,#040609f3)}
.room-nav header{display:none}
.room-nav button{display:flex;align-items:center;justify-content:center;gap:7px;min-width:122px;min-height:50px;padding:8px 13px;border:1px solid var(--line);border-radius:14px;color:var(--muted);background:#090d11c9;backdrop-filter:blur(12px);font:12px system-ui,sans-serif;cursor:pointer}
.room-nav button:hover{color:var(--ink);border-color:#ffe5a070}.room-nav button.active{color:#241704;border-color:var(--gold2);background:linear-gradient(#f7dfa0,#bd8739);box-shadow:0 10px 30px #c28b3d3b}.room-nav i{font-style:normal}
.room-nav button:disabled{opacity:.28;filter:saturate(.35);cursor:not-allowed}
.room-nav button.solved:after{content:"✓";display:grid;place-items:center;width:18px;height:18px;border-radius:50%;color:#17301f;background:#a9e4b5;font:700 10px system-ui,sans-serif}
.map-button,.nav-backdrop{display:none}
.object-label{position:fixed;z-index:26;max-width:220px;padding:7px 11px;border:1px solid #ffe5a06b;border-radius:999px;transform:translate(-50%,-130%);color:var(--ink);background:#05080de6;box-shadow:0 8px 28px #0009;font:12px system-ui,sans-serif;pointer-events:none}
.focus-ring{position:fixed;z-index:25;width:42px;height:42px;border:1px solid var(--gold2);border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 8px #d9ae5914,0 0 25px #d9ae5960;pointer-events:none;animation:ring 1.7s ease-out infinite}
@keyframes ring{0%{transform:translate(-50%,-50%) scale(.8);opacity:.85}80%,100%{transform:translate(-50%,-50%) scale(1.25);opacity:.15}}
.crosshair{position:fixed;z-index:24;left:50%;top:50%;width:28px;height:28px;transform:translate(-50%,-50%);pointer-events:none;filter:drop-shadow(0 1px 3px #000)}
.crosshair i{position:absolute;display:block;background:#f7e8c8cc;border-radius:2px;transition:transform .16s,background .16s}
.crosshair i:nth-child(1),.crosshair i:nth-child(2){left:13px;width:2px;height:7px}.crosshair i:nth-child(1){top:0}.crosshair i:nth-child(2){bottom:0}
.crosshair i:nth-child(3),.crosshair i:nth-child(4){top:13px;width:7px;height:2px}.crosshair i:nth-child(3){left:0}.crosshair i:nth-child(4){right:0}
body.has-focus .crosshair i{background:var(--gold2);transform:scale(1.25)}
.interaction-prompt{position:fixed;z-index:27;left:50%;top:calc(50% + 34px);display:flex;align-items:center;gap:8px;transform:translateX(-50%);padding:7px 11px;border:1px solid #ffe5a05c;border-radius:999px;background:#05080dd9;box-shadow:0 8px 28px #0008;color:var(--ink);font:11px system-ui,sans-serif;pointer-events:none}
.interaction-prompt kbd{display:grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border:1px solid #ffe5a07a;border-radius:7px;background:#ffffff0c;color:var(--gold2);font:700 10px system-ui,sans-serif}
.mechanism-status{position:fixed;z-index:31;left:50%;bottom:max(92px,calc(env(safe-area-inset-bottom) + 82px));display:grid;min-width:min(390px,calc(100vw - 28px));gap:3px;padding:12px 17px;border:1px solid #ffe5a05f;border-radius:15px;transform:translateX(-50%);background:linear-gradient(135deg,#0b1017ed,#171308ed);box-shadow:0 18px 60px #000b;text-align:center;pointer-events:none}.mechanism-status small{color:var(--cyan);font:700 9px system-ui,sans-serif;letter-spacing:.2em}.mechanism-status b{font-size:17px;font-weight:500}.mechanism-status span{color:var(--gold2);font:11px/1.5 system-ui,sans-serif}
.escape-hud{position:fixed;z-index:38;left:50%;top:max(18px,env(safe-area-inset-top));display:grid;justify-items:center;min-width:180px;padding:10px 18px;border:1px solid #ffbb815f;border-radius:16px;transform:translateX(-50%);background:#170907e8;box-shadow:0 0 55px #e24f2045;color:#fff0d1;pointer-events:none}.escape-hud small{color:#ffb28f;font:700 8px system-ui,sans-serif;letter-spacing:.19em}.escape-hud b{font:700 32px/1 system-ui,sans-serif}.escape-hud b i{margin-left:3px;font-size:10px;font-style:normal}.escape-hud em{margin-top:4px;color:#ffd39d;font:700 10px system-ui,sans-serif;font-style:normal;letter-spacing:.1em}.escape-hud button{min-height:38px;margin-top:8px;padding:7px 11px;border:1px solid #ffd39d73;border-radius:10px;color:#2b1305;background:#ffd39d;font:700 10px system-ui,sans-serif;pointer-events:auto;cursor:pointer}
.speed-lines{position:fixed;z-index:11;inset:-10%;pointer-events:none;opacity:0;background:repeating-conic-gradient(from 0deg at 50% 50%,transparent 0deg 7deg,#ffe1a30d 7.3deg 7.7deg,transparent 8deg 14deg);mask-image:radial-gradient(circle,transparent 0 26%,#000 65%,transparent 88%);transition:opacity .25s;animation:speedSpin 1.1s linear infinite}
body.is-sprinting .speed-lines,body.escape-active .speed-lines{opacity:.68}
@keyframes speedSpin{to{transform:rotate(.7deg) scale(1.025)}}
body.success-impact .scene-fx{animation:successFlash .9s cubic-bezier(.2,.7,.2,1)}
body.success-impact .crosshair{animation:crosshairBurst .72s ease-out}
@keyframes successFlash{0%{box-shadow:inset 0 0 0 0 #ffe4a000;filter:brightness(1)}18%{box-shadow:inset 0 0 160px 28px #ffe4a05e;filter:brightness(1.42)}100%{box-shadow:inset 0 0 0 0 #ffe4a000;filter:brightness(1)}}
@keyframes crosshairBurst{25%{transform:translate(-50%,-50%) scale(2.15) rotate(45deg);filter:drop-shadow(0 0 16px #ffe5a0)}100%{transform:translate(-50%,-50%) scale(1) rotate(0)}}
.mobile-controls{display:none}
.orientation-overlay{position:fixed;z-index:215;inset:0;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at 50% 42%,#1f2d348c,transparent 34%),linear-gradient(145deg,#020405f2,#05080bf5);backdrop-filter:blur(10px);text-align:center}
.orientation-overlay>div{width:min(560px,calc(100vw - 34px));padding:clamp(22px,5vw,42px);border:1px solid #ffe5a064;border-radius:28px 28px 28px 7px;background:linear-gradient(145deg,#182026f5,#070a0df8);box-shadow:0 28px 90px #000d}
.orientation-icon{display:grid;place-items:center;width:70px;height:70px;margin:0 auto 16px;border:1px solid #ffe5a06b;border-radius:22px;color:var(--gold2);background:#0b1118;font:44px/1 system-ui,sans-serif;animation:phoneTurn 2.4s ease-in-out infinite}
.orientation-overlay h2{margin:0;color:#fff3dd;font-size:clamp(24px,7vw,38px);font-weight:500;line-height:1.35}.orientation-overlay p:not(.overline){margin:14px 0 20px;color:#d8ccb5;font:13px/1.8 system-ui,sans-serif}.orientation-overlay .primary{min-width:190px}
body.mobile-portrait-lock #webgl{filter:brightness(.34) saturate(.68)}
body.mobile-portrait-lock .topbar,body.mobile-portrait-lock .room-copy,body.mobile-portrait-lock .objective-card,body.mobile-portrait-lock .room-nav,body.mobile-portrait-lock .map-button,body.mobile-portrait-lock .mobile-controls,body.mobile-portrait-lock .control-guide{opacity:.12;pointer-events:none}
@keyframes phoneTurn{0%,100%{transform:rotate(0deg)}45%,60%{transform:rotate(90deg);box-shadow:0 0 46px #d9ae5940}}
.loading-screen{position:fixed;z-index:200;inset:0;display:grid;place-content:center;gap:14px;text-align:center;background:#05080b;transition:opacity .45s}
.loading-screen.done{opacity:0;pointer-events:none}.loader-sigil{display:grid;place-items:center;width:82px;height:82px;margin:auto;border:1px solid var(--gold);border-radius:50%;color:var(--gold2);font-size:36px;animation:loader 2s ease-in-out infinite}.loading-screen p{color:var(--muted);font:11px system-ui,sans-serif;letter-spacing:.18em}
@keyframes loader{50%{box-shadow:0 0 50px #d9ae594f;transform:rotate(5deg) scale(1.05)}}
.title-screen,.ending-screen{position:fixed;z-index:100;inset:0;display:grid;place-items:center;overflow:hidden;padding:22px;background:radial-gradient(circle at 50% 46%,#24313755,transparent 31%),linear-gradient(135deg,#05070a,#10171c 55%,#05070a)}
.title-depth{position:absolute;inset:0;display:flex;justify-content:space-around;opacity:.26;perspective:900px}.title-depth i{width:clamp(80px,12vw,170px);height:115%;margin-top:7vh;border:1px solid #ead39b24;border-bottom:0;border-radius:50% 50% 0 0/16% 16% 0 0;box-shadow:inset 0 0 65px #000}
.title-card,.ending-card{position:relative;width:min(780px,100%);padding:clamp(30px,5vw,62px);border:1px solid #f0d89c55;border-radius:30px 30px 30px 7px;background:linear-gradient(145deg,#1a2025f2,#070a0efa);box-shadow:0 30px 100px #000a;backdrop-filter:blur(18px)}
.title-card h1{margin:0;font-size:clamp(48px,9vw,88px);font-weight:500;line-height:1;letter-spacing:-.08em}.title-card h1 small{display:block;margin-top:16px;color:var(--gold2);font-size:clamp(15px,2vw,21px);font-weight:400;letter-spacing:.3em}
.lead,.ending-card>p{margin:24px 0;color:#d8ccb5;font:14px/2 system-ui,sans-serif}.features{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:24px}.features span{padding:7px 11px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font:11px system-ui,sans-serif}
.title-actions,.ending-actions{display:flex;flex-wrap:wrap;gap:10px}.primary,.secondary,.danger,.dialog-action{min-height:50px;padding:12px 20px;border-radius:14px;font:700 13px system-ui,sans-serif;cursor:pointer}.primary{border:1px solid var(--gold2);color:#241704;background:linear-gradient(#f7e1a4,#c18b3c);box-shadow:0 12px 35px #c18b3c42}.secondary,.dialog-action{border:1px solid #eed8a95e;background:#ffffff0d}.title-note{display:block;margin-top:17px;color:#746b5b;font:10px/1.6 system-ui,sans-serif}
.chapter-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.chapter-entry{display:grid;grid-template-columns:54px 1fr auto;gap:13px;align-items:center;min-height:104px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#ffffff07;text-align:left;cursor:pointer}.chapter-entry>i{display:grid;place-items:center;width:54px;height:54px;border:1px solid #ffe5a04c;border-radius:50%;color:var(--gold2);font:24px Georgia,serif;font-style:normal}.chapter-entry b,.chapter-entry small{display:block}.chapter-entry b{font-size:16px;font-weight:500}.chapter-entry small{margin-top:5px;color:var(--muted);font:10px/1.5 system-ui,sans-serif}.chapter-entry em{color:var(--gold2);font:700 9px system-ui,sans-serif;font-style:normal;letter-spacing:.08em}.chapter-entry:disabled{opacity:.38;cursor:not-allowed}.chapter-entry.completed{border-color:#83d59c66}.chapter-entry.completed em{color:#a7e9b9}
.game-dialog{width:min(780px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:0;overflow:visible;border:1px solid #edd39a62;border-radius:23px;color:var(--ink);background:transparent;box-shadow:0 28px 100px #000c}.game-dialog::backdrop{background:#020406c2;backdrop-filter:blur(8px)}
.dialog-frame{display:flex;max-height:calc(100dvh - 24px);flex-direction:column;overflow:hidden;border-radius:inherit;background:linear-gradient(145deg,#1b2026fc,#080b0ffc)}
.dialog-frame header{display:flex;justify-content:space-between;gap:12px;padding:22px;border-bottom:1px solid var(--line)}.dialog-frame h2{margin:0;font-size:clamp(24px,4vw,35px);font-weight:500}.close-button{flex:none;width:48px;height:48px;border:1px solid var(--line);border-radius:50%;background:#ffffff0a;font:24px system-ui,sans-serif;cursor:pointer}
.dialog-body{min-height:130px;padding:22px;overflow:auto;color:#ded2bb;font:14px/1.8 system-ui,sans-serif}.dialog-frame footer{display:flex;justify-content:flex-end;gap:9px;padding:0 22px 22px}
.inspection{display:grid;grid-template-columns:130px 1fr;gap:18px}.inspection-icon{display:grid;place-items:center;min-height:130px;border:1px solid var(--line);border-radius:18px;color:var(--gold2);background:radial-gradient(circle,#d9ae5925,transparent 63%),#0003;font:52px Georgia,serif}.inspection h3{margin:0 0 8px;color:var(--ink);font:500 19px "Yu Mincho",serif}.clue{margin-top:15px;padding:12px 15px;border-left:2px solid var(--gold);color:#f2dfb5;background:#d9ae590e}
.dial-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0}.dial{display:grid;justify-items:center;gap:9px;padding:14px;border:1px solid var(--line);border-radius:17px;background:#0003}.dial-face{display:grid;place-items:center;width:100px;height:100px;border:1px solid #edd39a6b;border-radius:50%;background:conic-gradient(#d9ae592a,transparent 24%,#d9ae5920 50%,transparent 76%,#d9ae592a),#090d11;box-shadow:inset 0 0 24px #000}.dial button,.bell-button,.chain-card,.lock-slot,.sigil-choice{min-height:48px;border:1px solid var(--line);border-radius:12px;background:#ffffff0a;cursor:pointer}
.puzzle-choices{margin:16px 0}.puzzle-choices .sigil-choice{flex:1 1 120px}
.stereo-cue{display:grid;grid-template-columns:1fr 70px 1fr;align-items:center;gap:12px;margin:16px 0}.stereo-cue i,.stereo-cue span{display:grid;place-items:center;min-height:68px;border:1px solid var(--line);border-radius:16px;font-style:normal}.stereo-cue i{color:var(--violet);background:#9b8bd50b}.stereo-cue span{color:var(--gold2);font-size:22px;background:#d9ae590b}.stereo-cue.pulse-left .left,.stereo-cue.pulse-right .right{animation:stereoPulse .5s ease-out}.replay-cue{width:100%}
@keyframes stereoPulse{0%{box-shadow:0 0 0 #9b8bd500;transform:scale(.96)}35%{color:#fff;box-shadow:0 0 45px #9b8bd57a;transform:scale(1.05);background:#9b8bd53a}100%{box-shadow:0 0 0 #9b8bd500;transform:none}}
.feedback{min-height:38px;padding:9px 12px;border-radius:10px;color:var(--muted);background:#ffffff08;font-size:12px}.bell-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0}.bell-button{min-height:110px;background:linear-gradient(#d9ae5928,#0003)}.bell-button:before{content:"♟";display:block;color:var(--gold2);font-size:35px}.bell-button.crystal:before{color:#bafbf1}.sequence{display:flex;gap:7px;min-height:40px;margin:12px 0}.sequence span{display:grid;place-items:center;min-width:35px;padding:0 8px;border:1px solid var(--line);border-radius:9px;color:var(--gold2)}
.chain-grid,.lock-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0}.chain-card{min-height:120px;padding:12px 7px}.chain-card.selected{border-color:var(--gold2);box-shadow:0 0 0 2px #d9ae5925}.chain-card b{font-size:30px}.chain-card small{display:block;margin-top:14px;color:var(--muted);font-size:10px}.lock-slot{min-height:108px}.lock-slot b{display:block;color:var(--gold2);font-size:34px}.sigil-list{display:flex;flex-wrap:wrap;gap:8px}.sigil-choice{padding:8px 14px}.sigil-choice:disabled{opacity:.3}
.journal-list,.inventory-list{display:grid;gap:10px}.entry{display:grid;grid-template-columns:52px 1fr;gap:13px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:14px;background:#ffffff07}.entry>i{display:grid;place-items:center;width:52px;height:52px;border:1px solid var(--line);border-radius:12px;color:var(--gold2);font-style:normal;font-size:22px}.entry h3{margin:0 0 3px;color:var(--ink);font:500 15px "Yu Mincho",serif}.entry p{margin:0;color:var(--muted);font-size:12px;line-height:1.6}.empty{padding:25px;border:1px dashed var(--line);border-radius:14px;color:var(--muted);text-align:center}
.settings-list label{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:72px;border-bottom:1px solid var(--line)}.settings-list b,.settings-list small{display:block}.settings-list small{margin-top:4px;color:var(--muted);font-size:11px}.settings-list input[type=checkbox]{width:48px;height:28px;accent-color:var(--gold)}.settings-list input[type=range]{width:min(210px,44vw);accent-color:var(--gold)}.danger{width:100%;margin-top:20px;border:1px solid #f08a756b;color:#ffc0b4;background:#7b201c38}
.settings-list select{min-width:145px;min-height:44px;padding:8px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:#11161d}.settings-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:16px}.settings-actions button{min-width:0;padding:9px}
.playtest-form{display:grid;gap:14px}.playtest-notice{margin:0;padding:12px;border:1px solid #e5c16b55;border-radius:14px;background:#15130d;color:var(--muted);line-height:1.7}.playtest-form label{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:58px;border-bottom:1px solid var(--line)}.playtest-form label span,.playtest-form label small{display:block}.playtest-form small{margin-top:4px;color:var(--muted);font-size:11px}.playtest-form input[type=text]{width:min(260px,46vw);min-height:42px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:#10151c}.playtest-form input[type=checkbox]{width:24px;height:24px;accent-color:var(--gold)}.rating-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.rating-grid label{min-height:auto;padding:10px;border:1px solid var(--line);border-radius:12px}.rating-grid select{min-height:40px;padding:7px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:#11161d}.playtest-tags{display:grid;grid-template-columns:1fr 1fr;gap:8px}.playtest-tags label{justify-content:flex-start;min-height:44px;padding:8px;border:1px solid var(--line);border-radius:12px}
.hint-step{margin-bottom:10px;padding:14px;border:1px solid var(--line);border-radius:13px;background:#ffffff07}.hint-step.locked{color:#6d6558;filter:blur(4px);user-select:none}
.toast{position:fixed;z-index:150;left:50%;bottom:max(94px,calc(env(safe-area-inset-bottom) + 84px));max-width:min(680px,calc(100vw - 28px));padding:12px 17px;border:1px solid #f0d89c68;border-radius:999px;transform:translateX(-50%);background:#06090eef;box-shadow:0 18px 50px #000b;font:12px/1.5 system-ui,sans-serif;text-align:center}
.transition{position:fixed;z-index:90;inset:0;pointer-events:none;background:#040609;transform:scaleY(0);transform-origin:top}.transition.active{animation:curtain .62s cubic-bezier(.76,0,.24,1)}
@keyframes curtain{0%{transform:scaleY(0);transform-origin:top}45%{transform:scaleY(1);transform-origin:top}55%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
.ending-screen{background:radial-gradient(circle at 50% 55%,#ffdfa52e,transparent 28%),linear-gradient(135deg,#070a0d,#18201e 52%,#06080a)}.ending-rays{position:absolute;left:50%;bottom:-35%;width:70vw;height:115vh;transform:translateX(-50%);clip-path:polygon(45% 0,55% 0,100% 100%,0 100%);background:linear-gradient(#ffe2a24a,transparent 70%);filter:blur(18px)}.ending-card{width:min(920px,100%)}.ending-card h2{max-width:780px;margin:0;font-size:clamp(34px,5vw,52px);font-weight:500;line-height:1.45;text-wrap:balance}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:22px 0}.result-stats div{padding:13px;border:1px solid var(--line);border-radius:13px;background:#ffffff08}.result-stats b,.result-stats small{display:block}.result-stats b{color:var(--gold2);font-size:20px}.result-stats small{margin-top:3px;color:var(--muted);font:10px system-ui,sans-serif}

/* Cinematic title and progression effects */
.title-screen{background:linear-gradient(90deg,#020405 0%,#0204059c 31%,#0204051c 62%),url("assets/title-library-v8.webp") center/cover no-repeat,#05080b}
.title-screen:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 76% 56%,transparent 0 18%,#02050738 48%,#020507a3 100%);pointer-events:none}
.title-screen:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 34%,#ffe7ac0b 47%,transparent 57%);animation:titleSweep 7s ease-in-out infinite}
.title-aurora{position:absolute;inset:-30%;background:conic-gradient(from 210deg at 50% 55%,transparent,#2b768035,transparent 26%,#a4743030,transparent 50%);filter:blur(60px);animation:aurora 18s linear infinite}
.title-stars{position:absolute;inset:0}.title-stars i{position:absolute;width:3px;height:3px;border-radius:50%;background:#ffe9b5;box-shadow:0 0 14px #ffe0a0;animation:starPulse 3.4s ease-in-out infinite}.title-stars i:nth-child(1){left:12%;top:18%}.title-stars i:nth-child(2){left:27%;top:75%;animation-delay:-1s}.title-stars i:nth-child(3){left:44%;top:12%;animation-delay:-2s}.title-stars i:nth-child(4){left:61%;top:82%;animation-delay:-.5s}.title-stars i:nth-child(5){left:78%;top:22%;animation-delay:-2.6s}.title-stars i:nth-child(6){left:88%;top:62%;animation-delay:-1.6s}.title-stars i:nth-child(7){left:7%;top:55%;animation-delay:-.8s}.title-stars i:nth-child(8){left:68%;top:8%;animation-delay:-2.2s}
.title-depth i{animation:columnBreathe 8s ease-in-out infinite}.title-depth i:nth-child(even){animation-delay:-4s}
.title-sigil{position:absolute;left:calc(50% + min(35vw,430px));top:50%;width:280px;height:280px;transform:translate(-50%,-50%);opacity:.72}.title-sigil i{position:absolute;inset:0;border:1px solid #ffe5a04a;border-radius:50%;animation:sigilTurn 22s linear infinite}.title-sigil i:nth-child(2){inset:32px;border-style:dashed;animation-direction:reverse;animation-duration:16s}.title-sigil i:nth-child(3){inset:66px;border-color:#73d4d05c;animation-duration:11s}.title-sigil span{position:absolute;inset:82px;display:grid;place-items:center;border:1px solid #ffe5a05c;border-radius:50%;background:#071015c7;box-shadow:0 0 70px #d9ae5928;color:#ffe5a0;font-size:64px}.title-sigil b{position:absolute;color:#ffe5a0;font:30px Georgia,serif;text-shadow:0 0 18px currentColor}.sigil-light{left:50%;top:-14px}.sigil-voice{right:-2px;bottom:42px}.sigil-memory{left:4px;bottom:34px}
.title-card{width:min(820px,100%);margin-right:min(23vw,260px);background:linear-gradient(145deg,#1a2025ee,#070a0ef7);box-shadow:0 30px 100px #000a,inset 0 1px #fff1;animation:cardArrive 1.1s cubic-bezier(.2,.8,.2,1) both}.title-card h1 span{display:block;background:linear-gradient(100deg,#fff5dd,#d8b466 48%,#fff1cc);background-size:200% auto;background-clip:text;color:transparent;animation:titleShine 6s linear infinite}.title-verse{display:grid;gap:3px;margin:22px 0 0;color:#d8ccb5;font:12px/1.65 system-ui,sans-serif}.title-verse span{opacity:0;transform:translateX(-8px);animation:verseIn .6s ease forwards}.title-verse span:nth-child(1){animation-delay:.45s}.title-verse span:nth-child(2){animation-delay:.75s}.title-verse span:nth-child(3){animation-delay:1.05s}.title-note{color:#8e836e}.title-note i{display:inline-block;width:6px;height:6px;margin-right:5px;border-radius:50%;background:#73d4d0;box-shadow:0 0 10px #73d4d0;animation:starPulse 2s infinite}
@keyframes aurora{to{transform:rotate(360deg)}}@keyframes titleSweep{50%{transform:translateX(18%)}}@keyframes starPulse{50%{opacity:.25;transform:scale(.5)}}@keyframes columnBreathe{50%{transform:translateY(-1.8%) scaleX(1.04);opacity:.62}}@keyframes sigilTurn{to{transform:rotate(360deg)}}@keyframes cardArrive{from{opacity:0;transform:translateY(22px) scale(.98)}}@keyframes titleShine{to{background-position:200% center}}@keyframes verseIn{to{opacity:1;transform:none}}
.chapter-card{position:fixed;z-index:95;inset:0;display:grid;place-items:center;pointer-events:none;background:radial-gradient(circle,#05080d8a,#030508e8)}.chapter-card>div{min-width:min(560px,82vw);padding:34px;border-top:1px solid #ffe5a05e;border-bottom:1px solid #ffe5a05e;text-align:center}.chapter-card p{margin:0 0 10px;color:var(--gold2);font:700 10px system-ui,sans-serif;letter-spacing:.28em}.chapter-card h2{margin:0;font-size:clamp(36px,7vw,70px);font-weight:500}.chapter-card span{display:block;margin-top:11px;color:var(--muted);font:12px system-ui,sans-serif;letter-spacing:.16em}.chapter-card.play{animation:chapter 1.7s cubic-bezier(.2,.7,.2,1) both}.chapter-card.play>div{animation:chapterText 1.7s ease both}
@keyframes chapter{0%,100%{opacity:0}15%,75%{opacity:1}}@keyframes chapterText{0%{transform:scale(.94);filter:blur(8px)}28%,75%{transform:none;filter:none}100%{transform:scale(1.04);filter:blur(4px)}}
.stage-burst{position:fixed;z-index:149;left:50%;top:50%;width:220px;height:220px;transform:translate(-50%,-50%);pointer-events:none}.stage-burst i{position:absolute;inset:0;border:1px solid #ffe5a0;border-radius:50%}.stage-burst i:nth-child(2){inset:28px;border-style:dashed}.stage-burst i:nth-child(3){inset:56px;border-color:#73d4d0}.stage-burst b{position:absolute;inset:72px;display:grid;place-items:center;border-radius:50%;color:#241704;background:#ffe5a0;font-size:42px;box-shadow:0 0 80px #ffe5a0}.stage-burst.play{display:block!important;animation:burstFade 1.05s ease-out both}.stage-burst.play i{animation:burstRing 1.05s cubic-bezier(.1,.7,.2,1) both}.stage-burst.play i:nth-child(2){animation-delay:.06s}.stage-burst.play i:nth-child(3){animation-delay:.12s}.stage-burst.play b{animation:burstCore .8s ease-out both}
@keyframes burstFade{75%{opacity:1}100%{opacity:0}}@keyframes burstRing{from{transform:scale(.15) rotate(-30deg);opacity:0}35%{opacity:1}to{transform:scale(1.35) rotate(28deg);opacity:0}}@keyframes burstCore{0%{transform:scale(.2);opacity:0}40%{transform:scale(1.15);opacity:1}100%{transform:scale(.9);opacity:0}}
body.high-contrast{--ink:#fff;--muted:#e9dfcc;--line:rgba(255,255,255,.42);--gold2:#ffe78f}body.reduce-motion *{animation-duration:.001ms!important;transition-duration:.001ms!important}body.reduce-motion .focus-ring{animation:none}
body.mechanism-mode .crosshair{filter:drop-shadow(0 0 12px #73d4d0)}body.mechanism-mode .crosshair i{background:var(--cyan)}
body.episode-mode .room-nav,body.episode-mode .map-button,body.episode-mode .brand{display:none}
body.episode-mode .topbar{justify-content:flex-end}
body.episode-mode .room-copy{left:max(26px,calc(50% - 650px));width:min(580px,calc(100vw - 52px))}
body.episode-mode .room-copy h1{font-size:clamp(34px,4.5vw,58px);line-height:1.08;text-wrap:balance}
body.episode-mode .objective-card{border-color:#e0a0615c}
body.chapter-intro .room-copy,body.chapter-intro .objective-card,body.chapter-intro .control-guide,
body.chapter-intro .topbar,body.chapter-intro .mechanism-status,body.chapter-intro .interaction-prompt,
body.chapter-intro .mobile-controls,body.chapter-intro .map-button{opacity:0!important;pointer-events:none!important}
body.escape-active .scene-fx{background:radial-gradient(ellipse at center,transparent 28%,rgba(42,7,4,.35) 67%,rgba(8,1,1,.88));animation:escapePulse .72s ease-in-out infinite alternate}
body.escape-active .room-copy,body.escape-active .objective-card,body.escape-active .control-guide{opacity:.12}
body.escape-impact #webgl{animation:escapeShake .16s linear 7}
body.escape-fail:after{content:"";position:fixed;z-index:140;inset:0;pointer-events:none;background:#7e1b12;animation:failCurtain .8s ease-out both}
@keyframes escapePulse{to{filter:brightness(1.12) saturate(1.18)}}@keyframes escapeShake{25%{transform:translate(3px,-2px)}75%{transform:translate(-3px,2px)}}@keyframes failCurtain{from{opacity:.8}to{opacity:0}}
@media(max-width:900px), (pointer:coarse){
  .topbar{align-items:flex-start;padding-bottom:5px}.brand{min-height:44px}.brand-seal{width:40px;height:40px}.brand b,.brand small{display:none}.top-actions{gap:5px}.icon-button{min-width:44px;min-height:44px;padding:7px;border-radius:12px}.icon-button span{display:none}#inventoryButton{display:none}
  .room-copy{left:62px;top:var(--safe-t);width:calc(100vw - 226px);height:44px;display:flex;align-items:center}.room-copy p{display:none!important}.room-copy h1{overflow:hidden;margin:0;font:500 15px/1.2 "Yu Mincho",serif;letter-spacing:0;white-space:nowrap;text-overflow:ellipsis}
  .objective-card{left:12px;right:12px;top:62px;bottom:auto;width:auto;display:flex;align-items:center;gap:8px;min-height:42px;padding:7px 8px 7px 11px;border-radius:13px;background:#070a0ed0}.objective-card span{display:none}.objective-card strong{flex:1;overflow:hidden;font:11px/1.35 system-ui,sans-serif;white-space:nowrap;text-overflow:ellipsis}.objective-card em{position:static;flex:none;padding:5px 7px;border:1px solid var(--line);border-radius:8px}.objective-card button{flex:none;width:38px;min-height:36px;margin:0;padding:0;overflow:hidden;color:transparent}.objective-card button:after{content:"?";display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:10px;color:var(--gold2);font:700 13px system-ui,sans-serif}
  .control-guide{display:none}
  .room-nav{left:12px;right:12px;bottom:calc(env(safe-area-inset-bottom) + 10px);display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:14px;border:1px solid #ffe5a04f;border-radius:22px;background:#070a0ff5;box-shadow:0 25px 80px #000;transform:translateY(calc(100% + 32px));transition:transform .28s cubic-bezier(.2,.8,.2,1);pointer-events:none}.room-nav.open{transform:translateY(0);pointer-events:auto}.room-nav header{display:block;grid-column:1/-1;padding:2px 3px 7px}.room-nav header b,.room-nav header small{display:block}.room-nav header b{font-size:18px}.room-nav header small{margin-top:3px;color:var(--muted);font:10px system-ui,sans-serif}.room-nav button{min-width:0;min-height:62px;padding:8px;gap:7px;font-size:11px}.room-nav i{font-size:18px}
  .map-button{position:fixed;z-index:29;left:50%;bottom:max(18px,env(safe-area-inset-bottom));display:grid;place-items:center;width:58px;height:58px;padding:5px;border:1px solid #ffe5a064;border-radius:50%;transform:translateX(-50%);background:#080c10e6;box-shadow:0 8px 28px #000a;color:var(--gold2);backdrop-filter:blur(10px)}.map-button i,.map-button span{display:block;font-style:normal}.map-button i{font-size:17px}.map-button span{font:9px system-ui,sans-serif}.map-button[aria-expanded=true]{color:#211504;background:var(--gold2)}
  .nav-backdrop{position:fixed;z-index:46;inset:0;display:block;border:0;background:#020406a8;backdrop-filter:blur(4px)}
  .room-nav{z-index:47}
  .title-screen{padding:12px}.title-card,.ending-card{max-height:calc(100dvh - 24px);padding:27px 22px;overflow:auto;border-radius:24px 24px 24px 6px}.title-card h1{font-size:clamp(44px,15vw,66px)}.lead{font-size:12px;line-height:1.8}.features{margin-bottom:17px}.features span{padding:6px 8px;font-size:9px}.title-actions>*{flex:1 1 100%}.dialog-frame header,.dialog-body{padding:17px}.dialog-frame footer{padding:0 17px 17px}.inspection{grid-template-columns:72px 1fr;gap:12px}.inspection-icon{min-height:72px;font-size:32px}.dial-grid{grid-template-columns:1fr}.dial{grid-template-columns:75px 1fr 90px;align-items:center}.dial-face{width:64px;height:64px}.bell-grid,.chain-grid,.lock-grid{grid-template-columns:repeat(2,1fr)}
  .interaction-prompt{top:calc(50% + 31px)}.interaction-prompt kbd{display:none}
  .mobile-controls{position:fixed;z-index:28;left:0;right:0;bottom:max(10px,env(safe-area-inset-bottom));display:flex;align-items:flex-end;justify-content:space-between;padding:8px max(16px,env(safe-area-inset-right)) 6px max(16px,env(safe-area-inset-left));pointer-events:none}
  .move-stick{position:relative;width:98px;height:98px;border:1px solid #ffe5a04a;border-radius:50%;background:radial-gradient(circle,#ffe5a014 0 22%,transparent 23%),#05080d85;box-shadow:inset 0 0 28px #0008;backdrop-filter:blur(7px);pointer-events:auto;touch-action:none}
  .move-stick:before,.move-stick:after{content:"";position:absolute;left:50%;top:50%;background:#ffe5a024;transform:translate(-50%,-50%)}.move-stick:before{width:1px;height:78%}.move-stick:after{width:78%;height:1px}
  .move-stick span{position:absolute;left:50%;top:50%;width:42px;height:42px;border:1px solid #ffe5a07a;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 35% 30%,#ffe5a04a,#8d622c45);box-shadow:0 8px 24px #0009}
  .mobile-actions{display:grid;gap:8px;justify-items:end;pointer-events:auto}.mobile-actions button{border:1px solid #ffe5a064;background:#080c10c9;backdrop-filter:blur(8px);box-shadow:0 8px 24px #0008;touch-action:none}
  .run-button{width:50px;height:50px;border-radius:50%;color:var(--gold2);font-weight:700}.run-button.active{color:#211504;background:var(--gold2)}
  .interact-button{min-width:82px;min-height:50px;border-radius:16px;color:#211504!important;background:linear-gradient(#f7e1a4,#c18b3c)!important;font:700 11px system-ui,sans-serif}
  .toast{top:auto;bottom:max(126px,calc(env(safe-area-inset-bottom) + 116px));max-width:min(310px,calc(100vw - 34px));border-radius:14px}
  .mechanism-status{bottom:max(125px,calc(env(safe-area-inset-bottom) + 115px));min-width:min(300px,calc(100vw - 32px));padding:10px 13px}.mechanism-status b{font-size:15px}
  body.mechanism-mode .mobile-controls,body.mechanism-mode .map-button,body.mechanism-mode .objective-card{opacity:0;pointer-events:none}
  body.escape-active .map-button,body.escape-active .top-actions{display:none}
  .escape-hud{top:max(8px,env(safe-area-inset-top));min-width:150px;padding:8px 12px}.escape-hud b{font-size:27px}
  .settings-actions{grid-template-columns:1fr}
  .rating-grid,.playtest-tags{grid-template-columns:1fr}.playtest-form label{align-items:flex-start;flex-direction:column}.playtest-form input[type=text]{width:100%}
  .chapter-list{grid-template-columns:1fr}.chapter-entry{min-height:88px;padding:11px}.chapter-entry>i{width:46px;height:46px}
  body.episode-mode .room-copy{display:flex;left:12px;right:120px;width:auto}.episode-mode .room-copy h1{color:#fff3dd;text-shadow:0 2px 12px #000,0 0 22px #d9ae593d}
}
@media(max-width:760px) and (max-height:620px) and (orientation:portrait){
  .objective-card{top:58px}.toast{bottom:max(112px,calc(env(safe-area-inset-bottom) + 102px));max-width:270px;font-size:10px}
}
@media(max-height:620px) and (orientation:landscape){
  .room-copy p:last-child{display:none}.objective-card{display:none}.room-nav button{min-height:48px}.toast{bottom:72px}.title-screen{padding:8px}.title-sigil{display:none}.title-card{width:min(720px,calc(100vw - 16px));max-height:calc(100dvh - 16px);margin:0;padding:18px 28px;overflow:auto}.title-card h1{font-size:44px}.title-verse{display:none}.lead{margin:10px 0;line-height:1.45}.features{margin-bottom:10px}.title-note{margin-top:8px}
}
@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}
@media(max-width:1000px){
  .title-card{margin-right:0}.title-sigil{left:76%;opacity:.3}
}
@media(max-width:900px), (pointer:coarse){
  .title-sigil{left:76%;top:21%;width:160px;height:160px;opacity:.3}.title-sigil span{inset:48px;font-size:34px}.title-sigil i:nth-child(2){inset:18px}.title-sigil i:nth-child(3){inset:36px}.title-sigil b{font-size:18px}.title-card{margin:0}.title-card h1{font-size:clamp(42px,14vw,62px)}.title-verse{font-size:10px}
}
