/*
 * ICE Design System
 * Brand-aligned system: fonts §03, palette §02.
 *
 * Font: the system SF Pro stack is still the default for the marketing site.
 * Manrope is declared below and applied ONLY by the two signed-in surfaces that
 * opt into it — /my-admission (`.madm`) and the staff desks
 * (`body.page-dashboard`). An @font-face costs nothing on a route that never
 * names the family, so declaring it once here beats copying the src path into
 * two route stylesheets that can drift.
 *
 * Colour: The canonical palette, semantic pairs, and compatibility
 * bridges are defined in site-20260716b.css.
 */

/* Manrope 4.504, SIL Open Font License 1.1 — licence bundled beside the file at
   public/fonts/Manrope-OFL.txt. ONE variable file covers wght 200-800, self
   hosted, so `font-src 'self'` already permits it and no CSP change is needed.
   Declaring the face does not apply it: see docs/04 §1 for who opts in. */
@font-face {
  font-family: 'Manrope';
  src: url('/fonts/manrope-var.ttf') format('truetype-variations');
  font-weight: 200 800;
  font-style: normal;
  font-display: swap;
}

:root{
  /* ── Families (§03 Typography) ────────────────────────────────
     System font — Apple's UI font stack (SF Pro / Helvetica Neue / Arial)
     Renders natively correct on every platform, zero licensing overhead. */
  --ice-font-primary:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue",Arial,sans-serif;
  --ice-font-display:var(--ice-font-primary);

  /* Fluid type roles: one hierarchy for every route. */
  --ice-type-h1-size:clamp(2.5rem,1.97rem + 2.35vw,4.0625rem);
  --ice-type-h1-line:1.08;
  --ice-type-h1-weight:400;
  --ice-type-h1-track:-.015em;

  --ice-type-h2-size:clamp(2rem,1.66rem + 1.5vw,3rem);
  --ice-type-h2-line:1.15;
  --ice-type-h2-weight:400;
  --ice-type-h2-track:-.012em;

  --ice-type-h3-size:clamp(1.375rem,1.25rem + .55vw,1.75rem);
  --ice-type-h3-line:1.25;
  --ice-type-h3-weight:600;
  --ice-type-h3-track:-.012em;

  --ice-type-h4-size:clamp(1.125rem,1.04rem + .37vw,1.375rem);
  --ice-type-h4-line:1.3;
  --ice-type-h4-weight:600;
  --ice-type-h4-track:-.01em;

  --ice-type-body-size:clamp(1rem,.958rem + .185vw,1.125rem);
  --ice-type-body-line:1.62;
  --ice-type-body-weight:400;
  --ice-type-body-track:0;

  --ice-type-lede-size:clamp(1.125rem,1.04rem + .37vw,1.375rem);
  --ice-type-lede-line:1.55;
  --ice-type-lede-weight:400;
  --ice-type-lede-track:0;

  --ice-type-label-size:clamp(.75rem,.73rem + .09vw,.8125rem);
  --ice-type-label-line:1.4;
  --ice-type-label-weight:700;
  --ice-type-label-track:.1em;

  --ice-type-caption-size:clamp(.75rem,.73rem + .09vw,.8125rem);
  --ice-type-caption-line:1.55;
  --ice-type-caption-weight:400;
  --ice-type-caption-track:0;

  --ice-type-button-size:clamp(.875rem,.854rem + .09vw,.9375rem);
  --ice-type-button-line:1.2;
  --ice-type-button-weight:700;
  --ice-type-button-track:.05em;

  --ice-type-stat-size:clamp(1.75rem,1.5rem + 1.1vw,2.5rem);
  --ice-type-stat-line:1.05;
  --ice-type-quote-size:clamp(1.75rem,1.5rem + 1.1vw,2.5rem);
  --ice-type-quote-line:1.28;

  /* Display roles above H1: short editorial pull-quotes and closing-band headlines. */
  --ice-type-quote-feature-size:clamp(2.25rem,1.77rem + 2.1vw,3.625rem);
  --ice-type-quote-feature-line:1.16;
  --ice-type-display-size:clamp(2.75rem,2.08rem + 2.95vw,4.75rem);
  --ice-type-display-line:1.04;

  /* Supporting type primitives for measured editorial compositions. */
  --ice-type-icon-scale:1.1em;
  --ice-type-leading-110:1.1;
  --ice-type-leading-115:1.15;
  --ice-type-leading-120:1.2;
  --ice-type-leading-125:1.25;
  --ice-type-leading-128:1.28;
  --ice-type-leading-130:1.3;
  --ice-type-leading-135:1.35;
  --ice-type-leading-140:1.4;
  --ice-type-leading-145:1.45;
  --ice-type-leading-150:1.5;
  --ice-type-leading-155:1.55;
  --ice-type-leading-158:1.58;
  --ice-type-leading-160:1.6;
  --ice-type-track-none:0em;
  --ice-type-track-tight-8:-.008em;
  --ice-type-track-tight-10:-.01em;
  --ice-type-track-tight-20:-.02em;
  --ice-type-track-wide-3:.03em;
  --ice-type-track-wide-4:.04em;
  --ice-type-track-wide-5:.05em;
  --ice-type-track-wide-6:.06em;
  --ice-type-track-wide-75:.075em;

  /* Content measures keep long-form reading between roughly 60 and 75 characters. */
  --ice-measure-prose:var(--ice-container-prose);
  --ice-measure-prose-wide:var(--ice-container-prose);
  --ice-measure-lede:72ch;
  --ice-measure-page-title:16ch;
  --ice-measure-quote:56ch;
  --ice-measure-heading:1200px;
  --ice-measure-card:42ch;
  --ice-measure-course-copy:72ch;
  --ice-measure-facility:48ch;
  --ice-measure-promo-heading:16ch;
  --ice-measure-promo-copy:44ch;
  --ice-measure-career-copy:60ch;
  --ice-measure-stat:340px;
  --ice-measure-faq:70ch;
  --ice-measure-apply-heading:18ch;
  --ice-measure-program-copy:58ch;
  --ice-measure-related-copy:46ch;

  /* 4px-derived spacing scale. */
  --ice-space-0:0;
  --ice-space-pixel:1px;
  --ice-space-1:4px;
  --ice-space-2:8px;
  --ice-space-3:12px;
  --ice-space-4:16px;
  --ice-space-5:20px;
  --ice-space-6:24px;
  --ice-space-7:28px;
  --ice-space-8:32px;
  --ice-space-9:36px;
  --ice-space-10:40px;
  --ice-space-11:44px;
  --ice-space-12:48px;
  --ice-space-13:52px;
  --ice-space-14:56px;
  --ice-space-16:64px;
  --ice-space-18:72px;
  --ice-space-20:80px;
  --ice-space-22:88px;
  --ice-space-24:96px;
  --ice-space-26:104px;
  --ice-space-28:112px;
  --ice-space-32:128px;
  --ice-space-fluid-28-40:clamp(var(--ice-space-7),4vw,var(--ice-space-10));
  --ice-space-fluid-28-44:clamp(var(--ice-space-7),4vw,var(--ice-space-11));
  --ice-space-fluid-36-56:clamp(var(--ice-space-9),5vw,var(--ice-space-14));
  --ice-space-fluid-44-80:clamp(var(--ice-space-11),6vw,var(--ice-space-20));
  --ice-space-fluid-44-88:clamp(var(--ice-space-11),6vw,var(--ice-space-22));
  --ice-space-fluid-44-104:clamp(var(--ice-space-11),7vw,var(--ice-space-26));
  --ice-space-fluid-48-80:clamp(var(--ice-space-12),6vw,var(--ice-space-20));
  --ice-space-fluid-48-96:clamp(var(--ice-space-12),6vw,var(--ice-space-24));
  --ice-space-fluid-48-104:clamp(var(--ice-space-12),7vw,var(--ice-space-26));
  --ice-space-fluid-56-88:clamp(var(--ice-space-14),6vw,var(--ice-space-22));
  --ice-space-fluid-56-112:clamp(var(--ice-space-14),7vw,var(--ice-space-28));
  --ice-space-fluid-64-104:clamp(var(--ice-space-16),7vw,var(--ice-space-26));
  --ice-space-fluid-68-112:clamp(var(--ice-space-18),7vw,var(--ice-space-28));
  --ice-space-fluid-72-104:clamp(var(--ice-space-18),8vw,var(--ice-space-26));

  /* Semantic rhythm. */
  --ice-gap-inline:var(--ice-space-4);
  --ice-gap-stack:var(--ice-space-6);
  --ice-gap-grid:clamp(var(--ice-space-5),2.4vw,var(--ice-space-8));
  --ice-gap-grid-large:clamp(var(--ice-space-8),5vw,var(--ice-space-16));
  --ice-paragraph-gap:var(--ice-space-5);
  --ice-heading-gap:var(--ice-space-4);
  --ice-section-block:clamp(var(--ice-space-10),4.5vw,var(--ice-space-18));
  --ice-section-block-compact:clamp(var(--ice-space-7),3vw,var(--ice-space-12));
  --ice-section-block-large:clamp(var(--ice-space-12),5.5vw,var(--ice-space-22));
  --ice-gap-career-heading:8%;
  --ice-hero-pad-top-mobile:calc(var(--nav-h) + var(--ice-space-8));
  --ice-hero-pad-top-tablet:calc(var(--nav-h) + var(--ice-space-12));
  /* Was calc(--nav-main-h + --contact-h + --ice-space-14), which reconstructed
     the header by hand and left out BOTH identity rows — --former-bar-h and
     --tu-bar-h, 62px of real header between them. On /inquiry at 1440px that put
     the hero's top padding at 180px under a 195px header, so the Nepali/English
     toggle rendered behind it. --nav-h is the sum that already exists and
     already includes all four rows; the tablet token beside this one has always
     used it. Fixed 2026-08-30. */
  --ice-hero-pad-top-wide:calc(var(--nav-h) + var(--ice-space-14));

  /* Editorial media roles: scale follows narrative importance, not source shape. */
  --ice-media-ratio-hero:3/2;
  --ice-media-ratio-feature:16/10;
  --ice-media-ratio-card:4/3;
  --ice-media-ratio-strip:16/9;
  --ice-media-ratio-detail:4/5;
  --ice-media-ratio-square:1;
  --ice-media-ratio-course-hero:1.041;
  --ice-media-ratio-promo:1.6;
  --ice-media-hero-bleed:-20px;
  --ice-media-sticky-offset:70px;
  --ice-media-grade:saturate(.72) contrast(1.1) brightness(.94) sepia(.035) hue-rotate(-3deg);
  --ice-media-wash:
    linear-gradient(145deg,rgba(31,36,117,.3),rgba(8,27,53,.1) 54%,rgba(126,19,36,.24)),
    linear-gradient(0deg,rgba(4,9,36,.16),transparent 42%);
  --ice-media-hero-accent:linear-gradient(90deg,var(--terracotta) 0 52%,transparent 52%);
  --ice-media-career-overlay:linear-gradient(180deg,rgba(10,18,38,.92),rgba(10,18,38,.88) 40%,rgba(10,18,38,.96));

  /* Rails and grid. */
  --ice-container:1280px;
  --ice-container-wide:1480px;
  --ice-container-prose:68ch;
  --ice-gutter:clamp(var(--ice-space-5),4vw,var(--ice-space-14));
  --ice-grid-columns:12;

  /* Component geometry and interaction. */
  --ice-radius-control:4px;
  --ice-radius-surface:8px;
  --ice-border:1px solid var(--ice-color-border);
  --ice-border-strong:2px solid var(--ice-color-border-strong);
  --ice-rule-width:1px;
  --ice-rule-width-active:2px;
  --ice-rule-width-accent:4px;
  --ice-control-min:48px;
  --ice-control-min-compact:44px;
  --ice-cta-min:52px;
  --ice-control-pad-inline:var(--ice-space-6);
  --ice-component-min:180px;
  --ice-curriculum-rail-min:280px;
  --ice-subnav-height:56px;
  --ice-icon-size:22px;
  --ice-mark-size:16px;
  --ice-shadow-surface:0 12px 32px rgba(4,9,36,.1);
  --ice-shadow-promo:0 24px 52px rgba(10,18,38,.28);
  --ice-glass-blur:14px;
  --ice-glass-saturation:1.2;
  --ice-glass-mix:88%;
  --ice-duration-fast:160ms;
  --ice-duration-standard:240ms;
  --ice-duration-quick:150ms;
  --ice-duration-action:200ms;
  --ice-ease:cubic-bezier(.2,.7,.2,1);
  --ice-ease-standard:cubic-bezier(.4,0,.2,1);

  /* Legacy API aliases. New work uses --ice-* names. */
  --display:var(--ice-font-display);
  --news-serif:var(--ice-font-primary);
  --sans:var(--ice-font-primary);
  --t-display:var(--ice-type-h1-size);
  --t-h1:var(--ice-type-h1-size);
  --t-h2:var(--ice-type-h2-size);
  --t-h3:var(--ice-type-h3-size);
  --t-body:var(--ice-type-body-size);
  --t-body-lg:var(--ice-type-lede-size);
  --t-meta:var(--ice-type-caption-size);
  --t-micro:var(--ice-type-label-size);
  --gutter:var(--ice-gutter);
  --sec:var(--ice-section-block);
  --sec-lg:var(--ice-section-block-large);
  --sec-sm:var(--ice-section-block-compact);
  --r-s:var(--ice-radius-control);
  --r-m:var(--ice-radius-surface);
  --r-l:var(--ice-radius-surface);

  /* ── Brand colour aliases ─────────────────────────────────────
     site.css :root holds the authoritative values; these
     bridge them to the --ice-color-* naming for components. */
  --ice-color-navy:var(--navy);           /* #13234B */
  --ice-color-crimson:var(--crimson);     /* #C41E3A */
  --ice-color-terracotta:var(--terracotta);/* #D9702C */
  --ice-color-bg:var(--bg);              /* #FAF7F2 */
  --ice-color-ink:var(--ink);            /* #17181C */
  --ice-color-slate:var(--slate);        /* canonical muted foreground */
  --ice-color-hairline:var(--hairline);  /* #E7E1D6 */

}

