/*
 * ICE Design System
 * Brand-aligned system: fonts §03, palette §02.
 *
 * Font: System SF Pro stack — zero licensing overhead, native rendering
 * on every platform. No custom @font-face required.
 *
 * Colour: Tokens defined in site.css :root. This file aliases them
 * through --ice-* names for component use.
 */

: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:Georgia,"Times New Roman",ui-serif,serif;  /* Display serif for headlines */

  /* 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;

  /* 4px-derived spacing scale. */
  --ice-space-0:0;
  --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;

  /* 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));

  /* 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-grade:saturate(.76) contrast(1.08) brightness(.98);
  --ice-media-wash:linear-gradient(145deg,rgba(8,27,53,.11),rgba(8,27,53,.02) 58%,rgba(198,255,50,.035));

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

  /* Semantic colors retain the verified light/dark palette. */
  --ice-color-primary:var(--navy-deep);
  --ice-color-action:var(--crimson);
  --ice-color-accent:var(--terracotta-soft);
  --ice-color-canvas:var(--bg);
  --ice-color-surface:var(--card);
  --ice-color-surface-muted:var(--band-bg);
  --ice-color-text:var(--ink);
  --ice-color-text-muted:var(--slate);
  --ice-color-border:var(--hairline);

  /* 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-primary);
  --ice-control-min:48px;
  --ice-control-pad-inline:var(--ice-space-6);
  --ice-shadow-surface:0 12px 32px rgba(4,9,36,.1);
  --ice-duration-fast:160ms;
  --ice-duration-standard:240ms;
  --ice-ease:cubic-bezier(.2,.7,.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);        /* #6B6F76 */
  --ice-color-hairline:var(--hairline);  /* #E7E1D6 */

  --hs-font-sans:var(--ice-font-primary);
  --hs-font-display:var(--ice-font-display);
  --hs-display-h1-size:var(--ice-type-h1-size);
  --hs-display-h1-line:var(--ice-type-h1-line);
  --hs-display-h1-track:var(--ice-type-h1-track);
  --hs-feature-h2-size:var(--ice-type-h2-size);
  --hs-feature-h2-line:var(--ice-type-h2-line);
  --hs-feature-h2-track:var(--ice-type-h2-track);
  --hs-section-h2-size:var(--ice-type-h2-size);
  --hs-section-h2-line:var(--ice-type-h2-line);
  --hs-section-h3-size:var(--ice-type-h3-size);
  --hs-section-h3-line:var(--ice-type-h3-line);
  --hs-card-h4-size:var(--ice-type-h4-size);
  --hs-card-h4-line:var(--ice-type-h4-line);
  --hs-body-size:var(--ice-type-body-size);
  --hs-body-line:var(--ice-type-body-line);
  --hs-lede-size:var(--ice-type-lede-size);
  --hs-lede-line:var(--ice-type-lede-line);
  --hs-small-size:var(--ice-type-caption-size);
  --hs-small-line:var(--ice-type-caption-line);
  --hs-eyebrow-size:var(--ice-type-label-size);
  --hs-eyebrow-line:var(--ice-type-label-line);
  --hs-eyebrow-track:var(--ice-type-label-track);
  --hs-breadcrumb-size:var(--ice-type-caption-size);
  --hs-breadcrumb-line:var(--ice-type-caption-line);
  --hs-button-size:var(--ice-type-button-size);
  --hs-button-line:var(--ice-type-button-line);
  --hs-button-track:var(--ice-type-button-track);
  --hs-meta-size:var(--ice-type-caption-size);
  --hs-compact-size:var(--ice-type-body-size);
  --hs-pull-quote-size:var(--ice-type-quote-size);
  --hs-pull-quote-line:var(--ice-type-quote-line);
  --hs-stat-size:var(--ice-type-stat-size);
  --hs-stat-line:var(--ice-type-stat-line);
  --hs-program-title-size:var(--ice-type-h3-size);
  --hs-program-title-line:var(--ice-type-h3-line);
  --hs-related-title-size:var(--ice-type-h4-size);
  --hs-related-title-line:var(--ice-type-h4-line);

  --hs-measure-prose:var(--ice-container-prose);
  --hs-measure-prose-wide:var(--ice-container-prose);
  --hs-measure-lede:60ch;
  --hs-measure-h1:16ch;
  --hs-measure-heading:900px;
  --hs-canvas:var(--ice-container);
  --hs-canvas-wide:var(--ice-container-wide);
  --hs-gap-grid:var(--ice-gap-grid);
  --hs-gap-editorial:var(--ice-gap-grid-large);
  --hs-gap-hero:var(--ice-gap-grid-large);
  --hs-gap-card:var(--ice-space-4);
  --hs-gap-card-inner:var(--ice-space-5);
  --hs-gap-prose:var(--ice-paragraph-gap);
  --hs-control-min:44px;
  --hs-control-standard:var(--ice-control-min);
  --hs-cta-min:52px;
  --hs-section-course:var(--ice-section-block);
  --hs-section-course-large:var(--ice-section-block);
  --hs-section-home:var(--ice-section-block);
  --hs-section-editorial:var(--ice-section-block);

  --hs-space-3:var(--ice-space-1);
  --hs-space-4:var(--ice-space-1);
  --hs-space-5:var(--ice-space-1);
  --hs-space-6:var(--ice-space-2);
  --hs-space-7:var(--ice-space-2);
  --hs-space-8:var(--ice-space-2);
  --hs-space-9:var(--ice-space-2);
  --hs-space-10:var(--ice-space-3);
  --hs-space-11:var(--ice-space-3);
  --hs-space-12:var(--ice-space-3);
  --hs-space-13:var(--ice-space-3);
  --hs-space-14:var(--ice-space-4);
  --hs-space-16:var(--ice-space-4);
  --hs-space-18:var(--ice-space-5);
  --hs-space-20:var(--ice-space-5);
  --hs-space-22:var(--ice-space-6);
  --hs-space-24:var(--ice-space-6);
  --hs-space-26:var(--ice-space-7);
  --hs-space-28:var(--ice-space-7);
  --hs-space-30:var(--ice-space-8);
  --hs-space-32:var(--ice-space-8);
  --hs-space-34:var(--ice-space-9);
  --hs-space-36:var(--ice-space-9);
  --hs-space-40:var(--ice-space-10);
  --hs-space-44:var(--ice-space-11);
  --hs-space-48:var(--ice-space-12);
  --hs-space-52:var(--ice-space-13);
  --hs-space-56:var(--ice-space-14);
  --hs-space-58:var(--ice-space-14);
  --hs-space-64:var(--ice-space-16);
  --hs-space-72:var(--ice-space-18);
  --hs-space-76:var(--ice-space-20);
  --hs-space-80:var(--ice-space-20);
  --hs-space-88:var(--ice-space-22);
  --hs-space-92:var(--ice-space-24);
  --hs-space-96:var(--ice-space-24);
  --hs-space-104:var(--ice-space-26);
  --hs-space-112:var(--ice-space-28);
  --hs-space-fluid-28-40:clamp(var(--ice-space-7),4vw,var(--ice-space-10));
  --hs-space-fluid-28-44:clamp(var(--ice-space-7),4vw,var(--ice-space-11));
  --hs-space-fluid-36-56:clamp(var(--ice-space-9),5vw,var(--ice-space-14));
  --hs-space-fluid-44-80:clamp(var(--ice-space-11),6vw,var(--ice-space-20));
  --hs-space-fluid-44-88:clamp(var(--ice-space-11),6vw,var(--ice-space-22));
  --hs-space-fluid-44-104:clamp(var(--ice-space-11),7vw,var(--ice-space-26));
  --hs-space-fluid-48-80:clamp(var(--ice-space-12),6vw,var(--ice-space-20));
  --hs-space-fluid-48-96:clamp(var(--ice-space-12),6vw,var(--ice-space-24));
  --hs-space-fluid-48-104:clamp(var(--ice-space-12),7vw,var(--ice-space-26));
  --hs-space-fluid-56-88:clamp(var(--ice-space-14),6vw,var(--ice-space-22));
  --hs-space-fluid-56-112:clamp(var(--ice-space-14),7vw,var(--ice-space-28));
  --hs-space-fluid-64-104:clamp(var(--ice-space-16),7vw,var(--ice-space-26));
  --hs-space-fluid-68-112:clamp(var(--ice-space-18),7vw,var(--ice-space-28));
  --hs-space-fluid-72-104:clamp(var(--ice-space-18),8vw,var(--ice-space-26));
}

