/* Shared slate/Cobalt presentation for the ratings board and Forecast Lab. */
:root {
  color-scheme:dark;
  --bg:#0e1116; --bg2:#111720; --panel:#171c24; --panel2:#0e131b;
  --row-alt:#141a22; --hover:#19263a; --border:#273040; --border2:#53647c;
  --ink:#e6edf3; --mut:#b2bfcc; --dim:#93a1b0;
  --teal:#60a5fa; --teal2:#9dc1ff; --violet:#e6edf3; --violet2:#b2bfcc;
  --pos:#45bd69; --neg:#ff7168; --accent:#3b82f6; --orange:#3b82f6;
  --highlight:#b8d3ff; --hero-bg:#0e1116; --table-head:#0e131b;
  --table-head-hover:#1a2534; --action-bg:#3b82f6; --action-ink:#08111f;
  --focus:#60a5fa; --notice-ink:#ffd0a8; --notice-bg:#2b2118; --notice-border:#986238;
  --disp:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  --body:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
}
body { -webkit-font-smoothing:antialiased; }
.lab-hero { background:var(--hero-bg); }
.hero { background:linear-gradient(115deg,#0e1116,#15233a); border-bottom-width:1px; }
header h1 { font-weight:800; letter-spacing:-.035em; }
.panel.active { border-radius:10px; }
.panel.active,.metric { box-shadow:0 10px 30px rgba(0,0,0,.22); }
thead th { background:var(--table-head); color:#fff; letter-spacing:.045em; }
thead th:hover { background:var(--table-head-hover); color:var(--highlight); }
thead th.up,thead th.down { color:var(--highlight); }
.lab-wrap tbody th { background:var(--panel); color:var(--ink); }
td[data-v],.brk-v { font-variant-numeric:tabular-nums; }
.current-pgo-table,.pgo-snapshot-table { font-variant-numeric:tabular-nums; }
.current-pgo-table thead th:first-child,.pgo-snapshot-table thead th:first-child { text-align:center; }
.current-pgo-table thead th:nth-child(2),.pgo-snapshot-table thead th:nth-child(2) { text-align:left; }
.current-pgo-table th,.current-pgo-table td,
.pgo-snapshot-table th,.pgo-snapshot-table td { padding:9px 10px; }
.current-pgo-table tbody th,.pgo-snapshot-table tbody th {
  background:var(--panel); color:var(--ink); font-size:inherit; letter-spacing:normal;
  text-transform:none; user-select:text; border-bottom:1px solid var(--border);
}
.current-pgo-table .pgo-rank,.pgo-snapshot-table .pgo-rank {
  width:48px; color:var(--dim); font-weight:700; text-align:center;
}
.current-pgo-table .pgo-team a,.pgo-snapshot-table .pgo-team a {
  display:flex; align-items:center; color:var(--ink); text-decoration:none;
}
.current-pgo-table .pgo-team a:hover,.pgo-snapshot-table .pgo-team a:hover {
  color:var(--highlight); text-decoration:underline; text-underline-offset:3px;
}
.pgo-team-marker {
  width:5px; height:26px; margin-right:7px; flex:0 0 auto; border-radius:3px;
  background:linear-gradient(to bottom,var(--team-primary) 0 68%,var(--team-secondary) 68% 100%);
}
.pgo-team-chip {
  min-width:34px; margin-right:8px; padding:2px 5px; border:1px solid var(--border2);
  border-radius:4px; color:var(--ink); background:var(--panel2); font-size:11px;
  font-weight:800; line-height:1.4; text-align:center;
}
.pgo-team-name { font-weight:700; }
.pgo-availability { margin-top:28px; padding-top:24px; border-top:1px solid var(--border); }
.pgo-availability table { min-width:900px; font-variant-numeric:tabular-nums; }
.pgo-availability th,.pgo-availability td { white-space:normal; padding:10px 8px; }
.pgo-availability thead th { line-height:1.5; }
.pgo-availability tbody th {
  min-width:220px; background:transparent; color:var(--ink); text-align:left;
  font-size:inherit; letter-spacing:normal; text-transform:none; user-select:text;
  border-bottom:1px solid var(--border); border-radius:0;
}
.pgo-availability .pgo-team-marker { display:inline-block; vertical-align:middle; }
.pgo-availability .pgo-team-chip { display:inline-block; vertical-align:middle; }
.pgo-availability details { margin:12px 0; }
.pgo-availability summary { cursor:pointer; font-weight:700; }
.pgo-availability li { margin:14px 0; overflow-wrap:anywhere; }
.pgo-rating-value { color:var(--ink); font-size:17px; font-weight:900; text-align:right; }
.pgo-rating-scale { min-width:170px; }
.pgo-rating-bar,.pgo-rating-track { display:block; width:100%; }
.pgo-rating-track { position:relative; height:8px; border-radius:999px; background:#293343; }
.pgo-rating-mid { position:absolute; left:50%; top:-3px; width:1px; height:14px; background:var(--border2); }
.pgo-rating-fill { position:absolute; top:1px; height:6px; border-radius:999px; }
.pgo-rating-fill.pos { background:var(--pos); }
.pgo-rating-fill.neg { background:var(--neg); }
.pgo-rating-fill.zero { background:var(--dim); }
.pgo-scale-label { display:flex; justify-content:space-between; gap:8px; min-width:150px; }
.pgo-column-toggle { display:none; align-items:center; gap:8px; margin:10px 0; color:var(--mut); }
.rating-explanation > summary { font-variant-numeric:tabular-nums; font-weight:800; }
.season-nav { display:flex; align-items:flex-start; flex-wrap:wrap; gap:8px; margin:16px 0; }
.season-nav a,.season-nav-more > summary { display:inline-flex; align-items:center; min-height:44px; padding:0 14px; border:1px solid var(--border2); border-radius:6px; color:var(--ink); text-decoration:none; font-weight:700; background:var(--panel2); }
.season-nav a:hover,.season-nav-more > summary:hover { border-color:var(--accent); color:var(--highlight); }
.season-nav-more > summary { cursor:pointer; gap:8px; color:var(--mut); }
.season-nav-more > summary::after { content:'+'; }
.season-nav-more[open] > summary::after { content:'\2212'; }
.season-nav-more[open] { flex-basis:100%; }
.season-nav-more > div { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.season-nav-more a { border-color:var(--border); font-weight:500; }
.season-freshness,.game-day-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr)); gap:12px; margin:16px 0; }
.season-freshness > div,.game-day-card { min-width:0; padding:18px; border:1px solid var(--border); border-radius:8px; background:var(--panel2); }
.season-freshness dt,.game-day-card dt { color:var(--mut); font-size:12px; font-weight:700; }
.season-freshness dd,.game-day-card dd { margin:5px 0 12px; font-variant-numeric:tabular-nums; }
.season-freshness dd { margin-bottom:0; font-size:13px; }
.season-freshness.season-checks { gap:12px 20px; padding:12px 0; border-block:1px solid var(--border); }
.season-freshness.season-checks > div { padding:0; border:0; border-radius:0; background:transparent; }
.freshness-status { display:block; color:var(--highlight); margin-top:5px; }
.freshness-status[data-overdue="true"] { color:var(--notice-ink); font-weight:700; }
.season-caption { color:var(--mut); font-size:12px; }
.game-day-card h4 { margin:0 0 14px; font-size:20px; color:var(--ink); }
.game-day-times { display:flex; gap:24px; flex-wrap:wrap; }
.game-day-card .game-day-pick { font-size:22px; font-weight:800; margin-bottom:4px; }
.game-day-card .game-day-chance { color:var(--highlight); font-size:18px; margin-top:0; }
.game-day-card details { padding-top:12px; border-top:1px solid var(--border); }
.game-day-card summary { min-height:44px; cursor:pointer; font-weight:700; }
.game-day-absences { padding-left:20px; }
.game-day-absences li { margin:8px 0; }
.game-day-link { display:inline-flex; align-items:center; min-height:44px; margin-top:8px; }
@media(min-width:700px) {
  .game-day-grid:has(> :only-child) .game-day-card { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
}
@media(max-width:480px) {
  .season-freshness { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .season-freshness > div { padding:12px; }
}
#panel-comparison .comparison-table td { font-variant-numeric:tabular-nums; }
.tab { min-height:44px; border-radius:7px; }
.tab.active,
#panel-fantasy .fantasy-view-buttons .fantasy-view-button[aria-pressed="true"],
#panel-fantasy .fantasy-league-actions button[type="submit"] {
  background:var(--action-bg); color:var(--action-ink); border-color:var(--action-bg);
}
.method,.dr-writeup p,.dr-writeup li,.dr-writeup .stub { color:var(--mut); }
.wrap a,.drawer a { color:var(--accent); }
.drawer-close { width:40px; height:40px; }
.dr-head { padding-right:42px; }
.status,#panel-comparison .model-status,#panel-fantasy .fantasy-status {
  color:var(--notice-ink); background:var(--notice-bg); border-color:var(--notice-border);
}
.lab-hero .status { color:var(--highlight); background:transparent; border-color:var(--highlight); }
input::placeholder { color:var(--dim); opacity:1; }
input,select,textarea { accent-color:var(--accent); }
:focus-visible { outline:3px solid var(--focus); outline-offset:3px; }
#panel-fantasy a.fantasy-source-badge:focus-visible,
#panel-fantasy .fantasy-details summary:focus-visible { outline-color:var(--focus); }
.lab-hero a:focus-visible { outline-color:var(--highlight); }
@media(max-width:480px) {
  .lab-wrap { padding-left:10px; padding-right:10px; }
  .lab-hero { padding:20px 16px; }
}
@media(max-width:680px) {
  .pgo-column-toggle { display:flex; }
  .current-pgo-table,.pgo-snapshot-table { width:100%; font-size:12px; }
  .current-pgo-table th,.current-pgo-table td,
  .pgo-snapshot-table th,.pgo-snapshot-table td { padding:8px 6px; }
  .current-pgo-table .pgo-detail,.pgo-snapshot-table .pgo-detail { display:none; }
  .pgo-current-board:has(#current-pgo-columns:checked) .current-pgo-table .pgo-detail,
  .pgo-snapshot-board:has(#snapshot-pgo-columns:checked) .pgo-snapshot-table .pgo-detail {
    display:table-cell;
  }
  .pgo-current-board:has(#current-pgo-columns:checked) .current-pgo-table,
  .pgo-snapshot-board:has(#snapshot-pgo-columns:checked) .pgo-snapshot-table { width:950px; }
  .pgo-team-chip { min-width:30px; margin-right:6px; padding:2px 4px; }
  .pgo-team-name { line-height:1.2; }
}
.pgo-model-updates .model-test-table td:first-child{min-width:11rem;max-width:20rem;white-space:normal;text-align:left}

/* The same saved game table becomes labeled cards in narrow embeds. */
#pgo-season .season-picks-table :is(th,td) {
  text-align:left; vertical-align:top; line-height:1.55;
}
#pgo-season .season-picks-table .season-cell-label { display:none; }
#pgo-season .season-picks-table .season-cell-value { min-width:0; }
#pgo-season .season-picks-table [data-grade="W"] .season-cell-value > strong { color:var(--pos); }
#pgo-season .season-picks-table [data-grade="L"] .season-cell-value > strong { color:var(--neg); }
#pgo-season .season-picks-table summary { padding:6px 0; }
#pgo-season .season-picks-table .forecast-reason { width:100%; }
#pgo-season .season-late-accounting { display:block; margin-top:6px; color:var(--notice-ink); }
#pgo-season .season-explanation-steps { margin:0; padding-left:20px; }
#pgo-season .season-explanation-steps li { margin:0 0 10px; padding-left:4px; }
#pgo-season .postgame-card { padding:12px 0; }
#pgo-season .postgame-card h4 { margin:0 0 10px; font-size:15px; }
#pgo-season .postgame-card dl { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:0; }
#pgo-season .postgame-card dl > div { padding:10px; background:var(--panel); border:1px solid var(--border); border-radius:6px; }
#pgo-season .postgame-card dt { color:var(--mut); font-size:12px; }
#pgo-season .postgame-card dd { margin:4px 0 0; font-size:14px; font-weight:700; overflow-wrap:anywhere; }
#pgo-season .postgame-card p { margin:8px 0 0; color:var(--mut); font-size:12px; }
#pgo-season .rank-comparison-table { width:100%; }
#pgo-season .rank-comparison-table :is(th,td) { white-space:normal; min-width:0; text-align:left; }
.archive-fragment { display:none; }
.archive-fragment:target { display:block; padding:12px 0; }
@container(max-width:1050px) {
  #pgo-season .season-picks-table,
  #pgo-season .season-picks-table tbody { display:block; width:100%; }
  #pgo-season .season-picks-table thead {
    position:absolute; width:1px; height:1px; padding:0; margin:-1px;
    overflow:hidden; clip-path:inset(50%); white-space:nowrap;
  }
  #pgo-season .season-picks-table tr[data-season-game-id] {
    display:grid; grid-template-columns:repeat(3,minmax(0,1fr));
    border:1px solid var(--border); border-radius:8px 8px 0 0;
    background:var(--panel2);
  }
  #pgo-season .season-picks-table tr[data-season-game-id] > :is(th,td) {
    display:block; min-width:0; max-width:none; width:auto;
    padding:12px; border:0; white-space:normal; overflow-wrap:anywhere;
    background:transparent;
  }
  #pgo-season .season-picks-table tr[data-season-game-id] > th {
    grid-column:1/-1; font-size:18px; font-weight:800;
    padding:12px; border-bottom:1px solid var(--border);
  }
  #pgo-season .season-picks-table .season-cell-label {
    display:block; margin-bottom:6px; color:var(--mut);
    font-size:11px; line-height:1.4; font-weight:700; letter-spacing:.025em;
  }
  #pgo-season .season-picks-table .season-cell-value { font-size:14px; }
  #pgo-season .season-picks-table .season-cell-value small { font-size:12px; }
  #pgo-season .season-picks-table .forecast-reason-row {
    display:block; margin-bottom:16px; border:1px solid var(--border);
    border-top:0; border-radius:0 0 8px 8px; background:var(--panel2);
  }
  #pgo-season .season-picks-table .forecast-reason-row > td {
    display:block; width:auto; padding:0 12px 8px; border:0;
  }
  #pgo-season .season-picks-table summary { min-height:44px; box-sizing:border-box; padding:10px 0; }
}
@container(max-width:520px) {
  #pgo-season .postgame-card dl { grid-template-columns:repeat(2,minmax(0,1fr)); }
  #pgo-season .rank-comparison-table :is(th,td) { padding:8px 5px; font-size:12px; }
  #pgo-season .season-picks-table tr[data-season-game-id] { grid-template-columns:repeat(2,minmax(0,1fr)); }
  #pgo-season .season-picks-table tr[data-season-game-id] > :is(td:nth-of-type(3),td:nth-of-type(6)) { grid-column:1/-1; }
}
