/* ================================================================
   ABBOTTABAD PUBLIC SCHOOL — DIGITAL PROSPECTUS
   ================================================================
   A single dedicated stylesheet for the /prospectus/ cinematic
   experience. Intentionally separate from the main site css/style.css:
   the prospectus is a distinct art direction (bigger type, warmer
   palette, larger whitespace, longer easing) and mixing its tokens
   into the shared stylesheet would either bloat the main site or
   dilute the prospectus.
   ================================================================ */

:root{
  /* ---- Palette — warmer than the main site.
         Ivory base, deep ink with a navy undertone, and two supporting
         earth tones drawn from the Abbottabad landscape: pine green
         for the moss/forest reference, warm terracotta for the hills.
         Gold accent is kept in common with the main site for identity
         continuity. ---- */
  --p-ivory:      #f4efe6;
  --p-ivory-2:    #ebe4d6;
  --p-paper:      #fbf8f2;
  --p-ink:        #0d1220;
  --p-ink-soft:   #2c3140;
  --p-muted:      #6b6960;
  --p-line:       rgba(13,18,32,0.09);
  --p-line-dark:  rgba(255,255,255,0.14);
  --p-pine:       #334940;
  --p-pine-soft:  #556e63;
  --p-terra:      #a8664a;
  --p-gold:       #b8923a;
  --p-gold-soft:  #d9bd7c;

  /* Type stack. Instrument Serif is chosen for editorial gravity —
     modern proportions, gentle italic. Inter carries UI/body work. */
  --p-display: "Instrument Serif","Fraunces","Iowan Old Style",Georgia,serif;
  --p-body:    "Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;

  /* Cinematic type scale. Every step is deliberately larger than the
     main site — the prospectus is meant to fill screens. */
  --p-fs-eyebrow:  .72rem;
  --p-fs-caption:  .8125rem;
  --p-fs-body:     1.0625rem;
  --p-fs-lead:     clamp(1.15rem, .95rem + .85vw, 1.5rem);
  --p-fs-h3:       clamp(1.5rem, 1.1rem + 1.8vw, 2.25rem);
  --p-fs-h2:       clamp(2.5rem, 1.4rem + 4.5vw, 5.5rem);
  --p-fs-display:  clamp(3.5rem, 1.6rem + 8vw, 10rem);
  --p-fs-hero:     clamp(4.25rem, 1rem + 12vw, 14rem);
  --p-fs-statnum:  clamp(3rem, 2rem + 4.5vw, 6.5rem);

  --p-track-tight: -0.03em;
  --p-track-loose: .18em;

  /* Spacing — larger than the main site. */
  --p-pad-section: clamp(6rem, 4rem + 8vw, 12rem);
  --p-container:   1440px;
  --p-side:        clamp(1.5rem, .5rem + 4vw, 4rem);
}

/* ---- Base — scoped to the prospectus page body via .prospectus so
       nothing here can leak into other pages that also load main.css
       (only prospectus.css and prospectus.js load this markup). ---- */
.prospectus{
  background:var(--p-ivory);
  color:var(--p-ink);
  font-family:var(--p-body);
  font-size:var(--p-fs-body);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
.prospectus *,.prospectus *::before,.prospectus *::after{box-sizing:border-box;margin:0;padding:0;}
.prospectus img,.prospectus svg{display:block;max-width:100%;}
.prospectus a{color:inherit;text-decoration:none;}
.prospectus ul,.prospectus ol{list-style:none;}
.prospectus button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0;}

/* Focus ring in the prospectus's own accent, not the main site's gold, so
   it reads consistently against ivory + pine + navy scenes. */
.prospectus a:focus-visible,.prospectus button:focus-visible{
  outline:2px solid var(--p-gold);
  outline-offset:4px;
  border-radius:2px;
}

.p-container{
  width:100%;
  max-width:var(--p-container);
  margin-inline:auto;
  padding-inline:var(--p-side);
}
.p-eyebrow{
  display:inline-flex;align-items:center;gap:.8em;
  font-family:var(--p-body);
  font-size:var(--p-fs-eyebrow);
  font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
}
.p-eyebrow::before{
  content:"";width:24px;height:1px;background:currentColor;display:inline-block;
}
.p-display,.p-h2{
  font-family:var(--p-display);
  font-weight:400;
  line-height:.98;
  letter-spacing:var(--p-track-tight);
}
.p-h2{font-size:var(--p-fs-h2);}
.p-h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:var(--p-fs-h3);
  line-height:1.05;
  letter-spacing:-.02em;
}
.p-lead{
  font-family:var(--p-body);
  font-size:var(--p-fs-lead);
  color:var(--p-ink-soft);
  line-height:1.5;
  max-width:38em;
}
.p-body{
  font-size:var(--p-fs-body);
  color:var(--p-ink-soft);
  line-height:1.65;
  max-width:34em;
}
.p-body + .p-body{margin-top:1.1em;}
.p-italic{font-style:italic;color:var(--p-pine);}

/* ---- Text-mask reveals -------------------------------------------
   Wrap each line the JS turns into a mask container. The outer clips,
   the inner translates up on scroll — a text curtain rather than a
   fade. */
.p-mask{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em;}
.p-mask > *{
  display:block;
  transform:translateY(112%);
  will-change:transform;
}
.p-is-in .p-mask > *{transform:translateY(0);}

/* Global entrance for non-text elements. JS toggles .p-in-view. */
.p-fade{opacity:0;transform:translateY(24px);transition:opacity 1.4s cubic-bezier(.19,1,.22,1), transform 1.4s cubic-bezier(.19,1,.22,1);will-change:opacity,transform;}
.p-in-view .p-fade,.p-fade.p-in{opacity:1;transform:none;}

/* ---- Minimal floating nav --------------------------------------- */
/* ================================================================
   PROSPECTUS NAV — refined editorial sticky bar
   Two states: transparent-over-hero (white text on gradient scrim)
   and .p-nav--scrolled (ivory glass w/ backdrop-blur, dark text).
   --p-nav-h drives every section's scroll-padding so anchor jumps
   land clear of the header — fixes the earlier issue where the
   Bismillah artwork bled into the nav.
   ================================================================ */
:root{ --p-nav-h: 88px; }
@media (min-width:900px){ :root{ --p-nav-h: 74px; } }
html{ scroll-padding-top: calc(var(--p-nav-h) + 16px); }

.p-nav{
  position:fixed; top:0; left:0; right:0; z-index:100;
  min-height: var(--p-nav-h);
  padding: clamp(.75rem, .5rem + .6vw, 1.05rem) clamp(1rem, .6rem + 1.6vw, 2.2rem);
  display:grid;
  grid-template-columns: auto 1fr auto auto;
  align-items:center;
  gap: clamp(.6rem, .4rem + .8vw, 1.4rem);
  color:#fff;
  transition:
    background-color .45s cubic-bezier(.16,1,.3,1),
    box-shadow .45s cubic-bezier(.16,1,.3,1),
    color .45s cubic-bezier(.16,1,.3,1),
    backdrop-filter .45s cubic-bezier(.16,1,.3,1);
  background: linear-gradient(180deg, rgba(6,10,20,.55) 0%, rgba(6,10,20,.15) 60%, transparent 100%);
}
.p-nav.p-nav--scrolled{
  background: rgba(251,248,242,.86);
  color: var(--p-ink);
  backdrop-filter: saturate(140%) blur(16px);
  -webkit-backdrop-filter: saturate(140%) blur(16px);
  box-shadow: 0 1px 0 rgba(13,18,32,.06), 0 12px 32px -18px rgba(13,18,32,.18);
}

/* Back to APS — subtle utility link, left */
.p-nav-back{
  display:inline-flex; align-items:center; gap:.5em;
  font-family: var(--p-body);
  font-size: .7rem; font-weight: 500;
  letter-spacing: var(--p-track-loose);
  text-transform: uppercase;
  padding: .55em .9em;
  border: 1px solid rgba(255,255,255,.35);
  border-radius: 999px;
  color: inherit;
  opacity: .85;
  transition: opacity .3s ease, background-color .3s ease, border-color .3s ease, color .3s ease, transform .35s cubic-bezier(.34,1.56,.64,1);
}
.p-nav-back svg{ width:14px; height:14px; transition: transform .35s cubic-bezier(.16,1,.3,1); }
.p-nav-back:hover{ opacity:1; background: rgba(255,255,255,.1); transform: translateX(-2px); }
.p-nav-back:hover svg{ transform: translateX(-2px); }
.p-nav-back span{ display:none; }
@media (min-width:640px){ .p-nav-back span{ display:inline; } }
.p-nav--scrolled .p-nav-back{
  border-color: rgba(13,18,32,.16);
  background: rgba(255,255,255,.55);
}
.p-nav--scrolled .p-nav-back:hover{ background: var(--p-ivory); border-color: var(--p-terra); color: var(--p-terra); }

/* Brand — crest + wordmark */
.p-nav-brand{
  display:inline-flex; align-items:center; gap:.8em;
  min-width: 0;
  padding-inline: clamp(.4rem, .6vw, 1rem);
  color: inherit;
  text-decoration: none;
}
.p-nav-crest{
  flex-shrink: 0;
  width: 36px; height: 36px;
  display:flex;align-items:center;justify-content:center;
  transition: transform .5s cubic-bezier(.16,1,.3,1);
}
.p-nav-crest img{ width:100%; height:auto; filter: drop-shadow(0 2px 6px rgba(0,0,0,.35)); }
.p-nav--scrolled .p-nav-crest img{ filter: none; }
.p-nav-brand:hover .p-nav-crest{ transform: rotate(-4deg) scale(1.04); }
.p-nav-brand-text{ display:flex; flex-direction:column; line-height:1.05; min-width:0; }
.p-nav-brand-name{
  font-family: var(--p-display);
  font-weight: 400;
  font-size: clamp(.95rem, .85rem + .3vw, 1.1rem);
  letter-spacing: -.005em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.p-nav-brand-sub{
  font-family: var(--p-body);
  font-size: .62rem;
  font-weight: 500;
  letter-spacing: var(--p-track-loose);
  text-transform: uppercase;
  opacity: .72;
  margin-top: 3px;
  white-space: nowrap;
}
@media (max-width: 720px){
  .p-nav-brand-name{ font-size: .9rem; }
  .p-nav-brand-sub{ display: none; }
}

/* Section chip nav */
.p-nav-links{
  display: none;
  align-items: center;
  gap: clamp(.4rem, .3rem + .5vw, 1rem);
  font-family: var(--p-body);
  font-size: .68rem;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  justify-self: end;
  padding-inline: .4rem;
  overflow: hidden;
}
@media (min-width: 1180px){ .p-nav-links{ display: inline-flex; } }
.p-nav-links a{
  position: relative;
  display: inline-block;
  padding: .5rem .1rem;
  color: inherit;
  opacity: .72;
  transition: opacity .35s cubic-bezier(.16,1,.3,1), color .35s cubic-bezier(.16,1,.3,1);
}
.p-nav-links a::after{
  content:"";
  position: absolute;
  left: 0; right: 100%; bottom: .1rem;
  height: 1px;
  background: currentColor;
  transition: right .45s cubic-bezier(.16,1,.3,1);
}
.p-nav-links a:hover, .p-nav-links a.p-active{ opacity: 1; }
.p-nav-links a:hover::after, .p-nav-links a.p-active::after{ right: 0; }
.p-nav--scrolled .p-nav-links a.p-active{ color: var(--p-terra); }
.p-nav--scrolled .p-nav-links a.p-active::after{ background: var(--p-terra); }

/* Contents button */
.p-nav-toc{
  display: inline-flex; align-items: center; gap: .55em;
  padding: .6em 1em;
  font-family: var(--p-body);
  font-size: .7rem; font-weight: 500;
  letter-spacing: var(--p-track-loose);
  text-transform: uppercase;
  border: 1px solid currentColor;
  border-radius: 999px;
  color: inherit;
  background: transparent;
  cursor: pointer;
  opacity: .95;
  transition: background-color .3s ease, border-color .3s ease, color .3s ease, transform .35s cubic-bezier(.34,1.56,.64,1);
}
.p-nav-toc svg{ width: 14px; height: 14px; }
.p-nav-toc:hover{ background: rgba(255,255,255,.1); transform: translateY(-1px); }
.p-nav--scrolled .p-nav-toc{
  color: var(--p-ivory);
  background: var(--p-ink);
  border-color: var(--p-ink);
}
.p-nav--scrolled .p-nav-toc:hover{
  background: var(--p-terra);
  border-color: var(--p-terra);
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  .p-nav, .p-nav-back, .p-nav-toc, .p-nav-crest, .p-nav-links a,
  .p-nav-links a::after{ transition: none !important; }
  .p-nav-back:hover, .p-nav-toc:hover, .p-nav-brand:hover .p-nav-crest{ transform: none !important; }
}

/* Bismillah panel — extra top padding so it clears the fixed header
   on scroll-to; anchor jumps already accommodate this via
   scroll-padding-top, but the natural first-load view also needs it. */
.p-bismillah{ padding-block: calc(var(--p-nav-h) + var(--p-pad-section)) var(--p-pad-section) !important; }

/* Compact scroll indicator anchored bottom of hero */
.p-scroll-hint{
  position:absolute;
  left:50%;bottom:clamp(1.5rem,3vh,3rem);
  transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:1rem;
  color:rgba(255,255,255,.72);
  font-size:.66rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  z-index:3;
}
.p-scroll-hint::after{
  content:"";width:1px;height:60px;
  background:linear-gradient(180deg, rgba(255,255,255,.9), rgba(255,255,255,0));
  position:relative;overflow:hidden;
}
.p-scroll-hint::before{
  content:"";position:absolute;bottom:0;left:50%;width:1px;height:22px;background:var(--p-gold-soft);
  transform:translateX(-50%);
  animation:p-drop 3s cubic-bezier(.5,.05,.5,1) infinite 1.4s;
}
@keyframes p-drop{
  0%{transform:translate(-50%,-60px);opacity:0;}
  20%{opacity:1;}
  80%{opacity:1;}
  100%{transform:translate(-50%,10px);opacity:0;}
}

/* ================================================================
   1. HERO
   ================================================================ */
.p-hero{
  position:relative;
  min-height:100vh;
  display:flex;flex-direction:column;justify-content:center;
  color:#fff;
  overflow:hidden;
  isolation:isolate;
}
.p-hero-bg{
  position:absolute;inset:-4%;z-index:-2;
  background:
    radial-gradient(60% 70% at 20% 15%, rgba(184,146,58,.18), transparent 60%),
    radial-gradient(80% 90% at 80% 85%, rgba(51,73,64,.4), transparent 55%),
    linear-gradient(155deg,#0e1a26 0%,#0a1220 55%,#080d17 100%);
  will-change:transform;
}
.p-hero-img{
  position:absolute;inset:0;
  background-image:url("../images/campus/panaroma.png");
  background-size:cover;background-position:center;
  opacity:.32;
  z-index:-1;
  will-change:transform;
}
.p-hero-scrim{
  position:absolute;inset:0;z-index:-1;
  background:
    linear-gradient(180deg, rgba(6,10,20,.55) 0%, rgba(6,10,20,.15) 30%, rgba(6,10,20,.15) 65%, rgba(6,10,20,.85) 100%);
}
.p-hero-content{
  padding-block:clamp(6rem,4rem + 10vh,12rem);
  padding-inline:var(--p-side);
  max-width:var(--p-container);
  margin-inline:auto;
  width:100%;
  position:relative;z-index:1;
}
.p-hero .p-eyebrow{color:var(--p-gold-soft);opacity:0;transform:translateY(6px);transition:opacity 1.1s var(--p-ease,ease) .3s, transform 1.1s var(--p-ease,ease) .3s;}
.p-hero.p-is-in .p-eyebrow{opacity:1;transform:none;}
.p-hero-title{
  margin-top:1.4rem;
  font-family:var(--p-display);
  font-weight:400;
  font-size:var(--p-fs-hero);
  line-height:.86;
  letter-spacing:-.035em;
}
.p-hero-title .p-mask{margin-left:-.05em;}
.p-hero-line{
  margin-top:2.5rem;
  display:flex;align-items:center;gap:1.2rem;
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  color:rgba(255,255,255,.75);
  opacity:0;transform:translateY(8px);
  transition:opacity 1s ease 1.1s, transform 1s ease 1.1s;
}
.p-hero.p-is-in .p-hero-line{opacity:1;transform:none;}
.p-hero-line::before{content:"";width:56px;height:1px;background:var(--p-gold-soft);opacity:.7;}
@media (max-width:640px){
  .p-hero-title{font-size:clamp(3.5rem,15vw,6.5rem);}
}

/* ================================================================
   2. THE STORY
   ================================================================ */
.p-section{
  position:relative;
  padding-block:var(--p-pad-section);
  overflow:hidden;
}
.p-story{
  background:var(--p-ivory);
}
.p-story-title{
  font-size:var(--p-fs-display);
  line-height:.94;
  letter-spacing:-.03em;
  max-width:14ch;
}
.p-story-body{
  margin-top:clamp(3rem,4vh,5rem);
  max-width:38rem;
  font-size:var(--p-fs-lead);
  color:var(--p-ink-soft);
  line-height:1.55;
}
.p-story-figure{
  margin-top:clamp(4rem,6vw,8rem);
  aspect-ratio:16/9;
  border-radius:2px;
  overflow:hidden;
  position:relative;
  clip-path:inset(100% 0 0 0);
  will-change:clip-path;
}
.p-story-figure img{
  width:100%;height:100%;object-fit:cover;
  transform:scale(1.15);
  will-change:transform;
}
.p-figure-caption{
  margin-top:1rem;
  font-family:var(--p-body);
  font-size:var(--p-fs-caption);
  color:var(--p-muted);
  letter-spacing:.02em;
  font-style:italic;
}

/* ================================================================
   3. TIMELINE (horizontal, pinned)
   ================================================================ */
.p-timeline{
  background:var(--p-ink);
  color:#fff;
  padding-block:0;
  overflow:hidden;
}
.p-timeline-stage{
  position:relative;
  height:100vh;
  overflow:hidden;
}
.p-timeline-bg{
  position:absolute;inset:0;
  background-image:url("../images/campus/panaroma.png");
  background-size:cover;background-position:center;
  opacity:.16;
  transition:opacity 1.2s ease;
}
.p-timeline-scrim{
  position:absolute;inset:0;
  background:
    radial-gradient(80% 60% at 20% 30%, rgba(184,146,58,.12), transparent 60%),
    linear-gradient(180deg, rgba(8,12,20,.35) 0%, rgba(8,12,20,.85) 90%);
}
.p-timeline-inner{
  position:relative;
  height:100%;
  display:flex;
  align-items:center;
}
.p-timeline-track{
  display:flex;
  align-items:center;
  gap:clamp(4rem, 8vw, 10rem);
  padding-inline:var(--p-side);
  will-change:transform;
}
.p-era{
  flex:0 0 min(78vw, 46rem);
  display:grid;
  grid-template-columns:1fr;
  gap:1.6rem;
  padding-right:2rem;
}
.p-era-year{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(4.5rem,3rem + 6vw,9rem);
  line-height:.9;
  letter-spacing:-.03em;
  color:var(--p-gold-soft);
}
.p-era-title{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.5rem,1.1rem + 1.3vw,2.25rem);
  color:#fff;
  line-height:1.15;
}
.p-era-body{
  max-width:34em;
  font-size:var(--p-fs-body);
  color:rgba(255,255,255,.75);
  line-height:1.65;
}
.p-timeline-progress{
  position:absolute;
  left:var(--p-side);right:var(--p-side);
  bottom:clamp(2rem,4vh,4rem);
  height:1px;
  background:rgba(255,255,255,.12);
  z-index:2;
}
.p-timeline-progress::after{
  content:"";position:absolute;left:0;top:0;height:100%;width:100%;
  background:var(--p-gold-soft);
  transform-origin:left;
  transform:scaleX(var(--p-tl,0));
}
.p-timeline-eras{
  position:absolute;left:var(--p-side);bottom:calc(clamp(2rem,4vh,4rem) + 1.4rem);
  right:var(--p-side);
  display:flex;justify-content:space-between;
  font-family:var(--p-body);
  font-size:.66rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  color:rgba(255,255,255,.4);
  z-index:2;
  pointer-events:none;
}
.p-timeline-eras span.p-era-active{color:var(--p-gold-soft);}

/* ================================================================
   4. CAMPUS
   ================================================================ */
.p-campus{
  background:var(--p-ivory);
}
.p-campus-hero{
  position:relative;
  height:100vh;
  overflow:hidden;
  isolation:isolate;
  color:#fff;
}
.p-campus-hero-img{
  position:absolute;inset:0;
  background-image:url("../images/campus/panaroma.png");
  background-size:cover;background-position:center;
  will-change:transform;
}
.p-campus-hero-img::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(6,10,20,.15) 0%, rgba(6,10,20,.55) 60%, rgba(6,10,20,.9) 100%);
}
.p-campus-hero-inner{
  position:relative;
  height:100%;
  display:flex;flex-direction:column;justify-content:flex-end;
  padding:var(--p-side);
  padding-bottom:clamp(4rem,10vh,10rem);
  max-width:var(--p-container);
  margin-inline:auto;
}
.p-campus-hero-title{
  font-family:var(--p-display);
  font-weight:400;
  font-size:var(--p-fs-display);
  line-height:.95;
  letter-spacing:-.03em;
  max-width:16ch;
}

.p-campus-list{
  padding-top:clamp(6rem,10vh,10rem);
  padding-bottom:clamp(6rem,10vh,10rem);
}
.p-facility-row{
  display:grid;
  grid-template-columns:1fr;
  gap:clamp(2rem,4vw,4rem);
  align-items:center;
  padding-block:clamp(4rem,7vh,7rem);
  border-top:1px solid var(--p-line);
}
.p-facility-row:last-child{border-bottom:1px solid var(--p-line);}
@media (min-width:820px){
  .p-facility-row{grid-template-columns:1fr 1.4fr;}
  .p-facility-row.p-flip{grid-template-columns:1.4fr 1fr;}
  .p-facility-row.p-flip .p-facility-media{order:2;}
}
.p-facility-idx{
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  color:var(--p-terra);
}
.p-facility-title{
  margin-top:1.2rem;
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2rem,1.4rem + 2vw,3rem);
  line-height:1.05;
  letter-spacing:-.02em;
  color:var(--p-ink);
}
.p-facility-body{
  margin-top:1.3rem;
  color:var(--p-ink-soft);
  max-width:32em;
  line-height:1.65;
}
.p-facility-media{
  aspect-ratio:4/5;
  overflow:hidden;
  border-radius:2px;
  position:relative;
  clip-path:inset(0 0 100% 0);
  will-change:clip-path;
  background:var(--p-ivory-2);
}
.p-facility-media img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center;
  transform:scale(1.12);
  will-change:transform;
  color:transparent;
}
@media (max-width:819px){
  .p-facility-media{aspect-ratio:5/4;}
}