/* 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);
}

body.page-course :is(button,input,select,textarea){font:inherit}

body.page-course :is(h1,h2,h3,h4,h5,h6),
body.page-course :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;
}

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;
}

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(--crimson);
}

/* 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 :is(.btn,.course-action,button,input[type="submit"],input[type="button"]){
  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:saturate(.88) contrast(1.05);
}

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:
    linear-gradient(155deg,rgba(7,24,52,.2),rgba(7,24,52,0) 52%),
    linear-gradient(0deg,rgba(3,12,34,.2),rgba(3,12,34,0) 42%);
}

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: Hull-derived 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. */
body.page-course .site-footer{
  color:#fff;
  background:var(--hull-black);
}

body.page-course .site-footer::before{
  height:4px;
  background:var(--hull-lime);
}

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

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

body.page-course .footer-brand{grid-row:auto}
body.page-course .footer-cta{grid-column:auto}

body.page-course .footer-brand__head{
  gap:var(--ice-space-4);
  margin-bottom:var(--ice-space-6);
}

body.page-course .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.page-course .footer-brand__mark img{
  width:100%;
  height:100%;
  padding:var(--ice-space-2);
  background:transparent;
}

body.page-course .footer-brand__rule{background:rgba(255,255,255,.28)}

body.page-course .footer-lockup>span,
body.page-course .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.page-course .footer-lockup>strong{
  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.page-course .footer-lockup>small{
  margin-top:var(--ice-space-1);
  color:var(--hull-lime);
}

body.page-course .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.page-course .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.page-course .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.page-course .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.page-course .footer-brand__proof li::before{
  content:"";
  display:inline-block;
  width:8px;
  height:8px;
  margin-right:var(--ice-space-2);
  background:var(--hull-lime);
}

body.page-course .footer-cta{
  align-self:start;
  padding:var(--ice-space-8);
  border:0;
  border-radius:0;
  background:var(--hull-blue);
}

body.page-course .footer-cta .label{
  margin-bottom:var(--ice-space-3);
  color:#fff;
}

body.page-course .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.page-course .footer-cta__actions{gap:var(--ice-space-3)}

body.page-course .footer-cta .btn-primary{
  background:var(--hull-lime);
  color:var(--hull-blue-dark);
}

body.page-course .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.page-course .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.page-course .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.page-course .footer-contact-card:last-child{border-bottom:0}
body.page-course .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.page-course .footer-contact-card:nth-child(even){padding-left:var(--ice-space-4)}
body.page-course .footer-contact-card--primary{background:transparent}
body.page-course .footer-contact-card:hover{background:rgba(255,255,255,.06)}
body.page-course .footer-icon{color:var(--hull-lime)}

body.page-course .footer-contact-card small{
  color:rgba(255,255,255,.64);
  font-size:var(--ice-type-caption-size);
  letter-spacing:.1em;
}

body.page-course .footer-contact-card b{
  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.page-course .footer-directory{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--ice-space-10);
  padding-block:var(--ice-space-12);
  border-bottom:0;
}

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

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

body.page-course .footer-link-group h3{
  margin-bottom:var(--ice-space-3);
  color:var(--hull-lime);
}

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

body.page-course .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.page-course .footer-affiliation img{width:48px}
body.page-course .footer-eyebrow{color:var(--hull-lime)}

body.page-course .footer-affiliation strong{
  color:#fff;
  font-family:var(--ice-font-display);
  font-size:clamp(1.25rem,1.16rem + .37vw,1.5rem);
  font-weight:400;
}

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

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

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

body.page-course .footer-social>span{color:var(--hull-lime)}
body.page-course .footer-social a{border-radius:50%}
body.page-course .footer-social a:hover{background:var(--hull-blue)}

/* Dark-mode footer repair. The footer is a permanently-dark field, but its accents
   alias theme-flipping base tokens: --hull-lime→--bg and --hull-blue→--navy both invert
   to dark under data-theme=dark, so every lime accent (top rule, contact icons, nav
   headings, "Affiliated to" eyebrow, "Follow your future" label, proof bullets, lockup
   caption) and the navy CTA card + its "Apply Now" button vanished. Re-point just these
   two tokens to stable light/navy values within the footer scope; every var() consumer
   inside recovers, and light mode is unaffected. */
html[data-theme="dark"] .site-footer{
  --hull-lime:#FAF7F2;
  --hull-blue:var(--navy-mid);
}

/* 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.page-course .footer-contact{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

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

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

  body.page-course .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.page-course .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-20);
  }

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

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

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

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

  body.page-course .footer-link-groups{
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:var(--ice-space-6);
  }

  body.page-course .footer-affiliation{
    padding:0 0 0 var(--ice-space-6);
    border-top:0;
    border-left:4px solid var(--hull-lime);
  }
}

@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 widens to 1400px so wide desktops read full-width, not boxed. Chrome
   (header/footer) keeps the shared 1280 rail. */
body.page-home main .wrap{
  width:min(100%,1400px);
  max-width:1400px;
}

/* The apply CTA becomes a full-bleed lime field: the section owns the color and
   block padding; the inner banner keeps only its grid so content stays on the rail. */
body.page-home main #apply-cta{
  background:var(--hull-lime)!important;
  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 uses the warm-paper field in light mode. In dark
   mode --hull-lime and --hull-blue-dark both resolve to deep navy, which
   otherwise leaves this section's content invisible against its background. */
html[data-theme="dark"] body.page-home main #apply-cta{
  background:var(--navy-mid)!important;
  color:#fff;
}

