@font-face{font-family:"Archivo";src:url(fonts/archivo-var.woff2) format("woff2");font-weight:400 800;font-stretch:100% 125%;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url(fonts/plexmono-500.woff2) format("woff2");font-weight:500;font-display:swap}

:root{
  color-scheme:dark;
  /* surfaces (near-black, cool) */
  --bg:#0B0B0C; --bg-2:#121317; --surface:#17191E; --line:#2A2D34; --line-ui:#6E7380; /* 4.1:1 on bg */
  /* text: contrast vs --bg / --surface */
  --ink:#F2F1EE;      /* 17.4 / 15.6 */
  --ink-2:#B4B8C0;    /* 9.9 / 8.8 */
  --ink-3:#8F949D;    /* 6.5 / 5.8 */
  /* accent */
  --accent:#5AA9FF;   /* 8.0 on bg / 7.2 on surface */
  --on-accent:#0B0B0C; --cta:#F2F1EE; --on-cta:#0B0B0C;
  --focus:#FFD166;
  /* chart (Okabe-Ito, tuned for dark) */
  --median:#56B4E9; --band:#1F4A6E; --band-edge:#56B4E9;
  --instate:#E69F00; --instate-2:#B37A00; --out:#3A5F86;
  --map-1:#1A2433; --map-2:#1E3F63; --map-3:#2A6BA6; --map-4:#4A9BE0; --map-5:#9FD3FF;
  --map-line:#0B0B0C; --map-div:#F2F1EE; --iowa:#E69F00;
  --chip-bg:#0B0B0C; --chip-line:#6E7380;
  /* type */
  --font:"Archivo", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --wide:112; --wider:125;
  --fs-display:2.75rem; --fs-h1:1.875rem; --fs-h2:1.375rem; --fs-h3:1.125rem;
  --fs-body:1rem; --fs-small:1rem; --fs-label:1rem;
  /* space */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px;
  --gutter:16px; --radius:2px; --tap:44px; --maxw:1240px; --side:300px;
  --ad-label:var(--ink-3); --ad-bg:var(--bg-2); --ad-line:var(--line-ui); --me:#E69F00; --me-band:#5A3F00; --other:#56B4E9; --other-band:#1F4A6E; --hair:1px;
}
@media (min-width:768px){:root{--fs-display:4rem;--fs-h1:2.75rem;--fs-h2:1.625rem;--fs-h3:1.25rem;--fs-body:1.0625rem;--gutter:24px}}
@media (min-width:1024px){:root{--gutter:32px}}
*{box-sizing:border-box}
*,*::before,*::after{transition:none!important;animation:none!important}
body{margin:0;font-family:var(--font);font-stretch:100%;font-size:var(--fs-body);line-height:1.55;color:var(--ink);background:var(--bg);font-variant-numeric:tabular-nums}
a{color:var(--accent)} a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}
.mono{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.06em;text-transform:uppercase}
header.site{border-bottom:var(--hair) solid var(--line);background:var(--bg)}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;min-height:60px;gap:var(--s3)}
.logo{display:inline-flex;align-items:center;min-height:var(--tap);font-weight:800;font-variation-settings:"wdth" var(--wider);font-size:var(--fs-h3);color:var(--ink);text-decoration:none;letter-spacing:.01em}
.logo span{color:var(--accent)}
.btn{font:inherit;display:inline-flex;align-items:center;min-height:var(--tap);padding:0 var(--s4);border:var(--hair) solid var(--line-ui);border-radius:var(--radius);background:transparent;color:var(--ink);cursor:pointer}
.btn:hover{border-color:var(--ink)}
.btn.solid{background:var(--cta);color:var(--on-cta);border-color:var(--cta)}
.hero{padding:var(--s6) 0 var(--s5);border-bottom:var(--hair) solid var(--line)}
.eyebrow{color:var(--ink-2);margin:0 0 var(--s2)}
.eyebrow b{color:var(--accent);font-weight:500}
h1,h2,h3{font-variation-settings:"wdth" var(--wide);margin:0}
h1{font-size:var(--fs-h1);font-weight:800;font-variation-settings:"wdth" var(--wider);line-height:1.08;margin-bottom:var(--s5);letter-spacing:-.01em}
h2{font-size:var(--fs-h2);font-weight:600;line-height:1.25;margin-bottom:var(--s3)}
h3{font-size:var(--fs-h3);font-weight:600;line-height:1.3;margin-bottom:var(--s3)}
label.lbl,.lbl{display:block;color:var(--ink-2);margin:0 0 var(--s2)}
select{width:100%;max-width:440px;min-height:48px;padding:0 var(--s3);font:inherit;color:var(--ink);background:var(--surface);border:var(--hair) solid var(--line-ui);border-radius:var(--radius)}
select:hover{border-color:var(--ink)}
.tabs{position:sticky;top:0;z-index:5;background:var(--bg);border-bottom:var(--hair) solid var(--line)}
.tabs .wrap{display:flex;gap:0}
.tab{flex:1;min-height:52px;padding:var(--s3) var(--s2);background:none;border:0;border-right:var(--hair) solid var(--line);font:inherit;color:var(--ink-2);cursor:pointer;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase}
.tab:first-child{border-left:var(--hair) solid var(--line)}
.tab:hover{color:var(--ink)}
.tab[aria-selected=true]{background:var(--cta);color:var(--on-cta)}
@media (min-width:768px){.tab{flex:0 0 auto;padding:var(--s3) var(--s5)}}
main section{padding:var(--s5) 0 var(--s7)}
[hidden]{display:none!important}
.seg{display:inline-flex;border:var(--hair) solid var(--line-ui);border-radius:var(--radius);margin-bottom:var(--s5)}
.seg button{min-height:var(--tap);min-width:72px;padding:0 var(--s4);border:0;border-right:var(--hair) solid var(--line-ui);background:none;font:inherit;color:var(--ink-2);cursor:pointer;font-family:var(--mono)}
.seg button:last-child{border-right:0}
.seg button:hover{color:var(--ink)}
.seg button[aria-checked=true]{background:var(--accent);color:var(--on-accent);font-weight:500}
.grid{display:grid;gap:var(--s4)}
@media (min-width:1024px){.grid.two{grid-template-columns:1fr 1fr;align-items:start}.grid.map{grid-template-columns:3fr 2fr;align-items:start}}
.card{background:var(--bg-2);border:var(--hair) solid var(--line);border-radius:var(--radius);padding:var(--s5) var(--s4)}
@media (min-width:768px){.card{padding:var(--s5)}}
.idx{color:var(--ink-3);margin:0 0 var(--s3)}
.stat-label{color:var(--ink-2);margin:0}
.stat{font-size:var(--fs-display);font-weight:800;font-variation-settings:"wdth" var(--wider);line-height:1;margin:var(--s3) 0;letter-spacing:-.02em}
.stat-ctx{margin:0}
.note{border-left:2px solid var(--accent);background:var(--surface);padding:var(--s3) var(--s4);color:var(--ink-2);margin:var(--s4) 0 0}
.note b{color:var(--ink);font-weight:600}
.range-row{display:grid;grid-template-columns:64px 1fr;gap:var(--s3);align-items:center;padding:var(--s3) 0;border-top:var(--hair) solid var(--line)}
.range-row:first-of-type{border-top:0}
.range-row .yr{color:var(--ink-3);font-family:var(--mono)}
.range-row.on .yr{color:var(--ink)}
.track{position:relative;height:28px}
.track .axis{position:absolute;left:0;right:0;top:13px;height:2px;background:var(--line)}
.track .band{position:absolute;top:6px;height:16px;background:var(--band);border:var(--hair) solid var(--band-edge)}
.range-row.on .band{border-width:2px}
.track .dot{position:absolute;top:4px;width:20px;height:20px;margin-left:-10px;background:var(--median);border:2px solid var(--bg);transform:rotate(45deg)}
.vals{display:flex;justify-content:space-between;color:var(--ink-2);margin-top:2px}
.vals b{color:var(--ink)}
.legend{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);color:var(--ink-2);margin-top:var(--s3)}
.sw{display:inline-block;width:14px;height:14px;vertical-align:-1px;margin-right:6px;border:1px solid var(--line-ui)}
.scope{display:inline-block;color:var(--instate);border:var(--hair) solid var(--instate);padding:2px 10px;margin-bottom:var(--s3)}
.instate .bar{display:flex;height:36px;border:var(--hair) solid var(--line-ui)}
.instate .in{background:repeating-linear-gradient(45deg,var(--instate) 0 7px,var(--instate-2) 7px 10px)}
.instate .out{background:var(--out)}
.instate .labels{display:flex;justify-content:space-between;gap:var(--s3);margin-top:var(--s2)}
/* map */
.map{position:relative;margin-top:var(--s3)}
.map svg{display:block;width:100%;height:auto}
.map .st{stroke:var(--map-line);stroke-width:.8;stroke-linejoin:round}
.map .st:hover{stroke:var(--ink);stroke-width:1.5}
.map .div-lines{fill:none;stroke:var(--map-div);stroke-width:2.2;stroke-linejoin:round}
.map .ia{fill:none;stroke:var(--iowa);stroke-width:5;stroke-linejoin:round}
.map .inset{fill:none;stroke:var(--line-ui);stroke-width:1;stroke-dasharray:4 4}
.chip{position:absolute;transform:translate(-50%,-50%);background:var(--chip-bg);border:var(--hair) solid var(--chip-line);color:var(--ink);font-family:var(--mono);font-size:1rem;line-height:1;padding:4px 5px;white-space:nowrap;font-weight:500}
.chip.top{border-color:var(--iowa);color:var(--ink)}
.chip .nm{display:none;color:var(--ink-2);margin-right:6px}