/* ================================================================
   5. LIFE AT APS — day rhythm
   ================================================================ */
.p-life{
  background:var(--p-ink);
  color:#fff;
}
.p-life .p-eyebrow{color:var(--p-gold-soft);}
.p-life-head{
  max-width:32ch;
}
.p-life-title{
  font-family:var(--p-display);
  font-size:var(--p-fs-h2);
  line-height:.96;
  letter-spacing:-.03em;
  color:#fff;
  margin-top:1.5rem;
}
.p-life-list{
  margin-top:clamp(5rem,8vh,9rem);
}
.p-moment{
  display:grid;
  grid-template-columns:1fr;
  gap:clamp(1.5rem,3vw,3rem);
  padding-block:clamp(3rem,5vh,5rem);
  align-items:end;
  border-top:1px solid var(--p-line-dark);
}
.p-moment:last-child{border-bottom:1px solid var(--p-line-dark);}
@media (min-width:820px){
  .p-moment{grid-template-columns:160px 1fr 1fr;gap:clamp(2rem,4vw,5rem);align-items:center;}
}
.p-moment-time{
  font-family:var(--p-display);
  font-size:clamp(2rem,1.4rem + 1.6vw,2.75rem);
  line-height:1;
  color:var(--p-gold-soft);
}
.p-moment-time small{
  display:block;
  font-family:var(--p-body);
  font-size:.66rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  color:rgba(255,255,255,.55);
  margin-top:.4rem;
}
.p-moment-title{
  font-family:var(--p-display);
  font-size:clamp(1.5rem,1.2rem + 1.2vw,2.25rem);
  line-height:1.15;
  color:#fff;
}
.p-moment-body{
  color:rgba(255,255,255,.72);
  max-width:32em;
  line-height:1.65;
}

/* ================================================================
   6. ACADEMICS + STAT COUNTERS
   ================================================================ */
.p-academics{
  background:var(--p-ivory);
}
.p-academics-title{
  font-family:var(--p-display);
  font-size:var(--p-fs-display);
  line-height:.94;
  letter-spacing:-.03em;
  max-width:14ch;
}
.p-academics-body{
  margin-top:clamp(2.5rem,3vh,3rem);
  max-width:36em;
  font-size:var(--p-fs-lead);
  color:var(--p-ink-soft);
  line-height:1.55;
}
.p-stat-grid{
  margin-top:clamp(5rem,8vh,9rem);
  display:grid;grid-template-columns:1fr;
  gap:clamp(3rem,4vw,5rem);
  border-top:1px solid var(--p-line);
  padding-top:clamp(3rem,4vh,4rem);
}
@media (min-width:640px){ .p-stat-grid{grid-template-columns:repeat(2,1fr);} }
@media (min-width:1000px){ .p-stat-grid{grid-template-columns:repeat(4,1fr);} }
.p-stat{
  display:flex;flex-direction:column;gap:.9rem;
}
.p-stat-num{
  font-family:var(--p-display);
  font-weight:400;
  font-size:var(--p-fs-statnum);
  line-height:.9;
  letter-spacing:-.03em;
  color:var(--p-pine);
  display:inline-flex;align-items:baseline;gap:.15em;
}
.p-stat-num .p-stat-suffix{
  font-family:var(--p-body);font-weight:500;
  font-size:.32em;color:var(--p-terra);letter-spacing:.02em;text-transform:uppercase;
}
.p-stat-label{
  font-size:.86rem;
  color:var(--p-ink-soft);
  max-width:16em;
  line-height:1.55;
}

/* ================================================================
   7. DIGITAL APS
   ================================================================ */
.p-digital{
  background:var(--p-ink);
  color:#fff;
  position:relative;
  isolation:isolate;
}
.p-digital::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(60% 40% at 15% 15%, rgba(184,146,58,.12), transparent 55%),
    radial-gradient(60% 60% at 90% 90%, rgba(51,73,64,.3), transparent 55%);
}
.p-digital-title{
  font-family:var(--p-display);
  font-size:var(--p-fs-display);
  line-height:.94;
  letter-spacing:-.03em;
  color:#fff;
  max-width:14ch;
}
.p-digital-body{
  margin-top:clamp(2.5rem,3vh,3rem);
  max-width:38em;
  font-size:var(--p-fs-lead);
  color:rgba(255,255,255,.75);
  line-height:1.55;
}
.p-digital-grid{
  margin-top:clamp(5rem,8vh,9rem);
  display:grid;grid-template-columns:1fr;gap:clamp(1.5rem,2vw,2rem);
}
@media (min-width:640px){ .p-digital-grid{grid-template-columns:repeat(2,1fr);} }
@media (min-width:1000px){ .p-digital-grid{grid-template-columns:repeat(3,1fr);} }
.p-digital-item{
  padding:clamp(2rem,2.5vw,2.6rem);
  border:1px solid var(--p-line-dark);
  background:rgba(255,255,255,.02);
  transition:border-color .5s ease, background .5s ease;
}
.p-digital-item:hover{border-color:rgba(217,189,124,.45);background:rgba(255,255,255,.03);}
.p-digital-item h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:1.4rem;
  color:#fff;margin-bottom:.7rem;
}
.p-digital-item p{
  font-size:.9375rem;
  color:rgba(255,255,255,.7);
  line-height:1.65;
}
.p-digital-item .p-eyebrow{color:var(--p-gold-soft);margin-bottom:1.2rem;}

/* ================================================================
   8. BEYOND — mosaic
   ================================================================ */
.p-beyond{
  background:var(--p-ivory);
}
.p-beyond-title{
  font-family:var(--p-display);
  font-size:var(--p-fs-display);
  line-height:.94;
  letter-spacing:-.03em;
  max-width:14ch;
}
.p-beyond-mosaic{
  margin-top:clamp(5rem,8vh,9rem);
  display:grid;
  grid-template-columns:repeat(6,1fr);
  grid-auto-rows:clamp(150px,14vw,240px);
  gap:clamp(.75rem,1vw,1rem);
}
.p-tile{
  position:relative;
  overflow:hidden;
  border-radius:2px;
  background:var(--p-ivory-2);
  isolation:isolate;
}
.p-tile img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center;
  transform:scale(1.05);
  transition:transform 1.4s cubic-bezier(.19,1,.22,1);
  color:transparent;
}
.p-tile:hover img{transform:scale(1.02);}
.p-tile::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(0deg, rgba(6,10,20,.55) 0%, rgba(6,10,20,0) 40%);
  pointer-events:none;
}
.p-tile-label{
  position:absolute;left:1.2rem;bottom:1rem;
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  color:#fff;
  z-index:1;
}
.p-tile.p-t-a{grid-column:span 4;grid-row:span 2;}
.p-tile.p-t-b{grid-column:span 2;grid-row:span 1;}
.p-tile.p-t-c{grid-column:span 2;grid-row:span 1;}
.p-tile.p-t-d{grid-column:span 3;grid-row:span 1;}
.p-tile.p-t-e{grid-column:span 3;grid-row:span 2;}
.p-tile.p-t-f{grid-column:span 3;grid-row:span 1;}
@media (max-width:820px){
  .p-beyond-mosaic{grid-template-columns:repeat(4,1fr);grid-auto-rows:clamp(120px,20vw,200px);}
  .p-tile.p-t-a{grid-column:span 4;grid-row:span 2;}
  .p-tile.p-t-b{grid-column:span 2;grid-row:span 1;}
  .p-tile.p-t-c{grid-column:span 2;grid-row:span 1;}
  .p-tile.p-t-d{grid-column:span 4;grid-row:span 1;}
  .p-tile.p-t-e{grid-column:span 4;grid-row:span 2;}
  .p-tile.p-t-f{grid-column:span 4;grid-row:span 1;}
}
@media (max-width:520px){
  .p-beyond-mosaic{grid-template-columns:repeat(2,1fr);}
  .p-tile.p-t-a,.p-tile.p-t-b,.p-tile.p-t-c,.p-tile.p-t-d,.p-tile.p-t-e,.p-tile.p-t-f{grid-column:span 2;grid-row:span 1;}
}

/* ================================================================
   9. THE APS EXPERIENCE — word cascade
   ================================================================ */
.p-experience{
  background:var(--p-pine);
  color:#fff;
  overflow:hidden;
  position:relative;
}
.p-experience::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(70% 70% at 50% 50%, rgba(0,0,0,0) 0%, rgba(0,0,0,.45) 100%);
  pointer-events:none;
}
.p-experience-stage{
  position:relative;
  height:100vh;
  display:flex;align-items:center;justify-content:center;
}
.p-cascade{
  position:relative;
  width:100%;
  padding-inline:var(--p-side);
  text-align:center;
}
.p-word{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font-family:var(--p-display);font-weight:400;
  font-size:clamp(3rem,2rem + 6vw,7rem);
  line-height:.95;
  letter-spacing:-.03em;
  color:#fff;
  opacity:0;
  will-change:opacity,transform;
  white-space:nowrap;
}
.p-cascade-final{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  color:var(--p-gold-soft);
  opacity:0;
  white-space:nowrap;
}

/* ================================================================
  10. ALUMNI / LEGACY
   ================================================================ */
.p-alumni{
  background:var(--p-ivory);
}
.p-alumni-title{
  font-family:var(--p-display);
  font-size:var(--p-fs-display);
  line-height:.94;letter-spacing:-.03em;
  max-width:14ch;
}
.p-alumni-body{
  margin-top:clamp(2.5rem,3vh,3rem);
  max-width:38em;
  font-size:var(--p-fs-lead);
  color:var(--p-ink-soft);
}
.p-fields{
  margin-top:clamp(5rem,7vh,8rem);
  display:grid;grid-template-columns:1fr;gap:0;
  border-top:1px solid var(--p-line);
}
.p-field{
  display:grid;
  grid-template-columns:80px 1fr;
  gap:clamp(1rem,2vw,3rem);
  padding-block:clamp(1.6rem,2.5vh,2.5rem);
  border-bottom:1px solid var(--p-line);
  align-items:baseline;
}
@media (min-width:640px){
  .p-field{grid-template-columns:120px 1fr auto;gap:clamp(2rem,4vw,5rem);}
}
.p-field-num{
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  color:var(--p-muted);
}
.p-field-name{
  font-family:var(--p-display);
  font-size:clamp(1.4rem,1.1rem + 1.2vw,2rem);
  line-height:1.1;
  color:var(--p-ink);
}
.p-field-body{
  font-size:.9375rem;color:var(--p-muted);
  line-height:1.55;
  max-width:28em;
}
@media (max-width:640px){
  .p-field-body{grid-column:1 / -1;padding-top:.5rem;}
}

/* ================================================================
  11. WHY APS — one statement per screen
   ================================================================ */
.p-why{
  background:var(--p-ink);
  color:#fff;
}
.p-why-panel{
  min-height:100vh;
  display:flex;align-items:center;justify-content:center;
  padding:var(--p-side);
  border-top:1px solid var(--p-line-dark);
}
.p-why-panel:first-of-type{border-top:0;}
.p-why-inner{
  text-align:left;
  max-width:var(--p-container);
  width:100%;
  padding-inline:clamp(0px,4vw,3rem);
}
.p-why-count{
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  color:var(--p-gold-soft);
  margin-bottom:2rem;
}
.p-why-statement{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2.5rem,1.5rem + 5vw,6.5rem);
  line-height:.98;
  letter-spacing:-.03em;
  color:#fff;
  max-width:18ch;
}
.p-why-note{
  margin-top:2.5rem;
  font-family:var(--p-body);
  font-size:var(--p-fs-body);
  color:rgba(255,255,255,.65);
  max-width:34em;
  line-height:1.65;
}

/* ================================================================
  12. ADMISSIONS
   ================================================================ */
.p-admissions{
  background:var(--p-ivory);
}
.p-adm-title{
  font-family:var(--p-display);
  font-size:var(--p-fs-display);
  line-height:.94;letter-spacing:-.03em;
  max-width:14ch;
}
.p-adm-lede{
  margin-top:clamp(2rem,3vh,3rem);
  max-width:36em;
  font-size:var(--p-fs-lead);color:var(--p-ink-soft);
}
.p-adm-facts{
  margin-top:clamp(5rem,7vh,8rem);
  display:grid;grid-template-columns:1fr;
  gap:clamp(2rem,3vw,3rem);
  border-top:1px solid var(--p-line);
  padding-top:clamp(2.5rem,3vh,3rem);
}
@media (min-width:820px){ .p-adm-facts{grid-template-columns:repeat(3,1fr);} }
.p-adm-fact h4{
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  color:var(--p-terra);
  margin-bottom:1rem;
}
.p-adm-fact p{
  font-family:var(--p-display);
  font-size:clamp(1.4rem,1.1rem + 1vw,1.8rem);
  line-height:1.2;color:var(--p-ink);
}
.p-adm-fact small{
  display:block;margin-top:.7rem;
  font-family:var(--p-body);
  font-size:.86rem;color:var(--p-muted);
  line-height:1.6;
}

.p-adm-actions{
  margin-top:clamp(5rem,7vh,8rem);
  display:flex;flex-wrap:wrap;gap:1rem 1.5rem;
  align-items:center;
}
.p-btn{
  display:inline-flex;align-items:center;gap:.9em;
  font-family:var(--p-body);font-size:.72rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  padding:1.1em 1.8em;
  border-radius:999px;
  border:1px solid var(--p-ink);
  color:var(--p-ink);
  background:transparent;
  transition:background .5s cubic-bezier(.19,1,.22,1), color .5s cubic-bezier(.19,1,.22,1);
}
.p-btn:hover{background:var(--p-ink);color:var(--p-ivory);}
.p-btn--filled{background:var(--p-ink);color:var(--p-ivory);}
.p-btn--filled:hover{background:var(--p-pine);border-color:var(--p-pine);}
.p-btn--ghost{border:0;padding-left:0;padding-right:0;}
.p-btn--ghost:hover{background:transparent;color:var(--p-terra);}
.p-btn svg{width:14px;height:14px;transition:transform .4s cubic-bezier(.19,1,.22,1);}
.p-btn:hover svg{transform:translateX(4px);}

/* ================================================================
  13. FINAL SCREEN
   ================================================================ */
.p-final{
  position:relative;
  min-height:100vh;
  display:flex;flex-direction:column;justify-content:center;
  color:#fff;
  overflow:hidden;
  isolation:isolate;
}
.p-final-bg{
  position:absolute;inset:-4%;z-index:-2;
  background-image:url("../images/campus/panaroma.png");
  background-size:cover;background-position:center;
  will-change:transform;
}
.p-final-scrim{
  position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg, rgba(6,10,20,.55) 0%, rgba(6,10,20,.9) 100%);
}
.p-final-inner{
  padding-inline:var(--p-side);padding-block:clamp(6rem,10vh,10rem);
  max-width:var(--p-container);margin-inline:auto;
  text-align:center;
  position:relative;z-index:1;
}
.p-final-title{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2.5rem,1rem + 6vw,7rem);
  line-height:.95;
  letter-spacing:-.03em;
}
.p-final-since{
  margin-top:1.4rem;
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  color:var(--p-gold-soft);
}
.p-final-line{
  margin-top:clamp(3rem,5vh,5rem);
  font-family:var(--p-display);font-style:italic;font-weight:400;
  font-size:clamp(1.4rem,1.1rem + 1.2vw,2.25rem);
  color:rgba(255,255,255,.85);
  max-width:24ch;
  margin-inline:auto;
  line-height:1.3;
}
.p-final-cta{
  margin-top:clamp(4rem,6vh,6rem);
  display:inline-flex;align-items:center;gap:1em;
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  padding:1.1em 2em;
  border:1px solid rgba(255,255,255,.6);border-radius:999px;
  color:#fff;
  transition:background .5s ease, border-color .5s ease;
}
.p-final-cta:hover{background:#fff;color:var(--p-ink);border-color:#fff;}
.p-final-foot{
  position:absolute;bottom:1.5rem;left:0;right:0;
  padding-inline:var(--p-side);
  display:flex;justify-content:space-between;
  font-family:var(--p-body);
  font-size:.66rem;font-weight:500;letter-spacing:var(--p-track-loose);text-transform:uppercase;
  color:rgba(255,255,255,.35);
  z-index:2;
}

/* ================================================================
   ================================================================
   EDITORIAL REDESIGN — added to the tail so the earlier tokens and
   base classes still cascade normally. This block replaces the visual
   direction of five sections that had settled into "template website"
   patterns (alternating rows, grids of identical cards, numbered
   lists without photography) with editorial spreads: pull-quotes over
   full-bleed photography, marginalia, oversized numerals, contact-
   sheet portrait galleries, and asymmetric collages.
   Old classes (.p-facility-row, .p-moment, .p-digital-item, .p-field,
   .p-adm-fact) remain in the file above so a manual revert is a
   one-section HTML swap — the new page just doesn't reference them.
   ================================================================
   ================================================================ */

/* ---- Editorial primitives shared across the new spreads --------- */

.p-on-dark{color:#fff !important;}
.p-on-dark .p-mask > *{color:#fff;}

/* Numeral used at the head of every spread — restrained roman capital,
   sits like a page number in a printed book, not shouty. */
.p-spread-num{
  display:inline-block;
  font-family:var(--p-display);
  font-size:clamp(2rem, 1rem + 2vw, 3rem);
  font-style:italic;
  color:var(--p-terra);
  line-height:1;
  margin-bottom:1.25rem;
}
.p-spread-num-light{color:var(--p-gold-soft);}

.p-spread-header{
  max-width:44rem;
  margin-bottom:clamp(3rem, 4vh, 5.5rem);
}
.p-spread-header-tight{margin-bottom:clamp(2rem, 3vh, 3.5rem);}
.p-spread-heading{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2.4rem, 1.4rem + 3.4vw, 4.8rem);
  line-height:1;
  letter-spacing:-.03em;
  color:var(--p-ink);
  margin-top:.6rem;
}

/* Photograph as an editorial figure — the caption is small, italic and
   sits below with a hairline. Photographs "in the wild" behave like
   printed illustrations, not clickable cards. */
.p-photo{
  position:relative;
  overflow:hidden;
  background:var(--p-ivory-2);
  isolation:isolate;
}
.p-photo img{
  display:block;
  width:100%;height:100%;
  object-fit:cover;
  will-change:transform;
}
.p-photo figcaption{
  margin-top:.85rem;
  font-family:var(--p-body);
  font-size:var(--p-fs-caption);
  color:var(--p-muted);
  letter-spacing:.01em;
  padding-left:calc(24px + .8em);
  position:relative;
}
.p-photo figcaption::before{
  content:"";position:absolute;left:0;top:.6em;
  width:20px;height:1px;background:var(--p-terra);opacity:.6;
}

/* Marginalia — small block of numbered copy set beside a photograph.
   Mirrors the way a printed prospectus labels its plates. */
.p-marginalia{max-width:26rem;}
.p-mg-idx{
  font-family:var(--p-body);
  font-size:.72rem;
  font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
  margin-bottom:.9rem;
  display:inline-flex;align-items:center;gap:.7em;
}
.p-mg-idx::before{content:"";width:22px;height:1px;background:currentColor;display:inline-block;}
.p-mg-body{
  font-size:var(--p-fs-body);
  line-height:1.65;
  color:var(--p-ink-soft);
}

/* Section-level backgrounds — every spread section carries the ivory
   ground to feel like a printed page rather than a web module. */
.p-spread{
  position:relative;
  padding-block:clamp(5rem, 3rem + 6vw, 9rem);
  background:var(--p-ivory);
  overflow:hidden;
}
.p-spread + .p-spread{border-top:1px solid var(--p-line);}

/* =============================================================
   SPREAD I  ·  Boarding & Academics  —  collage + marginalia
   ============================================================= */
.p-collage-a{
  display:grid;
  grid-template-columns:repeat(12, 1fr);
  grid-auto-rows:min-content;
  gap:clamp(1.5rem, 1rem + 1.8vw, 3rem);
  align-items:start;
}
.p-collage-a .p-photo-lead{
  grid-column:1 / span 8;
  aspect-ratio:16/11;
}
.p-collage-a .p-photo-inset{
  grid-column:8 / span 5;
  aspect-ratio:4/5;
  margin-top:clamp(4rem, 4vw, 7rem);
  z-index:2;
  box-shadow:0 22px 60px -22px rgba(13,18,32,.35), 0 1px 0 rgba(255,255,255,.9) inset;
}
.p-collage-a .p-marginalia-left{
  grid-column:1 / span 5;
  margin-top:clamp(1rem, 2vh, 2rem);
}
.p-collage-a .p-marginalia-right{
  grid-column:8 / span 5;
  margin-top:clamp(1rem, 2vh, 2rem);
}
@media (max-width:820px){
  .p-collage-a{grid-template-columns:1fr;}
  .p-collage-a .p-photo-lead,
  .p-collage-a .p-photo-inset,
  .p-collage-a .p-marginalia-left,
  .p-collage-a .p-marginalia-right{grid-column:1;margin-top:0;}
  .p-collage-a .p-photo-inset{aspect-ratio:16/11;}
}

/* =============================================================
   SPREAD II  ·  Library & Digital Library  —  full-bleed
   photograph with an oversized italic pull-quote and captions
   as a two-column foot on the ivory page.
   ============================================================= */
.p-spread-quote{padding:0;background:var(--p-ink);}
.p-spread-quote-stage{
  position:relative;
  min-height:clamp(560px, 78vh, 820px);
  overflow:hidden;
  isolation:isolate;
  color:#fff;
}
.p-spread-quote-stage .p-photo-fill{
  position:absolute;inset:0;z-index:0;
}
.p-spread-quote-stage .p-photo-fill img{
  transform:scale(1.06);
}
.p-spread-quote-scrim{
  position:absolute;inset:0;z-index:1;
  background:
    linear-gradient(120deg, rgba(6,10,20,.72) 0%, rgba(6,10,20,.35) 55%, rgba(6,10,20,.65) 100%),
    linear-gradient(180deg, rgba(6,10,20,.35) 0%, rgba(6,10,20,.15) 40%, rgba(6,10,20,.55) 100%);
}
.p-spread-quote-inner{
  position:relative;z-index:2;
  max-width:var(--p-container);
  margin-inline:auto;
  padding:clamp(5rem, 3rem + 8vh, 9rem) var(--p-side);
  min-height:inherit;
  display:flex;flex-direction:column;justify-content:center;
}
.p-pull-quote{
  font-family:var(--p-display);
  font-weight:400;
  font-style:italic;
  font-size:clamp(2.6rem, 1.4rem + 5vw, 6rem);
  line-height:.98;
  letter-spacing:-.03em;
  color:#fff;
  max-width:16ch;
  margin-top:1.4rem;
}
.p-pull-attribution{
  margin-top:2rem;
  font-family:var(--p-body);
  font-size:var(--p-fs-caption);
  letter-spacing:.02em;
  color:rgba(255,255,255,.72);
  max-width:34ch;
}
.p-spread-quote-foot{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4.5rem);
  padding-block:clamp(3rem, 2rem + 3vw, 5rem);
  background:var(--p-ivory);
}
@media (max-width:720px){
  .p-spread-quote-foot{grid-template-columns:1fr;}
}

/* =============================================================
   SPREAD III  ·  Laboratories & Sport  —  asymmetric split with
   the sport photograph overlapping the lab photograph. Copy sits
   below in a two-column marginalia block.
   ============================================================= */
.p-collage-c{
  display:grid;
  grid-template-columns:repeat(12, 1fr);
  gap:clamp(1.5rem, 1rem + 1.5vw, 2.5rem);
  align-items:end;
}
.p-collage-c .p-photo-tall{
  grid-column:1 / span 6;
  aspect-ratio:3/4;
}
.p-collage-c .p-photo-overlap{
  grid-column:6 / span 7;
  aspect-ratio:5/4;
  margin-bottom:clamp(3rem, 3vw, 5rem);
  z-index:2;
  box-shadow:0 22px 70px -30px rgba(13,18,32,.4);
}
.p-collage-c .p-marginalia-below{
  grid-column:1 / -1;
  margin-top:clamp(2.5rem, 3vh, 4rem);
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4.5rem);
}
@media (max-width:820px){
  .p-collage-c{grid-template-columns:1fr;}
  .p-collage-c .p-photo-tall,
  .p-collage-c .p-photo-overlap{grid-column:1;margin-bottom:0;aspect-ratio:4/3;}
  .p-collage-c .p-marginalia-below{grid-template-columns:1fr;gap:2rem;}
}

