/* ===== Tokens ===== */
:root{
  --paper:#F1EEE6;
  --paper-2:#E8E3D6;
  --ink:#201C18;
  --ink-soft:#54493d;
  --deep:#16323F;
  --deep-2:#1D3F4E;
  --gold:#B4832F;
  --europe:#3E7267;
  --usa:#A6472F;
  --line:#DAD3C2;
  --line-deep:rgba(255,255,255,0.16);
  --radius:3px;
  --maxw:920px;
}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.001ms !important; transition-duration:0.001ms !important;}
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:"Libre Franklin", -apple-system, Segoe UI, sans-serif;
  font-size:17px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.display{
  font-family:"Newsreader", Georgia, serif;
  font-weight:500;
  color:var(--ink);
  line-height:1.15;
  margin:0 0 0.4em 0;
}
h1{font-size:2.6rem; font-weight:520;}
h2{font-size:1.7rem; letter-spacing:-0.01em;}
h3{font-size:1.25rem;}
em{font-style:italic;}
p{margin:0 0 1em 0; max-width:70ch;}
a{color:var(--deep); text-underline-offset:3px;}
a.quiet{color:inherit; text-decoration:none;}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 24px;}
.wrap-wide{max-width:1180px; margin:0 auto; padding:0 24px;}
img{max-width:100%; display:block;}
button{font-family:inherit;}