.maplegend{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;color:var(--ink-2);margin-top:var(--s3)}
.ramp{display:inline-flex}.ramp i{width:22px;height:14px;display:block}
.dlist{list-style:none;margin:var(--s4) 0 0;padding:0}
.dlist li{display:grid;grid-template-columns:18px 1fr auto;gap:var(--s2);align-items:center;padding:var(--s2) 0;border-top:var(--hair) solid var(--line)}
.dlist .pc{font-family:var(--mono)}
.dlist small{display:block;color:var(--ink-3);font-size:1rem}
.bars .row{margin:var(--s3) 0}
.bars .top{display:flex;justify-content:space-between;gap:var(--s3)}
.bars .top b{font-family:var(--mono);font-weight:500}
.bars .fill{height:10px;background:var(--median);margin-top:6px}
.ph{border:var(--hair) dashed var(--line-ui);padding:var(--s5);color:var(--ink-2)}
.tag{display:inline-block;color:var(--ink);border:var(--hair) solid var(--line-ui);padding:2px 10px;margin-bottom:var(--s3)}
table.sr{width:100%;border-collapse:collapse;margin-top:var(--s3)}
table.sr th,table.sr td{padding:8px 4px;border-bottom:var(--hair) solid var(--line);text-align:right;font-weight:400}
table.sr th{color:var(--ink-2)}
table.sr th:first-child,table.sr td:first-child{text-align:left}
details summary{cursor:pointer;color:var(--accent);min-height:var(--tap);display:flex;align-items:center}
details summary:hover{color:var(--ink)}
footer{border-top:var(--hair) solid var(--line);color:var(--ink-2);padding:var(--s6) 0}
footer p{margin:0 0 var(--s3);max-width:72ch}