@media(min-width:640px){
  :root{--ice-media-ratio-course-hero:1.047}
}

@media(min-width:1024px){
  :root{--ice-media-ratio-course-hero:1.034}
}

@media(min-width:1280px){
  :root{--ice-media-ratio-course-hero:1.024}
}

@media(prefers-reduced-motion:reduce){
  :root{
    --ice-duration-quick:1ms;
    --ice-duration-action:1ms;
  }
}

/* Foundation */
html{font-size:100%;text-size-adjust:100%}

body.page-course{
  font-family:var(--ice-font-primary);
  font-size:var(--ice-type-body-size);
  font-weight:var(--ice-type-body-weight);
  line-height:var(--ice-type-body-line);
  letter-spacing:var(--ice-type-body-track);
}

/* Form controls in the page body inherit the course type system. Header controls
   have their own compact UI roles and must retain those component declarations. */
body.page-course main :is(button,input,select,textarea){font:inherit}

/* …but the rule above only reaches `main` on the course family, and a control
   that inherits nothing does not fall back to the site face — it falls back to
   the UA default, which is Arial. That was every `.nav-caret` in the header on
   all 21 non-Kaamko routes, plus the inputs on /staff and the profile pages,
   silently rendering in a different typeface from the page around them.
   Family only, deliberately: `font: inherit` would also wipe the compact size
   and weight roles those header and panel controls set for themselves, which is
   what the note above is protecting.
   Scoped to `body.site-chrome` — BaseLayout emits it on every page and
   ToolsLayout never does, so Kaamko keeps its own chrome and its Devanagari and
   Preeti faces. AGENTS.md requires broad element selectors such as `input` and
   `button` be scoped away from `.page-tools`; this is that scoping. */
body.site-chrome :is(button,input,select,textarea,optgroup){font-family:inherit}

body.page-course :is(h1,h2,h3,h4,h5,h6),
body.site-chrome :is(.footer-lockup,.footer-stats,.stat,.course-stat,.course-facts) :is(b,strong){
  font-family:var(--ice-font-display);
}