/* ===== Header ===== */
header.site{
  background:var(--deep);
  color:#EFE9DA;
  border-bottom:1px solid var(--line-deep);
}
.header-inner{
  max-width:1180px; margin:0 auto; padding:20px 24px 0 24px;
  display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:10px 24px;
}
.wordmark{
  font-family:"Newsreader", serif; font-size:1.5rem; font-weight:500;
  color:#FBF8F1; text-decoration:none; white-space:nowrap;
}
.wordmark em{font-style:italic; color:var(--gold);}
nav.primary{
  display:flex; gap:22px; flex-wrap:wrap; padding-bottom:14px;
  font-size:0.95rem;
}
nav.primary a{
  color:#CDD9DB; text-decoration:none; padding-bottom:14px;
  border-bottom:2px solid transparent;
}
nav.primary a:hover{color:#fff;}
nav.primary a.active{color:#fff; border-bottom-color:var(--gold);}
.menu-toggle{display:none;}

@media (max-width:720px){
  .header-inner{padding-top:16px;}
  nav.primary{
    display:none; flex-direction:column; gap:0; width:100%; padding-bottom:6px;
  }
  nav.primary.open{display:flex;}
  nav.primary a{padding:10px 0; border-bottom:1px solid var(--line-deep);}
  nav.primary a.active{border-bottom-color:var(--line-deep); position:relative;}
  nav.primary a.active::before{content:"›  "; color:var(--gold);}
  .menu-toggle{
    display:inline-block; background:none; border:1px solid var(--line-deep);
    color:#EFE9DA; padding:6px 12px; border-radius:var(--radius); cursor:pointer;
    font-size:0.9rem; margin-bottom:14px;
  }
}

/* ===== Page header block ===== */
.page-head{padding:44px 0 30px 0; border-bottom:1px solid var(--line);}
.page-head p.lede{font-size:1.1rem; color:var(--ink-soft); max-width:62ch;}
.eyebrow{
  font-size:0.85rem; color:var(--ink-soft); margin:0 0 6px 0;
}

/* ===== Section rhythm ===== */
section{padding:40px 0;}
section + section{border-top:1px solid var(--line);}
.section-title{display:flex; align-items:baseline; gap:14px; margin-bottom:18px;}
.section-title h2{margin:0;}
.section-title .count{color:var(--ink-soft); font-size:0.95rem;}

/* ===== Region tags ===== */
.tag{
  display:inline-flex; align-items:center; gap:6px;
  font-size:0.82rem; padding:3px 9px; border-radius:20px;
  border:1px solid currentColor; line-height:1.6;
}
.tag.region-europe{color:var(--europe);}
.tag.region-usa{color:var(--usa);}
.tag .dot{width:7px; height:7px; border-radius:50%; background:currentColor; display:inline-block;}

.status-pill{
  font-size:0.8rem; padding:2px 10px; border-radius:20px; white-space:nowrap;
  background:var(--paper-2); color:var(--ink-soft); border:1px solid var(--line);
}
.status-pill.favorite{background:#EFE0C2; color:#7A5A17; border-color:#DDBE7F;}

/* ===== Home hero ===== */
.hero{padding:56px 0 40px 0;}
.hero h1{max-width:16ch;}
.hero .lede{font-size:1.15rem; color:var(--ink-soft); max-width:56ch;}
.split-stats{
  display:flex; gap:0; margin:32px 0 0 0; border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.split-stats a{
  flex:1; text-decoration:none; color:inherit; padding:18px 4px 18px 0;
  display:block;
}
.split-stats a + a{border-left:1px solid var(--line); padding-left:24px;}
.split-stats .num{font-family:"Newsreader",serif; font-size:2.4rem; line-height:1;}
.split-stats .num.usa{color:var(--usa);}
.split-stats .num.europe{color:var(--europe);}
.split-stats .lbl{color:var(--ink-soft); font-size:0.95rem; margin-top:4px;}

.deadline-callout{
  margin-top:28px; padding:18px 20px; background:var(--paper-2);
  border-left:3px solid var(--gold); border-radius:0 var(--radius) var(--radius) 0;
}
.deadline-callout .k{font-size:0.85rem; color:var(--ink-soft); margin-bottom:2px;}
.deadline-callout .v{font-size:1.15rem;}
.deadline-callout .v a{color:var(--ink); font-weight:600;}

/* quick link rows */
.linkrow{
  display:flex; justify-content:space-between; align-items:center; gap:20px;
  padding:22px 0; border-top:1px solid var(--line); text-decoration:none; color:inherit;
}
.linkrow:hover .see{text-decoration:underline;}
.linkrow:last-child{border-bottom:1px solid var(--line);}
.linkrow .name{font-family:"Newsreader",serif; font-size:1.3rem;}
.linkrow .desc{color:var(--ink-soft); font-size:0.95rem; margin-top:3px; max-width:56ch;}
.linkrow .see{white-space:nowrap; font-size:0.95rem; color:var(--deep);}

/* ===== Student life city blocks ===== */
.city-block{
  background:var(--paper-2);
  border-left:3px solid var(--line);
  border-radius:0 var(--radius) var(--radius) 0;
  padding:26px 28px;
  margin-bottom:26px;
}
.city-block.region-europe{border-left-color:var(--europe);}
.city-block.region-usa{border-left-color:var(--usa);}
.city-block:last-child{margin-bottom:0;}
.city-block-head{
  display:flex; justify-content:space-between; align-items:baseline; gap:16px; flex-wrap:wrap;
}
.city-block-head .name{
  font-family:"Newsreader",serif; font-size:1.3rem; display:flex; align-items:center; gap:10px;
}
.city-block-head .name-link{
  font-family:"Newsreader",serif; font-size:1.3rem; color:var(--deep);
  text-decoration:none; white-space:nowrap;
}
.city-block-head .name-link:hover{text-decoration:underline;}

/* ===== University list rows ===== */
.filterbar{display:flex; gap:2px; margin-bottom:8px;}
.filterbar button{
  background:none; border:none; padding:8px 16px; cursor:pointer;
  color:var(--ink-soft); font-size:0.95rem; border-bottom:2px solid transparent;
}
.filterbar button.active{color:var(--ink); border-bottom-color:var(--gold); font-weight:600;}

.uni-row{
  display:grid; grid-template-columns:5px 1fr auto; gap:20px; align-items:start;
  padding:22px 4px; border-top:1px solid var(--line); text-decoration:none; color:inherit;
}
.uni-row:last-child{border-bottom:1px solid var(--line);}
.uni-row .bar{align-self:stretch; border-radius:2px;}
.uni-row .bar.region-europe{background:var(--europe);}
.uni-row .bar.region-usa{background:var(--usa);}
.uni-row h3{margin-bottom:4px;}
.uni-row .place{color:var(--ink-soft); font-size:0.95rem; margin-bottom:8px;}
.uni-row .blurb{color:var(--ink-soft); font-size:0.97rem; max-width:60ch;}
.uni-row .right{text-align:right; white-space:nowrap; display:flex; flex-direction:column; gap:8px; align-items:flex-end;}

/* ===== Tables ===== */
table{width:100%; border-collapse:collapse; font-size:0.96rem;}
table.data th{
  text-align:left; font-weight:600; font-size:0.85rem; color:var(--ink-soft);
  padding:10px 14px 10px 0; border-bottom:1px solid var(--ink-soft);
  white-space:nowrap;
}
table.data td{
  padding:14px 14px 14px 0; border-bottom:1px solid var(--line); vertical-align:top;
}
table.data tbody tr:hover{background:rgba(0,0,0,0.02);}
td.num, th.num{text-align:right; font-variant-numeric:tabular-nums;}
.table-scroll{overflow-x:auto; margin:0 -24px; padding:0 24px;}
.table-scroll table{min-width:640px;}

/* ===== Cost bars ===== */
.costbar-row{padding:16px 0; border-top:1px solid var(--line);}
.costbar-row:last-child{border-bottom:1px solid var(--line);}
.costbar-row .top{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:8px; gap:12px;}
.costbar-row .top a{font-weight:600; color:var(--ink); text-decoration:none;}
.costbar-row .top .total{font-variant-numeric:tabular-nums; color:var(--ink-soft); font-size:0.95rem; white-space:nowrap;}
.costbar{display:flex; height:14px; border-radius:2px; overflow:hidden; background:var(--paper-2);}
.costbar .seg{height:100%;}
.costbar .seg.tuition{background:var(--deep);}
.costbar .seg.living{background:var(--gold);}
.costbar-legend{display:flex; gap:18px; margin-top:6px; font-size:0.82rem; color:var(--ink-soft);}
.costbar-legend .sw{width:9px; height:9px; display:inline-block; border-radius:2px; margin-right:5px; vertical-align:middle;}

/* ===== Rating dots (student life) ===== */
.ratings{display:grid; grid-template-columns:1fr 1fr; gap:10px 24px; margin:14px 0 0 0;}
.rating-item .lbl{display:flex; justify-content:space-between; font-size:0.88rem; color:var(--ink-soft); margin-bottom:4px;}
.dots{display:flex; gap:5px;}
.dots span{width:11px; height:11px; border-radius:50%; background:var(--line);}
.dots span.on{background:var(--deep);}

/* ===== School detail ===== */
.school-hero{padding:36px 0 26px 0;}
.school-hero .region-line{display:flex; align-items:center; gap:12px; margin-bottom:10px; flex-wrap:wrap;}
.statstrip{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:1px;
  background:var(--line); border:1px solid var(--line); margin-top:26px;
}
.statstrip .cell{background:var(--paper); padding:14px 16px;}
.statstrip .cell .k{font-size:0.8rem; color:var(--ink-soft); margin-bottom:4px;}
.statstrip .cell .v{font-family:"Newsreader",serif; font-size:1.3rem;}

.kv{display:grid; grid-template-columns:180px 1fr; gap:8px 18px; font-size:0.97rem; max-width:640px;}
.kv .k{color:var(--ink-soft);}
.kv-row{border-top:1px solid var(--line); padding:11px 0;}
.kv-wrap{margin-top:6px;}

.verify-box{
  background:var(--paper-2); border-left:3px solid var(--usa); padding:16px 18px;
  border-radius:0 var(--radius) var(--radius) 0; margin-top:8px;
}
.verify-box .k{font-size:0.85rem; color:var(--ink-soft); margin-bottom:4px;}

.chiplist{display:flex; flex-wrap:wrap; gap:8px; margin-top:10px;}
.chip{
  font-size:0.88rem; padding:4px 11px; border:1px solid var(--line); border-radius:20px;
  color:var(--ink-soft);
}

.source-list{font-size:0.9rem; color:var(--ink-soft); margin-top:8px;}
.source-list li{margin-bottom:6px;}

.backlink{font-size:0.92rem; display:inline-block; margin-bottom:6px;}

/* ===== Timeline (applications) ===== */
.timeline{border-top:1px solid var(--line);}
.tl-row{display:grid; grid-template-columns:34px 1fr auto; gap:16px; padding:18px 0; border-bottom:1px solid var(--line); align-items:start;}
.tl-row .idx{
  font-family:"Newsreader",serif; color:var(--ink-soft); font-size:1.1rem; padding-top:2px;
}
.tl-row .name{font-weight:600;}
.tl-row .meta{color:var(--ink-soft); font-size:0.92rem; margin-top:3px;}
.tl-row .dates{text-align:right; white-space:nowrap;}
.tl-row .dates .dl{font-weight:600;}
.tl-row .dates .op{color:var(--ink-soft); font-size:0.88rem;}

/* ===== Footer ===== */
footer.site{
  background:var(--deep); color:#B7C4C6; margin-top:60px; padding:34px 0; font-size:0.9rem;
}
footer.site a{color:#DCE3E1;}
footer.site .wrap-wide{display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px;}

@media (max-width:640px){
  h1{font-size:2.1rem;}
  .split-stats{flex-direction:column;}
  .split-stats a + a{border-left:none; border-top:1px solid var(--line); padding-left:0; padding-top:18px;}
  .statstrip{grid-template-columns:1fr 1fr;}
  .kv{grid-template-columns:1fr;}
  .uni-row{grid-template-columns:4px 1fr;}
  .uni-row .right{grid-column:2; align-items:flex-start; flex-direction:row; flex-wrap:wrap;}
  .tl-row{grid-template-columns:24px 1fr; }
  .tl-row .dates{grid-column:2; text-align:left; margin-top:6px;}
}