/* =============================================================
   SPREAD IV  ·  Dining & Medical Centre  —  immersive full-
   bleed stage with a small detail crop floating over one corner.
   The two captions run as a foot column on the ivory page.
   ============================================================= */
.p-spread-immersive{padding:0;background:var(--p-ink);}
.p-spread-immersive-stage{
  position:relative;
  min-height:clamp(620px, 88vh, 920px);
  overflow:hidden;
  isolation:isolate;
  color:#fff;
}
.p-spread-immersive-stage .p-photo-fill{
  position:absolute;inset:0;z-index:0;
}
.p-spread-immersive-stage .p-photo-fill img{transform:scale(1.06);}
.p-spread-immersive-scrim{
  position:absolute;inset:0;z-index:1;
  background:
    linear-gradient(180deg, rgba(6,10,20,.65) 0%, rgba(6,10,20,.15) 30%, rgba(6,10,20,.65) 100%);
}
.p-spread-immersive-title{
  position:relative;z-index:2;
  max-width:var(--p-container);
  margin-inline:auto;
  padding:clamp(4rem, 3rem + 6vh, 7rem) var(--p-side) 0;
}
.p-spread-immersive-title .p-spread-heading{color:#fff;}
.p-photo-detail{
  position:absolute;
  right:var(--p-side);
  bottom:clamp(2rem, 4vh, 4rem);
  width:clamp(220px, 22vw, 340px);
  aspect-ratio:3/4;
  z-index:3;
  box-shadow:0 24px 80px -20px rgba(0,0,0,.6);
}
.p-photo-detail figcaption{
  color:rgba(255,255,255,.75);
  padding-left:calc(20px + .8em);
}
.p-photo-detail figcaption::before{background:var(--p-gold-soft);}
.p-spread-immersive-foot{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4.5rem);
  padding-block:clamp(3rem, 2rem + 3vw, 5rem);
  background:var(--p-ivory);
}
@media (max-width:720px){
  .p-spread-immersive-foot{grid-template-columns:1fr;}
  .p-photo-detail{position:static;width:100%;margin-top:2rem;aspect-ratio:4/3;}
}

.p-caption-col{max-width:32rem;}

/* =============================================================
   5. LIFE  —  Editorial day-essay
   Each moment is a page in a book. Photograph, oversized time
   marginalia, small copy. Alternates left/right/full-bleed so
   the reading feels like turning pages.
   ============================================================= */
.p-life-editorial{
  padding-block:var(--p-pad-section) 0;
  background:var(--p-ivory);
  overflow:hidden;
}
.p-life-lede{
  margin-top:clamp(2.5rem, 3vh, 4rem);
  max-width:38rem;
  font-size:var(--p-fs-lead);
  color:var(--p-ink-soft);
  line-height:1.55;
}
.p-day-essay{
  margin-top:clamp(4rem, 5vh, 6rem);
}
.p-day-page{
  padding-block:clamp(4rem, 3rem + 5vw, 8rem);
  position:relative;
}
.p-day-page + .p-day-page{border-top:1px solid var(--p-line);}
.p-day-full + .p-day-page,
.p-day-page + .p-day-full{border-top:0;}

.p-day-inner{
  display:grid;
  grid-template-columns:120px minmax(0,1fr) minmax(0,1.3fr);
  column-gap:clamp(1.5rem, 1rem + 2vw, 3.5rem);
  row-gap:2rem;
  align-items:start;
}
.p-day-right .p-day-inner{
  grid-template-columns:120px minmax(0,1fr) minmax(0,1.3fr);
}
.p-day-left .p-day-inner{
  grid-template-columns:minmax(0,1.3fr) 120px minmax(0,1fr);
}
.p-day-marginalia{
  padding-top:.4rem;
  border-top:1px solid var(--p-ink);
}
.p-day-hour{
  display:block;
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2.8rem, 1.6rem + 3.5vw, 5rem);
  line-height:1;
  letter-spacing:-.03em;
  color:var(--p-ink);
}
.p-day-hour small{
  font-size:.5em;
  color:var(--p-muted);
  font-family:var(--p-body);
  font-weight:500;
  letter-spacing:0;
}
.p-day-hour-light{color:#fff;}
.p-day-hour-light small{color:rgba(255,255,255,.6);}
.p-day-label{
  margin-top:.9rem;
  font-family:var(--p-body);
  font-size:.72rem;
  font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
}
.p-day-text{
  max-width:34rem;
  padding-top:.4rem;
}
.p-day-title{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.9rem, 1.2rem + 2.4vw, 3.4rem);
  line-height:1.02;
  letter-spacing:-.02em;
  color:var(--p-ink);
}
.p-day-title .p-mask{display:inline-block;}
.p-day-title.p-on-dark{color:#fff;}
.p-day-body{
  margin-top:1.4rem;
  font-size:var(--p-fs-body);
  line-height:1.65;
  color:var(--p-ink-soft);
  max-width:34em;
}
.p-day-body.p-on-dark{color:rgba(255,255,255,.85);}

.p-day-photo{
  position:relative;
  overflow:hidden;
  aspect-ratio:4/5;
  background:var(--p-ivory-2);
}
.p-day-photo img{
  width:100%;height:100%;object-fit:cover;
  transform:scale(1.05);
  will-change:transform;
}
.p-day-photo figcaption{
  position:absolute;
  left:1rem;bottom:1rem;
  color:#fff;
  font-family:var(--p-body);
  font-size:.72rem;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  padding:.5em .8em;
  background:rgba(6,10,20,.55);
  backdrop-filter:blur(6px);
}

.p-day-full{
  padding:0;
}
.p-day-full-stage{
  position:relative;
  min-height:clamp(540px, 82vh, 780px);
  overflow:hidden;
  isolation:isolate;
  color:#fff;
}
.p-day-full-stage .p-photo-fill{
  position:absolute;inset:0;z-index:0;
}
.p-day-full-stage .p-photo-fill img{transform:scale(1.08);}
.p-day-full-scrim{
  position:absolute;inset:0;z-index:1;
  background:
    linear-gradient(180deg, rgba(6,10,20,.65) 0%, rgba(6,10,20,.15) 35%, rgba(6,10,20,.75) 100%);
}
.p-day-full-inner{
  position:relative;z-index:2;
  max-width:var(--p-container);
  margin-inline:auto;
  padding:clamp(4rem, 3rem + 6vh, 7rem) var(--p-side);
  min-height:inherit;
  display:flex;flex-direction:column;justify-content:flex-end;
}
.p-day-full-inner .p-day-hour{margin-bottom:.6rem;}
.p-day-full-inner .p-day-title{margin-top:1rem;max-width:16ch;}
.p-day-full-inner .p-day-body{max-width:38em;}
.p-day-quiet .p-day-full-scrim{
  background:
    linear-gradient(180deg, rgba(6,10,20,.85) 0%, rgba(6,10,20,.35) 40%, rgba(6,10,20,.85) 100%);
}

@media (max-width:820px){
  .p-day-inner,
  .p-day-right .p-day-inner,
  .p-day-left .p-day-inner{
    grid-template-columns:1fr;
    row-gap:1.6rem;
  }
  .p-day-photo{aspect-ratio:4/3;}
  .p-day-marginalia{border-top:0;}
}

/* =============================================================
   7. DIGITAL APS  —  Editorial technology feature
   ============================================================= */
.p-digital-editorial{
  padding-block:var(--p-pad-section);
  background:var(--p-ink);
  color:#fff;
  overflow:hidden;
}
.p-digital-editorial .p-digital-title{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2.6rem, 1.4rem + 5vw, 6rem);
  line-height:.98;
  letter-spacing:-.03em;
  color:#fff;
}
.p-digital-head{
  display:grid;
  grid-template-columns:1.4fr 1fr;
  gap:clamp(2rem, 1rem + 3vw, 4.5rem);
  align-items:end;
  margin-bottom:clamp(3.5rem, 4vh, 5.5rem);
}
.p-digital-lede{
  font-size:var(--p-fs-lead);
  line-height:1.55;
  color:rgba(255,255,255,.82);
  max-width:38rem;
}
@media (max-width:820px){
  .p-digital-head{grid-template-columns:1fr;}
}
.p-digital-spread{
  display:grid;
  grid-template-columns:1.05fr 1fr;
  gap:clamp(2.5rem, 1rem + 4vw, 5.5rem);
  align-items:start;
}
.p-digital-visual{position:relative;}
.p-photo-anchor{
  aspect-ratio:4/5;
  background:#0a0f1a;
}
.p-digital-quote{
  margin-top:clamp(2rem, 3vh, 3rem);
  padding-left:clamp(1rem, 1.5vw, 1.75rem);
  border-left:1px solid var(--p-gold-soft);
  font-family:var(--p-display);
  color:#fff;
  max-width:22ch;
}
.p-digital-quote p{
  font-size:clamp(1.8rem, 1.2rem + 2vw, 2.8rem);
  line-height:1.05;
  letter-spacing:-.02em;
  color:var(--p-gold-soft);
}
.p-digital-quote cite{
  display:block;
  margin-top:1.2rem;
  font-family:var(--p-body);
  font-style:normal;
  font-size:var(--p-fs-caption);
  letter-spacing:.02em;
  color:rgba(255,255,255,.6);
}
.p-digital-terms{
  display:flex;flex-direction:column;
  gap:1.6rem;
}
.p-term{
  display:grid;
  grid-template-columns:56px 1fr;
  gap:clamp(1rem, .5rem + .8vw, 1.5rem);
  padding-block:1.2rem;
  border-top:1px solid rgba(255,255,255,.14);
  align-items:baseline;
}
.p-term:last-child{border-bottom:1px solid rgba(255,255,255,.14);}
.p-term-num{
  font-family:var(--p-display);
  font-style:italic;
  font-size:1.15rem;
  color:var(--p-gold-soft);
  letter-spacing:.02em;
}
.p-term-name{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.15rem, 1rem + .5vw, 1.5rem);
  line-height:1.15;
  color:#fff;
  margin-bottom:.5rem;
  display:block;
}
.p-term-body{
  font-size:var(--p-fs-body);
  line-height:1.6;
  color:rgba(255,255,255,.76);
  max-width:36em;
}
@media (max-width:820px){
  .p-digital-spread{grid-template-columns:1fr;}
}

/* =============================================================
   10. ALUMNI  —  Contact-sheet portrait gallery
   ============================================================= */
.p-alumni-editorial{
  padding-block:var(--p-pad-section);
  background:var(--p-paper);
  overflow:hidden;
}
.p-alumni-head-editorial{
  display:grid;
  grid-template-columns:1.4fr 1fr;
  gap:clamp(2rem, 1rem + 3vw, 4.5rem);
  align-items:end;
  margin-bottom:clamp(3.5rem, 4vh, 5.5rem);
}
.p-alumni-editorial .p-alumni-title{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2.6rem, 1.4rem + 5vw, 5.5rem);
  line-height:.98;
  letter-spacing:-.03em;
  color:var(--p-ink);
}
.p-alumni-lede{
  font-size:var(--p-fs-lead);
  line-height:1.55;
  color:var(--p-ink-soft);
  max-width:38rem;
}
@media (max-width:820px){
  .p-alumni-head-editorial{grid-template-columns:1fr;}
}

.p-alumni-sheet-wrap{
  margin-top:clamp(2.5rem, 3vh, 4rem);
}
.p-alumni-sheet-caption{
  font-family:var(--p-body);
  font-size:.72rem;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
  margin-bottom:1.2rem;
  padding-bottom:1rem;
  border-bottom:1px solid var(--p-line);
}
.p-alumni-sheet{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:clamp(1rem, .5rem + 1vw, 2rem);
  align-items:start;
}
.p-alumni-frame{
  position:relative;
  overflow:hidden;
  background:var(--p-ivory-2);
  aspect-ratio:4/5;
  transition:transform .8s cubic-bezier(.19,1,.22,1);
}
.p-alumni-frame img{
  width:100%;height:100%;
  object-fit:cover;
  filter:grayscale(15%) contrast(1.02);
  transition:filter .8s ease, transform 1.2s ease;
  will-change:transform;
}
.p-alumni-frame:hover img{
  filter:grayscale(0) contrast(1);
  transform:scale(1.03);
}
.p-alumni-frame figcaption{
  position:absolute;
  left:0;right:0;bottom:0;
  padding:.8em 1em;
  font-family:var(--p-body);
  font-size:.72rem;
  font-weight:500;
  letter-spacing:.03em;
  color:#fff;
  background:linear-gradient(180deg, rgba(6,10,20,0) 0%, rgba(6,10,20,.85) 100%);
  padding-top:2.5em;
}
.p-frame-lg{grid-column:span 2;grid-row:span 2;aspect-ratio:4/5;}
.p-frame-tall{grid-row:span 2;aspect-ratio:3/5;}
@media (max-width:900px){
  .p-alumni-sheet{grid-template-columns:repeat(3, 1fr);}
  .p-frame-lg{grid-column:span 2;grid-row:span 1;aspect-ratio:4/5;}
  .p-frame-tall{grid-row:span 1;aspect-ratio:4/5;}
}
@media (max-width:600px){
  .p-alumni-sheet{grid-template-columns:repeat(2, 1fr);}
  .p-frame-lg{grid-column:span 2;}
}

.p-alumni-fields-wrap{
  margin-top:clamp(4rem, 5vh, 7rem);
  padding-top:clamp(2rem, 3vh, 4rem);
  border-top:1px solid var(--p-line);
}
.p-alumni-fields-eyebrow{
  font-family:var(--p-body);
  font-size:.72rem;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
  margin-bottom:1.6rem;
}
.p-alumni-fields-list{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  column-gap:clamp(2rem, 1rem + 3vw, 4rem);
}
.p-af{
  display:grid;
  grid-template-columns:52px 1fr;
  gap:clamp(1rem, .5rem + .8vw, 1.5rem);
  padding-block:1.4rem;
  border-top:1px solid var(--p-line);
  align-items:baseline;
}
.p-af:nth-last-child(-n+2){border-bottom:1px solid var(--p-line);}
.p-af-num{
  font-family:var(--p-display);
  font-style:italic;
  font-size:1.25rem;
  color:var(--p-terra);
  letter-spacing:.02em;
}
.p-af-name{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.3rem, 1rem + .8vw, 1.75rem);
  color:var(--p-ink);
  line-height:1.1;
  display:block;
  margin-bottom:.5rem;
}
.p-af-body{
  font-size:var(--p-fs-body);
  line-height:1.6;
  color:var(--p-ink-soft);
  max-width:34em;
  display:block;
}
@media (max-width:720px){
  .p-alumni-fields-list{grid-template-columns:1fr;}
  .p-af:nth-last-child(-n+2){border-bottom:0;}
  .p-af:last-child{border-bottom:1px solid var(--p-line);}
}

/* =============================================================
   12. ADMISSIONS  —  Editorial application spread
   ============================================================= */
.p-adm-editorial{
  padding-block:var(--p-pad-section);
  background:var(--p-ivory);
  overflow:hidden;
}
.p-adm-editorial .p-adm-title{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2.8rem, 1.4rem + 5vw, 6rem);
  line-height:.98;
  letter-spacing:-.03em;
  color:var(--p-ink);
}
.p-adm-head{max-width:60rem;}

.p-adm-date-block{
  margin-top:clamp(4rem, 5vh, 7rem);
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:clamp(2.5rem, 2rem + 3vw, 5rem);
  align-items:center;
  padding-block:clamp(2rem, 3vh, 4rem);
  border-top:1px solid var(--p-ink);
  border-bottom:1px solid var(--p-line);
}
.p-adm-date{
  display:grid;
  grid-template-columns:auto;
  gap:.4rem;
  padding-right:clamp(1rem, 1.5vw, 2rem);
  border-right:1px solid var(--p-line);
}
.p-adm-date-day{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(5.5rem, 3rem + 8vw, 10rem);
  line-height:1;
  letter-spacing:-.04em;
  color:var(--p-terra);
}
.p-adm-date-mo{
  font-family:var(--p-display);
  font-style:italic;
  font-size:clamp(1.4rem, 1rem + 1vw, 2rem);
  color:var(--p-ink);
  line-height:1;
}
.p-adm-date-rule{
  display:block;height:1px;background:var(--p-line);
  margin-block:.6rem;
}
.p-adm-date-note{
  font-family:var(--p-body);
  font-size:.72rem;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-muted);
}
.p-adm-editorial .p-adm-lede{
  font-family:var(--p-body);
  font-size:var(--p-fs-lead);
  line-height:1.55;
  color:var(--p-ink-soft);
  max-width:38rem;
}
.p-adm-editorial .p-adm-lede strong{color:var(--p-ink);font-weight:500;}
@media (max-width:820px){
  .p-adm-date-block{grid-template-columns:1fr;gap:1.5rem;}
  .p-adm-date{border-right:0;padding-right:0;}
}

.p-adm-centres{
  margin-top:clamp(3rem, 4vh, 5rem);
  display:flex;flex-wrap:wrap;align-items:baseline;
  gap:.6rem clamp(1rem, .5rem + 1vw, 2rem);
}
.p-adm-centres-label{
  font-family:var(--p-body);
  font-size:.72rem;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
  flex-shrink:0;
}
.p-adm-centres-list{
  display:flex;flex-wrap:wrap;
  gap:.6rem clamp(1rem, .8rem + .8vw, 2rem);
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.15rem, 1rem + .6vw, 1.5rem);
  line-height:1.15;
  color:var(--p-ink);
}
.p-adm-centres-list li{
  position:relative;
  padding-right:clamp(.5rem, 1vw, 1.2rem);
}
.p-adm-centres-list li:not(:last-child)::after{
  content:"·";
  position:absolute;right:-.3em;top:0;
  color:var(--p-terra);
  opacity:.7;
}

.p-adm-paths{
  margin-top:clamp(4rem, 5vh, 6rem);
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:0;
}
.p-adm-path{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:clamp(1.5rem, 1rem + 1.5vw, 2.5rem);
  padding:clamp(2rem, 1rem + 2vw, 3rem) clamp(1.5rem, 1rem + 1.5vw, 2.5rem);
  border-top:1px solid var(--p-ink);
  border-right:1px solid var(--p-line);
  align-items:baseline;
}
.p-adm-path:last-child{border-right:0;}
.p-adm-path-key{
  font-family:var(--p-display);
  font-style:italic;
  font-size:clamp(1.4rem, 1rem + 1.2vw, 2rem);
  color:var(--p-terra);
  line-height:1;
}
.p-adm-path-heading{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.3rem, 1rem + .8vw, 1.75rem);
  line-height:1.15;
  color:var(--p-ink);
  margin-bottom:.6rem;
}
.p-adm-path-body p{
  font-size:var(--p-fs-body);
  line-height:1.6;
  color:var(--p-ink-soft);
  max-width:32em;
}
@media (max-width:820px){
  .p-adm-paths{grid-template-columns:1fr;}
  .p-adm-path{border-right:0;}
  .p-adm-path:last-child{border-bottom:1px solid var(--p-line);}
}

.p-adm-editorial .p-adm-actions{
  margin-top:clamp(4rem, 5vh, 6rem);
  display:flex;flex-wrap:wrap;
  gap:clamp(.8rem, .5rem + .5vw, 1.2rem);
}

/* =============================================================
   ROUTINE  ·  coda to the Life day-essay
   A three-column printed-timetable composition — the poetic day
   above, the actual clock below. Uses the display serif for time
   entries so the whole thing still reads as one editorial page.
   ============================================================= */
.p-routine{
  padding-block:clamp(4rem, 3rem + 4vw, 7rem);
  border-top:1px solid var(--p-line);
}
.p-routine-head{
  max-width:44rem;
  margin-bottom:clamp(3rem, 4vh, 5rem);
}
.p-routine-head .p-spread-heading{margin-top:.6rem;}
.p-routine-lede{
  margin-top:1.6rem;
  font-family:var(--p-body);
  font-size:var(--p-fs-lead);
  color:var(--p-ink-soft);
  line-height:1.55;
  max-width:38rem;
}
.p-routine-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4rem);
  align-items:start;
}
.p-routine-col{position:relative;}
.p-routine-part{
  font-family:var(--p-body);
  font-size:.72rem;
  font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
  padding-bottom:.9rem;
  border-bottom:1px solid var(--p-ink);
  margin-bottom:.4rem;
}
.p-routine-list{
  list-style:none;padding:0;margin:0;
}
.p-routine-list li{
  display:grid;
  grid-template-columns:minmax(100px, 130px) 1fr;
  gap:clamp(.8rem, .4rem + .8vw, 1.2rem);
  align-items:baseline;
  padding-block:.75rem;
  border-bottom:1px solid var(--p-line);
}
.p-routine-list li:last-child{border-bottom:0;}
.p-r-t{
  font-family:var(--p-display);
  font-weight:400;
  font-size:1.1rem;
  color:var(--p-gold);
  line-height:1.1;
  letter-spacing:.01em;
  white-space:nowrap;
}
.p-r-n{
  font-family:var(--p-body);
  font-size:.92rem;
  color:var(--p-ink);
  line-height:1.4;
}
.p-r-n em{color:var(--p-muted);font-style:italic;}
.p-r-break{
  background:linear-gradient(90deg, rgba(184,146,58,.05) 0%, transparent 60%);
  padding-inline:.5rem;
  margin-inline:-.5rem;
}
.p-r-break .p-r-n{color:var(--p-terra);text-transform:uppercase;letter-spacing:.05em;font-size:.82rem;font-weight:500;}
.p-r-final{
  border-top:2px solid var(--p-ink) !important;
  border-bottom:0 !important;
  margin-top:.6rem;
  padding-top:1rem !important;
}
.p-r-final .p-r-t,
.p-r-final .p-r-n{
  color:var(--p-ink);
  font-family:var(--p-body);
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:.9rem;
}
.p-routine-signoff{
  margin-top:clamp(3rem, 4vh, 4rem);
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:1px solid var(--p-line);
  font-family:var(--p-body);
  font-size:var(--p-fs-caption);
  color:var(--p-muted);
  line-height:1.6;
}
.p-routine-signoff a{color:var(--p-terra);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.3em;}
.p-routine-signoff a:hover{color:var(--p-ink);}
@media (max-width:820px){
  .p-routine-grid{grid-template-columns:1fr;gap:2.5rem;}
}