/* Authoritative text hierarchy. */
body.page-course main h1{
  font-family:var(--ice-font-display)!important;
  font-size:var(--ice-type-h1-size)!important;
  font-weight:var(--ice-type-h1-weight)!important;
  line-height:var(--ice-type-h1-line)!important;
  letter-spacing:var(--ice-type-h1-track)!important;
  text-wrap:balance;
}

body.page-course main h2{
  font-family:var(--ice-font-display)!important;
  font-size:var(--ice-type-h2-size)!important;
  font-weight:var(--ice-type-h2-weight)!important;
  line-height:var(--ice-type-h2-line)!important;
  letter-spacing:var(--ice-type-h2-track)!important;
  text-wrap:balance;
}

body.page-course main h3{
  font-family:var(--ice-font-primary)!important;
  font-size:var(--ice-type-h3-size)!important;
  font-weight:var(--ice-type-h3-weight)!important;
  line-height:var(--ice-type-h3-line)!important;
  letter-spacing:var(--ice-type-h3-track)!important;
  text-wrap:pretty;
}

body.page-course main h4{
  font-family:var(--ice-font-primary)!important;
  font-size:var(--ice-type-h4-size)!important;
  font-weight:var(--ice-type-h4-weight)!important;
  line-height:var(--ice-type-h4-line)!important;
  letter-spacing:var(--ice-type-h4-track)!important;
}

body.page-course main :is(p,li,dd){
  font-family:var(--ice-font-primary)!important;
  font-size:var(--ice-type-body-size)!important;
  font-weight:var(--ice-type-body-weight)!important;
  line-height:var(--ice-type-body-line)!important;
  letter-spacing:var(--ice-type-body-track)!important;
}

/* Breadcrumbs are compact hero metadata, not body paragraphs. */
body.page-course main .page-hero .crumb{
  font-size:var(--ice-type-caption-size)!important;
  font-weight:500!important;
  line-height:var(--ice-type-caption-line)!important;
  letter-spacing:normal!important;
}

body.page-course main :is(.lede,.sub,.course-lede),
body.page-course main .course-section__heading>p:not(.course-kicker):not(.course-eyebrow):not(.label),
body.page-course main .course-apply__copy>p:not(.course-kicker):not(.course-eyebrow):not(.label){
  font-size:var(--ice-type-lede-size)!important;
  font-weight:var(--ice-type-lede-weight)!important;
  line-height:var(--ice-type-lede-line)!important;
  letter-spacing:var(--ice-type-lede-track)!important;
}

body.page-course :is(
  .label,.code,.dept,.date,.go,.course-kicker,.course-eyebrow,.course-breadcrumb,
  .course-facts dt,.course-intake span,.course-highlight span,.course-module__code,
  .footer-eyebrow,.footer-link-group h3
){
  font-family:var(--ice-font-primary)!important;
  font-size:var(--ice-type-label-size)!important;
  font-weight:var(--ice-type-label-weight)!important;
  line-height:var(--ice-type-label-line)!important;
  letter-spacing:var(--ice-type-label-track)!important;
}

body.page-course :is(figcaption,small,.fineprint,.source-note,.course-note,.footer-stats span,.foot-base){
  font-family:var(--ice-font-primary)!important;
  font-size:var(--ice-type-caption-size)!important;
  font-weight:var(--ice-type-caption-weight)!important;
  line-height:var(--ice-type-caption-line)!important;
  letter-spacing:var(--ice-type-caption-track)!important;
}

/* The footer half of the rule above, for every page rather than only the
   course family — the legal bar has to read the same everywhere the shared
   footer does. See the `body.site-chrome` note at the footer block below. */
body.site-chrome :is(.footer-stats span,.foot-base){
  font-family:var(--ice-font-primary)!important;
  font-size:var(--ice-type-caption-size)!important;
  font-weight:var(--ice-type-caption-weight)!important;
  line-height:var(--ice-type-caption-line)!important;
  letter-spacing:var(--ice-type-caption-track)!important;
}

body.page-course main :is(blockquote,.course-pull-quote){
  font-family:var(--ice-font-display)!important;
  font-size:var(--ice-type-quote-size)!important;
  font-weight:400!important;
  line-height:var(--ice-type-quote-line)!important;
  letter-spacing:var(--ice-type-h3-track)!important;
}

/* Short editorial pull-quote: display-scale, upright, action-colored. */
body.page-course main .course-pull-quote{
  font-size:var(--ice-type-quote-feature-size)!important;
  line-height:var(--ice-type-quote-feature-line)!important;
  font-style:normal!important;
  color:var(--ice-color-text-action);
}

/* Inquiry reuses the contact component as a normal themed section. Keep that
   meaning after the resequenced-page dark contact rules loaded earlier. */
body.page-inquiry main .contact-sec{
  background:var(--ice-color-canvas)!important;
  color:var(--ice-color-on-canvas)!important;
}
body.page-inquiry main .contact-sec .sec-head h2{color:var(--ice-color-on-canvas)!important}
body.page-inquiry main .contact-sec .sec-head>p:not(.label){color:var(--ice-color-text-muted)!important}
body.page-inquiry main .contact-sec .sec-head .label{color:var(--ice-color-text-accent)!important}

/* Contact and Digital Twin bands are fixed brand surfaces in both themes. */
body:not(.page-inquiry) main .contact-sec .sec-head .label,
body.page-inquiry main .twin-band .sec-head .label{
  color:var(--ice-color-text-accent-on-brand)!important;
}

/* Closing-band headline role: above H1, serif, shared by the course apply band
   and the sitewide CTA banner. */
body.page-course main :is(.course-apply h2,.cta-banner h3){
  font-family:var(--ice-font-display)!important;
  font-size:var(--ice-type-display-size)!important;
  font-weight:400!important;
  line-height:var(--ice-type-display-line)!important;
  letter-spacing:var(--ice-type-h1-track)!important;
  text-wrap:balance;
}

body.page-course main :is(.stat,.stat-card,.course-stat,.course-facts) :is(b,strong,dd){
  font-family:var(--ice-font-display)!important;
  font-size:var(--ice-type-stat-size)!important;
  font-weight:400!important;
  line-height:var(--ice-type-stat-line)!important;
  letter-spacing:var(--ice-type-h2-track)!important;
}

body.page-course main :is(button,input[type="submit"],input[type="button"]),
body.page-course :is(.btn,.course-action){
  font-family:var(--ice-font-primary)!important;
  font-size:var(--ice-type-button-size)!important;
  font-weight:var(--ice-type-button-weight)!important;
  line-height:var(--ice-type-button-line)!important;
  letter-spacing:var(--ice-type-button-track)!important;
}

body.page-course main :is(
  .article-body,.body-copy,.course-intro-copy,.course-promo__copy,.course-career__copy,
  .editorial-story__body,.seo-card,.scholar,.job,.contact-card,.course-section__heading,
  .sec-head,.course-apply__copy
) p:not(.label):not(.code):not(.course-kicker):not(.course-eyebrow){
  margin-block:0 var(--ice-paragraph-gap)!important;
}

body.page-course main :is(.article-body,.body-copy,.course-intro-copy,.course-promo__copy,.course-career__copy) :is(h2,h3,h4)+p{
  margin-top:var(--ice-heading-gap);
}

/* Rails, grids and alignment. */
body.page-course .wrap{
  width:min(100%,var(--ice-container));
  max-width:var(--ice-container);
  padding-inline:var(--ice-gutter);
}

body.page-course .wrap--wide{
  width:min(100%,var(--ice-container-wide));
  max-width:var(--ice-container-wide);
  padding-inline:var(--ice-gutter);
}

body.page-course .wrap--prose{
  width:min(100%,var(--ice-container-prose));
  max-width:var(--ice-container-prose);
  padding-inline:var(--ice-gutter);
}

body.page-course main :is(
  .split,.media-row,.two-col,.adm-grid,.article-layout,.about-grid,.course-hero__grid,
  .course-intro-grid,.faq-layout,.facility-layout,.course-promo__grid,.course-apply__grid,
  .career-heading,.course-career__grid,.related-courses__grid,.editorial-lead,.editorial-story-grid,
  .contact-grid,.cta-banner,.prog-grid
){
  column-gap:var(--ice-gap-grid-large)!important;
  row-gap:var(--ice-gap-grid)!important;
}

