/* ============================================================================
   Oakland University — redesign concept design system
   Black · Bronze · Parchment.  Spectral / Libre Franklin / IBM Plex Mono.
   This stylesheet IS the design system the prototype demonstrates: tokens up
   top, then base, then components.  WCAG 2.1 AA throughout.
   ========================================================================== */
@import url("/oakland/assets/fonts/fonts.css");

/* ---- 1. Design tokens ---------------------------------------------------- */
:root{
  /* brand */
  --ink:#1b1a17;            /* primary text on light */
  --ink-soft:#4b4740;       /* secondary text */
  --carillon:#100f12;       /* dark room base (Elliott Tower at night) */
  --carillon-2:#1c1a1e;     /* dark room raised surface */
  --gold:#877148;           /* OU bronze gold — signature accent (borders, motif, large) */
  --gold-ink:#6b5836;       /* darker bronze for link/body text on light (AA) */
  --gold-bright:#ffcd00;    /* OU bright gold — CTA fills, black text on top */
  --gold-on-dark:#f0c862;   /* readable warm gold for text/links on the dark room */
  --oak:#3c4a2e;            /* wooded-campus green, sparing secondary + success */
  --oak-soft:#5c6b48;
  /* parchment neutrals (light room) */
  --paper:#f7f3e9;          /* page bg */
  --paper-2:#efe7d4;        /* alt section / cards on paper */
  --paper-3:#e7dcc3;        /* hairlines on paper, raised */
  --white:#fffdf8;          /* card surface */
  --line:#d9cdb2;           /* default border on light */
  /* status (no red UI — amber for caution per house style) */
  --amber:#9a6a16;
  --info:#3a5a78;
  /* type */
  --serif:"Spectral",Georgia,"Times New Roman",serif;
  --sans:"Libre Franklin",system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  /* fluid type scale */
  --fs-300:.8125rem;
  --fs-400:1rem;
  --fs-500:1.125rem;
  --fs-600:clamp(1.25rem,1.1rem + .6vw,1.5rem);
  --fs-700:clamp(1.6rem,1.35rem + 1.1vw,2.1rem);
  --fs-800:clamp(2.1rem,1.6rem + 2.3vw,3.25rem);
  --fs-900:clamp(2.7rem,1.9rem + 3.6vw,4.5rem);
  /* space */
  --sp-1:.25rem; --sp-2:.5rem; --sp-3:.75rem; --sp-4:1rem; --sp-5:1.5rem;
  --sp-6:2rem; --sp-7:3rem; --sp-8:4rem; --sp-9:6rem;
  /* radius + shadow + layout */
  --r-1:6px; --r-2:10px; --r-3:16px; --r-arch:140px;  /* collegiate arch top */
  --sh-1:0 1px 2px rgba(27,26,23,.06),0 2px 8px rgba(27,26,23,.05);
  --sh-2:0 6px 18px rgba(27,26,23,.10),0 2px 6px rgba(27,26,23,.06);
  --sh-3:0 18px 48px rgba(27,26,23,.18);
  --wrap:1180px; --wrap-narrow:760px;
  --header-h:72px;
}

