/* Self-hosted Libre Baskerville (SIL OFL 1.1), variable weight 400-700. */
@font-face { font-family: "Libre Baskerville"; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url(fonts/libre-baskerville-latin-ext.woff2) format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Libre Baskerville"; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url(fonts/libre-baskerville-latin.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root {
  --navy: #102d42;
  --ink: #18313f;
  --muted: #5b6b74;
  --paper: #fbfaf6;
  --ivory: #f4f0e8;
  --card: #ffffff;
  --line: #d7d4cb;
  /* Coral and gold are darkened in light mode so small status text and the
     "Saved" button reach WCAG AA (4.5:1) on white and ivory. */
  --coral: #b4412d;
  --teal: #39736b;
  --gold: #8a6226;
  --serif: "Libre Baskerville", Georgia, serif;
  --sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
@media (prefers-color-scheme: dark) {
  :root {
    --navy: #0b2233;
    --ink: #e8e4da;
    --muted: #a5b0b6;
    --paper: #0f1c25;
    --ivory: #142632;
    --card: #162b38;
    --line: #2b4352;
    --coral: #ec7d68;
    --teal: #6fb3a8;
    --gold: #d6ab68;
  }
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 16px/1.6 var(--sans); }
a { color: inherit; }
/* Long emails, URLs and compound names in programme facts must wrap rather than widen the page on phones. */
.facts dd, .glance dd, .panel p, .profile-title h1, .inst, .meta, .card h3 { overflow-wrap: anywhere; }
.profile-title > div { min-width: 0; }
h1, h2, h3 { font-family: var(--serif); line-height: 1.25; margin: 0 0 .5em; }
.wrap { max-width: 1160px; margin: 0 auto; padding: 0 16px; }
.skip { position: absolute; left: -999px; }
.skip:focus { left: 16px; top: 8px; background: var(--card); padding: 8px; z-index: 10; }
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
:focus-visible { outline: 3px solid var(--teal); outline-offset: 2px; border-radius: 4px; }
.site-header :focus-visible, .hero :focus-visible { outline-color: #e9b98a; }
html { scroll-padding-top: 16px; }

.site-header { background: #102d42; color: #fbfaf6; }
.header-inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 14px; padding-bottom: 14px; flex-wrap: wrap; }
.brand { display: flex; align-items: center; gap: 10px; text-decoration: none; font-family: var(--serif); font-size: 1.15rem; font-weight: 700; }
.mark { display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: #b9432e; font-size: .8rem; }
.main-nav { display: flex; gap: 4px 18px; flex-wrap: wrap; }
.main-nav a { text-decoration: none; opacity: .85; font-size: .95rem; }
.main-nav a:hover, .main-nav a[aria-current] { opacity: 1; text-decoration: underline; text-underline-offset: 4px; }

.hero { background: #102d42; color: #fbfaf6; padding: 48px 0 56px; }
.kicker, .eyebrow { text-transform: uppercase; letter-spacing: .08em; font-size: .75rem; font-weight: 600; }
.kicker { color: #e9b98a; margin: 0 0 12px; }
.hero h1 { font-size: clamp(1.9rem, 5vw, 3rem); max-width: 18ch; }
.lede { font-size: 1.1rem; max-width: 60ch; color: inherit; opacity: .9; }
.stats { display: flex; flex-wrap: wrap; gap: 16px 40px; margin: 32px 0 0; }
.stats dt { font-size: .85rem; opacity: .8; }
.stats dd { margin: 0; font-family: var(--serif); font-size: 2rem; }

.directory { padding-top: 32px; padding-bottom: 48px; }
.filters { display: flex; flex-wrap: wrap; gap: 12px; background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 16px; margin-top: -72px; position: relative; }
.filters label { display: flex; flex-direction: column; gap: 4px; flex: 1 1 160px; font-size: .8rem; font-weight: 600; color: var(--muted); }
.filters label.grow { flex: 3 1 260px; }
.filters input, .filters select { font: inherit; font-size: 1rem; color: var(--ink); background: var(--paper); border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; width: 100%; }
.result-count { color: var(--muted); margin: 20px 0 12px; }

.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.card { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 18px; display: flex; flex-direction: column; }
.card[hidden] { display: none; }
.card-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 8px; }
.eyebrow { color: var(--teal); }
.card h3 { font-size: 1.1rem; margin-bottom: 4px; }
.card h3 a { text-decoration: none; }
.card h3 a:hover { text-decoration: underline; }
.inst { margin: 0; font-weight: 600; }
.meta { margin: 4px 0 0; color: var(--muted); font-size: .92rem; }
.small { font-size: .82rem; }
.card-foot { margin-top: auto; padding-top: 14px; display: flex; justify-content: space-between; align-items: flex-end; gap: 10px; font-size: .85rem; }
.deadline { color: var(--muted); }
.empty { color: var(--muted); padding: 24px 0; }

.status { display: inline-block; white-space: nowrap; font-size: .75rem; font-weight: 600; padding: 2px 10px; border-radius: 999px; border: 1px solid currentColor; }
.status-open { color: var(--teal); }
.status-rolling { color: var(--teal); }
.status-upcoming { color: var(--gold); }
.status-closed { color: var(--coral); }
.status-date-not-announced, .status-unknown { color: var(--muted); }

button.save, .button { font: inherit; font-size: .85rem; cursor: pointer; border: 1px solid var(--navy); background: transparent; color: var(--ink); border-radius: 999px; padding: 8px 16px; min-height: 36px; }
button.save:hover { background: var(--ivory); }
@media (prefers-color-scheme: dark) { button.save { border-color: var(--line); } button.save[aria-pressed="true"] { color: #0f1c25; } }
button.save[aria-pressed="true"] { background: var(--coral); border-color: var(--coral); color: #fff; }
.button { display: inline-block; text-decoration: none; background: #102d42; color: #fbfaf6; border-color: #102d42; padding: 10px 18px; margin-top: 8px; }

.breadcrumb { padding: 20px 0 8px; font-size: .9rem; color: var(--muted); }
.profile-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 24px; padding: 12px 0 24px; border-bottom: 1px solid var(--line); }
.profile-title { display: flex; gap: 16px; align-items: flex-start; flex: 1 1 480px; }
.profile-title img { border-radius: 12px; background: #fff; border: 1px solid var(--line); flex: none; }
.profile-title h1 { font-size: clamp(1.6rem, 4vw, 2.4rem); }
.profile-status { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.profile-status p { margin: 0; display: flex; flex-direction: column; }
.profile-status small { color: var(--muted); }
.profile-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 24px; padding: 24px 0; }
.panel { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 20px; margin-bottom: 16px; }
.panel h2 { font-size: 1.15rem; }
.facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px 24px; margin: 0; }
.facts dt, .glance dt { font-size: .8rem; color: var(--muted); font-weight: 600; }
.facts dd, .glance dd { margin: 0 0 4px; }
.glance dl { margin: 0; }
.glance div { padding: 8px 0; border-bottom: 1px solid var(--line); }
.glance div:last-child { border-bottom: 0; }
.note { font-size: .85rem; color: var(--muted); }
.related { padding-bottom: 48px; }
.related ul { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.related a { display: flex; flex-direction: column; gap: 2px; text-decoration: none; background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 16px; height: 100%; }
.related a:hover strong { text-decoration: underline; }
.related small { color: var(--muted); }

.page-head { padding: 40px 0 24px; }
.page-head h1 { font-size: clamp(1.8rem, 4vw, 2.6rem); }
.table-scroll { overflow-x: auto; margin-bottom: 48px; border: 1px solid var(--line); border-radius: 12px; background: var(--card); }
table.deadlines { width: 100%; border-collapse: collapse; font-size: .92rem; min-width: 720px; }
.deadlines th, .deadlines td { text-align: left; padding: 12px 14px; border-bottom: 1px solid var(--line); vertical-align: top; }
.deadlines th { font-size: .8rem; color: var(--muted); background: var(--ivory); }
.deadlines td small { display: block; color: var(--muted); }
.deadlines tr:last-child td { border-bottom: 0; }

.prose { max-width: 760px; padding-bottom: 48px; }
.prose h2 { margin-top: 1.6em; font-size: 1.3rem; }
.cols { columns: 2 260px; }

.site-footer { border-top: 1px solid var(--line); padding: 24px 0; font-size: .88rem; color: var(--muted); }
.site-footer p { margin: 0 0 6px; }
.site-footer .budget-resource { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.site-footer .budget-resource a { color: var(--ink); font-weight: 600; }

@media (max-width: 860px) {
  .profile-grid { grid-template-columns: 1fr; }
  .filters { margin-top: -40px; }
}

/* Footer links */
.footer-links { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-bottom: 14px; }
.footer-links a { color: var(--ink); text-decoration: none; }
.footer-links a:hover { text-decoration: underline; }

/* Index link grids (countries, institutions, guides) */
.link-grid { list-style: none; padding: 0; margin: 0 0 48px; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.link-grid a { display: flex; flex-direction: column; gap: 4px; height: 100%; text-decoration: none; background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 16px; }
.link-grid a:hover strong { text-decoration: underline; }
.link-grid small { color: var(--muted); }
.section-title { margin-top: 32px; font-size: 1.3rem; }
.stats-light { margin: 0 0 8px; }
.stats-light dt { color: var(--muted); opacity: 1; }
main > .wrap > .grid, main .page-head + .grid { margin-bottom: 48px; }

/* Editorial articles */
.article { max-width: 760px; padding: 32px 0 48px; }
.article-kicker { text-transform: uppercase; letter-spacing: .08em; font-size: .75rem; font-weight: 600; color: var(--teal); margin: 0 0 8px; }
.article h1 { font-size: clamp(1.8rem, 4vw, 2.6rem); }
.article h1 em { font-style: italic; color: var(--teal); }
.article-lead { font-size: 1.12rem; color: var(--muted); }
.article section { margin: 24px 0; }
.article-sections section { display: grid; grid-template-columns: 48px 1fr; gap: 12px; border-top: 1px solid var(--line); padding-top: 16px; }
.article-sections section > b { font-family: var(--serif); color: var(--coral); font-size: 1.2rem; }
.article h2 { font-size: 1.2rem; margin-bottom: .3em; }
.article-note { background: var(--ivory); border-left: 3px solid var(--gold); padding: 14px 16px; border-radius: 6px; margin: 24px 0; font-size: .95rem; }
.article-note p { margin: 6px 0 0; }
.article-cta { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 20px; margin-top: 32px; }
.article-cta a { font-weight: 600; }
.article ul { padding-left: 1.2em; }

/* Faculty */
.people { list-style: none; padding: 0; margin: 0 0 48px; display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.person { display: flex; gap: 14px; align-items: center; text-decoration: none; background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 12px; height: 100%; }
.person img, img.portrait { object-fit: cover; border-radius: 10px; background: var(--ivory); flex: none; }
.portrait-crop { display: block; flex: none; border-radius: 10px; background-repeat: no-repeat; background-color: var(--ivory); }
.faculty-directory .person .portrait-crop { width: 100% !important; height: auto !important; aspect-ratio: 3/4; border-radius: 0; padding: 0; }
.spotlight-portraits .portrait-crop { width: 100% !important; height: auto !important; aspect-ratio: 6/7; }
.person span { display: flex; flex-direction: column; gap: 4px; }
.person span.portrait-initials, .portrait-initials { display: inline-grid; place-items: center; flex: none; border-radius: 10px; background: #102d42; color: #fbfaf6; font-family: var(--serif); font-weight: 700; font-size: 1.2rem; letter-spacing: .02em; }
.person small { color: var(--muted); }
.person:hover strong { text-decoration: underline; }

/* Institution logo on programme pages */
.profile-title .logo { width: 56px; height: 56px; flex: none; border-radius: 12px; border: 1px solid var(--line); background: #fff; object-fit: contain; padding: 6px; }
.logo-initials { display: inline-grid; place-items: center; padding: 0; font-family: var(--serif); font-weight: 700; font-size: .95rem; color: #fbfaf6; background: #102d42 !important; border-color: #102d42 !important; letter-spacing: .02em; }

/* Institution profile extras */
.institution-head { margin-top: -8px; }
.tag-list { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; padding: 0; margin: 0 0 16px; }
.tag-list li { font-size: .82rem; color: var(--muted); border: 1px solid var(--line); border-radius: 999px; padding: 4px 10px; background: var(--card); }
.institution-head + .note { margin-bottom: 8px; }
.people-compact { margin: 12px 0 0; }
.people-compact .person img { width: 72px; height: 84px; }
.faculty-panel { margin-bottom: 16px; }

/* Analytics consent bar: equal-weight choices, large targets, readable in light and dark. */
.consent-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1000; background: #102d42; color: #fff; box-shadow: 0 -4px 18px rgba(0,0,0,.25); padding: 20px 16px; }
.consent-bar[hidden] { display: none; }
.consent-inner { max-width: 960px; margin: 0 auto; display: grid; gap: 14px; }
.consent-bar p { margin: 0; font-size: 1.125rem; line-height: 1.5; }
.consent-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.consent-btn { flex: 1 1 240px; min-height: 56px; font: inherit; font-size: 1.125rem; font-weight: 700; border: 2px solid #fff; border-radius: 8px; cursor: pointer; background: #fff; color: #102d42; }
.consent-btn:focus-visible, .consent-reopen:focus-visible { outline: 3px solid #ffb703; outline-offset: 2px; }
.consent-reopen { min-height: 44px; padding: 0 14px; font: inherit; font-weight: 600; border: 1px solid currentColor; border-radius: 6px; background: transparent; color: inherit; cursor: pointer; }
@media (max-width: 600px) { .consent-bar p { font-size: 1rem; } .consent-btn { flex-basis: 100%; } }

/* CTS Fellow editorial directory. */
:root { --navy:#173e5b; --ink:#19384c; --muted:#566c79; --paper:#f8fafc; --ivory:#edf3f7; --line:#d4e0e8; --teal:#2e6c95; --coral:#2e6c95; }
.site-header { background:var(--paper); color:var(--ink); border-bottom:1px solid var(--line); }
.header-inner { min-height:82px; }
.brand { font-family:var(--sans); letter-spacing:-.04em; font-size:1.35rem; }
.mark { background:var(--navy); color:#fff; }
.main-nav { gap:8px 22px; }
.main-nav a { font-size:.875rem; font-weight:650; }
.hero { background:linear-gradient(110deg,var(--paper) 60%,#e6f1fa); color:var(--ink); padding:80px 0 72px; }
.hero-layout { display:grid; grid-template-columns:minmax(0,1.75fr) minmax(280px,1fr); gap:60px; align-items:center; }
.hero h1 { max-width:none; font-size:clamp(2.5rem,4.3vw,3.6rem); letter-spacing:-.055em; line-height:1.16; font-weight:700; }
.hero h1 em { color:var(--coral); font-weight:400; }
.hero .lede { max-width:55ch; font-size:1.05rem; line-height:1.85; margin:26px 0; }
.kicker { color:var(--muted); font-size:.7rem; font-weight:750; letter-spacing:.16em; }
.hero-actions { display:flex; align-items:center; flex-wrap:wrap; gap:24px; margin-top:28px; }
.button { background:var(--navy); border-color:var(--navy); min-height:46px; padding:12px 22px; font-weight:650; }
.text-link { text-decoration:none; border-bottom:1px solid var(--line); padding-bottom:5px; font-size:.9rem; font-weight:650; }
.text-link:hover { color:var(--coral); border-color:currentColor; }
.intelligence { background:#173e5b; color:#f6f5ed; padding:32px; border-radius:22px; box-shadow:0 18px 45px #173e5b14; }
.intelligence .eyebrow { color:#bfd4e5; margin:0 0 12px; }
.intelligence h2 { font-size:1.65rem; letter-spacing:-.05em; }
.intelligence .stats { display:block; margin:24px 0; }
.stats > div { display:flex; gap:16px; align-items:center; justify-content:space-between; border-top:1px solid #ffffff24; padding:20px 0; }
.stats dt { font-weight:650; font-size:.82rem; opacity:1; }
.stats dt small { display:block; font-weight:400; color:#c2d6e5; margin-top:5px; font-size:.73rem; }
.stats dd { font-size:2.25rem; color:#b8d8ef; }
.evidence-note { font-size:.78rem; line-height:1.7; color:#cbdce8; margin:0; }
.discovery { padding-top:64px; padding-bottom:56px; }
.discovery h2,.faculty-spotlight h2,.directory-heading h2 { font-size:clamp(1.6rem,3vw,2.2rem); letter-spacing:-.045em; }
.pathway-links { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); margin-top:30px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.pathway-links a { display:flex; flex-direction:column; gap:16px; padding:24px 20px; text-decoration:none; border-right:1px solid var(--line); }
.pathway-links a:first-child { padding-left:0; }
.pathway-links a:last-child { border-right:0; }
.pathway-links span { font-size:.75rem; color:var(--coral); }
.pathway-links strong { font-family:var(--serif); font-size:1.15rem; }
.pathway-links small { color:var(--muted); }
.pathway-links a:hover { background:var(--ivory); }
.faculty-spotlight { display:grid; grid-template-columns:1fr 2fr; gap:48px; padding-top:32px; padding-bottom:64px; }
.faculty-spotlight p { color:var(--muted); }
.spotlight-portraits { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; }
.spotlight-portraits a { display:flex; flex-direction:column; text-decoration:none; gap:10px; font-size:.82rem; }
.spotlight-portraits img { width:100%; height:auto; aspect-ratio:6/7; object-fit:cover; border-radius:8px; }
.spotlight-portraits small { color:var(--muted); }
.directory { padding-top:32px; }
.directory .filters { margin-top:0; padding:24px; border-radius:16px; box-shadow:0 12px 35px #173e5b08; }
.directory-heading { display:flex; align-items:center; justify-content:space-between; gap:24px; padding-top:56px; }
.card { border-radius:14px; padding:24px; transition:transform .15s,border-color .15s; box-shadow:none; }
.card:hover { transform:translateY(-3px); border-color:var(--teal); }
.card h3 { font-size:1.18rem; letter-spacing:-.025em; }
.card h3 a { text-decoration:none; }
.card h3 a:hover { text-decoration:underline; text-underline-offset:4px; }
.page-head { padding-top:56px; padding-bottom:30px; }
.page-head h1 { font-size:clamp(2rem,5vw,3rem); letter-spacing:-.05em; }
.faculty-search { margin-bottom:30px; max-width:650px; }
.faculty-search label { display:block; font-weight:650; font-size:.9rem; margin-bottom:10px; }
.faculty-search input { width:100%; border:1px solid var(--line); border-radius:10px; background:var(--card); color:var(--ink); padding:16px; font:inherit; }
.faculty-search p { color:var(--muted); font-size:.85rem; }
.faculty-directory { grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.faculty-directory .person { display:block; padding:0 0 22px; overflow:hidden; }
.faculty-directory .person img { width:100%; height:auto; aspect-ratio:3/4; object-fit:cover; object-position:center 25%; border-radius:0; }
.faculty-directory .person > span { padding:20px 22px 0; }
.faculty-directory .person strong { font-family:var(--serif); font-size:1.13rem; }
.faculty-directory li[hidden] { display:none; }
.faculty-overview { display:grid; grid-template-columns:1.5fr 1fr; gap:64px; padding:40px 0; }
.faculty-overview p { max-width:65ch; line-height:1.85; }
.faculty-facts { border-left:1px solid var(--line); padding-left:32px; }
.site-footer { padding-top:40px; padding-bottom:40px; background:var(--ivory); }
@media (prefers-color-scheme:dark) {
 :root { --navy:#204a6a; --ink:#e4edf5; --muted:#afc3d2; --paper:#101e2b; --ivory:#172b3b; --card:#192f42; --line:#365064; --teal:#7ab6da; --coral:#7ab6da; }
 .hero { background:linear-gradient(110deg,var(--paper) 60%,#193348); }
 .intelligence { background:#0e2538; }
}
@media (max-width:900px) {
 .hero-layout { gap:30px; grid-template-columns:1.4fr 1fr; }
 .hero h1 { font-size:2.5rem; }
 .faculty-spotlight { grid-template-columns:1fr; gap:26px; }
 .faculty-directory { grid-template-columns:repeat(2,minmax(0,1fr)); }

}
@media (max-width:600px) {
 .header-inner { padding-top:18px; padding-bottom:18px; gap:18px; }
 .main-nav { gap:8px 18px; }
 .main-nav a { font-size:.8rem; }
 .hero { padding:44px 0; }
 .hero-layout { grid-template-columns:1fr; gap:36px; }
 .hero h1 { font-size:2.35rem; }
 .hero .lede { font-size:1rem; }
 .intelligence { padding:26px; }
 .discovery { padding-top:36px; padding-bottom:30px; }
 .pathway-links { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .pathway-links a { padding:20px 12px; border-bottom:1px solid var(--line); }
 .pathway-links a:nth-child(2n) { border-right:0; }
 .pathway-links a:first-child { padding-left:12px; }
 .spotlight-portraits { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .faculty-spotlight { padding-bottom:30px; }
 .directory .filters { padding:18px; }
 .directory-heading { align-items:flex-start; flex-direction:column; padding-top:32px; gap:8px; }
 .faculty-directory { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
 .faculty-directory .person img { height:auto; aspect-ratio:3/4; }
 .faculty-directory .person > span { padding:14px 12px 0; }
 .faculty-directory .person strong { font-size:.9rem; }
 .faculty-directory .person small { font-size:.75rem; }
 .faculty-overview { grid-template-columns:1fr; gap:28px; }
 .faculty-facts { border-left:0; border-top:1px solid var(--line); padding:24px 0 0; }
}
@media (prefers-reduced-motion:reduce) { .card { transition:none; } .card:hover { transform:none; } }

.faculty-directory .person span.portrait-initials { width:100% !important; height:auto !important; aspect-ratio:3/4; display:grid; padding:0; border-radius:0; font-size:3rem; background:var(--ivory); color:var(--muted); }

.compare-toggle { margin-top:16px; border:1px solid var(--line); border-radius:8px; padding:9px 12px; background:transparent; color:var(--ink); font:inherit; font-size:.85rem; cursor:pointer; }
.compare-toggle[aria-pressed="true"] { background:var(--ivory); border-color:var(--teal); color:var(--teal); }
.compare-tray { position:fixed; z-index:25; right:24px; bottom:20px; max-width:600px; display:flex; flex-wrap:wrap; align-items:center; gap:12px 20px; padding:16px 22px; background:var(--card); border:1px solid var(--teal); border-radius:14px; box-shadow:0 12px 40px #173e5b30; }
.compare-tray[hidden] { display:none; }
.compare-tray p { margin:0; font-size:.9rem; }
.compare-tray #compare-message:not(:empty) { flex-basis:100%; color:var(--coral); }
.text-button { font:inherit; background:transparent; color:var(--ink); border:0; padding:8px; text-decoration:underline; cursor:pointer; }
.has-comparison { padding-bottom:100px; }
.compare-selectors { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.compare-selectors label { display:flex; flex-direction:column; gap:8px; font-weight:650; min-width:0; }
.compare-selectors select { width:100%; min-width:0; border:1px solid var(--line); border-radius:8px; background:var(--card); color:var(--ink); padding:12px; font:inherit; }
.compare-page { padding-bottom:48px; }
.comparison { width:100%; min-width:760px; border-collapse:collapse; background:var(--card); }
.comparison th,.comparison td { padding:18px; vertical-align:top; text-align:left; border:1px solid var(--line); overflow-wrap:anywhere; min-width:190px; }
.comparison thead th { background:var(--ivory); font-family:var(--serif); font-size:1.05rem; }
.comparison th small { display:block; font-family:var(--sans); font-weight:400; margin-top:12px; }
.comparison tbody th { width:180px; min-width:160px; font-size:.85rem; color:var(--muted); }
.application-stages { padding-left:24px; }
.application-stages li { padding:8px 0; }
.application-stages time { display:block; }
.application-stages a { font-size:.85rem; }
@media(max-width:600px) {
 .compare-selectors { grid-template-columns:1fr; }
 .compare-tray { left:12px; right:12px; bottom:12px; padding:14px; gap:8px 14px; }
 .compare-tray .button { padding:8px 14px; }
 .has-comparison { padding-bottom:150px; }
}