body.page-course main .course-section,
body.page-course main .related-courses,
body.page-resequenced main>section:not(.hero):not(.course-hero):not(.inq-hero):not(.statement):not(.career-band):not(.course-apply){
  padding-block:var(--ice-section-block)!important;
}

/* Same-canvas neighbours share one gap instead of stacking two full paddings. */
body.page-course main .course-section:not(.course-section--tint):not(.career-band)+.course-section:not(.course-section--tint):not(.career-band),
body.page-resequenced main>section:not(.band):not(.hero):not(.course-hero):not(.statement):not(.career-band):not(.course-apply):not(.contact-sec)+section:not(.band):not(.hero):not(.course-hero):not(.statement):not(.career-band):not(.course-apply):not(.contact-sec){
  padding-top:var(--ice-section-block-compact)!important;
}

body.page-course main :is(.course-promo,.course-career,.course-apply,.career-band,.statement,.contact-sec){
  padding-block:var(--ice-section-block-large)!important;
}

body.page-course main :is(.course-hero-quote,.course-highlights,.trust-strip){
  padding-block:var(--ice-section-block-compact)!important;
}

body.page-course main :is(.course-section__heading,.sec-head){
  margin-bottom:var(--ice-space-8);
}

/* Shared component geometry. */
body.page-course :is(.btn,.course-action){
  min-height:52px;
  padding:var(--ice-space-4) var(--ice-control-pad-inline);
  border-radius:var(--ice-radius-control);
  transition:
    color var(--ice-duration-fast) var(--ice-ease),
    background-color var(--ice-duration-fast) var(--ice-ease),
    border-color var(--ice-duration-fast) var(--ice-ease),
    transform var(--ice-duration-fast) var(--ice-ease);
}

body.page-course :is(input:not([type="checkbox"]):not([type="radio"]),select,textarea){
  min-height:var(--ice-control-min);
  padding:var(--ice-space-3) var(--ice-space-4);
  border:var(--ice-border);
  border-radius:var(--ice-radius-control);
  background:var(--ice-color-surface);
  color:var(--ice-color-text);
}

body.page-course main :is(.seo-card,.editorial-story,.fact-panel,.stat-card,.contact-card,.prog,.job){
  border-radius:var(--ice-radius-surface);
}

body.page-course main :is(.faq summary,.course-faq summary,button,a){
  text-underline-offset:.2em;
}

body.page-course main :is(.faq summary,.course-faq summary){
  min-height:var(--ice-control-min);
}

/* Institutional image system: one crop and caption language across course,
   editorial and long-form contexts. */
body.page-course main :is(.editorial-story,.article-media,.facility-photo) picture,
body.page-course main :is(.editorial-story,.article-media,.facility-photo) img{
  display:block;
  width:100%;
}

body.page-course main :is(.editorial-story,.article-media,.facility-photo) img{
  height:auto;
  aspect-ratio:4/3;
  object-fit:cover;
}

/* Unified photographic treatment: every content photograph shares one grade, and
   hero/closing media carry a subtle navy wash, so mixed sources read as one library. */
body.page-course main :is(.course-hero__media,.editorial-hero-media,.facility-photo,.article-media,.editorial-story,.prog-row__media,.course-apply__media) img,
body.page-course main img.prog-photo{
  filter:var(--ice-media-grade);
}

body.page-course main :is(.course-hero__media,.editorial-hero-media,.course-apply__media) picture{
  position:relative;
  display:block;
}

body.page-course main :is(.course-hero__media,.editorial-hero-media,.course-apply__media) picture::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    linear-gradient(160deg,rgba(14,22,71,.16),rgba(14,22,71,0) 46%),
    linear-gradient(0deg,rgba(4,9,36,.2),rgba(4,9,36,0) 36%);
}

body.page-course main .facility-gallery{
  display:grid;
  gap:var(--ice-space-6);
  min-width:0;
}

body.page-course main .article-media{
  margin:var(--ice-space-10) 0;
  border-bottom:var(--ice-border);
}

body.page-course main .article-media figcaption,
body.page-course main .facility-photo figcaption{
  padding:var(--ice-space-3) 0 var(--ice-space-4);
  color:var(--ice-color-text-muted);
}

body.page-course main .article-gallery{
  display:grid;
  gap:var(--ice-space-6);
  margin:var(--ice-space-10) 0;
}

body.page-course main .article-gallery .article-media{margin:0}

/* Phase 9.2 media architecture: responsive intake pictures, deliberate scale
   hierarchy, stable crops and one restrained institutional grade. */
body.page-course main .ice-picture{
  position:relative;
  display:block;
  width:100%;
  min-width:0;
  overflow:hidden;
  isolation:isolate;
  background:var(--navy-deep);
}

body.page-course main .ice-picture::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:var(--ice-media-wash);
}

body.page-course main .ice-picture img{
  display:block;
  width:100%;
  height:100%;
  min-height:0;
  object-fit:cover;
  object-position:var(--media-focus,50% 50%);
  filter:var(--ice-media-grade);
}

body.page-course main .media-role-hero{aspect-ratio:var(--ice-media-ratio-hero)}
body.page-course main .media-role-feature{aspect-ratio:var(--ice-media-ratio-feature)}
body.page-course main .media-role-card{aspect-ratio:var(--ice-media-ratio-card)}
body.page-course main .media-role-strip{aspect-ratio:var(--ice-media-ratio-strip)}
body.page-course main .media-role-detail{aspect-ratio:var(--ice-media-ratio-detail)}

body.page-course main :is(.course-hero__media,.editorial-hero-media,.course-apply__media) .ice-picture::after{
  background:var(--ice-media-wash);
}

body.page-course main .media-frame{
  min-width:0;
  margin:0;
  border-bottom:var(--ice-border);
}

body.page-course main .media-frame>figcaption{
  position:static;
  padding:var(--ice-space-3) var(--ice-space-4) var(--ice-space-4);
  border:0;
  background:var(--course-surface);
  color:var(--ice-color-text-muted);
  font-size:var(--ice-type-caption-size);
  line-height:var(--ice-type-caption-line);
}

body.page-course main :is(.course-hero__media,.course-apply__media).media-frame>figcaption{
  background:var(--course-surface);
}

body.page-course main .course-promo__media .ice-picture{
  aspect-ratio:var(--ice-media-ratio-strip);
}

body.page-course main .course-promo__media .ice-picture img{
  aspect-ratio:inherit;
}

body.page-course main .facility-gallery--mosaic{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--ice-space-5);
  align-items:start;
}

body.page-course main .facility-gallery--mosaic .facility-photo{margin:0}

body.page-course main .article-gallery--museum{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--ice-gap-grid);
}

body.page-course main .article-gallery--museum .article-media{
  margin:0;
  align-self:start;
}

body.page-course main .facility-evidence-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--ice-gap-grid);
  margin-top:var(--ice-space-8);
}

body.page-course main .facility-evidence{
  display:grid;
  grid-template-columns:minmax(112px,2fr) minmax(0,3fr);
  align-items:stretch;
  min-width:0;
  border-top:var(--ice-border-strong);
}

body.page-course main .facility-evidence .ice-picture{aspect-ratio:1}
body.page-course main .facility-evidence__copy{padding:var(--ice-space-4)}
body.page-course main .facility-evidence__copy h3{margin-bottom:var(--ice-space-2)}
body.page-course main .facility-evidence__copy p{margin:0;color:var(--ice-color-text-muted)}

/* The narrower 5fr hero copy cannot support four useful fact columns. A 2x2
   ledger keeps values such as “4 years” and “96 per intake” on one line. */
@media(min-width:1024px){
  body.page-course main .course-facts,
  body.page-resequenced main .page-hero .facts{
    grid-template-columns:minmax(0,2fr) minmax(0,3fr)!important;
    gap:var(--ice-space-4) 0!important;
  }

  body.page-course main .course-facts div,
  body.page-resequenced main .page-hero .facts>div{
    padding-left:var(--ice-space-4)!important;
    border-left:var(--ice-border)!important;
  }

  body.page-course main .course-facts div:nth-child(odd),
  body.page-resequenced main .page-hero .facts>div:nth-child(odd){
    padding-left:0!important;
    border-left:0!important;
  }

  body.page-course main .course-facts dd,
  body.page-resequenced main .page-hero .facts b{white-space:nowrap}
}

