/* Study Wild — compact full-screen hero, viewport atlas and editorial trainers (v3).
   Appended separately so original components, copy and filters are preserved. */

/* A compact rhythm between sections, with content allowed to grow if necessary. */
.manifesto { padding-block: clamp(70px, 8vw, 112px); }
.manifesto .principles { margin-top: clamp(36px, 5vw, 65px); }
.manifesto .manifesto-strip { margin-top: clamp(32px, 5vw, 58px); height: clamp(250px, 27vw, 335px); }
.steps { padding-block: clamp(70px, 8vw, 105px); }
.steps .step-card { min-height: 270px; }
.plan-section, .offers, .faq { padding-block: clamp(76px, 8vw, 112px); }
.reviews-carousel-section { padding-top: clamp(75px, 8vw, 115px); }

/* HERO: the actual section never exceeds the visible viewport. */
.hero, .hero-content { height: 100vh; height: 100svh; min-height: 0; max-height: 100svh; }
.hero-content { padding-top: 92px; padding-bottom: 16px; }
.hero-copy { max-width: 820px; padding: 0 0 38px; }
.hero h1 { font-size: clamp(48px, min(7.2vw, 10svh), 102px); line-height: .89; }
.hero-kicker { margin-bottom: clamp(12px, 2svh, 25px); }
.hero-lead { font-size: clamp(14px, 1.35vw, 17px); line-height: 1.5; max-width: 560px; margin-top: clamp(15px, 2.3svh, 26px); }
.hero-actions { margin-top: clamp(15px, 2.5svh, 28px); }
.hero-note { margin-top: clamp(18px, 3svh, 33px); padding-top: 14px; max-width: 630px; }
.hero-story { width: min(320px, 25vw); bottom: 27px; padding: 17px 20px; }
.hero-story strong { font-size: clamp(20px, 2vw, 25px); }
.hero-scroll { bottom: 13px; }

/* ATLAS: top summary + vector map + selector are one screen, not a 1700px block. */
.atlas { box-sizing: border-box; height: 100vh; height: 100svh; min-height: 0; max-height: 100svh; padding: calc(92px + 1.4svh) 0 clamp(12px, 2svh, 22px); display: flex; flex-direction: column; overflow: hidden; scroll-margin-top: 0; }
.atlas-top { flex: 0 0 auto; grid-template-columns: minmax(0,1.25fr) minmax(0,.75fr); gap: 32px; align-items: center; }
.atlas .section-title { font-size: clamp(35px, min(4.3vw, 6.8svh), 70px); line-height: .93; margin: 8px 0 10px; max-width: none; }
.atlas .eyebrow { font-size: 9px; }
.atlas-lead { font-size: 13px; line-height: 1.4; margin: 0; }
.atlas .language-switch { margin-top: clamp(9px, 1.5svh, 15px); padding: 3px; }
.atlas .language-switch button { padding: 7px 17px; font-size: 12px; }
.atlas-kpis { align-self: stretch; }
.atlas-kpi { padding: 12px 9px 10px 0; align-content: center; }
.atlas-kpi+.atlas-kpi { padding-left: 13px; }
.atlas-kpi strong { font-size: clamp(27px, 3.2vw, 39px); }
.atlas-kpi span { font-size: 8px; line-height: 1.35; letter-spacing: .07em; }
.atlas > .container:not(.atlas-top) { position: relative; z-index: 2; flex: 1 1 0; min-height: 0; display: flex; flex-direction: column; }
.atlas-shell { margin-top: clamp(10px, 1.6svh, 17px); flex: 1 1 0; min-height: 0; display: flex; flex-direction: column; box-shadow: 0 16px 56px rgba(0,0,0,.15); }
.atlas-toolbar { flex: 0 0 auto; min-height: 38px; padding: 6px 16px; font-size: 9px; gap: 12px; }
.atlas-legend { gap: 13px; }
.atlas-map-wrap { flex: 1 1 0; min-height: 0; padding: 2px 12px 4px; overflow: hidden; background: radial-gradient(circle at 48% 42%, rgba(214,173,59,.075), transparent 44%); }
.atlas .studywild-world, .atlas-shell:hover .studywild-world { display: block; flex: 1 1 0; width: 100%; height: 100%; min-height: 0; max-height: 100%; transform: none; transition: none; overflow: hidden; }
.atlas .map-touch-hint { bottom: 9px; left: 15px; font-size: 9px; }
.atlas-dock { flex: 0 0 auto; grid-template-columns: .6fr 1.4fr; }
.atlas .country-picker { padding: 14px 18px; display: flex; flex-direction: column; justify-content: center; }
.atlas .country-picker label { font-size: 9px; margin-bottom: 6px; }
.atlas .country-picker select { height: 42px; }
.atlas .map-detail { padding: 10px 20px; min-height: 91px; grid-template-columns: 1fr auto; grid-template-rows: auto auto auto; gap: 1px 14px; }
.atlas .map-detail-head { grid-column: 1; }
.atlas .map-detail>strong { grid-column: 1; font-size: clamp(22px, 2.3vw, 31px); margin-top: 0; }
.atlas .map-detail>span[data-map-detail] { grid-column: 1; margin-top: 2px; font-size: 11px; line-height: 1.33; }
.atlas .map-detail-language { grid-column: 2; grid-row: 1/4; padding-left: 14px; min-width: 110px; }
.atlas .map-detail-language b { font-size: 22px; }
.atlas .map-detail-language small { font-size: 8px; }