/* =============================================================
   FEES  ·  Chapter Nine — Editorial financial statement
   The amounts sit at prospectus scale (bigger than the site
   version). Categorised in three blocks with hairline rows.
   ============================================================= */
.p-fees-editorial{
  padding-block:var(--p-pad-section);
  background:var(--p-ivory);
  overflow:hidden;
}
.p-fees-editorial .p-fees-title{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2.6rem, 1.4rem + 5vw, 5.8rem);
  line-height:.98;
  letter-spacing:-.03em;
  color:var(--p-ink);
}
.p-fees-head{max-width:60rem;}

.p-fees-date-block{
  margin-top:clamp(4rem, 5vh, 6rem);
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:clamp(2.5rem, 2rem + 3vw, 5rem);
  align-items:center;
  padding-block:clamp(2rem, 3vh, 3.5rem);
  border-top:1px solid var(--p-ink);
  border-bottom:1px solid var(--p-line);
}
.p-fees-date{
  display:grid;
  grid-template-columns:auto;
  row-gap:.3rem;
  padding-right:clamp(1rem, 1.5vw, 2rem);
  border-right:1px solid var(--p-line);
}
.p-fees-date-eyebrow{
  font-family:var(--p-body);
  font-size:.7rem;
  font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
}
.p-fees-date-mo{
  font-family:var(--p-display);
  font-weight:400;
  font-style:italic;
  font-size:clamp(1.5rem, 1rem + 1.4vw, 2.4rem);
  color:var(--p-ink);
  line-height:1;
  margin-top:.6rem;
}
.p-fees-date-yr{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(4.5rem, 2.5rem + 6vw, 8rem);
  line-height:.9;
  letter-spacing:-.04em;
  color:var(--p-terra);
}
.p-fees-date-note{
  font-family:var(--p-body);
  font-size:.7rem;
  font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-muted);
  margin-top:.4rem;
}
.p-fees-lede{
  font-size:var(--p-fs-lead);
  line-height:1.55;
  color:var(--p-ink-soft);
  max-width:38rem;
}
.p-fees-lede strong{color:var(--p-ink);font-weight:500;}
@media (max-width:820px){
  .p-fees-date-block{grid-template-columns:1fr;gap:1.5rem;}
  .p-fees-date{border-right:0;padding-right:0;}
}

.p-fees-body{
  margin-top:clamp(4rem, 5vh, 6rem);
  display:grid;
  grid-template-columns:1fr;
  gap:clamp(3rem, 4vh, 5rem);
}
.p-fees-block-label{
  font-family:var(--p-body);
  font-size:.72rem;
  font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-gold);
  padding-bottom:1rem;
  margin-bottom:.4rem;
  border-bottom:1px solid var(--p-line);
}
.p-fees-lines{
  display:flex;flex-direction:column;
}
.p-fees-line{
  display:grid;
  grid-template-columns:minmax(0, 2.4fr) minmax(0, 1.2fr) minmax(0, 1fr);
  gap:clamp(1rem, .5rem + 1vw, 2rem);
  align-items:baseline;
  padding-block:clamp(1.2rem, .8rem + .8vw, 1.8rem);
  border-bottom:1px solid var(--p-line);
}
.p-fees-line:last-child{border-bottom:0;}
.p-fees-name{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.25rem, 1rem + .8vw, 1.8rem);
  line-height:1.15;
  color:var(--p-ink);
}
.p-fees-note{
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-muted);
  font-style:italic;
  letter-spacing:.01em;
}
.p-fees-amt{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2rem, 1.2rem + 2vw, 3.4rem);
  line-height:1;
  color:var(--p-ink);
  text-align:right;
  letter-spacing:-.02em;
  white-space:nowrap;
}
.p-fees-amt small{
  display:inline-block;
  font-family:var(--p-body);
  font-size:.4em;
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--p-terra);
  margin-right:.6em;
  vertical-align:.4em;
}
@media (max-width:640px){
  .p-fees-line{
    grid-template-columns:1fr auto;
    gap:.4rem clamp(.5rem,1vw,1rem);
  }
  .p-fees-name{grid-column:1;grid-row:1;}
  .p-fees-amt{grid-column:2;grid-row:1;}
  .p-fees-note{grid-column:1 / -1;grid-row:2;}
}
.p-fees-footnote{
  margin-top:clamp(3rem, 4vh, 4.5rem);
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:1px solid var(--p-line);
  font-family:var(--p-body);
  font-size:var(--p-fs-caption);
  color:var(--p-muted);
  line-height:1.6;
  max-width:44rem;
}
.p-fees-footnote a{color:var(--p-terra);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.3em;}
.p-fees-footnote a:hover{color:var(--p-ink);}

/* ================================================================
   Reduced motion — kill all the cinematic transitions but preserve
   layout & content. Nothing here fights the main site's motion rules
   because prospectus classes are all p-* scoped.
   ================================================================ */
@media (prefers-reduced-motion:reduce){
  .prospectus *,.prospectus *::before,.prospectus *::after{
    animation-duration:.001ms !important;
    transition-duration:.001ms !important;
  }
  .p-mask > *{transform:none !important;}
  .p-fade{opacity:1 !important;transform:none !important;}
  .p-story-figure,.p-facility-media{clip-path:none !important;}
  .p-story-figure img,.p-facility-media img{transform:none !important;}
  .p-photo img,.p-alumni-frame img,.p-day-photo img{transform:none !important;}
  .p-alumni-frame:hover img{transform:none !important;}
  .p-word{position:relative;opacity:1;transform:none;top:0;left:0;display:block;margin-block:.4em;}
  .p-cascade-final{position:relative;opacity:1;transform:none;top:0;left:0;display:block;margin-top:1rem;}
  .p-experience-stage{height:auto;padding-block:var(--p-pad-section);}
  .p-cascade{position:relative;text-align:left;}
}

/* ================================================================
   ================================================================
   PROSPECTUS  ·  PHASE 1 REBUILD (Sections 01 – 18)
   Added on top of the earlier editorial-redesign layer. All new
   classes are prefixed p-* and additive: they don't replace any
   earlier rules. A new blackletter typeface (UnifrakturCook) is
   introduced only where called out on the printed prospectus's
   masthead / motto moments — everywhere else the display serif
   and body sans stay the same.
   ================================================================
   ================================================================ */

/* ---- New primitives (typography + section head + placeholders) --- */

.p-blackletter{
  font-family:"UnifrakturCook","Cormorant Garamond",serif;
  font-weight:700;
  letter-spacing:.01em;
  display:block;
  line-height:1;
}
.p-blackletter-light{color:#fff;}

/* Big roman chapter number used at every section head — the printed
   prospectus's page-number motif, promoted to a first-class element. */
.p-section-num{
  display:inline-block;
  font-family:var(--p-display);
  font-style:italic;
  font-weight:400;
  font-size:clamp(2rem, 1rem + 2vw, 3.2rem);
  line-height:1;
  color:var(--p-terra);
  margin-bottom:.9rem;
}
.p-section-num-light{color:var(--p-gold-soft);}

.p-section-head{
  max-width:50rem;
  margin-bottom:clamp(3rem, 4vh, 5.5rem);
}
.p-section-heading{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2.4rem, 1.4rem + 3.4vw, 5rem);
  line-height:1;
  letter-spacing:-.03em;
  color:var(--p-ink);
  margin-top:.4rem;
}

/* Signposted placeholder for content the user has not supplied yet */
.p-placeholder-label{
  display:inline-flex;align-items:center;gap:.6em;
  font-family:var(--p-body);
  font-size:.72rem;
  font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
  padding:.5em .9em;
  border:1px dashed var(--p-terra);
  border-radius:2px;
  margin-bottom:1.6rem;
}

/* ---- New sticky-nav elements ---- */

.p-nav-toc{
  display:none;
  align-items:center;gap:.5em;
  padding:.55em 1em;
  border:1px solid currentColor;
  border-radius:999px;
  font-family:var(--p-body);
  font-size:.7rem;font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:inherit;
  cursor:pointer;
  transition:opacity .3s ease;
}
@media (min-width:900px){ .p-nav-toc{display:inline-flex;} }
.p-nav-toc svg{width:16px;height:16px;}

.p-toc-drawer{
  position:fixed;
  top:0;right:0;bottom:0;
  width:min(560px, 92vw);
  z-index:200;
  background:var(--p-paper);
  color:var(--p-ink);
  transform:translateX(100%);
  transition:transform .5s cubic-bezier(.19,1,.22,1);
  overflow-y:auto;
  box-shadow:-16px 0 60px -18px rgba(6,10,20,.35);
}
.p-toc-drawer[hidden]{display:block !important;}
.p-toc-drawer.is-open{transform:translateX(0);}
.p-toc-drawer-inner{padding:clamp(1.8rem, 1.2rem + 2vw, 3rem);}
.p-toc-close{
  position:absolute;top:1rem;right:1.2rem;
  width:2.4rem;height:2.4rem;
  border:0;background:transparent;color:var(--p-ink);
  font-size:1.8rem;line-height:1;cursor:pointer;
  border-radius:50%;
}
.p-toc-close:hover{background:var(--p-ivory-2);}
.p-toc-heading{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.5rem, 1rem + 1.4vw, 2.2rem);
  line-height:1.05;
  margin-top:.4rem;
  margin-bottom:2rem;
  color:var(--p-ink);
}
.p-toc-list{
  list-style:none;padding:0;margin:0;
  border-top:1px solid var(--p-line);
}
.p-toc-list li{border-bottom:1px solid var(--p-line);}
.p-toc-list a{
  display:grid;
  grid-template-columns:3.4rem 1fr;
  gap:1rem;
  padding:.9rem 0;
  align-items:baseline;
  color:var(--p-ink);
  text-decoration:none;
}
.p-toc-list a:hover .p-toc-name{color:var(--p-terra);}
.p-toc-num{
  font-family:var(--p-display);
  font-style:italic;
  font-size:1.1rem;
  color:var(--p-gold);
}
.p-toc-name{
  font-family:var(--p-body);
  font-size:.95rem;
  line-height:1.35;
  transition:color .3s ease;
}
.p-toc-name em{color:var(--p-muted);font-style:italic;}
.p-toc-later a{opacity:.7;pointer-events:none;}
.p-toc-signoff{
  margin-top:2rem;
  font-family:var(--p-display);
  color:var(--p-muted);
  text-align:center;
  padding-top:1.6rem;
  border-top:1px solid var(--p-line);
}

/* ================================================================
   1.  COVER  —  full-bleed image, vertical tag, blackletter mark
   ================================================================ */
.p-cover{
  position:relative;
  min-height:100vh;
  overflow:hidden;
  isolation:isolate;
  color:#fff;
  background:#0a0f18;
}
.p-cover-bg{position:absolute;inset:-4%;z-index:-2;background:radial-gradient(60% 70% at 20% 15%, rgba(184,146,58,.18), transparent 60%),radial-gradient(80% 90% at 80% 85%, rgba(51,73,64,.35), transparent 55%),linear-gradient(155deg,#0e1a26 0%,#0a1220 55%,#080d17 100%);}
.p-cover-photo{position:absolute;inset:0;z-index:-1;overflow:hidden;}
.p-cover-photo img{width:100%;height:100%;object-fit:cover;transform:scale(1.02);}
.p-cover-scrim{
  position:absolute;inset:0;z-index:0;
  background:linear-gradient(180deg, rgba(6,10,20,.35) 0%, rgba(6,10,20,.05) 30%, rgba(6,10,20,.85) 100%),
             linear-gradient(90deg, rgba(6,10,20,.6) 0%, rgba(6,10,20,0) 40%);
}
.p-cover-vertical{
  position:absolute;
  left:clamp(1rem, 2vw, 2.4rem);
  top:50%;
  transform:translateY(-50%) rotate(-90deg);
  transform-origin:left center;
  display:flex;flex-direction:row;gap:2rem;
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;
  letter-spacing:.32em;
  text-transform:uppercase;
  color:rgba(255,255,255,.75);
  white-space:nowrap;
  z-index:2;
}
@media (max-width:640px){ .p-cover-vertical{display:none;} }
.p-cover-crest{
  position:absolute;
  top:clamp(1.5rem, 2vh, 2.5rem);
  right:clamp(1.5rem, 2vw, 3rem);
  z-index:2;
  width:clamp(64px, 8vw, 96px);
  opacity:.9;
}
.p-cover-crest img{width:100%;height:auto;filter:drop-shadow(0 2px 8px rgba(0,0,0,.35));}
.p-cover-mark{
  position:absolute;
  left:clamp(4rem, 6vw, 8rem);
  bottom:clamp(6rem, 10vh, 10rem);
  right:var(--p-side);
  z-index:2;
}
.p-cover-eyebrow{
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-gold-soft);
  margin-bottom:1.4rem;
}
.p-cover-title{
  font-size:clamp(3.5rem, 1.5rem + 8vw, 8rem);
  color:#fff;
  margin-bottom:1.6rem;
  text-shadow:0 4px 24px rgba(0,0,0,.4);
}
.p-cover-title .p-blackletter{color:#fff;}
.p-cover-session{
  font-family:var(--p-body);
  font-size:.85rem;font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:rgba(255,255,255,.85);
  padding:.5em 0;
  border-block:1px solid rgba(255,255,255,.25);
  display:inline-block;
  margin-bottom:1.2rem;
}
.p-cover-motto{
  font-family:var(--p-display);
  font-style:italic;
  font-size:clamp(1.1rem, 1rem + .5vw, 1.5rem);
  color:var(--p-gold-soft);
  max-width:38ch;
}

/* ================================================================
   1b.  BISMILLAH page — kept intact, styled restrained and reverent
   ================================================================ */
.p-bismillah{
  padding-block:var(--p-pad-section);
  background:var(--p-paper);
  overflow:hidden;
}
/* Image-driven bismillah page — uses the supplied calligraphy artwork.
   The image is centered on the paper background at its natural
   aspect; nothing crops or distorts it. */
.p-bismillah--image{
  padding-block:clamp(1rem, 2vh, 2rem);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:clamp(1rem, 2vh, 1.75rem);
}
.p-bismillah-figure{
  margin:0;
  width:100%;
  max-width:min(1180px, calc(100vw - 2rem));
  padding-inline:1rem;
  display:flex;
  justify-content:center;
}
.p-bismillah-image{
  display:block;
  width:100%;
  height:auto;
  max-height:90vh;
  object-fit:contain;
  filter:drop-shadow(0 12px 32px rgba(74,55,32,.10));
}
@media (min-width:1200px){
  .p-bismillah-figure{ max-width:min(1320px, calc(100vw - 2rem)); }
  .p-bismillah-image{ max-height:92vh; }
}
.p-bismillah-note-wrap{
  width:100%;
}
.p-bismillah-panel{
  max-width:min(44rem, calc(100vw - 3rem));
  margin-inline:auto;
  padding:clamp(2.5rem, 1.5rem + 3vw, 5rem) clamp(1.5rem, 1rem + 2vw, 3.5rem);
  text-align:center;
  border:1px solid var(--p-line);
  background:var(--p-ivory);
  position:relative;
  overflow:hidden;
}
.p-bismillah-panel::before,
.p-bismillah-panel::after{
  content:"";position:absolute;
  width:22px;height:22px;
  border:1px solid var(--p-gold);
  pointer-events:none;
}
.p-bismillah-panel::before{top:0;left:0;border-right:0;border-bottom:0;}
.p-bismillah-panel::after{bottom:0;right:0;border-left:0;border-top:0;}
.p-bismillah-mark{
  /* The ﷽ ligature (U+FDFD) rendered as a display glyph — the Arabic
     stack loads Amiri (imported), with Scheherazade / Noto Naskh as
     graceful fallbacks. Sized conservatively so the ligature never
     spills its panel on narrow viewports. */
  display:block;
  font-family:"Amiri","Scheherazade New","Noto Naskh Arabic","Segoe UI Historic","Traditional Arabic",serif;
  font-weight:400;
  font-size:clamp(3rem, 2rem + 4.5vw, 5.5rem);
  line-height:1.25;
  color:var(--p-terra);
  margin-bottom:1.2rem;
  direction:rtl;
  unicode-bidi:isolate;
  text-align:center;
  max-width:100%;
  overflow-wrap:normal;
  word-break:keep-all;
}
.p-bismillah-line{
  font-family:var(--p-display);
  font-style:italic;
  font-size:clamp(1.15rem, 1rem + .8vw, 1.6rem);
  line-height:1.35;
  color:var(--p-ink);
  margin-bottom:clamp(2rem, 3vh, 3rem);
}
.p-bismillah-note{
  padding-top:clamp(1.5rem, 2vh, 2.2rem);
  border-top:1px solid var(--p-line);
  text-align:left;
}
.p-bismillah-note .p-eyebrow{margin-bottom:1rem;justify-content:flex-start;}
.p-bismillah-note .p-body{font-size:.95rem;line-height:1.65;color:var(--p-ink-soft);}
.p-bismillah-note a{color:var(--p-terra);text-decoration:underline;text-underline-offset:.3em;}
/* Standalone note under the bismillah image — kept compact, centered
   in the paper column, with a hairline rule above rather than a full
   framed panel. */
.p-bismillah--image .p-bismillah-note{
  max-width:min(44rem, calc(100vw - 3rem));
  margin-inline:auto;
  padding:clamp(1.5rem, 2vh, 2.2rem) clamp(1.5rem, 1rem + 2vw, 3rem) 0;
  border-top:1px solid var(--p-line);
  text-align:left;
  background:transparent;
  border-radius:0;
}

/* ================================================================
   1c.  TABLE OF CONTENTS (in-page numbered)
   ================================================================ */
.p-contents{
  padding-block:var(--p-pad-section);
  background:var(--p-ivory);
  overflow:hidden;
}
.p-contents-head{max-width:50rem;margin-bottom:clamp(3rem,4vh,5rem);}
.p-contents-heading{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2.4rem, 1.4rem + 3.4vw, 5rem);
  line-height:1;
  letter-spacing:-.03em;
  color:var(--p-ink);
  margin-top:.4rem;
}
.p-contents-cols{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4.5rem);
}
@media (max-width:820px){ .p-contents-cols{grid-template-columns:1fr;} }
.p-contents-list{
  list-style:none;
  padding:0;margin:0;
  border-top:1px solid var(--p-ink);
}
.p-contents-list li{border-bottom:1px solid var(--p-line);}
.p-contents-list a{
  display:grid;
  grid-template-columns:3.4rem 1fr auto;
  gap:1.2rem;
  padding:1rem 0;
  align-items:baseline;
  color:var(--p-ink);
  text-decoration:none;
  transition:padding-left .3s ease, color .3s ease;
}
.p-contents-list a:hover{padding-left:.6rem;color:var(--p-terra);}
.p-c-num{
  font-family:var(--p-display);
  font-style:italic;
  font-size:1.15rem;
  color:var(--p-gold);
}
.p-c-name{
  font-family:var(--p-body);
  font-size:1rem;
  font-weight:500;
  line-height:1.3;
}
.p-c-name em{color:var(--p-muted);font-style:italic;font-weight:400;}
.p-c-page{
  font-family:var(--p-body);
  font-size:.72rem;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-muted);
}
.p-c-coming a{opacity:.7;cursor:default;}
.p-c-coming a:hover{padding-left:0;color:inherit;}
.p-contents-tagline{
  margin-top:clamp(3rem, 4vh, 4rem);
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:1px solid var(--p-line);
  text-align:center;
  font-family:var(--p-display);
  font-size:clamp(1.15rem, 1rem + .5vw, 1.5rem);
  color:var(--p-muted);
}

/* ================================================================
   SECTION 01  ·  INTRODUCTION
   ================================================================ */
.p-intro{background:var(--p-ivory);}
.p-intro-layout{display:grid;grid-template-columns:1fr;gap:clamp(3rem,4vh,5rem);}
.p-intro-lede{max-width:44rem;}
.p-intro-body{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4.5rem);
}
.p-intro-col{}
@media (max-width:820px){ .p-intro-body{grid-template-columns:1fr;} }
.p-intro-stats{
  list-style:none;padding:0;margin:0;
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:0;
  border-top:1px solid var(--p-ink);
  border-bottom:1px solid var(--p-line);
  margin-top:clamp(2rem,3vh,3rem);
}
.p-intro-stats li{
  padding:clamp(1.6rem,2vh,2.4rem) clamp(1rem,1.5vw,2rem);
  border-right:1px solid var(--p-line);
  display:flex;flex-direction:column;gap:.5rem;
}
.p-intro-stats li:last-child{border-right:0;}
.p-intro-stats strong{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2rem, 1.4rem + 2vw, 3rem);
  line-height:1;
  color:var(--p-ink);
  letter-spacing:-.02em;
}
.p-intro-stats span{
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-ink-soft);
  line-height:1.4;
}
@media (max-width:720px){
  .p-intro-stats{grid-template-columns:repeat(2, 1fr);}
  .p-intro-stats li:nth-child(2){border-right:0;}
  .p-intro-stats li:nth-child(-n+2){border-bottom:1px solid var(--p-line);}
}

/* ================================================================
   SECTION 02  ·  PRINCIPAL
   ================================================================ */
.p-principal{background:var(--p-paper);}
.p-principal-layout{
  display:grid;
  grid-template-columns:minmax(0, 380px) 1fr;
  gap:clamp(2rem, 1rem + 3vw, 5rem);
  align-items:start;
}
@media (max-width:820px){ .p-principal-layout{grid-template-columns:1fr;} }
.p-principal-portrait{
  position:relative;
  border:1px solid var(--p-line);
  padding:clamp(1rem, .8rem + .5vw, 1.4rem);
  background:var(--p-ivory);
}
.p-principal-portrait img{
  width:100%;height:auto;
  aspect-ratio:4/5;
  object-fit:cover;
  display:block;
}
/* Monogram placeholder — used while the Principal's photo is pending.
   Same 4:5 frame, deep ink gradient, initials + role centred. */