/* Footer: flat institutional field. Dense content is ordered into an
   intro, an open contact ledger, a directory and a quiet legal bar—no cards in cards.

   Scoped to `body.site-chrome`, which BaseLayout emits on every page, rather
   than to `body.page-course`. Until 2026-08-16 this composition only reached
   the course family, so /notices, /staff, the three degree pages and the six
   profile pages fell back to the older boxed-and-italic footer in
   site-20260716b.css — two different footers on one site, and the home page
   only had the good one because it happens to carry `page-course`. The class
   is deliberately not `page-course`: that class also drives heroes and
   typography those pages must not inherit. /tools is unaffected because
   ToolsLayout renders its own `.tfoot` and never sets this class. */
body.site-chrome .site-footer{
  color:var(--ice-color-on-surface-brand);
  background:var(--ice-color-surface-brand);
}

body.site-chrome .site-footer::before{
  height:4px;
  background:var(--ice-color-accent);
}

body.site-chrome .footer-shell,
body.site-chrome .foot-base__inner{
  width:min(100%,var(--ice-container));
  max-width:var(--ice-container);
  padding-inline:var(--ice-gutter);
}

body.site-chrome .footer-top{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--ice-space-6);
  padding-block:var(--ice-space-8);
  border-bottom:1px solid rgba(255,255,255,.22);
}

body.site-chrome .footer-brand{grid-row:auto}
body.site-chrome .footer-cta{grid-column:auto}

body.site-chrome .footer-brand__head{
  gap:var(--ice-space-4);
  margin-bottom:var(--ice-space-4);
}

body.site-chrome .footer-brand__mark{
  width:72px;
  height:72px;
  padding:0;
  border:1px solid rgba(255,255,255,.24);
  border-radius:50%;
  background:#fff;
  box-shadow:none;
}

body.site-chrome .footer-brand__mark img{
  width:100%;
  height:100%;
  padding:var(--ice-space-2);
  background:transparent;
}

body.site-chrome .footer-brand__rule{background:rgba(255,255,255,.28)}

body.site-chrome .footer-lockup>span:not(.chrome-val),
body.site-chrome .footer-lockup>small{
  color:rgba(255,255,255,.72);
  font-family:var(--ice-font-primary);
  font-size:var(--ice-type-caption-size);
  font-weight:700;
  letter-spacing:.1em;
}body.site-chrome .footer-lockup>strong,body.site-chrome .footer-lockup>.chrome-val{
  color:#fff;
  font-family:var(--ice-font-display);
  font-size:clamp(1.5rem,1.38rem + .55vw,1.875rem);
  font-style:normal;
  font-weight:400;
  line-height:1.08;
}

body.site-chrome .footer-lockup>small{
  margin-top:var(--ice-space-1);
  color:var(--ice-color-accent);
}

body.site-chrome .footer-brand h2{
  max-width:20ch;
  margin-bottom:var(--ice-space-4);
  color:#fff;
  font-family:var(--ice-font-display);
  font-size:clamp(2rem,1.66rem + 1.5vw,3rem);
  font-weight:400;
  line-height:1.15;
  letter-spacing:-.012em;
}

body.site-chrome .footer-brand>p{
  max-width:62ch;
  color:rgba(255,255,255,.76);
  font-size:var(--ice-type-body-size);
  line-height:var(--ice-type-body-line);
}

body.site-chrome .footer-brand__proof{
  display:flex;
  flex-wrap:wrap;
  gap:var(--ice-space-2) var(--ice-space-6);
  margin-top:var(--ice-space-6);
  padding:0;
  list-style:none;
}

body.site-chrome .footer-brand__proof li{
  color:rgba(255,255,255,.78);
  font-size:var(--ice-type-caption-size);
  line-height:var(--ice-type-caption-line);
}

body.site-chrome .footer-brand__proof li::before{
  content:"";
  display:inline-block;
  width:8px;
  height:8px;
  margin-right:var(--ice-space-2);
  background:var(--ice-color-accent);
}

body.site-chrome .footer-cta{
  align-self:start;
  padding:var(--ice-space-8);
  border:0;
  border-radius:0;
  background:var(--ice-palette-navy-800);
}

body.site-chrome .footer-cta .label{
  margin-bottom:var(--ice-space-3);
  color:var(--ice-color-accent);
}

body.site-chrome .footer-cta h3{
  max-width:22ch;
  margin-bottom:var(--ice-space-6);
  color:#fff;
  font-family:var(--ice-font-display);
  font-size:clamp(1.5rem,1.35rem + .65vw,1.875rem);
  font-style:normal;
  font-weight:400;
  line-height:1.18;
}

body.site-chrome .footer-cta__actions{gap:var(--ice-space-3)}

body.site-chrome .footer-cta .btn-primary{
  background:var(--ice-color-action);
  color:var(--ice-color-on-action);
}

body.site-chrome .footer-secondary{
  min-height:52px;
  padding:var(--ice-space-4) var(--ice-space-6);
  border:1px solid rgba(255,255,255,.55);
  border-radius:var(--ice-radius-control);
  color:#fff;
  font-family:var(--ice-font-primary);
  font-size:var(--ice-type-button-size);
  font-weight:700;
  letter-spacing:var(--ice-type-button-track);
}

body.site-chrome .footer-contact{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0;
  padding:0;
  border-bottom:1px solid rgba(255,255,255,.22);
}

body.site-chrome .footer-contact-card{
  grid-template-columns:36px minmax(0,1fr);
  gap:var(--ice-space-3);
  min-height:64px;
  padding:var(--ice-space-4) var(--ice-space-3);
  border:0;
  border-bottom:1px solid rgba(255,255,255,.16);
  border-radius:0;
  background:transparent;
}

body.site-chrome .footer-contact-card:last-child{border-bottom:0}
body.site-chrome .footer-contact-card:nth-child(odd){
  padding-left:0;
  padding-right:var(--ice-space-4);
  border-right:1px solid rgba(255,255,255,.16);
}
body.site-chrome .footer-contact-card:nth-child(even){padding-left:var(--ice-space-4)}
body.site-chrome .footer-contact-card--primary{background:transparent}
body.site-chrome .footer-contact-card:hover{background:rgba(255,255,255,.06)}
body.site-chrome .footer-icon{color:var(--ice-color-accent)}

body.site-chrome .footer-contact-card small{
  color:rgba(255,255,255,.64);
  font-size:var(--ice-type-caption-size);
  letter-spacing:.1em;
}body.site-chrome .footer-contact-card b,body.site-chrome .footer-contact-card .chrome-val{
  overflow:visible;
  color:#fff;
  font-size:var(--ice-type-body-size);
  font-weight:600;
  line-height:1.35;
  text-overflow:clip;
  white-space:normal;
}

body.site-chrome .footer-directory{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--ice-space-6);
  padding-block:var(--ice-space-8);
  border-bottom:0;
}

body.page-course.page-careers #why .chip-grid{margin-top:var(--ice-space-10)}

body.site-chrome .footer-link-groups{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--ice-space-6) var(--ice-space-5);
}

body.site-chrome .footer-link-group h3{
  margin-bottom:var(--ice-space-3);
  color:var(--ice-color-accent);
}

body.site-chrome .footer-link-group a{
  min-height:36px;
  color:rgba(255,255,255,.8);
  font-size:var(--ice-type-body-size);
}

/* Sixteen of these sit in a two-column stack on a phone, where a thumb — not a
   cursor — is picking between adjacent rows. 36px is the desktop figure and it
   stays there; below 760px they take the coarse-pointer floor. */
@media(max-width:759px){
  body.site-chrome .footer-link-group a{min-height:44px}
}

body.site-chrome .footer-affiliation{
  align-items:flex-start;
  gap:var(--ice-space-4);
  padding:var(--ice-space-6) 0 0;
  border:0;
  border-top:1px solid rgba(255,255,255,.22);
  border-radius:0;
  background:transparent;
}

