/* Layout: full-bleed isometric battlefield. A steel command bar runs along the top, the build and orders dock is a row of armored console keys at the bottom, alerts arrive as stencilled plates. Single dark look by choice: gunmetal consoles, amber accents, over a painted sea. */
:root{
  --walnut:#0a0e12; --panel:rgba(14,20,27,.92); --panel2:#18212a; --edge:#2b3a47; --edge2:#4b6274; --rim2:#9cc3da;
  --ink:#e6eef4; --dim:#9aacba; --amber:#ffb23e; --amber2:#e0821a; --you:#7fe39f; --foe:#ff6b55; --cyan:#79d6f2;
  --display:'Russo One', 'Arial Black', 'Helvetica Neue', sans-serif;
  --ui:'Rajdhani', 'Segoe UI', system-ui, sans-serif;
  --fell:'Share Tech Mono', ui-monospace, Menlo, monospace;
  color-scheme:dark;
}
html{height:100%;box-sizing:border-box;background:var(--walnut)}
*,*::before,*::after{box-sizing:inherit}
body{height:100%;margin:0;background:var(--walnut);color:var(--ink);font:600 15px/1.25 var(--ui);overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
button{font-family:var(--ui)}
#app{height:100%}
#board{position:relative;height:100%;overflow:hidden;background:#24404a}
#gl{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none}
#labels{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}
#vig{position:absolute;inset:0;pointer-events:none;z-index:1;background:radial-gradient(ellipse 75% 70% at 50% 50%,rgba(0,0,0,0) 60%,rgba(4,10,16,.42) 100%)}
.fl{position:absolute;left:0;top:0;font-family:var(--display);font-weight:700;font-size:11px;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;padding:3px 8px 4px;background:rgba(10,16,22,.84);border:1px solid currentColor;border-radius:2px;will-change:transform,opacity}
.fl.good{color:var(--you)} .fl.bad{color:var(--foe)} .fl.info{color:var(--amber)} .fl.cool{color:var(--cyan)} .fl.plain{color:var(--ink);border-color:var(--edge2)}
.fl.cd{color:#ffd0c4;border-color:#c0503e;font-size:12px}
.fl.ghost{color:var(--dim);border-style:dashed;font-size:10px}
#flash{position:absolute;inset:0;background:#fff3dc;opacity:0;pointer-events:none;z-index:4}

#top{position:absolute;left:0;right:0;top:0;display:flex;align-items:center;gap:8px 10px;flex-wrap:wrap;padding-block:10px 22px;padding-left:max(14px,env(safe-area-inset-left,0px));padding-right:max(14px,env(safe-area-inset-right,0px));background:linear-gradient(rgba(8,12,17,.92),rgba(8,12,17,.55) 70%,rgba(8,12,17,0));pointer-events:none;z-index:3}
#top > *{pointer-events:auto}
.brand{font-family:var(--display);font-weight:400;font-size:20px;letter-spacing:.12em;color:var(--amber);text-shadow:0 1px 0 #3a2508,0 0 14px rgba(255,178,62,.25);white-space:nowrap;line-height:1}
.res{display:flex;align-items:center;gap:7px;background:linear-gradient(#1c2731,#0f151b);border:1px solid var(--edge2);border-radius:3px;padding:4px 11px 4px 6px;font-variant-numeric:tabular-nums;white-space:nowrap;box-shadow:inset 0 0 0 1px rgba(170,210,240,.06)}
.res b{font-size:19px;font-weight:800;min-width:3.2ch;text-align:right;line-height:1}
.res small{color:var(--dim);font-size:12px;font-weight:700}
.res small.cap{margin-left:-5px;font-size:11px;opacity:.7}
#fuBox.full b,#fuBox.full #fur{color:var(--amber)}
.res.clock{padding-left:11px}
.ico{display:inline-block;width:19px;height:19px;border-radius:50%;flex:0 0 auto}
.ico.cr{background:radial-gradient(circle at 35% 35%,#fff3c4,#e2b04a 45%,#8a5a12 85%);box-shadow:inset 0 0 0 2px rgba(60,30,0,.35)}
.ico.fu{width:15px;height:15px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);margin:0 2px;background:radial-gradient(circle at 60% 40%,#f2e6c8,#3a3026 55%,#120c06)}
.chipbar{display:flex;align-items:center;gap:8px;background:linear-gradient(#1c2731,#0f151b);border:1px solid var(--edge2);border-radius:3px;padding:3px 4px 3px 12px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.chipbar b{font-size:17px}
#turnChip.p0{border-color:var(--you)} #turnChip.p1{border-color:var(--foe)}
#turnChip.low b{color:var(--foe)}
#stormChip{background:linear-gradient(#22303e,#141c26);border-color:#7f9ec2;color:#dce8f6;padding:5px 12px}
#objChip{background:linear-gradient(#2e2414,#1a140b);border-color:#c99a3e;color:#ffe2a8;padding:5px 12px}
#objChip.bad{border-color:#d0503e;color:#ffc2b8}
.spacer{flex:1}
.tools{display:flex;gap:6px;flex-wrap:wrap}
.tb{font-family:var(--display);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);background:linear-gradient(#1c2731,#0f151b);border:1px solid var(--edge2);border-radius:3px;padding:7px 10px;cursor:pointer;white-space:nowrap}
.tb:hover{border-color:var(--rim2)}
.tb:disabled{opacity:.5;cursor:not-allowed}
.tb.sm{padding:4px 8px;font-size:10px}
.tb.hot{border-color:var(--amber);color:var(--amber)}
.tb[aria-pressed="true"]{border-color:var(--rim2);color:var(--amber);box-shadow:inset 0 0 12px rgba(255,178,62,.16)}
#tabs{display:flex;background:linear-gradient(#1c2731,#0f151b);border:1px solid var(--edge2);border-radius:3px;padding:3px;gap:3px}
.tab{position:relative;font-family:var(--display);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);background:transparent;border:0;border-radius:2px;padding:6px 12px;cursor:pointer}
.tab[aria-pressed="true"]{background:#263544;color:var(--ink)}
.tab.home[aria-pressed="true"]{box-shadow:inset 0 -2px 0 var(--you)}
.tab.away[aria-pressed="true"]{box-shadow:inset 0 -2px 0 var(--foe)}
.tab.out{opacity:.5;text-decoration:line-through}
.badge{position:absolute;top:-7px;right:-7px;background:#b8392a;color:#fff;font-family:var(--ui);font-style:normal;font-size:11px;border-radius:999px;padding:1px 6px;animation:pulse .7s infinite alternate}
@keyframes pulse{from{opacity:1}to{opacity:.45}}
:focus-visible{outline:2px solid var(--amber);outline-offset:2px}

#feed{position:absolute;left:12px;bottom:110px;display:flex;flex-direction:column-reverse;gap:4px;max-width:min(430px,38%);pointer-events:none;z-index:2}
#feed div{background:rgba(10,16,22,.86);border-left:3px solid var(--dim);padding:4px 10px;border-radius:0 3px 3px 0;font-size:14px;font-weight:700}
#feed .good{border-color:var(--you)} #feed .bad{border-color:var(--foe)} #feed .enemy{border-color:var(--foe);color:#ffd2c8;font-family:var(--fell);font-style:normal;font-weight:400;font-size:13px}
#tips{position:absolute;right:12px;bottom:110px;width:280px;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--edge2);border-radius:3px;padding:10px 12px;z-index:2;box-shadow:inset 0 0 0 1px rgba(170,210,240,.06),0 8px 24px rgba(0,0,0,.45)}
#tips .th{display:flex;justify-content:space-between;align-items:center;gap:8px;flex:none}
#tips .th b{font-family:var(--display);font-weight:700;letter-spacing:.08em;color:var(--amber);font-size:14px}
#tips ol{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:5px;overflow-y:auto;min-height:0;overscroll-behavior:contain}
#tips li{display:flex;gap:8px;align-items:flex-start;font-size:14px}
#tips li::before{content:'';flex:0 0 13px;height:13px;margin-top:2px;border:2px solid var(--edge2);border-radius:2px}
#tips li.done{color:var(--dim);text-decoration:line-through}
#tips li.done::before{background:var(--you);border-color:var(--you)}
#tips li.now{color:var(--amber)}
#tips.min li:not(.now){display:none}
#banner{position:absolute;left:0;right:0;top:20%;display:grid;place-items:center;pointer-events:none;z-index:4}
.bn{grid-area:1/1;max-width:94%;text-align:center;font-family:var(--display);font-weight:900;font-size:clamp(20px,3.6vw,40px);line-height:1.1;letter-spacing:.14em;text-wrap:balance;padding:10px 26px 12px;background:linear-gradient(#263544,#111920);border:2px solid #5d7a8e;border-radius:3px;box-shadow:inset 0 0 0 1px rgba(170,210,240,.12),0 14px 30px rgba(0,0,0,.55);animation:bn 2s ease-out forwards}
.bn.good{color:var(--you)} .bn.bad{color:var(--foe)} .bn.info{color:var(--amber)} .bn.storm{color:#cfe0f4}
.bn small{display:block;text-align:center;font-family:var(--fell);font-style:normal;font-weight:400;font-size:max(14px,.42em);letter-spacing:.02em;color:var(--ink);margin-top:4px}
@keyframes bn{0%{opacity:0;transform:translateY(-14px)}10%{opacity:1;transform:none}80%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-10px)}}
#selp{position:absolute;left:50%;transform:translateX(-50%);bottom:110px;display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--edge2);border-radius:3px;padding:8px 10px;z-index:2;box-shadow:inset 0 0 0 1px rgba(170,210,240,.06),0 8px 24px rgba(0,0,0,.45);max-width:calc(100% - 24px);flex-wrap:wrap}
#selp img{width:56px;height:56px;background:radial-gradient(circle at 50% 40%,#22303c,#0e141a);border-radius:3px;border:1px solid var(--edge)}
#selp .info{display:grid;gap:3px;min-width:150px}
#selp .info b{font-family:var(--display);font-weight:700;font-size:15px;letter-spacing:.06em;color:var(--amber)}
#selp .hp{height:7px;background:rgba(255,255,255,.1);border-radius:2px;overflow:hidden}
#selp .hp i{display:block;height:100%;background:var(--you)}
#selp .st{font-size:13.5px;color:var(--dim)}
#selp .acts{display:flex;gap:6px;flex-wrap:wrap}
#selp .shipk{display:flex;gap:5px;align-items:center;flex-wrap:wrap;width:100%}
#selp .shipk span{font-size:12px;color:var(--dim);margin-right:2px}
#selp.foe .info b{color:var(--foe)}
#selp.foe img{border-color:var(--foe)}
#selp #selNav .tb[aria-pressed="true"]{border-color:var(--amber);color:var(--amber)}
@media (max-width:640px){ #selp .shipk{gap:4px} #selp .shipk .tb.sm{padding:4px 6px;font-size:9.5px;letter-spacing:.06em} #selp .info{min-width:120px} }
#tip{position:absolute;bottom:112px;left:50%;transform:translateX(-50%);background:var(--panel);border:1px solid var(--amber);border-radius:3px;padding:8px 12px;max-width:min(340px,90%);z-index:6;pointer-events:none;box-shadow:0 8px 24px rgba(0,0,0,.5)}
#tip b{display:block;font-family:var(--display);font-weight:700;letter-spacing:.06em;color:var(--amber);font-size:14px;margin-bottom:2px}
#tip span{font-size:14px;white-space:pre-line}
#upgp{position:absolute;left:50%;transform:translateX(-50%);bottom:110px;width:min(900px,calc(100% - 24px));max-height:calc(100% - 180px);overflow:auto;background:linear-gradient(#18212a,#0c1116);border:2px solid #5d7a8e;border-radius:3px;padding:12px;z-index:5;box-shadow:inset 0 0 0 1px rgba(170,210,240,.1),0 14px 40px rgba(0,0,0,.6)}
#upgp .uh{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}
#upgp .uh b{font-family:var(--display);font-weight:900;font-size:19px;color:var(--amber);letter-spacing:.1em}
#upgp .uh span{font-family:var(--ui);font-size:15px;color:var(--dim)}
.ugrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(196px,1fr));gap:8px}
.ucard{display:grid;grid-template-columns:40px 1fr;gap:1px 9px;align-items:center;background:rgba(0,0,0,.28);border:1px solid var(--edge);border-radius:3px;padding:5px 8px}
.ucard img{grid-row:1/4;width:40px;height:40px}
.ucard b{font-family:var(--display);font-size:13px;font-weight:700;letter-spacing:.04em;line-height:1.15}
.ucard .pips{display:flex;gap:3px} .ucard .pips i{width:16px;height:5px;border-radius:1px;background:#2c3a46} .ucard .pips i.on{background:var(--amber)}
.ucard span{font-size:12px;color:#c8d5df;line-height:1.12}
.ucard button{grid-column:1/3;margin-top:3px}
.ucard.maxed{opacity:.55}
/* standing orders: one column of rows under the upgrade cards */
#upgp .uh2{display:flex;align-items:baseline;gap:10px;margin:12px 0 6px;padding-top:10px;border-top:1px solid var(--edge)}
#upgp .uh2 b{font-family:var(--display);font-weight:900;font-size:16px;color:var(--amber);letter-spacing:.1em}
#upgp .uh2 span{font-family:var(--ui);font-size:14px;color:var(--dim)}
.ogrid{display:grid;grid-template-columns:1fr;gap:6px}
.ocard{display:flex;align-items:center;justify-content:space-between;gap:10px;background:rgba(0,0,0,.28);border:1px solid var(--edge);border-radius:3px;padding:6px 8px}
.ocard>div{min-width:0}
.ocard b{display:block;font-family:var(--display);font-size:13px;font-weight:700;letter-spacing:.04em;line-height:1.15}
.ocard span{font-size:12px;color:#c8d5df;line-height:1.12}
.ocard button{flex:0 0 auto;min-width:58px}

#dock{position:absolute;left:50%;bottom:calc(10px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:flex;gap:10px;align-items:stretch;padding:8px;background:linear-gradient(#18212a,#0b1015);border:2px solid #4b6274;border-radius:4px;box-shadow:inset 0 0 0 1px rgba(170,210,240,.08),0 10px 30px rgba(0,0,0,.55);z-index:3;max-width:calc(100% - 20px)}
.grp{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;min-width:0}
.grp::-webkit-scrollbar{display:none}
.sep{flex:0 0 2px;background:linear-gradient(#2b3a47,#4b6274,#2b3a47);border-radius:1px}
.bb,.ob{position:relative;flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:1px;height:var(--bh,78px);padding:4px 4px 6px;color:var(--ink);background:linear-gradient(#222e39,#121a21);border:1px solid #3a4d5c;border-radius:3px;cursor:pointer;transition:transform .08s,border-color .15s;box-shadow:inset 0 1px 0 rgba(170,210,240,.08)}
.bb{width:var(--bbw,64px)} .ob{width:var(--obw,75px)}
.bb:hover:not(:disabled),.ob:hover:not(:disabled){transform:translateY(-2px);border-color:var(--rim2)}
.bb img,.ob img{width:var(--imw,48px);height:var(--imw,48px);pointer-events:none}
.bb .cost{font-size:13px;font-weight:800;color:var(--amber);line-height:1}
.ob .nm{font-family:var(--display);font-size:var(--nmf,10px);font-weight:700;letter-spacing:.06em;line-height:1;text-transform:uppercase;white-space:nowrap}
.ob .st{font-size:var(--stf,11.5px);color:var(--dim);line-height:1.1;white-space:nowrap}
.hk{position:absolute;top:3px;left:5px;font-size:11px;font-weight:800;color:#7f95a8}
.bb[aria-pressed="true"],.ob[aria-pressed="true"]{border-color:var(--amber);box-shadow:0 0 0 2px rgba(255,178,62,.3),inset 0 0 20px rgba(255,178,62,.18)}
.bb:disabled,.ob:disabled{cursor:not-allowed}
.bb:disabled img,.ob:disabled img{filter:grayscale(.85) brightness(.6)}
.bb:disabled .cost{color:#66788a}
.bb .cost.lock{font-size:10px;letter-spacing:.02em;text-transform:uppercase;color:#ffab98}
.ob.live{border-color:#5d7a8e;box-shadow:inset 0 0 18px rgba(255,178,62,.2)}
.ob.live .st{color:var(--amber)}
.ob.alert{border-color:var(--foe);animation:alertb .6s infinite alternate}
@keyframes alertb{from{box-shadow:inset 0 0 6px rgba(255,107,85,.2)}to{box-shadow:inset 0 0 24px rgba(255,107,85,.55),0 0 14px rgba(255,107,85,.45)}}
.ob .bar{position:absolute;left:8px;right:8px;bottom:3px;height:3px;background:rgba(255,255,255,.08);border-radius:1px;overflow:hidden}
.ob .bar i{display:block;height:100%;width:0;background:var(--amber)}

.ov{position:fixed;inset:0;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 40%,rgba(10,18,26,.35),rgba(4,8,12,.86));overflow:auto;z-index:10;padding-block:max(16px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-bottom,0px));padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.ov.solid{background:radial-gradient(ellipse at 50% 35%,#1c2731,#04080c)}
.card{width:min(840px,100%);background:linear-gradient(#18212a,#0c1116);border:2px solid #5d7a8e;border-radius:4px;box-shadow:inset 0 0 0 1px rgba(170,210,240,.1),0 30px 80px rgba(0,0,0,.6);padding:24px 26px;display:flex;flex-direction:column;gap:14px}
.card.narrow{width:min(600px,100%)}
.kicker{font-family:var(--display);font-size:12px;font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:var(--dim)}
.logo{font-family:var(--display);font-weight:400;font-size:clamp(38px,8.4vw,76px);line-height:.95;margin:0;color:var(--amber);letter-spacing:.06em;text-shadow:0 2px 0 #7a4a0a,0 4px 0 #3a2508,0 12px 30px rgba(0,0,0,.6);text-wrap:balance}
.logo.mid{font-size:clamp(32px,7vw,60px)}
.lede{margin:0;font-family:var(--ui);font-weight:600;font-size:19px;max-width:60ch;color:#d6e1ea}
.modes{display:flex;gap:6px;background:rgba(0,0,0,.28);border:1px solid var(--edge);border-radius:3px;padding:4px;flex-wrap:wrap}
.mode{flex:1 1 140px;font-family:var(--display);font-weight:700;font-size:15px;letter-spacing:.08em;color:var(--dim);background:transparent;border:0;border-radius:2px;padding:10px 12px;cursor:pointer}
.mode small{display:block;font-family:var(--ui);font-size:12.5px;letter-spacing:.02em;font-weight:700;margin-top:2px}
.mode[aria-selected="true"]{background:linear-gradient(#2a3a48,#1c2731);color:var(--amber);box-shadow:inset 0 -2px 0 var(--amber)}
.mode[aria-selected="true"] small{color:var(--ink)}
.mpanel{display:flex;flex-direction:column;gap:12px}
.missions{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.mcard{position:relative;display:flex;flex-direction:column;gap:6px;text-align:left;color:var(--ink);background:linear-gradient(#1e2a34,#111920);border:1px solid var(--edge);border-radius:3px;padding:12px 13px;cursor:pointer;min-height:150px}
.mcard:hover:not(:disabled){border-color:var(--amber);transform:translateY(-2px)}
.mcard .no{font-family:var(--display);font-size:11px;font-weight:700;color:var(--dim);letter-spacing:.18em;text-transform:uppercase}
.mcard b{font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:.06em;color:var(--amber);line-height:1.1}
.mcard p{margin:0;font-size:14px;color:#c8d5df;flex:1}
.mcard .meta{display:flex;justify-content:space-between;align-items:center;gap:8px}
.mcard .st{color:#33414d;font-size:18px;letter-spacing:2px} .mcard .st .on{color:var(--amber)}
.mcard:disabled{opacity:.45;cursor:not-allowed}
.mcard .lock{position:absolute;top:11px;right:12px;font-family:var(--display);font-size:10px;font-weight:700;color:var(--dim);letter-spacing:.14em}
.mcard.next{border-color:var(--amber);box-shadow:0 0 0 3px rgba(255,178,62,.14)}
.diffb{font-weight:800;letter-spacing:.08em;text-transform:uppercase;font-size:11px;padding:2px 7px;border-radius:2px;border:1px solid currentColor}
.diffb.easy{color:var(--you)} .diffb.normal{color:var(--amber)} .diffb.hard{color:var(--foe)} .diffb.brutal{color:#d47cff}
details.howwrap summary{cursor:pointer;font-family:var(--display);font-weight:700;letter-spacing:.16em;text-transform:uppercase;font-size:12px;color:var(--dim)}
details.howwrap[open] summary{margin-bottom:10px}
.how{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}
.how div{display:flex;gap:10px;align-items:center;background:rgba(0,0,0,.25);border:1px solid var(--edge);border-radius:3px;padding:8px 10px;font-size:14.5px}
.how img{width:48px;height:48px;flex:0 0 auto}
.chips{display:flex;gap:10px;flex-wrap:wrap}
.chip{flex:1 1 150px;text-align:left;color:var(--ink);background:rgba(0,0,0,.28);border:1px solid var(--edge);border-radius:3px;padding:10px 12px;cursor:pointer}
.chip b{display:block;font-family:var(--display);font-weight:700;font-size:17px;letter-spacing:.06em}
.chip span{display:block;font-size:14px;color:var(--dim)}
.chip em{display:block;font-style:normal;font-size:12.5px;color:var(--amber);margin-top:3px}
.lenrow{display:flex;flex-direction:column;gap:6px}
.lenlbl{font-family:var(--display);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.lenChips{gap:8px}
.lenChips .chip{flex:1 1 92px;min-width:0;padding:8px 10px}
.lenChips .chip b{font-size:15px}
.lenChips .chip span{font-size:13px}
@media (max-width:480px){ .lenChips{gap:6px} .lenChips .chip{padding:7px 8px} .lenChips .chip b{font-size:14px} .lenChips .chip span{font-size:11.5px;line-height:1.3} }
.chip[aria-pressed="true"]{border-color:var(--amber);background:rgba(255,178,62,.1)}
.actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.go{font-family:var(--display);font-weight:900;font-size:18px;letter-spacing:.12em;color:#2a1700;background:linear-gradient(#ffcf6a,#e0821a);border:1px solid #7a4a0a;border-radius:3px;padding:13px 26px;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 4px 0 #7a4a0a,0 10px 24px rgba(0,0,0,.35)}
.go:active{transform:translateY(2px);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 2px 0 #7a4a0a}
.keys{margin:0;font-size:13.5px;color:var(--dim)}
.stars{font-size:38px;letter-spacing:6px;color:#33414d;line-height:1}
.stars .on{color:var(--amber);text-shadow:0 0 16px rgba(255,178,62,.55)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.stats div{background:rgba(0,0,0,.26);border:1px solid var(--edge);border-radius:3px;padding:8px 12px}
.stats b{display:block;font-family:var(--display);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.stats span{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums}
.stats span,.stats em{display:block;line-height:1.15}
.stats em{font-style:normal;font-size:15px;font-weight:700;color:var(--dim);font-variant-numeric:tabular-nums;margin-top:2px}
.stats i{font-style:normal;font-size:9.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin-left:6px;vertical-align:middle}
.stats span i{color:var(--amber)}
@media (max-width:480px){ .stats{grid-template-columns:repeat(2,1fr);gap:6px} .stats div{padding:6px 8px} .stats span{font-size:20px} .stats em{font-size:13px} }
/* end card: 12 tiles in 4 columns plus the kills-by-weapon strip, sized to fit a 1366x768 laptop without scrolling; 2 columns on a phone */
#over .card{width:min(900px,100%)}
#over .stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
#over .stats div{padding:6px 11px}
#over .stats span{font-size:22px}
#over .stats em{font-size:14px}
.stats u{text-decoration:none;font-size:12px;font-weight:800;color:var(--you);margin-left:6px;vertical-align:middle}
.stats em u{font-size:11px;color:var(--dim)}
.stats u.ff{color:var(--foe);font-weight:700;white-space:nowrap}
.stats .kv{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 26px}
.stats .kv b{grid-column:1/-1;margin-bottom:2px}
.stats .kv b i.a{color:var(--amber)}
.stats .kv p{margin:0;display:grid;grid-template-columns:84px minmax(0,1fr) 42px minmax(0,1fr) 42px;align-items:center;gap:7px}
.stats .kv small{font-family:var(--display);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#c8d5df;white-space:nowrap}
.stats .kv s{display:block;height:6px;background:rgba(255,255,255,.07);border-radius:1px;overflow:hidden}
.stats .kv s s{height:100%;background:var(--amber)}
.stats .kv s.e s{background:#7f909e}
.stats .kv data{font-size:13px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.2}
.stats .kv data.e{color:var(--dim);font-weight:700}
@media (max-height:820px) and (min-width:641px){ #over .card{padding:16px 22px;gap:9px} #over .logo.mid{font-size:46px} #over .stars{font-size:28px} #over .lede{font-size:16px} #over .go{padding:10px 22px;font-size:16px} }
@media (max-width:640px){ #over .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px} #over .stats div{padding:6px 8px} #over .stats span{font-size:19px} #over .stats em{font-size:13px} .stats .kv{grid-template-columns:1fr} .stats .kv p{grid-template-columns:84px minmax(0,1fr) 34px minmax(0,1fr) 30px;gap:5px} .stats .kv small{font-size:9.5px;letter-spacing:.06em} .stats u{font-size:10.5px;margin-left:4px} .stats u.ff{font-size:10px} }
.logo.win{color:var(--you);text-shadow:0 2px 0 #1e4a2a,0 4px 0 #0f2a17,0 12px 30px rgba(0,0,0,.6)}
.logo.lose{color:var(--foe);text-shadow:0 2px 0 #6a1f15,0 4px 0 #3a0f09,0 12px 30px rgba(0,0,0,.6)}
.logo.p0{color:var(--you);text-shadow:0 2px 0 #1e4a2a,0 4px 0 #0f2a17,0 12px 30px rgba(0,0,0,.6)}
.logo.p1{color:var(--foe);text-shadow:0 2px 0 #6a1f15,0 4px 0 #3a0f09,0 12px 30px rgba(0,0,0,.6)}
.inbox{display:grid;gap:5px;max-height:240px;overflow:auto}
.inbox div{background:rgba(0,0,0,.3);border-left:3px solid var(--dim);padding:6px 10px;border-radius:0 3px 3px 0;font-size:14.5px}
.inbox .good{border-color:var(--you)} .inbox .bad{border-color:var(--foe)}
#boot{position:fixed;inset:0;display:grid;place-items:center;background:radial-gradient(circle at 50% 40%,#18212a,var(--walnut));z-index:20;text-align:center;transition:opacity .7s}
#boot .logo{font-size:40px}
#boot p{font-family:var(--fell);font-size:16px;letter-spacing:.06em;color:var(--dim);margin-top:14px}
#boot.gone{opacity:0;pointer-events:none}
#zoomCtl{position:absolute;right:max(12px,env(safe-area-inset-right,0px));top:72px;display:flex;flex-direction:column;gap:4px;z-index:3}
#zoomCtl .tb{width:34px;height:32px;padding:0;font-size:16px;font-family:var(--ui);font-weight:800}
#perfHud{position:absolute;right:max(12px,env(safe-area-inset-right,0px));top:184px;z-index:3;pointer-events:none;white-space:pre;text-align:right;font:700 12px/1.35 ui-monospace,Menlo,Consolas,monospace;color:var(--you);background:rgba(16,10,5,.8);border:1px solid var(--edge2);border-radius:3px;padding:5px 8px;font-variant-numeric:tabular-nums}

#dock.rows2{flex-direction:column;gap:6px;padding:6px} #dock.rows2 .sep{display:none}
#dock.tight{gap:6px;padding:6px} #dock.tight .grp{gap:4px} #dock.tight .ob{padding-inline:2px}
@media (max-width:760px){
  .ob .nm{font-size:9px;letter-spacing:.03em} .ob .st{font-size:10.5px}
  #dock{left:8px;right:8px;transform:none;flex-direction:column;gap:6px;padding:6px;max-width:none}
  .sep{display:none}
  .bb,.ob{height:66px} .bb{width:58px} .ob{width:76px}
  .bb img,.ob img{width:40px;height:40px}
  .brand,#musicBtn,#soundBtn,#qualBtn{display:none}
  .res b{font-size:16px}
  #tips{width:46%;right:8px;padding:8px 10px}
  #tips .th b{font-size:12px}
  #tips li{font-size:13px}
  #feed{left:8px;max-width:calc(54% - 24px)}
  #feed div{font-size:13px;padding:3px 8px}
  .modes{flex-wrap:nowrap}
  .mode{flex:1 1 0;min-width:0;font-size:12px;padding:8px 4px;letter-spacing:.04em}
  .mode small{font-size:11px}
  #selp{left:8px;right:8px;transform:none}
  #board.has-sel #feed,#board.has-sel #tips{display:none}
  .tools .tb{padding:6px 7px;font-size:9.5px}
  #zoomCtl{top:112px}
  #perfHud{top:224px}
}
@media (max-height:560px){ .bb,.ob{height:60px} .bb img,.ob img{width:32px;height:32px} #top{padding-bottom:12px} #tips{right:56px} #zoomCtl{top:60px} }
@media (prefers-reduced-motion:reduce){
  .bn{animation:bnr 2s linear forwards}
  @keyframes bnr{0%{opacity:0}10%{opacity:1}80%{opacity:1}100%{opacity:0}}
  .badge,.ob.alert{animation:none}
}
/* penetrator switch: lit button and PEN badges on the weapons it affects */
.ob.armed{border-color:#ff9a3c;box-shadow:0 0 0 2px rgba(255,154,60,.35),inset 0 0 22px rgba(255,154,60,.28)}
.ob.armed .st{color:#ffb36b;font-weight:700}
.ob .pen{display:none;position:absolute;top:3px;right:3px;padding:1px 3px;border-radius:2px;background:#ff9a3c;color:#1a1008;font:700 9px/1 var(--display);letter-spacing:.04em}
.ob.pen .pen{display:block}
.ob .cs{position:absolute;top:3px;right:3px;font-size:9.5px;font-weight:800;line-height:1;color:var(--amber);letter-spacing:.02em}
.ob.pen .cs{top:15px}
.ob:disabled .cs{color:#66788a}
.ob.pen img{filter:sepia(.5) saturate(1.6) hue-rotate(-18deg)}
.ob[data-k="buster"] .nm{letter-spacing:0;font-size:calc(var(--nmf,10px)*.8)}
/* soundtrack picker */
.trkrow{margin-top:4px} .trkChips .chip{flex:1 1 120px;padding:6px 10px} .trkChips .chip span{font-size:11px}
/* === air wing === */
#selp #selAir .tb[aria-pressed="true"]{border-color:var(--amber);color:var(--amber)}
#selp #selAir .airhint{flex:1 0 100%;font-size:12px;line-height:1.3;color:var(--dim)}
.ob[data-k="air"] .nm{letter-spacing:.02em}
@media (max-width:640px){ #selp #selAir .airhint{font-size:11px} }
/* === fleet bar === */
/* #fleetBar: top left under the command bar, clear of the zoom buttons; only as wide as its cards, scrolls sideways when the fleet is long */
#fleetBar{--fb-team:var(--you);position:absolute;left:max(12px,env(safe-area-inset-left,0px));top:64px;max-width:calc(100% - 82px);display:flex;gap:6px;align-items:stretch;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;z-index:3;padding:2px}
#fleetBar::-webkit-scrollbar{display:none}
#fleetBar.t1{--fb-team:var(--foe)}
#fleetBar button{flex:none;font-family:var(--ui);color:var(--ink);background:var(--panel);border:1px solid var(--edge2);border-radius:3px;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.35)}
#fleetBar button:hover{border-color:var(--rim2)}
#fleetBar button[aria-pressed="true"]{border-color:var(--amber);box-shadow:0 0 0 2px rgba(255,178,62,.28),inset 0 0 14px rgba(255,178,62,.14)}
#fleetBar .fcard{position:relative;display:grid;grid-template-columns:28px auto;grid-template-rows:1fr 4px;column-gap:6px;row-gap:3px;align-items:center;padding:4px 8px 4px 5px;border-left-width:3px;min-width:112px;text-align:left}
#fleetBar .fcard,#fleetBar .fcard[aria-pressed="true"]{border-left-color:var(--fb-team)}
.fcard img{width:28px;height:28px;grid-row:1;object-fit:contain}
.fcard u{grid-row:1;text-decoration:none;font:700 11px/28px var(--display);text-align:center;color:var(--fb-team)}
.fcard .ft{display:grid;line-height:1.1;min-width:0}
.fcard .ft b{font-family:var(--display);font-weight:700;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);white-space:nowrap}
.fcard .ft i{font-style:normal;font-size:12.5px;font-weight:700;color:var(--dim);white-space:nowrap}
.fcard.busy .ft i{color:var(--amber)}
.fcard em{position:absolute;top:2px;right:4px;font-style:normal;font-size:9.5px;font-weight:800;letter-spacing:.04em;color:var(--cyan)}
.fcard s{grid-column:1/-1;display:block;height:4px;background:rgba(255,255,255,.1);border-radius:2px;overflow:hidden;text-decoration:none}
.fcard s i{display:block;height:100%;background:var(--fb-team)}
#fleetBar .fchip{align-self:center;padding:5px 9px;font-size:12.5px;font-weight:700;color:var(--dim);white-space:nowrap;border-color:var(--amber2)}
#fleetBar .fchip[aria-pressed="true"]{border-color:var(--amber)}
.fchip b{color:var(--amber);font-family:var(--display);font-weight:700;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase}
.fchip.armed{animation:fbArm .7s infinite alternate}
@keyframes fbArm{to{box-shadow:0 0 0 3px rgba(255,178,62,.45)}}
@media (max-width:760px){
  #fleetBar{left:8px;max-width:calc(100% - 62px);gap:5px}
  #fleetBar .fcard{min-width:0;grid-template-columns:22px auto;padding:3px 6px 3px 4px;column-gap:5px}
  .fcard img{width:22px;height:22px}
  .fcard .ft b{font-size:9.5px} .fcard .ft i{font-size:11.5px}
  #fleetBar .fchip{padding:4px 7px;font-size:11.5px}
}
@media (prefers-reduced-motion:reduce){ .fchip.armed{animation:none} }
/* === air missions + stations === */
/* #airMis: the mission strip, a slim row of four keys sitting on the order dock while Air (I) is armed. Scrolls sideways on narrow screens, never covers the dock */
#airMis{position:absolute;left:50%;transform:translateX(-50%);bottom:110px;z-index:3;display:flex;align-items:center;gap:8px;max-width:calc(100% - 24px);padding:5px 6px 5px 10px;background:var(--panel);border:1px solid var(--edge2);border-top:2px solid var(--cyan);border-radius:3px;box-shadow:inset 0 0 0 1px rgba(170,210,240,.06),0 8px 24px rgba(0,0,0,.45)}
#airMis .ams{flex:none;font:700 10.5px/1.1 var(--display);letter-spacing:.08em;text-transform:uppercase;color:var(--cyan);font-style:normal;white-space:nowrap;font-variant-numeric:tabular-nums}
#airMis .ams.all{color:var(--amber)}
#airMis .amb{display:flex;gap:5px;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}
#airMis .amb::-webkit-scrollbar{display:none}
#airMis .amb button{flex:none;position:relative;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:7px;align-items:center;text-align:left;padding:4px 10px 4px 6px;min-width:128px;color:var(--ink);background:linear-gradient(#222e39,#121a21);border:1px solid #3a4d5c;border-radius:3px;cursor:pointer;font-family:var(--ui)}
#airMis .amb button:hover{border-color:var(--rim2)}
#airMis .amb .k{grid-row:1/3;display:grid;place-items:center;width:20px;height:20px;border-radius:2px;background:#0b1015;border:1px solid var(--edge2);font:700 11px/1 var(--display);color:var(--dim)}
#airMis .amb b{font:700 12px/1.1 var(--display);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
#airMis .amb small{font-size:11.5px;font-weight:600;line-height:1.1;color:var(--dim);white-space:nowrap}
#airMis .amb button[aria-pressed="true"]{border-color:var(--cyan);box-shadow:0 0 0 1px var(--cyan),inset 0 0 14px rgba(121,214,242,.18)}
#airMis .amb button[aria-pressed="true"] .k{background:var(--cyan);border-color:var(--cyan);color:#0b1015}
#airMis .amb button[aria-pressed="true"] b{color:var(--cyan)}
#airMis .amb button[aria-disabled="true"]{opacity:.48}
#airMis .amb button[aria-disabled="true"][aria-pressed="true"]{opacity:.75;border-style:dashed}
#airMis .amh{flex:none;font-size:11px;font-weight:700;color:var(--dim);white-space:nowrap}
#airMis .amx{flex:none;width:26px;height:26px;padding:0;font:700 16px/1 var(--ui);color:var(--dim);background:transparent;border:1px solid var(--edge);border-radius:3px;cursor:pointer}
#airMis .amx:hover{color:var(--ink);border-color:var(--rim2)}
@media (max-width:1100px){ #airMis .amh{display:none} }
@media (max-width:760px){
  #airMis{left:8px;right:8px;transform:none;max-width:none;gap:6px;padding:4px 4px 4px 7px}
  #airMis .ams{font-size:9.5px;max-width:52px;white-space:normal}
  #airMis .amb button{min-width:0;padding:3px 7px 3px 4px;column-gap:5px}
  #airMis .amb .k{width:17px;height:17px;font-size:10px}
  #airMis .amb b{font-size:10.5px} #airMis .amb small{font-size:10px}
}
@media (max-width:480px){ #airMis .amb small{display:none} #airMis .amb button{grid-template-rows:auto;padding:5px 8px 5px 4px} #airMis .amb .k{grid-row:1} }
/* airfield panel: sortie and air cover status lines */
#selp #selAir{gap:6px}
#selp #selAir .airsort,#selp #selAir .aircov{font:700 11px/1 var(--display);letter-spacing:.06em;text-transform:uppercase;padding:5px 8px;border:1px solid var(--edge2);border-radius:3px;color:var(--amber);background:rgba(0,0,0,.25);white-space:nowrap}
#selp #selAir .rdy{color:var(--you);border-color:rgba(127,227,159,.55)}
#selp #selAir .aircov{color:var(--cyan)} #selp #selAir .aircov.rdy{color:var(--you)} #selp #selAir .aircov.offl{color:var(--dim)}
/* dock panel: one status line where the Patrol / Attack buttons were */
#selp #selDockGo span{font-size:12.5px;color:var(--cyan);font-weight:700}
/* fleet bar: the station chip (first) with Hold in port */
#fleetBar .fstat{flex:none;display:flex;align-items:stretch;align-self:center}
#fleetBar .fstat .fst{display:flex;align-items:center;gap:7px;padding:5px 9px;border-left:3px solid var(--fb-team);text-align:left;font-size:12.5px;font-weight:700;white-space:nowrap}
#fleetBar .fstat .fst i{font:700 9.5px/1 var(--display);font-style:normal;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
#fleetBar .fstat .fst span{color:var(--ink)}
#fleetBar .fstat.live .fst span{color:var(--fb-team)}
#fleetBar .fstat.port .fst span{color:var(--dim)}
#fleetBar .fstat .fhold{margin-left:-1px;padding:5px 8px;font:700 9.5px/1 var(--display);letter-spacing:.06em;text-transform:uppercase;color:var(--amber);border-color:var(--amber2);white-space:nowrap}
#fleetBar .fstat .fhold:hover{border-color:var(--amber)}
#fleetBar .fstat:has(.fhold:not([hidden])) .fst{border-top-right-radius:0;border-bottom-right-radius:0}
#fleetBar .fstat .fhold{border-top-left-radius:0;border-bottom-left-radius:0}
@media (max-width:760px){ #fleetBar .fstat .fst{padding:4px 7px;font-size:11.5px;gap:5px} #fleetBar .fstat .fst i{display:none} #fleetBar .fstat .fhold{padding:4px 6px;font-size:9px} }