.p-principal-portrait--monogram .p-principal-monogram{
  width:100%;
  aspect-ratio:4/5;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:.9rem;
  background:linear-gradient(160deg, #1c2740 0%, #0a0f1a 100%);
  color:var(--p-gold-soft, #d4af66);
  position:relative;
  isolation:isolate;
}
.p-principal-portrait--monogram .p-principal-monogram::after{
  content:"";
  position:absolute;
  inset:8px;
  border:1px solid rgba(212,175,102,.28);
  pointer-events:none;
}
.p-principal-monogram-letters{
  font-family:var(--p-display, "Cormorant Garamond", serif);
  font-weight:400;
  font-size:clamp(3.6rem, 3rem + 3vw, 5.4rem);
  line-height:1;
  letter-spacing:.02em;
}
.p-principal-monogram-role{
  font-family:var(--p-body, "Inter", sans-serif);
  font-size:.7rem;
  font-weight:500;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:rgba(212,175,102,.72);
}
.p-principal-portrait figcaption{
  margin-top:1rem;
  padding-top:1rem;
  border-top:1px solid var(--p-line);
  font-family:var(--p-body);
  font-size:.9rem;
  color:var(--p-ink-soft);
  line-height:1.5;
  text-align:center;
}
.p-principal-message{padding-top:.4rem;}
.p-principal-message .p-body,.p-principal-message .p-lead{max-width:38rem;}
.p-signature{
  margin-top:clamp(2rem, 3vh, 3rem);
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:1px solid var(--p-line);
  display:flex;flex-direction:column;gap:.3rem;
  font-family:var(--p-body);
}
.p-signature-line{
  font-family:var(--p-display);
  font-size:clamp(1.2rem, 1rem + .5vw, 1.5rem);
  color:var(--p-ink);
}
.p-signature-role{
  font-size:.75rem;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-muted);
}

/* ================================================================
   SECTION 03  ·  LEGACY  —  full-bleed navy panel + era strip
   ================================================================ */
.p-legacy{padding:0;background:var(--p-ink);}
.p-legacy-stage{
  position:relative;
  min-height:clamp(560px, 78vh, 820px);
  overflow:hidden;
  isolation:isolate;
  color:#fff;
}
.p-legacy-stage .p-photo-fill{position:absolute;inset:0;z-index:0;}
.p-legacy-stage .p-photo-fill img{transform:scale(1.06);}
.p-legacy-scrim{
  position:absolute;inset:0;z-index:1;
  background:linear-gradient(120deg, rgba(6,10,20,.75) 0%, rgba(6,10,20,.35) 55%, rgba(6,10,20,.65) 100%),
             linear-gradient(180deg, rgba(6,10,20,.35) 0%, rgba(6,10,20,.15) 40%, rgba(6,10,20,.55) 100%);
}
.p-legacy-inner{
  position:relative;z-index:2;
  max-width:var(--p-container);
  margin-inline:auto;
  padding:clamp(5rem, 3rem + 8vh, 9rem) var(--p-side);
  min-height:inherit;
  display:flex;flex-direction:column;justify-content:center;
}
.p-legacy-title{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(2.6rem, 1.4rem + 5vw, 6rem);
  line-height:.98;
  letter-spacing:-.03em;
  color:#fff;
  max-width:20ch;
  margin-top:.6rem;
}
.p-legacy-lede{
  margin-top:1.6rem;
  font-family:var(--p-body);
  font-size:var(--p-fs-lead);
  color:rgba(255,255,255,.82);
  line-height:1.55;
  max-width:44rem;
}
.p-era-strip{
  list-style:none;padding:0;
  background:var(--p-ivory);
  margin-block:0;
  margin-top:0;
}
.p-legacy > .p-container{
  background:var(--p-ivory);
  padding-block:clamp(3rem, 2rem + 3vw, 5rem);
}
.p-era-strip{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:0;
  border-top:1px solid var(--p-ink);
}
@media (max-width:820px){ .p-era-strip{grid-template-columns:1fr;} }
.p-era-strip li{
  display:grid;
  grid-template-columns:6rem 1fr;
  gap:1rem;
  padding:1.4rem 0;
  align-items:baseline;
  border-bottom:1px solid var(--p-line);
  padding-right:clamp(1rem, 1.5vw, 2rem);
}
.p-era-year{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.4rem, 1rem + .8vw, 1.8rem);
  color:var(--p-terra);
  line-height:1;
}
.p-era-line{
  font-family:var(--p-body);
  font-size:.9rem;
  color:var(--p-ink-soft);
  line-height:1.5;
}
.p-legacy-alumni-note{
  margin-top:clamp(3rem, 4vh, 4rem);
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:1px solid var(--p-line);
  max-width:44rem;
}
.p-legacy-alumni-note strong{color:var(--p-ink);font-weight:500;}

/* ================================================================
   SECTION 04  ·  VISION / MISSION / CORE VALUES + CODE OF HONOUR
   ================================================================ */
.p-vision{background:var(--p-ivory);}
.p-vision-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4rem);
  margin-bottom:clamp(4rem, 5vh, 6rem);
}
@media (max-width:820px){ .p-vision-grid{grid-template-columns:1fr;} }
.p-vision-card{
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:2px solid var(--p-ink);
}
.p-vision-mark{
  width:44px;height:44px;
  color:var(--p-terra);
  margin-bottom:1.2rem;
}
.p-vision-mark svg{width:100%;height:100%;}
.p-vision-key{
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-gold);
  margin-bottom:.6rem;
}
.p-vision-title{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.5rem, 1.1rem + 1vw, 2rem);
  line-height:1.1;
  color:var(--p-ink);
  margin-bottom:1rem;
}
/* Code of Honour panel */
.p-code-of-honour{
  padding:clamp(2.5rem, 2rem + 3vw, 4.5rem) clamp(1.8rem, 1rem + 2vw, 3rem);
  background:var(--p-paper);
  border:1px solid var(--p-line);
  position:relative;
  max-width:56rem;
  margin-inline:auto;
}
.p-code-of-honour::before,
.p-code-of-honour::after{
  content:"";position:absolute;
  width:24px;height:24px;
  border:1px solid var(--p-gold);
}
.p-code-of-honour::before{top:-1px;left:-1px;border-right:0;border-bottom:0;}
.p-code-of-honour::after{bottom:-1px;right:-1px;border-left:0;border-top:0;}
.p-code-eyebrow{justify-content:center;color:var(--p-terra);text-align:center;display:flex;}
.p-code-lede{
  text-align:center;
  font-family:var(--p-display);
  font-style:italic;
  font-size:clamp(1.4rem, 1rem + 1.2vw, 2rem);
  color:var(--p-ink);
  margin-block:1.4rem 2.4rem;
}
.p-code-list{
  list-style:none;
  padding:0;margin:0;
  display:flex;flex-direction:column;
  gap:1.4rem;
  counter-reset:coh;
}
.p-code-list li{
  counter-increment:coh;
  display:grid;
  grid-template-columns:2rem 1fr;
  gap:1rem;
  font-family:var(--p-body);
  font-size:1rem;
  line-height:1.65;
  color:var(--p-ink-soft);
}
.p-code-list li::before{
  content:counter(coh, upper-roman) ".";
  font-family:var(--p-display);
  font-style:italic;
  color:var(--p-terra);
  font-size:1rem;
}

/* ================================================================
   SECTION 05  ·  WHY APS (head only new — panels already styled)
   ================================================================ */
.p-why-head{
  padding-block:clamp(4rem, 5vh, 7rem) 0;
  max-width:50rem;
}

/* ================================================================
   SECTION 06  ·  ACADEMIC PROGRAMME
   ================================================================ */
.p-academic{background:var(--p-paper);}
.p-academic-layout{
  display:grid;
  grid-template-columns:1fr 1.1fr;
  gap:clamp(2.5rem, 1rem + 4vw, 5rem);
  align-items:start;
}
@media (max-width:820px){ .p-academic-layout{grid-template-columns:1fr;} }
.p-academic-body{}
.p-academic-stages{margin-top:clamp(2rem,3vh,3rem);padding-top:clamp(1.5rem,2vh,2rem);border-top:1px solid var(--p-line);}
.p-stage-list{
  list-style:none;padding:0;margin-top:1rem;
  display:flex;flex-direction:column;gap:1.6rem;
}
.p-stage-list li{
  display:grid;
  grid-template-columns:9rem 1fr;
  gap:1.2rem;
  padding-block:1rem;
  border-bottom:1px solid var(--p-line);
  align-items:baseline;
}
.p-stage-key{
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
}
.p-stage-list h4{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.2rem, 1rem + .6vw, 1.5rem);
  line-height:1.15;
  color:var(--p-ink);
  margin-bottom:.4rem;
}
.p-stage-list p{font-family:var(--p-body);font-size:.95rem;line-height:1.55;color:var(--p-ink-soft);}

/* ================================================================
   SECTION 07  ·  CURRICULUM & DEPARTMENTS
   ================================================================ */
.p-curriculum{background:var(--p-ivory);}
.p-curriculum-lede{max-width:50rem;margin-bottom:clamp(3rem,4vh,4.5rem);}
.p-dept-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:0;
  border-top:1px solid var(--p-ink);
  border-left:1px solid var(--p-line);
}
@media (max-width:820px){ .p-dept-grid{grid-template-columns:repeat(2, 1fr);} }
@media (max-width:520px){ .p-dept-grid{grid-template-columns:1fr;} }
.p-dept{
  padding:clamp(1.5rem, 1rem + 1.5vw, 2.5rem);
  border-right:1px solid var(--p-line);
  border-bottom:1px solid var(--p-line);
}
.p-dept-key{
  font-family:var(--p-body);
  font-size:.7rem;font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-gold);
  margin-bottom:.6rem;
}
.p-dept h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.3rem, 1rem + .8vw, 1.6rem);
  color:var(--p-ink);
  line-height:1.1;
  margin-bottom:.7rem;
}
.p-dept p{
  font-family:var(--p-body);
  font-size:.9rem;
  color:var(--p-ink-soft);
  line-height:1.55;
}

/* ================================================================
   SECTION 08  ·  CO-CURRICULAR (photo collage + editorial list)
   ================================================================ */
.p-cocurricular{background:var(--p-paper);}
.p-coc-layout{
  display:grid;
  grid-template-columns:1.05fr 1fr;
  gap:clamp(2.5rem, 1rem + 4vw, 5rem);
  align-items:start;
}
@media (max-width:900px){ .p-coc-layout{grid-template-columns:1fr;} }
.p-coc-items{
  display:flex;flex-direction:column;
  gap:1.6rem;margin-top:clamp(2rem,3vh,3rem);
}
.p-coc-item{
  display:grid;
  grid-template-columns:2.4rem 1fr;
  gap:1rem;
  padding-block:1.2rem;
  border-top:1px solid var(--p-line);
  align-items:baseline;
}
.p-coc-item:last-child{border-bottom:1px solid var(--p-line);}
.p-coc-idx{
  font-family:var(--p-display);
  font-style:italic;
  font-size:1.15rem;
  color:var(--p-gold);
}
.p-coc-item h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.2rem, 1rem + .6vw, 1.5rem);
  color:var(--p-ink);
  line-height:1.15;
  margin-bottom:.5rem;
}
.p-coc-item p{
  font-family:var(--p-body);
  font-size:.95rem;
  color:var(--p-ink-soft);
  line-height:1.6;
}
.p-coc-collage{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  grid-template-rows:auto auto;
  gap:clamp(1rem, .5rem + 1vw, 1.8rem);
}
.p-coc-collage .p-photo{background:var(--p-ivory-2);}
.p-coc-collage .p-photo img{width:100%;height:100%;object-fit:cover;}
.p-coc-collage .p-photo-a{aspect-ratio:4/3;}
.p-coc-collage .p-photo-b{aspect-ratio:4/3;margin-top:clamp(2rem,3vw,4rem);}
.p-coc-collage .p-photo-c{aspect-ratio:4/3;}
.p-coc-collage .p-photo-d{aspect-ratio:4/3;margin-top:clamp(2rem,3vw,4rem);}

/* ================================================================
   SECTION 09  ·  SPORTS
   ================================================================ */
.p-sports{background:var(--p-ivory);}
.p-sports-lede{max-width:50rem;margin-bottom:clamp(3rem,4vh,4.5rem);}
.p-sports-grid{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:clamp(1rem, .5rem + 1vw, 2rem);
}
@media (max-width:820px){ .p-sports-grid{grid-template-columns:repeat(2, 1fr);} }

/* 7-tile variant — 4 across the top, 3 centred on the bottom row.
   Uses a 12-column subgrid on the sports section so the second-row
   items can offset by 1.5 columns and land centred. */
.p-sports-grid--7{
  grid-template-columns:repeat(12, 1fr);
}
.p-sports-grid--7 .p-sport-tile{grid-column:span 3;}
.p-sports-grid--7 .p-sport-tile:nth-child(5){grid-column:2 / span 3;}
@media (max-width:820px){
  .p-sports-grid--7{grid-template-columns:repeat(2, 1fr);}
  .p-sports-grid--7 .p-sport-tile,
  .p-sports-grid--7 .p-sport-tile:nth-child(5){grid-column:auto;}
}
.p-sport-tile figure{
  aspect-ratio:1/1;
  overflow:hidden;
  background:var(--p-ivory-2);
  margin-bottom:.8rem;
}
.p-sport-tile figure img{
  width:100%;height:100%;object-fit:cover;
  transition:transform 1.2s ease;
}
.p-sport-tile:hover figure img{transform:scale(1.05);}
.p-sport-tile h4{
  font-family:var(--p-body);
  font-size:.9rem;
  font-weight:500;
  letter-spacing:.02em;
  color:var(--p-ink);
  text-align:center;
}
.p-sports-friendlies{
  margin-top:clamp(3rem, 4vh, 4rem);
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:1px solid var(--p-line);
  max-width:60rem;
}
.p-sports-friendlies .p-body{font-family:var(--p-display);font-size:clamp(1.1rem,1rem+.5vw,1.4rem);color:var(--p-ink);line-height:1.4;}

/* ================================================================
   SECTION 10  ·  HOUSES  (shields + note)
   ================================================================ */
.p-houses{background:var(--p-paper);}
.p-houses-lede{max-width:50rem;margin-bottom:clamp(3rem,4vh,4.5rem);}
.p-house-shields{
  list-style:none;padding:0;margin:0;
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 2vw, 3rem);
}
@media (max-width:820px){ .p-house-shields{grid-template-columns:repeat(2, 1fr);} }
.p-house-shield{
  text-align:center;
  display:flex;flex-direction:column;align-items:center;
}
.p-shield{
  width:clamp(90px, 12vw, 140px);
  aspect-ratio:1/1.15;
  clip-path:polygon(50% 0, 100% 22%, 100% 68%, 50% 100%, 0 68%, 0 22%);
  display:flex;align-items:center;justify-content:center;
  color:#fff;
  font-family:var(--p-display);
  font-size:clamp(1.4rem, 1rem + 1.2vw, 2rem);
  letter-spacing:.05em;
  margin-bottom:1.4rem;
}
.p-house-shield[data-tone="ink"] .p-shield{background:linear-gradient(160deg, #1a2436, #0c1220);}
.p-house-shield[data-tone="pine"] .p-shield{background:linear-gradient(160deg, #445c50, #2b3d35);}
.p-house-shield[data-tone="terra"] .p-shield{background:linear-gradient(160deg, #b56d4d, #7a4530);}
.p-house-shield[data-tone="gold"] .p-shield{background:linear-gradient(160deg, #c9a24b, #8f6c1e);}
.p-house-shield h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.1rem, 1rem + .4vw, 1.35rem);
  color:var(--p-ink);
  line-height:1.15;
  margin-bottom:.4rem;
}
.p-house-shield p{
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-muted);
  line-height:1.5;
  max-width:20ch;
}
.p-house-note{
  margin-top:clamp(4rem, 5vh, 6rem);
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:1px solid var(--p-line);
  max-width:60rem;
}
.p-house-note strong{color:var(--p-ink);font-weight:500;}

/* ================================================================
   SECTION 11  ·  LEADERSHIP
   ================================================================ */
.p-leadership{background:var(--p-ivory);}
.p-leadership-layout{
  display:grid;
  grid-template-columns:1.4fr 1fr;
  gap:clamp(2.5rem, 1rem + 4vw, 5rem);
  align-items:start;
}
@media (max-width:820px){ .p-leadership-layout{grid-template-columns:1fr;} }
.p-leadership-body p{max-width:38rem;}
.p-leadership-stat{
  padding:clamp(2rem, 1.5rem + 2vw, 3rem);
  background:var(--p-paper);
  border:1px solid var(--p-line);
  text-align:center;
}
.p-leadership-stat-num{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(4rem, 2rem + 6vw, 7rem);
  line-height:1;
  color:var(--p-terra);
  letter-spacing:-.03em;
}
.p-leadership-stat-num span{
  display:block;
  font-size:.22em;
  color:var(--p-muted);
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  font-family:var(--p-body);
  margin-top:.6rem;
}
.p-leadership-stat-label{
  margin-top:1.4rem;
  padding-top:1.2rem;
  border-top:1px solid var(--p-line);
  font-family:var(--p-body);
  font-size:.9rem;
  color:var(--p-ink-soft);
  line-height:1.55;
}

/* ================================================================
   SECTION 12  ·  CHARACTER & DISCIPLINE
   ================================================================ */
.p-character{padding:0;background:var(--p-ink);}
.p-character-stage{
  position:relative;
  min-height:clamp(560px, 80vh, 820px);
  overflow:hidden;
  isolation:isolate;
  color:#fff;
}
.p-character-stage .p-photo-fill{position:absolute;inset:0;z-index:0;}
.p-character-stage .p-photo-fill img{transform:scale(1.06);}
.p-character-scrim{
  position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg, rgba(6,10,20,.55) 0%, rgba(6,10,20,.2) 35%, rgba(6,10,20,.75) 100%);
}
.p-character-inner{
  position:relative;z-index:2;
  max-width:var(--p-container);
  margin-inline:auto;
  padding:clamp(5rem, 3rem + 8vh, 9rem) var(--p-side);
  min-height:inherit;
  display:flex;flex-direction:column;justify-content:center;
  text-align:center;
  align-items:center;
}
.p-character-motto{
  font-size:clamp(3.5rem, 2rem + 6vw, 8rem);
  color:#fff;
  margin-block:1.4rem 2rem;
  text-shadow:0 4px 24px rgba(0,0,0,.4);
}
.p-character-lede{
  font-family:var(--p-display);
  font-style:italic;
  font-size:clamp(1.2rem, 1rem + .8vw, 1.6rem);
  color:var(--p-gold-soft);
  max-width:44rem;
  line-height:1.4;
}
.p-character > .p-container{
  background:var(--p-ivory);
  padding-block:clamp(3rem, 2rem + 3vw, 5rem);
}
.p-character-body{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4rem);
}
@media (max-width:820px){ .p-character-body{grid-template-columns:1fr;} }
.p-character-item{
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:2px solid var(--p-ink);
}
.p-character-item h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.2rem, 1rem + .6vw, 1.5rem);
  color:var(--p-ink);
  line-height:1.15;
  margin-block:.5rem 1rem;
}
.p-character-item p{
  font-family:var(--p-body);
  font-size:.95rem;
  color:var(--p-ink-soft);
  line-height:1.6;
}

/* ================================================================
   SECTION 13  ·  BOARDING & HOSTEL LIFE
   ================================================================ */
.p-boarding{background:var(--p-ivory);}
/* Boarding hero — full-width photograph of the boarding houses,
   sits between the section title and the editorial spread below. */
.p-boarding-hero{
  margin:0 0 clamp(2rem, 1.5rem + 2vw, 3.5rem);
  padding:0;
  position:relative;
  overflow:hidden;
  border-radius:0;
  background:var(--p-paper);
}
.p-boarding-hero img{
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:16/7;
  object-fit:cover;
  object-position:center;
}
.p-boarding-hero figcaption{
  margin-top:.9rem;
  font-family:var(--p-body);
  font-size:.82rem;
  letter-spacing:.02em;
  color:var(--p-ink-soft);
  text-align:center;
  font-style:italic;
}
/* Three-up strip of daily life images (mosque, medical centre, house
   corridor) at the bottom of the boarding section. */
.p-boarding-strip{
  margin-top:clamp(2.5rem, 2rem + 2vw, 4rem);
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:clamp(1rem, .8rem + 1vw, 1.75rem);
}
@media (max-width:720px){
  .p-boarding-strip{grid-template-columns:1fr;}
}
.p-boarding-strip-tile{margin:0;}
.p-boarding-strip-tile img{
  display:block;
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
  transition:transform .8s cubic-bezier(.22,1,.36,1);
}
.p-boarding-strip-tile:hover img{transform:scale(1.03);}
.p-boarding-strip-tile figcaption{
  margin-top:.7rem;
  font-family:var(--p-body);
  font-size:.78rem;
  color:var(--p-ink-soft);
  letter-spacing:.02em;
  text-align:center;
}
.p-boarding-layout{
  display:grid;
  grid-template-columns:repeat(12, 1fr);
  grid-auto-rows:min-content;
  gap:clamp(1.5rem, 1rem + 2vw, 3rem);
  align-items:start;
}
@media (max-width:820px){
  .p-boarding-layout{grid-template-columns:1fr;}
  .p-boarding-layout > *{grid-column:1 !important;margin-top:0 !important;}
}
.p-boarding-layout .p-photo-lead{grid-column:1 / span 8;aspect-ratio:16/11;}
.p-boarding-layout .p-photo-inset{grid-column:8 / span 5;aspect-ratio:4/5;margin-top:clamp(4rem,4vw,7rem);z-index:2;box-shadow:0 22px 60px -22px rgba(13,18,32,.35);}
.p-boarding-body{grid-column:1 / span 6;}
.p-boarding-body .p-lead{max-width:38rem;}
.p-boarding-facts{grid-column:8 / span 5;padding-top:clamp(1.5rem,2vh,2rem);border-top:1px solid var(--p-ink);}
.p-boarding-facts-list{
  list-style:none;padding:0;margin-top:1rem;
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:.6rem 1.6rem;
  font-family:var(--p-display);
  font-size:1.1rem;
  color:var(--p-ink);
}
.p-boarding-facts-list li{
  padding-block:.5rem;
  border-bottom:1px solid var(--p-line);
}

/* ================================================================
   SECTION 14  ·  FACILITIES  (photo grid + amenities strip)
   ================================================================ */
.p-facilities{background:var(--p-paper);}
.p-facilities-lede{max-width:50rem;margin-bottom:clamp(3rem,4vh,4.5rem);}
.p-fac-grid{
  list-style:none;padding:0;margin:0;
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:clamp(1.5rem, 1rem + 2vw, 3rem);
}
@media (max-width:820px){ .p-fac-grid{grid-template-columns:repeat(2, 1fr);} }
@media (max-width:520px){ .p-fac-grid{grid-template-columns:1fr;} }
.p-fac-tile figure{
  aspect-ratio:4/3;
  overflow:hidden;
  background:var(--p-ivory-2);
  margin-bottom:.8rem;
}
.p-fac-tile figure img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s ease;}
.p-fac-tile:hover figure img{transform:scale(1.04);}
.p-fac-tile p{
  font-family:var(--p-body);
  font-size:.9rem;font-weight:500;
  color:var(--p-ink);
  letter-spacing:.02em;
}
.p-fac-strip{
  margin-top:clamp(4rem, 5vh, 6rem);
  padding-block:clamp(2rem, 1.5rem + 1.5vw, 3rem);
  border-top:1px solid var(--p-line);
  border-bottom:1px solid var(--p-line);
}
.p-fac-strip .p-body{
  font-family:var(--p-display);
  font-size:clamp(1.1rem, 1rem + .5vw, 1.4rem);
  color:var(--p-ink);
  line-height:1.5;
  margin-top:1rem;
}
.p-fac-strip strong{color:var(--p-terra);font-weight:400;}