/* layout with ad sidebar */
.layout{display:block}
@media (min-width:1024px){.layout{display:grid;grid-template-columns:minmax(0,1fr) var(--side);gap:var(--s6);align-items:start}}
.rail{display:none}
@media (min-width:1024px){.rail{display:block;position:sticky;top:68px;padding-top:var(--s5)}}
/* ad slots: fixed size, static. Label sits outside the box so it never changes the box size */
.slot{margin:var(--s5) auto 0;width:300px;max-width:100%}
/* Label convention: "Advertisement" for real ads only; house cards use "From MajorOutcomes". */
.slot .adlbl{display:block;color:var(--ad-label);font-family:var(--mono);font-size:1rem;letter-spacing:.06em;text-transform:uppercase;margin-bottom:var(--s1)}
.slot .box{width:300px;max-width:100%;height:250px;overflow:hidden;background:var(--ad-bg);border:var(--hair) solid var(--ad-line);display:flex;flex-direction:column;justify-content:space-between;padding:var(--s4)}
.slot.tall .box{height:600px}
.slot .box p{margin:0}
.slot .kick{color:var(--accent);font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em}
.slot .ttl{font-weight:800;font-variation-settings:"wdth" var(--wider);font-size:1.25rem;line-height:1.15}
.slot .box ul{margin:0;padding:0;list-style:none;color:var(--ink-2)}
.slot .box li{margin:0;border-top:var(--hair) solid var(--line)}
.slot .box li a,.cmp .nm a{display:inline-block;min-height:var(--tap);padding:10px 0;color:var(--accent)}
.slot .box li a{display:block;line-height:1.25}
.only-mobile{}
.tab .short{display:inline}.tab .long{display:none}
@media (min-width:768px){.tab .short{display:none}.tab .long{display:inline}}
@media (min-width:1024px){.only-mobile{display:none}}
/* compare bars */
.cmp{list-style:none;margin:var(--s3) 0 0;padding:0}
.cmp li{padding:var(--s3) 0;border-top:var(--hair) solid var(--line)}
.cmp .top{display:flex;justify-content:space-between;gap:var(--s3);align-items:baseline}
.cmp .nm small{display:block;color:var(--ink-3);font-family:var(--mono);font-size:1rem}
.cmp .v{font-family:var(--mono);font-weight:500;white-space:nowrap}
.cmp .trk{position:relative;height:22px;margin-top:6px}
.cmp .ax{position:absolute;left:0;right:0;top:10px;height:2px;background:var(--line)}
.cmp .bd{position:absolute;top:3px;height:16px;background:var(--other-band);border:var(--hair) solid var(--other)}
.cmp .md{position:absolute;top:0;width:4px;height:22px;margin-left:-2px;background:var(--other)}
.cmp .rg{color:var(--ink-2);margin-top:2px}
.cmp li.me .bd{background:var(--me-band);border:2px solid var(--me)}
.cmp li.me .md{background:var(--me)}
.cmp li.me .nm{font-weight:600}
.cmp li.me .nm::before{content:"THIS MAJOR · ";font-family:var(--mono);color:var(--me);font-weight:500}
.yrhint{color:var(--ink-3);margin:calc(-1*var(--s4)) 0 var(--s4)}
.seg button[disabled]{color:var(--ink-3);cursor:not-allowed;text-decoration:line-through}
.slot.foot{margin-bottom:var(--s5)}