body.site-chrome .footer-affiliation img{width:48px}
body.site-chrome .footer-eyebrow{color:var(--ice-color-accent)}body.site-chrome .footer-affiliation strong,body.site-chrome .footer-affiliation .chrome-val{
  color:#fff;
  font-family:var(--ice-font-display);
  font-size:clamp(1.25rem,1.16rem + .37vw,1.5rem);
  font-weight:400;
}

body.site-chrome .footer-affiliation p{
  color:rgba(255,255,255,.72);
  font-size:var(--ice-type-caption-size);
}

body.site-chrome .foot-base{
  background:#020516;
  color:rgba(255,255,255,.64);
}

body.site-chrome .foot-base__inner{
  gap:var(--ice-space-4) var(--ice-space-8);
  padding-block:var(--ice-space-4);
}

body.site-chrome .footer-social>span{color:var(--ice-color-accent)}
body.site-chrome .footer-social a{border-radius:50%}
body.site-chrome .footer-social a:hover{background:var(--ice-palette-navy-800)}

/* Responsive contract: one column first, two-column editorial layouts at tablet,
   full institutional grids only when there is enough physical width. */
@media(max-width:767px){
  :root{
    --ice-gutter:var(--ice-space-5);
    --ice-section-block:var(--ice-space-12);
    --ice-section-block-compact:var(--ice-space-8);
    --ice-section-block-large:var(--ice-space-14);
  }

  body.page-course main :is(.course-hero__grid,.course-intro-grid,.faq-layout,.facility-layout,.course-promo__grid,.course-apply__grid,.article-layout,.editorial-lead,.cta-banner){
    grid-template-columns:minmax(0,1fr)!important;
  }
}

@media(min-width:768px){
  :root{--ice-gutter:clamp(var(--ice-space-8),4vw,var(--ice-space-12))}

  body.page-course main .article-gallery{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  body.page-course main .facility-gallery--mosaic{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  body.page-course main .facility-gallery--mosaic>.media-feature{
    grid-column:1/-1;
  }

  body.page-course main .article-gallery--museum{
    grid-template-columns:minmax(0,7fr) minmax(0,5fr);
  }

  body.page-course main .article-gallery--museum>.media-feature{
    grid-column:1/-1;
  }

  body.page-course main .article-gallery--museum>.media-feature .ice-picture{
    aspect-ratio:var(--ice-media-ratio-feature);
  }

  body.page-course main .facility-evidence-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  body.site-chrome .footer-contact{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  body.site-chrome .footer-contact-card:nth-child(odd){
    padding-right:var(--ice-space-6);
    border-right:1px solid rgba(255,255,255,.16);
  }

  body.site-chrome .footer-contact-card:nth-child(even){padding-left:var(--ice-space-6)}

  body.site-chrome .footer-link-groups{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media(min-width:1024px){
  :root{--ice-gutter:clamp(var(--ice-space-10),4vw,var(--ice-space-14))}

  body.page-course main :is(.course-section__heading,.sec-head){
    margin-bottom:var(--ice-space-10);
  }

  /* Media-dominant hero: the photograph takes the wider column and bleeds to the
     viewport edge; the caption text indents back to the container line. */
  body.page-course main .course-hero__grid{
    grid-template-columns:minmax(0,7fr) minmax(0,5fr);
  }

  body.page-resequenced main .page-hero-grid:has(.editorial-hero-media){
    grid-template-columns:minmax(0,7fr) minmax(0,5fr);
  }

  body.page-course main :is(.course-hero__media,.editorial-hero-media){
    --ice-hero-bleed:calc(max((100vw - var(--ice-container)) / 2,0px) + var(--ice-gutter));
    margin-left:calc(-1 * var(--ice-hero-bleed));
  }

  body.page-course main :is(.course-hero__media,.editorial-hero-media) figcaption{
    padding-left:var(--ice-hero-bleed);
  }

  body.page-course .photo-essay .article-gallery{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }

  body.page-course .photo-essay .article-gallery--museum{
    grid-template-columns:minmax(0,7fr) minmax(0,5fr);
  }

  body.page-course main .editorial-story-grid--museum{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:var(--ice-gap-grid)!important;
    border-top:0;
  }

  body.page-course main .editorial-story-grid--museum>.editorial-story:first-child{
    grid-column:1/-1;
    display:grid;
    grid-template-columns:minmax(0,7fr) minmax(0,5fr);
    align-items:stretch;
    padding:0;
  }

  body.page-course main .editorial-story-grid--museum>.editorial-story:first-child .ice-picture{
    aspect-ratio:var(--ice-media-ratio-feature);
  }

  body.page-course main .editorial-story-grid--museum>.editorial-story:first-child .editorial-story__body{
    justify-content:center;
    padding:var(--ice-space-8);
  }

  body.page-course main .facility-evidence-grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }

  body.site-chrome .footer-top{
    grid-template-columns:minmax(0,7fr) minmax(320px,5fr);
    align-items:end;
    gap:var(--ice-gap-grid-large);
    padding-block:var(--ice-space-10);
  }

  body.site-chrome .footer-contact{
    grid-template-columns:repeat(4,minmax(0,1fr));
  }

  body.site-chrome .footer-contact-card,
  body.site-chrome .footer-contact-card:nth-child(odd),
  body.site-chrome .footer-contact-card:nth-child(even){
    padding:var(--ice-space-4);
    border-right:1px solid rgba(255,255,255,.16);
    border-bottom:0;
  }

  body.site-chrome .footer-contact-card:first-child{padding-left:0}
  body.site-chrome .footer-contact-card:last-child{padding-right:0;border-right:0}

  body.site-chrome .footer-directory{
    grid-template-columns:minmax(0,1fr) 300px;
    align-items:start;
    gap:var(--ice-gap-grid-large);
    padding-block:var(--ice-space-10);
  }

  /* Five since 2026-09-03, when the answer library got its own column. The
     fifth is narrower than four were, and the category labels wrap to two
     lines inside it; that is the trade for having the nine hubs reachable from
     the bottom of every page instead of only from /answers. */
  body.site-chrome .footer-link-groups{
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:var(--ice-space-6) var(--ice-space-5);
  }

  /* Hairline, not a 4px accent slab. Every other rule in this footer separates
     with a 1px white-alpha line (see .footer-brand, .footer-contact-card); the
     thick coloured edge was the one exception and it read as a callout on a
     block that is only a column divider. Owner approved the reduction
     2026-08-17, alongside the same change on /notices. */
  body.site-chrome .footer-affiliation{
    padding:0 0 0 var(--ice-space-6);
    border-top:0;
    border-left:1px solid rgba(255,255,255,.22);
  }
}

@media(prefers-reduced-motion:reduce){
  :root{
    --ice-duration-fast:1ms;
    --ice-duration-standard:1ms;
  }
}

/* Homepage layout pass (owner-directed, 2026-07-13). Scoped to body.page-home only:
   other routes keep the shared root tokens above. Token-level override so every
   section rule that consumes the section-block tokens resolves to the tighter
   homepage rhythm — 40–80px between major sections at desktop. */
body.page-home{
  --ice-section-block:clamp(var(--ice-space-7),2.75vw,var(--ice-space-10));
  --ice-section-block-compact:clamp(var(--ice-space-5),2vw,var(--ice-space-7));
  --ice-section-block-large:clamp(var(--ice-space-9),3.25vw,var(--ice-space-12));
}

/* Homepage rail: section fields already bleed edge-to-edge; the inner content
   rail now spans the full viewport (gutter only) to match the full-width site. */
body.page-home main .wrap{
  width:100%;
  max-width:var(--ice-container-wide);
}

/* The apply CTA owns full-bleed spacing; its paired color role is declared below. */
body.page-home main #apply-cta{
  padding-block:var(--ice-section-block-large)!important;
}

body.page-home main #apply-cta .cta-banner{
  padding:0;
}

body.page-home main #apply-cta .cta-banner h3{
  max-width:26ch;
}

/* The homepage closing CTA owns one ICE accent pair in both themes. */
body.page-home main section#apply-cta,
body.page-home main section#apply-cta .cta-banner{
  background:var(--ice-color-accent)!important;
  color:var(--ice-color-on-accent)!important;
}

body.page-home main section#apply-cta .cta-banner{
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:var(--ice-space-fluid-48-80) var(--ice-gutter)!important;
}