/* ================================================================
   SECTION 15  ·  CLASSROOMS & LABORATORIES
   ================================================================ */
.p-classrooms{background:var(--p-ivory);}
.p-classrooms-cols{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4rem);
}
@media (max-width:820px){ .p-classrooms-cols{grid-template-columns:1fr;} }
.p-classrooms-col{
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:2px solid var(--p-ink);
}
.p-classrooms-col h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.3rem, 1rem + .8vw, 1.6rem);
  color:var(--p-ink);
  line-height:1.15;
  margin-block:.6rem 1rem;
}
.p-classrooms-col p{
  font-family:var(--p-body);
  font-size:.95rem;
  color:var(--p-ink-soft);
  line-height:1.6;
}

/* ================================================================
   SECTION 16  ·  LIBRARY
   ================================================================ */
.p-library{padding:0;background:var(--p-ink);}
.p-library-stage{
  position:relative;
  min-height:clamp(500px, 70vh, 720px);
  overflow:hidden;
  isolation:isolate;
  color:#fff;
}
.p-library-stage .p-photo-fill{position:absolute;inset:0;z-index:0;}
.p-library-stage .p-photo-fill img{transform:scale(1.06);}
.p-library-scrim{
  position:absolute;inset:0;z-index:1;
  background:linear-gradient(120deg, rgba(6,10,20,.7) 0%, rgba(6,10,20,.35) 55%, rgba(6,10,20,.6) 100%);
}
.p-library-inner{
  position:relative;z-index:2;
  max-width:var(--p-container);
  margin-inline:auto;
  padding:clamp(4rem, 3rem + 6vh, 7rem) var(--p-side);
  min-height:inherit;
  display:flex;flex-direction:column;justify-content:center;
}
.p-library-body{
  background:var(--p-ivory);
  padding-block:clamp(3rem, 2rem + 3vw, 5rem);
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4rem);
}
@media (max-width:820px){ .p-library-body{grid-template-columns:1fr;} }
.p-library-item{
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:1px solid var(--p-ink);
}
.p-library-item h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.3rem, 1rem + .8vw, 1.6rem);
  color:var(--p-ink);
  line-height:1.2;
  margin-block:.6rem 1rem;
}
.p-library-item p{
  font-family:var(--p-body);
  font-size:.95rem;
  color:var(--p-ink-soft);
  line-height:1.6;
}
.p-library-item strong{color:var(--p-ink);font-weight:500;}

/* ================================================================
   SECTION 17  ·  SPORTS FACILITIES
   ================================================================ */
.p-sports-facilities{background:var(--p-paper);}
.p-sf-layout{
  display:grid;
  grid-template-columns:1fr 1.1fr;
  gap:clamp(2.5rem, 1rem + 4vw, 5rem);
  align-items:start;
}
@media (max-width:820px){ .p-sf-layout{grid-template-columns:1fr;} }
.p-sf-layout .p-photo-tall{aspect-ratio:3/4;}
.p-sf-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:0;}
.p-sf-list li{
  padding-block:1.4rem;
  border-bottom:1px solid var(--p-line);
}
.p-sf-list li:first-child{border-top:2px solid var(--p-ink);padding-top:1.6rem;}
.p-sf-key{
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-gold);
  margin-bottom:.6rem;
}
.p-sf-body{
  font-family:var(--p-body);
  font-size:.95rem;
  color:var(--p-ink-soft);
  line-height:1.6;
  max-width:38em;
}

/* ================================================================
   SECTION 18  ·  DINING & MESS  (reuse boarding layout system)
   ================================================================ */
.p-dining{background:var(--p-ivory);}
.p-dining-layout{
  display:grid;
  grid-template-columns:repeat(12, 1fr);
  gap:clamp(1.5rem, 1rem + 2vw, 3rem);
  align-items:start;
}
@media (max-width:820px){
  .p-dining-layout{grid-template-columns:1fr;}
  .p-dining-layout > *{grid-column:1 !important;}
}
.p-dining-layout .p-photo-lead{grid-column:1 / span 8;aspect-ratio:16/10;}
.p-dining-body{grid-column:1 / span 6;}
.p-dining-body .p-lead{max-width:38rem;}
.p-dining-body strong{color:var(--p-ink);font-weight:500;}
.p-dining-pocket{
  grid-column:8 / span 5;
  padding:clamp(1.5rem, 1rem + 1.5vw, 2rem);
  background:var(--p-paper);
  border:1px solid var(--p-line);
}
.p-dining-pocket .p-eyebrow{margin-bottom:1rem;}
.p-dining-pocket .p-body{font-size:.9rem;line-height:1.6;color:var(--p-ink-soft);}
.p-dining-pocket .p-body + .p-body{margin-top:1rem;}
.p-dining-pocket strong{color:var(--p-terra);font-weight:500;}

/* ================================================================
   PHASE 1 SIGN-OFF NOTE
   ================================================================ */
.p-phase-note{
  padding-block:clamp(3rem, 2vh, 4rem);
  background:var(--p-ink);
  color:#fff;
}
.p-phase-note-inner{
  padding:clamp(1.5rem, 1rem + 1.5vw, 2.2rem);
  border:1px dashed rgba(255,255,255,.25);
  max-width:60rem;
  margin-inline:auto;
}
.p-phase-note-inner .p-eyebrow{color:var(--p-gold-soft);margin-bottom:1rem;}
.p-phase-note-inner .p-body{
  font-family:var(--p-body);
  font-size:.95rem;
  color:rgba(255,255,255,.75);
  line-height:1.6;
}

/* ================================================================
   ================================================================
   PROSPECTUS  ·  PHASE 2 (Sections 19 – 34)
   All new classes below extend the same visual system laid down in
   Phase 1 (Instrument Serif + Inter, ivory/ink/pine/terra/gold).
   New patterns introduced: printed-table styling for the Winter &
   Summer routines and Fee Structure; a staff roster; a photo mosaic
   for Student Life; iconic pillar rows for Achievements; numbered
   admission steps with big roman numerals; details-based FAQ.
   ================================================================
   ================================================================ */

/* ================================================================
   SECTION 19  ·  WELLBEING & PASTORAL CARE
   ================================================================ */
.p-wellbeing{background:var(--p-ivory);}
.p-wellbeing-layout{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4rem);
  padding-top:clamp(1rem, 2vh, 1.5rem);
}
@media (max-width:820px){ .p-wellbeing-layout{grid-template-columns:1fr;} }
.p-wellbeing-col{
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:2px solid var(--p-ink);
}
.p-wellbeing-col h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.4rem, 1rem + 1vw, 1.9rem);
  color:var(--p-ink);
  line-height:1.15;
  margin-block:.6rem 1rem;
}
.p-wellbeing-col p{
  font-family:var(--p-body);
  font-size:.95rem;
  color:var(--p-ink-soft);
  line-height:1.65;
}
.p-wellbeing-col p + p{margin-top:1rem;}
.p-wellbeing-col strong{color:var(--p-ink);font-weight:500;}
.p-wellbeing-strip{
  margin-top:clamp(3rem, 4vh, 4.5rem);
  padding-block:clamp(2rem, 1.5rem + 1.5vw, 3rem);
  border-top:1px solid var(--p-line);
  border-bottom:1px solid var(--p-line);
}
.p-wellbeing-facts{
  list-style:none;padding:0;margin-top:1.2rem;
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:0;
}
.p-wellbeing-facts li{
  padding:1rem clamp(.6rem, .5rem + .5vw, 1.4rem);
  border-right:1px solid var(--p-line);
  display:flex;flex-direction:column;gap:.3rem;
}
.p-wellbeing-facts li:last-child{border-right:0;}
.p-wellbeing-facts strong{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.8rem, 1.4rem + 1.4vw, 2.6rem);
  color:var(--p-terra);
  line-height:1;
}
.p-wellbeing-facts span{
  font-family:var(--p-body);
  font-size:.8rem;
  color:var(--p-ink-soft);
  line-height:1.4;
}
@media (max-width:640px){
  .p-wellbeing-facts{grid-template-columns:repeat(2, 1fr);}
  .p-wellbeing-facts li:nth-child(2){border-right:0;}
  .p-wellbeing-facts li:nth-child(-n+2){border-bottom:1px solid var(--p-line);}
}

/* ================================================================
   SECTION 20  ·  DAILY ROUTINE (Winter & Summer, side-by-side)
   ================================================================ */
.p-routine{background:var(--p-paper);}
.p-routine-double{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4rem);
}
@media (max-width:900px){ .p-routine-double{grid-template-columns:1fr;} }
.p-routine-card{
  padding:clamp(1.5rem, 1rem + 1.5vw, 2.4rem);
  background:var(--p-ivory);
  border:1px solid var(--p-line);
}
.p-routine-card-head{
  display:flex;align-items:flex-end;justify-content:space-between;
  padding-bottom:1.2rem;
  border-bottom:2px solid var(--p-ink);
  margin-bottom:1rem;
}
.p-routine-season{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.5rem, 1rem + 1.2vw, 2rem);
  color:var(--p-ink);
  letter-spacing:-.02em;
}
.p-routine-lights{
  text-align:right;
  display:flex;flex-direction:column;gap:.2rem;
}
.p-routine-lights span{
  font-family:var(--p-body);
  font-size:.68rem;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
}
.p-routine-lights strong{
  font-family:var(--p-display);
  font-weight:400;
  font-size:1.1rem;
  color:var(--p-ink);
}
.p-r2-list{list-style:none;padding:0;margin:0;}
.p-r2-list li{
  display:grid;
  grid-template-columns:minmax(120px, 150px) 1fr;
  gap:.8rem;
  padding-block:.55rem;
  border-bottom:1px solid var(--p-line);
  align-items:baseline;
}
.p-r2-list li:last-child{border-bottom:0;}
.p-r2-t{
  font-family:var(--p-display);
  font-size:.95rem;
  color:var(--p-gold);
  letter-spacing:.01em;
  line-height:1.15;
  white-space:nowrap;
}
.p-r2-n{
  font-family:var(--p-body);
  font-size:.86rem;
  color:var(--p-ink);
  line-height:1.35;
}
.p-r2-n em{color:var(--p-muted);font-style:italic;font-size:.9em;}
.p-r2-break{
  background:linear-gradient(90deg, rgba(184,146,58,.05), transparent 60%);
  padding-inline:.4rem;margin-inline:-.4rem;
}
.p-r2-break .p-r2-n{color:var(--p-terra);text-transform:uppercase;letter-spacing:.05em;font-size:.76rem;font-weight:500;}
.p-r2-final{
  border-top:2px solid var(--p-ink) !important;
  margin-top:.4rem;padding-top:.9rem !important;
}
.p-r2-final .p-r2-t,.p-r2-final .p-r2-n{
  color:var(--p-ink);
  font-family:var(--p-body);
  font-weight:600;text-transform:uppercase;letter-spacing:.08em;
  font-size:.82rem;
}
.p-routine-note{
  margin-top:clamp(2.5rem, 3vh, 3.5rem);
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:1px solid var(--p-line);
  font-family:var(--p-body);
  font-size:var(--p-fs-caption);
  color:var(--p-muted);
  line-height:1.6;
  max-width:60rem;
}

/* ================================================================
   SECTION 21  ·  FACULTY & STAFF DIRECTORY (roster)
   ================================================================ */
.p-faculty{background:var(--p-ivory);}
.p-faculty-lede{max-width:50rem;margin-bottom:clamp(3rem,4vh,4.5rem);}
.p-roster{
  margin-bottom:clamp(3rem, 4vh, 4.5rem);
}
.p-roster-head{
  padding-bottom:1.2rem;
  border-bottom:2px solid var(--p-ink);
  margin-bottom:.6rem;
}
.p-roster-head h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.6rem, 1rem + 1.4vw, 2.2rem);
  color:var(--p-ink);
  line-height:1.1;
  margin-top:.4rem;
}
.p-roster-list{list-style:none;padding:0;margin:0;}
.p-roster-list li{
  display:grid;
  grid-template-columns:minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 2fr);
  gap:1rem;
  padding-block:1rem;
  border-bottom:1px solid var(--p-line);
  align-items:baseline;
}
.p-r-name{
  font-family:var(--p-display);
  font-weight:400;
  font-size:1.1rem;
  color:var(--p-ink);
  line-height:1.2;
}
.p-r-role{
  font-family:var(--p-body);
  font-size:.75rem;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
}
.p-r-quals{
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-ink-soft);
  line-height:1.45;
}
@media (max-width:820px){
  .p-roster-list li{
    grid-template-columns:1fr;
    gap:.3rem;
    padding-block:1.2rem;
  }
}
.p-faculty-footnote{
  margin-top:2rem;
  padding-top:1.5rem;
  border-top:1px solid var(--p-line);
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-muted);
  font-style:italic;
}
.p-faculty-footnote a{color:var(--p-terra);text-decoration:underline;text-underline-offset:.3em;}

/* ================================================================
   SECTION 22  ·  STUDENT LIFE — photo mosaic
   ================================================================ */
.p-student-life{background:var(--p-paper);}
.p-life-mosaic{
  display:grid;
  grid-template-columns:repeat(6, minmax(0,1fr));
  grid-auto-rows:100px;
  gap:clamp(.6rem, .4rem + .5vw, 1rem);
}
.p-life-tile{
  position:relative;
  overflow:hidden;
  background:var(--p-ivory-2);
}
.p-life-tile img{
  width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.2s cubic-bezier(.19,1,.22,1);
}
.p-life-tile:hover img{transform:scale(1.05);}
.p-life-tile figcaption{
  position:absolute;
  left:0;right:0;bottom:0;
  padding:2em 1em .8em;
  font-family:var(--p-body);
  font-size:.72rem;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:#fff;
  background:linear-gradient(180deg, transparent 0%, rgba(6,10,20,.75) 100%);
  opacity:0;
  transform:translateY(1rem);
  transition:opacity .5s ease, transform .5s ease;
}
.p-life-tile:hover figcaption{opacity:1;transform:translateY(0);}
/* Mosaic sizing — asymmetric, editorial */
.p-life-t1{grid-column:1 / span 3;grid-row:span 3;}
.p-life-t2{grid-column:4 / span 2;grid-row:span 2;}
.p-life-t3{grid-column:6 / span 1;grid-row:span 2;}
.p-life-t4{grid-column:4 / span 3;grid-row:span 2;}
.p-life-t5{grid-column:1 / span 2;grid-row:span 2;}
.p-life-t6{grid-column:3 / span 2;grid-row:span 2;}
.p-life-t7{grid-column:5 / span 2;grid-row:span 2;}
.p-life-t8{grid-column:1 / span 3;grid-row:span 2;}
.p-life-t9{grid-column:4 / span 3;grid-row:span 2;}
@media (max-width:900px){
  .p-life-mosaic{grid-template-columns:repeat(2, 1fr);grid-auto-rows:160px;}
  .p-life-tile{grid-column:span 1;grid-row:span 2;}
  .p-life-t1,.p-life-t8,.p-life-t9{grid-column:span 2;}
}

/* ================================================================
   SECTION 23  ·  ACHIEVEMENTS  (icon pillars + placeholder)
   ================================================================ */
.p-achievements{background:var(--p-ivory);}
.p-ach-pillars{
  list-style:none;padding:0;margin:0;
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:clamp(1.5rem, 1rem + 2vw, 3rem);
  margin-bottom:clamp(3rem, 4vh, 4.5rem);
}
@media (max-width:820px){ .p-ach-pillars{grid-template-columns:repeat(2, 1fr);} }
@media (max-width:520px){ .p-ach-pillars{grid-template-columns:1fr;} }
.p-ach-pillars li{
  padding-top:clamp(1.4rem, 1rem + 1vw, 2rem);
  border-top:2px solid var(--p-ink);
  text-align:center;
}
.p-ach-icon{
  width:56px;height:56px;
  margin:0 auto 1.2rem;
  color:var(--p-gold);
  padding:.6rem;
  border:1px solid var(--p-line);
  border-radius:50%;
}
.p-ach-icon svg{width:100%;height:100%;}
.p-ach-pillars h4{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.15rem, 1rem + .4vw, 1.4rem);
  color:var(--p-ink);
  line-height:1.15;
  margin-bottom:.7rem;
}
.p-ach-pillars p{
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-ink-soft);
  line-height:1.55;
}
.p-ach-placeholder{
  padding:clamp(2rem, 1.5rem + 2vw, 3rem);
  background:var(--p-paper);
  border:1px dashed var(--p-terra);
  text-align:center;
  max-width:60rem;
  margin-inline:auto;
}
.p-ach-placeholder .p-placeholder-label{margin-inline:auto;}
.p-ach-placeholder .p-body{
  max-width:44rem;margin-inline:auto;
  font-family:var(--p-body);
  font-size:.95rem;color:var(--p-ink-soft);line-height:1.6;
}

/* ================================================================
   SECTION 24  ·  EVENTS / COMPETITIONS
   ================================================================ */
.p-events{background:var(--p-paper);}
.p-event-feature{
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:clamp(2rem, 1rem + 3vw, 4rem);
  align-items:center;
  margin-bottom:clamp(3rem, 4vh, 5rem);
}
@media (max-width:820px){ .p-event-feature{grid-template-columns:1fr;} }
.p-event-feature .p-photo-lead{aspect-ratio:16/11;}
.p-event-feature h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.6rem, 1rem + 1.6vw, 2.6rem);
  line-height:1.1;
  color:var(--p-ink);
  margin-block:.6rem 1.4rem;
}
.p-event-feature p{
  font-family:var(--p-body);
  font-size:1rem;
  color:var(--p-ink-soft);
  line-height:1.65;
}
.p-event-list{
  list-style:none;padding:0;margin:0;
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:0 clamp(2rem, 1rem + 3vw, 4rem);
}
@media (max-width:820px){ .p-event-list{grid-template-columns:1fr;} }
.p-event-list li{
  display:grid;
  grid-template-columns:6rem 1fr;
  gap:1rem;
  padding-block:1.4rem;
  border-top:1px solid var(--p-line);
  align-items:baseline;
}
.p-event-key{
  font-family:var(--p-body);
  font-size:.72rem;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
}
.p-event-list h4{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.15rem, 1rem + .4vw, 1.4rem);
  color:var(--p-ink);
  line-height:1.15;
  margin-bottom:.5rem;
}
.p-event-list p{
  font-family:var(--p-body);
  font-size:.9rem;
  color:var(--p-ink-soft);
  line-height:1.55;
}

/* ================================================================
   SECTION 25  ·  ALUMNI  (final, real portraits)
   ================================================================ */
.p-alumni-final{background:var(--p-ivory);}
.p-alumni-final-lede{max-width:50rem;margin-bottom:clamp(3rem,4vh,4rem);}
.p-alumni-caption{
  font-family:var(--p-body);
  font-size:.72rem;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
  margin-bottom:1.2rem;
  padding-bottom:1rem;
  border-bottom:1px solid var(--p-line);
}
.p-alumni-sheet-final{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  grid-auto-rows:minmax(180px, auto);
  gap:clamp(1rem, .5rem + 1vw, 1.8rem);
}
.p-alumni-frame-f{
  position:relative;
  overflow:hidden;
  background:var(--p-ivory-2);
  aspect-ratio:4/5;
  transition:transform .8s cubic-bezier(.19,1,.22,1);
}
.p-alumni-frame-f img{
  width:100%;height:100%;object-fit:cover;
  filter:grayscale(15%) contrast(1.02);
  transition:filter .8s ease, transform 1.2s ease;
}
.p-alumni-frame-f:hover img{filter:none;transform:scale(1.03);}
.p-alumni-frame-f figcaption{
  position:absolute;
  left:0;right:0;bottom:0;
  padding:.9em 1em .8em;
  font-family:var(--p-body);
  font-size:.72rem;
  letter-spacing:.02em;
  color:#fff;
  background:linear-gradient(180deg, transparent 0%, rgba(6,10,20,.85) 100%);
  padding-top:2.6em;
  line-height:1.35;
}
.p-alumni-sheet-final .p-frame-lg{grid-column:span 2;grid-row:span 2;}
@media (max-width:900px){
  .p-alumni-sheet-final{grid-template-columns:repeat(3, 1fr);}
  .p-alumni-sheet-final .p-frame-lg{grid-column:span 2;grid-row:span 1;}
}
@media (max-width:600px){
  .p-alumni-sheet-final{grid-template-columns:repeat(2, 1fr);}
  .p-alumni-sheet-final .p-frame-lg{grid-column:span 2;}
}
.p-alumni-final-note{
  margin-top:clamp(2rem, 3vh, 3rem);
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-muted);
  font-style:italic;
}
.p-alumni-final-note a{color:var(--p-terra);text-decoration:underline;text-underline-offset:.3em;}

/* ================================================================
   SECTION 26  ·  ADMISSIONS OVERVIEW
   ================================================================ */
.p-adm-overview{background:var(--p-paper);}
.p-adm-body{
  display:grid;
  grid-template-columns:1.2fr 1fr;
  gap:clamp(2.5rem, 1rem + 4vw, 5rem);
  align-items:start;
}
@media (max-width:820px){ .p-adm-body{grid-template-columns:1fr;} }
.p-adm-body-col p{max-width:38rem;}
.p-adm-body-col strong{color:var(--p-ink);font-weight:500;}
.p-adm-warning{
  padding:clamp(1.6rem, 1rem + 1.5vw, 2.4rem);
  background:var(--p-ivory-2);
  border-left:3px solid var(--p-terra);
}
.p-adm-warning .p-eyebrow{color:var(--p-terra);margin-bottom:1rem;}
.p-adm-warning p{
  font-family:var(--p-body);
  font-size:.92rem;
  color:var(--p-ink-soft);
  line-height:1.65;
}
.p-adm-warning p + p{margin-top:1rem;}
.p-adm-warning strong{color:var(--p-ink);font-weight:500;}

/* ================================================================
   SECTION 27  ·  ADMISSION PROCEDURE  (5 numbered steps)
   ================================================================ */
