@font-face{font-family:local-mono;src:local("Cascadia Mono"),local("Consolas")}
:root{--bg:#081b19;--panel:#102622;--ink:#eee8d8;--mint:#8bcebb;--muted:#9cae9f;--gold:#c4a064;--line:#324940;--red:#f07a6a;font-family:Arial,sans-serif;color:var(--ink);background:var(--bg);color-scheme:dark}
*{box-sizing:border-box}body{margin:0}button,a,input,select{touch-action:manipulation}button{font:inherit;font-size:13px;cursor:pointer;border:1px solid var(--line);background:#122c26;color:var(--ink);padding:11px 16px;transition:background .15s,border-color .15s}button:hover{background:#23493c;border-color:var(--mint)}button:focus-visible,a:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--mint);color:#10251f;border-color:var(--mint);font-weight:700}button.primary:hover{background:#b6e4d3}button.primary span{margin-left:22px}button.text-button{border:0;background:transparent;padding:14px 0;color:var(--mint);text-decoration:underline;text-underline-offset:5px}a{color:var(--mint);text-underline-offset:4px}kbd{font:11px local-mono,monospace;padding:2px 4px;border:1px solid #587166;border-radius:2px;margin:0 2px;color:#c9d7cb}h1,h2,h3,p{margin-top:0}h2{font:36px Georgia,serif;letter-spacing:-.5px;margin-bottom:0}h3{font:27px Georgia,serif}small{font-size:11px}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 4vw;border-bottom:1px solid var(--line);max-width:1800px;margin:auto}.brand{display:flex;align-items:center;gap:12px;font:700 15px local-mono,monospace;text-decoration:none;letter-spacing:1.3px;color:var(--ink)}.brandmark{border:1px solid var(--mint);padding:6px 9px;font:23px Georgia,serif;color:var(--mint)}.brand small{display:block;font:9px Arial,sans-serif;color:var(--gold);letter-spacing:2px;padding-top:6px}nav{display:flex;gap:6px}nav button{background:transparent;border-color:transparent;font-size:12px}nav button[aria-pressed=true]{color:var(--mint)}.view{max-width:1480px;margin:0 auto}.view[hidden]{display:none}.eyebrow{font:11px local-mono,monospace;letter-spacing:2px;color:var(--gold);line-height:1.7}.intro{position:relative;min-height:min(760px,calc(100svh - 135px));overflow:hidden}.intro-art{position:absolute;inset:0;background:url('/assets/cover.png') right center/cover no-repeat;opacity:.83}.intro:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,25,23,.85),rgba(7,25,23,.2) 55%,transparent 75%);pointer-events:none}.intro-copy{position:relative;z-index:1;padding:65px 6%;max-width:660px}h1{font:900 clamp(55px,6.8vw,98px)/.91 local-mono,monospace;letter-spacing:-4px;margin:28px 0 25px;text-shadow:4px 4px #0c2928}h1 span{color:var(--mint)}.intro-tag{font:27px/1.2 Georgia,serif}.intro-detail{font-size:14px;line-height:1.8;color:#bed0be;margin-bottom:26px}.actions{display:flex;gap:10px;flex-wrap:wrap}.intro-controls{font-size:11px;color:#b6c4b6;margin-top:28px;line-height:2}.intro-bottom{position:absolute;bottom:18px;left:6%;right:4%;z-index:1;display:flex;justify-content:space-between;gap:25px;color:#a7b8a8;font:9px local-mono,monospace;letter-spacing:1px}.section-heading,.field-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:24px}.section-heading>p{font:12px local-mono,monospace;color:var(--mint);margin:0}.atlas-view{padding:32px 4vw 20px}.atlas-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:24px}.atlas-map{position:relative;align-self:start;overflow:hidden;border:1px solid #426452;isolation:isolate}.atlas-map>img{width:100%;display:block;filter:brightness(.83)}.map-caption{position:absolute;bottom:0;width:100%;padding:13px 15px;background:#081b19dc;font:10px local-mono,monospace;letter-spacing:2px;color:var(--gold)}.map-node{position:absolute;transform:translate(-50%,-50%);padding:7px 9px;background:#082621ed;border:1px solid #aac5a3;box-shadow:3px 3px #081919bb;font:10px local-mono,monospace;text-align:left;white-space:nowrap;z-index:1}.map-node small{display:block;font-size:8px;color:var(--gold);margin-bottom:3px}.map-node.active{background:#d3b978;color:#102019;border-color:#f5dfac;z-index:3}.map-node.active small{color:#394f3c}.map-node.cleared:after{content:' ✓';color:var(--mint)}.map-node.active.cleared:after{color:#163e2c}.atlas-detail{border-top:2px solid var(--gold);padding-top:20px}.atlas-detail h3{margin-bottom:15px;font-size:30px}.atlas-detail p{font-size:13px;line-height:1.7;color:#bbcab9}.atlas-detail .route{font:11px/1.8 local-mono,monospace;color:var(--gold)}.atlas-detail .boss-name{font-size:18px;color:var(--ink);margin-bottom:4px}.atlas-detail .actions{flex-direction:column;margin-top:22px}.atlas-detail .preview-label{font-size:11px;color:var(--mint);margin-top:20px}.atlas-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:22px}.atlas-foot p{font-size:12px;color:var(--muted);margin:0}.play-view{padding:22px 24px 14px;max-width:1330px}.field-heading{margin-bottom:16px;align-items:center}.field-heading h2{font-size:27px}.field-heading .eyebrow{font-size:10px;margin-bottom:5px}.field-actions{display:flex;gap:8px}.game-frame{position:relative;margin:auto;background:#000;max-width:1280px;box-shadow:0 0 0 1px #536a5b,0 14px 50px #0005;width:100%;aspect-ratio:16/9;overflow:hidden}canvas{width:100%;height:100%;image-rendering:pixelated;display:block;outline:none;touch-action:none}.game-status{display:flex;justify-content:space-between;gap:20px;margin:16px 0 9px;font:12px/1.5 local-mono,monospace;color:var(--mint)}#health{white-space:nowrap;color:var(--gold)}.controls-strip{display:flex;gap:15px;justify-content:center;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:12px;color:#a5b5a5;font-size:10px}.boss-cue{font:12px/1.5 local-mono,monospace;color:var(--gold);margin:9px 0 14px;text-align:center;min-height:18px}.touch-controls{display:none;justify-content:space-between;gap:8px;margin:15px 0}.touch-controls>div{display:flex;gap:6px}.touch-controls button{min-width:48px;height:48px;padding:8px;touch-action:none;user-select:none;-webkit-user-select:none}.touch-controls button.pressed{background:var(--mint);color:#081b19}.site-footer{max-width:1480px;margin:auto;padding:18px 4vw;display:flex;justify-content:space-between;gap:24px;font-size:10px;color:#819583;line-height:1.6;border-top:1px solid #233c30}.site-footer a{color:#a7b7a2}dialog{padding:0;border:1px solid #60785d;background:#102620;color:var(--ink);max-width:min(780px,94vw);width:100%;max-height:90svh;box-shadow:0 20px 100px #0008}dialog::backdrop{background:#020c0ae8}dialog.research-dialog{max-width:min(1430px,96vw);width:96vw}.modal-inner{padding:35px}.modal-top{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:22px}.modal-top h2{font-size:28px}.close{padding:8px 13px}.modal-inner>p{line-height:1.7;color:#bfccba;font-size:14px}.modal-inner .actions{margin-top:25px}.choice-list{display:grid;gap:10px;margin:24px 0}.choice-list button{text-align:left;line-height:1.6}.choice-list strong{display:block;color:var(--mint);font-size:16px}.choice-list small{display:block;color:#c1cebc;font-size:12px}.choice-list button.correct{border-color:var(--mint);background:#214d37}.error{color:#ffb299;font-size:13px;min-height:22px}.source-links{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:11px;line-height:1.7;margin:18px 0}.research-top{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line);gap:15px}.research-top h2{font-size:24px}.research-layout{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:400px}.research-list{max-height:71svh;overflow:auto;padding:14px;border-right:1px solid var(--line)}.research-list button{border:0;background:transparent;text-align:left;display:block;width:100%;font-size:11px;line-height:1.5;padding:10px}.research-list button.active{background:#284333;color:var(--mint)}.research-main{padding:18px 24px;overflow:auto;max-height:73svh}.research-main>img{width:100%;height:auto;background:#f7f0e1;display:block}.research-main .research-caption{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:15px 0 7px}.research-caption p{font:11px local-mono,monospace;color:var(--gold);margin:0}.research-main details{font-size:13px;line-height:1.7;color:#b8c8b4;border-top:1px solid var(--line);padding:12px 0}.research-main details p{margin:10px 0}.research-main summary{cursor:pointer;color:var(--mint)}select{background:#0c211c;color:var(--ink);border:1px solid var(--line);padding:8px;max-width:200px}.setting-row{padding:14px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:14px}.setting-row p{font-size:11px;color:var(--muted);margin:5px 0}.key-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;margin:20px 0}.key-grid label{font:12px local-mono,monospace;display:flex;justify-content:space-between;align-items:center}.key-grid button{min-width:82px}.clear-stamp{font:12px local-mono,monospace;color:var(--gold);letter-spacing:2px;border:1px solid var(--gold);display:inline-block;padding:8px 12px;margin-bottom:20px}.decision{margin-top:18px;padding:16px;border-left:2px solid var(--mint);background:#17382d;font-size:13px;line-height:1.7}.decision:empty{display:none}#loading{position:fixed;inset:0;background:#081b19;display:grid;place-items:center;z-index:20;color:var(--mint);font:15px local-mono,monospace}#loading[hidden]{display:none}
@media(min-width:1400px){.play-view{max-width:1330px}}@media(max-width:1000px){.atlas-layout{grid-template-columns:1fr}.atlas-detail{display:grid;grid-template-columns:1fr 1fr;column-gap:25px}.atlas-detail h3,.atlas-detail .eyebrow,.atlas-detail .route{grid-column:1}.atlas-detail .actions{grid-column:2;grid-row:2/6}.atlas-detail .preview-label{grid-column:1/3}.intro-copy{padding-top:45px}.topbar{padding:0 20px}nav button{padding:8px;font-size:11px}nav kbd{display:none}.intro-art{background-position:66% center;opacity:.6}.intro-copy{max-width:590px}.research-layout{grid-template-columns:170px minmax(0,1fr)}}
@media(max-width:700px){.topbar{height:auto;min-height:80px;padding:14px 15px;flex-wrap:wrap;gap:10px}.brand{font-size:12px}nav{gap:0}nav button{padding:6px 8px}nav #fullscreen-nav{display:none}.intro{min-height:640px}.intro-copy{padding:45px 25px}.intro-copy h1{font-size:75px}.intro-tag{font-size:25px}.intro-art{background-position:62% center;opacity:.43}.intro-bottom{left:25px;font-size:8px}.intro-bottom span:last-child{display:none}.atlas-view{padding:25px 14px}.section-heading{align-items:center}.section-heading h2{font-size:28px}.map-node{font-size:8px;padding:5px;max-width:105px;white-space:normal}.map-node small{display:none}.map-caption{font-size:8px;padding:7px}.atlas-detail{display:block}.atlas-detail .actions{flex-direction:row}.field-heading h2{font-size:22px}.field-heading .eyebrow{font-size:9px}.field-actions button{font-size:10px;padding:8px}.play-view{padding:17px 10px}.game-status{font-size:10px;gap:10px}.controls-strip{display:none}.touch-controls{display:flex}.site-footer{flex-direction:column;gap:5px;padding:15px}.modal-inner{padding:23px}.modal-top h2{font-size:24px}.research-top{padding:14px;flex-wrap:wrap}.research-top h2{font-size:20px}.research-layout{display:block}.research-list{display:none}.research-main{padding:10px;max-height:74svh}.research-caption{flex-wrap:wrap}.key-grid{grid-template-columns:1fr}.atlas-foot{align-items:start}.atlas-foot p{font-size:11px}.boss-cue{font-size:10px}}
@media(pointer:coarse){.touch-controls{display:flex}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto;transition:none!important}}
/* Keep the complete playfield and instructions in a normal desktop viewport. */
.research-main>img{width:auto;max-width:100%;max-height:calc(90svh - 245px);margin:0 auto;object-fit:contain}
@media(min-width:701px){
 body[data-view="play"] .topbar{height:60px}
 .play-view{max-width:min(1330px,calc((100svh - 278px) * 1.77778 + 48px));min-width:620px}
 .controls-strip{gap:8px 13px}
 .field-heading{margin-bottom:12px}
 .game-status{margin-top:12px}
}
@media(max-width:700px) and (orientation:landscape){
 .topbar{min-height:40px;padding:5px 12px}.brand small{display:none}
 .play-view{padding:7px 10px}.field-heading{margin-bottom:8px}.field-heading h2{font-size:16px}
 .field-heading .eyebrow{display:none}.game-frame{max-height:calc(100svh - 140px);width:auto;max-width:calc((100svh - 140px) * 1.77778)}
 .game-status,.boss-cue{margin:5px 0;font-size:9px}.touch-controls{margin:7px 0}.touch-controls button{height:36px}
}

.touch-hint{display:none;font:11px/1.6 Arial,sans-serif;color:var(--muted);margin:4px 0 0}
.touch-controls,#field-terminal{touch-action:none;-webkit-touch-callout:none}
body[data-view="play"] .topbar nav{display:none}
.evidence-prompt{padding-left:15px;border-left:2px solid var(--mint)}
@media(max-width:700px),(pointer:coarse){
 .touch-controls{gap:16px;align-items:end;max-width:540px;margin:15px auto 8px}
 .touch-controls>div{display:grid;grid-template-columns:repeat(2,minmax(44px,1fr));gap:7px;width:min(43%,180px)}
 .touch-controls button{min-width:44px;min-height:48px;height:48px;padding:8px 5px;font-weight:700;font-size:12px;border-radius:7px}
 .touch-controls [data-input="fire"]{grid-column:1/-1;background:#294b3c;border-color:var(--mint);font-size:14px}
 .touch-controls button.pressed{background:var(--mint);color:var(--bg)}
 .touch-hint{display:block}
 .play-view{padding-bottom:max(14px,env(safe-area-inset-bottom))}
 .field-heading{gap:10px}.field-actions{gap:6px}.field-actions button{min-height:44px}
 .field-actions kbd{display:none}
 .field-actions #field-terminal{display:none}
 .touch-directions button{height:64px}
}
@media(max-width:380px){
 .topbar{padding-inline:10px}nav{flex-wrap:wrap}nav button{min-height:40px}
 .field-actions{width:100%}.field-actions button{flex:1;font-size:11px}
 .field-telemetry{gap:5px 8px}.touch-controls{gap:14px}
}
/* A phone on its side gets two thumb pads beside, never over, the playfield. */
@media(orientation:portrait) and (max-width:700px) and (max-height:700px){
 body[data-view="play"] .topbar{padding:7px 10px;gap:5px;min-height:0}
 body[data-view="play"] .brand{font-size:10px;gap:8px}
 body[data-view="play"] .brandmark{font-size:19px;padding:3px 6px}
 body[data-view="play"] .brand small{display:none}
 body[data-view="play"] nav button{min-height:30px;padding:5px 8px}
 body[data-view="play"] .play-view{padding:8px 10px max(8px,env(safe-area-inset-bottom))}
 body[data-view="play"] .field-heading{margin-bottom:8px;gap:6px}
 body[data-view="play"] .field-heading h2{font-size:20px}
 body[data-view="play"] .field-heading .eyebrow{display:none}
 body[data-view="play"] .field-actions button{min-height:44px}
 body[data-view="play"] .game-status{font-size:9px;margin:8px 0 5px;line-height:1.3}
 body[data-view="play"] .field-telemetry{font-size:8px;gap:4px 8px;padding:5px 0}
 body[data-view="play"] .touch-controls{margin:8px auto 0}
 body[data-view="play"] .touch-hint,body[data-view="play"] .site-footer{display:none}
}
@media(orientation:landscape) and (max-height:600px),(orientation:landscape) and (pointer:coarse) and (max-width:1300px){
 body[data-view="play"]{overflow:hidden}
 body[data-view="play"] .topbar{display:none}
 body[data-view="play"] .brand{font-size:10px;gap:7px}
 body[data-view="play"] .brandmark{font-size:19px}
 body[data-view="play"] .brand small{display:none}
 body[data-view="play"] nav{gap:0;flex-wrap:nowrap}
 body[data-view="play"] nav button{padding:6px 8px;min-height:34px;font-size:10px}
 body[data-view="play"] nav #fullscreen-nav{display:none}
 body[data-view="play"] .play-view{display:grid;grid-template-columns:100px minmax(0,1fr) 100px;gap:6px 10px;width:100%;max-width:none;min-width:0;padding:6px max(10px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));height:100svh;align-content:start}
 body[data-view="play"] .field-heading{grid-column:1/-1;margin:0;min-height:36px;flex-wrap:nowrap;gap:8px}
 body[data-view="play"] .field-heading h2{font-size:18px;white-space:nowrap}
 body[data-view="play"] .field-heading .eyebrow{display:none}
 body[data-view="play"] .field-actions{width:auto;flex-wrap:nowrap;gap:5px}
 body[data-view="play"] .field-actions button{font-size:10px;min-height:36px;padding:6px 9px;flex:none}
 body[data-view="play"] .field-actions #field-terminal{display:none}
 body[data-view="play"] .game-frame{grid-column:2;grid-row:2;width:100%;max-width:calc((100svh - 113px - env(safe-area-inset-bottom)) * 1.77778);max-height:none;aspect-ratio:16/9;align-self:center}
 body[data-view="play"] .touch-controls{display:contents}
 body[data-view="play"] .touch-controls>div{display:grid;grid-template-columns:repeat(2,minmax(44px,1fr));gap:6px;width:auto;margin:0;grid-row:2;align-self:center}
 body[data-view="play"] .touch-directions{grid-column:1}
 body[data-view="play"] .touch-actions{grid-column:3}
 body[data-view="play"] .touch-controls button{min-height:46px;height:46px;min-width:44px;padding:6px 2px;font-size:10px}
 body[data-view="play"] .touch-controls [data-input="fire"]{grid-column:1/-1;background:#294b3c;border-color:var(--mint)}
 body[data-view="play"] .touch-controls button.pressed{background:var(--mint);color:var(--bg)}
 body[data-view="play"] .game-status{grid-column:1/-1;grid-row:3;margin:0;font-size:9px;line-height:1.3;gap:12px;min-width:0}
 body[data-view="play"] #objective{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 body[data-view="play"] .boss-cue{grid-column:1/-1;grid-row:4;margin:0;font-size:9px;min-height:0;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 body[data-view="play"] .field-telemetry{grid-column:1/-1;grid-row:5;font-size:8px;padding:0;gap:5px;line-height:1.3;flex-wrap:nowrap}
 body[data-view="play"] .controls-strip,body[data-view="play"] .touch-hint,body[data-view="play"] .site-footer{display:none}
}