/* ---- 2. Reset / base ----------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);
  font-size:var(--fs-400);line-height:1.65;-webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility}
img{max-width:100%;height:auto;display:block}
h1,h2,h3,h4{font-family:var(--serif);font-weight:600;line-height:1.12;
  letter-spacing:-.01em;margin:0 0 .5em;color:var(--ink);text-wrap:balance}
h1{font-size:var(--fs-900)} h2{font-size:var(--fs-800)}
h3{font-size:var(--fs-700)} h4{font-size:var(--fs-600)}
p{margin:0 0 1em} p:last-child{margin-bottom:0}
a{color:var(--gold-ink);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{color:var(--ink)}
strong{font-weight:700}
ul,ol{padding-left:1.2em}
hr{border:0;border-top:1px solid var(--line);margin:var(--sp-6) 0}
:focus-visible{outline:3px solid var(--gold-bright);outline-offset:2px;border-radius:3px}
.dark :focus-visible,.room--dark :focus-visible{outline-color:var(--gold-bright)}

/* skip link */
.skip{position:absolute;left:var(--sp-3);top:-3rem;z-index:200;background:var(--carillon);
  color:#fff;padding:.6rem 1rem;border-radius:var(--r-1);font-weight:600;transition:top .15s}
.skip:focus{top:var(--sp-3)}

/* ---- 3. Layout ----------------------------------------------------------- */
.wrap{width:min(100% - 2.5rem,var(--wrap));margin-inline:auto}
.wrap--narrow{width:min(100% - 2.5rem,var(--wrap-narrow));margin-inline:auto}
.section{padding-block:var(--sp-8)}
.section--tight{padding-block:var(--sp-7)}
.room--parchment{background:var(--paper)}
.room--alt{background:var(--paper-2)}
.room--dark{background:var(--carillon);color:#ece4d3}
.room--dark h1,.room--dark h2,.room--dark h3,.room--dark h4{color:#fbf6ea}
.room--dark a{color:var(--gold-on-dark)} .room--dark a:hover{color:#fff}
.room--oak{background:var(--oak);color:#eef0e6}
.room--oak h2,.room--oak h3{color:#fff}
.grid{display:grid;gap:var(--sp-5)}
@media (min-width:640px){.cols-2{grid-template-columns:repeat(2,1fr)}}
@media (min-width:900px){.cols-3{grid-template-columns:repeat(3,1fr)}.cols-4{grid-template-columns:repeat(4,1fr)}}
.eyebrow{font-family:var(--mono);font-size:var(--fs-300);letter-spacing:.16em;
  text-transform:uppercase;color:var(--gold-ink);margin:0 0 var(--sp-3);font-weight:500}
.room--dark .eyebrow{color:var(--gold-on-dark)}
.lede{font-size:var(--fs-500);color:var(--ink-soft);max-width:60ch}
.room--dark .lede{color:#cfc7b6}
.section-head{max-width:64ch;margin-bottom:var(--sp-6)}
.center{text-align:center} .center .lede,.center .section-head{margin-inline:auto}

/* motif: Tudor / lattice diamond tick (geometric primitive, not illustration) */
.tick::before{content:"";display:inline-block;width:.55em;height:.55em;margin-right:.55em;
  background:var(--gold);transform:rotate(45deg);vertical-align:.05em}
.rule-gold{height:3px;width:64px;background:var(--gold);border-radius:2px;margin:0 0 var(--sp-5)}
.center .rule-gold{margin-inline:auto}

/* ---- 4. Buttons ---------------------------------------------------------- */
.btn{--bg:var(--carillon);--fg:#fff;display:inline-flex;align-items:center;gap:.5em;
  min-height:48px;padding:.7rem 1.35rem;border-radius:var(--r-1);border:2px solid transparent;
  font-family:var(--sans);font-weight:700;font-size:1rem;line-height:1.1;cursor:pointer;
  text-decoration:none;background:var(--bg);color:var(--fg);transition:transform .12s,box-shadow .12s,background .12s}
.btn:hover{transform:translateY(-1px);box-shadow:var(--sh-2);color:var(--fg)}
.btn:active{transform:translateY(0)}
.btn--primary{--bg:var(--gold-bright);--fg:#231d00}
.btn--primary:hover{--bg:#ffd732}
.btn--ink{--bg:var(--ink);--fg:#fff}
.btn--ghost{--bg:transparent;--fg:var(--ink);border-color:var(--gold)}
.btn--ghost:hover{--bg:var(--gold);--fg:#fff}
.room--dark .btn--ghost{--fg:#f3ede0;border-color:var(--gold-on-dark)}
.room--dark .btn--ghost:hover{--bg:var(--gold-on-dark);--fg:#1a1500}
.btn--sm{min-height:40px;padding:.45rem 1rem;font-size:.95rem}

/* ---- 5. Header / brand / nav -------------------------------------------- */
.proto-banner{background:var(--carillon);color:#f3ede0;font-size:var(--fs-300);
  text-align:center;padding:.45rem 1rem;border-bottom:2px solid var(--gold)}
.proto-banner strong{color:var(--gold-on-dark)}
.site-header{position:sticky;top:0;z-index:100;background:rgba(247,243,233,.92);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.header-inner{display:flex;align-items:center;justify-content:space-between;
  gap:var(--sp-4);min-height:var(--header-h)}
/* brand lockup — typographic masthead + lattice tick (no logo file) */
.brand{display:inline-flex;align-items:center;gap:.65rem;text-decoration:none;color:var(--ink)}
.brand:hover{color:var(--ink)}
/* Official Oakland University logo (real brand asset, not a reinvented mark). */
.brand-logo{height:46px;width:auto;display:block}
@media (max-width:480px){.brand-logo{height:40px}}
/* primary nav */
.nav{display:flex;align-items:center;gap:var(--sp-2)}
.nav a{font-weight:600;color:var(--ink);text-decoration:none;padding:.5rem .7rem;border-radius:var(--r-1);
  font-size:.98rem}
.nav a:hover{background:var(--paper-3);color:var(--ink)}
.nav a[aria-current="page"]{color:var(--gold-ink);box-shadow:inset 0 -2px 0 var(--gold)}
.nav-cta{margin-left:var(--sp-2)}
.menu-btn{display:none;align-items:center;gap:.5rem;min-height:44px;padding:.4rem .8rem;
  background:transparent;border:2px solid var(--line);border-radius:var(--r-1);
  font-family:var(--sans);font-weight:700;cursor:pointer;color:var(--ink)}
.menu-btn .bars{width:18px;height:2px;background:var(--ink);position:relative;display:block}
.menu-btn .bars::before,.menu-btn .bars::after{content:"";position:absolute;left:0;width:18px;height:2px;background:var(--ink)}
.menu-btn .bars::before{top:-6px}.menu-btn .bars::after{top:6px}
@media (max-width:960px){
  .menu-btn{display:inline-flex}
  .nav{position:fixed;inset:calc(var(--header-h) + 32px) 0 auto 0;flex-direction:column;
    align-items:stretch;gap:0;background:var(--paper);border-bottom:2px solid var(--gold);
    padding:var(--sp-3);box-shadow:var(--sh-3);transform:translateY(-115%);
    transition:transform .25s ease,visibility .25s,opacity .2s;
    visibility:hidden;opacity:0;pointer-events:none;
    max-height:calc(100vh - var(--header-h) - 32px);overflow:auto}
  .nav[data-open="true"]{transform:translateY(0);visibility:visible;opacity:1;pointer-events:auto}
  .nav a{padding:.9rem .8rem;font-size:1.05rem;border-bottom:1px solid var(--line)}
  .nav-cta{margin:var(--sp-3) 0 0}
}

/* ---- 6. Hero ------------------------------------------------------------- */
.hero{position:relative;background:var(--carillon);color:#f3ede0;overflow:hidden}
.hero-media{position:absolute;inset:0}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:center 30%}
.hero-media::after{content:"";position:absolute;inset:0;
  background:linear-gradient(110deg,rgba(10,9,12,.93) 0%,rgba(10,9,12,.78) 42%,rgba(16,14,12,.42) 100%)}
.hero-inner{position:relative;padding-block:clamp(3.5rem,8vw,7rem);max-width:43rem}
.hero h1{color:#fff;margin-bottom:var(--sp-4)}
.hero .lede{color:#e2dac9;font-size:clamp(1.05rem,1rem + .5vw,1.35rem)}
.hero-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-6)}

/* ---- 7. Role chooser (audience-first) ----------------------------------- */
.roles{display:grid;gap:var(--sp-3);grid-template-columns:1fr;margin-top:var(--sp-6)}
@media (min-width:560px){.roles{grid-template-columns:repeat(2,1fr)}}
@media (min-width:900px){.roles{grid-template-columns:repeat(4,1fr)}}
.role{display:flex;flex-direction:column;gap:.2rem;padding:1rem 1.1rem;border-radius:var(--r-2);
  background:rgba(255,253,248,.07);border:1px solid rgba(240,200,98,.28);color:#f3ede0;
  text-decoration:none;transition:background .15s,border-color .15s,transform .12s}
.role:hover{background:rgba(255,253,248,.13);border-color:var(--gold-on-dark);transform:translateY(-2px);color:#fff}
.role b{font-family:var(--serif);font-size:1.18rem;font-weight:600}
.role span{font-size:.92rem;color:#cabfa9}
.role .go{margin-top:.4rem;font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--gold-on-dark)}

/* ---- 8. Cards + arched photo frames ------------------------------------- */
.card{background:var(--white);border:1px solid var(--line);border-radius:var(--r-2);
  padding:var(--sp-5);box-shadow:var(--sh-1);transition:transform .14s,box-shadow .14s}
.card--link{text-decoration:none;color:var(--ink)}
.card--link:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
.card h3{font-size:var(--fs-600)}
/* Whole card is the link — keep text clean; underline only the title on hover. */
.card--link h3{text-decoration:underline;text-decoration-color:transparent;
  text-decoration-thickness:2px;text-underline-offset:3px;transition:text-decoration-color .12s}
.card--link:hover h3,.card--link:focus-visible h3{text-decoration-color:var(--gold)}
.card .cat{font-family:var(--mono);font-size:var(--fs-300);letter-spacing:.12em;
  text-transform:uppercase;color:var(--gold-ink)}
.card-grid{display:grid;gap:var(--sp-5);grid-template-columns:1fr}
@media (min-width:640px){.card-grid{grid-template-columns:repeat(2,1fr)}}
@media (min-width:960px){.card-grid.cols-3{grid-template-columns:repeat(3,1fr)}}
/* arched-top photo frame — the signature treatment */
.arch{border-radius:var(--r-arch) var(--r-arch) var(--r-2) var(--r-2);overflow:hidden;
  border:1px solid var(--line);box-shadow:var(--sh-1);background:var(--paper-2)}
.arch img{width:100%;aspect-ratio:3/4;object-fit:cover}
.arch--wide img{aspect-ratio:4/3}
.arch--wide{margin-bottom:var(--sp-6)}
figure{margin:0}
figure figcaption{font-size:var(--fs-300);color:var(--ink-soft);margin-top:var(--sp-2);font-style:italic}

/* feature split (image + text), used for story sections */
.split{display:grid;gap:var(--sp-6);align-items:center}
@media (min-width:860px){.split{grid-template-columns:1fr 1fr}.split--media-right .split-media{order:2}}

/* ---- 9. Announcement component ------------------------------------------ */
.announce{display:grid;grid-template-columns:1fr;gap:var(--sp-2) var(--sp-4);align-items:start;
  background:var(--paper-2);
  border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:var(--r-2);
  padding:var(--sp-4) var(--sp-5)}
.announce .when{font-family:var(--mono);font-size:var(--fs-300);color:var(--gold-ink);
  letter-spacing:.06em}
/* Fixed label column so every card's title + body align to the same left edge. */
@media (min-width:560px){.announce{grid-template-columns:10.5rem 1fr}.announce .when{white-space:nowrap}}
.announce h3{font-size:var(--fs-500);margin-bottom:.2em;font-family:var(--sans);font-weight:700}
.announce p{margin:0;color:var(--ink-soft);font-size:.96rem}

/* ---- 10. Pills / badges / tags ------------------------------------------ */
.pill{display:inline-flex;align-items:center;gap:.4em;padding:.3rem .7rem;border-radius:999px;
  font-size:.82rem;font-weight:600;background:var(--paper-3);color:var(--ink);border:1px solid var(--line)}
.pill--gold{background:var(--gold);color:#fff;border-color:var(--gold)}
.pill--level{font-family:var(--mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;
  background:transparent;border:1px solid var(--gold);color:var(--gold-ink)}
.badge-aa{display:inline-flex;align-items:center;gap:.4em;font-family:var(--mono);font-size:.72rem;
  letter-spacing:.08em;text-transform:uppercase;color:var(--oak);font-weight:600}
.badge-aa::before{content:"";width:.6em;height:.6em;border-radius:999px;background:var(--oak)}

/* ---- 11. Accordion / tabs (accessible) ---------------------------------- */
.accordion{border:1px solid var(--line);border-radius:var(--r-2);overflow:hidden;background:var(--white)}
.accordion + .accordion{margin-top:var(--sp-3)}
.acc-trigger{width:100%;display:flex;justify-content:space-between;align-items:center;gap:1rem;
  padding:1rem 1.2rem;background:transparent;border:0;font-family:var(--sans);font-weight:700;
  font-size:1.05rem;text-align:left;cursor:pointer;color:var(--ink);min-height:52px}
.acc-trigger:hover{background:var(--paper-2)}
.acc-trigger .chev{width:.7em;height:.7em;border-right:2px solid var(--gold);border-bottom:2px solid var(--gold);
  transform:rotate(45deg);transition:transform .2s;flex:0 0 auto}
.acc-trigger[aria-expanded="true"] .chev{transform:rotate(-135deg)}
.acc-panel{padding:0 1.2rem 1.2rem;color:var(--ink-soft)}
.acc-panel[hidden]{display:none}
/* tabs */
.tabs{display:flex;flex-wrap:wrap;gap:.3rem;border-bottom:2px solid var(--line);margin-bottom:var(--sp-5)}
.tab{min-height:44px;padding:.6rem 1rem;background:transparent;border:0;border-bottom:3px solid transparent;
  margin-bottom:-2px;font-family:var(--sans);font-weight:700;font-size:1rem;cursor:pointer;color:var(--ink-soft)}
.tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--gold)}
.tab:hover{color:var(--ink)}
.tabpanel[hidden]{display:none}

/* ---- 12. Forms / inputs / search ---------------------------------------- */
label{font-weight:600;display:block;margin-bottom:.35rem}
input[type=text],input[type=search],input[type=email],select,textarea{
  width:100%;font-family:var(--sans);font-size:1rem;padding:.7rem .9rem;min-height:48px;
  background:var(--white);border:2px solid var(--line);border-radius:var(--r-1);color:var(--ink)}
input:focus,select:focus,textarea:focus{border-color:var(--gold);outline:3px solid rgba(255,205,0,.4);outline-offset:1px}
.field{margin-bottom:var(--sp-4)}
.hint{font-size:.85rem;color:var(--ink-soft);margin-top:.3rem}
/* search bar */
.searchbar{display:flex;gap:.5rem;align-items:stretch}
.searchbar input{flex:1}
.search-shell{background:var(--white);border:1px solid var(--line);border-radius:var(--r-3);
  padding:var(--sp-5);box-shadow:var(--sh-2)}
.filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:var(--sp-4)}
.chip{min-height:40px;padding:.4rem .9rem;border-radius:999px;border:1.5px solid var(--line);
  background:var(--white);font-family:var(--sans);font-weight:600;font-size:.9rem;cursor:pointer;color:var(--ink-soft)}
.chip[aria-pressed="true"]{background:var(--carillon);color:#fff;border-color:var(--carillon)}
.chip:hover{border-color:var(--gold)}

/* ---- 13. Program finder results ----------------------------------------- */
.results-meta{font-family:var(--mono);font-size:var(--fs-300);letter-spacing:.06em;
  color:var(--ink-soft);text-transform:uppercase;margin:var(--sp-5) 0 var(--sp-3)}
.program-list{display:grid;gap:var(--sp-3);grid-template-columns:1fr}
@media (min-width:680px){.program-list{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1040px){.program-list{grid-template-columns:repeat(3,1fr)}}
.program{display:flex;flex-direction:column;gap:.4rem;padding:1rem 1.1rem;background:var(--white);
  border:1px solid var(--line);border-radius:var(--r-2);text-decoration:none;color:var(--ink);
  transition:transform .12s,box-shadow .12s,border-color .12s}
.program:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--gold);color:var(--ink)}
.program b{font-family:var(--serif);font-size:1.1rem;font-weight:600;line-height:1.2}
.program .meta{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;margin-top:auto}
.program .college{font-size:.85rem;color:var(--ink-soft)}
.empty{padding:var(--sp-6);text-align:center;color:var(--ink-soft);border:1px dashed var(--line);border-radius:var(--r-2)}
.empty .tick::before{margin:0 auto var(--sp-3);display:block}

/* ---- 14. Ask Oakland ----------------------------------------------------- */
.ask-shell{background:var(--white);border:1px solid var(--line);border-radius:var(--r-3);
  box-shadow:var(--sh-2);overflow:hidden}
.ask-top{background:var(--carillon);color:#f3ede0;padding:var(--sp-5)}
.ask-top h2{color:#fff;margin-bottom:.2em}
.ask-top .lede{color:#cfc7b6}
.ask-form{display:flex;gap:.5rem;margin-top:var(--sp-4)}
.ask-form input{background:#fffdf8}
.ask-suggest{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:var(--sp-4)}
.ask-suggest button{min-height:38px;padding:.35rem .8rem;border-radius:999px;cursor:pointer;
  background:rgba(255,253,248,.08);border:1px solid rgba(240,200,98,.35);color:#f0e9d8;
  font-family:var(--sans);font-size:.85rem;font-weight:600}
.ask-suggest button:hover{background:rgba(255,253,248,.16);color:#fff}
.ask-body{padding:var(--sp-5)}
.ask-answer{font-size:var(--fs-500);line-height:1.6}
.ask-answer p{margin-bottom:.6em}
.source-cards{display:grid;gap:var(--sp-3);grid-template-columns:1fr;margin-top:var(--sp-5)}
@media (min-width:640px){.source-cards{grid-template-columns:repeat(2,1fr)}}
.source-card{display:block;padding:1rem 1.1rem;border:1px solid var(--line);border-left:4px solid var(--gold);
  border-radius:var(--r-1);text-decoration:none;color:var(--ink);background:var(--paper)}
.source-card:hover{background:var(--paper-2);color:var(--ink)}
.source-card .src-label{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-ink)}
.source-card b{display:block;font-family:var(--sans);margin-top:.2rem}
.source-card .src-host{font-size:.82rem;color:var(--ink-soft)}

/* ---- 15. Stat band (by the numbers) ------------------------------------- */
.stats{display:grid;gap:var(--sp-5);grid-template-columns:repeat(2,1fr)}
@media (min-width:760px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat b{display:block;font-family:var(--serif);font-size:clamp(2.2rem,1.6rem + 2.4vw,3.1rem);
  font-weight:700;color:var(--gold-on-dark);line-height:1}
.stat span{display:block;margin-top:.4rem;font-size:.95rem;color:#cfc7b6}

/* ---- 16. Tables (design system / governance) ---------------------------- */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-2)}
table.tbl{width:100%;border-collapse:collapse;font-size:.95rem;background:var(--white)}
.tbl th,.tbl td{text-align:left;padding:.7rem .9rem;border-bottom:1px solid var(--line);vertical-align:top}
.tbl thead th{background:var(--paper-2);font-family:var(--mono);font-size:.74rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink)}
.tbl tbody tr:last-child td{border-bottom:0}

/* ---- 17. Design-system specifics ---------------------------------------- */
.swatches{display:grid;gap:var(--sp-3);grid-template-columns:repeat(2,1fr)}
@media (min-width:680px){.swatches{grid-template-columns:repeat(4,1fr)}}
.swatch{border:1px solid var(--line);border-radius:var(--r-2);overflow:hidden;background:var(--white)}
.swatch .chipcolor{height:84px}
.swatch .info{padding:.7rem .85rem}
.swatch .info b{font-size:.95rem}
.swatch .info code{font-family:var(--mono);font-size:.78rem;color:var(--ink-soft);display:block;margin-top:.2rem}
.token-row{display:flex;align-items:center;gap:1rem;padding:.7rem 0;border-bottom:1px solid var(--line)}
.token-row:last-child{border-bottom:0}
.token-row code{font-family:var(--mono);font-size:.82rem;color:var(--gold-ink)}
.demo{border:1px solid var(--line);border-radius:var(--r-2);overflow:hidden;background:var(--white)}
.demo-stage{padding:var(--sp-5);display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center}
.demo-stage.on-dark{background:var(--carillon)}
pre.code{margin:0;background:var(--carillon);color:#e9e2d2;padding:var(--sp-4) var(--sp-5);
  overflow-x:auto;font-family:var(--mono);font-size:.82rem;line-height:1.6}
pre.code .tok-prop{color:var(--gold-on-dark)} pre.code .tok-val{color:#bcd0a6}
.copy-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem .9rem;
  background:var(--paper-2);border-top:1px solid var(--line);font-family:var(--mono);font-size:.74rem;
  letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.copy-btn{min-height:36px;padding:.3rem .8rem;border:1.5px solid var(--line);border-radius:var(--r-1);
  background:var(--white);cursor:pointer;font-family:var(--sans);font-weight:700;font-size:.78rem;color:var(--ink)}
.copy-btn:hover{border-color:var(--gold)}

/* ---- 18. Breadcrumb / page head ----------------------------------------- */
.pagehead{background:var(--paper-2);border-bottom:1px solid var(--line);padding-block:var(--sp-7)}
.crumbs{font-size:.85rem;color:var(--ink-soft);margin-bottom:var(--sp-3)}
.crumbs a{color:var(--gold-ink)}
.pagehead h1{font-size:var(--fs-800)}

/* ---- 19. Footer ---------------------------------------------------------- */
.site-footer{background:var(--carillon);color:#cabfa9;padding-block:var(--sp-7) var(--sp-6);font-size:.92rem}
.site-footer h2{color:#f3ede0;font-family:var(--sans);font-size:.8rem;letter-spacing:.12em;
  text-transform:uppercase;font-weight:700;margin-bottom:var(--sp-3)}
.footer-grid{display:grid;gap:var(--sp-6);grid-template-columns:1fr}
@media (min-width:680px){.footer-grid{grid-template-columns:1.4fr 1fr 1fr}}
.site-footer a{color:#d9cfbb;text-decoration:none}
.site-footer a:hover{color:#fff;text-decoration:underline}
.site-footer ul{list-style:none;padding:0;margin:0}
.site-footer li{margin-bottom:.5rem}
.footer-brand b{font-family:var(--serif);color:#fff;font-size:1.3rem}
.footer-note{margin-top:var(--sp-6);padding-top:var(--sp-5);border-top:1px solid rgba(217,205,178,.2);
  font-size:.8rem;color:#9c917d;line-height:1.7}
.footer-note a{color:var(--gold-on-dark)}

/* ---- 20. 404 ------------------------------------------------------------- */
.notfound{min-height:60vh;display:grid;place-items:center;text-align:center;padding:var(--sp-8) 0}
.notfound .big{font-family:var(--serif);font-size:clamp(4rem,10vw,8rem);color:var(--gold);line-height:1;margin:0}

/* ---- 21. Utilities ------------------------------------------------------- */
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
.mt-0{margin-top:0}.mb-0{margin-bottom:0}
.stack>*+*{margin-top:var(--sp-4)}
.flex{display:flex;gap:var(--sp-3);flex-wrap:wrap;align-items:center}
.muted{color:var(--ink-soft)}
.maxw{max-width:64ch}

/* ---- 22. AA contrast overrides (dark/oak rooms + on-light cards) --------- */
/* hero is a dark room but not .room--dark — keep its eyebrow legible */
.hero .eyebrow{color:var(--gold-on-dark)}
/* a button used as a link inside a dark/oak room must keep its own --fg,
   not the room's link color (which would tint button text) */
.room--dark a.btn,.room--oak a.btn,.hero a.btn,.ask-top a.btn{color:var(--fg)}
/* ghost button on dark surfaces (oak room + the photographic hero) */
.room--oak .btn--ghost,.hero .btn--ghost{--fg:#f6f1e6;border-color:var(--gold-on-dark)}
.room--oak .btn--ghost:hover,.hero .btn--ghost:hover{--bg:var(--gold-on-dark);--fg:#19140a}
/* swatch label sits on a white card even inside the dark design-system band */
.swatch .info{color:var(--ink)}
.swatch .info b{color:var(--ink)}
/* muted/secondary text on dark surfaces */
.room--dark .muted,.room--oak .muted,.site-footer .muted{color:#c4b9a1}

/* ---- 23. Real OU logo placements (brand asset, not a reinvented mark) --- */
.footer-logo{width:180px;height:auto;display:block;margin-bottom:var(--sp-3)}
.notfound-logo{width:min(240px,68vw);height:auto;margin:0 auto var(--sp-5)}

/* ---- 24. Critique polish pass (raise the ceiling) ----------------------- */
/* let the Elliott Tower hero breathe — lighter, color-shifted scrim (text stays AA on the dark left) */
.hero-media::after{background:linear-gradient(108deg,rgba(9,8,11,.9) 0%,rgba(13,11,15,.62) 46%,rgba(20,16,12,.26) 100%)}
/* role chooser: more breathing room + a faint gold rule so it reads as the primary pathway */
.roles{margin-top:var(--sp-7);padding-top:var(--sp-6);border-top:1px solid rgba(240,200,98,.22)}
.role{border-color:rgba(240,200,98,.46);background:rgba(255,253,248,.08)}
/* stronger affordance on dark interactive surfaces */
.ask-suggest button{border-color:rgba(240,200,98,.55);background:rgba(255,253,248,.10);color:#f4eedd}
/* lift the Program Finder card (it carries the headline interaction) */
.search-shell{border-color:var(--gold);box-shadow:var(--sh-3)}
/* design-system swatches feel premium on hover */
.swatch{transition:transform .12s,box-shadow .12s}
.swatch:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
/* lattice/diamond section divider — deploys the Tudor-diamond motif as a room transition */
.diamond-rule{display:flex;gap:.6rem;justify-content:center;align-items:center;margin:0 auto;list-style:none;padding:0}
.diamond-rule::before,.diamond-rule::after{content:"";height:1px;width:min(90px,16vw);background:linear-gradient(90deg,transparent,var(--gold))}
.diamond-rule::after{background:linear-gradient(90deg,var(--gold),transparent)}
.diamond-rule i{width:.5rem;height:.5rem;background:var(--gold);transform:rotate(45deg);display:block}
.diamond-rule i:nth-child(2){width:.62rem;height:.62rem}
.section-divider{padding-block:var(--sp-2)}
/* tiny-screen tightening */
@media (max-width:400px){
  .program .meta{flex-direction:column;align-items:flex-start;gap:.3rem}
  .ask-suggest{gap:.4rem}
}
