/* Shared March Lab palette; every route and state inherits the selected theme. */
:root{
  color-scheme:light;
  --bg:#eae6dc;--surface:#f3f0e7;--surface2:#e8e3d8;--line:#d5cfc2;
  --text:#20252b;--muted:#5b6268;--blue:#2d526d;--accent:#76501f;
  --green:#2a633f;--danger:#9f3127;--control-line:#7a817f;
  --button-text:#f5f1e8;--blue-hover:#1e3f56;
  --highlight:#dde2df;--highlight-line:#a0adb3;--track:#d5cfc2;
  --tag-bg:#ece2ce;--tag-line:#9a8663;--tag-text:#6c501f;
  --loading-track:#bec8c8;--forecast-track:#ac9a7d;--shadow:#00000018;
  --mono:Consolas,"Courier New",monospace;
}
:root[data-theme=dark]{
  color-scheme:dark;
  --bg:#080b12;--surface:#101621;--surface2:#151e2c;--line:#2b3545;
  --text:#f3f6fc;--muted:#a9b5c8;--blue:#84b8ff;--accent:#f3c66d;
  --green:#a6d6b2;--danger:#ffaaa2;--control-line:#70839b;
  --button-text:#07101e;--blue-hover:#a6cbff;
  --highlight:#15263d;--highlight-line:#70839b;--track:#2b3545;
  --tag-bg:#2a2317;--tag-line:#b19461;--tag-text:#f3c66d;
  --loading-track:#70839b;--forecast-track:#b19461;--shadow:#00000030;
}
.header-tools{display:flex;align-items:center;gap:20px}
.theme-control{font-size:10px;letter-spacing:.04em}
.theme-control select{min-width:0;width:94px;min-height:44px;margin-top:3px;padding:8px 10px;font-size:12px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:default;opacity:.6}button,.button{border:1px solid var(--control-line);border-radius:9px;background:var(--surface2);color:var(--text);padding:10px 16px;text-decoration:none;display:inline-block}button:hover,.button:hover{border-color:var(--blue);text-decoration:none}button.primary,.button.primary{background:var(--blue);color:var(--button-text);border-color:var(--blue);font-weight:700}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.skip{position:absolute;left:20px;top:-80px;background:var(--text);color:var(--bg);padding:12px;z-index:10}.skip:focus{top:12px}.topbar{height:92px;padding:20px 32px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.brand{display:flex;align-items:center;gap:13px;color:var(--text);font-size:19px;font-weight:800;letter-spacing:.1em}.brand small{display:block;font:10px var(--mono);letter-spacing:.12em;color:var(--muted);margin-top:2px}.mark{border:2px solid var(--blue);border-radius:5px;width:42px;height:42px;display:grid;place-items:center;color:var(--blue);font-size:25px;letter-spacing:0}.freshness{font:10px var(--mono);color:var(--muted)}.shell{display:grid;grid-template-columns:220px minmax(0,1fr);max-width:1600px;margin:auto}nav{padding:28px 18px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:8px}nav a{padding:13px 14px;border-radius:6px;color:var(--muted);font-size:13px;font-weight:600}nav a.active{background:var(--surface2);color:var(--text);border-left:3px solid var(--blue)}.navfoot{font:10px/1.8 var(--mono);color:var(--muted);padding:28px 14px;margin-top:32px}main{padding:36px;min-width:0;min-height:80vh}.eyebrow{font:11px var(--mono);color:var(--blue);letter-spacing:.12em;text-transform:uppercase;margin:0 0 12px}h1{font-size:clamp(30px,4vw,50px);letter-spacing:-.035em;line-height:1.1;margin:0 0 18px}h2{font-size:22px;line-height:1.3;margin:0 0 16px}h3{font-size:16px;margin:0 0 12px}p{margin:0 0 18px}.muted,.note{color:var(--muted)}.note{font-size:12px;max-width:85ch}.tag{font:10px var(--mono);padding:5px 8px;border:1px solid var(--line);border-radius:4px;color:var(--accent);display:inline-block}.hero{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:30px;margin:26px 0;display:grid;grid-template-columns:minmax(0,1fr) 200px;gap:32px}.hero p{max-width:65ch}.hero-number{font:80px/1 var(--mono);color:var(--blue)}.hero-side{border-left:1px solid var(--line);padding-left:30px;display:flex;flex-direction:column;justify-content:center}.hero-side small{color:var(--muted);font:11px var(--mono);margin-top:12px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0 30px}.stat,.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:20px}.stat strong{font:28px var(--mono);display:block}.stat span{font-size:12px;color:var(--muted)}.panels{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;margin:24px 0}.toolbar{display:flex;align-items:end;gap:16px;flex-wrap:wrap;margin:24px 0}.toolbar .grow{flex:1}label{display:block;font-size:12px;color:var(--muted);font-weight:600}input,select,textarea{display:block;background:var(--surface);border:1px solid var(--control-line);color:var(--text);border-radius:6px;padding:10px 12px;margin-top:6px;min-height:43px}select{min-width:160px}input[type=number]{width:100%}input[type=file]{max-width:100%;font-size:12px}textarea{width:100%;min-height:180px;font:12px var(--mono)}.segmented{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0}.segmented button{padding:8px 12px;font-size:12px}.segmented button[aria-pressed=true]{border-color:var(--blue);color:var(--blue);background:var(--highlight)}.bracket-scroll{overflow:auto;border:1px solid var(--line);border-radius:10px;background:var(--surface);padding:18px;margin:20px 0;overscroll-behavior-x:contain}.bracket{display:flex;gap:28px;min-width:916px}.round-column{position:relative;flex:1;min-width:205px}.round-label{font:10px var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:15px}.round-games{position:relative}.game{position:absolute;width:100%;padding:0;border:1px solid var(--control-line);border-radius:5px;background:var(--bg);text-align:left;height:63px}.game::after{content:"";position:absolute;width:28px;height:1px;background:var(--line);right:-29px;top:50%}.round-column:last-child .game::after{display:none}.team-line{display:flex;align-items:center;gap:7px;height:30px;padding:4px 9px;font-size:12px}.team-line+.team-line{border-top:1px solid var(--line)}.seed{color:var(--muted);font:10px var(--mono);width:15px}.team-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.won{font-weight:700;color:var(--text)}.won .team-name::after{content:" ✓";color:var(--green)}.lost{color:var(--muted)}.game-prob{font:10px var(--mono);color:var(--blue)}.bracket-key{font:11px var(--mono);color:var(--muted)}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px}th,td{padding:12px 10px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}th{color:var(--muted);font:10px var(--mono);text-transform:uppercase}td.numeric,th.numeric{text-align:right;font-family:var(--mono)}tr:last-child td{border-bottom:0}.model-name{font-weight:700}.best{color:var(--green)}.chart{width:100%;max-height:280px}.chart text{fill:var(--muted);font:10px var(--mono)}.chart .grid{stroke:var(--line)}.chart .reference{stroke:var(--muted);stroke-dasharray:4 4}.chart .curve{stroke:var(--blue);fill:none;stroke-width:2}.chart circle{fill:var(--blue)}.two-inputs{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:24px 0}.probability{font:48px var(--mono);letter-spacing:-.06em;line-height:1.2;color:var(--blue);margin:20px 0 10px}.prob-bar{height:10px;background:var(--line);border-radius:4px;overflow:hidden;margin:15px 0}.prob-bar span{display:block;height:100%;background:var(--blue)}.error{padding:16px;border:1px solid var(--danger);border-radius:7px;color:var(--danger);background:var(--surface)}.loading{padding:40px;color:var(--muted);font-family:var(--mono)}details{border-top:1px solid var(--line);padding:16px 0}summary{cursor:pointer;font-weight:600}details p,details pre{margin-top:16px}pre{white-space:pre-wrap;font:11px/1.5 var(--mono);color:var(--muted);overflow-wrap:anywhere}.schedule{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.schedule div{border-left:2px solid var(--blue);padding:8px 16px}.schedule strong{display:block;font-size:14px}.schedule span{color:var(--muted);font-size:12px}.list{padding-left:20px;color:var(--muted)}.list li{margin:9px 0}.year-grid{display:flex;flex-wrap:wrap;gap:7px;margin:18px 0}.year-grid button{padding:8px 11px;font:12px var(--mono)}dialog{color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:12px;width:650px;max-width:calc(100% - 24px);max-height:90vh;padding:30px;overflow:auto}dialog::backdrop{background:rgba(0,0,0,.75)}.close{position:absolute;right:12px;top:10px;font-size:25px;line-height:1;border:0;padding:5px 10px;background:none}.comparison{display:grid;grid-template-columns:1fr 1fr;gap:20px}.comparison .right{text-align:right}.detail-title{font-size:24px;margin-right:25px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}footer{font:10px var(--mono);color:var(--muted);border-top:1px solid var(--line);padding:20px 32px;max-width:1600px;margin:auto}.statusline{min-height:25px;color:var(--muted);font-size:12px}.scroll-hint{display:none}
.game::after{display:none}.connectors{position:absolute;left:100%;top:0;pointer-events:none;overflow:visible;fill:none;stroke:var(--control-line);stroke-width:1}
body{font-size:16px;line-height:1.5}table{font-size:14px;line-height:1.45}.team-line{font-size:14px}button,.button,nav a{min-height:44px}.mobile-round{display:none}
@media(max-width:1100px){main{padding:26px}.shell{grid-template-columns:185px minmax(0,1fr)}.stats{grid-template-columns:repeat(2,1fr)}.panels{grid-template-columns:minmax(0,1fr)}.freshness{display:none}}
@media(max-width:720px){.topbar{height:76px;padding:16px 18px}.brand{font-size:17px}.shell{display:block}nav{border-right:0;border-bottom:1px solid var(--line);padding:8px 12px;display:flex;flex-direction:row;overflow:auto;gap:3px}nav a{font-size:11px;padding:10px;white-space:nowrap}nav a.active{border-left:0;border-bottom:2px solid var(--blue)}.navfoot{display:none}main{padding:24px 16px}h1{font-size:34px}.hero{grid-template-columns:1fr;padding:22px;gap:20px}.hero-side{border-left:0;border-top:1px solid var(--line);padding:18px 0 0;flex-direction:row;align-items:center;gap:16px}.hero-number{font-size:48px}.hero-side small{margin:0}.stats{gap:8px}.stat{padding:15px}.stat strong{font-size:24px}.schedule{grid-template-columns:1fr}.two-inputs{gap:15px}.panel{padding:17px}.scroll-hint{display:block;font-size:11px;color:var(--muted)}.toolbar{gap:12px}.toolbar label{flex:1}.toolbar select{width:100%;min-width:130px}.comparison{gap:12px}dialog{padding:24px 18px}.probability{font-size:36px}footer{padding:18px;font-size:9px}}
@media(prefers-reduced-motion:no-preference){main{animation:arrive .18s ease-out}@keyframes arrive{from{transform:translateY(4px)}to{transform:none}}}
@media(max-width:720px){.mobile-round{display:block;margin-top:18px}.mobile-round select{width:100%}.bracket{min-width:0;display:block}.round-column{display:none;min-width:0;width:100%}.round-column.mobile-selected{display:block}.round-games{height:auto!important;display:grid;gap:12px}.game{position:static;height:81px}.team-line{height:39px;font-size:14px}.game-prob,.seed{font-size:12px}.connectors{display:none}.bracket-scroll{padding:15px}.scroll-hint{display:none}}
/* Evidence and comparison workspaces use the same theme as the app shell. */
.season-insights{
  color:var(--text);background:var(--surface);
  border-color:var(--line);border-radius:18px;padding:clamp(20px,2.5vw,36px);
  margin:24px 0;box-shadow:0 12px 36px var(--shadow);
}
.insight-toolbar,.insight-heading{display:flex;justify-content:space-between;align-items:center;gap:24px}
.insight-toolbar h2{font-size:28px;letter-spacing:-.035em;margin-bottom:10px}
.insight-toolbar p{margin:0;max-width:64ch;font-size:14px;line-height:1.6}
.insight-toolbar label{flex-shrink:0;font-size:12px}
.season-insights select{background:var(--bg);border-color:var(--control-line);border-radius:9px;min-height:48px;font-size:14px}
.season-insights .statusline{margin:16px 0 0;font-size:12px;display:flex;align-items:center;gap:8px}
.season-insights .statusline::before{content:"";width:6px;height:6px;flex-shrink:0;border-radius:50%;background:var(--blue)}
.insight-heading{margin:28px 0 24px}
.insight-heading h3{font-size:25px;letter-spacing:-.025em;margin:0}
.insight-heading .eyebrow{margin-bottom:8px;font-size:10px;letter-spacing:.1em}
.season-insights .button,.season-insights button{background:var(--blue);color:var(--button-text);border-color:var(--blue);font-size:14px;font-weight:600;padding:12px 18px;border-radius:9px;min-height:48px}
.season-insights .button:hover,.season-insights button:hover{background:var(--blue-hover);border-color:var(--blue-hover)}
.season-insights :focus-visible{outline:3px solid var(--blue);outline-offset:4px}
.coverage-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.coverage-card{padding:20px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
.coverage-card h3{font-size:12px;color:var(--muted);font-weight:600;margin-bottom:14px}
.coverage-card strong{display:block;color:var(--text);font:24px/1.25 var(--mono);letter-spacing:-.04em;margin-bottom:12px;font-variant-numeric:tabular-nums}
.coverage-card p{margin:0;font-size:12px;line-height:1.6}
.snapshot-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:24px 0;margin:0}
.snapshot-grid dt{font-size:12px;color:var(--muted);margin-bottom:8px}
.snapshot-grid dd{font-size:14px;margin:0;font-variant-numeric:tabular-nums}
.season-insights caption{text-align:left;font-size:13px;color:var(--muted);padding:16px 0}
.season-insights th[scope=row]{font:inherit;text-transform:none;color:var(--text)}
.season-insights th,.season-insights td{padding:14px 10px}
.season-insights th{font-size:10px;letter-spacing:.02em}
.season-insights tbody tr:nth-child(3){background:var(--surface2)}
.season-insights .table-scroll{border-radius:8px}
.insight-footnote{margin:20px 0 24px;padding:16px 18px;background:var(--surface2);border-left:3px solid var(--blue);border-radius:0 8px 8px 0;line-height:1.65}
.insight-footnote strong{display:block;color:var(--text);font-size:13px;margin-bottom:6px}
.season-insights details{padding:20px 0 0}
.season-insights details summary{font-size:14px}
.cancelled-season,.insight-placeholder,.insight-empty{padding:24px;margin:24px 0;background:var(--bg);border:1px solid var(--line);border-radius:12px}
.cancelled-season h3{font-size:22px;letter-spacing:-.02em;margin-top:18px}
.cancelled-season p,.insight-placeholder p,.insight-empty p{margin-bottom:0;line-height:1.65;max-width:65ch}
.season-insights .tag{color:var(--tag-text);border-color:var(--tag-line);background:var(--tag-bg);letter-spacing:.06em}
.insight-placeholder .loading-track{display:block;width:110px;height:5px;border-radius:10px;background:var(--loading-track);margin-bottom:18px}
.insight-empty h3{font-size:22px;margin-bottom:12px;letter-spacing:-.02em}
.insight-empty button{margin-top:20px}
.insight-scroll-hint{display:none}
@media(max-width:1000px){
  .coverage-grid{grid-template-columns:1fr}
  .coverage-card{display:grid;grid-template-columns:minmax(150px,1fr) 2fr;column-gap:20px}
  .coverage-card strong{grid-column:1;grid-row:2;margin-bottom:0}
  .coverage-card h3{margin-bottom:8px}
  .coverage-card p{grid-column:2;grid-row:1 / 3;align-self:center}
}
@media(max-width:720px){
  .season-insights{padding:20px;border-radius:14px}
  .insight-toolbar,.insight-heading{align-items:start;flex-direction:column;gap:18px}
  .insight-toolbar h2{font-size:25px}
  .insight-toolbar label,.insight-toolbar select{width:100%}
  .insight-heading{margin:26px 0 20px}
  .snapshot-grid{grid-template-columns:1fr;gap:18px;padding:22px 0}
  .coverage-card{display:block;padding:18px}
  .coverage-card strong{margin:12px 0;font-size:23px}
  .coverage-card h3{margin:0}
  .insight-heading .button{width:100%;text-align:center}
  .insight-scroll-hint{display:block;margin:8px 0;font-size:11px}
  .season-insights .table-scroll{border:1px solid var(--line)}
  .season-insights table{table-layout:fixed;min-width:300px;font-size:12px}
  .season-insights th,.season-insights td{padding:12px 5px}
  .season-insights th:first-child{width:37%;white-space:normal}
  .season-insights th.numeric{white-space:normal;font-size:9px}
  .season-insights td.numeric{font-size:11px}
  .season-insights caption{padding:12px 6px;line-height:1.5}
  .insight-footnote{padding:14px;line-height:1.6}
  .cancelled-season,.insight-placeholder,.insight-empty{padding:20px}
}
@media(prefers-reduced-motion:no-preference){
  .season-insights .button,.season-insights button,.season-insights select{transition:border-color .16s ease,box-shadow .16s ease}
}
@media(max-width:720px){.topbar{height:auto;min-height:76px;gap:12px;padding:12px}.header-tools{gap:0}.brand{gap:10px}.brand small{font-size:9px}.theme-control{flex-shrink:0}}

.hero .button{margin:4px 4px 0 0}
#detail-prediction{margin-top:10px}