body.page-home main section#apply-cta>.wrap{
  width:100%!important;
  max-width:none!important;
  padding-inline:0!important;
}

body.page-home main #apply-cta .cta-banner h3,
body.page-home main #apply-cta .cta-banner p{
  color:var(--ice-color-on-accent)!important;
}

body.page-home main #apply-cta .cta-banner .btn-ghost{
  border-color:var(--ice-color-on-accent)!important;
  color:var(--ice-color-on-accent)!important;
  background:transparent!important;
}

body.page-home main #apply-cta .cta-banner .btn-ghost:hover{
  background:var(--ice-color-on-accent)!important;
  border-color:var(--ice-color-on-accent)!important;
  color:var(--ice-color-accent)!important;
}

/* Homepage program cards (owner-directed, 2026-07-13): the resequenced media-list
   rows become a hairline card grid — 3 columns desktop / 2 tablet / 1 mobile,
   photo on top at 16:9, quiet 1px border for definition, shadow only as part of
   the hover lift. Scoped to body.page-home; the courses index and admissions
   program treatments are untouched. */
body.page-home main .prog-grid{
  grid-template-columns:minmax(0,1fr);
  gap:var(--ice-gap-grid);
  border-top:0;
}

@media(min-width:640px){
  body.page-home main .prog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* Third card spans the row instead of leaving an empty cell next to it
     — a 2-column grid can't hold 3 items evenly. */
  body.page-home main .prog-grid > :nth-child(3){grid-column:1/-1}
}

@media(min-width:1024px){
  body.page-home main .prog-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  body.page-home main .prog-grid > :nth-child(3){grid-column:auto}
}

body.page-home main .prog{
  display:flex;
  flex-direction:column;
  gap:0;
  padding:0;
  overflow:hidden;
  background:var(--card);
  border:1px solid var(--hairline);
  border-radius:var(--ice-radius-surface);
  box-shadow:none;
  transition:
    transform .35s cubic-bezier(.25,.46,.45,.94),
    box-shadow .35s cubic-bezier(.25,.46,.45,.94),
    border-color .35s cubic-bezier(.25,.46,.45,.94);
}

body.page-home main .prog:hover,
body.page-home main .prog:focus-visible{
  background:var(--card);
  transform:translateY(-8px) scale(1.02);
  border-color:color-mix(in srgb,var(--slate) 40%,var(--hairline));
  box-shadow:
    0 24px 48px -12px rgba(19,35,75,.18),
    0 8px 18px -8px rgba(19,35,75,.10);
}

body.page-home main .prog .ice-picture{
  aspect-ratio:16/9;
  width:100%;
}

body.page-home main .prog .prog-photo{
  width:100%;
  height:100%;
  aspect-ratio:16/9;
  object-fit:cover;
}

body.page-home main .prog-body{
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  padding:var(--ice-space-6);
}

/* Equal-height rows: only the description stretches; badge, stats and the CTA
   line keep their natural height so metas align across the row. */
body.page-home main .prog-body p{flex:0 0 auto}
body.page-home main .prog-body>p:not(.code):not(.go){flex:1 1 auto}

@media(prefers-reduced-motion:reduce){
  body.page-home main .prog{transition-duration:1ms}
  body.page-home main .prog:hover,
  body.page-home main .prog:focus-visible{transform:none}
}

/* 2026-08-09 image-led homepage: the hero is now a project-owned still rather
   than an old video poster. Copy occupies the intentionally quiet left side;
   the diverse student group remains unobstructed on the right. */
body.page-home .hero{
  min-height:min(780px,calc(100dvh - var(--tu-bar-h)));
  padding-block:calc(var(--nav-h) + clamp(36px,6vh,76px)) clamp(28px,5vh,52px);
}

body.page-home .hero-video,
body.page-home .hero-video .home-hero-picture{
  position:absolute;
  inset:0;
  display:block;
}

body.page-home .hero-video .home-hero-picture img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:68% 50%;
  filter:saturate(.78) contrast(1.04) brightness(.9);
}

body.page-home .hero-video::after{
  background:
    linear-gradient(90deg,rgba(3,10,26,.93) 0%,rgba(4,14,33,.77) 38%,rgba(4,14,33,.18) 67%,rgba(3,10,26,.32) 100%),
    linear-gradient(180deg,rgba(4,12,29,.2),rgba(3,9,23,.68));
}

@media(min-width:760px){
  body.page-home .hero-grid{align-items:flex-start;justify-content:center}
  body.page-home .hero-content{align-items:flex-start;max-width:min(650px,52vw);text-align:left;margin-right:auto}
  body.page-home .study-copy,
  body.page-home .study-lead{align-items:flex-start}
  body.page-home .study-dynamic{justify-content:flex-start}
  body.page-home .hero-divider{justify-content:flex-start;margin-left:0}
  body.page-home .hero-content .cta-row{justify-content:flex-start}
  body.page-home .hero-highlights{max-width:900px;margin-top:auto}
}

@media(max-width:759px){
  body.page-home .hero{min-height:720px;padding-top:calc(var(--nav-h) + 36px)}
  body.page-home .hero-video .home-hero-picture img{object-position:66% 50%}
  body.page-home .hero-video::after{
    background:linear-gradient(180deg,rgba(3,10,26,.5),rgba(3,10,26,.88) 54%,rgba(3,9,23,.97));
  }
}

/* Images carry the homepage rhythm. Text panels stay compact and the visual
   area grows, while each section retains a different composition family. */
body.page-home main .prog .ice-picture{aspect-ratio:16/9}
body.page-home main .prog .prog-photo{aspect-ratio:16/9}
body.page-home main .prog-body{padding:clamp(var(--ice-space-4),2vw,var(--ice-space-6))}
body.page-home main .article-gallery--museum .ice-picture,
body.page-home main .media-row .media-frame .ice-picture{min-height:clamp(280px,36vw,560px)}
body.page-home main .facility-evidence .ice-picture{aspect-ratio:4/3}

/* Mobile homepage collections: preserve every label and description while
   turning long one-column runs into compact, scannable two-column groups. */
@media(max-width:600px){
  body.page-home main .usp-flow{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
    margin-top:26px;
  }
  body.page-home main .usp-step{
    min-width:0;
    padding:14px 12px 16px;
    border-radius:10px;
  }
  body.page-home main .usp-step__n{
    width:30px;
    height:30px;
    margin-bottom:9px;
    border-radius:8px;
    font-size:.72rem;
  }
  body.page-home main .usp-step b{font-size:1.05rem}
  body.page-home main .usp-step small{
    margin-top:5px;
    font-size:.73rem;
    line-height:1.38;
  }

  body.page-home main .adm-grid>div:nth-child(2){
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
  }
  body.page-home main .adm-grid .scholar,
  body.page-home main .adm-grid .scholar+.scholar{
    min-width:0;
    margin:0;
    padding:16px 13px;
  }
  body.page-home main .adm-grid .scholar h3{
    font-size:1rem;
    line-height:1.2;
  }
  body.page-home main .adm-grid .scholar p{
    font-size:.76rem;
    line-height:1.5;
    overflow-wrap:anywhere;
  }
  body.page-home main .home-admission-side-media{grid-column:1/-1}

  body.page-home main .fac-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:0 12px;
  }
  body.page-home main .fac{
    min-width:0;
    gap:8px;
    padding:13px 0;
  }
  body.page-home main .fac svg{
    width:19px;
    height:19px;
  }
  body.page-home main .fac b{font-size:.92rem}
  body.page-home main .fac span{
    font-size:.71rem;
    line-height:1.42;
  }

  body.page-home main .facility-evidence-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:14px 10px;
  }
  body.page-home main .facility-evidence{
    display:block;
    min-width:0;
  }
  body.page-home main .facility-evidence .ice-picture{aspect-ratio:4/3}
  body.page-home main .facility-evidence__copy{padding:10px 2px 0}
  body.page-home main .facility-evidence__copy h3{
    margin-bottom:4px;
    font-size:.94rem;
  }
  body.page-home main .facility-evidence__copy p{
    font-size:.72rem;
    line-height:1.42;
  }

  body.page-home main .career-band .highlights{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:0 12px;
  }
  body.page-home main .career-band .highlights li{
    display:grid;
    grid-template-columns:18px minmax(0,1fr);
    gap:7px;
    min-width:0;
    padding-block:14px;
    font-size:.72rem;
    line-height:1.45;
  }
  body.page-home main .career-band .highlights li::before{
    width:16px;
    height:16px;
    margin-top:1px;
  }
  body.page-home main .career-band .highlights li b{
    grid-column:2;
    font-size:.82rem;
  }
}