html[data-theme="dark"] body.page-home main #apply-cta .cta-banner h3{
  color:#fff;
}

html[data-theme="dark"] body.page-home main #apply-cta .cta-banner p{
  color:rgba(255,255,255,.76);
}

html[data-theme="dark"] body.page-home main #apply-cta .cta-banner .btn-primary{
  background:var(--crimson);
  color:#FAF7F2!important;
  box-shadow:0 10px 24px rgba(232,82,106,.24);
}

html[data-theme="dark"] body.page-home main #apply-cta .cta-banner .btn-primary:hover{
  background:var(--crimson-hover);
  color:#FAF7F2!important;
}

html[data-theme="dark"] body.page-home main #apply-cta .btn-ghost{
  border-color:rgba(255,255,255,.55);
  color:#fff;
}

html[data-theme="dark"] body.page-home main #apply-cta .btn-ghost:hover{
  background:#fff;
  border-color:#fff;
  color:var(--navy-deep);
}

/* The homepage closing CTA owns an orange statement banner in both themes. */
body.page-home main section#apply-cta,
body.page-home main section#apply-cta .cta-banner{
  background:#D9702C!important;
  color:var(--navy-deep)!important;
}

body.page-home main section#apply-cta .cta-banner{
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:var(--hs-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(--navy-deep)!important;
}

body.page-home main #apply-cta .cta-banner .btn-ghost{
  border-color:rgba(12,26,56,.58)!important;
  color:var(--navy-deep)!important;
  background:transparent!important;
}

body.page-home main #apply-cta .cta-banner .btn-ghost:hover{
  background:var(--navy-deep)!important;
  border-color:var(--navy-deep)!important;
  color:#FAF7F2!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))}
}

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

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}
}
