

:root {
  /* Palette drawn from the actual game's yellow/black/green counter sheet */
  --bg:       #0a0a08;
  --panel:    #111410;
  --border:   #2a2e1a;
  --gold:     #f0be2e;
  --gold-dim: #9a7410;
  --green:    #9ada60;
  --green-dim:#4a7a2a;
  --red:      #f05050;
  --red-dim:  #8a2020;
  --blue:     #5ab8f0;
  --text:     #f0ecd8;
  --text-dim: #a8a480;
  --tube:     #d4a017;
  --pod-bg:   #141810;
  --pod-border: #3a4420;
}

*{box-sizing:border-box;margin:0;padding:0;}

body{
  background:var(--bg);
  color:var(--text);
  font-family:"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  font-weight:300;
  min-height:100vh;
  user-select:none;
}

body::before{
  content:'';position:fixed;inset:0;
  background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(0,0,0,0.06) 3px,rgba(0,0,0,0.06) 4px);
  pointer-events:none;z-index:9999;
}

h1,h2,h3,h4{font-family:"Bahnschrift","DIN Alternate","Franklin Gothic Medium","Arial Narrow",Arial,sans-serif;}
.mono{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;}

/* ── HEADER ── */
#hdr{
  background:linear-gradient(180deg,#141810 0%,var(--panel) 100%);
  border-bottom:2px solid var(--gold-dim);
  padding:8px 16px;
  display:flex;align-items:center;justify-content:space-between;
  position:sticky;top:0;z-index:200;
}
#hdr h1{font-size:1.05rem;letter-spacing:.12em;white-space:nowrap;color:var(--gold);text-shadow:0 0 16px rgba(212,160,23,.5);}
#hdr h1 span{color:var(--green);}
#hdr-right{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.75rem;color:var(--text-dim);text-align:right;line-height:1.8;}
#hdr-right .v{color:var(--gold);}

/* ── LAYOUT ── */
#layout{display:grid;grid-template-columns:200px 1fr 220px;min-height:calc(100vh - 44px);}

/* ── SIDE PANELS ── */
.side{background:var(--panel);border-right:1px solid var(--border);padding:10px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;}
.side:last-child{border-right:none;border-left:1px solid var(--border);}
.ptitle{font-family:"Bahnschrift","DIN Alternate","Franklin Gothic Medium","Arial Narrow",Arial,sans-serif;font-size:.58rem;letter-spacing:.2em;color:var(--text-dim);text-transform:uppercase;padding-bottom:6px;border-bottom:1px solid var(--border);margin-bottom:4px;}

/* ── SHIP MAP CENTER ── */
#center{background:var(--bg);padding:12px;display:flex;flex-direction:column;align-items:center;gap:10px;overflow-y:auto;}

/* ── SHIP MAP SVG WRAPPER ── */
#shipmap{width:100%;max-width:640px;display:block;margin:0 auto;}

/* Deck labels */
.deck-label{font-family:"Bahnschrift","DIN Alternate","Franklin Gothic Medium","Arial Narrow",Arial,sans-serif;font-size:.7rem;fill:var(--gold);letter-spacing:.15em;}
.tube-label{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.52rem;fill:var(--green);letter-spacing:.05em;}