/* HOME TRAINERS: every portrait uses exactly half the viewport width. */
.team-deck { padding: 0; background: #dfe3d8; overflow: clip; }
.team-heading { padding-block: clamp(58px, 7svh, 94px) clamp(33px, 4.5svh, 55px); }
.team-heading-grid { display: grid; grid-template-columns: minmax(0,1.3fr) minmax(0,.7fr); gap: clamp(24px, 5vw, 85px); align-items: end; }
.team-heading .section-title { margin: 16px 0 0; max-width: 730px; font-size: clamp(48px, 5.7vw, 91px); line-height: .92; }
.team-heading-aside { max-width: 400px; justify-self: end; }
.team-heading-aside p { font-size: clamp(14px, 1.15vw, 17px); line-height: 1.6; color: #59615b; }
.team-heading-aside a { display: inline-flex; gap: 19px; align-items: center; margin-top: 12px; font-size: 12px; font-weight: 750; border-bottom: 1px solid var(--ink); padding-bottom: 7px; }
.team-row-placeholder { display: none; }
.teacher-row { --photo-shift: -42px; --bio-shift: 42px; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); min-height: clamp(470px, 74svh, 750px); background: #f4f0e7; overflow: hidden; position: relative; }
.teacher-row:nth-child(even) { --photo-shift: 42px; --bio-shift: -42px; background: #e8e7dc; }
.teacher-row:nth-child(even) .teacher-media { order: 2; }
.teacher-row:nth-child(even) .teacher-bio { order: 1; }
.teacher-media { position: relative; min-width: 0; min-height: 100%; overflow: hidden; isolation: isolate; background: #243529; }
.teacher-media::after { content: ''; position: absolute; z-index: 0; inset: 0; background: linear-gradient(180deg,rgba(10,20,14,.17),rgba(10,20,14,.43)), linear-gradient(90deg,rgba(10,20,14,.2),transparent 60%); pointer-events: none; }
.teacher-media img { display: block; width: 100%; height: 100%; object-fit: cover; filter: saturate(.87) contrast(1.02); transform-origin: 50% 50%; }
.teacher-media-num { position: absolute; top: 22px; left: 30px; z-index: 2; color: var(--gold2); font-family: var(--serif); font-size: 29px; line-height: 1; }
.teacher-identity { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 30px; text-align: center; color: white; text-shadow: 0 3px 28px rgba(0,0,0,.23); }
.teacher-identity span { font-size: 11px; font-weight: 750; letter-spacing: .18em; text-transform: uppercase; color: var(--gold2); }
.teacher-identity h3 { font-family: var(--serif); font-size: clamp(49px, 5.5vw, 98px); line-height: .85; font-weight: 430; letter-spacing: -.055em; margin: 17px 0 0; max-width: 9ch; text-wrap: balance; }
.teacher-bio { display: flex; align-items: center; min-width: 0; padding: clamp(32px, 6vw, 105px); }
.teacher-bio-inner { width: 100%; max-width: 525px; margin-inline: auto; }
.teacher-bio-kicker { font-size: 10px; letter-spacing: .18em; text-transform: uppercase; color: #7a8077; font-weight: 750; }
.teacher-bio-kicker span { color: #aa8329; padding-inline: 5px; }
.teacher-bio-line { width: 48px; height: 2px; background: #b99130; margin-top: 27px; }
.teacher-bio h4 { margin: 18px 0 22px; font-family: var(--serif); font-size: clamp(47px, 4.5vw, 80px); line-height: .95; letter-spacing: -.04em; font-weight: 430; }
.teacher-bio p { color: #525c54; font-size: clamp(16px, 1.4vw, 20px); line-height: 1.7; max-width: 490px; }
.teacher-bio-link { display: inline-flex; justify-content: space-between; align-items: center; gap: 35px; padding-bottom: 9px; border-bottom: 1px solid var(--ink); margin-top: 30px; font-size: 13px; font-weight: 750; }
.teacher-bio-link span { font-size: 19px; }

/* TEAM PAGE: same 50/50 alternation, but retain expandable long biographies and filters. */
.team-page-hero { min-height: 0; padding: 142px 0 64px; }
.team-page-hero .section-title { font-size: clamp(60px, 7.3vw, 118px); }
.team-page-hero .filmstrip { margin-top: 42px; height: clamp(130px, 17vw, 220px); }
.team-directory { padding: 44px 0 80px; }
.team-directory > .container { width: 100%; max-width: none; }
.team-directory .filter-bar { width: min(1460px, calc(100% - 80px)); margin: 0 auto 24px; }
.profile-list { gap: 0; }
.profile-card { --photo-shift: -42px; --bio-shift: 42px; grid-template-columns: minmax(0,1fr) minmax(0,1fr); border: 0; border-bottom: 1px solid var(--line); width: 100%; min-height: clamp(490px, 74svh, 740px); background: #f4f0e7; }
.profile-card:nth-child(even) { --photo-shift: 42px; --bio-shift: -42px; background: #e8e7dc; }
.profile-card:nth-child(even) .profile-image { order: 2; }
.profile-card:nth-child(even) .profile-copy { order: 1; }
.profile-image { min-height: 100%; isolation: isolate; background: #243529; }
.profile-image img { filter: saturate(.87) contrast(1.02); }
.profile-wash { z-index: 1; background: linear-gradient(180deg,rgba(12,22,15,.12),rgba(12,22,15,.48)); mix-blend-mode: normal; }
.profile-card:hover .profile-image img { filter: saturate(1); transform: scale(1.035); }
.profile-num { z-index: 2; top: 22px; left: 30px; font-size: 29px; color: var(--gold2); }
.profile-identity { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 30px; text-align: center; color: var(--white); }
.profile-identity span { color: var(--gold2); font-size: 11px; font-weight: 750; text-transform: uppercase; letter-spacing: .18em; }
.profile-identity h2 { margin: 16px 0 0; font-family: var(--serif); font-size: clamp(50px, 5.5vw, 98px); font-weight: 430; line-height: .85; letter-spacing: -.055em; max-width: 9ch; text-wrap: balance; }
.profile-copy { align-self: center; padding: clamp(30px, 4.5vw, 75px) clamp(30px, 5vw, 100px); max-width: 780px; width: 100%; justify-self: center; }
.profile-meta { margin-bottom: 30px; }
.profile-copy-kicker { font-family: var(--serif); font-size: clamp(44px, 4.2vw, 74px); font-weight: 430; letter-spacing: -.04em; line-height: 1; margin: 0 0 22px; }
.profile-lead { font-size: clamp(16px, 1.35vw, 19px); line-height: 1.6; }
.profile-bio { margin-top: 26px; }
.profile-bio summary:focus-visible { outline: 2px solid var(--gold); outline-offset: 4px; }
.profile-bio-text { max-height: min(300px, 38svh); overflow-y: auto; padding-right: 12px; }

/* Scroll-scrub. Motion variables are set per frame; without JS all content is visible. */
.has-scroll-motion .scroll-scrub .teacher-media img,
.has-scroll-motion .scroll-scrub .profile-image img { transform: translate3d(var(--photo-x, 0px), 0, 0) scale(var(--portrait-scale, 1)); transition: filter .55s; }
.has-scroll-motion .scroll-scrub .teacher-identity,
.has-scroll-motion .scroll-scrub .profile-identity { transform: translate3d(0, var(--identity-y, 0px), 0); opacity: var(--identity-opacity, 1); }
.has-scroll-motion .scroll-scrub .teacher-bio-inner,
.has-scroll-motion .scroll-scrub .profile-copy { transform: translate3d(var(--bio-x, 0px), 0, 0); opacity: var(--bio-opacity, 1); }

@media (max-width: 1100px) {
 .hero-story { display: none; }
 .atlas-kpi span { font-size: 7px; }
 .teacher-bio { padding: clamp(30px, 4.5vw, 60px); }
}
@media (max-width: 860px) {
 .hero, .hero-content { height: 100svh; min-height: 0; max-height: 100svh; }
 .hero-content { padding-top: 76px; }
 .hero-copy { padding: 4px 0 23px; }
 .hero h1 { font-size: clamp(43px, min(9vw, 8.5svh), 69px); }
 .hero-lead { font-size: 15px; }
 .hero-note { margin-top: 22px; }
 .hero-scroll { display: none; }
 .atlas { padding: calc(76px + 1svh) 0 14px; }
 .atlas-top { display: block; }
 .atlas .section-title { font-size: clamp(34px, 5.8vw, 53px); max-width: 15ch; }
 .atlas .language-switch { margin-top: 9px; }
 .atlas-kpis { margin-top: 12px; }
 .atlas-kpi { padding: 7px 7px 5px 0; }
 .atlas-kpi strong { font-size: 29px; }
 .atlas-kpi span { font-size: 8px; }
 .atlas-toolbar { min-height: 34px; }
 .atlas-map-wrap { min-height: 0; padding: 0 6px; }
 .atlas-dock { grid-template-columns: minmax(0,.65fr) minmax(0,1.35fr); }
 .atlas .country-picker { border-right: 1px solid rgba(255,255,255,.13); border-bottom: 0; padding: 11px; }
 .atlas .map-detail { grid-template-columns: 1fr; padding: 10px; min-height: 96px; }
 .atlas .map-detail>strong { font-size: 22px; }
 .atlas .map-detail-language { display: none; }
 .atlas .map-detail>span[data-map-detail] { font-size: 10px; }
 .team-heading-grid { grid-template-columns: 1fr; gap: 12px; }
 .team-heading-aside { justify-self: start; }
 .teacher-row, .profile-card { min-height: 0; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
 .teacher-row:nth-child(even) .teacher-media, .profile-card:nth-child(even) .profile-image { order: 2; }
 .teacher-bio { padding: 25px; }
 .teacher-identity h3, .profile-identity h2 { font-size: clamp(44px, 6vw, 68px); }
 .teacher-bio h4, .profile-copy-kicker { font-size: clamp(38px, 5.2vw, 52px); }
 .teacher-bio p, .profile-lead { font-size: 15px; }
 .team-directory .filter-bar { width: calc(100% - 32px); }
 .profile-image { height: auto; min-height: 100%; }
 .profile-copy { padding: 28px; }
 .profile-card { min-height: 500px; }
 .profile-meta { margin-bottom: 19px; }
 .profile-bio-text { max-height: 260px; }
}
@media (max-width: 600px) {
 .manifesto, .steps, .plan-section, .offers, .faq { padding-block: 65px; }
 .manifesto .manifesto-strip { height: auto; }
 .hero-bg img { object-position: 58% 62%; }
 .hero-copy { padding: 0 0 18px; }
 .hero h1 { font-size: clamp(40px, min(13vw, 8.5svh), 58px); }
 .hero-kicker { font-size: 9px; margin-bottom: 16px; }
 .hero-lead { font-size: 14px; margin-top: 16px; }
 .hero-actions { margin-top: 17px; gap: 14px; }
 .hero-note { gap: 5px; margin-top: 19px; padding-top: 13px; font-size: 9px; }
 .atlas { padding: calc(76px + .7svh) 0 9px; }
 .atlas .eyebrow { font-size: 8px; }
 .atlas .section-title { font-size: clamp(31px, 8vw, 40px); line-height: .97; margin: 8px 0 7px; }
 .atlas-lead { font-size: 11px; }
 .atlas .language-switch button { font-size: 11px; padding: 6px 12px; }
 .atlas-kpis { margin-top: 10px; }
 .atlas-kpi strong { font-size: 26px; }
 .atlas-kpi span { font-size: 7px; line-height: 1.2; }
 .atlas-toolbar { display: flex; flex-direction: column; align-items: start; gap: 3px; min-height: 0; padding: 5px 10px; font-size: 8px; }
 .atlas-legend { gap: 11px; }
 .atlas-legend span { gap: 5px; }
 .swatch { width: 9px; height: 9px; }
 .atlas-map-wrap { padding: 0 1px; }
 .atlas .map-touch-hint { left: 8px; bottom: 3px; font-size: 7px; }
 .atlas .country-picker { padding: 8px; }
 .atlas .country-picker select { padding: 0 6px; font-size: 11px; height: 36px; }
 .atlas .country-picker label { font-size: 7px; }
 .atlas .map-detail { padding: 8px 10px; min-height: 95px; }
 .atlas .map-detail-head { flex-wrap: wrap; gap: 2px 6px; }
 .atlas .map-detail-kicker { font-size: 7px; }
 .atlas .map-detail > strong { font-size: 21px; }
 .atlas .map-detail > span[data-map-detail] { font-size: 9px; }
 .atlas .map-category-chip { min-height: 17px; font-size: 6px; }
 .team-heading { padding-block: 52px 35px; }
 .team-heading .section-title { font-size: 51px; }
 .teacher-row, .profile-card { display: flex; flex-direction: column; min-height: 0; }
 .teacher-row:nth-child(even) .teacher-media, .profile-card:nth-child(even) .profile-image { order: 0; }
 .teacher-row:nth-child(even) .teacher-bio, .profile-card:nth-child(even) .profile-copy { order: 1; }
 .teacher-media, .profile-image { min-height: 0; height: clamp(285px, 47svh, 410px); flex: 0 0 auto; }
 .teacher-bio { padding: 30px 24px 35px; }
 .teacher-bio-line { margin-top: 19px; }
 .teacher-bio h4 { font-size: 52px; margin: 15px 0; }
 .teacher-bio p { font-size: 16px; margin: 0; }
 .teacher-bio-link { margin-top: 20px; }
 .teacher-identity h3, .profile-identity h2 { font-size: clamp(58px, 13vw, 78px); }
 .profile-copy { padding: 28px 24px 35px; }
 .profile-copy-kicker { font-size: 51px; }
 .team-page-hero { padding: 126px 0 42px; }
 .team-page-hero .section-title { font-size: 56px; }
 .team-page-hero .filmstrip { height: 115px; margin-top: 25px; }
 .team-directory { padding: 32px 0 50px; }
 .team-directory .filter-bar { width: calc(100% - 24px); }
 .has-scroll-motion .teacher-row .teacher-media img,
 .has-scroll-motion .profile-card .profile-image img { transform: translate3d(0, var(--photo-y, 0px),0) scale(var(--portrait-scale-mobile, 1)); }
 .has-scroll-motion .scroll-scrub .teacher-bio-inner,
 .has-scroll-motion .scroll-scrub .profile-copy { transform: translate3d(0, var(--bio-y, 0px), 0); }
}
@media (max-height: 700px) and (min-width: 601px) {
 .hero-kicker { margin-bottom: 10px; }
 .hero-note { margin-top: 15px; }
 .hero h1 { font-size: clamp(43px, 9svh, 75px); }
 .hero-lead { margin-top: 10px; }
 .hero-actions { margin-top: 13px; }
 .atlas { padding-top: calc(76px + 1svh); padding-bottom: 8px; }
 .atlas-kpi { padding-block: 7px; }
 .atlas .section-title { font-size: clamp(33px, 5.8svh, 60px); }
 .atlas .language-switch { margin-top: 7px; }
 .atlas-shell { margin-top: 8px; }
}
@media (max-height: 690px) and (max-width: 600px) {
 .hero-note { display: none; }
 .hero-lead { line-height: 1.43; }
 .atlas .eyebrow, .atlas-lead { display: none; }
 .atlas-kpis { margin-top: 6px; }
 .atlas .section-title { font-size: 30px; }
 .atlas-shell { margin-top: 7px; }
 .atlas .map-touch-hint { display: none; }
}
@media (prefers-reduced-motion: reduce) {
 .has-scroll-motion .scroll-scrub .teacher-media img, .has-scroll-motion .scroll-scrub .profile-image img,
 .has-scroll-motion .scroll-scrub .teacher-identity, .has-scroll-motion .scroll-scrub .profile-identity,
 .has-scroll-motion .scroll-scrub .teacher-bio-inner, .has-scroll-motion .scroll-scrub .profile-copy { transform: none !important; opacity: 1 !important; }
}

/* ================================================================
   STUDY WILD v4 — 100vh teacher slides, opposite-direction reveals
   ================================================================ */

/* Each individual trainer occupies exactly one viewport, even if its content
   needs internal scrolling (e.g., an expanded biography on a short screen). */
.teacher-row,
.profile-card {
  box-sizing: border-box;
  height: 100vh;
  height: 100svh;
  min-height: 0;
  max-height: 100svh;
  overflow: hidden;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}
.teacher-row { display: grid; }
.profile-card { display: grid; }
/* Keep the original filter functional: hidden profiles must not occupy 100vh. */
.profile-card.is-hidden { display: none; }

/* Movement affects the full photo and biography panels, not just their insides.
   With JS disabled or reduced motion, both panels remain in their final positions. */
.has-scroll-motion .scroll-scrub .teacher-media,
.has-scroll-motion .scroll-scrub .profile-image {
  transform: translate3d(var(--media-slide-x, 0%), 0, 0);
  backface-visibility: hidden;
}
.has-scroll-motion .scroll-scrub .teacher-bio,
.has-scroll-motion .scroll-scrub .profile-copy {
  transform: translate3d(var(--copy-slide-x, 0%), 0, 0);
  backface-visibility: hidden;
}
/* Remove v3's small inner slides: only the two full panels move in v4. */
.has-scroll-motion .scroll-scrub .teacher-media img,
.has-scroll-motion .scroll-scrub .profile-image img,
.has-scroll-motion .scroll-scrub .teacher-identity,
.has-scroll-motion .scroll-scrub .profile-identity,
.has-scroll-motion .scroll-scrub .teacher-bio-inner {
  transform: none;
  opacity: 1;
}
.has-scroll-motion .scroll-scrub .profile-copy {
  opacity: 1;
}
/* Disable hover zoom on team page so it does not compete with the scroll reveal. */
.profile-card:hover .profile-image img { transform: none; }

.teacher-media, .profile-image {
  height: 100%;
  min-height: 0;
}
.teacher-bio, .profile-copy {
  height: 100%;
  min-height: 0;
  max-height: 100%;
  overflow-y: auto;
  overscroll-behavior: contain;
  box-sizing: border-box;
}
.profile-copy {
  align-self: stretch;
  display: flex;
  flex-direction: column;
  justify-content: safe center;
}
.profile-bio-text { max-height: min(33svh, 290px); }

/* Explicit panel positions. 1st/3rd/5th: PHOTO left, BIO right.
   2nd/4th: BIO left, PHOTO right. */
.teacher-row:nth-child(odd) .teacher-media,
.profile-card:nth-child(odd) .profile-image { order: 1; }
.teacher-row:nth-child(odd) .teacher-bio,
.profile-card:nth-child(odd) .profile-copy { order: 2; }
.teacher-row:nth-child(even) .teacher-media,
.profile-card:nth-child(even) .profile-image { order: 2; }
.teacher-row:nth-child(even) .teacher-bio,
.profile-card:nth-child(even) .profile-copy { order: 1; }

@media (max-width: 860px) {
  .teacher-row, .profile-card {
    min-height: 0;
    height: 100vh;
    height: 100svh;
    max-height: 100svh;
  }
  .teacher-bio, .profile-copy { padding: clamp(18px, 3vw, 34px); }
}

@media (max-width: 600px) {
  /* Both halves remain within one screen on phones, vertically stacked.
     They still slide horizontally from opposite sides, with every second
     trainer reversing the incoming directions. */
  .teacher-row, .profile-card {
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: 100vh;
    height: 100svh;
    max-height: 100svh;
  }
  .teacher-row .teacher-media, .profile-card .profile-image,
  .teacher-row:nth-child(even) .teacher-media,
  .profile-card:nth-child(even) .profile-image {
    order: 1;
    flex: 0 0 44%;
    height: 44%;
    min-height: 0;
  }
  .teacher-row .teacher-bio, .profile-card .profile-copy,
  .teacher-row:nth-child(even) .teacher-bio,
  .profile-card:nth-child(even) .profile-copy {
    order: 2;
    height: 56%;
    flex: 1 1 56%;
    min-height: 0;
    max-height: 56%;
    padding: clamp(16px, 3.5svh, 28px) 24px;
  }
  .teacher-bio h4 { font-size: clamp(33px, 6.7svh, 49px); margin-block: 11px; }
  .teacher-bio p { font-size: clamp(13px, 2.3svh, 16px); line-height: 1.48; }
  .teacher-bio-line { margin-top: 12px; }
  .teacher-bio-link { margin-top: 14px; }
  .teacher-identity h3, .profile-identity h2 {
    font-size: clamp(41px, 11vw, 68px);
  }
  .profile-copy-kicker { font-size: clamp(34px, 6svh, 46px); margin-bottom: 12px; }
  .profile-meta { margin-bottom: 13px; }
  .profile-lead { font-size: clamp(13px, 2.25svh, 16px); line-height: 1.48; }
  .profile-bio { margin-top: 12px; }
  .profile-bio-text { max-height: 22svh; }
  /* Override the old y-axis animation at phone breakpoints. */
  .has-scroll-motion .scroll-scrub .teacher-media img,
  .has-scroll-motion .scroll-scrub .profile-image img,
  .has-scroll-motion .scroll-scrub .teacher-bio-inner { transform: none; }
  .has-scroll-motion .scroll-scrub .profile-copy {
    transform: translate3d(var(--copy-slide-x, 0%), 0, 0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .has-scroll-motion .scroll-scrub .teacher-media,
  .has-scroll-motion .scroll-scrub .profile-image,
  .has-scroll-motion .scroll-scrub .teacher-bio,
  .has-scroll-motion .scroll-scrub .profile-copy {
    transform: none !important;
  }
}


/* ================================================================
   v5: scroll must remain native and fluent. Trigger ONCE on entrance.
   The large panels do not recompute transforms on each wheel frame.
   ================================================================ */
.teacher-bio, .profile-copy {
  /* Let wheel/touch scrolling naturally propagate to the document at edges. */
  overscroll-behavior-y: auto;
}
.has-scroll-motion .scroll-scrub .teacher-media,
.has-scroll-motion .scroll-scrub .teacher-bio,
.has-scroll-motion .scroll-scrub .profile-image,
.has-scroll-motion .scroll-scrub .profile-copy {
  transform: translate3d(0, 0, 0);
  opacity: 1;
  transition: transform .9s cubic-bezier(.17,.75,.22,1), opacity .65s ease;
}
/* Odd: image enters from left, bio enters from right. */
.has-scroll-motion .scroll-scrub:not(.is-visible):nth-child(odd) .teacher-media,
.has-scroll-motion .scroll-scrub:not(.is-visible):nth-child(odd) .profile-image {
  transform: translate3d(-104%, 0, 0);
  opacity: .6;
}
.has-scroll-motion .scroll-scrub:not(.is-visible):nth-child(odd) .teacher-bio,
.has-scroll-motion .scroll-scrub:not(.is-visible):nth-child(odd) .profile-copy {
  transform: translate3d(104%, 0, 0);
  opacity: .6;
}
/* Even: image enters from right, bio enters from left. */
.has-scroll-motion .scroll-scrub:not(.is-visible):nth-child(even) .teacher-media,
.has-scroll-motion .scroll-scrub:not(.is-visible):nth-child(even) .profile-image {
  transform: translate3d(104%, 0, 0);
  opacity: .6;
}
.has-scroll-motion .scroll-scrub:not(.is-visible):nth-child(even) .teacher-bio,
.has-scroll-motion .scroll-scrub:not(.is-visible):nth-child(even) .profile-copy {
  transform: translate3d(-104%, 0, 0);
  opacity: .6;
}
/* Carousel: no touch capture for vertical gestures; wheel stays native. */
.review-carousel-viewport { touch-action: pan-y; }
.review-carousel-top { gap: 10px; }
.review-carousel-tools { display:flex; align-items:center; gap:18px; }
.review-carousel-autoplay {
  background:transparent; border:1px solid rgba(255,255,255,.25);
  border-radius:100px; color:#d6ded4; font:600 11px/1.2 inherit;
  font-size:11px; padding:9px 13px; cursor:pointer;
  display:inline-flex; align-items:center; gap:8px;
  transition: border-color .2s, color .2s, background .2s;
}
.review-carousel-autoplay:hover,.review-carousel-autoplay:focus-visible {
  outline:none; border-color:var(--gold2); color:var(--gold2);
}
.review-carousel-autoplay:disabled { opacity:.5; cursor:not-allowed; }
.review-autoplay-icon { font-size:12px; width:12px; text-align:center; }
.review-autoplay-progress { position:absolute; bottom:0; left:0; width:100%; height:3px; pointer-events:none; overflow:hidden; z-index:3; background:rgba(255,255,255,.08); }
.review-autoplay-progress span { height:100%; width:100%; display:block; transform:scaleX(0); transform-origin:left center; background:var(--gold2); }
.review-carousel.is-auto-running .review-autoplay-progress span { animation:sw-review-progress 5.5s linear forwards; }
@keyframes sw-review-progress { from {transform:scaleX(0)} to {transform:scaleX(1)} }
@media(max-width:600px) {
  .review-carousel-tools { gap:9px; }
  .review-carousel-top { padding:16px 18px; }
  .review-carousel-autoplay { padding:7px 9px; font-size:10px; }
  .review-carousel-counter strong { font-size:26px; }
  .review-carousel-label { font-size:9px; }
}
@media(prefers-reduced-motion:reduce) {
  .has-scroll-motion .scroll-scrub .teacher-media,
  .has-scroll-motion .scroll-scrub .teacher-bio,
  .has-scroll-motion .scroll-scrub .profile-image,
  .has-scroll-motion .scroll-scrub .profile-copy { transform:none!important; opacity:1!important; transition:none!important; }
  .review-carousel-track { transition:none!important; }
  .review-autoplay-progress span { animation:none!important; }
}

/* v5 compact testimonial card — keep the arrows and the whole review visible. */
.review-slide {
  min-height: clamp(440px, 55svh, 570px);
  padding: clamp(26px, 3.3vw, 48px);
  gap: 16px;
}
.review-slide blockquote {
  font-size: clamp(28px, 2.35vw, 38px);
  line-height: 1.1;
  max-width: none;
  margin: clamp(18px, 3svh, 32px) 0 24px;
  text-wrap: pretty;
}
.review-slide footer { margin-top: auto; }
.review-carousel-autoplay { font-family: inherit; font-weight: 650; }
@media (max-width: 600px) {
  .review-slide { min-height: 500px; padding: 28px 25px 30px; }
  .review-slide blockquote { font-size: clamp(26px, 7vw, 31px); line-height: 1.1; margin: 20px 0 15px; }
  .review-carousel-controls { height: 64px; }
  .review-slide:after { font-size: 115px; bottom: 0; }
}
