:root{--ink: #0e1116;--ink-2: #171d26;--steel: #7e8a99;--steel-dim: #4a535f;--brass: #c8a04a;--paper: #e7e3d9;--paper-dim: #b3ada0;--monitor: #5fb0d6;--alarm: #c8563c;--rule: #232b35}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;overflow:hidden;background:radial-gradient(120% 60% at 50% 0%,#171d26,#0e1116 62%) fixed;color:var(--paper);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.app{max-width:1680px;height:100vh;margin:0 auto;padding:18px 24px 20px;display:flex;flex-direction:column;gap:12px;min-height:0}.app-header{flex:none;border-bottom:1px solid var(--rule);padding-bottom:10px}.app-eyebrow{font-size:12px;letter-spacing:.1em;color:var(--brass)}.app-header h1{font-family:Georgia,Iowan Old Style,serif;font-size:24px;margin:.25em 0 .1em;color:#fff}.app-sub{margin:0;color:var(--steel);font-size:13px}.mode-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin-top:8px;font-size:12.5px}.mode-tabs{display:inline-flex;border:1px solid var(--rule);border-radius:3px;overflow:hidden}.mode-tabs button{background:#1a2029;color:var(--steel);border:none;padding:5px 12px;font:inherit;cursor:pointer}.mode-tabs button+button{border-left:1px solid var(--rule)}.mode-tabs button:hover{color:var(--paper)}.mode-tabs .mode-tab--on{background:#c8a04a24;color:var(--brass)}.mode-countdown{color:var(--steel)}.mode-warn{color:#e0a68e}.app--loading{justify-content:center;align-items:center}.main-row{flex:1;min-height:0;display:flex;gap:20px;align-items:stretch}.board-frame{position:relative;flex:1;min-width:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#12171f,#0b0e13);border:1px solid #212833;border-radius:4px;box-shadow:0 24px 60px -24px #000000e6,inset 0 1px #ffffff0a;padding:20px;overflow:hidden;transition:border-color .18s ease-out,box-shadow .18s ease-out}.board-frame--alarm{border-color:#c8563c8c;box-shadow:0 24px 60px -24px #000000e6,inset 0 0 48px #c8563c2e,inset 0 1px #ffffff0a}.board-frame--flash{animation:board-alarm-flash .65s ease-out}@keyframes board-alarm-flash{0%{box-shadow:0 24px 60px -24px #000000e6,inset 0 0 80px #c8563c6b}to{box-shadow:0 24px 60px -24px #000000e6,inset 0 0 48px #c8563c2e}}.board{width:100%;height:100%;max-width:100%;max-height:100%;display:block}.board--alarm .alarm-vignette{animation:vignette-pulse .65s ease-out}.board--alarm .lens-pulse{animation:lens-ring .7s ease-out infinite}@keyframes vignette-pulse{0%{stroke-opacity:.85;stroke-width:28}to{stroke-opacity:.45;stroke-width:18}}@keyframes lens-ring{0%{opacity:.8;r:4}to{opacity:0;r:10}}.cam-tell{animation:cam-tell-pulse .5s ease-in-out infinite}@keyframes cam-tell-pulse{0%,to{opacity:.25;r:4}50%{opacity:.85;r:6}}.legal-ghost{pointer-events:none}.hud{background:var(--ink-2);border:1px solid var(--rule);border-radius:4px;padding:18px 20px;width:300px;flex:none;overflow-y:auto;display:flex;flex-direction:column;gap:18px}.hud-row{display:flex;flex-direction:column;align-items:stretch;gap:10px}.hud-stat{display:flex;flex-direction:column;gap:4px}.hud-stat--wide{flex:1;min-width:180px}.hud-label{font-size:10.5px;letter-spacing:.08em;color:var(--steel-dim)}.hud-value{font-size:20px;color:var(--paper)}.hud-dim{color:var(--steel-dim);font-size:11px}.noise-bar{position:relative;width:100%;height:10px;background:#0a0d11;border:1px solid var(--rule);border-radius:2px;overflow:visible}.noise-bar--flash .noise-fill{filter:brightness(1.35)}.noise-fill{height:100%;transition:width .12s ease-out;border-radius:1px}.noise-chip{position:absolute;right:0;top:-18px;font-size:11px;font-weight:600;letter-spacing:.04em;color:#e0704f;animation:noise-chip-pop .7s ease-out forwards;pointer-events:none;white-space:nowrap}.noise-chip--vault{color:var(--brass)}@keyframes noise-chip-pop{0%{opacity:0;transform:translateY(4px)}18%{opacity:1;transform:translateY(0)}70%{opacity:1}to{opacity:0;transform:translateY(-6px)}}.hud-value--loot{color:var(--brass)}.noise-fill--safe{background:linear-gradient(90deg,#4a6b57,#22362b)}.noise-fill--suspicious{background:linear-gradient(90deg,#b3903f,#5d4a1e)}.noise-fill--scan{background:linear-gradient(90deg,#b86a45,#5e3220)}.noise-fill--alarm{background:linear-gradient(90deg,#e0704f,#7d2c1c)}.hud-row--controls{flex-direction:row;flex-wrap:wrap;gap:10px}.hud-lock{background:#c8a04a14;border:1px solid var(--brass);border-radius:3px;padding:8px 12px}.hud button,.lock-actions button{background:#1a2029;color:var(--paper);border:1px solid var(--rule);border-radius:3px;padding:8px 14px;font-family:inherit;font-size:13px;cursor:pointer}.hud button:hover:not(:disabled),.lock-actions button:hover:not(:disabled){border-color:var(--brass);color:var(--brass)}.hud button:disabled,.lock-actions button:disabled{opacity:.4;cursor:default}.hud-hint{color:var(--steel-dim);font-size:11.5px;margin-left:auto}.hud-status{padding:10px 14px;border-radius:3px;font-size:13.5px;border-left:3px solid var(--steel)}.hud-status--won{border-color:var(--brass);background:#c8a04a1a;color:var(--brass)}.hud-status--alarm{border-color:var(--alarm);background:#c8563c1f;color:#e0a68e}.hud-status--out_of_moves{border-color:var(--steel);background:#7e8a991a;color:var(--steel)}.exit-beacon{transform-box:fill-box;transform-origin:center;animation:exit-beacon 1.4s ease-out infinite}@keyframes exit-beacon{0%{transform:scale(.7);stroke-opacity:.9}to{transform:scale(1.5);stroke-opacity:0}}.radar-exit{animation:lock-glow .7s ease-in-out infinite alternate}.hud-objective{display:flex;flex-direction:column;gap:6px}.hud-objective ol{margin:0;padding-left:20px;font-size:12.5px;color:var(--steel);display:flex;flex-direction:column;gap:3px}.objective--now{color:var(--paper)}.objective--done{color:var(--steel-dim);text-decoration:line-through}.objective-warn,.objective-go{font-size:12px;padding:5px 10px;border-radius:3px}.objective-warn{color:#e0a68e;background:#c8563c1f}.objective-go{color:#8fd4f5;background:#5fb0d61f}.end-overlay{background:#080b1099;z-index:6}.end-modal{width:340px;max-width:100%;background:#171d26f7;border:1px solid var(--steel);border-top-width:4px;border-radius:6px;box-shadow:0 20px 50px -10px #000c;padding:18px 20px;display:flex;flex-direction:column;gap:12px;animation:lock-pop .22s ease-out}.end-modal--won{border-color:var(--brass)}.end-modal--alarm{border-color:var(--alarm)}.end-title{font-size:22px;letter-spacing:.15em}.end-modal--won .end-title{color:var(--brass)}.end-modal--alarm .end-title{color:#e0704f}.end-modal--out_of_moves .end-title{color:var(--steel)}.end-reason,.end-verdict{margin:0;font-size:13px;color:var(--paper-dim)}.end-verdict{color:#e8c887}.end-stats{display:flex;gap:18px}.end-stats>div{display:flex;flex-direction:column;gap:2px}@media (prefers-reduced-motion: reduce){.exit-beacon,.radar-exit,.end-modal{animation:none}}.intro-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;padding:16px;background:#080b10b8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.intro-modal{width:520px;max-width:100%;max-height:100%;overflow-y:auto;background:#171d26fa;border:1px solid var(--brass);border-top-width:4px;border-radius:6px;box-shadow:0 24px 60px -12px #000000d9;padding:22px 24px;display:flex;flex-direction:column;gap:16px;animation:lock-pop .22s ease-out}.intro-modal section{display:flex;flex-direction:column;gap:6px}.intro-modal h3{margin:0;font-weight:400}.intro-title{margin:-8px 0 0;font-size:26px;letter-spacing:.08em;color:var(--brass);font-weight:400}.intro-lead,.intro-note{margin:0;font-size:13px;line-height:1.55;color:var(--paper-dim)}.intro-note{font-size:12px;color:var(--steel)}.intro-list{margin:0;padding-left:20px;font-size:13px;line-height:1.55;color:var(--paper);display:flex;flex-direction:column;gap:4px}.intro-keys{display:grid;grid-template-columns:max-content 1fr;gap:5px 14px;font-size:12.5px;color:var(--paper-dim)}.intro-keys kbd{border:1px solid var(--steel-dim);border-radius:3px;padding:0 5px;font-size:11.5px;font-family:inherit;color:var(--brass)}.intro-brass{color:#e8c887}.intro-blue{color:#8fd4f5}.intro-red{color:#f2a37f}.link-button{background:none;border:none;padding:0;font:inherit;color:var(--monitor);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.link-button:hover{color:#8fd4f5}.intro-modal .lock-actions button{padding:10px 18px}@media (prefers-reduced-motion: reduce){.intro-modal{animation:none}}.hint-panel{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--rule);padding-top:14px}.hint-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.hint-count--used{color:#e0a68e}.hint-tips{margin:0;padding-left:20px;font-size:12.5px;line-height:1.5;color:var(--paper);display:flex;flex-direction:column;gap:5px}.hint-offroute,.hint-steps-note{font-size:12px;line-height:1.45;padding:6px 10px;border-radius:3px}.hint-offroute{color:#e0a68e;background:#c8563c1f}.hint-steps-note{color:#e8c887;background:#c8a04a1a}.hint-actions{display:flex;flex-wrap:wrap;gap:8px}.hud .hint-actions button{padding:6px 10px;font-size:12px}.hint-note{font-size:11px;color:var(--steel-dim)}.hint-arrow{animation:lock-glow .9s ease-in-out infinite alternate}.end-modal{max-height:100%;overflow-y:auto}.end-score{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--rule);padding-top:10px}.end-score-main{display:flex;align-items:baseline;gap:10px}.end-score-value{font-size:28px;color:var(--brass)}.end-record{font-size:10px;letter-spacing:.15em;color:#0e1116;background:var(--brass);padding:2px 6px;border-radius:2px}.end-breakdown{display:grid;grid-template-columns:1fr auto;gap:2px 16px;margin:0;font-size:12px;color:var(--paper-dim)}.end-breakdown dd{margin:0;text-align:right}.end-breakdown .end-raw{color:var(--paper);border-top:1px dashed var(--rule);padding-top:2px}.end-breakdown .end-final{color:#e8c887;border-top:1px solid var(--rule);padding-top:2px}.end-bests{display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--paper-dim)}.end-bests strong{color:var(--paper);font-weight:400}@media (prefers-reduced-motion: reduce){.hint-arrow{animation:none}}.lock-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#080b1073;z-index:5;padding:16px}.lock-modal{width:340px;max-width:100%;max-height:100%;overflow-y:auto;background:#171d26f5;border:1px solid var(--brass);border-radius:6px;box-shadow:0 20px 50px -10px #000c;padding:14px 16px;display:flex;flex-direction:column;gap:10px;animation:lock-pop .18s ease-out}@keyframes lock-pop{0%{transform:scale(.94);opacity:0}to{transform:scale(1);opacity:1}}.lock-head{display:flex;justify-content:space-between;align-items:baseline}.lock-dial{width:200px;max-width:100%;align-self:center}.lock-ring{transition:transform .22s ease-out}.lock-pointer--aligned{animation:lock-glow .9s ease-in-out infinite alternate}@keyframes lock-glow{0%{opacity:.6}to{opacity:1}}.lock-steps{margin:0;padding-left:20px;font-size:12px;color:var(--paper-dim);display:flex;flex-direction:column;gap:4px}.lock-step--now{color:var(--paper)}.lock-steps kbd{border:1px solid var(--steel-dim);border-radius:3px;padding:0 4px;font-size:11px;color:var(--brass)}.lock-hint{font-size:12px;line-height:1.5;color:var(--paper-dim);background:#c8a04a14;border-left:2px solid var(--brass);padding:6px 10px}.lock-hint strong{color:#e8c887;font-weight:400}.lock-feedback{font-size:12px;padding:4px 10px;border-radius:3px;animation:lock-pop .18s ease-out}.lock-feedback--wrong{color:#f2a37f;background:#c8563c26}.lock-feedback--solved{color:#e8c887;background:#c8a04a26}.lock-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.lock-btn--go{border-color:var(--brass)!important;color:#e8c887!important}@media (prefers-reduced-motion: reduce){.lock-ring,.lock-modal,.lock-feedback,.lock-pointer--aligned{transition:none;animation:none}}.radar{position:absolute;right:14px;bottom:14px;width:150px;padding:6px 6px 4px;background:#080c128c;border:1px solid rgba(95,176,214,.35);border-radius:4px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:.85;pointer-events:none}.radar--alarm{border-color:#c8563c99}.radar-svg{display:block;width:100%;height:auto}.radar-label{margin-top:3px;font-size:9px;letter-spacing:.2em;color:var(--monitor);opacity:.7;text-align:right}.radar-ping{transform-box:fill-box;transform-origin:center;animation:radar-ping 1.6s ease-out infinite}@keyframes radar-ping{0%{transform:scale(1);stroke-opacity:.8}to{transform:scale(3);stroke-opacity:0}}@media (prefers-reduced-motion: reduce){.radar-ping{animation:none}}@media (max-width: 760px){body{overflow:auto}.app{height:auto;min-height:100%}.main-row{flex-direction:column}.board-frame{min-height:320px}.hud{width:auto;flex-direction:column}.hud-row{flex-direction:row;flex-wrap:wrap}.radar{width:110px}}
