/* Necromunda underhive: soot, corroded plate, hazard stripes. Type is plain Barlow
   for readability — labels are small caps, headings condensed, numbers mono.
   Deliberately single-theme — the grimdark holds in any host. */
:root{
  --void:#0C0C0B;
  --soot:#131211;
  --plate:#1B1A17;
  --plate-hi:#232118;
  --steel:#3A352C;
  --steel-hi:#4C4639;
  --bone:#DAD4C4;
  --dust:#A89F8D;
  --hazard:#E8B317;
  --oxide:#B4531E;
  --toxic:#8FBF3F;
  --blood:#A32B24;
  --ink:#100F0D;
  --display:"Barlow Condensed","Arial Narrow",sans-serif;
  --label:"Barlow","Helvetica Neue",Arial,sans-serif;
  --body:"Barlow","Helvetica Neue",Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --hazard-band:repeating-linear-gradient(135deg,var(--hazard) 0 14px,var(--ink) 14px 28px);
  --rivet:radial-gradient(circle at 50% 45%,var(--steel-hi) 0 2px,#0E0D0B 2.4px,transparent 3px);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--void);color:var(--bone);
  font:400 17.5px/1.55 var(--body);font-variant-numeric:tabular-nums;
  background-image:
    radial-gradient(ellipse 120% 60% at 50% -10%, rgba(180,83,30,.16), transparent 70%),
    radial-gradient(ellipse 90% 50% at 50% 110%, rgba(143,191,63,.07), transparent 70%);
  background-attachment:fixed;
}
/* grime */
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:99;opacity:.035;
  background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}
.wrap{max-width:960px;margin:0 auto;padding-inline:20px;padding-block:34px 72px;position:relative;z-index:1}

/* ---- header ---- */
.eyebrow{
  display:flex;align-items:center;gap:10px;margin:0 0 10px;
  font:600 14px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--hazard);
}
.eyebrow::before{content:"";width:22px;height:10px;background:var(--hazard-band);flex:none}
h1{
  font:800 clamp(38px,8.5vw,68px)/.92 var(--display);
  letter-spacing:.005em;text-transform:uppercase;text-wrap:balance;
  margin:0 0 12px;color:var(--bone);
  text-shadow:0 2px 0 #000, 0 0 30px rgba(232,179,23,.10);
}
.lede{margin:0 0 20px;max-width:52ch;color:var(--dust);font-size:17px}
.meta{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin:0;
  font:500 14.5px/1 var(--body);color:var(--dust);
}
.meta b{color:var(--hazard);font-weight:600}
.hazard-band{height:9px;background:var(--hazard-band);margin:18px 0 0;box-shadow:0 2px 6px rgba(0,0,0,.6)}
.linkbtn{
  font:500 14.5px/1 var(--body);
  color:var(--toxic);background:none;border:0;padding:0;cursor:pointer;
  text-decoration:underline;text-underline-offset:4px;
}

/* ---- riveted plate ---- */
.panel{
  position:relative;background:var(--plate);border:1px solid var(--steel);
  padding:24px;margin-top:26px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 14px 30px -20px #000;
}
.panel::before{
  content:"";position:absolute;inset:7px;pointer-events:none;
  background-image:var(--rivet),var(--rivet),var(--rivet),var(--rivet);
  background-size:7px 7px;background-repeat:no-repeat;
  background-position:0 0,100% 0,0 100%,100% 100%;
}
.stencil{
  font:600 13.5px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;
  color:var(--dust);margin:0 0 16px;display:flex;align-items:center;gap:9px;
}
.stencil::after{content:"";height:1px;flex:1;background:linear-gradient(90deg,var(--steel),transparent)}

