:root{--accent: #e8c872;--bg: #07090c;--panel: rgba(10, 12, 16, .94);--line: rgba(232, 200, 114, .22);--text: #cfd4db;--dim: #6d7480;--bad: #ff2d55;--good: #5ad2c4}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;background:var(--bg);color:var(--text);overflow:hidden;font-family:IBM Plex Mono,SFMono-Regular,ui-monospace,Menlo,Consolas,monospace;-webkit-font-smoothing:antialiased;touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#app{position:fixed;inset:0}#scene{position:absolute;inset:0;width:100%;height:100%;display:block}:root{--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px)}.hidden{display:none!important}#hud{position:absolute;inset:0;pointer-events:none;z-index:10}.hud-tl{position:absolute;top:18px;left:20px}.zone-name{font-size:15px;letter-spacing:.16em;color:var(--accent);text-transform:uppercase;font-weight:700}.zone-sub{font-size:11px;color:var(--dim);letter-spacing:.06em;margin-top:3px}.hud-tc{position:absolute;top:18px;left:50%;transform:translate(-50%)}.objective{font-size:11.5px;letter-spacing:.13em;color:#9aa2ae;border:1px solid var(--line);padding:7px 16px;background:#07090cb8;backdrop-filter:blur(3px)}.hud-tr{position:absolute;top:18px;right:20px;text-align:right}.stat{display:flex;gap:10px;justify-content:flex-end;font-size:11.5px;margin-bottom:4px}.stat-k{color:var(--dim);letter-spacing:.1em}.stat-v{color:var(--accent);font-weight:700;min-width:44px;text-align:right}.hud-bl{position:absolute;bottom:22px;left:20px;width:262px}.int-label{display:flex;justify-content:space-between;font-size:10.5px;letter-spacing:.14em;color:var(--dim);margin-bottom:5px}.int-bar{height:9px;border:1px solid var(--line);background:#07090ccc}.int-fill{height:100%;width:100%;background:var(--good);transition:width .18s linear,background .3s}.pulse-row{display:flex;align-items:center;gap:9px;margin-top:10px}.pulse-label{font-size:10px;letter-spacing:.12em;color:var(--dim)}.pulse-dots{display:flex;gap:3px}.pulse-dots i{width:12px;height:4px;background:#e8c87229;border:1px solid var(--line);display:block}.pulse-dots i.on{background:var(--accent)}.hud-br{position:absolute;bottom:22px;right:20px;width:190px}.frag-title{font-size:10px;letter-spacing:.14em;color:var(--dim);margin-bottom:6px;text-align:right}.frag-list{list-style:none}.frag-list li{display:flex;justify-content:space-between;font-size:11px;padding:3px 0;color:#4d545f;border-bottom:1px dashed rgba(232,200,114,.1)}.frag-list li.got{color:var(--accent)}.frag-list li span{font-variant-numeric:tabular-nums}.crosshair{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#e8c8728c;font-size:16px;font-weight:300}.prompt{position:absolute;bottom:108px;left:50%;transform:translate(-50%);font-size:12.5px;letter-spacing:.08em;color:var(--text);border:1px solid var(--line);background:#07090cd9;padding:8px 18px}.prompt b{color:var(--accent)}.log{position:absolute;bottom:132px;left:20px;width:420px}.log-line{font-size:11px;letter-spacing:.05em;opacity:0;animation:logIn .25s forwards}.log-line.info{color:#7d848f}.log-line.good{color:var(--good)}.log-line.bad{color:var(--bad)}.log-line.code{color:var(--accent)}@keyframes logIn{to{opacity:1}}.vignette{position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 45%,rgba(0,0,0,.68) 100%)}.scanlines{position:absolute;inset:0;opacity:.16;background:repeating-linear-gradient(0deg,rgba(255,255,255,.06) 0 1px,transparent 1px 3px)}.damage-flash{position:absolute;inset:0;background:#ff2d5500}.damage-flash.flash{animation:dmg .4s ease-out}@keyframes dmg{0%{background:#ff2d5557}to{background:#ff2d5500}}.screen{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 0%,rgba(232,200,114,.05),transparent 55%),#050609f5;overflow-y:auto;padding:26px}.screen-inner{width:min(760px,100%)}.overlay{z-index:30;background:#040508e6}.brand{display:flex;align-items:baseline;gap:9px;margin-bottom:14px}.brand-mark{font-size:34px;color:var(--accent);line-height:1}.brand-text{font-size:13px;letter-spacing:.42em;color:var(--accent);font-weight:700}.title{font-size:clamp(30px,6vw,54px);line-height:.98;letter-spacing:-.01em;color:#eef1f5;font-weight:800;text-transform:uppercase}.title.win{color:var(--good)}.title.lose{color:var(--bad)}.lead{margin-top:16px;font-size:13.5px;line-height:1.75;color:#9aa2ae;max-width:66ch}.lead b{color:var(--accent);font-weight:600}.brief{list-style:none;margin:22px 0 6px}.brief li{display:flex;gap:14px;padding:9px 0;font-size:12.5px;line-height:1.6;border-top:1px solid rgba(232,200,114,.1);color:#9aa2ae}.brief li span{color:var(--accent);font-weight:700;letter-spacing:.08em}.brief li b{color:#dfe4ea;font-weight:600}.controls-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:22px 0;background:#e8c8721a;border:1px solid rgba(232,200,114,.1)}.controls-grid>div{background:#0a0c10;padding:12px 14px}.controls-grid b{display:block;font-size:11.5px;color:var(--accent);letter-spacing:.1em}.controls-grid span{font-size:10.5px;color:var(--dim)}.btn{font:inherit;font-size:12px;letter-spacing:.13em;text-transform:uppercase;padding:13px 26px;background:transparent;color:var(--text);border:1px solid var(--line);cursor:pointer;transition:background .16s,color .16s,border-color .16s}.btn:hover{background:#e8c87217;border-color:var(--accent);color:var(--accent)}.btn-primary{background:var(--accent);color:#0a0c10;font-weight:700;border-color:var(--accent)}.btn-primary:hover{background:#f2d78c;color:#0a0c10}.btn-primary:disabled{opacity:.32;cursor:not-allowed;background:transparent;color:var(--dim);border-color:var(--line)}.btn-ghost{font-size:11px;padding:10px 16px;color:var(--dim)}#menu .btn-primary{margin-top:6px;width:100%}.note{margin-top:14px;font-size:11px;color:var(--dim);line-height:1.6}.stats-block{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin:24px 0;background:#e8c8721a;border:1px solid rgba(232,200,114,.1)}.stats-block .st{background:#0a0c10;padding:14px}.stats-block .st span{display:block;font-size:9.5px;letter-spacing:.12em;color:var(--dim);margin-bottom:5px}.stats-block .st b{font-size:19px;color:var(--accent)}#pause .btn,#end .btn{margin-right:10px;margin-top:6px}.panel{width:min(720px,100%);background:var(--panel);border:1px solid var(--line);box-shadow:0 0 0 1px #0009,0 30px 80px #0009}.panel-head{padding:20px 24px 16px;border-bottom:1px solid rgba(232,200,114,.14)}.panel-kicker{font-size:10px;letter-spacing:.22em;color:var(--bad);font-weight:700}.panel-title{font-size:21px;margin-top:6px;color:#eef1f5;letter-spacing:-.005em}.panel-dim{font-size:11px;color:var(--dim);letter-spacing:.08em}.panel-body{padding:20px 24px}.panel-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 24px;border-top:1px solid rgba(232,200,114,.14)}.panel-status{font-size:10.5px;letter-spacing:.1em;color:var(--dim)}.panel-status.ok{color:var(--good)}.panel-status.bad{color:var(--bad)}.pz-prompt{font-size:13px;line-height:1.75;color:#a8b0ba}.pz-detail{margin-top:14px;padding:12px 14px;font-size:12px;line-height:1.7;background:#06080b;border-left:2px solid var(--accent);color:var(--accent);overflow-x:auto;white-space:pre-wrap}.pz-hint{margin-top:12px;padding:10px 14px;font-size:11.5px;color:var(--accent);background:#e8c87212;border:1px dashed var(--line)}.pz-row{display:flex;gap:10px;align-items:center;margin-top:18px;flex-wrap:wrap}.pz-input{font:inherit;font-size:17px;width:190px;padding:11px 14px;background:#06080b;border:1px solid var(--line);color:var(--accent);letter-spacing:.1em}.pz-input:focus{outline:none;border-color:var(--accent)}.pz-unit{font-size:11px;color:var(--dim);letter-spacing:.08em}.pz-options{display:flex;flex-direction:column;gap:6px;margin-top:18px}.pz-opt{font:inherit;text-align:left;display:flex;align-items:center;gap:14px;padding:13px 16px;background:#080a0e;border:1px solid rgba(232,200,114,.14);color:#a8b0ba;font-size:12.5px;cursor:pointer;transition:border-color .14s,background .14s,color .14s}.pz-opt:hover{border-color:var(--accent);color:#e6e9ee;background:#e8c8720d}.pz-opt b{color:var(--accent);font-size:11px}.pz-opt .tick{width:13px;height:13px;border:1px solid var(--line);flex:0 0 auto}.pz-opt.on{border-color:var(--good);background:#5ad2c414;color:#e6e9ee}.pz-opt.on .tick{background:var(--good)}.seq-build{margin-top:18px}.seq-label{font-size:10px;letter-spacing:.14em;color:var(--dim);margin-bottom:7px}.seq-slots{display:flex;gap:6px;flex-wrap:wrap}.seq-slot{min-width:112px;padding:9px 12px;font-size:11px;text-align:center;border:1px dashed var(--line);color:var(--dim)}.seq-slot.filled{border-style:solid;border-color:var(--accent);color:var(--accent);background:#e8c8720f}.glyph-read{text-align:center;padding:8px 0}.glyph-value{font-size:42px;font-weight:800;letter-spacing:.14em;color:var(--accent);text-shadow:0 0 26px rgba(232,200,114,.4)}.glyph-hint{font-size:12px;color:var(--good);letter-spacing:.12em;margin-top:6px}.muted{margin-top:18px;font-size:12px;color:var(--dim);line-height:1.7;max-width:52ch;margin-inline:auto}.touch{position:absolute;inset:0;z-index:15;pointer-events:auto;touch-action:none}.stick-base{position:absolute;width:112px;height:112px;border-radius:50%;border:2px solid rgba(232,200,114,.55);background:#e8c87212;box-shadow:inset 0 0 24px #e8c8721f;left:22%;top:72%;transform:translate(-50%,-50%);opacity:.75;transition:opacity .15s,border-color .15s;pointer-events:none}.stick-base.active{opacity:1;border-color:var(--accent)}.stick-knob{position:absolute;left:50%;top:50%;width:46px;height:46px;border-radius:50%;background:#e8c872a6;border:2px solid var(--accent);transform:translate(-50%,-50%);pointer-events:none}.touch-buttons{position:absolute;right:calc(16px + var(--safe-r));bottom:calc(20px + var(--safe-b));display:flex;align-items:flex-end;gap:12px}.tbtn{font:inherit;font-weight:700;color:var(--accent);background:#07090c8c;border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none}.tbtn:active{background:#e8c87247;color:#0a0c10}.tbtn.ready{border-color:var(--accent);color:#0a0c10;background:var(--accent);box-shadow:0 0 22px #e8c8728c}.tbtn-action{width:82px;height:82px;font-size:24px}.tbtn-pulse{width:62px;height:62px;font-size:19px}.tbtn-pause{width:44px;height:44px;font-size:15px;letter-spacing:.08em}.touch-hint{position:absolute;left:50%;bottom:calc(14px + var(--safe-b));transform:translate(-50%);font-size:10px;letter-spacing:.1em;color:var(--dim);pointer-events:none;transition:opacity .6s}.touch-hint.fade{opacity:0}body.touch-mode .hud-tc{top:calc(10px + var(--safe-t))}body.touch-mode .hud-tl{top:calc(10px + var(--safe-t));left:calc(12px + var(--safe-l))}body.touch-mode .hud-tr{top:calc(10px + var(--safe-t));right:calc(12px + var(--safe-r))}body.touch-mode .zone-name{font-size:13px}body.touch-mode .zone-sub{display:none}body.touch-mode .objective{font-size:10.5px;padding:5px 10px}body.touch-mode .stat{font-size:10.5px;margin-bottom:2px}body.touch-mode .stat-v{min-width:34px}body.touch-mode .hud-bl{left:calc(12px + var(--safe-l));top:calc(118px + var(--safe-t));bottom:auto;width:158px}body.touch-mode .int-label,body.touch-mode .pulse-label{font-size:9.5px}body.touch-mode .hud-br{right:calc(12px + var(--safe-r));bottom:calc(112px + var(--safe-b));width:132px}body.touch-mode .frag-title{font-size:9px;color:#9aa2ae}body.touch-mode .frag-list li{font-size:10px;color:#7d848f}body.touch-mode .frag-list li.got{color:var(--accent)}body.touch-mode .log{display:none}body.touch-mode .crosshair{font-size:22px;opacity:.75}body.touch-mode .prompt{bottom:calc(120px + var(--safe-b));font-size:11.5px;padding:7px 14px;max-width:78vw;text-align:center}body.touch-mode .screen{padding:calc(18px + var(--safe-t)) 18px calc(18px + var(--safe-b))}body.touch-mode .touch-controls-note{display:grid}body.touch-mode .controls-grid>div:not(:only-child){padding:9px 10px}body.touch-mode .title{font-size:clamp(26px,8vw,40px)}body.touch-mode .lead{font-size:12.5px}body.touch-mode .brief li{font-size:12px;padding:7px 0}body.touch-mode .btn{padding:16px 22px;font-size:13px}body.touch-mode .pz-input{font-size:18px;width:100%}body.touch-mode .pz-opt{padding:16px 14px;font-size:13px}body.touch-mode .pz-row{flex-direction:column;align-items:stretch}body.touch-mode .pz-row .btn{width:100%}body.touch-mode .seq-slot{min-width:92px}body.touch-mode .panel-foot{flex-direction:column;align-items:stretch;gap:8px}.touch-controls-note{display:none}body.touch-mode #menuNote{display:block}body.touch-mode #btnForceTouch{display:none}@media (max-width: 1024px){.hud-br{width:160px}.log{width:320px}}@media (max-width: 768px){.controls-grid,.stats-block{grid-template-columns:repeat(2,1fr)}.hud-tc,.hud-br{display:none}.log{width:260px}.panel-title{font-size:18px}.seq-slot{min-width:88px}}@media (max-width: 768px){body.touch-mode .hud-br,body.touch-mode .hud-tc{display:block}}@media (orientation: portrait) and (max-width: 900px){body.touch-mode .hud-tc{top:auto;bottom:calc(304px + var(--safe-b));left:50%;transform:translate(-50%);width:max-content;max-width:88vw}body.touch-mode .prompt{bottom:calc(364px + var(--safe-b))}body.touch-mode .hud-tr{top:calc(40px + var(--safe-t))}body.touch-mode .hud-bl{top:calc(120px + var(--safe-t));width:150px}body.touch-mode .hud-br{bottom:calc(126px + var(--safe-b));width:124px}.stick-base{width:128px;height:128px;left:24%;top:74%}.stick-knob{width:52px;height:52px}.tbtn-action{width:88px;height:88px}.tbtn-pulse{width:66px;height:66px}}@media (orientation: portrait) and (min-width: 600px) and (max-width: 900px){body.touch-mode .hud-tc{bottom:calc(360px + var(--safe-b))}body.touch-mode .prompt{bottom:calc(420px + var(--safe-b))}.stick-base{width:132px;height:132px;left:20%;top:76%}}@media (orientation: portrait) and (max-height: 700px){body.touch-mode .hud-tc{bottom:calc(272px + var(--safe-b))}body.touch-mode .prompt{bottom:calc(326px + var(--safe-b));font-size:10.5px}body.touch-mode .hud-bl{top:calc(104px + var(--safe-t));width:138px}.stick-base{width:112px;height:112px;top:72%}.stick-knob{width:46px;height:46px}.tbtn-action{width:78px;height:78px}}@media (orientation: landscape) and (max-height: 560px){body.touch-mode .hud-tl{top:calc(8px + var(--safe-t))}body.touch-mode .zone-name{font-size:11.5px}body.touch-mode .hud-tc{top:calc(8px + var(--safe-t))}body.touch-mode .objective{font-size:9.5px;padding:4px 8px}body.touch-mode .hud-tr{top:calc(8px + var(--safe-t))}body.touch-mode .stat{font-size:9.5px}body.touch-mode .hud-bl{top:calc(88px + var(--safe-t));bottom:auto;left:calc(12px + var(--safe-l));width:132px}body.touch-mode .hud-br{bottom:calc(92px + var(--safe-b));width:108px}body.touch-mode .prompt{bottom:calc(84px + var(--safe-b));font-size:10.5px}body.touch-mode .touch-hint{display:none}.stick-base{width:104px;height:104px;left:20%;top:66%}.stick-knob{width:44px;height:44px}.tbtn-action{width:74px;height:74px;font-size:21px}.tbtn-pulse{width:58px;height:58px}.tbtn-pause{width:40px;height:40px}body.touch-mode .controls-grid{grid-template-columns:repeat(3,1fr)}}@media (max-height: 640px){.title{font-size:clamp(24px,5vw,34px)}.lead{font-size:12.5px}.brief li{padding:6px 0;font-size:11.5px}}