.p-adm-steps{background:var(--p-ivory);}
.p-adm-steps-list{
  list-style:none;padding:0;margin:0;
  display:flex;flex-direction:column;
  gap:1.4rem;
  counter-reset:step;
}
.p-adm-steps-list li{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:clamp(1.4rem, 1rem + 1.5vw, 2.4rem);
  padding:clamp(1.4rem, 1rem + 1vw, 2rem);
  background:var(--p-paper);
  border:1px solid var(--p-line);
  align-items:flex-start;
}
.p-adm-step-num{
  width:clamp(60px, 5vw + 20px, 90px);
  height:clamp(60px, 5vw + 20px, 90px);
  border:1px solid var(--p-terra);
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:var(--p-terra);
  font-family:var(--p-display);
  font-style:italic;
  font-size:clamp(1.4rem, 1rem + 1vw, 1.8rem);
  flex-shrink:0;
}
.p-adm-step-body h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.3rem, 1rem + .8vw, 1.7rem);
  color:var(--p-ink);
  line-height:1.15;
  margin-block:.4rem .7rem;
}
.p-adm-step-body p{
  font-family:var(--p-body);
  font-size:.95rem;
  color:var(--p-ink-soft);
  line-height:1.6;
  max-width:56rem;
}
.p-adm-step-body strong{color:var(--p-ink);font-weight:500;}
.p-adm-step-body a{color:var(--p-terra);text-decoration:underline;text-underline-offset:.3em;}
@media (max-width:640px){
  .p-adm-steps-list li{grid-template-columns:1fr;}
}

/* ================================================================
   SECTION 28  ·  ELIGIBILITY & REQUIREMENTS
   ================================================================ */
.p-eligibility{background:var(--p-paper);}
.p-elig-list{
  list-style:none;padding:0;margin:0;
  counter-reset:elig;
}
.p-elig-list > li{
  counter-increment:elig;
  padding-block:1.6rem;
  border-bottom:1px solid var(--p-line);
  display:grid;
  grid-template-columns:auto 1fr;
  gap:clamp(1.2rem, 1rem + 1vw, 2rem);
}
.p-elig-list > li::before{
  content:counter(elig, upper-roman) ".";
  font-family:var(--p-display);
  font-style:italic;
  font-size:1.4rem;
  color:var(--p-gold);
  min-width:2.5rem;
}
.p-elig-title{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.15rem, 1rem + .5vw, 1.4rem);
  color:var(--p-ink);
  line-height:1.2;
  margin-bottom:.6rem;
}
.p-elig-body{
  font-family:var(--p-body);
  font-size:.95rem;
  color:var(--p-ink-soft);
  line-height:1.65;
  max-width:56rem;
}
.p-elig-body strong{color:var(--p-ink);font-weight:500;}
.p-elig-body a{color:var(--p-terra);text-decoration:underline;text-underline-offset:.3em;}
.p-elig-weight{
  list-style:none;padding:0;margin-top:.8rem;
  display:flex;flex-wrap:wrap;gap:.6rem 1.2rem;
}
.p-elig-weight li{
  display:inline-flex;align-items:baseline;gap:.4rem;
  padding:.3em .8em;
  background:var(--p-ivory-2);
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-ink);
}
.p-elig-weight strong{
  font-family:var(--p-display);
  font-size:1.05em;
  color:var(--p-terra);
}
.p-elig-tests{
  margin-top:clamp(3rem, 4vh, 4rem);
  padding:clamp(1.8rem, 1rem + 1.5vw, 2.8rem);
  background:var(--p-ivory);
  border:1px solid var(--p-line);
}
.p-elig-tests header{
  padding-bottom:1rem;
  border-bottom:1px solid var(--p-line);
  margin-bottom:1.4rem;
}
.p-elig-tests header h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.4rem, 1rem + 1vw, 1.8rem);
  color:var(--p-ink);
  line-height:1.15;
  margin-top:.4rem;
}
.p-elig-tests-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 4rem);
}
@media (max-width:820px){ .p-elig-tests-grid{grid-template-columns:1fr;} }
.p-elig-tests-grid h4{
  font-family:var(--p-display);
  font-weight:400;
  font-size:1.2rem;
  color:var(--p-ink);
  margin-bottom:.6rem;
}
.p-elig-tests-grid p{
  font-family:var(--p-body);
  font-size:.9rem;
  color:var(--p-ink-soft);
  line-height:1.55;
  margin-bottom:.6rem;
}
.p-elig-tests-grid ul{
  list-style:none;padding:0;
  border-top:1px solid var(--p-line);
  margin-top:.6rem;
}
.p-elig-tests-grid ul li{
  padding-block:.5rem;
  border-bottom:1px solid var(--p-line);
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-ink);
}

/* ================================================================
   SECTION 29  ·  FEE STRUCTURE  (three tables + late-payment)
   ================================================================ */
.p-fees-final{background:var(--p-ivory);}
.p-fees-includes{
  max-width:50rem;
  font-family:var(--p-body);
  font-size:.95rem;
  color:var(--p-ink-soft);
  line-height:1.65;
  margin-bottom:clamp(3rem,4vh,4rem);
}
.p-fees-includes strong{color:var(--p-ink);font-weight:500;}
.p-fee-table{
  margin-bottom:clamp(2.5rem, 3vh, 3.5rem);
}
.p-fee-table-head{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:1.2rem;
  align-items:baseline;
  padding-bottom:1rem;
  border-bottom:2px solid var(--p-ink);
  margin-bottom:0;
}
.p-fee-block-idx{
  font-family:var(--p-display);
  font-style:italic;
  font-size:clamp(1.5rem, 1rem + 1.2vw, 2rem);
  color:var(--p-terra);
  line-height:1;
}
.p-fee-table-head .p-eyebrow{margin-bottom:.4rem;}
.p-fee-note{
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-muted);
  line-height:1.5;
  font-style:italic;
}
.p-fee-t{
  width:100%;
  border-collapse:collapse;
  font-family:var(--p-body);
  font-size:.95rem;
}
.p-fee-t thead th{
  padding:1rem 0;
  text-align:left;
  font-family:var(--p-body);
  font-size:.72rem;
  font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
  border-bottom:1px solid var(--p-line);
}
.p-fee-t th.p-fee-amt-col{text-align:right;}
.p-fee-t th.p-fee-note-col{text-align:left;}
.p-fee-t tbody td{
  padding:1.1rem 0;
  border-bottom:1px solid var(--p-line);
  font-family:var(--p-display);
  font-weight:400;
  font-size:1.05rem;
  color:var(--p-ink);
  line-height:1.3;
  vertical-align:baseline;
}
.p-fee-t td.p-fee-amt{
  text-align:right;
  font-size:clamp(1.3rem, 1rem + .8vw, 1.8rem);
  color:var(--p-terra);
  letter-spacing:-.01em;
  white-space:nowrap;
}
.p-fee-t td.p-fee-note-cell{
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-muted);
  font-style:italic;
}
@media (max-width:640px){
  .p-fee-t th.p-fee-note-col,.p-fee-t td.p-fee-note-cell{display:none;}
}
.p-fee-late{
  margin-top:clamp(3rem, 4vh, 4rem);
  padding:clamp(1.8rem, 1rem + 1.5vw, 2.8rem);
  background:var(--p-paper);
  border:1px solid var(--p-line);
}
.p-fee-late .p-eyebrow{margin-bottom:1.4rem;}
.p-fee-late-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:clamp(1.5rem, 1rem + 2vw, 2.5rem);
}
@media (max-width:820px){ .p-fee-late-grid{grid-template-columns:1fr;} }
.p-fee-late-grid h4{
  font-family:var(--p-display);
  font-weight:400;
  font-size:1.2rem;
  color:var(--p-ink);
  margin-bottom:.6rem;
}
.p-fee-late-grid p{
  font-family:var(--p-body);
  font-size:.88rem;
  color:var(--p-ink-soft);
  line-height:1.6;
}
.p-fee-late-grid strong{color:var(--p-terra);font-weight:500;}
.p-fee-footnote-final{
  margin-top:clamp(3rem, 4vh, 3.5rem);
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:1px solid var(--p-line);
  font-family:var(--p-body);
  font-size:.85rem;
  color:var(--p-muted);
  font-style:italic;
  max-width:44rem;
}
.p-fee-footnote-final a{color:var(--p-terra);text-decoration:underline;text-underline-offset:.3em;}

/* ================================================================
   SECTION 30  ·  SCHOLARSHIPS  (placeholder)
   ================================================================ */
.p-scholarships{background:var(--p-paper);}
.p-scholarship-placeholder{
  padding:clamp(2.5rem, 2rem + 3vw, 4rem);
  border:1px dashed var(--p-terra);
  background:var(--p-ivory);
  max-width:60rem;
  margin-inline:auto;
  text-align:center;
}
.p-scholarship-placeholder .p-placeholder-label{margin-inline:auto;}
.p-scholarship-placeholder .p-body{
  max-width:44rem;
  margin-inline:auto;
  font-family:var(--p-body);
  font-size:.95rem;
  color:var(--p-ink-soft);
  line-height:1.65;
}
.p-scholarship-placeholder .p-body + .p-body{margin-top:1rem;}
.p-scholarship-placeholder a{color:var(--p-terra);text-decoration:underline;text-underline-offset:.3em;}
.p-scholarship-placeholder strong{color:var(--p-ink);font-weight:500;}

/* ================================================================
   SECTION 31  ·  FAQ  (details / summary)
   ================================================================ */
.p-faq{background:var(--p-ivory);}
.p-faq-list{
  list-style:none;padding:0;margin:0;
  border-top:1px solid var(--p-ink);
}
.p-faq-list > li{
  border-bottom:1px solid var(--p-line);
}
.p-faq-list details{}
.p-faq-list summary{
  list-style:none;
  cursor:pointer;
  padding:1.4rem 0;
  display:flex;align-items:center;justify-content:space-between;gap:1.5rem;
  transition:color .3s ease;
}
.p-faq-list summary::-webkit-details-marker{display:none;}
.p-faq-list summary:hover .p-faq-q{color:var(--p-terra);}
.p-faq-q{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.1rem, 1rem + .5vw, 1.4rem);
  color:var(--p-ink);
  line-height:1.25;
  transition:color .3s ease;
}
.p-faq-plus{
  font-family:var(--p-display);
  font-weight:400;
  font-size:1.6rem;
  color:var(--p-terra);
  line-height:1;
  transition:transform .3s ease;
  flex-shrink:0;
}
.p-faq-list details[open] .p-faq-plus{transform:rotate(45deg);}
.p-faq-a{
  padding:0 0 1.6rem;
  max-width:56rem;
}
.p-faq-a p{
  font-family:var(--p-body);
  font-size:.95rem;
  color:var(--p-ink-soft);
  line-height:1.7;
}
.p-faq-a strong{color:var(--p-ink);font-weight:500;}

/* ================================================================
   SECTION 32  ·  INFORMATION FOR PARENTS  (uniform tables)
   ================================================================ */
.p-parents{background:var(--p-paper);}
.p-parents-tables{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(2rem, 1rem + 3vw, 3rem);
}
@media (max-width:820px){ .p-parents-tables{grid-template-columns:1fr;} }
.p-parents-table{
  padding:clamp(1.6rem, 1rem + 1.5vw, 2.4rem);
  background:var(--p-ivory);
  border:1px solid var(--p-line);
}
.p-parents-table--wide{grid-column:1 / -1;}
.p-parents-table header{
  padding-bottom:1rem;
  border-bottom:1px solid var(--p-line);
  margin-bottom:1rem;
}
.p-parents-table header h3{
  font-family:var(--p-display);
  font-weight:400;
  font-size:clamp(1.4rem, 1rem + 1vw, 1.8rem);
  color:var(--p-ink);
  line-height:1.1;
  margin-block:.4rem .6rem;
}
.p-parents-note{
  font-family:var(--p-body);
  font-size:.8rem;
  color:var(--p-muted);
  font-style:italic;
  line-height:1.4;
}
.p-parents-table ul{
  list-style:none;padding:0;margin:0;
}
.p-parents-table li{
  display:grid;
  grid-template-columns:1fr auto;
  gap:1rem;
  padding-block:.7rem;
  border-bottom:1px solid var(--p-line);
  align-items:baseline;
  font-family:var(--p-body);
  font-size:.9rem;
  color:var(--p-ink);
}
.p-parents-table li:last-child{border-bottom:0;}
.p-parents-table li em{color:var(--p-muted);font-style:italic;font-size:.9em;}
.p-parents-table li span:last-child{
  font-family:var(--p-display);
  color:var(--p-terra);
  font-size:1rem;
  white-space:nowrap;
}
.p-parents-two-col{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  column-gap:clamp(1.5rem, 1rem + 2vw, 3rem);
}
@media (max-width:640px){ .p-parents-two-col{grid-template-columns:1fr;} }
.p-parents-two-col li{
  border-bottom:1px solid var(--p-line) !important;
}
.p-parents-corr{
  margin-top:clamp(2.5rem, 3vh, 3.5rem);
  padding-top:clamp(1.5rem, 2vh, 2rem);
  border-top:1px solid var(--p-line);
  max-width:60rem;
}
.p-parents-corr .p-body{font-family:var(--p-body);font-size:.95rem;color:var(--p-ink-soft);line-height:1.65;}
.p-parents-corr strong{color:var(--p-ink);font-weight:500;}

/* ================================================================
   SECTION 33  ·  CONTACT  (4-card grid)
   ================================================================ */
.p-contact{background:var(--p-ivory);}
.p-contact-layout{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:clamp(1.5rem, 1rem + 2vw, 2.5rem);
}
@media (max-width:820px){ .p-contact-layout{grid-template-columns:1fr;} }
.p-contact-card{
  padding:clamp(1.8rem, 1rem + 1.5vw, 2.4rem);
  background:var(--p-paper);
  border:1px solid var(--p-line);
}
.p-contact-icon{
  width:44px;height:44px;
  color:var(--p-terra);
  margin-bottom:1.2rem;
  padding:.4rem;
  border:1px solid var(--p-line);
  border-radius:50%;
}
.p-contact-icon svg{width:100%;height:100%;}
.p-contact-card .p-eyebrow{margin-bottom:1rem;}
.p-contact-line{
  font-family:var(--p-display);
  font-size:clamp(1.1rem, 1rem + .5vw, 1.4rem);
  color:var(--p-ink);
  line-height:1.4;
}
.p-contact-houses,
.p-contact-offices{
  list-style:none;padding:0;margin:0;
}
.p-contact-houses li,
.p-contact-offices li{
  display:grid;
  grid-template-columns:1fr auto;
  gap:1rem;
  padding-block:.7rem;
  border-bottom:1px solid var(--p-line);
  align-items:baseline;
  font-family:var(--p-body);
  font-size:.9rem;
  color:var(--p-ink);
}
.p-contact-houses li:last-child,
.p-contact-offices li:last-child{border-bottom:0;}
.p-contact-houses a,
.p-contact-offices a{
  color:var(--p-terra);
  font-family:var(--p-display);
  font-size:1rem;
  text-decoration:none;
  white-space:nowrap;
}
.p-contact-houses a:hover,
.p-contact-offices a:hover{text-decoration:underline;text-underline-offset:.3em;}
/* Small explanatory note under the school-telephone card */
.p-contact-note{
  margin-top:1rem;
  font-family:var(--p-body);
  font-size:.82rem;
  line-height:1.5;
  color:var(--p-ink-soft);
  font-style:italic;
}
.p-contact-emails{
  display:grid;
  grid-template-columns:1fr;
  gap:0;
  margin:0;
}
.p-contact-emails dt{
  font-family:var(--p-body);
  font-size:.7rem;
  font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:var(--p-terra);
  padding-top:1rem;
  padding-bottom:.4rem;
  border-top:1px solid var(--p-line);
}
.p-contact-emails dd{
  font-family:var(--p-body);
  font-size:.9rem;
  color:var(--p-ink);
  line-height:1.5;
  padding-bottom:.8rem;
  margin-left:0;
}
.p-contact-emails a{color:var(--p-terra);text-decoration:none;}
.p-contact-emails a:hover{text-decoration:underline;text-underline-offset:.3em;}

/* ================================================================
   SECTION 34  ·  FINAL CLOSING (enhanced)
   ================================================================ */