/* Pod shapes */
.pod{
  fill:transparent;
  stroke:transparent;
  stroke-width:5;
  cursor:pointer;
  transition:stroke .15s,fill .15s;
}
.pod:hover{stroke:#ffe27a;fill:rgba(255,226,122,.10);}
.pod.selected{stroke:#ffffff;stroke-width:5;fill:rgba(255,255,255,.10);}
.pod.infested{stroke:var(--red);fill:rgba(240,80,80,.16);}
.pod.infested:hover{stroke:#ff9a9a;}
.pod.has-crew{stroke:var(--blue);fill:rgba(90,184,240,.14);}
.pod.has-crew.infested{stroke:var(--red);}
.pod.sealed{stroke:var(--green);}

/* Tube connectors */
.tube{fill:none;stroke:var(--tube);stroke-width:3;opacity:.6;}
.tube.blocked{stroke:var(--red-dim);opacity:.4;stroke-dasharray:4 3;}
.risor-line{stroke:var(--gold);stroke-width:2;stroke-dasharray:6 3;opacity:.7;}

/* Pod text */
.pod-id{font-family:"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:.72rem;font-weight:600;fill:var(--text);pointer-events:none;}
.tube-label{pointer-events:none;}
.deck-label{pointer-events:none;}
#pod-overlays{pointer-events:none;}
.pod-name{font-family:"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:.55rem;fill:var(--text);}

/* ── hover stat card ── */
#hovercard{
  position:fixed; z-index:600; pointer-events:none; display:none;
  min-width:170px; max-width:250px;
  background:linear-gradient(180deg,#141810,#0d100b);
  border:1px solid var(--gold); border-radius:5px;
  padding:8px 10px; box-shadow:0 6px 22px rgba(0,0,0,.6);
  font-family:"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
#hovercard .hc-title{font-family:"Bahnschrift","DIN Alternate","Franklin Gothic Medium","Arial Narrow",Arial,sans-serif;font-size:.62rem;letter-spacing:.08em;color:var(--gold);margin-bottom:5px;padding-bottom:4px;border-bottom:1px solid var(--border);}
#hovercard .hc-sec{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.52rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);margin:6px 0 3px;}
#hovercard .hc-sec.crew{color:var(--blue);}
#hovercard .hc-sec.ali{color:var(--red);}
#hovercard .hc-row{font-size:.72rem;line-height:1.35;margin-bottom:4px;color:var(--text);}
#hovercard .hc-row b{color:var(--text);}
#hovercard .hc-row .hc-stat{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.62rem;color:var(--text-dim);}
#hovercard .hc-row.ali b{color:var(--red);}
#hovercard .hc-empty{font-size:.7rem;color:var(--text-dim);font-style:italic;}
.pod-bio{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:13px;fill:var(--red);font-weight:bold;pointer-events:none;}
.pod-crew-dot{fill:var(--blue);}

/* ── STATUS BARS ── */
.status-track{margin:4px 0;}
.track-label{font-size:.68rem;color:var(--text-dim);margin-bottom:3px;}
.track-boxes{display:flex;gap:3px;}
.track-box{
  width:20px;height:20px;border-radius:2px;
  border:1px solid var(--border);
  background:var(--bg);
  display:flex;align-items:center;justify-content:center;
  font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.6rem;
  color:var(--text-dim);
}
.track-box.active-green{background:var(--green-dim);border-color:var(--green);color:var(--green);}
.track-box.active-amber{background:#3a2a08;border-color:var(--gold);color:var(--gold);}
.track-box.active-red{background:var(--red-dim);border-color:var(--red);color:var(--red);}
.track-box.marker{background:var(--gold);border-color:var(--gold);color:#000;font-weight:bold;}

/* ── CREW CARDS ── */
.crew-card{
  background:var(--pod-bg);border:1px solid var(--border);border-radius:3px;
  padding:7px 8px;cursor:pointer;transition:border-color .15s;
}
.crew-card:hover{border-color:var(--blue);}
.crew-card.sel{border-color:var(--blue);box-shadow:0 0 8px rgba(58,154,212,.25);}
.crew-card.dead{opacity:.3;pointer-events:none;filter:grayscale(1);}
.crew-card.stunned{border-color:var(--gold-dim);}
.cn{font-family:"Bahnschrift","DIN Alternate","Franklin Gothic Medium","Arial Narrow",Arial,sans-serif;font-size:.6rem;color:var(--text);letter-spacing:.04em;}
.cr{font-size:.65rem;color:var(--text-dim);margin:2px 0;}
.cs{display:flex;gap:6px;margin-top:3px;}
.cs span{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.6rem;color:var(--text);}
.cs span b{color:var(--gold);}
.cs span.hp b.lo{color:var(--red);}

/* ── ALIEN COUNTER CARDS ── */
.alien-card{
  background:var(--pod-bg);border:1px solid var(--red-dim);border-radius:3px;
  padding:6px 8px;font-size:.7rem;
  display:flex;justify-content:space-between;align-items:center;
}
.alien-name{font-family:"Bahnschrift","DIN Alternate","Franklin Gothic Medium","Arial Narrow",Arial,sans-serif;font-size:.58rem;color:var(--red);letter-spacing:.04em;}
.alien-stats{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.6rem;color:var(--text-dim);}
.alien-stats b{color:var(--red);}

/* ── BUTTONS ── */
.btn{
  display:block;width:100%;padding:7px 10px;
  background:var(--pod-bg);border:1px solid var(--border);border-radius:2px;
  color:var(--text);font-family:"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:.75rem;
  cursor:pointer;text-align:left;transition:all .15s;letter-spacing:.02em;
}
.btn:hover:not(:disabled){background:var(--border);border-color:var(--gold);color:var(--gold);}
.btn:disabled{opacity:.25;cursor:not-allowed;}
.btn.gold{border-color:var(--gold-dim);color:var(--gold);}
.btn.gold:hover:not(:disabled){background:rgba(212,160,23,.12);}
.btn.red{border-color:var(--red-dim);color:var(--red);}
.btn.red:hover:not(:disabled){background:rgba(200,48,48,.1);}
.btn.grn{border-color:var(--green-dim);color:var(--green);}
.btn.grn:hover:not(:disabled){background:rgba(122,182,72,.1);}

.act-label{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.55rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.15em;margin-top:6px;margin-bottom:2px;}
#acts-left-val{color:var(--gold);}

/* ── LOG ── */
#log{
  width:100%;max-width:620px;
  max-height:180px;overflow-y:auto;
  background:var(--bg);border:1px solid var(--border);border-radius:2px;
  padding:8px 10px;
  font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.65rem;line-height:1.8;
}
.le{color:var(--text);}
.le.w{color:var(--gold);}
.le.a{color:var(--red);}
.le.g{color:var(--green);}
.le.s{color:var(--blue);}

/* ── DICE ── */
#dice-row{display:flex;gap:8px;align-items:center;width:100%;max-width:620px;padding:6px 8px;background:var(--bg);border:1px solid var(--border);border-radius:2px;}
.die{width:32px;height:32px;background:var(--pod-bg);border:1px solid var(--border);border-radius:3px;display:flex;align-items:center;justify-content:center;font-family:"Bahnschrift","DIN Alternate","Franklin Gothic Medium","Arial Narrow",Arial,sans-serif;font-size:.9rem;color:var(--gold);}
.die.spin{animation:diespin .35s ease;}
@keyframes diespin{0%{transform:rotate(0) scale(1.2);}100%{transform:rotate(360deg) scale(1);}}

/* ── PHASE PIPS ── */
#phase-pips{display:flex;gap:4px;flex-wrap:wrap;}
.ppip{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.55rem;padding:3px 6px;border:1px solid var(--border);color:var(--text-dim);border-radius:2px;text-transform:uppercase;}
.ppip.cur{border-color:var(--gold);color:var(--gold);background:rgba(212,160,23,.08);}
.ppip.done{border-color:var(--green-dim);color:var(--green-dim);}

/* ── TABLES (Reaction / Impair / Repair) ── */
.rules-table{width:100%;border-collapse:collapse;font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.58rem;margin-top:4px;}
.rules-table th{background:var(--border);color:var(--gold);padding:2px 4px;text-align:center;border:1px solid var(--border);}
.rules-table td{padding:2px 4px;text-align:center;border:1px solid var(--border);color:var(--text);}
.rules-table tr:nth-child(even) td{background:rgba(255,255,255,.02);}
.rules-table td.hit{color:var(--green);}
.rules-table td.miss{color:var(--red-dim);}

/* ── MODAL ── */
#mo{position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:1200;display:none;align-items:center;justify-content:center;}
#mo.open{display:flex;}
#mbox{background:var(--panel);border:1px solid var(--gold);border-radius:4px;padding:24px 28px;max-width:460px;width:90%;box-shadow:0 0 30px rgba(212,160,23,.2);}
#mbox h3{font-size:.95rem;color:var(--gold);letter-spacing:.1em;margin-bottom:10px;}
#mbox p{font-size:.78rem;color:var(--text);line-height:1.7;margin-bottom:8px;}
#mbox .macts{display:flex;flex-direction:column;gap:5px;margin-top:12px;max-height:300px;overflow-y:auto;}

/* ── INTRO ── */
#intro{position:fixed;inset:0;background:var(--bg);z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:32px;}
#intro h1{font-size:2.6rem;letter-spacing:.2em;color:var(--gold);text-shadow:0 0 40px rgba(212,160,23,.5),0 0 80px rgba(212,160,23,.2);text-align:center;}
#intro h1 small{display:block;font-size:.65rem;color:var(--green);letter-spacing:.4em;margin-bottom:6px;text-shadow:0 0 12px rgba(122,182,72,.4);}
.intro-sub{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.78rem;color:var(--text-dim);text-align:center;max-width:460px;line-height:1.9;}
.intro-flavor{font-size:.75rem;color:var(--text-dim);font-style:italic;text-align:center;max-width:400px;line-height:1.8;border-left:2px solid var(--gold-dim);padding-left:14px;}
.intro-btns{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;}
.ibtn{padding:11px 26px;background:var(--pod-bg);border:1px solid var(--gold-dim);border-radius:2px;color:var(--gold);font-family:"Bahnschrift","DIN Alternate","Franklin Gothic Medium","Arial Narrow",Arial,sans-serif;font-size:.75rem;letter-spacing:.1em;cursor:pointer;transition:all .15s;}
.ibtn:hover{background:rgba(212,160,23,.12);border-color:var(--gold);}

/* ── GAMEOVER ── */
#go{position:fixed;inset:0;background:rgba(10,10,8,.97);z-index:999;display:none;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:32px;}
#go h2{font-size:1.8rem;letter-spacing:.2em;text-align:center;}
#go.win h2{color:var(--green);text-shadow:0 0 24px rgba(122,182,72,.5);}
#go.loss h2{color:var(--red);text-shadow:0 0 24px rgba(200,48,48,.5);}
#go p{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;font-size:.78rem;color:var(--text-dim);text-align:center;max-width:400px;line-height:1.8;}
#go-score{font-family:"Bahnschrift","DIN Alternate","Franklin Gothic Medium","Arial Narrow",Arial,sans-serif;font-size:1.3rem;color:var(--gold);}

/* Scrollbar */
::-webkit-scrollbar{width:4px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}

/* supply rows */
.sup-row{display:flex;align-items:center;justify-content:space-between;padding:3px 0;border-bottom:1px solid rgba(42,46,26,.5);font-size:.72rem;}
.sup-label{color:var(--text-dim);}
.sup-val{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;color:var(--gold);}
.sup-val.lo{color:var(--red);}

/* stat row */
.srow{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid rgba(42,46,26,.4);font-size:.72rem;}
.sl{color:var(--text-dim);}
.sv{font-family:"Consolas","SF Mono","DejaVu Sans Mono",Menlo,"Courier New",monospace;color:var(--gold);}
.sv.g{color:var(--green);}
.sv.r{color:var(--red);}

/* ── utility classes extracted from inline style attributes (spec §7) ── */
.u1{color:var(--gold);}
.u2{font-size:.6rem; color:var(--text-dim);}
.u3{margin-top:10px;}
.u4{font-size:.55rem; color:var(--text-dim); letter-spacing:.1em;}
.u5{margin-top:6px;}
.u6{font-size:.65rem; color:var(--text-dim);}
.u7{font-size:.6rem; color:var(--text-dim); letter-spacing:.15em;}
.u8{margin-top:8px;}

/* RISOR shaft circles — the three drawn circles share one logical space;
   .pod supplies the interactive styling, this hook allows shaft-specific
   treatment without affecting pods or tubes. */
.risor-node{stroke-linejoin:round;}

/* v1.1 tactical map interaction */
.pod.move-target{stroke:#7ab648 !important;stroke-width:5 !important;fill:rgba(122,182,72,.24) !important;filter:drop-shadow(0 0 5px rgba(122,182,72,.8));cursor:pointer;animation:tacticalPulse 1.15s infinite alternate;}
.pod.attack-target{stroke:#ff5656 !important;stroke-width:5 !important;fill:rgba(240,80,80,.26) !important;filter:drop-shadow(0 0 6px rgba(240,80,80,.9));cursor:crosshair;animation:tacticalPulse .75s infinite alternate;}
.pod.crew-origin{stroke:#5ab8f0 !important;stroke-width:5 !important;filter:drop-shadow(0 0 6px rgba(90,184,240,.9));}
@keyframes tacticalPulse{from{stroke-opacity:.65}to{stroke-opacity:1}}
.crew-token-selected{filter:drop-shadow(0 0 6px #fff);}
.crew-token-selected circle:first-child{stroke:#fff !important;stroke-width:4 !important;}
#tactical-hint{min-height:22px;padding:5px 8px;border:1px solid var(--border);background:var(--panel);color:var(--text-dim);font-size:.62rem;letter-spacing:.06em;text-align:center;}
#tactical-hint.active{color:var(--gold);border-color:var(--gold-dim);}
#combat-result{position:fixed;left:50%;top:18%;transform:translate(-50%,-50%) scale(.8);z-index:700;pointer-events:none;opacity:0;font-family:"Bahnschrift","Arial Narrow",Arial,sans-serif;font-size:2.1rem;font-weight:900;letter-spacing:.16em;text-shadow:0 2px 8px #000;padding:12px 22px;border:2px solid currentColor;background:rgba(10,10,8,.88);}
#combat-result.show{animation:combatResult 1.05s ease forwards;}
#combat-result.hit{color:var(--green)} #combat-result.miss{color:var(--red)} #combat-result.stun{color:var(--gold)}
@keyframes combatResult{0%{opacity:0;transform:translate(-50%,-50%) scale(.65)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-65%) scale(1)}}


/* v1.2 tactical-control enhancements */
.acted-mark{float:right;color:var(--green);font-size:.7rem;margin-left:6px}
.save-row{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:6px}
.save-status{text-align:center;font-size:.54rem;color:var(--text-dim);padding:4px;border-bottom:1px solid var(--border)}
.continue-btn{border-color:var(--green-dim);color:var(--green)}
.crew-card.sel{box-shadow:inset 3px 0 0 var(--blue),0 0 10px rgba(90,184,240,.12)}
.crew-card .cs b{font-variant-numeric:tabular-nums}

/* v1.3.0 Ship Systems & Mission Events */
.scenario-select{max-width:560px;margin:18px auto;text-align:left;border:1px solid #456;padding:12px;background:#09141d}.scenario-select label{display:block;font-family:Consolas,monospace;color:#79d7ff;font-weight:bold;margin-bottom:6px}.scenario-select select{width:100%;padding:8px;background:#071018;color:#d8edf8;border:1px solid #4b7188;font-family:Consolas,monospace}.scenario-select #scenario-desc{margin-top:8px;color:#a9bdc8;font-size:12px}.mission-objective{font-size:11px;line-height:1.45;padding:8px;border-left:3px solid #5ab8f0;background:#0b1720;color:#cde6f5}.sys-row{display:grid;grid-template-columns:72px 1fr 35px;gap:5px;align-items:center;font:10px Consolas,monospace;margin:5px 0}.sys-bar{height:7px;background:#251010;border:1px solid #394f5e}.sys-bar i{display:block;height:100%;background:#6bbf72}.sys-row b{font-size:10px;text-align:right}.sys-row b.warn{color:#f0be2e}.sys-row b.crit{color:#f05050}.survivor-token{filter:drop-shadow(0 0 4px #fff)}

/* v1.4 Tactical Operations */
.alien-timeline{margin:6px 0;padding:7px 9px;border:1px solid #5e5431;background:#0b0d0c;color:#c7c0a2;font:11px Consolas,"DejaVu Sans Mono",monospace;max-height:104px;overflow:hidden}
.alien-timeline>b{color:#f0be2e;letter-spacing:.08em}
#timeline-lines div{padding:2px 0;border-top:1px dotted #2b302c}
.contact-token{filter:drop-shadow(0 0 3px #f0be2e)}
.hazard-token{filter:drop-shadow(0 0 3px #ff6b35)}
.crew-card .cn:has(+ .cr){} 


/* v1.5.0 Crew, Equipment & Campaign Progression */
.campaign-btn{border-color:#7ab648;color:#b9e58d}.campaign-status{font:10px Consolas,monospace;color:#b9e58d;border:1px solid #40542f;background:#0d130a;padding:6px 8px;margin:5px 0}.loadout-panel{font:10px Consolas,monospace;color:#c7c0a2;border:1px solid var(--border);padding:7px;background:#0b0d0c;min-height:42px}.loadout-panel b{color:var(--gold)}.loadout-panel .eq-bad{color:var(--red)}.crew-card .veteran{color:#b9e58d;font-size:.55rem;letter-spacing:.05em}.crew-card .record{color:#8e9687;font-size:.55rem;margin-top:3px}.aar{width:min(720px,92vw);max-height:42vh;overflow:auto;border:1px solid #4d573d;background:#0b0d0c;padding:12px 14px;color:#d5dacd;font:11px Consolas,monospace;line-height:1.55}.aar h3{color:var(--gold);margin:0 0 7px}.aar-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 14px}.campaign-next{border-color:#7ab648;color:#b9e58d}.rank-badge{color:#f0be2e}

/* v1.6.0 Command, Alien Evolution & Dynamic Campaign */
#mission-objective hr{border:0;border-top:1px dotted #395163;margin:6px 0}.campaign-status{line-height:1.45}.aar b{color:var(--gold)}#m-body b{color:var(--gold)}

/* v1.7.0 Alien Ecology & Ship Command */
.ecology-status{font:10px Consolas,"DejaVu Sans Mono",monospace;border:1px solid #3d5031;background:#0b100a;padding:7px;color:#b8c4ae}.eco-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;text-align:center}.eco-summary span{border:1px solid #39432f;padding:4px 2px}.eco-summary b{display:block;color:#d7d88a;font-size:12px}.eco-legend{margin-top:5px;color:#77836c;font-size:8px;text-align:center;letter-spacing:.03em}.command-selection{font:9px Consolas,"DejaVu Sans Mono",monospace;line-height:1.45;color:#9fada3;background:#091017;border:1px solid #314553;padding:6px;margin-top:5px}.command-selection b{color:#79d7ff}.btn.cyan{border-color:#35758e;color:#79d7ff}.pod.eco-1{filter:drop-shadow(0 0 2px rgba(155,180,95,.35))}.pod.eco-2{fill:rgba(115,125,38,.20)!important;filter:drop-shadow(0 0 3px rgba(190,190,60,.48))}.pod.eco-3{fill:rgba(142,82,31,.28)!important;stroke:#c88937!important;filter:drop-shadow(0 0 4px rgba(210,126,48,.65))}.pod.eco-4,.pod.has-nest{fill:rgba(120,25,31,.34)!important;stroke:#e24e58!important;filter:drop-shadow(0 0 6px rgba(226,78,88,.8))}.nest-token{fill:#ff5f6d;filter:drop-shadow(0 0 5px #ff3949)}.eco-level-0{color:#7ab648}.eco-level-1{color:#b8bf68}.eco-level-2{color:#e1c84d}.eco-level-3{color:#e48a3c}.eco-level-4{color:#ff5f6d;font-weight:bold}

/* v1.8.0 Crew Orders, Alien Behavior & Tactical Awareness */
.tactical-awareness{font:9px Consolas,"DejaVu Sans Mono",monospace;line-height:1.45;color:#a9c9d8;background:#071219;border:1px solid #31586a;padding:6px;margin:5px 0}.tactical-awareness b{color:#79d7ff}.order-badge{color:#79d7ff}.crew-card.sel .order-badge{color:#f0be2e}


/* v1.9.0 Tactical Movement, Fire Teams & Advanced Combat */
.fire-team-panel{font:9px Consolas,"DejaVu Sans Mono",monospace;line-height:1.5;color:#b9d8e8;border:1px solid #31586a;background:#071219;padding:6px;margin:5px 0}.fire-team-panel b{color:#79d7ff}.fire-team-panel span{color:#7f929b}.team-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:6px}.pod.route-preview{stroke:#fff4a3!important;stroke-width:6!important;filter:drop-shadow(0 0 7px rgba(255,244,163,.9))!important}.pod.suppress-target{stroke:#ff9f43!important;stroke-width:5!important;fill:rgba(255,159,67,.20)!important;filter:drop-shadow(0 0 6px rgba(255,159,67,.8));cursor:crosshair}.timeline-head{display:flex;align-items:center;justify-content:space-between;gap:5px}.speed-btn{font:8px Consolas,monospace;background:#101411;color:#7f8c82;border:1px solid #39433d;padding:2px 5px;cursor:pointer}.speed-btn.active-speed{color:#f0be2e;border-color:#8d7733;background:#17160d}

.move-cost-token{fill:#fff4a3;stroke:#071018;stroke-width:3px;paint-order:stroke;filter:drop-shadow(0 0 3px #000)}


/* v2.0 Definitive Edition */
.definitive-setup{margin:14px auto;max-width:720px;padding:12px;border:1px solid #526b73;background:rgba(0,12,18,.72);display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap}
.definitive-setup label,.accessibility-panel{font-family:monospace;font-size:.78rem;letter-spacing:.08em}
.definitive-setup select,.accessibility-panel select{background:#071217;color:#d7edf0;border:1px solid #59737b;padding:6px}
.definitive-btn{width:100%}
.def-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:6px 0}
.definitive-status{font:700 .72rem monospace;padding:7px;border:1px solid #536c73;background:#071217;color:#b9e9ef;margin:6px 0}
.accessibility-panel{margin:8px 0;padding:6px;border:1px solid #4b5c61;background:#081115}
.accessibility-panel label{display:block;margin:5px 0}
.pod.threat-low{stroke:#d6c759!important;stroke-width:4!important}
.pod.threat-med{stroke:#e78b35!important;stroke-width:6!important;filter:drop-shadow(0 0 4px #e78b35)}
.pod.threat-high{stroke:#ff3d3d!important;stroke-width:8!important;filter:drop-shadow(0 0 7px #ff3d3d)}
.pod.system-risk{stroke:#57c7ff!important;stroke-width:6!important;stroke-dasharray:9 5}
.high-contrast .pod.move-target{stroke-width:9!important}
.high-contrast .pod.attack-target{stroke-width:9!important}
.high-contrast .pod.has-nest{stroke-width:9!important}
.reduce-motion *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(max-width:1050px){
  #layout{grid-template-columns:minmax(170px,22%) 1fr!important}
  #layout>.side:last-child{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  #layout>.side:last-child>.ptitle{grid-column:1/-1}
}
@media(max-width:720px){
  #layout{display:block!important}
  .side{max-height:none!important}
  #layout>.side:last-child{display:block}
  #hdr{position:sticky;top:0;z-index:30}
  .def-grid{grid-template-columns:1fr}
}

.custom-config{display:grid;grid-template-columns:1fr 1fr;gap:10px;text-align:left;margin:10px 0}
.custom-config label{display:flex;flex-direction:column;gap:4px;font:700 .78rem monospace}
.custom-config input,.custom-config select{background:#071217;color:#d7edf0;border:1px solid #59737b;padding:7px}
@media(max-width:600px){.custom-config{grid-template-columns:1fr}}


/* v2.0.1 readability pass — larger in-game print */
html { font-size: 17px; }

#hdr h1 { font-size: 1.18rem; }
#hdr-right { font-size: .88rem; }

.ptitle { font-size: .78rem; line-height: 1.35; padding-top: 8px; padding-bottom: 6px; }
.track-label { font-size: .78rem; }
.track-box { font-size: .72rem; }

.cn { font-size: .76rem; }
.cr { font-size: .78rem; }
.cs span { font-size: .74rem; }
.crew-card .veteran,
.crew-card .record { font-size: .70rem; line-height: 1.35; }

.alien-card { font-size: .78rem; }
.alien-name { font-size: .72rem; }
.alien-stats { font-size: .72rem; }

.btn {
  font-size: .88rem;
  line-height: 1.25;
  min-height: 36px;
  padding-top: 8px;
  padding-bottom: 8px;
}
.act-label { font-size: .72rem; line-height: 1.3; }

#log { font-size: .80rem; line-height: 1.45; }
.alien-timeline,
#timeline-lines { font-size: .78rem; line-height: 1.4; }
.timeline-head { font-size: .78rem; }
.speed-btn { font-size: .70rem; min-height: 28px; }

.ppip { font-size: .68rem; line-height: 1.25; }
.rules-table { font-size: .72rem; line-height: 1.25; }
.rules-table th,
.rules-table td { padding: 4px 5px; }

.sup-row,
.srow { font-size: .80rem; line-height: 1.35; }

#tactical-hint { font-size: .78rem; line-height: 1.4; }
.save-status { font-size: .72rem; line-height: 1.35; }
.mission-objective { font-size: .80rem; line-height: 1.4; }
.scenario-select #scenario-desc { font-size: .80rem; line-height: 1.35; }

.sys-row { font-size: .76rem; }
.sys-row b { font-size: .74rem; }
.eco-summary,
.eco-summary b { font-size: .76rem; line-height: 1.35; }
.eco-legend { font-size: .68rem; line-height: 1.3; }

#hovercard .hc-title { font-size: .82rem; }
#hovercard .hc-sec { font-size: .70rem; }
#hovercard .hc-row { font-size: .80rem; }
#hovercard .hc-row .hc-stat { font-size: .74rem; }
#hovercard .hc-empty { font-size: .78rem; }

.fire-team-panel,
.loadout-panel,
.tactical-awareness,
.command-selection,
.campaign-status,
.definitive-status { font-size: .76rem; line-height: 1.4; }

#mbox h3 { font-size: 1.08rem; }
#mbox p { font-size: .90rem; line-height: 1.5; }

.accessibility-panel { font-size: .78rem; }
.accessibility-panel summary { font-size: .82rem; padding: 4px 0; }

/* Preserve the board's scale while making its important text less microscopic. */
.deck-label { font-size: .76rem; }
.tube-label { font-size: .60rem; }
.pod-id { font-size: .78rem; }
.pod-name { font-size: .62rem; }

/* Let taller text scroll rather than force the entire game to shrink. */
.side { overflow-y: auto; scrollbar-width: thin; }

@media (max-width: 1200px) {
  html { font-size: 16px; }
  .btn { font-size: .84rem; }
  #log { font-size: .78rem; }
}


/* v2.0.1 widescreen dashboard rework */
@media (min-width: 1280px) {
  #layout {
    grid-template-columns: minmax(300px, 18vw) minmax(640px, 1fr) minmax(400px, 24vw) !important;
    height: calc(100vh - 44px);
    min-height: 0;
  }
  .side { min-width:0; padding:10px 12px; gap:6px; }
  #center { min-width:0; padding:10px 14px; gap:7px; }
  #shipmap { max-width:735px; max-height:70vh; }

  /* Left side becomes a dashboard instead of a receipt. */
  .side-left .status-pair { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
  .side-left .status-track { margin:0; min-width:0; }
  .side-left .track-boxes { gap:2px; }
  .side-left .track-box { min-width:0; flex:1 1 0; padding:3px 0; }
  .side-left .stat-grid,
  .side-left .supply-grid { display:grid; grid-template-columns:1fr 1fr; gap:3px 10px; }
  .side-left .srow,
  .side-left .sup-row { padding:4px 2px; min-width:0; }
  .side-left #ship-systems { display:grid; grid-template-columns:1fr 1fr; gap:1px 10px; }
  .side-left .sys-row { grid-template-columns:74px minmax(40px,1fr) 38px; margin:3px 0; }
  .side-left .mission-objective { padding:7px 9px; }
  .side-left .ecology-status { padding:6px; }
  .side-left .phase-dice-grid { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(105px,.7fr); column-gap:10px; align-items:start; }
  .side-left .phase-dice-grid > .ptitle:nth-of-type(1) { grid-column:1; grid-row:1; }
  .side-left #phase-pips { grid-column:1; grid-row:2; }
  .side-left .phase-dice-grid > .ptitle:nth-of-type(2) { grid-column:2; grid-row:1; }
  .side-left #dice-row { grid-column:2; grid-row:2; margin-top:1px; }
  .side-left #phase-pips { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:3px; }
  .side-left .ppip { padding:4px 3px; text-align:center; }

  /* Right side uses its width: crew and action controls flow across two columns. */
  .side-right #crew-list { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
  .side-right .crew-card { margin:0; padding:7px 8px; }
  .side-right .loadout-panel { min-height:0; }
  .side-right .team-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:4px; }
  .side-right .team-grid .btn { padding-left:4px; padding-right:4px; }

  .side-right .action-grid { display:grid; grid-template-columns:1fr 1fr; gap:5px 6px; align-items:stretch; }
  .side-right .action-grid > .act-label,
  .side-right .action-grid > .tactical-awareness,
  .side-right .action-grid > .def-grid,
  .side-right .action-grid > .definitive-status,
  .side-right .action-grid > .command-selection { grid-column:1 / -1; }
  .side-right .action-grid > .act-label { margin-top:3px; margin-bottom:0; padding-top:5px; }
  .side-right .action-grid .btn { width:100%; margin:0; min-height:34px; }
  .side-right .def-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:4px; margin:1px 0; }
  .side-right .def-grid .btn { font-size:.72rem; min-height:30px; padding:5px 3px; }
  .side-right .tactical-awareness,
  .side-right .definitive-status,
  .side-right .command-selection { margin:1px 0; padding:5px 7px; }

  .side-right .utility-grid { display:grid; grid-template-columns:1fr 1fr; gap:5px 6px; align-items:start; }
  .side-right .utility-grid > .act-label { grid-column:1 / -1; }
  .side-right #b-endturn { grid-column:1 / -1; }
  .side-right .accessibility-panel { grid-column:1; margin:0; }
  .side-right .save-row { grid-column:2; margin:0; align-self:start; }
  .side-right .save-status { grid-column:1 / -1; text-align:center; }

  .side-right .reference-panel { border:1px solid var(--border); background:#0b0d0c; margin:1px 0; }
  .side-right .reference-panel summary { cursor:pointer; padding:7px 9px; color:var(--gold); font:700 .72rem Consolas,monospace; }
  .side-right .reference-panel[open] { padding-bottom:6px; }
  .side-right .reference-panel .rules-table { margin:2px 6px 0; width:calc(100% - 12px); }
}

/* Keep the three-column desktop layout longer; only stack once space is genuinely tight. */
@media (min-width: 1051px) and (max-width:1279px) {
  #layout { grid-template-columns:260px minmax(520px,1fr) 340px !important; }
  #shipmap { max-width:680px; }
  .side-right #crew-list { display:grid; grid-template-columns:1fr 1fr; gap:5px; }
  .side-right .action-grid { display:grid; grid-template-columns:1fr 1fr; gap:5px; }
  .side-right .action-grid > .act-label,
  .side-right .action-grid > .tactical-awareness,
  .side-right .action-grid > .def-grid,
  .side-right .action-grid > .definitive-status,
  .side-right .action-grid > .command-selection { grid-column:1/-1; }
  .side-right .reference-panel { border:1px solid var(--border); margin:2px 0; }
  .side-right .reference-panel summary { padding:6px; cursor:pointer; color:var(--gold); }
}


/* Fire Teams header placement fix */
.fireteam-title {
  grid-column: 1 / -1 !important;
  width: 100%;
  margin-top: 8px;
}
#fire-team-panel {
  grid-column: 1 / -1 !important;
}
.team-grid {
  grid-column: 1 / -1 !important;
}


/* Fire Team help and readiness */
.fireteam-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
}
.mini-help-btn{
  width:26px;
  height:26px;
  min-width:26px;
  border-radius:50%;
  border:1px solid #6c8992;
  background:#0a171c;
  color:#d9f7ff;
  font-weight:800;
  cursor:pointer;
}
.mini-help-btn:hover{background:#163039}
.fire-team-readiness{
  grid-column:1 / -1 !important;
  padding:7px 9px;
  margin:4px 0 7px;
  border:1px solid #50646a;
  background:#081216;
  font-size:.74rem;
  line-height:1.35;
}
.fire-team-readiness.ready{border-color:#5f9d72}
.fire-team-readiness.not-ready{border-color:#8a6658}