/* ---- prime slots ---- */
.leading{margin-top:26px}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:12px;list-style:none;margin:0;padding:0}
.tile{
  position:relative;background:var(--plate-hi);border:1px solid var(--steel);
  border-top:3px solid var(--steel-hi);padding:14px 16px 16px;
}
.tile.first{border-top-color:var(--toxic);background:linear-gradient(180deg,rgba(143,191,63,.09),transparent 60%),var(--plate-hi)}
.tile .when{font:600 13px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--dust)}
.tile.first .when{color:var(--toxic)}
.tile .date{font:800 30px/1 var(--display);text-transform:uppercase;letter-spacing:.01em;margin:9px 0 10px;color:var(--bone)}
.tile .score{display:flex;align-items:baseline;gap:7px;margin:0}
.tile .score b{font:600 28px/1 var(--mono);color:var(--toxic)}
.tile .score span{font-size:13.5px;color:var(--dust)}
.tile .extra{margin:5px 0 0;font-size:14.5px;color:var(--hazard)}

/* ---- name field ---- */
.namerow{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-bottom:20px}
.field{display:flex;flex-direction:column;gap:7px;flex:1 1 230px;min-width:0}
.field label{font:600 13px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--dust)}
.field input{
  font:500 18px/1.2 var(--body);color:var(--bone);background:var(--soot);
  border:1px solid var(--steel-hi);border-radius:0;padding:12px 13px;width:100%;
  box-shadow:inset 0 2px 5px rgba(0,0,0,.55);
}
.field input::placeholder{color:#7A7264}
.field input:focus-visible{outline:2px solid var(--hazard);outline-offset:1px;border-color:var(--hazard)}

/* ---- day rows ---- */
.daylist{list-style:none;margin:0;padding:0;border-top:1px solid var(--steel)}
.day{
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:10px 0;border-bottom:1px solid var(--steel);
}
.day.weekend{background:linear-gradient(90deg,rgba(232,179,23,.05),transparent 55%)}
.daylabel{display:flex;align-items:baseline;gap:10px;min-width:0}
.dow{font:500 14.5px/1 var(--body);color:var(--dust);width:2.8em;flex:none}
.day.weekend .dow{color:var(--hazard)}
.dnum{font:800 22px/1 var(--display);color:var(--bone)}
.dmon{font:500 14.5px/1 var(--body);color:var(--dust)}
.seg{display:flex;flex:none}
.seg button{
  font:600 13px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;
  background:var(--soot);color:var(--dust);
  border:1px solid var(--steel-hi);border-left-width:0;
  padding:11px 14px;cursor:pointer;min-width:74px;
}
.seg button:first-child{border-left-width:1px}
.seg button:hover{color:var(--bone);background:var(--plate-hi)}
.seg button:focus-visible{outline:2px solid var(--hazard);outline-offset:1px;position:relative;z-index:1}
.seg button[aria-pressed="true"]{border-color:#0E0D0B;text-shadow:none}
.seg button[aria-pressed="true"][data-val="yes"]{background:var(--toxic);color:var(--ink)}
.seg button[aria-pressed="true"][data-val="maybe"]{background:var(--hazard);color:var(--ink)}
.seg button[aria-pressed="true"][data-val="no"]{background:var(--blood);color:var(--bone)}

/* ---- actions ---- */
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:15px;margin-top:22px}
.primary{
  font:600 14.5px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;
  background:var(--hazard);color:var(--ink);border:1px solid #6E5208;border-radius:0;
  padding:15px 26px;cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35), 0 3px 0 #6E5208;
}
.primary:hover{background:#F2C231}
.primary:active{transform:translateY(2px);box-shadow:inset 0 1px 0 rgba(255,255,255,.3), 0 1px 0 #6E5208}
.primary:disabled{opacity:.45;cursor:not-allowed;transform:none}
.primary:focus-visible,.linkbtn:focus-visible,.ghost:focus-visible{outline:2px solid var(--toxic);outline-offset:3px}
.ghost{
  font:500 15px/1 var(--body);color:var(--dust);background:none;border:0;padding:0;
  cursor:pointer;text-decoration:underline;text-underline-offset:4px;
}
.ghost:hover{color:var(--bone)}
.status{font:500 15px/1.3 var(--body);color:var(--dust)}
.status.ok{color:var(--toxic)}
.status.bad{color:#E07B72}

/* ---- mustered ---- */
.voted{display:flex;flex-wrap:wrap;align-items:center;gap:9px 16px}
.voted p{margin:0;font-size:17px}
.voted .who{font-weight:600;color:var(--hazard);text-transform:uppercase;letter-spacing:.04em}

/* ---- roster ---- */
/* room below the tally bars so the scrollbar doesn't sit on them */
.tablewrap{overflow-x:auto;padding-bottom:16px;scrollbar-color:var(--steel-hi) var(--soot)}
.tablewrap::-webkit-scrollbar{height:11px}
.tablewrap::-webkit-scrollbar-track{background:var(--soot);border:1px solid var(--steel)}
.tablewrap::-webkit-scrollbar-thumb{background:var(--steel-hi);border:1px solid #0E0D0B}
.tablewrap::-webkit-scrollbar-thumb:hover{background:var(--dust)}
table{border-collapse:separate;border-spacing:0;width:100%;min-width:max-content}
th,td{text-align:center;padding:0;border-bottom:1px solid var(--steel)}
thead th{
  font:500 14.5px/1.3 var(--body);
  color:var(--dust);padding:0 0 10px;vertical-align:bottom;white-space:nowrap;
  border-bottom:2px solid var(--steel-hi);
}
thead th .hd{display:block;font:700 18px/1.15 var(--body);color:var(--bone);margin-top:3px}
th.lead,td.lead{background:rgba(143,191,63,.09)}
thead th.lead{color:var(--toxic);border-bottom-color:var(--toxic)}
thead th.lead .hd{color:var(--toxic)}
.namecell{
  position:sticky;left:0;z-index:2;background:var(--plate);
  text-align:left;min-width:112px;max-width:180px;
  padding:11px 15px 11px 0;font-size:16px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
thead .namecell{padding-bottom:10px;font:600 13px/1 var(--label);letter-spacing:.07em;color:var(--dust)}
tbody tr.me .namecell,tbody tr.me td{background:rgba(180,83,30,.16)}
tbody tr.me .namecell{color:var(--hazard);font-weight:600}
/* flex-centred so the glyph sits dead centre on both axes regardless of the
   1px border eating into the fixed 28px box */
.mark{display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;font:600 13px var(--mono);border:1px solid transparent;
  vertical-align:middle}
.mark.yes{background:rgba(143,191,63,.16);border-color:rgba(143,191,63,.5);color:var(--toxic)}
.mark.maybe{background:rgba(232,179,23,.14);border-color:rgba(232,179,23,.45);color:var(--hazard)}
.mark.no{background:rgba(163,43,36,.16);border-color:rgba(163,43,36,.5);color:#E07B72}
.mark.none{color:var(--steel-hi)}
tbody td{padding:9px 6px;min-width:54px}
tfoot td{padding:13px 6px 0;border-bottom:0;vertical-align:top}
tfoot .count{font:600 19px/1 var(--mono);color:var(--toxic)}
tfoot .count.zero{color:var(--steel-hi)}
tfoot .maybes{font:500 12px/1.4 var(--mono);color:var(--hazard);display:block;margin-top:3px;min-height:1.4em}
tfoot .bar{display:block;height:6px;background:var(--soot);border:1px solid var(--steel);margin-top:8px;position:relative;overflow:hidden}
tfoot .bar i{position:absolute;inset:0 auto 0 0;background:repeating-linear-gradient(135deg,var(--toxic) 0 5px,#5F8222 5px 10px)}
tfoot .namecell{padding-top:13px;font:600 13px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--dust)}

.empty{margin:0;color:var(--dust);font-size:16px}
.legend{display:flex;flex-wrap:wrap;gap:10px 20px;margin:20px 0 0;padding:0;list-style:none;
  font:500 14.5px/1 var(--body);color:var(--dust)}
.legend li{display:flex;align-items:center;gap:8px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.primary:active{transform:none}}
@media (max-width:560px){
  .panel{padding:19px}
  .seg button{min-width:64px;padding:11px 9px;letter-spacing:.1em}
  .day{padding:12px 0}
}

/* ---- top nav ---- */
.topnav{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 18px;margin:0 0 22px;
  font:500 14.5px/1 var(--body);}
.topnav a{color:var(--dust);text-decoration:none;border-bottom:1px solid var(--steel-hi);padding-bottom:3px}
.topnav a:hover{color:var(--hazard);border-color:var(--hazard)}
.topnav a:focus-visible,.plate:focus-visible,.chip button:focus-visible{outline:2px solid var(--hazard);outline-offset:3px}

/* ---- sealed stamp ---- */
.stamp{
  display:inline-block;font:600 14.5px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;
  color:#E07B72;border:2px solid var(--blood);padding:7px 12px 6px;transform:rotate(-3deg);
  background:rgba(163,43,36,.10);box-shadow:inset 0 0 0 1px rgba(163,43,36,.35);
}
.sealed-note{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin:0}
.sealed-note span:last-child{color:var(--dust)}

/* ---- anchor styled as the primary button ---- */
a.primary{display:inline-block;text-decoration:none}

/* ---- muster board (lobby) ---- */
.boardhead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-top:26px}
.board{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.plate{
  position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 20px;
  background:var(--plate);border:1px solid var(--steel);border-left:4px solid var(--hazard);
  padding:18px 20px;color:var(--bone);text-decoration:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 12px 26px -20px #000;
}
.plate:hover{border-color:var(--hazard);background:var(--plate-hi)}
.plate .ptitle{font:700 clamp(22px,4vw,26px)/1 var(--body);margin:0 0 9px}
.plate .pmeta{margin:0;font:500 14.5px/1.5 var(--body);color:var(--dust)}
.plate .pmeta b{color:var(--hazard);font-weight:600}
.plate .go{font:600 13px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--hazard);flex:none}
.plate.sealed{border-left-color:var(--steel-hi)}
.plate.sealed .ptitle{color:var(--dust)}
.plate.sealed .pmeta b{color:var(--dust)}
.plate.sealed:hover{border-color:var(--steel-hi)}
.section-gap{margin-top:34px}

/* ---- calendar date picker ---- */
.calnav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.calnav button{
  font:600 13px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;
  background:var(--soot);color:var(--dust);border:1px solid var(--steel-hi);padding:10px 14px;cursor:pointer;
}
.calnav button:hover{color:var(--bone);background:var(--plate-hi)}
.calnav button:focus-visible,.cday:focus-visible{outline:2px solid var(--hazard);outline-offset:1px;position:relative;z-index:1}
.cal{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:22px}
.month h3{font:800 24px/1 var(--display);text-transform:uppercase;letter-spacing:.02em;margin:0 0 10px;color:var(--bone)}
.month h3 small{font:500 12px/1 var(--mono);letter-spacing:.1em;color:var(--dust);margin-left:8px}
.dowrow,.daygrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.dowrow span{font:500 14.5px/1 var(--body);color:var(--dust);text-align:center;padding:0 0 7px}
.dowrow span.we{color:var(--hazard)}
.cday{
  aspect-ratio:1;min-width:0;font:600 14px/1 var(--mono);
  background:var(--soot);color:var(--bone);border:1px solid var(--steel);cursor:pointer;padding:0;
}
.cday:hover:not(:disabled){border-color:var(--hazard);color:var(--hazard)}
.cday.today{box-shadow:inset 0 0 0 1px var(--dust)}
.cday:disabled{color:var(--steel-hi);background:transparent;border-color:transparent;cursor:not-allowed}
.cday[aria-pressed="true"]{background:var(--hazard);color:var(--ink);border-color:#6E5208}
.cday[aria-pressed="true"]:hover{color:var(--ink);background:#F2C231}
.cblank{aspect-ratio:1}
.chips{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:7px}
.chip{display:flex;align-items:center;gap:8px;background:var(--plate-hi);border:1px solid var(--steel-hi);
  padding:6px 6px 6px 10px;font:500 14.5px/1 var(--body);color:var(--bone)}
.chip button{background:none;border:0;color:var(--dust);cursor:pointer;font:600 14px/1 var(--mono);padding:2px 4px}
.chip button:hover{color:#E07B72}
.hint{margin:14px 0 0;color:var(--dust);font-size:16px}
.ghost.danger{color:#E07B72}
.ghost.danger:hover{color:#FF9D94}
.divider{height:1px;background:var(--steel);margin:24px 0 20px;border:0}

/* ======================= Outlander campaign ======================= */
.phasebar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:22px}
.phasebar .stencil{margin:0}
.phases{display:flex}
.phases button{
  font:600 13px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;
  background:var(--soot);color:var(--dust);border:1px solid var(--steel-hi);border-left-width:0;padding:10px 14px;cursor:pointer;
}
.phases button:first-child{border-left-width:1px}
.phases button:hover{color:var(--bone);background:var(--plate-hi)}
.phases button[aria-pressed="true"]{background:var(--hazard);color:var(--ink);border-color:#6E5208}
.phases button:focus-visible{outline:2px solid var(--toxic);outline-offset:1px;position:relative;z-index:1}
.phasenote{margin:10px 0 0;color:var(--dust);font-size:16px}

/* stash: credits + the three Materials */
.stash{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;list-style:none;margin:0;padding:0}
.stash li{background:var(--soot);border:1px solid var(--steel);padding:12px 14px 13px;box-shadow:inset 0 2px 5px rgba(0,0,0,.5)}
.stash .lbl{display:block;font:600 13px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--dust)}
.stash .val{display:block;font:600 30px/1 var(--mono);margin-top:8px;color:var(--bone)}
.stash .val.neg{color:#E07B72}
.stash li.credits .val{color:var(--hazard)}
.stash .sub{display:block;font:500 13.5px/1.3 var(--mono);color:var(--toxic);margin-top:6px;min-height:1.3em}

/* gang plates on the overview */
.plate .gangmeta{margin:0;font:500 14.5px/1.5 var(--body);color:var(--dust)}
.plate .nums{display:flex;flex-wrap:wrap;gap:6px 14px;margin:10px 0 0;padding:0;list-style:none;font:600 13px/1 var(--mono)}
.plate .nums li{display:flex;align-items:baseline;gap:5px}
.plate .nums .k{font:600 11.5px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--dust)}
.plate .nums .cr{color:var(--hazard)}
.plate .caps{margin:8px 0 0;font:500 14.5px/1.5 var(--body);color:var(--dust)}
.plate .caps b{color:var(--bone);font-weight:600}
.plate .caps .over{color:#E07B72}
.plate.needsite{border-left-color:var(--blood)}

/* forms with several fields */
.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.fields .field{flex:none}
.field select{
  font:500 16px/1.2 var(--body);color:var(--bone);background:var(--soot);border:1px solid var(--steel-hi);
  border-radius:0;padding:11px 12px;width:100%;box-shadow:inset 0 2px 5px rgba(0,0,0,.55);
}
.field select:focus-visible{outline:2px solid var(--hazard);outline-offset:1px;border-color:var(--hazard)}
.field input[type="number"]{font-family:var(--mono);font-size:17px}
.checks{display:flex;flex-wrap:wrap;gap:8px 18px;margin:0;padding:0;list-style:none}
.checks label{display:flex;align-items:center;gap:8px;font-size:15.5px;cursor:pointer}
.checks input{width:18px;height:18px;accent-color:var(--hazard)}
.fields.narrow{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}

/* structure lists */
.slist{list-style:none;margin:0;padding:0;border-top:1px solid var(--steel)}
.srow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;padding:11px 0;border-bottom:1px solid var(--steel)}
.srow .sname{font:700 18px/1.15 var(--body);margin:0}
.srow .sbenefit{margin:3px 0 0;font-size:15.5px;color:var(--dust)}
.srow .sreq{margin:3px 0 0;font:500 14.5px/1.5 var(--body);color:#E07B72}
.srow .sreq.ok{color:var(--toxic)}
.srow .sside{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;flex:0 1 auto;min-width:0} /* may shrink: phone widths */
.srow.blocked .sname{color:var(--dust)}
.mats{display:inline-flex;flex-wrap:wrap;gap:5px;margin:0;padding:0;list-style:none}
.mats li{font:600 13px/1 var(--mono);letter-spacing:.02em;padding:7px 11px;border:1px solid var(--steel-hi);background:var(--soot);color:var(--bone);white-space:nowrap}
.mats li.short{border-color:var(--blood);color:#E07B72}
.mats li.free{color:var(--toxic);border-color:rgba(143,191,63,.5)}
.typehead{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:22px 0 8px}
.typehead:first-child{margin-top:0}
.typehead .stencil{margin:0}
.typehead .cap{font:600 14.5px/1 var(--mono);color:var(--dust)}
.typehead .cap b{color:var(--bone)}
.typehead .cap.over b{color:#E07B72}
.small{
  font:600 13px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;
  background:var(--soot);color:var(--bone);border:1px solid var(--steel-hi);padding:9px 12px;cursor:pointer;
}
.small:hover:not(:disabled){border-color:var(--hazard);color:var(--hazard)}
.small:disabled{color:var(--steel-hi);cursor:not-allowed}
.small.go{background:var(--toxic);color:var(--ink);border-color:#4F7320}
.small.go:hover:not(:disabled){background:#A5D455;color:var(--ink)}
.small:focus-visible{outline:2px solid var(--hazard);outline-offset:2px}
.showall{margin-top:14px}

/* ledger */
.ledger{width:100%;border-collapse:separate;border-spacing:0;min-width:max-content}
.ledger th,.ledger td{text-align:left;padding:9px 12px 9px 0;border-bottom:1px solid var(--steel);vertical-align:top;font-size:15.5px}
.ledger th{font:600 13px/1.3 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--dust);border-bottom:2px solid var(--steel-hi)}
.ledger td.n,.ledger th.n{text-align:right;font:600 14px/1.4 var(--mono)}
.ledger td.n.pos{color:var(--toxic)}
.ledger td.n.neg{color:#E07B72}
.ledger td.n.zero{color:var(--steel-hi)}
.ledger .when{font:500 12.5px/1.4 var(--mono);color:var(--dust);white-space:nowrap}
.ledger .kind{display:inline-block;font:600 11px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;padding:4px 6px;border:1px solid var(--steel-hi);color:var(--dust);margin-right:8px;vertical-align:1px}
.ledger .kind.game{color:var(--hazard);border-color:#6E5208}
.ledger .kind.collect{color:var(--toxic);border-color:#4F7320}
.ledger .note{color:var(--bone)}
.ledger .sub{display:block;font-size:14px;color:var(--dust);margin-top:2px}
.ledger .x{background:none;border:0;color:var(--dust);cursor:pointer;font:600 15px/1 var(--mono);padding:2px 6px}
.ledger .x:hover{color:#E07B72}
.recent li{padding:10px 0;border-bottom:1px solid var(--steel);font-size:16px;display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}
.recent{list-style:none;margin:0;padding:0;border-top:1px solid var(--steel)}
.recent .who{font:700 16.5px/1.2 var(--body);letter-spacing:.02em}
.recent .who a{color:var(--hazard);text-decoration:none}
.recent .who a:hover{text-decoration:underline;text-underline-offset:3px}
.recent .delta{font:600 14px/1 var(--mono);color:var(--toxic)}
.recent .delta.neg{color:#E07B72}
.recent .when{font:500 12px/1 var(--mono);color:var(--dust);margin-left:auto}

/* standings */
.standings{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;list-style:none;margin:0;padding:0}
.standings li{background:var(--plate-hi);border:1px solid var(--steel);border-top:3px solid var(--hazard);padding:14px 16px 15px}
.standings .t{font:600 13px/1.4 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--dust)}
.standings .w{font:700 24px/1.1 var(--body);margin:8px 0 6px;color:var(--bone)}
.standings .d{font:600 15px/1.3 var(--mono);color:var(--hazard)}
.standings .d small{font-weight:500;color:var(--dust)}
.inline-edit{margin-top:16px}
.warnline{margin:10px 0 0;color:#E07B72;font-size:15.5px;padding-bottom:12px}

/* ---- sign-in box, logs ---- */
.signin{border-color:var(--hazard)}
.signin .stencil{color:var(--hazard)}
.recent .detail{flex:1 1 240px;min-width:0}
.recent .by{font:500 14px/1 var(--body);color:var(--dust)}
.recent .camp{color:var(--dust)}
.recent a.when{color:var(--hazard);text-decoration:none}
.recent a.when:hover{text-decoration:underline;text-underline-offset:3px}
.ledger td.wk{font:500 14px/1.4 var(--mono);color:var(--dust)}
.ledger .kind.market{color:var(--toxic);border-color:#4F7320}

/* ---- per-week log ---- */
.weeklog{list-style:none;margin:0;padding:0}
.weeklog>li{margin-top:18px}
.weeklog>li:first-child{margin-top:0}
.weekhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin:0 0 4px}
.weekhead b{font:700 20px/1.2 var(--body);color:var(--bone)}
.weekhead span{font:500 15px/1.3 var(--body);color:var(--dust)}
.weekhead .ph{color:var(--hazard)}
.small.go:disabled{background:var(--soot);border-color:var(--steel);color:var(--steel-hi)}

/* ---- round checklist + status flags ---- */
.todo{list-style:none;margin:0;padding:0}
.todo li{display:flex;align-items:baseline;gap:12px;padding:9px 0;border-bottom:1px solid var(--steel);font-size:16.5px}
.todo .tick{font:600 16px/1 var(--mono);width:1.2em;flex:none;text-align:center;color:var(--dust)}
.todo li.done .tick{color:var(--toxic)}
.todo li.done{color:var(--dust)}
.todo li.todo .tick{color:var(--hazard)}
.todo a{color:var(--bone);text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--steel-hi)}
.todo li.done a{color:var(--dust)}
.todo a:hover{color:var(--hazard)}
.flags{display:inline-flex;flex-wrap:wrap;gap:6px}
.flag{font:600 12.5px/1 var(--label);letter-spacing:.04em;text-transform:uppercase;padding:5px 7px;border:1px solid var(--steel-hi);color:var(--dust)}
.flag.ok{color:var(--toxic);border-color:#4F7320}
.flag.warn{color:var(--hazard);border-color:#6E5208}
.flag.bad{color:#E07B72;border-color:var(--blood)}
#battle,#build{scroll-margin-top:20px}

/* ---- planner ---- */
.steps{list-style:none;margin:14px 0 0;padding:0;border-top:1px solid var(--steel)}
.steps li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:10px 0;border-bottom:1px solid var(--steel)}
.steps .rd{font:600 12.5px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;padding:6px 8px;border:1px solid var(--steel-hi);color:var(--dust);flex:none;min-width:86px;text-align:center}
.steps .rd.now{color:var(--toxic);border-color:#4F7320}
.steps .rd.later{color:var(--hazard);border-color:#6E5208}
.steps .rd.never{color:#E07B72;border-color:var(--blood)}
.steps .sname{font:700 17px/1.2 var(--body);margin:0;flex:1 1 160px}
.steps .why{flex-basis:100%;margin:0;font:500 14.5px/1.5 var(--body);color:#E07B72}
.forecast{list-style:none;margin:0;padding:0;display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.forecast li{background:var(--soot);border:1px solid var(--steel);padding:10px 12px}
.forecast .rd{display:block;font:600 12.5px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--dust);margin-bottom:8px}
.plate .caps.plan b{color:var(--hazard)}
#plan{scroll-margin-top:20px}
.steps .gtext{flex:1 1 220px;min-width:0}
.steps .gtext .sname{flex:none}
.steps .sname small{font:500 13px/1.3 var(--body);color:var(--dust);margin-left:8px}
.steps .gtext .sbenefit{margin:3px 0 0;font-size:15px;color:var(--dust)}
.plate .bench{font:600 12.5px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--dust);border:1px solid var(--steel-hi);padding:4px 7px;margin-right:4px}
.plate.sealed .nums{color:var(--dust)}
.hint a{color:var(--toxic);text-decoration:underline;text-underline-offset:3px}
.hint a:hover{color:var(--hazard)}
.planline{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;margin:0 0 10px;font-size:17px}
.planline .lbl{font:600 13px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--dust)}
.planline b{font:700 20px/1.2 var(--body);color:var(--hazard)}
.foldbtn{font:600 12px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--toxic);background:none;border:1px solid var(--steel-hi);padding:5px 9px;cursor:pointer}
.foldbtn:hover{border-color:var(--toxic)}
.stencil .foldbtn{margin-left:4px}
.plate.mine{border-left-color:var(--toxic)}
.plate .you{font:600 12px/1 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--ink);background:var(--toxic);padding:4px 7px;margin-left:10px;vertical-align:middle}
.topnav a.fresh{color:var(--toxic);border-color:var(--toxic)}

/* ---- photo banner under the header ---- */
.hero{margin:0;height:clamp(150px,26vw,250px);position:relative;overflow:hidden;border:1px solid var(--steel);border-top:0;box-shadow:0 14px 30px -20px #000}
.hero img{width:100%;height:100%;object-fit:cover;object-position:center 45%;display:block;filter:saturate(.9) contrast(1.05)}
.hero::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(12,12,11,.45),transparent 40%,transparent 65%,rgba(12,12,11,.7))}

/* ---- fixtures ---- */
.fix{width:100%;border-collapse:separate;border-spacing:0;min-width:max-content}
.fix th,.fix td{text-align:left;padding:9px 14px 9px 0;border-bottom:1px solid var(--steel);font-size:16px;white-space:nowrap}
.fix th{font:600 13px/1.3 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--dust);border-bottom:2px solid var(--steel-hi)}
.fix td.rd{font:600 14.5px/1.4 var(--mono);color:var(--dust)}
.fix tr.now td{background:rgba(232,179,23,.08)}
.fix tr.now td.rd{color:var(--hazard)}
.fix tr.past td{color:var(--dust)}
.fix tr.ph td{font:600 13px/1.3 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--hazard);padding-top:16px;border-bottom-color:var(--steel-hi)}
.fix .tick{display:inline-block;width:1.4em;font:600 14px/1 var(--mono);color:var(--steel-hi)}
.fix td.done .tick{color:var(--toxic)}
.fix td.part .tick{color:var(--hazard)}
.fix td.done{color:var(--dust)}
.fix td.bye,.fix td.note{color:var(--dust)}
.matchups{list-style:none;margin:0;padding:0}
.matchups li{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;padding:9px 0;border-bottom:1px solid var(--steel);font-size:16.5px}
.matchups b{font:600 13px/1.4 var(--label);letter-spacing:.07em;text-transform:uppercase;color:var(--hazard);flex:0 0 130px}
.matchups .game .tick{display:inline-block;width:1.3em;font:600 14px/1 var(--mono);color:var(--steel-hi)}
.matchups .game.done{color:var(--dust)}
.matchups .game.done .tick{color:var(--toxic)}
.matchups .game.part .tick{color:var(--hazard)}
.matchups .bye{color:var(--dust)}
a.foldbtn{display:inline-block}