.p-final{
  position:relative;
  min-height:100vh;
  overflow:hidden;
  isolation:isolate;
  color:#fff;
  background:#0a0f18;
  display:flex;flex-direction:column;justify-content:center;
}
.p-final-bg{position:absolute;inset:-4%;z-index:-2;background:radial-gradient(60% 70% at 20% 15%, rgba(184,146,58,.2), transparent 60%),radial-gradient(80% 90% at 80% 85%, rgba(51,73,64,.35), transparent 55%),linear-gradient(155deg,#0e1a26 0%,#0a1220 55%,#080d17 100%);}
.p-final-photo{position:absolute;inset:0;z-index:-1;overflow:hidden;}
.p-final-photo img{width:100%;height:100%;object-fit:cover;opacity:.35;}
.p-final-scrim{
  position:absolute;inset:0;z-index:0;
  background:linear-gradient(180deg, rgba(6,10,20,.55) 0%, rgba(6,10,20,.1) 40%, rgba(6,10,20,.85) 100%);
}
.p-final-inner{
  position:relative;z-index:1;
  max-width:var(--p-container);
  margin-inline:auto;
  padding:clamp(5rem, 3rem + 8vh, 9rem) var(--p-side);
  text-align:center;
  width:100%;
}
.p-final .p-section-num{color:var(--p-gold-soft);margin-bottom:.5rem;}
.p-final .p-eyebrow{justify-content:center;display:flex;color:var(--p-gold-soft);margin-bottom:1.4rem;}
.p-final-title{
  font-size:clamp(3.5rem, 2rem + 6vw, 7rem);
  color:#fff;
  margin-bottom:1.6rem;
  text-shadow:0 4px 24px rgba(0,0,0,.4);
}
.p-final-since{
  font-family:var(--p-body);
  font-size:.85rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:rgba(255,255,255,.8);
  padding:.5em 0;
  border-block:1px solid rgba(255,255,255,.25);
  display:inline-block;
  margin-bottom:1.4rem;
}
.p-final-line{
  font-family:var(--p-display);
  font-style:italic;
  font-size:clamp(1.2rem, 1rem + .8vw, 1.7rem);
  color:var(--p-gold-soft);
  max-width:38ch;
  margin-inline:auto;
  margin-bottom:2.4rem;
  line-height:1.4;
}
.p-final-actions{
  display:inline-flex;flex-wrap:wrap;gap:1rem;
  justify-content:center;
}
.p-final-cta{
  display:inline-flex;align-items:center;gap:.6em;
  padding:.85em 1.6em;
  font-family:var(--p-body);
  font-size:.72rem;font-weight:500;
  letter-spacing:var(--p-track-loose);
  text-transform:uppercase;
  color:#fff;
  border:1px solid rgba(255,255,255,.4);
  border-radius:999px;
  transition:background-color .3s ease, border-color .3s ease;
}
.p-final-cta:hover{background:rgba(255,255,255,.08);border-color:#fff;}
.p-final-cta--primary{
  background:var(--p-gold);
  border-color:var(--p-gold);
  color:var(--p-ink);
}
.p-final-cta--primary:hover{background:var(--p-gold-soft);border-color:var(--p-gold-soft);}
.p-final-cta svg{width:16px;height:16px;}
.p-final-foot{
  position:relative;z-index:1;
  max-width:var(--p-container);
  margin-inline:auto;
  padding:clamp(1.5rem, 1rem + 1vw, 2rem) var(--p-side);
  display:flex;flex-wrap:wrap;gap:1rem 2rem;
  justify-content:space-between;align-items:center;
  border-top:1px solid rgba(255,255,255,.14);
  font-family:var(--p-body);
  font-size:.72rem;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:rgba(255,255,255,.6);
}
.p-final-foot a{color:var(--p-gold-soft);}
.p-final-foot a:hover{color:#fff;}

/* ---- Reduced-motion additions for new elements ---- */
@media (prefers-reduced-motion:reduce){
  .p-toc-drawer{transition:none !important;}
  .p-sport-tile figure img,.p-fac-tile figure img,
  .p-life-tile img,.p-alumni-frame-f img{transform:none !important;transition:none !important;}
  .p-sport-tile:hover figure img,.p-fac-tile:hover figure img,
  .p-life-tile:hover img,.p-alumni-frame-f:hover img{transform:none !important;}
  .p-cover-photo img,.p-legacy-stage .p-photo-fill img,.p-character-stage .p-photo-fill img,
  .p-library-stage .p-photo-fill img{transform:none !important;}
  .p-life-tile figcaption{opacity:1;transform:none;}
  .p-faq-list details[open] .p-faq-plus{transform:none !important;}
}


/* ================================================================
   DOWNLOAD-PROSPECTUS BUTTON  (on the closing spread)
   Sits under the two existing CTAs. Same visual weight, marked
   with a small download glyph so it reads as an action, not
   another nav link.
   ================================================================ */
.p-final-download{
  margin-top: clamp(2rem, 4vw, 3rem);
  padding-top: clamp(1.75rem, 3vw, 2.5rem);
  border-top: 1px solid rgba(212,175,102,.22);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .9rem;
  text-align: center;
  max-width: 640px;
  margin-inline: auto;
}
.p-final-download-eyebrow{
  font-family: var(--p-font-sans, "Inter", sans-serif);
  font-size: .7rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--p-gold-soft, #d4af66);
  margin: 0;
  opacity: .78;
}
.p-final-cta--download{
  background: transparent;
  border: 1px solid rgba(212,175,102,.55);
  color: #fff;
  padding: .95rem 1.9rem;
  font-family: var(--p-font-sans, "Inter", sans-serif);
  font-size: .82rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: .8rem;
  border-radius: 0;
  transition:
    background .5s var(--p-ease-refined, cubic-bezier(.22,1,.36,1)),
    border-color .5s var(--p-ease-refined, cubic-bezier(.22,1,.36,1)),
    transform .5s var(--p-ease-refined, cubic-bezier(.22,1,.36,1));
}
.p-final-cta--download svg{
  width: 18px;
  height: 18px;
  stroke: var(--p-gold-soft, #d4af66);
  transition: transform .5s var(--p-ease-refined, cubic-bezier(.22,1,.36,1));
}
.p-final-cta--download:hover{
  background: rgba(212,175,102,.08);
  border-color: rgba(212,175,102,.85);
  transform: translateY(-2px);
}
.p-final-cta--download:hover svg{ transform: translateY(2px); }
.p-final-cta-sub{
  opacity: .65;
  font-weight: 400;
  letter-spacing: 0.14em;
}
.p-final-download-hint{
  font-family: var(--p-font-serif, "Cormorant Garamond", serif);
  font-style: italic;
  font-size: .95rem;
  line-height: 1.5;
  color: rgba(255,255,255,.5);
  margin: 0;
  max-width: 44ch;
}
.p-final-download-hint em{
  color: rgba(255,255,255,.72);
  font-style: normal;
  font-family: var(--p-font-sans, "Inter", sans-serif);
  font-size: .82em;
  letter-spacing: 0.04em;
}
.p-final-print-link{
  background: none;
  border: 0;
  padding: 0;
  color: var(--p-gold-soft, #d4af66);
  font-family: inherit;
  font-style: italic;
  font-size: inherit;
  cursor: pointer;
  border-bottom: 1px solid rgba(212,175,102,.35);
  transition: color .3s ease, border-color .3s ease;
}
.p-final-print-link:hover{
  color: #fff;
  border-color: rgba(255,255,255,.6);
}

/* ================================================================
   PRINT / SAVE-AS-PDF  —  one section per page, bounded
   Rewritten so the digital prospectus renders as a proper page-
   by-page PDF: each numbered section is its own A4 spread, its
   content laid flat (no pinned scroll stages, no sliders), sized
   to fit on ONE sheet where possible, and only allowed to spill
   onto a second sheet for the small handful of content-heavy
   sections that genuinely need it (fees, curriculum, admissions
   process, FAQs).
   ================================================================ */
@page{ size: A4 portrait; margin: 10mm; }

@media print{

  /* ---- 0. Global reset — keep colours, drop motion ---- */
  *, *::before, *::after{
    animation: none !important;
    transition: none !important;
    transform: none !important;
    filter: none !important;
    opacity: 1 !important; /* undo any reveal opacity so nothing prints invisible */
    visibility: visible !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }
  html, body{
    background: #fbf8f2 !important;
    color: #1a1410 !important;
    scroll-behavior: auto !important;
    overflow: visible !important;
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    font-size: 10pt !important;
    line-height: 1.45 !important;
  }
  html.lenis, body.lenis-smooth, .lenis-scrolling{
    overflow: visible !important;
    height: auto !important;
  }

  /* ---- 1. Interactive chrome hidden ---- */
  #pNav, .p-nav, .p-nav-back,
  #pTocBtn, .p-toc-btn, #pTocDrawer, .p-toc-drawer, .p-toc-scrim,
  .p-final-download, .p-final-actions,
  .p-scroll-hint, .p-progress, .p-progress-fill,
  .p-contents /* live TOC — skipped in PDF (readers use PDF bookmarks) */
  { display: none !important; }

  /* ---- 2. One section = one page ---- */
  section, .p-cover, .p-bismillah, .p-final, footer.p-final{
    display: flex !important;
    flex-direction: column !important;
    justify-content: flex-start !important; /* top-align by default so tall content is visible from the top; center only where it belongs */
    box-sizing: border-box !important;
    width: 100% !important;
    min-height: 0 !important;
    max-height: none !important;
    height: 277mm !important; /* A4 297mm − 2 × 10mm page margin */
    padding: 12mm !important;
    margin: 0 !important;
    page-break-before: always !important;
    break-before: page !important;
    page-break-inside: avoid !important;
    break-inside: avoid !important;
    overflow: hidden !important;
    position: relative !important;
  }
  /* First printed section (cover) — no forced break before */
  .p-cover{
    padding: 0 !important;
    justify-content: center !important;
    align-items: center !important;
    page-break-before: auto !important;
    break-before: auto !important;
  }
  /* Bismillah second — clean break, generous padding, centered ligature */
  .p-bismillah{
    padding: 20mm !important;
    justify-content: center !important;
    align-items: center !important;
  }
  /* Closing spread — centered */
  .p-final, footer.p-final{
    justify-content: center !important;
    align-items: center !important;
  }
  /* Full-bleed stage sections (dark image + inner text overlay) — center */
  .p-legacy, .p-character, .p-library{
    justify-content: center !important;
    padding: 0 !important;
  }

  /* ---- 3. Reveal states → visible ---- */
  .p-reveal, .p-fade, .p-mask, .p-cascade > *, [data-reveal]{
    opacity: 1 !important;
    transform: none !important;
    visibility: visible !important;
  }
  .p-mask > span{ transform: none !important; display: inline !important; }
  .p-mask{ overflow: visible !important; }

  /* ---- 4. Unpin GSAP stages, flatten full-bleed sections ---- */
  .p-timeline-hero, .p-legacy-stage, .p-character-stage, .p-library-stage,
  .p-cover-photo, .p-photo-hero, .p-house-hero,
  .p-day-full-stage, .p-spread-quote-stage, .p-spread-immersive-stage{
    position: relative !important;
    height: 100% !important;
    min-height: 0 !important;
    max-height: 100% !important;
    inset: auto !important;
  }
  .p-photo-fill{
    position: absolute !important;
    inset: 0 !important;
    height: 100% !important;
    width: 100% !important;
    z-index: 0 !important;
  }
  .p-photo-fill img{
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    transform: none !important;
    max-height: none !important;
  }
  .p-legacy-stage .p-legacy-inner,
  .p-character-stage .p-character-inner,
  .p-library-stage .p-library-inner,
  .p-day-full-stage .p-day-full-inner,
  .p-spread-quote-stage .p-spread-quote-inner,
  .p-spread-immersive-stage .p-spread-immersive-inner{
    position: relative !important;
    z-index: 2 !important;
  }

  /* ---- 5. Typography — sized for A4 legibility ---- */
  h1, .p-h1{ font-size: 26pt !important; line-height: 1.05 !important; }
  h2, .p-h2, .p-section-heading{ font-size: 20pt !important; line-height: 1.12 !important; margin: 0 0 4mm !important; }
  h3, .p-h3{ font-size: 13pt !important; line-height: 1.2 !important; margin: 0 0 2mm !important; }
  h4, .p-h4{ font-size: 11pt !important; line-height: 1.25 !important; margin: 0 0 1.5mm !important; }
  p, li{ font-size: 10pt !important; line-height: 1.45 !important; orphans: 3; widows: 3; margin: 0 0 2mm !important; }
  .p-section-num{ font-size: 44pt !important; line-height: 1 !important; display: block !important; margin: 0 0 2mm !important; }
  .p-eyebrow{ font-size: 8pt !important; letter-spacing: 0.22em !important; margin: 0 0 2mm !important; }
  .p-blackletter, .p-blackletter-light{ font-size: 44pt !important; line-height: 1 !important; }
  .p-lead, .p-intro-lead, .p-curriculum-lede, .p-sports-lede,
  .p-houses-lede, .p-facilities-lede, .p-fees-includes{
    font-size: 11.5pt !important; line-height: 1.4 !important; margin: 0 0 4mm !important;
  }
  .p-section-head{ margin: 0 0 6mm !important; flex-shrink: 0 !important; }

  /* ---- 6. Layout containers ---- */
  .p-container, .p-narrow, .p-wide{ max-width: 100% !important; margin: 0 auto !important; }
  .p-section-body{ flex: 1 1 auto !important; min-height: 0 !important; overflow: hidden !important; }

  /* ---- 7. Grids: compact column counts for print ---- */
  .p-grid, .p-grid-2, .p-grid-3, .p-grid-4,
  .p-cards, .p-tiles, .p-vision-grid,
  .p-values-grid, .p-facilities-grid, .p-facilities-mosaic,
  .p-life-mosaic, .p-day-grid{
    display: grid !important;
    gap: 4mm !important;
    grid-template-columns: repeat(3, 1fr) !important;
  }
  .p-vision-grid{ grid-template-columns: repeat(3, 1fr) !important; }
  .p-house-shields, .p-house-shields--real{
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 4mm !important;
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
  }
  .p-sports-grid, .p-sports-grid--7{
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 4mm !important;
  }
  .p-card, .p-tile, .p-fee-card, .p-house-card, .p-sport-tile,
  .p-vision-card, .p-house-shield, .p-life-tile, .p-library-item{
    padding: 3mm !important;
    font-size: 9pt !important;
    break-inside: avoid !important;
    page-break-inside: avoid !important;
    margin: 0 !important;
  }
  .p-sport-tile figure{
    margin: 0 0 1.5mm !important;
    max-height: 30mm !important;
    overflow: hidden !important;
  }
  .p-sport-tile img{
    width: 100% !important;
    max-height: 30mm !important;
    height: 30mm !important;
    object-fit: cover !important;
  }
  .p-sport-tile h4{ font-size: 9pt !important; text-align: center !important; margin: 0 !important; }
  .p-house-shield img{ max-height: 32mm !important; width: auto !important; }
  .p-house-shield{ text-align: center !important; }
  .p-vision-mark{ margin-bottom: 2mm !important; }
  .p-vision-mark svg{ max-height: 14mm !important; max-width: 14mm !important; }
  .p-vision-title{ font-size: 12pt !important; }

  /* Split layouts (image + text side-by-side) */
  .p-split, .p-spread, .p-two-col,
  .p-principal-layout{
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 6mm !important;
    align-items: center !important;
    height: 100% !important;
    min-height: 0 !important;
  }
  .p-principal-portrait{ margin: 0 !important; height: 100% !important; }
  .p-principal-portrait img{
    width: 100% !important;
    height: 100% !important;
    max-height: 220mm !important;
    object-fit: cover !important;
  }
  .p-principal-message{ font-size: 10pt !important; }

  /* ---- 8. Images ---- */
  img{
    max-width: 100% !important;
    max-height: 200mm !important;
    height: auto !important;
    object-fit: contain !important;
    break-inside: avoid !important;
  }
  .p-cover img, .p-final img, .p-hero img,
  .p-photo-fill img, .p-full-image img,
  .p-house-hero img, .p-photo-hero img{
    max-height: 100% !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
  }
  figure{ margin: 0 !important; break-inside: avoid !important; }

  /* ---- 9. Cover / Bismillah / Closing — full-page spreads ---- */
  .p-cover-inner, .p-cover-content{
    padding: 20mm !important;
    text-align: center !important;
    height: 100% !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    align-items: center !important;
  }
  .p-cover-crest img, .p-cover-logo img{ max-width: 45mm !important; max-height: 45mm !important; }
  .p-bismillah-inner{
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    align-items: center !important;
    height: 100% !important;
    text-align: center !important;
  }
  .p-final{ background: #0a0806 !important; color: #fff !important; }
  .p-final .p-final-title, .p-final .p-final-since, .p-final .p-final-line,
  .p-final .p-eyebrow, .p-final .p-final-foot{ color: #fff !important; }
  .p-final .p-blackletter-light{ color: #d4af66 !important; }
  .p-final-inner{
    padding: 20mm !important;
    text-align: center !important;
    height: 100% !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    align-items: center !important;
  }
  .p-final-foot{
    margin-top: auto !important;
    padding-top: 8mm !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 1mm !important;
    font-size: 8pt !important;
    opacity: .7;
  }

  /* ---- 10. Sections that ARE allowed to span two pages ---- */
  /* Content-heavy sections: fees, curriculum, admissions steps, FAQs,
     cocurricular, vision (contains long Code of Honour pledge),
     faculty (long staff list). These override the fixed height +
     overflow lock so rows can spill naturally onto a second page.
     Individual rows still stay whole. */
  #fees, #curriculum, #admissions, #faqs, #cocurricular,
  #vision, #faculty,
  section:has(.p-fee-table), section:has(.p-fee-block),
  section:has(.p-curriculum-block), section:has(.p-admissions-steps),
  section:has(.p-faq-list){
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    justify-content: flex-start !important;
    page-break-inside: auto !important;
    break-inside: auto !important;
  }
  .p-fee-table, .p-fee-block, .p-fee-t,
  .p-curriculum-block, .p-admissions-steps, .p-faq-list{
    width: 100% !important;
  }
  .p-fee-t{ border-collapse: collapse !important; font-size: 9.5pt !important; }
  .p-fee-t tr{ page-break-inside: avoid !important; break-inside: avoid !important; }
  .p-fee-t th, .p-fee-t td{ padding: 2mm 3mm !important; border-bottom: 1px solid rgba(74,55,32,.15) !important; }
  .p-faq-list details{ page-break-inside: avoid !important; break-inside: avoid !important; padding: 2mm 0 !important; }

  /* ---- 10a. Global sizing overrides — kill any 100vh min-heights ---- */
  /* Many blocks use `min-height:100vh` for the on-screen scroll design;
     for print that becomes 297mm and blows every layout up. Force them
     back to their natural size so grid/flex rules can lay them out. */
  .p-why-panel, .p-house-hero, .p-photo-hero,
  .p-legacy-stage, .p-character-stage, .p-library-stage,
  .p-day-full-stage, .p-spread-quote-stage, .p-spread-immersive-stage,
  .p-hero, .p-full, .p-stage,
  .p-campus-hero, .p-experience-stage, .p-timeline-stage{
    min-height: 0 !important;
  }
  /* .p-cover and .p-final keep full-page height (they ARE the page) */

  /* ---- 10b. Section-specific layout overrides for one-page fit ---- */

  /* Why APS — 6 stacked "reason" panels → 2-column × 3-row grid */
  .p-why{
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    grid-auto-rows: 1fr !important;
    gap: 3mm !important;
    padding: 12mm !important;
    align-content: start !important;
  }
  .p-why-head{ grid-column: 1 / -1 !important; margin: 0 0 3mm !important; }
  .p-why > .p-why-panel{
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    align-items: flex-start !important;
    min-height: 0 !important;
    height: auto !important;
    padding: 4mm 5mm !important;
    border: 1px solid rgba(212,175,102,.28) !important;
    border-top: 1px solid rgba(212,175,102,.28) !important;
    background: rgba(255,255,255,.03) !important;
    break-inside: avoid !important;
  }
  .p-why-count{ font-size: 8pt !important; letter-spacing: 0.18em !important; margin: 0 0 1mm !important; color: #a67c3a !important; }
  .p-why-statement{ font-size: 12pt !important; line-height: 1.2 !important; margin: 0 0 2mm !important; font-family: var(--p-font-serif, "Cormorant Garamond", serif) !important; }
  .p-why-note{ font-size: 8.5pt !important; line-height: 1.35 !important; margin: 0 !important; }

  /* Timeline (Legacy) — compact list */
  .p-timeline-row{ padding: 2mm 0 !important; font-size: 9.5pt !important; }
  .p-timeline-year{ font-size: 11pt !important; }

  /* Facilities mosaic — compact grid */
  .p-facilities-mosaic, .p-life-mosaic{
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 3mm !important;
  }
  .p-life-tile img{ max-height: 40mm !important; object-fit: cover !important; }
  .p-life-tile figcaption{ font-size: 8pt !important; padding: 1.5mm !important; }

  /* Curriculum block — 2-col grid of subject cards */
  .p-curriculum-block, .p-departments-grid{
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 3mm !important;
  }
  .p-curriculum-card, .p-department-card{
    padding: 3mm !important;
    font-size: 9pt !important;
    break-inside: avoid !important;
  }

  /* Admissions steps — vertical numbered list, compact */
  .p-admissions-steps > *{ padding: 2mm 3mm !important; margin: 0 0 2mm !important; }

  /* Faculty/leadership grids */
  .p-leadership-grid, .p-faculty-grid{
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 3mm !important;
  }

  /* Boarding houses / character grids */
  .p-character-list, .p-values-list{
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 3mm !important;
  }

  /* ---- 11. Dark sections: preserve their theme in print ---- */
  /* Only the dark full-bleed STAGE elements are forced to white text
     (not the whole section — sections like Character have a dark hero
     stage on top and a cream body below, and the body needs dark type). */
  .p-legacy-stage, .p-character-stage, .p-library-stage{
    color: #fff !important;
    background: #0a0806 !important;
  }
  .p-legacy-stage *, .p-character-stage *, .p-library-stage *{
    color: inherit !important;
  }
  .p-legacy-stage .p-eyebrow, .p-character-stage .p-eyebrow, .p-library-stage .p-eyebrow,
  .p-legacy-stage .p-section-num-light, .p-character-stage .p-section-num-light,
  .p-library-stage .p-section-num-light{
    color: #d4af66 !important;
  }
  /* Scrim overlay for text legibility on top of stage photographs */
  .p-legacy-stage::after, .p-character-stage::after, .p-library-stage::after,
  .p-timeline-hero::after, .p-campus-hero::after, .p-photo-hero::after,
  .p-house-hero::after, .p-cover-photo::after{
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    background: linear-gradient(180deg, rgba(0,0,0,.30), rgba(0,0,0,.55)) !important;
    z-index: 1 !important;
    pointer-events: none !important;
  }
  /* Hero content sits above the scrim */
  .p-timeline-hero > *, .p-campus-hero > *, .p-photo-hero > *,
  .p-house-hero > *, .p-cover-photo > *,
  .p-hero-content, .p-hero-inner, .p-cover-inner{
    position: relative !important;
    z-index: 2 !important;
  }
  .p-section-num-light{ color: #d4af66 !important; }

  /* Hero text overlays on photographs — text-shadow safety net so
     white text stays legible even where the scrim doesn't cover
     enough of the underlying image. */
  .p-legacy-stage .p-legacy-title,
  .p-legacy-stage .p-legacy-lede,
  .p-legacy-stage .p-eyebrow,
  .p-legacy-stage .p-section-num,
  .p-character-stage .p-character-motto,
  .p-character-stage .p-character-lede,
  .p-character-stage .p-eyebrow,
  .p-character-stage .p-section-num,
  .p-library-stage .p-eyebrow,
  .p-library-stage h2,
  .p-library-stage p,
  .p-library-stage .p-section-num,
  .p-cover-title, .p-cover-eyebrow,
  .p-hero-title, .p-hero-line, .p-hero .p-eyebrow,
  .p-final-title, .p-final-since, .p-final-line, .p-final .p-eyebrow{
    text-shadow: 0 1px 3px rgba(0,0,0,.55), 0 0 12px rgba(0,0,0,.35) !important;
    color: #fff !important;
  }
  .p-legacy-stage .p-section-num-light,
  .p-character-stage .p-section-num-light,
  .p-library-stage .p-section-num-light,
  .p-final .p-blackletter-light{
    color: #d4af66 !important;
    text-shadow: 0 1px 3px rgba(0,0,0,.6) !important;
  }

  /* Ensure scrim overlays sit above image but below text */
  .p-legacy-scrim, .p-character-scrim, .p-library-scrim, .p-cover-scrim,
  .p-hero-scrim, .p-final-scrim{
    position: absolute !important;
    inset: 0 !important;
    z-index: 1 !important;
  }
  .p-legacy-inner, .p-character-inner, .p-library-inner,
  .p-cover-inner, .p-hero-content, .p-hero-inner, .p-final-inner{
    position: relative !important;
    z-index: 3 !important;
  }

  /* ---- 12. Links ---- */
  a[href]::after{ content: "" !important; }
  a{ color: inherit !important; text-decoration: none !important; }
}
/* Extra guard while the print dialog is being prepared (avoids the
   flash of pinned content before the print sheet takes over). */
html.is-printing .p-nav,
html.is-printing #pTocBtn,
html.is-printing .p-scroll-hint{ display: none !important; }

/* ================================================================
   WHY APS · MEDIA (page 5)
   A small framed image at the top of each of the six "reason"
   panels. Sits above the count / statement / note stack.
   The four-logo variant (p-why-media--logos) shows two logos
   side-by-side for the BISE + KPESED reason.
   ================================================================ */
.p-why-media {
  margin: 0 auto var(--p-sp-4, 1.25rem);
  width: min(520px, 100%);
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-radius: 6px;
  box-shadow: 0 20px 40px rgba(20, 24, 40, .22);
  background: #0f1a2a;
}
.p-why-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.p-why-media--logos {
  aspect-ratio: auto;
  padding: var(--p-sp-6, 1.75rem) var(--p-sp-4, 1.25rem);
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--p-sp-6, 1.75rem);
  min-height: 120px;
  box-shadow: 0 20px 40px rgba(20, 24, 40, .12);
}
.p-why-media--logos img {
  width: auto;
  height: 80px;
  max-width: 40%;
  object-fit: contain;
}
@media (max-width: 720px) {
  .p-why-media { width: 100%; }
  .p-why-media--logos { gap: var(--p-sp-3, .75rem); padding: var(--p-sp-4, 1.25rem); }
  .p-why-media--logos img { height: 56px; }
}

/* ================================================================
   LEADERSHIP · HERO (page 11 — Prefects)
   Wide framed photograph above the prefects body copy.
   ================================================================ */
.p-leadership-hero {
  margin: 0 0 var(--p-sp-8, 2.5rem);
  width: 100%;
  aspect-ratio: 16 / 7;
  overflow: hidden;
  border-radius: 4px;
  box-shadow: 0 24px 48px rgba(20, 24, 40, .22);
  position: relative;
}
.p-leadership-hero img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.p-leadership-hero figcaption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: var(--p-sp-4, 1.25rem) var(--p-sp-6, 1.75rem);
  background: linear-gradient(to top, rgba(15, 26, 42, .82), transparent);
  color: #fff;
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-size: .95rem;
  letter-spacing: .02em;
}
@media (max-width: 720px) {
  .p-leadership-hero { aspect-ratio: 4 / 3; }
  .p-leadership-hero figcaption { font-size: .85rem; padding: var(--p-sp-3, .75rem) var(--p-sp-4, 1.25rem); }
}

/* ================================================================
   BACK-TO-TOP  —  Floating circular arrow, matches the main site's
   pattern. Hidden until the reader has scrolled past the first
   viewport, then fades in bottom-right. Gold ring + navy fill on
   hover to sit with the prospectus palette.
   ================================================================ */
.p-back-to-top {
  position: fixed;
  right: max(1.25rem, env(safe-area-inset-right, 1.25rem));
  bottom: max(1.5rem, env(safe-area-inset-bottom, 1.5rem));
  z-index: 90;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  border: 1px solid var(--p-gold, #c9a24a);
  background: rgba(15, 26, 42, .92);
  color: var(--p-gold, #c9a24a);
  cursor: pointer;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 12px 32px rgba(0, 0, 0, .28);
  opacity: 0;
  transform: translateY(20px);
  pointer-events: none;
  transition: opacity .35s ease, transform .35s ease, background .3s ease, color .3s ease;
}
.p-back-to-top.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.p-back-to-top:hover {
  background: var(--p-gold, #c9a24a);
  color: #0f1a2a;
  transform: translateY(-3px);
}
.p-back-to-top svg {
  width: 22px;
  height: 22px;
}
@media (max-width: 640px) {
  .p-back-to-top { width: 46px; height: 46px; }
  .p-back-to-top svg { width: 20px; height: 20px; }
}
@media (prefers-reduced-motion: reduce) {
  .p-back-to-top,
  .p-back-to-top:hover { transition: opacity .2s linear; transform: none; }
}
@media print {
  .p-back-to-top { display: none !important; }
}

/* ================================================================
   WHY APS · MEDIA — 'contain' variant
   Used for images that should be seen in full rather than cropped
   (e.g. the composite 'all houses' crest grid, or any illustration
   with critical detail at the edges). Uses a taller aspect frame
   and object-fit: contain on a white plate so nothing is clipped.
   ================================================================ */
.p-why-media--contain {
  aspect-ratio: 4 / 3;
  background: #fff;
}
.p-why-media--contain img {
  object-fit: contain;
  padding: var(--p-sp-3, .75rem);
}