@media(prefers-reduced-motion:no-preference){
  body.page-home main :is(.prog,.media-frame,.facility-evidence) img{
    transition:transform .8s cubic-bezier(.16,1,.3,1),filter .6s ease;
  }
  body.page-home main :is(.prog,.media-frame,.facility-evidence):hover img{
    transform:scale(1.035);
  }
}

/* Programs are a visual choice, not another sidebar-and-text block. Keep the
   introduction compact above three properly sized course cards so every image
   has enough width to read at a glance. */
@media(min-width:1080px){
  body.page-home main #programs>.wrap{
    display:block;
  }
  body.page-home main #programs>.wrap>.course-section__heading{
    position:static;
    max-width:62rem;
    margin:0 0 clamp(30px,4vw,52px);
  }
  body.page-home main #programs>.wrap>.course-section__heading h2{
    max-width:18ch;
    font-size:clamp(2.35rem,3.4vw,4.15rem);
    line-height:1.02;
  }
  body.page-home main #programs>.wrap>.course-section__heading>p:last-child{
    max-width:68ch;
  }
  body.page-home main #programs>.wrap>.prog-grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
}

@media(max-width:639px){
  body.page-home main #programs .prog-grid{gap:var(--ice-space-4)}
  body.page-home main #programs .prog-body{padding:var(--ice-space-4)}
  body.page-home main #programs .prog h3{font-size:clamp(1.35rem,7vw,1.8rem)}
  body.page-home main #programs .prog-body>p:not(.code):not(.go){font-size:.92rem;line-height:1.52}
  body.page-home main #programs .prog .meta{margin-top:var(--ice-space-3);padding-top:var(--ice-space-3)}
}

/* Homepage evidence rhythm: images now sit beside the claim they support.
   The late campus galleries stay compact and no longer carry the whole page. */
.home-evidence-triptych{
  display:grid;grid-template-columns:1.45fr .8fr .8fr;gap:clamp(10px,1.4vw,18px);
  margin:clamp(30px,5vw,60px) 0;
}
.home-evidence-triptych figure,.home-admission-media{margin:0;overflow:hidden}
.home-evidence-triptych .ice-picture{display:block;height:clamp(260px,33vw,470px)}
.home-evidence-triptych figure:not(:first-child) .ice-picture{height:clamp(220px,27vw,390px)}
.home-evidence-triptych img,.home-admission-media img,.home-statement-media img,.home-life-row img{
  width:100%;height:100%;object-fit:cover;object-position:var(--media-focus,50% 50%);
}
.home-evidence-triptych figcaption,.home-admission-media figcaption{
  padding:10px 2px 0;font-size:.86rem;line-height:1.4;color:var(--ice-color-text-muted);
}
.usp-band .home-evidence-triptych figcaption{color:rgba(255,255,255,.72)}
.home-admission-media{margin-bottom:clamp(22px,3vw,34px)}
.home-admission-media .ice-picture{display:block;aspect-ratio:16/8.5}
.home-admission-side-media{margin:clamp(20px,3vw,32px) 0 0}
.home-admission-side-media .ice-picture{display:block;aspect-ratio:16/9;overflow:hidden}
.home-admission-side-media img{width:100%;height:100%;object-fit:cover;object-position:var(--media-focus,50% 50%)}
.home-admission-side-media figcaption{padding-top:9px;color:var(--ice-color-text-muted);font-size:.84rem}
.home-statement-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);gap:clamp(28px,5vw,72px);align-items:center}
.home-statement-media{display:block;min-height:clamp(280px,36vw,480px);overflow:hidden}
.home-life-row{display:grid;grid-template-columns:1.25fr .75fr .75fr;gap:clamp(12px,1.6vw,22px);align-items:start}
.home-life-row .media-frame{margin:0}
.home-life-row .ice-picture{display:block;aspect-ratio:4/3}
.home-life-row .media-feature .ice-picture{aspect-ratio:4/3}
.home-practice-media-stack{display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,1.5vw,22px);align-content:start}
.home-practice-media-stack figure{margin:0}
.home-practice-media-stack figure:first-child{grid-column:1/-1;grid-row:auto}
body.page-home main #practical-learning .home-practice-media-stack .ice-picture{display:block;height:auto;min-height:0;aspect-ratio:4/3}
body.page-home main #practical-learning .home-practice-media-stack figure:first-child .ice-picture{min-height:0;aspect-ratio:16/9}
.home-practice-media-stack img{width:100%;height:100%;object-fit:cover;object-position:var(--media-focus,50% 50%)}

/* Practical learning is one editorial story, not a vertical contact sheet. */
body.page-home main #practical-learning .media-row{align-items:center}
body.page-home main #practical-learning .media-frame{height:auto}
body.page-home main #practical-learning .media-frame__glass{
  display:block;min-height:0;padding:0;border-radius:14px;
  background:transparent;box-shadow:0 18px 42px rgba(3,9,26,.3);
  -webkit-backdrop-filter:none;backdrop-filter:none;
}
body.page-home main #practical-learning .media-frame__glass .ice-picture{aspect-ratio:16/9}

@media(min-width:1024px){
  body.page-home main #practical-learning .media-row{grid-template-columns:minmax(0,7fr) minmax(360px,5fr);gap:clamp(48px,5vw,84px)}
  body.page-home main #practical-learning{padding-block:clamp(72px,7vw,112px)}
}

@media(max-width:767px){
  .home-evidence-triptych,.home-life-row{
    display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;
    margin-inline:-18px;padding:0 18px 8px;scrollbar-width:none;
  }
  .home-evidence-triptych::-webkit-scrollbar,.home-life-row::-webkit-scrollbar{display:none}
  .home-evidence-triptych figure,.home-life-row figure{flex:0 0:min(82vw,360px);scroll-snap-align:start}
  .home-evidence-triptych .ice-picture,.home-evidence-triptych figure:not(:first-child) .ice-picture{height:330px}
  .home-statement-grid{grid-template-columns:1fr}
  .home-statement-media{min-height:320px}
  .home-practice-media-stack{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;margin-inline:-18px;padding:0 18px 8px}
  .home-practice-media-stack figure{flex:0 0:min(82vw,360px);scroll-snap-align:start}
  body.page-home main #practical-learning .home-practice-media-stack .ice-picture,
  body.page-home main #practical-learning .home-practice-media-stack figure:first-child .ice-picture{min-height:0;aspect-ratio:4/3}
}

/* Admission welcome is a light-paper overlay embedded in the homepage markup.
   Keep the page-wide course hierarchy from changing its compact, light-surface
   typography; the overlay owns its responsive type roles. */

/* ══ THE SIGNED-IN DESKS OPT INTO MANROPE ═══════════════════════════════════
 *
 * /staff and /staff/calls, both of which carry bodyClass="page-dashboard".
 * Owner instruction 2026-08-25: the face goes on the portal and the staff
 * panel, and nowhere else — the marketing site keeps the system stack, because
 * changing it there would re-render every owner-approved visual baseline.
 *
 * All seven intermediates are re-declared, not just the primary. A custom
 * property substitutes WHERE IT IS DECLARED: these are declared on :root in
 * terms of --ice-font-primary, so they compute against :root's Apple stack and
 * inherit down already resolved. Overriding the primary alone re-points body
 * text and leaves every heading on Segoe UI — measured on the portal before
 * this list existed. docs/04 §1.
 */
body.page-dashboard{
  --ice-font-primary:'Manrope',-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue",Arial,sans-serif;
  --ice-font-display:var(--ice-font-primary);
  --sans:var(--ice-font-primary);
  --display:var(--ice-font-primary);
  --ds-display:var(--ice-font-primary);
  --ds-body:var(--ice-font-primary);
  --ds-mono:var(--ice-font-primary);
  --course-display:var(--ice-font-primary);
  font-family:var(--ice-font-primary);
}
