:root{--bg: #050607;--fg: #d7e2e0;--muted: #8a9a96;--accent: #66e0ff;--warn: #e8c24a;--bad: #e0705e;--ok: #7ad9a0;--panel: rgba(9, 13, 14, .94);--panel-2: rgba(22, 30, 32, .9);--line: rgba(160, 195, 195, .24);--ts: 1;--serif: "Iowan Old Style", "Palatino Linotype", Georgia, "Times New Roman", serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px);color-scheme:dark;font-size:calc(16px * var(--ts))}html[data-contrast=high]{--fg: #ffffff;--muted: #d0dcda;--accent: #8ff0ff;--line: rgba(255, 255, 255, .7);--panel: #000000;--panel-2: #101414}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--fg);overflow:hidden;-webkit-text-size-adjust:100%}body{font:1rem/1.5 var(--mono);-webkit-tap-highlight-color:transparent;overscroll-behavior:none}#root{position:fixed;inset:0}button,input{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}kbd{font:.75em var(--mono);border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:0 .4em;background:#ffffff0f}.gl{position:fixed;inset:0;width:100%;height:100%;display:block;background:#000;touch-action:none;outline:none}.loading{position:fixed;inset:0;display:grid;place-items:center;letter-spacing:.25em;color:var(--muted);z-index:90}.loading.overlay{background:#000000c7;animation:fade .2s}.errscreen{position:fixed;inset:0;display:grid;align-content:center;justify-items:center;gap:.8rem;padding:2rem;text-align:center;background:var(--bg);z-index:100}.errscreen h1{margin:0;font-family:var(--serif);font-weight:400;letter-spacing:.05em}.errscreen p{max-width:42rem;margin:0}.btn{appearance:none;cursor:pointer;padding:.7rem 1.2rem;min-height:44px;background:#ffffff0a;border:1px solid var(--line);border-radius:4px;letter-spacing:.06em;transition:background .15s,border-color .15s,transform .1s}.btn:hover:not(:disabled){background:#66e0ff1a;border-color:var(--accent)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:#66e0ff29;border-color:var(--accent);color:#eafcff}.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn.ghost:hover:not(:disabled){color:var(--fg)}.btn.small{padding:.35rem .8rem;min-height:36px;font-size:.85rem}.btn.danger{border-color:var(--bad);color:#ffd9d3;background:#e0705e24}.input{width:100%;padding:.6rem .8rem;min-height:44px;background:#00000073;border:1px solid var(--line);border-radius:4px}.input.big{font-size:1.3rem;text-align:center;letter-spacing:.08em}.input.mono{font-family:var(--mono);letter-spacing:.15em}.field{display:grid;gap:.35rem;margin:.9rem 0}.field-label{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}.field-label small,.seg-hint{color:var(--muted);font-size:.8rem;flex-basis:100%}.field.toggle{grid-template-columns:1fr auto;align-items:center}.field.toggle input{width:1.4rem;height:1.4rem;accent-color:var(--accent)}.field.range input{width:100%;accent-color:var(--accent);min-height:32px}.field output{color:var(--accent)}.seg-row{display:flex;flex-wrap:wrap;gap:.4rem}.seg{cursor:pointer;padding:.45rem .9rem;min-height:40px;background:transparent;border:1px solid var(--line);border-radius:4px}.seg.on{background:#66e0ff29;border-color:var(--accent)}.note{color:var(--muted);font-size:.88rem;margin:.6rem 0}.note.ok{color:var(--ok)}.note.error,.error{color:var(--bad)}.muted{color:var(--muted)}.chip{display:inline-block;padding:.05rem .5rem;border:1px solid var(--line);border-radius:99px;font-size:.72rem;color:var(--muted)}.menu{position:fixed;inset:0;display:grid;place-items:center;z-index:10;background:radial-gradient(ellipse at 50% 60%,#1222268c,#020304 70%);overflow:auto}.menu-fx{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(90deg,transparent 0 140px,rgba(102,224,255,.035) 140px 141px),repeating-linear-gradient(0deg,transparent 0 140px,rgba(102,224,255,.03) 140px 141px);mask-image:radial-gradient(ellipse at center,#000 20%,transparent 75%);animation:drift 24s linear infinite}.menu-inner{position:relative;text-align:center;padding:2rem 1.2rem calc(2rem + var(--safe-b));width:min(30rem,100%)}.title{margin:0;font:400 clamp(3.5rem,14vw,6.5rem)/1 var(--serif);letter-spacing:.22em;padding-left:.22em;position:relative;text-shadow:0 0 40px rgba(102,224,255,.25)}.title:before,.title:after{content:attr(data-text);position:absolute;inset:0;opacity:.18;pointer-events:none}.title:before{transform:translate(.06em,.02em);color:var(--accent);animation:echo 5s ease-in-out infinite}.title:after{transform:translate(-.12em,-.02em);color:#ff8aa0;opacity:.1;animation:echo 7s ease-in-out infinite reverse}.title-sub{margin:.2rem 0 .8rem;letter-spacing:.7em;padding-left:.7em;color:var(--muted)}.slogan{font:italic 1.1rem var(--serif);color:#b8cccc;margin:0 0 2rem}.menu-list{display:grid;gap:.6rem}.menu-list.compact{gap:.5rem}.menu-foot{margin-top:2rem;display:grid;gap:.2rem;font-size:.72rem;color:var(--muted)}.modal-backdrop{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:1rem;background:#000000b8;animation:fade .18s}.modal{width:min(34rem,100%);max-height:calc(100dvh - 2rem);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 20px 80px #000000b3;outline:none}.modal.wide{width:min(48rem,100%)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.1rem .5rem}.modal-head h2{margin:0;font:400 1.35rem var(--serif);letter-spacing:.08em}.modal-body{padding:.3rem 1.1rem 1rem;overflow:auto;-webkit-overflow-scrolling:touch}.modal-foot{display:flex;justify-content:flex-end;gap:.6rem;flex-wrap:wrap;padding:.8rem 1.1rem calc(.8rem + var(--safe-b));border-top:1px solid var(--line)}.modal-foot.split{justify-content:space-between;align-items:center}.foot-left{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.settings-group{border-top:1px solid var(--line);padding-top:.4rem;margin-top:.8rem}.settings-group h3,.howto h3{margin:.5rem 0;font-size:.85rem;letter-spacing:.15em;text-transform:uppercase;color:var(--accent)}.howto p{margin:.6rem 0;font-family:var(--serif);font-size:1.05rem}.howto-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1.2rem}.howto dl{display:grid;grid-template-columns:auto 1fr;gap:.3rem .9rem;margin:0;font-size:.9rem}.howto dt{color:var(--accent)}.howto dd{margin:0}.save-list{list-style:none;margin:.5rem 0;padding:0;display:grid;gap:.6rem}.save{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.6rem;padding:.7rem .8rem;border:1px solid var(--line);border-radius:4px;background:var(--panel-2)}.save.corrupt{border-color:var(--bad)}.save-main{display:grid;gap:.15rem;min-width:0;flex:1 1 14rem}.save-main small{color:var(--muted);overflow-wrap:anywhere}.save-actions{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.fx-vignette{position:fixed;inset:0;z-index:5;pointer-events:none;background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.55) 100%)}.hud{position:fixed;inset:0;z-index:8;pointer-events:none}.hud>*{pointer-events:none}.crosshair{position:absolute;left:50%;top:50%;width:5px;height:5px;margin:-2.5px;border-radius:50%;background:#ffffff8c;transition:all .15s}.crosshair.active{width:14px;height:14px;margin:-7px;background:transparent;border:1.5px solid var(--accent)}.objective{position:absolute;left:calc(1rem + var(--safe-l));top:calc(1rem + var(--safe-t));max-width:min(24rem,60vw);display:grid;gap:.1rem;padding:.4rem .7rem;background:#0000006b;border-left:2px solid var(--accent);font-size:.85rem}.objective small{color:var(--accent);letter-spacing:.2em;font-size:.65rem}.hud-top-right{position:absolute;right:calc(1rem + var(--safe-r));top:calc(1rem + var(--safe-t));display:flex;gap:.5rem;align-items:center}.pill{padding:.2rem .7rem;border:1px solid var(--line);border-radius:99px;background:#00000073;font-size:.78rem}.pill.on{border-color:var(--warn);color:var(--warn)}.pill.dim{color:var(--muted)}.room-name{position:absolute;left:0;right:0;top:18%;text-align:center;font:400 clamp(1.4rem,4vw,2.2rem) var(--serif);letter-spacing:.25em;text-transform:uppercase;text-shadow:0 2px 20px #000;animation:roomname 2.8s both}.prompt{position:absolute;left:50%;bottom:calc(22% + var(--safe-b));transform:translate(-50%);pointer-events:auto;display:inline-flex;gap:.6rem;align-items:center;padding:.55rem 1rem;background:#0000009e;border:1px solid var(--accent);border-radius:4px;cursor:pointer;animation:fade .15s;max-width:92vw}.prompt .verb{color:var(--accent);letter-spacing:.1em;text-transform:uppercase;font-size:.85rem}.prompt .label{color:var(--fg)}.toasts{position:absolute;left:50%;bottom:calc(10% + var(--safe-b));transform:translate(-50%);display:grid;gap:.3rem;justify-items:center;width:min(32rem,94vw)}.toast{padding:.45rem .9rem;background:#000000b3;border:1px solid var(--line);border-radius:4px;font-size:.88rem;text-align:center;animation:toast 4.2s both}.captions{position:absolute;left:50%;bottom:calc(3% + var(--safe-b));transform:translate(-50%);max-width:90vw;padding:.35rem .9rem;background:#000000d1;border-radius:3px;font-size:1rem;color:#fff;text-align:center}.card-screen{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:1.5rem;background:radial-gradient(ellipse at center,#030607db,#000 80%);animation:fade .6s;overflow:auto}.card{width:min(38rem,100%);text-align:center;display:grid;gap:.8rem;justify-items:center}.eyebrow{margin:0;color:var(--accent);letter-spacing:.35em;text-transform:uppercase;font-size:.75rem}.card-title{margin:0;font:400 clamp(2rem,7vw,3.4rem) var(--serif);letter-spacing:.16em}.card-line{margin:0;font:italic 1.15rem/1.6 var(--serif);color:#c6d6d4;opacity:0;animation:lineIn 1.2s forwards}.card-line.show{opacity:1;animation:none}.card .btn{opacity:0;animation:lineIn .8s forwards;margin-top:.8rem;min-width:10rem}.choice-row{display:flex;gap:.8rem;flex-wrap:wrap;justify-content:center;margin-top:.8rem}.choice-row .btn,.finale .card .btn{opacity:1;animation:none}.stats{display:grid;grid-template-columns:auto auto;gap:.2rem 1.2rem;margin:.6rem 0;font-size:.85rem;color:var(--muted)}.stats dt{text-align:right}.stats dd{margin:0;text-align:left;color:var(--fg)}.read-screen{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:1rem;background:#0009;animation:fade .2s}.read{width:min(36rem,100%);max-height:94dvh;overflow:auto;display:grid;justify-items:center;gap:.8rem;text-align:center;padding:1.6rem 1.4rem;background:#0c0e0eeb;border:1px solid var(--line);border-radius:4px;box-shadow:0 0 80px #000c}.read-wallText .read-text,.read-sound .read-text{font:600 clamp(1.15rem,3.2vw,1.7rem)/1.5 var(--mono);letter-spacing:.12em;color:#cfd8d4;text-shadow:0 1px 0 #000,0 0 12px rgba(0,0,0,.8);text-transform:uppercase}.read.scratched .read-text{filter:contrast(1.1);opacity:.92}.read-note{background:#cfc4a0;color:#2a2418;border-color:#8c8160;transform:rotate(-.6deg)}.read-note .eyebrow{color:#5a4c2c}.read-note .read-text{font:1.15rem/1.65 var(--serif);text-align:left;white-space:pre-wrap;color:#2a2418}.read-text{margin:0;white-space:pre-wrap;max-width:100%;overflow-wrap:anywhere}.read-symbol,.clock-face{color:#d7e2e0}.read-clock .clock-face,.read-note .clock-face{color:inherit}.dwell{width:100%;height:4px;background:#ffffff1f;border-radius:2px;overflow:hidden}.dwell i{display:block;height:100%;background:var(--accent);transition:width .1s linear}.read-note .dwell{background:#0003}.dwell-note{margin:0;font-size:.8rem;color:var(--muted);min-height:1.2em}.read-note .dwell-note{color:#5a4c2c}.tabs{display:flex;gap:.3rem;margin-bottom:.6rem;border-bottom:1px solid var(--line)}.tab{appearance:none;cursor:pointer;background:transparent;border:0;border-bottom:2px solid transparent;padding:.5rem .9rem;color:var(--muted);min-height:40px}.tab.on{color:var(--fg);border-bottom-color:var(--accent)}.journal h3{margin:1rem 0 .4rem;font-size:.8rem;letter-spacing:.2em;color:var(--accent);text-transform:uppercase}.journal ul,.items{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}.entry{padding:.6rem .8rem;border:1px solid var(--line);border-radius:4px;background:var(--panel-2)}.entry-head{display:flex;justify-content:space-between;gap:.6rem;align-items:baseline}.entry p,.items p{margin:.3rem 0 0;font-family:var(--serif);font-size:1.05rem;white-space:pre-wrap}.items li{padding:.6rem .8rem;border:1px solid var(--line);border-radius:4px;background:var(--panel-2)}.goal{font:1.15rem var(--serif)}.map-canvas{width:100%;height:auto;max-height:60dvh;border:1px solid var(--line);border-radius:4px;background:#0b0f10;object-fit:contain}.puzzle{width:min(40rem,100%)}.question{font:1.12rem/1.6 var(--serif);margin:.4rem 0 .8rem}.reqs{list-style:none;margin:0 0 .8rem;padding:0;display:grid;gap:.2rem;font-size:.82rem}.reqs .met{color:var(--ok)}.reqs .unmet{color:var(--muted)}.choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.5rem;margin:.6rem 0}.choice{cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.6rem;min-height:52px;padding:.5rem .8rem;background:var(--panel-2);border:1px solid var(--line);border-radius:4px;text-align:left}.choice.on{border-color:var(--accent);background:#66e0ff29}.choice:disabled{opacity:.35;cursor:not-allowed}.slots{display:flex;gap:.5rem;justify-content:center;margin:.6rem 0;flex-wrap:wrap}.slot{min-width:3.4rem;height:3.4rem;padding:0 .6rem;display:inline-grid;place-items:center;border:1px dashed var(--line);border-radius:4px;background:#00000059;color:var(--muted)}.slot.filled{border-style:solid;border-color:var(--accent);color:var(--fg)}.pad-row{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;margin:.4rem 0}.pads{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin:.6rem 0}.pad{cursor:pointer;position:relative;height:6rem;border:1px solid var(--line);border-radius:4px;background:var(--panel-2);overflow:hidden;display:grid;place-items:start center;padding-top:.4rem;font-size:1.2rem}.pad i{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(0deg,#66e0ff73,#66e0ff14);pointer-events:none}.pad:active{border-color:var(--accent)}.statements{list-style:none;padding:0;margin:.6rem 0;display:grid;gap:.9rem}.statements p{margin:0 0 .4rem;font:italic 1.05rem var(--serif)}.form-fields{display:grid;gap:.2rem}.result{margin:.8rem 0 0;padding:.5rem .8rem;border-radius:4px;border:1px solid var(--line)}.result.ok{border-color:var(--ok);color:var(--ok)}.result.bad{border-color:var(--bad);color:#ffd9d3}.hint-list{margin:.8rem 0 0;padding-left:1.3rem;font:.98rem/1.55 var(--serif);color:#e8d9a0}.perf{position:fixed;right:.6rem;bottom:calc(.6rem + var(--safe-b));z-index:95;padding:.4rem .6rem;background:#000000c7;border:1px solid var(--line);font:11px/1.45 var(--mono);max-width:min(30rem,94vw);pointer-events:none;color:#bfe}.perf b{color:var(--ok)}.touch{position:fixed;inset:0;z-index:9;pointer-events:none;touch-action:none;user-select:none;-webkit-user-select:none}.touch-stick-zone{position:absolute;left:0;bottom:0;width:42%;height:55%;pointer-events:auto;touch-action:none;display:grid;place-items:end start;padding:0 0 calc(2.2rem + var(--safe-b)) calc(2.2rem + var(--safe-l))}.touch-stick-base{width:130px;height:130px;border-radius:50%;border:2px solid rgba(255,255,255,.28);background:#ffffff0d;display:grid;place-items:center}.touch-stick-knob{width:58px;height:58px;border-radius:50%;background:#66e0ff66;border:2px solid rgba(255,255,255,.5)}.touch-look-zone{position:absolute;inset:14% 0 0 42%;pointer-events:auto;touch-action:none}.touch-buttons{position:absolute;right:calc(1rem + var(--safe-r));bottom:calc(1.4rem + var(--safe-b));display:flex;flex-direction:column-reverse;gap:.7rem;align-items:center;pointer-events:none}.touch-btn{appearance:none;pointer-events:auto;width:56px;height:56px;border-radius:50%;border:2px solid rgba(255,255,255,.4);background:#00000080;font-size:1.4rem;display:grid;place-items:center;cursor:pointer}.touch-btn.big{width:78px;height:78px;font:700 1.6rem var(--mono)}.touch-btn.small{width:44px;height:44px;font-size:1.1rem;pointer-events:auto}.touch-btn.on,.touch-btn.active{border-color:var(--accent);background:#66e0ff40}.touch-top-left{position:absolute;left:calc(1rem + var(--safe-l));top:calc(5.2rem + var(--safe-t));display:flex;gap:.5rem;pointer-events:none}.touch-top-left .touch-btn,.hud-top-right .touch-btn{pointer-events:auto}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes lineIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes toast{0%{opacity:0;transform:translateY(8px)}8%{opacity:1;transform:none}88%{opacity:1}to{opacity:0}}@keyframes roomname{0%{opacity:0;letter-spacing:.1em}15%{opacity:1;letter-spacing:.25em}80%{opacity:1}to{opacity:0}}@keyframes drift{to{background-position:141px 141px,141px 141px}}@keyframes echo{0%,to{transform:translate(.06em,.02em)}50%{transform:translate(.14em,-.03em)}}html[data-motion=reduced] *,html[data-motion=reduced] *:before,html[data-motion=reduced] *:after{animation-duration:1ms!important;animation-delay:0s!important;transition:none!important}@media(prefers-reduced-motion:reduce){.title:before,.title:after,.menu-fx{animation:none}}@media(max-width:640px){.objective{max-width:52vw;font-size:.78rem}.pill.dim{display:none}.modal-head h2{font-size:1.15rem}.pads{gap:.35rem}}@media(max-height:480px)and (orientation:landscape){.prompt{bottom:calc(30% + var(--safe-b))}.modal{max-height:calc(100dvh - 1rem)}.menu-inner{padding-top:.6rem}.title{font-size:3rem}.slogan{margin-bottom:.8rem}}
