@font-face{font-family:Galmuri11;src:url('/assets/pixel/galmuri.woff2') format('woff2');font-display:swap}
:root{--cyan:#72d9f6;--amber:#ffcf61;--text:#f2f3df;--muted:#8d9ab7;--border:#34425b}
body,button,input,select,kbd,.run-stats strong,.next-trick strong,.result-value,.ready-count strong,.arena-corner{font-family:Galmuri11,monospace}
body{font-size:12px;background:#090e1e;background-image:linear-gradient(#111c3044 1px,transparent 1px),linear-gradient(90deg,#111c3044 1px,transparent 1px);background-size:32px 32px}body:before{display:none}img,canvas{image-rendering:pixelated;image-rendering:crisp-edges}button{font-weight:400!important;border-radius:0!important;box-shadow:inset 0 2px #ffffff12,0 3px #02050d;transition:background .1s,transform .1s}button:active{transform:translateY(2px);box-shadow:inset 0 1px #0005,0 1px #02050d}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #ffe696;outline-offset:3px}.topbar{border-bottom:2px solid #2d3d57}.brand{font-size:24px;letter-spacing:0;gap:12px}.brand b{font-weight:400}.brand small{letter-spacing:2px;font-size:10px}.brandmark{transform:none;height:32px;gap:4px}.brandmark i{width:10px;border-radius:0;box-shadow:3px 3px #030711}.topmeta{font-size:10px;letter-spacing:0}.version{font-size:10px}.status-dot{border-radius:0;box-shadow:2px 2px #203342}.icon-btn{font-size:11px;background:#1b2e49;border-color:#47657d}.home{margin-top:38px;gap:30px 52px}.eyebrow{font-size:11px;letter-spacing:1px;color:#81d8ee;font-weight:400}.intro h1{font-size:48px;font-weight:400;line-height:1.3;letter-spacing:-1px;text-shadow:4px 4px #020816}.intro>p{font-size:12px;color:#a7b5c9}.hero-scene{border:3px solid #455870;border-radius:0;height:266px;background:#101b30;box-shadow:5px 5px #020611,inset 0 0 0 3px #090f1f;isolation:isolate}.home-art{position:absolute;inset:0;width:100%;height:100%;z-index:-1}.hero-ship{width:96px;height:96px;filter:drop-shadow(0 8px 0 #0004);animation:pixel-float 2.8s steps(3,end) infinite}.ship-hunt{width:96px;filter:drop-shadow(0 8px 0 #0004);animation-delay:-1s}.scene-enemy{width:48px;height:48px}.scene-coordinate{font-size:8px;letter-spacing:0}.scene-label{font-size:10px;letter-spacing:0}.scene-label b{font-size:10px;margin-top:3px}.scene-lane{bottom:40px}.scene-link{border-radius:0;width:28px;height:28px;box-shadow:3px 3px #020815;font-size:14px;background:#1c3550}.scene-range{border-radius:50%;border:2px dashed #ffcf6144;width:140px;height:140px}.scene-path{box-shadow:none;height:3px;background:#ec6581}.scene-bullet{border-radius:0;width:4px;height:4px;box-shadow:2px 2px #f7cebd}.scene-caption{height:31px;background:#091122;border-color:#34455d;font-size:10px}.scene-caption b{font-size:8px;letter-spacing:0}.pilot-tag{font-size:8px;letter-spacing:0}.pilot-tag kbd{font-size:10px}.orbit{display:none}.goal{padding-top:17px}.goal>span{font-size:32px;text-shadow:2px 2px #050a14}.goal>div{font-size:12px}.goal small{font-size:10px}.setup{border:3px solid #3f5570;border-radius:0;background:#152238;box-shadow:6px 6px #020610,inset 0 0 0 2px #0a1325;padding:25px}.setup:before{height:4px;width:96px;left:24px;box-shadow:none}.setup h2{font-size:24px;font-weight:400;letter-spacing:0;line-height:1.5;margin-top:7px;text-shadow:2px 2px #040b18}.setup-sub{font-size:11px}.section-label{font-size:11px}.layout-option{border:2px solid #344a64;background:#0c182b;border-radius:0;padding:12px}.layout-option[aria-pressed=true]{background:#153546;border-color:#74d8ef;box-shadow:inset 0 0 0 2px #0b2233,0 3px #020611}.layout-option strong{font-size:14px;font-weight:400}.layout-option small{font-size:11px}.mini i{border-radius:0;font-size:9px}.mini img{width:24px;height:24px}.mini.horizontal img{width:32px;height:32px}.fields label{font-size:11px}input{font-size:12px;border-radius:0;border:2px solid #334b66;background:#081326;padding:11px 9px}#seed{font-family:Galmuri11,monospace;font-size:10px}.primary{background:#8be1e9;border:2px solid #c5fff0;color:#082a3c;font-size:14px;padding:13px 16px;box-shadow:inset 0 -3px #58a5bf,0 4px #020a16}.primary:hover{background:#b0f1ef}.secondary{font-size:12px;background:#253954;border:2px solid #4e6682;padding:10px 13px}.setup>.secondary{font-size:11px}.controls-guide{font-size:10px}.controls-guide kbd{font-size:10px;border-radius:0}.fine{font-size:10px}.feature-strip{padding:20px 0}.feature-strip img{width:48px;height:48px}.feature-strip h3{font-size:14px;font-weight:400}.feature-strip p{font-size:11px}.feature-strip small{font-size:9px;letter-spacing:0}.feature-glyph{font-size:40px}.home-bottom{gap:40px}summary,.local-records .section-label{font-size:12px}details p,.local-records li{font-size:11px}footer{font-size:9px}footer>span,footer>a,footer #credits{font-size:10px}
/* The arena takes the space; persistent rules and upgrades form a narrow status rail. */
body.in-game{background:#070d1a}body.in-game #app{max-width:none;padding:0 20px}body.in-game .topbar{height:44px;border-bottom:2px solid #33435e}body.in-game .brand{font-size:18px;gap:9px}body.in-game .brandmark{height:24px;width:23px}body.in-game .brandmark i{width:8px}body.in-game .topmeta{font-size:9px}body.in-game .version{font-size:9px}body.in-game .topbar .icon-btn{padding:4px 9px;font-size:10px}body.in-game footer{display:none}.game-top{height:72px;gap:15px}.run-context{display:flex;flex-direction:column;align-items:flex-start;gap:2px;font-size:10px}.run-context>span{letter-spacing:0;color:#9aacc3}.run-context>b{display:none}.run-context>small{font-family:Galmuri11,monospace;font-size:10px;border:0;background:none;padding:0;color:#5f7796}.run-stats{gap:32px}.run-stats>div{padding:0 20px;border-left:2px solid #31435d;gap:0;min-width:107px;align-items:flex-start}.run-stats small{font-size:10px;letter-spacing:0;color:#93a4c1}.run-stats strong{font-size:32px;line-height:1.25;font-weight:400;text-shadow:3px 3px #01040a;letter-spacing:0}.game-actions .compact{font-size:11px;padding:7px 10px}.game-actions kbd{display:none}.practice-toolbar{height:32px;margin:0 0 6px;font-size:11px;gap:7px}.practice-toolbar span{color:#8e9fba}.practice-toolbar select{font-family:Galmuri11,monospace;border-radius:0;font-size:10px;max-width:180px;padding:5px 7px;background:#182841;border-color:#425a77}.practice-toolbar .secondary,.practice-toolbar .text-btn{font-size:10px;padding:5px 9px}.play-layout{display:block}.side-panel{display:none}.compact-tricks{display:flex;flex-wrap:wrap;gap:5px;align-items:center;min-height:26px;padding:0 0 6px;font-size:10px;color:#7d95b1}.compact-tricks span{border:1px solid #344861;border-radius:0;background:#16233a;padding:2px 7px;color:#c0d2e0;white-space:nowrap}.compact-tricks span.evade{border-color:#2c6a89;color:#8cdef0}.compact-tricks span.hunt{border-color:#77633c;color:#ffdc91}.arenas{height:calc(100dvh - 176px - var(--compact-h,26px));min-height:400px;gap:10px}.practice-mode .arenas{height:calc(100dvh - 214px - var(--compact-h,26px))}.arenas.vertical .arena-panel{min-height:160px}.arena-panel{border:2px solid #4c7892;border-radius:0;background:#09192d;box-shadow:3px 3px #02060e;overflow:hidden}.arena-panel.hunt{border-color:#9a7747;background:#1c1b2c}.arena-panel[data-hit=true]{box-shadow:0 0 0 2px #ff5768,0 0 25px #ff456633}.arena-head{height:34px;flex-basis:34px;padding:0 10px;background:#132e45;border-bottom:2px solid #345b75;gap:6px}.hunt .arena-head{background:#3a3040;border-bottom-color:#6a534d}.arena-head>div{gap:7px}.role-ship{width:32px;height:32px;filter:none}.role-dot{display:none}.arena-head strong{font-size:12px;font-weight:400;text-shadow:2px 2px #071120}.arena-head strong small{display:inline;font-size:9px;letter-spacing:0;margin-left:5px}.lives{display:flex;align-items:center;gap:3px;font-size:12px;letter-spacing:0}.lives img{width:16px;height:16px;vertical-align:middle}.role-note{font-size:9px;color:#bda991}.keymap{font-size:10px;gap:4px!important}.keymap kbd{font-size:10px;min-width:16px;padding:0 3px;background:#081525;border:1px solid #58738b;border-bottom:2px solid #58738b;border-radius:0}.keymap b{font-size:9px}.canvas-wrap{background:#06101d}.arena-corner{display:none}.arena-foot{height:26px;flex-basis:26px;background:#10263a;padding:0 10px 4px;font-size:10px;color:#a6c3d5}.hunt .arena-foot{background:#2c2333}.xp-track{height:4px;background:#08101e}.xp-track i{box-shadow:none;transition:width .09s steps(6,end);background:var(--role)}.arena-panel.compact-view .arena-head{height:28px;flex-basis:28px}.arena-panel.compact-view .arena-foot{height:24px;flex-basis:24px}.arena-panel.compact-view .role-ship{width:24px;height:24px}.flight-strip{height:52px;display:flex;gap:16px;align-items:center;border-bottom:2px solid #243751;padding:8px 0 4px}.rule-clock{position:relative;display:flex;gap:9px;align-items:center;min-width:200px;padding:0 0 7px;color:#a2b5cf;font-size:10px}.rule-clock strong{font-size:18px;color:var(--amber);font-weight:400}.rule-clock b{font-size:10px;font-weight:400;color:#7f91b0;margin-left:auto}.rule-clock>i{position:absolute;left:0;right:0;bottom:1px;height:3px;background:#1d2a3f}.rule-clock em{display:block;height:100%;background:#dca958;width:0}.ability-strip{display:flex;gap:6px;align-items:center;flex:1;min-width:0;overflow:auto;white-space:nowrap;scrollbar-width:thin;max-height:38px;font-size:10px;color:#6f87a5}.ability-strip .ability-chip{display:flex;align-items:center;gap:4px;background:#10293b;border:1px solid #325871;font-size:10px;border-radius:0;padding:3px 7px;white-space:nowrap}.ability-strip .ability-chip.hunt{background:#332839;border-color:#6c513b}.ability-strip img{width:16px;height:16px}.danger-level{font-size:11px;color:#ff977a;border:1px solid #714047;background:#311e2c;padding:4px 8px;white-space:nowrap}.arena-panel .xp-track i{background-image:repeating-linear-gradient(90deg,transparent 0,transparent 8px,#030c1a33 8px,#030c1a33 10px)}
/* Pixel command windows. */
.overlay{background:#030814c9;backdrop-filter:blur(2px)}.dialog{border:3px solid #526884;border-radius:0;background:#14243c;box-shadow:7px 7px #01050d,inset 0 0 0 2px #071426;padding:30px}.dialog:before{left:24px;top:0;height:3px;width:80px}.dialog h2{font-size:24px;font-weight:400;letter-spacing:0;line-height:1.5}.dialog p,.dialog .dialog-sub{font-size:12px}.dialog .eyebrow{font-size:10px;letter-spacing:1px}.upgrade-card{border:2px solid #385d78;border-radius:0;min-height:260px;background:#102b40;padding:19px}.upgrade-card.hunt{background:#30283b;border-color:#8d724b}.upgrade-card:before{height:4px;width:44%}.upgrade-card .number{border-radius:0;width:24px;height:24px;line-height:20px;font-size:12px}.upgrade-card .glyph{border-radius:0;width:80px;height:80px;border:2px solid #486a83;background:#0b1d31;margin:5px 0 10px;box-shadow:3px 3px #050d1b}.upgrade-card .glyph img{width:48px;height:48px;filter:none}.upgrade-card strong{font-size:20px;font-weight:400;letter-spacing:0}.upgrade-card small{font-size:11px}.upgrade-card p{font-size:12px}.upgrade-card .rank{font-size:10px}.rank-bar i{height:4px;border-radius:0}.rule-art,.demo-box,.credits-box{border-radius:0;border-width:2px;background:#0b1b30}.rule-art img{width:64px;height:64px;filter:none}.rule-art span{font-size:32px}.trick-tag{border-radius:0;font-size:11px}.demo-box{font-size:12px}.demo-box span{font-size:10px}.ready-ships img{width:64px;height:64px}.ready-count strong{font-size:96px;text-shadow:5px 5px #071226}.ready-count p{font-size:12px}.result-crest img{width:48px;height:48px}.result-value{font-size:64px;letter-spacing:0;text-shadow:4px 4px #051426}.result-grid small{font-size:11px}.result-grid b{font-size:24px;font-weight:400}.result-status{border-radius:0;border-width:2px;font-size:11px!important}.toast{font-size:12px;border-radius:0;border-width:2px;box-shadow:4px 4px #020711;background:#18384b}.text-btn{font-size:11px;box-shadow:none}.credits-box h3{font-size:14px}.credits-box p{font-size:12px}
@keyframes pixel-float{0%,100%{transform:translate(-50%,-50%)}50%{transform:translate(-50%,-56%)}}
@media(min-width:1700px){.arenas{height:calc(100dvh - 176px - var(--compact-h,26px))}.practice-mode .arenas{height:calc(100dvh - 214px - var(--compact-h,26px))}}
@media(max-width:1100px){.run-stats{gap:8px}.run-stats>div{padding:0 12px;min-width:85px}.run-stats strong{font-size:28px}.run-context>small{display:none}.role-note{display:none}.arena-head strong small{display:none}.game-actions .compact{font-size:10px}.home{gap:25px}.intro h1{font-size:40px}.setup h2{font-size:20px}.setup{padding:21px}.controls-guide{font-size:9px}.controls-guide kbd{font-size:9px;min-width:14px}.topmeta .version{display:none}}
@media(max-width:800px){body.in-game #app{padding:0 12px}.game-top{height:68px;flex-wrap:nowrap}.run-context{font-size:9px;max-width:115px}.run-stats{gap:4px}.run-stats>div{padding:0 10px;min-width:75px}.run-stats strong{font-size:24px}.run-stats small{font-size:9px}.game-actions .compact{padding:7px;font-size:9px}.arenas{height:calc(100dvh - 172px - var(--compact-h,26px))}.practice-mode .arenas{height:calc(100dvh - 210px - var(--compact-h,26px))}.arena-head{padding:0 7px}.arena-head>div{gap:5px}.role-ship{width:24px;height:24px}.arena-head strong{font-size:11px}.lives img{width:12px;height:12px}.keymap{gap:2px!important}.keymap kbd{font-size:9px;min-width:13px;padding:0 2px}.keymap b{font-size:9px}.arena-foot{font-size:9px;padding:0 7px 4px}.rule-clock{min-width:167px;font-size:9px}.flight-strip{gap:10px}.danger-level{font-size:10px}.compact-tricks{font-size:9px;min-height:26px}.compact-tricks span{padding:2px 5px}.practice-toolbar{gap:5px;font-size:10px}.practice-toolbar select{max-width:166px}.home{gap:25px}.intro h1{font-size:44px}.setup{padding:24px}.setup h2{font-size:24px}.controls-guide{font-size:10px}.controls-guide kbd{font-size:10px}.feature-strip p{font-size:12px}.feature-strip h3{font-size:16px}.upgrade-card{padding:15px 12px;min-height:260px}.upgrade-card .glyph{width:64px;height:64px}.upgrade-card .glyph img{width:32px;height:32px}.upgrade-card strong{font-size:18px}.upgrade-card p{font-size:11px}.upgrade-card small{font-size:10px}.dialog{padding:24px}.dialog h2{font-size:22px}.dialog-actions .primary,.dialog-actions .secondary{font-size:12px}.side-panel{display:none}}
@media(max-width:560px){.game-top{height:92px;flex-wrap:wrap;padding:7px 0}.run-context{flex-basis:auto;max-width:130px}.run-stats{order:3;width:100%;justify-content:center}.run-stats>div{flex:1;align-items:center;border-left:1px solid #31435d}.run-stats strong{font-size:24px}.practice-toolbar{height:auto;min-height:58px}.practice-toolbar span{flex-basis:100%}.practice-mode .arenas{height:calc(100dvh - 264px - var(--compact-h,26px))}.arenas{height:calc(100dvh - 206px - var(--compact-h,26px))}.flight-strip{gap:7px}.rule-clock{min-width:148px;font-size:8px}.rule-clock strong{font-size:16px}.rule-clock b{font-size:8px}.danger-level{display:none}.ability-strip .ability-chip{font-size:8px}.arena-head .role-ship{display:none}.keymap kbd{font-size:8px;min-width:11px}.keymap b{font-size:8px}.arena-head strong{font-size:10px}.arena-foot{font-size:8px}.intro h1{font-size:36px}.controls-guide{flex-wrap:wrap}.dialog{padding:18px}.card-grid{gap:6px}.upgrade-card{padding:12px 8px;min-height:250px}.upgrade-card strong{font-size:14px}.upgrade-card small,.upgrade-card p{font-size:10px}.upgrade-card .glyph{width:48px;height:48px}.upgrade-card .glyph img{width:32px;height:32px}.upgrade-card .number{width:18px;height:18px;font-size:9px;line-height:15px}.upgrade-card .rank{font-size:8px}.dialog h2{font-size:20px}}
@media(prefers-reduced-motion:reduce){.hero-ship{animation:none}}

/* 0.4: smaller art and large UI, while readable labels and full arenas stay intact. */
.intro h1{font-size:36px}.hero-ship,.ship-hunt{width:72px;height:72px}.scene-enemy{width:36px;height:36px}.scene-range{width:105px;height:105px}.feature-strip img{width:36px;height:36px}.feature-glyph{font-size:30px}.mini img{width:18px;height:18px}.mini.horizontal img{width:24px;height:24px}
body.in-game .brand{font-size:14px}.run-stats strong{font-size:24px}.role-ship{width:24px;height:24px}.lives img{width:12px;height:12px}.arena-panel.compact-view .role-ship{width:18px;height:18px}.ability-strip img{width:12px;height:12px}
.dialog h2{font-size:18px}.upgrade-card{min-height:195px;padding:14px}.upgrade-card .glyph{width:60px;height:60px}.upgrade-card .glyph img{width:36px;height:36px}.upgrade-card strong{font-size:15px}.rule-art img,.ready-ships img{width:48px;height:48px}.ready-count strong{font-size:72px}.result-value{font-size:48px}.result-grid b{font-size:18px}.result-crest img{width:36px;height:36px}
@media(max-width:1100px){.intro h1{font-size:30px}.run-stats strong{font-size:21px}}
@media(max-width:800px){.intro h1{font-size:33px}.run-stats strong{font-size:18px}.role-ship{width:18px;height:18px}.upgrade-card{min-height:195px}.upgrade-card .glyph{width:48px;height:48px}.upgrade-card .glyph img{width:24px;height:24px}.upgrade-card strong{font-size:14px}}
@media(max-width:560px){.intro h1{font-size:27px}.run-stats strong{font-size:18px}.upgrade-card .glyph{width:36px;height:36px}.upgrade-card strong{font-size:12px}.upgrade-card .glyph img{width:24px;height:24px}}

/* A ratio trick must be allowed to shrink either panel. The arena itself keeps
   its minimum height; compact headers leave the smaller canvas playable. */
.arenas.vertical .arena-panel{min-height:0}
.arenas.horizontal .arena-panel{min-width:0}

/* Two continuous virtual arenas, each shown in two opposite corners. */
.arenas.cross-layout{position:relative;overflow:hidden;display:block}
.arenas.cross-layout>.cross-source{position:absolute!important;left:0;top:0;visibility:hidden;pointer-events:none;border:0;min-width:0;min-height:0;box-shadow:none}
.cross-source>.arena-head,.cross-source>.arena-foot{display:none}
.cross-grid{position:absolute;inset:0}
.cross-grid>.cross-tile{position:absolute;min-width:0;min-height:0;flex:none;box-sizing:border-box}
.cross-tile .arena-head strong{white-space:nowrap}
.cross-tile .arena-head:after{content:'A ↔ B';font-size:9px;color:#9badc4;white-space:nowrap}
.cross-tile[data-join=vertical] .arena-head:after{content:'A ↕ B'}
.cross-narrow .role-ship,.cross-narrow .role-note,.cross-narrow .lives{display:none}
.cross-narrow .arena-head{padding:0 5px;gap:4px}
.cross-narrow .arena-head:after{display:none}
.cross-narrow .keymap{gap:2px!important}
.cross-narrow .keymap kbd{font-size:9px;min-width:12px;padding:0 2px}
.cross-narrow .keymap b{font-size:8px}
.cross-narrow .arena-foot{font-size:8px;padding-left:5px;padding-right:5px}

/* 0.7: viewport changes scale only; every continuous arena is a fixed square. */
.arena-panel .canvas-wrap{position:relative;background:repeating-linear-gradient(135deg,#080f1c 0 12px,#0c1524 12px 13px);overflow:hidden}
.arena-panel .canvas-wrap>canvas{position:absolute;inset:auto;left:50%;top:50%;transform:translate(-50%,-50%);max-width:none;max-height:none;flex:none;box-shadow:0 0 0 1px #44607955}
.arena-panel .arena-corner{display:none}
.cross-source .canvas-wrap{width:100%;height:100%;flex:1}
.arenas{margin-inline:auto}
