/* ==========================================================================
   BrightBridge — public website styles
   Design: "Institutional · Caps Serif" (design option 15)
   Headings: Cormorant Garamond (caps)  ·  Body: Carlito (Lato-based, Cyrillic)

   Layout breakpoints (each one changes the layout, not just the size):
     > 1100px   desktop / laptop
     ≤ 1100px   small laptop, tablet landscape  (compact header with menu button)
     ≤ 900px    tablet portrait                 (stacked sections, side-by-side cards)
     ≤ 640px    phones                          (single column, full-width buttons)
     ≤ 380px    small phones
   ========================================================================== */

:root {
  --bg: #ffffff;
  --bg2: #f3f1ec;
  --ink: #1b2430;
  --mut: #4f5a68;
  --ac: #1d3557;          /* navy   */
  --ac-dark: #14233b;
  --ac2: #a67c2e;         /* bronze */
  --ac2-text: #85621f;    /* bronze for small text: readable (contrast ≥ 4.5:1) */
  --ac2-light: #e8c98f;
  --line: rgba(27, 36, 48, .12);
  --hf: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --bf: 'Carlito', 'Lato', 'Segoe UI', Roboto, Arial, sans-serif;
  --wrap: 1180px;
  --wrap-wide: 1320px;
  --gutter: 24px;
  --nav-h: 84px;
  --sec-pad: 92px;
  --ease: cubic-bezier(.2, .7, .2, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font: 17px/1.65 var(--bf);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;               /* safety net: nothing may cause sideways scrolling */
  overflow-wrap: break-word;      /* a long link or word typed in the admin wraps instead of being cut off */
}
img, svg, video, iframe { max-width: 100%; }
img { height: auto; display: block; }
a { color: inherit; text-decoration: none; }
p { margin: 0 0 1em; }
h1, h2, h3, h4 { margin: 0; font-family: var(--hf); line-height: 1.15; overflow-wrap: break-word; hyphens: manual; font-variant-numeric: lining-nums; }
/* (repeated at the end of this file: the "font" shorthand below would reset it) */
button { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--ac2); outline-offset: 3px; }
.news :focus-visible { outline-color: #fff; }  /* bronze would be hard to see on the red strip */
/* links to a section (#contact) and keyboard focus never end up under the sticky header */
html { scroll-padding-top: calc(var(--nav-h) + 16px); }

.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gutter); }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.skip-link {
  position: absolute; left: 16px; top: -60px; z-index: 100;
  background: var(--ac); color: #fff; padding: 10px 16px; font-weight: 700;
}
.skip-link:focus { top: 12px; }
.ico { width: 1.15em; height: 1.15em; flex: none; transition: transform .3s var(--ease); }

/* Text typed in admin textareas: keeps every line break */
.text, .text-rich { overflow-wrap: anywhere; }
/* Other texts typed in the admin that sit in boxes sized by their content: a long link
   or word may break anywhere, so the box never grows wider than the screen. */
.split-hero__text, .split-hero__text h1, .area__title, .member__name, .member__position, .course__name,
.news-item__title, .season-step__name, .story__title, .story__name, .season-tab__name,
.season-panel__title, .season-stat__label, .glance__label, .contact__name { overflow-wrap: anywhere; }
.text p { margin: 0 0 .85em; }
.text p:last-child { margin-bottom: 0; }
/* extra empty lines typed in the admin: one more line of space each */
p.text-gap { height: 1em; margin: 0 !important; }

/* ---------- Typography ---------- */
.eyebrow { font: 700 12px/1.4 var(--bf); letter-spacing: .2em; text-transform: uppercase; color: var(--ac); }
.lead { font-size: 19px; color: var(--mut); max-width: 640px; }
h1 {
  font-size: clamp(32px, 4.2vw, 54px);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .07em;
  margin: 18px 0 22px;
}
.sec { padding: var(--sec-pad) 0; }
.sec--alt { background: var(--bg2); }
.sec h2 {
  font-size: clamp(26px, 2.8vw, 38px);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .07em;
  margin: 12px 0 18px;
  border-top: 3px solid var(--ink);
  padding-top: 16px;
  display: inline-block;
  min-width: min(100%, 420px);
  max-width: 100%;
}
.sec__head { max-width: 760px; }
.sec__head .lead { margin-top: 4px; }

/* ---------- Buttons ---------- */
.btns { display: flex; gap: 14px; margin-top: 30px; flex-wrap: wrap; }
.btn {
  display: inline-flex;
  align-items: stretch;
  max-width: 100%;
  min-height: 48px;               /* comfortable touch target */
  border: 1.5px solid var(--ac);
  color: var(--ac);
  font: 700 14px/1.25 var(--bf);
  letter-spacing: .04em;
  transition: background .3s, color .3s, border-color .3s;
  cursor: pointer;
}
.btn__label { padding: 13px 20px; display: flex; align-items: center; flex: 1; min-width: 0; }
.btn__icon { display: grid; place-items: center; width: 46px; flex: none; background: var(--ac); color: #fff; transition: background .3s; }
.btn:hover .ico, .btn:focus-visible .ico { transform: translateX(4px); }
.btn:hover { background: rgba(29, 53, 87, .06); }
.btn--primary { background: var(--ac); color: #fff; }
.btn--primary .btn__icon { background: rgba(0, 0, 0, .22); }
.btn--primary:hover { background: var(--ac-dark); border-color: var(--ac-dark); }

/* ---------- News strip ---------- */
.news {
  position: relative;
  overflow: hidden;
  background: linear-gradient(180deg, #d63339 0, #c8161f 55%, #a30f17 100%);  /* white text ≥ 4.5 : 1 everywhere */
  color: #fff;
  font: 700 13.5px/1.35 var(--bf);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 2px 8px rgba(163, 15, 23, .33);
}
.news::after {
  content: "";
  position: absolute; top: 0; left: 0;
  width: 25%; height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .12), transparent);
  transform: translateX(-120%);
  animation: news-shine 7s ease-in-out infinite;  /* moved with transform: no layout work */
  pointer-events: none;
}
@keyframes news-shine { 0%, 60% { transform: translateX(-120%); } 100% { transform: translateX(520%); } }
.news .wrap {
  max-width: var(--wrap-wide);
  display: flex; align-items: center; gap: 16px;
  min-height: 48px; padding-top: 8px; padding-bottom: 8px;
}
.news__label {
  flex: none;
  font-size: 11.7px; letter-spacing: .12em; text-transform: uppercase;
  border-right: 1px solid rgba(255, 255, 255, .45);
  padding-right: 16px;
}
.news__text { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* The text (at most 90 characters, set in the admin) always fits in full: one line on
   wide screens, two lines from 1100 px down, three on very small phones. The strip
   keeps the same height for every text. */
@media (max-width: 1100px) {
  .news .wrap { height: 56px; min-height: 0; padding-top: 0; padding-bottom: 0; }
  .news__text { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.3; }
}
@media (max-width: 720px) { .news__label { display: none; } }
.news__link {
  flex: none; margin-left: auto;
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12.6px; letter-spacing: .04em;
  position: relative; z-index: 1;
  min-height: 32px;
}
.news__link:hover { text-decoration: underline; text-underline-offset: 3px; }

/* ---------- Header / navigation ---------- */
.nav {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255, 255, 255, .95);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
}
.nav .wrap {
  max-width: var(--wrap-wide);
  height: var(--nav-h);
  display: flex; align-items: center; gap: 28px;
}
.logo { display: flex; align-items: center; gap: 12px; color: var(--ac); flex: none; min-width: 0; }
.logo img { height: 46px; width: auto; flex: none; }
.logo__name { font: 700 25px/1 var(--hf); letter-spacing: .12em; text-transform: uppercase; white-space: nowrap; }
.menu { display: flex; align-items: center; gap: 20px; list-style: none; margin: 0 auto; padding: 0; }
.menu > li { position: relative; }
.menu__link {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 8px 0;
  font: 400 12.5px/1 var(--bf);
  letter-spacing: .07em;
  text-transform: uppercase;
  white-space: nowrap;
  background: none; border: 0; cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: border-color .25s, color .25s;
}
.menu__link:hover, .menu__link[aria-current="page"], .has-sub.open > .menu__link { border-color: var(--ac2); }
.menu__link .ico { width: 14px; height: 14px; }
.has-sub.open > .menu__link .ico { transform: rotate(180deg); }
.submenu {
  position: absolute; top: calc(100% + 12px); left: -18px;
  min-width: 220px;
  list-style: none; margin: 0; padding: 10px 0;
  background: #fff;
  border: 1px solid var(--line);
  border-top: 3px solid var(--ac2);
  box-shadow: 0 24px 40px -24px rgba(0, 0, 0, .35);
  opacity: 0; visibility: hidden; transform: translateY(6px);
  transition: opacity .2s, transform .2s, visibility .2s;
}
.submenu::before { content: ""; position: absolute; left: 0; right: 0; top: -16px; height: 16px; }
.submenu a { display: block; padding: 10px 20px; font-size: 14px; letter-spacing: .03em; transition: background .2s, color .2s; }
.submenu a:hover, .submenu a[aria-current="page"] { background: var(--bg2); color: var(--ac); }
.has-sub.open .submenu { opacity: 1; visibility: visible; transform: none; }
@media (hover: hover) and (min-width: 1101px) {
  /* mouse: opens on hover (Escape hides it until the mouse leaves);
     keyboard: the button opens/closes it (site.js). Without JS: on focus. */
  .nav:not(.nav--compact) .has-sub:not(.is-dismissed):hover .submenu,
  html:not(.js) .nav .has-sub:focus-within .submenu { opacity: 1; visibility: visible; transform: none; }
}

/* Language: one settings (gear) button that opens the language list */
.lang { position: relative; flex: none; }
.lang__btn {
  display: grid; place-items: center;
  width: 44px; height: 44px;
  background: none; border: 1px solid var(--line); cursor: pointer;
  color: var(--ac);
  transition: border-color .2s, background .2s;
}
.lang__btn:hover, .lang.open .lang__btn { border-color: var(--ac2); background: var(--bg2); }
.lang__btn .ico { width: 20px; height: 20px; transition: transform .5s var(--ease); }
.lang.open .lang__btn .ico { transform: rotate(60deg); }
.lang__menu {
  position: absolute; right: 0; top: calc(100% + 10px);
  width: 210px; max-width: calc(100vw - 32px);
  padding: 8px 0;
  background: #fff;
  border: 1px solid var(--line);
  border-top: 3px solid var(--ac2);
  box-shadow: 0 24px 40px -24px rgba(0, 0, 0, .35);
  opacity: 0; visibility: hidden; transform: translateY(6px);
  transition: opacity .2s, transform .2s, visibility .2s;
}
.lang.open .lang__menu, html:not(.js) .lang:focus-within .lang__menu { opacity: 1; visibility: visible; transform: none; }
.lang__title {
  margin: 4px 18px 6px;
  font: 700 11px/1.4 var(--bf); letter-spacing: .16em; text-transform: uppercase; color: var(--ac2-text);
}
.lang__menu ul { list-style: none; margin: 0; padding: 0; }
.lang__menu a {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  min-height: 44px; padding: 8px 18px; font-size: 15.5px;
}
.lang__menu a:hover { background: var(--bg2); }
.lang__menu a[aria-current="true"] { color: var(--ac); font-weight: 700; }
.lang__menu a .ico { width: 18px; height: 18px; color: var(--ac2); }

.burger {
  display: none;
  align-items: center; gap: 8px;
  height: 44px; padding: 0 12px;
  background: none; border: 1px solid var(--line); cursor: pointer;
  font: 700 12px/1 var(--bf); letter-spacing: .1em; text-transform: uppercase;
  color: var(--ac);
}
.burger .ico { width: 20px; height: 20px; }
.burger .ico--close { display: none; }
.nav.open .burger .ico--menu { display: none; }
.nav.open .burger .ico--close { display: block; }

/* Compact header (≤1100px, or whenever the full menu does not fit) */
.nav--compact .wrap { gap: 10px; }
.nav--compact .menu {
  display: none;
  position: absolute; top: 100%; left: 0; right: 0;
  flex-direction: column; align-items: stretch; gap: 0;
  margin: 0; padding: 8px var(--gutter) 24px;
  background: #fff;
  border-bottom: 1px solid var(--line);
  box-shadow: 0 30px 40px -30px rgba(0, 0, 0, .3);
  max-height: calc(100vh - var(--menu-top, var(--nav-h))); max-height: calc(100dvh - var(--menu-top, var(--nav-h)));
  overflow-y: auto; overscroll-behavior: contain;
}
.nav--compact.open .menu { display: flex; }
.nav--compact .menu > li { border-bottom: 1px solid var(--line); }
.nav--compact .menu__link { width: 100%; justify-content: space-between; min-height: 52px; padding: 14px 0; font-size: 14px; border-bottom: 0; }
.nav--compact .submenu {
  position: static; opacity: 1; visibility: visible; transform: none;
  display: none; box-shadow: none; border: 0; padding: 0 0 10px; min-width: 0;
}
.nav--compact .has-sub.open .submenu { display: block; }
.nav--compact .submenu a { padding: 12px 16px; }
.nav--compact .burger { display: inline-flex; }
.nav--compact .lang { margin-left: auto; }

/* ---------- Hero (card over full-width image) ---------- */
.hero {
  position: relative;
  overflow: hidden;
  min-height: min(84vh, 820px);
  display: flex; align-items: flex-end;
  background: var(--ac);
}
.hero__media { position: absolute; inset: 0; overflow: hidden; }
.hero__bg { width: 100%; height: 100%; }
/* the slow "Ken Burns" movement only when the photo fills the frame (never for Contain / Stretch) */
.hero__bg.sp--standard, .hero__bg.sp--cover {
  transform: scale(calc(var(--z, 1) * 1.04));
  animation: kenburns 22s ease-in-out infinite alternate;
}
@keyframes kenburns { to { transform: scale(calc(var(--z, 1) * 1.12)); } }
.hero .wrap { position: relative; z-index: 2; width: 100%; padding-top: 140px; }
.hero__card {
  max-width: 620px;
  background: var(--bg);
  padding: 48px 48px 56px;
  border-top: 4px solid var(--ac2);
  box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .55);
}
.hero__card .lead { font-size: 18.5px; }

/* ---------- Our Purpose ---------- */
.purpose__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: center; }
.framed { position: relative; isolation: isolate; box-shadow: 0 30px 60px -34px rgba(0, 0, 0, .55); margin: 0 0 14px 14px; }
.framed::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  border: 2px solid var(--ac2);
  transform: translate(-14px, 14px);
}
.framed__clip { display: block; overflow: hidden; background: var(--bg2); }
.framed img { display: block; width: 100%; aspect-ratio: 5 / 4; }
.purpose p { color: var(--mut); }
.tagline {
  margin-top: 26px;
  padding-left: 18px;
  border-left: 3px solid var(--ac2);
  font: 600 21px/1.35 var(--hf);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--ac);
}

/* ---------- How it works ---------- */
.steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin: 44px 0 40px; padding: 0; list-style: none; }
.step {
  background: #fff;
  border: 1px solid var(--line);
  overflow: hidden;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease);
}
.step:hover { transform: translateY(-4px); box-shadow: 0 20px 40px -24px rgba(0, 0, 0, .4); }
.step__media { overflow: hidden; }
.step__media { background: var(--bg2); }
.step__media img { display: block; width: 100%; aspect-ratio: 16 / 10; transition: transform 1.2s var(--ease); }
.step:hover .step__media img.sp--standard, .step:hover .step__media img.sp--cover { transform: scale(calc(var(--z, 1) * 1.06)); }
.step__body { padding: 26px 28px 30px; }
.num { font: 700 46px/1 var(--hf); color: var(--ac2); }
.step h3 { font-size: 21px; font-weight: 600; text-transform: uppercase; letter-spacing: .07em; margin: 10px 0 8px; }
.step p { color: var(--mut); font-size: 15.5px; margin: 0; }

/* ---------- Important dates (list) ---------- */
.dates { position: relative; overflow: hidden; }
.dates__bg { position: absolute; inset: 0; width: 100%; height: 100%; }
.dates::before { content: ""; position: absolute; inset: 0; z-index: 1; background: rgba(250, 247, 240, .93); }
.dates .wrap { position: relative; z-index: 2; }
.dates__layout {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 64px;
  align-items: start;
}
.date-list { list-style: none; margin: 8px 0 0; padding: 0; border-top: 3px solid var(--ink); }
.date-item {
  display: grid;
  grid-template-columns: 128px minmax(0, 1fr);
  gap: 28px;
  align-items: start;
  padding: 24px 4px;
  border-bottom: 1px solid rgba(27, 36, 48, .16);
}
.date-item__date { display: flex; flex-direction: column; gap: 2px; }
.date-item__day { font: 700 46px/.95 var(--hf); color: var(--ac); font-variant-numeric: lining-nums; }
.date-item__month { margin-top: 4px; font: 700 12px/1.3 var(--bf); letter-spacing: .14em; text-transform: uppercase; color: var(--ac2-text); }
.date-item__year { font: 400 13px/1.3 var(--bf); letter-spacing: .08em; color: var(--mut); white-space: nowrap; }
.date-item__text { font-size: 18px; line-height: 1.55; color: var(--ink); padding-top: 4px; overflow-wrap: break-word; }

/* ---------- How to get involved ---------- */
.involve { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; margin-top: 40px; }
.card {
  background: #fff;
  border: 1px solid var(--line);
  overflow: hidden;
  display: flex; flex-direction: column;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease);
}
.card:hover { transform: translateY(-4px); box-shadow: 0 24px 46px -26px rgba(0, 0, 0, .45); }
.card__media { overflow: hidden; aspect-ratio: 16 / 7; background: var(--bg2); }
.card__media img { display: block; width: 100%; height: 100%; transition: transform 1.4s var(--ease); }
.card:hover .card__media img.sp--standard, .card:hover .card__media img.sp--cover { transform: scale(calc(var(--z, 1) * 1.06)); }
.card__body { padding: 30px 32px 34px; display: flex; flex-direction: column; flex: 1; }
.card h3 { font-size: 26px; font-weight: 600; text-transform: uppercase; letter-spacing: .07em; margin-bottom: 10px; }
.card p { color: var(--mut); }
.card .btns { margin-top: auto; padding-top: 10px; }

/* ---------- Contact ---------- */
.contacts { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 18px; margin-top: 40px; }
.contact {
  display: flex; align-items: center; gap: 16px;
  padding: 20px 22px;
  background: #fff;
  border: 1px solid var(--line);
  transition: transform .3s var(--ease), border-color .3s, box-shadow .3s;
  min-width: 0;
}
.contact:hover { transform: translateY(-3px); border-color: var(--ac2); box-shadow: 0 18px 34px -24px rgba(0, 0, 0, .4); }
.contact__icon { width: 44px; height: 44px; flex: none; display: grid; place-items: center; background: var(--ac); color: #fff; }
.contact__icon .ico { width: 22px; height: 22px; }
.contact__text { min-width: 0; }
.contact__name { display: block; font: 700 11.5px/1.4 var(--bf); letter-spacing: .14em; text-transform: uppercase; color: var(--ac2-text); }
.contact__value { display: block; font-size: 16px; overflow-wrap: anywhere; }

/* ---------- Inner page header (shared by inner pages) ---------- */
.page-head { padding: 88px 0 64px; background: var(--bg2); border-bottom: 1px solid var(--line); }
.page-head h1 { margin-bottom: 14px; }
.notice { padding: 72px 0 96px; }
.notice p { color: var(--mut); max-width: 640px; }

/* ---------- Footer ---------- */
.footer { position: relative; overflow: hidden; color: #fff; background: var(--ac-dark); font: 15px/1.8 var(--bf); }
.footer__bg { position: absolute; inset: 0; width: 100%; height: 100%; }
.footer::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(160deg, rgba(29, 53, 87, .95), rgba(13, 26, 46, .96));
}
.footer .wrap {
  position: relative; z-index: 2;
  display: grid; grid-template-columns: 1.5fr 1fr 1fr 1.1fr; gap: 40px;
  padding-top: 72px; padding-bottom: 30px;
}
.footer__brand .logo { color: #fff; }
.footer__tagline { margin: 18px 0 8px; font: 600 19px/1.3 var(--hf); letter-spacing: .1em; text-transform: uppercase; color: var(--ac2-light); }
.footer__about { color: rgba(255, 255, 255, .78); max-width: 360px; }
.footer__heading { font: 700 12px/1.4 var(--bf); letter-spacing: .18em; text-transform: uppercase; color: var(--ac2-light); margin: 0 0 12px; }
.footer ul { list-style: none; margin: 0; padding: 0; }
.footer li a { display: inline-flex; align-items: center; gap: 9px; min-height: 32px; color: rgba(255, 255, 255, .86); transition: color .2s; overflow-wrap: anywhere; }
.footer li a:hover { color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.footer li .ico { width: 16px; height: 16px; color: var(--ac2-light); }
.footer__bottom {
  grid-column: 1 / -1;
  margin-top: 26px; padding-top: 20px;
  border-top: 1px solid rgba(255, 255, 255, .18);
  font-size: 13px; color: rgba(255, 255, 255, .7);
}

/* ---------- Reveal on scroll (only when JavaScript runs) ---------- */
.js .rv { opacity: 0; transform: translateY(18px); transition: opacity .9s var(--ease), transform .9s var(--ease); }
.js .rv.in { opacity: 1; transform: none; }

/* ==========================================================================
   Small laptop / tablet landscape  (≤ 1100px)
   ========================================================================== */
@media (max-width: 1100px) {
  :root { --sec-pad: 76px; }
  .purpose__grid { gap: 48px; }
  .dates__layout { gap: 44px; }
  .hero__card { max-width: 580px; padding: 42px 40px 48px; }
  .step__body { padding: 22px 22px 26px; }
  .card__body { padding: 26px 26px 30px; }
  .footer .wrap { grid-template-columns: 1.3fr 1fr 1fr; }
  .footer__brand { grid-row: span 2; }
}

/* ==========================================================================
   Tablet portrait  (≤ 900px)
   ========================================================================== */
@media (max-width: 900px) {
  :root { --nav-h: 72px; --sec-pad: 64px; }
  body { font-size: 16.5px; }
  .lead { font-size: 18px; }
  .logo img { height: 40px; }
  .logo__name { font-size: 22px; letter-spacing: .1em; }

  /* hero: card stays on the photo, a little narrower */
  .hero { min-height: 0; }
  .hero .wrap { padding-top: 180px; }
  .hero__card { max-width: 560px; }

  /* purpose: photo on top as a wide banner, text below */
  .purpose__grid { grid-template-columns: 1fr; gap: 40px; }
  .framed img { aspect-ratio: 16 / 9; }

  /* steps: horizontal cards — photo left, text right */
  .steps { grid-template-columns: 1fr; gap: 18px; }
  .step { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); }
  .step__media img { height: 100%; aspect-ratio: auto; min-height: 190px; }
  .step__body { padding: 24px 26px; align-self: center; }

  /* dates: heading on top, list below */
  .dates__layout { grid-template-columns: 1fr; gap: 28px; }

  .card__media { aspect-ratio: 16 / 9; }
  .involve { gap: 20px; }

  .footer .wrap { grid-template-columns: 1fr 1fr; gap: 32px; padding-top: 56px; }
  .footer__brand { grid-column: 1 / -1; grid-row: auto; }
  .page-head { padding: 60px 0 44px; }
}

/* ==========================================================================
   Phones  (≤ 640px)
   ========================================================================== */
@media (max-width: 640px) {
  :root { --gutter: 18px; --nav-h: 66px; --sec-pad: 56px; }
  body { font-size: 16px; }
  .lead { font-size: 17px; }
  h1 { font-size: clamp(26px, 7.6vw, 34px); letter-spacing: .05em; margin: 14px 0 16px; }
  .sec h2 { font-size: clamp(22px, 6.4vw, 28px); letter-spacing: .05em; min-width: 0; }
  .eyebrow { font-size: 11px; letter-spacing: .16em; }

  /* news strip: arrow only (its text stays for screen readers) */
  .news { font-size: 13px; }
  .news .wrap { gap: 10px; }
  .news__link-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); }
  .news__link { min-width: 32px; justify-content: center; }
  .news__link .ico { width: 20px; height: 20px; }

  .nav .wrap, .nav--compact .wrap { gap: 8px; }
  .logo { gap: 8px; }
  .logo img { height: 34px; }
  .logo__name { font-size: 19px; letter-spacing: .08em; }
  .burger { padding: 0; width: 44px; justify-content: center; }
  .burger__text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }

  /* hero: photo band on top, card below (no overlap) */
  .hero { display: block; }
  .hero__media { position: relative; height: clamp(190px, 52vw, 300px); }
  .hero .wrap { padding: 0; }
  .hero__card { max-width: none; padding: 28px var(--gutter) 34px; box-shadow: none; }
  .hero__card .lead { font-size: 17px; }

  .purpose__grid { gap: 32px; }
  .framed { margin: 0 0 8px 8px; }
  .framed::before { transform: translate(-8px, 8px); }
  .framed img { aspect-ratio: 4 / 3; }
  .tagline { font-size: 18px; }

  /* steps: vertical cards again */
  .steps { margin: 32px 0; }
  .step { display: block; }
  .step__media img { aspect-ratio: 16 / 9; height: auto; min-height: 0; }
  .step__body { padding: 20px 20px 24px; }
  .num { font-size: 40px; }
  .step h3 { font-size: 19px; }

  .date-item { grid-template-columns: 104px minmax(0, 1fr); gap: 16px; padding: 20px 0; }
  .date-item__day { font-size: 38px; }
  .date-item__month { font-size: 11px; letter-spacing: .1em; }
  .date-item__year { font-size: 12px; }
  .date-item__text { font-size: 16.5px; padding-top: 2px; }

  .involve { grid-template-columns: 1fr; }
  .card__body { padding: 22px 20px 26px; }
  .card h3 { font-size: 22px; }

  .contacts { gap: 12px; margin-top: 28px; }
  .contact { padding: 16px; }

  /* full-width, stacked buttons are easier to tap on phones */
  .btns { flex-direction: column; align-items: stretch; gap: 10px; margin-top: 24px; }
  .btn { width: 100%; }
  .btn__label { padding: 12px 16px; }

  .footer .wrap { gap: 28px 20px; padding-top: 48px; }
  .page-head { padding: 44px 0 32px; }
  .notice { padding: 44px 0 64px; }
}

/* ==========================================================================
   Small phones  (≤ 380px)
   ========================================================================== */
@media (max-width: 380px) {
  :root { --gutter: 14px; --nav-h: 62px; }
  .logo img { height: 28px; }
  .logo__name { font-size: 16px; letter-spacing: .06em; }
  .lang__btn, .burger { width: 40px; height: 40px; }
  .date-item { grid-template-columns: 88px minmax(0, 1fr); gap: 12px; }
  .date-item__day { font-size: 34px; }
  .footer .wrap { grid-template-columns: 1fr; }
}
/* very small phones: the news strip text may use three lines (still one fixed height) */
@media (max-width: 400px) {
  .news .wrap { height: 70px; }
  .news__text { -webkit-line-clamp: 3; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .js .rv { opacity: 1; transform: none; }
}

/* ---------- Fallback when JavaScript is off: menu wraps under the logo ---------- */
@media (max-width: 1100px) {
  html:not(.js) .nav { position: static; }
  html:not(.js) .nav .wrap { flex-wrap: wrap; height: auto; padding-top: 12px; padding-bottom: 12px; }
  html:not(.js) .menu { flex-wrap: wrap; gap: 4px 18px; margin: 0; order: 3; width: 100%; }
  html:not(.js) .submenu { position: static; opacity: 1; visibility: visible; transform: none; display: none; }
  html:not(.js) .has-sub:focus-within .submenu { display: block; }
}

/* ==========================================================================
   Stage 2 — Courses, Volunteers, Students
   ========================================================================== */

/* Longer admin texts with tidy lists (richtext filter) */
.text-rich { font-size: 18px; line-height: 1.8; color: var(--ink); }
.text-rich p { margin: 0 0 1.1em; }
.text-rich .rt-list { list-style: none; margin: 0 0 1.2em; padding: 0; }
.text-rich .rt-list li {
  display: grid; grid-template-columns: 30px minmax(0, 1fr);
  padding: 7px 0; border-bottom: 1px dashed rgba(27, 36, 48, .12);
}
.text-rich .rt-list li:last-child { border-bottom: 0; }
.text-rich .rt-mark { color: var(--ac2-text); font-weight: 700; }
.text-rich .rt-list--num .rt-mark { font-family: var(--hf); font-size: 1.15em; line-height: 1.55; color: var(--ac); font-variant-numeric: lining-nums; }
.text-rich > :last-child { margin-bottom: 0; }

/* ---------- Courses ---------- */
.course-grid {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 270px), 1fr)); gap: 20px;
}
.course {
  position: relative;
  display: flex; flex-direction: column; gap: 18px;
  min-height: 170px; padding: 26px 26px 28px;
  background: #fff; border: 1px solid var(--line);
  transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s;
}
.course::before { content: ""; position: absolute; left: 26px; top: -1px; width: 44px; height: 3px; background: var(--ac2); transition: width .4s var(--ease); }
.course:hover { transform: translateY(-4px); box-shadow: 0 20px 40px -26px rgba(0, 0, 0, .45); border-color: rgba(166, 124, 46, .45); }
.course:hover::before { width: calc(100% - 52px); }
.course__num { font: 700 40px/1 var(--hf); color: var(--ac2); font-variant-numeric: lining-nums; }
.course__name {
  margin-top: auto;
  font: 600 22px/1.25 var(--hf); letter-spacing: .06em; text-transform: uppercase; color: var(--ac);
  overflow-wrap: anywhere;
}
.empty-state { padding: 36px 32px; background: var(--bg2); border-left: 4px solid var(--ac2); max-width: 760px; }
.empty-state .lead { margin: 0; }
.cta-band__inner { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 40px; align-items: end; }
.cta-band .btns { margin-top: 0; justify-content: flex-end; }

/* ---------- Volunteers / Students: split hero ---------- */
.split-hero { padding: 72px 0 96px; background: var(--bg); overflow: hidden; }
.split-hero__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: 72px; align-items: center; }
.split-hero__text h1 { font-size: clamp(34px, 4.6vw, 60px); }
.split-hero__media img { aspect-ratio: 4 / 5; }
.split-hero--mirror .split-hero__media { order: -1; }
.split-hero__note { display: flex; align-items: center; gap: 10px; margin: 18px 0 0; font-weight: 700; font-size: 15.5px; color: var(--ac); }
.split-hero__note .ico { flex: none; width: 20px; height: 20px; color: var(--ac2); }
.framed--right { margin: 0 14px 14px 0; }
.framed--right::before { transform: translate(14px, 14px); }

/* ---------- Information sheet (main text + apply button) ---------- */
.info-sheet {
  max-width: 860px; margin: 0 auto;
  background: #fff;
  border: 1px solid var(--line); border-top: 4px solid var(--ac2);
  padding: 56px 64px 60px;
  box-shadow: 0 30px 60px -44px rgba(0, 0, 0, .45);
}
.info-sheet__empty { margin: 0; color: var(--mut); font-size: 18px; }
.info-sheet__action { margin-top: 44px; padding-top: 34px; border-top: 1px solid var(--line); }
.info-sheet__action--alone { margin-top: 0; padding-top: 0; border-top: 0; }
.info-sheet__note { display: flex; align-items: center; gap: 8px; margin: 16px 0 0; font-size: 15px; color: var(--mut); }
.info-sheet__note .ico { color: var(--ac2); width: 18px; height: 18px; }
.btn--lg { font-size: 15.5px; min-height: 58px; }
.btn--lg .btn__label { padding: 16px 26px; }
.btn--lg .btn__icon { width: 58px; }

@media (max-width: 1100px) {
  .split-hero__grid { gap: 48px; }
  .info-sheet { padding: 48px 48px 52px; }
}
@media (max-width: 900px) {
  .split-hero { padding: 40px 0 64px; }
  .split-hero__grid { grid-template-columns: 1fr; gap: 32px; }
  .split-hero__media { order: -1; }
  .split-hero__media img { aspect-ratio: 16 / 9; }
  .cta-band__inner { grid-template-columns: 1fr; gap: 8px; align-items: start; }
  .cta-band .btns { justify-content: flex-start; margin-top: 16px; }
  .course { min-height: 150px; }
}
@media (max-width: 640px) {
  .split-hero { padding: 24px 0 48px; }
  .split-hero__text h1 { font-size: clamp(26px, 8vw, 34px); }
  .split-hero__media img { aspect-ratio: 3 / 2; }
  .framed--right { margin: 0 8px 8px 0; }
  .framed--right::before { transform: translate(8px, 8px); }
  .info-sheet { padding: 28px 20px 32px; border-left: 0; border-right: 0; margin: 0 calc(var(--gutter) * -1); }
  .text-rich { font-size: 16.5px; line-height: 1.75; }
  .text-rich .rt-list li { grid-template-columns: 24px minmax(0, 1fr); }
  .info-sheet__action { margin-top: 32px; padding-top: 26px; }
  .info-sheet__note { align-items: flex-start; font-size: 14px; }
  .btn--lg { font-size: 15px; min-height: 54px; }
  .btn--lg .btn__label { padding: 14px 18px; }
  .btn--lg .btn__icon { width: 52px; }
  .course-grid { gap: 12px; }
  .course { flex-direction: row; align-items: center; min-height: 0; padding: 20px 18px; gap: 16px; }
  .course::before { left: 18px; }
  .course:hover::before { width: calc(100% - 36px); }
  .course__num { font-size: 32px; min-width: 44px; }
  .course__name { margin-top: 0; font-size: 19px; letter-spacing: .04em; }
  .empty-state { padding: 24px 20px; }
}

/* ==========================================================================
   Stage 3 — News, photo galleries, photo viewer, video
   ========================================================================== */
.section-pad { padding: var(--sec-pad) 0; }
.wrap--narrow { max-width: 860px; }
.btn--back:hover .ico { transform: translateX(-4px); }
.back-link {
  display: inline-flex; align-items: center; gap: 8px; min-height: 40px;
  font: 700 12.5px/1 var(--bf); letter-spacing: .1em; text-transform: uppercase; color: var(--ac);
}
.back-link .ico { width: 18px; height: 18px; }
.back-link:hover .ico { transform: translateX(-4px); }
.preview-banner { background: #fff4d6; border-bottom: 1px solid var(--ac2-light); color: #6b4e0f; font-weight: 700; font-size: 15px; padding: 12px 0; }
.preview-banner a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }

/* ---------- Fixed page photos ("Site photos"): the same Contain / Fill / Stretch,
   position and zoom as every other photo. Standard pictures fill their frame. ---------- */
.sp {
  object-fit: var(--fit, cover);
  object-position: var(--x, 50%) var(--y, 50%);
  transform: scale(var(--z, 1));
  transform-origin: var(--x, 50%) var(--y, 50%);
}

/* ---------- Photo frame (honours the admin's Contain / Fill / Stretch / position / zoom) ---------- */
.ph { position: relative; display: block; overflow: hidden; background: var(--bg2); }
.ph img {
  width: 100%; height: 100%;
  object-fit: var(--fit, cover);
  object-position: var(--x, 50%) var(--y, 50%);
  transform: scale(var(--z, 1));
  transform-origin: var(--x, 50%) var(--y, 50%);
  transition: transform 1s var(--ease);
}
.ph--contain { background: linear-gradient(135deg, #eeebe4, #e3dfd6); }
a.ph--cover:hover img { transform: scale(calc(var(--z, 1) * 1.04)); }
.ph__zoom {
  position: absolute; right: 12px; bottom: 12px;
  display: grid; place-items: center; width: 40px; height: 40px;
  background: rgba(20, 35, 59, .78); color: #fff;
  opacity: 0; transform: translateY(6px); transition: opacity .3s, transform .3s;
}
.ph__zoom .ico { width: 18px; height: 18px; }
a.ph:hover .ph__zoom, a.ph:focus-visible .ph__zoom { opacity: 1; transform: none; }
@media (hover: none) { .ph__zoom { opacity: 1; transform: none; } }

/* ---------- News list ---------- */
.news-list { list-style: none; margin: 0; padding: 0; border-top: 3px solid var(--ink); }
.news-item { border-bottom: 1px solid rgba(27, 36, 48, .16); }
.news-item__link {
  display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 32px;
  padding: 32px 8px; align-items: start; transition: background .3s;
}
.news-item__link.has-media { grid-template-columns: 120px minmax(0, 1fr) 280px; }
.news-item__link:hover { background: rgba(243, 241, 236, .7); }
.news-item__date { display: flex; flex-direction: column; gap: 2px; }
.news-item__day { font: 700 44px/.95 var(--hf); color: var(--ac); font-variant-numeric: lining-nums; }
.news-item__month { margin-top: 4px; font: 700 12px/1.3 var(--bf); letter-spacing: .14em; text-transform: uppercase; color: var(--ac2-text); }
.news-item__year { font-size: 13px; color: var(--mut); letter-spacing: .08em; }
.news-item__title {
  font: 600 25px/1.25 var(--hf); letter-spacing: .05em; text-transform: uppercase; color: var(--ac);
  transition: color .3s;
}
.news-item__link:hover .news-item__title { color: var(--ac-dark); }
.news-item__summary { margin: 10px 0 14px; color: var(--mut); }
.news-item__more { display: inline-flex; align-items: center; gap: 8px; font: 700 13px/1 var(--bf); letter-spacing: .06em; text-transform: uppercase; color: var(--ac); }
.news-item__link:hover .news-item__more .ico { transform: translateX(4px); }
.news-item__media { aspect-ratio: 4 / 3; }

/* ---------- Pagination ---------- */
.pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px; margin-top: 44px; }
.pager__pages { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; margin: 0; padding: 0; }
.pager__num, .pager__step {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-width: 44px; min-height: 44px; padding: 0 12px;
  border: 1px solid var(--line); font-weight: 700; color: var(--ac);
}
.pager__num.is-current { background: var(--ac); color: #fff; border-color: var(--ac); }
.pager a:hover { border-color: var(--ac2); }

/* ---------- Article ---------- */
.article-head { padding: 56px 0 8px; }
.article-date { margin: 24px 0 0; font: 700 12.5px/1.4 var(--bf); letter-spacing: .14em; text-transform: uppercase; color: var(--ac2-text); }
.article-head h1 { font-size: clamp(30px, 3.8vw, 48px); margin: 14px 0 22px; }
.article-summary { font-size: 21px; line-height: 1.6; color: var(--mut); padding-left: 20px; border-left: 3px solid var(--ac2); }
.article-main { padding: 28px 0 var(--sec-pad); }
.article-body { padding-top: 24px; }
.article-gallery, .article-video { margin-top: 56px; }
.article-foot { margin-top: 56px; padding-top: 32px; border-top: 1px solid var(--line); }

/* ---------- Galleries ---------- */
.gallery__track { list-style: none; margin: 0; padding: 0; }
.gallery__item { min-width: 0; }
.gallery__link { height: 100%; }
/* 1–3 photos: spacious */
.gallery--spacious .gallery__track { display: grid; gap: 16px; }
.gallery--n1 .gallery__link { aspect-ratio: 16 / 9; }
.gallery--spacious.gallery--n2 .gallery__track { grid-template-columns: 1fr 1fr; }
.gallery--spacious.gallery--n2 .gallery__link { aspect-ratio: 4 / 3; }
.gallery--spacious.gallery--n3 .gallery__track { grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; aspect-ratio: 16 / 9; }
.gallery--spacious.gallery--n3 .gallery__item:first-child { grid-row: span 2; }
/* 4–6 photos: grid (used by Seasons) */
.gallery--grid .gallery__track { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.gallery--grid .gallery__link { aspect-ratio: 4 / 3; }
/* many photos: scrolling carousel with buttons */
.gallery__bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.gallery__count { margin: 0; font: 700 12px/1.4 var(--bf); letter-spacing: .14em; text-transform: uppercase; color: var(--ac2-text); }
.gallery__nav { display: flex; gap: 8px; }
.gallery__btn {
  display: grid; place-items: center; width: 48px; height: 48px;
  border: 1.5px solid var(--ac); background: #fff; color: var(--ac); cursor: pointer;
  transition: background .2s, color .2s, opacity .2s;
}
.gallery__btn:hover:not([aria-disabled="true"]) { background: var(--ac); color: #fff; }
.gallery__btn[aria-disabled="true"] { opacity: .35; cursor: default; }
.gallery__btn .ico { width: 20px; height: 20px; }
.gallery--carousel .gallery__track {
  display: flex; gap: 16px; overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory; scroll-behavior: smooth; padding-bottom: 12px;
  scrollbar-width: thin; scrollbar-color: var(--ac2) transparent;
}
.gallery--carousel .gallery__item { flex: 0 0 calc((100% - 32px) / 2.6); scroll-snap-align: start; }
.gallery--carousel .gallery__link { aspect-ratio: 4 / 3; }
.gallery--carousel .gallery__track:focus-visible { outline: 2px solid var(--ac2); outline-offset: 4px; }
/* keyboard focus on a photo: a ring drawn inside the frame (an outside ring
   would be cut off by the scrolling gallery) */
.gallery__link:focus-visible { outline: none; }
.gallery__link:focus-visible::after {
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  border: 3px solid var(--ac2); box-shadow: inset 0 0 0 2px #fff;
}

/* ---------- Full-screen photo viewer ---------- */
html.lb-open { overflow: hidden; }
dialog.lb {
  width: 100vw; height: 100vh; height: 100dvh; max-width: none; max-height: none;
  margin: 0; padding: 0; border: 0; color: #fff;
  background: rgba(9, 15, 27, .97);
  display: grid; grid-template-rows: auto minmax(0, 1fr); overflow: hidden;
  touch-action: pan-y;  /* a sideways swipe is for the viewer (previous / next photo) */
}
dialog.lb:not([open]) { display: none; }
dialog.lb::backdrop { background: rgba(9, 15, 27, .9); }
.lb__bar { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px 0 24px; }
.lb__count { font: 700 13px/1 var(--bf); letter-spacing: .14em; }
.lb__stage { display: grid; place-items: center; padding: 12px 84px 28px; min-height: 0; }
.lb__img {
  max-width: calc(100vw - 180px); max-height: calc(100vh - 110px); max-height: calc(100dvh - 110px);
  width: auto; height: auto; object-fit: contain; transition: opacity .25s; user-select: none; -webkit-user-drag: none;
}
.lb__img.is-loading { opacity: .85; }
.lb__btn {
  display: grid; place-items: center; width: 52px; height: 52px;
  border: 1px solid rgba(255, 255, 255, .3); background: rgba(255, 255, 255, .06); color: #fff; cursor: pointer;
}
.lb__btn:hover { background: rgba(255, 255, 255, .16); border-color: var(--ac2-light); }
.lb__btn svg { width: 24px; height: 24px; }
.lb__prev, .lb__next { position: absolute; top: 50%; transform: translateY(-50%); }
.lb__prev { left: 16px; }
.lb__next { right: 16px; }
.lb__btn[hidden] { display: none; }

/* ---------- Video ---------- */
.video-wrap { max-width: 980px; margin: 0 auto; }
.video { position: relative; aspect-ratio: 16 / 9; background: #0d1a2e; box-shadow: 0 30px 60px -40px rgba(0, 0, 0, .6); }
.video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.video-wrap--vertical { max-width: 420px; }
.video-wrap--vertical .video { aspect-ratio: 9 / 16; }
.video-wrap--instagram .video { aspect-ratio: auto; height: calc(min(100vw - 2 * var(--gutter), 420px) * 1.78 + 120px); }
.video-link { display: inline-flex; align-items: center; gap: 8px; margin-top: 14px; font-size: 15px; color: var(--ac); }
.video-link .ico { width: 16px; height: 16px; }
.video-link:hover { text-decoration: underline; text-underline-offset: 3px; }

@media (max-width: 900px) {
  .news-item__link, .news-item__link.has-media { grid-template-columns: 100px minmax(0, 1fr); gap: 24px; }
  .news-item__link.has-media .news-item__media { grid-column: 1 / -1; grid-row: 1; aspect-ratio: 16 / 9; }
  .gallery--grid .gallery__track { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gallery--carousel .gallery__item { flex-basis: calc((100% - 16px) / 2.15); }
  .article-summary { font-size: 19px; }
}
@media (max-width: 640px) {
  .news-item__link, .news-item__link.has-media { grid-template-columns: 1fr; gap: 12px; padding: 24px 0; }
  .news-item__date { flex-direction: row; align-items: baseline; flex-wrap: wrap; gap: 6px 10px; }
  .news-item__day { font-size: 30px; }
  .news-item__month { margin-top: 0; }
  .news-item__title { font-size: 21px; letter-spacing: .04em; }
  .article-head { padding-top: 28px; }
  .article-head h1 { font-size: clamp(25px, 7.2vw, 32px); }
  .article-summary { font-size: 17.5px; padding-left: 14px; }
  .article-gallery, .article-video, .article-foot { margin-top: 40px; }
  .gallery--spacious .gallery__track { gap: 10px; }
  .gallery--n1 .gallery__link { aspect-ratio: 4 / 3; }
  .gallery--spacious.gallery--n2 .gallery__track { grid-template-columns: 1fr; }
  .gallery--spacious.gallery--n3 .gallery__track { grid-template-columns: 1fr 1fr; grid-template-rows: auto auto; aspect-ratio: auto; }
  .gallery--spacious.gallery--n3 .gallery__item:first-child { grid-column: 1 / -1; grid-row: auto; }
  .gallery--spacious.gallery--n3 .gallery__link { aspect-ratio: 4 / 3; }
  .gallery--grid .gallery__track { gap: 10px; }
  .gallery--carousel .gallery__track { gap: 10px; margin: 0 calc(var(--gutter) * -1); padding: 0 var(--gutter) 12px; scroll-padding-left: var(--gutter); }
  .gallery--carousel .gallery__item { flex-basis: 84%; }
  .gallery__btn { width: 44px; height: 44px; }
  .lb__bar { padding: 10px 10px 0 16px; }
  .lb__stage { padding: 8px 0 76px; }
  .lb__img { max-width: 100vw; max-height: calc(100vh - 150px); max-height: calc(100dvh - 150px); }
  .lb__prev, .lb__next { top: auto; bottom: 14px; transform: none; }
  .lb__prev { left: calc(50% - 64px); }
  .lb__next { right: calc(50% - 64px); }
  .pager { gap: 8px; }
  .pager__step span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
}

/* ==========================================================================
   Stage 4 — Seasons
   ========================================================================== */
/* ---------- Seasons list ---------- */
.season-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 28px; }
.season-card__link {
  display: grid; grid-template-columns: minmax(0, 1fr);
  background: #fff; border: 1px solid var(--line); border-top: 4px solid var(--ac2);
  transition: box-shadow .4s var(--ease), transform .4s var(--ease);
}
.season-card.has-media .season-card__link { grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); }
.season-card.has-media:nth-child(even) .season-card__media { order: 2; }
.season-card__link:hover { transform: translateY(-3px); box-shadow: 0 30px 60px -40px rgba(0, 0, 0, .5); }
.season-card__media { min-height: 340px; }
.season-card__media img { position: absolute; inset: 0; }
.season-card__link:hover .ph--cover img { transform: scale(calc(var(--z, 1) * 1.04)); }
.season-card__body { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding: 48px 52px; min-width: 0; }
.season-card__meta { display: flex; flex-wrap: wrap; gap: 4px 0; margin: 0 0 12px; font: 700 12px/1.4 var(--bf); letter-spacing: .14em; text-transform: uppercase; color: var(--ac2-text); }
.season-card__meta span + span::before { content: "·"; margin: 0 10px; }
.season-card__title {
  font: 600 clamp(28px, 3vw, 42px)/1.12 var(--hf); letter-spacing: .06em; text-transform: uppercase;
  color: var(--ac); overflow-wrap: break-word; max-width: 100%; font-variant-numeric: lining-nums;
}
.season-card__excerpt { margin: 16px 0 26px; font-size: 17px; line-height: 1.7; color: var(--mut); max-width: 62ch; overflow-wrap: anywhere; }
.season-card__more { display: inline-flex; align-items: center; gap: 8px; font: 700 13px/1 var(--bf); letter-spacing: .06em; text-transform: uppercase; color: var(--ac); }
.season-card__link:hover .season-card__more .ico { transform: translateX(4px); }

/* ---------- Season page ---------- */
.season-head { padding: 64px 0 56px; background: var(--bg2); border-bottom: 1px solid var(--line); }
.season-head__title { font-size: clamp(38px, 6vw, 76px); letter-spacing: .08em; line-height: 1.05; margin: 22px 0 0; overflow-wrap: break-word; }
.season-head__title::after { content: ""; display: block; width: 72px; height: 3px; margin-top: 24px; background: var(--ac2); }
.season-main { padding: 56px 0 var(--sec-pad); }
.season-gallery, .season-video { margin-top: 64px; }
.season-nav {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 24px;
  margin-top: 64px; padding-top: 32px; border-top: 1px solid var(--line);
}
.season-nav__steps { display: flex; flex-wrap: wrap; gap: 12px; }
.season-step {
  display: inline-flex; align-items: center; gap: 14px; min-height: 64px; padding: 10px 18px;
  border: 1px solid var(--line); background: #fff; color: var(--ac); max-width: 100%;
  transition: border-color .3s, background .3s;
}
.season-step > span { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.season-step--next > span { text-align: right; }
.season-step__label { font: 700 11px/1.3 var(--bf); letter-spacing: .14em; text-transform: uppercase; color: var(--mut); }
.season-step__name { font: 600 19px/1.2 var(--hf); letter-spacing: .06em; text-transform: uppercase; overflow-wrap: anywhere; font-variant-numeric: lining-nums; }
.season-step:hover { border-color: var(--ac2); background: var(--bg2); }
.season-step--prev:hover .ico { transform: translateX(-4px); }
.season-step--next:hover .ico { transform: translateX(4px); }

/* ---------- 4–6 photos: editorial grid ---------- */
.gallery--grid.gallery--n4 .gallery__track { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gallery--grid.gallery--n4 .gallery__link { aspect-ratio: 3 / 2; }
.gallery--grid.gallery--n5 .gallery__track { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.gallery--grid.gallery--n5 .gallery__item { grid-column: span 2; }
.gallery--grid.gallery--n5 .gallery__item:nth-child(-n+2) { grid-column: span 3; }
.gallery--grid.gallery--n5 .gallery__item:nth-child(-n+2) .gallery__link { aspect-ratio: 3 / 2; }
.gallery--grid.gallery--n6 .gallery__item:first-child { grid-column: span 2; grid-row: span 2; }
.gallery--grid.gallery--n6 .gallery__item:first-child .gallery__link { aspect-ratio: auto; }

@media (max-width: 1100px) {
  .season-card__body { padding: 40px 40px; }
}
@media (max-width: 900px) {
  .season-card.has-media .season-card__link { grid-template-columns: minmax(0, 1fr); }
  .season-card.has-media:nth-child(even) .season-card__media { order: 0; }
  .season-card__media { min-height: 0; aspect-ratio: 16 / 9; }
  .season-card__body { padding: 32px 32px 36px; }
  /* grid galleries: two columns */
  .gallery--grid.gallery--n5 .gallery__track, .gallery--grid.gallery--n6 .gallery__track { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gallery--grid.gallery--n5 .gallery__item, .gallery--grid.gallery--n5 .gallery__item:nth-child(-n+2) { grid-column: auto; }
  .gallery--grid.gallery--n5 .gallery__item:first-child { grid-column: 1 / -1; }
  .gallery--grid.gallery--n5 .gallery__item:nth-child(-n+2) .gallery__link { aspect-ratio: 4 / 3; }
  .gallery--grid.gallery--n5 .gallery__item:first-child .gallery__link { aspect-ratio: 16 / 9; }
  .gallery--grid.gallery--n6 .gallery__item:first-child { grid-column: auto; grid-row: auto; }
  .gallery--grid.gallery--n6 .gallery__item:first-child .gallery__link { aspect-ratio: 4 / 3; }
}
@media (max-width: 640px) {
  .season-list { gap: 20px; }
  .season-card__link { margin: 0 calc(var(--gutter) * -1); border-left: 0; border-right: 0; }
  .season-card__link:hover { transform: none; }
  .season-card__media { aspect-ratio: 4 / 3; }
  .season-card__body { padding: 24px var(--gutter) 28px; }
  .season-card__title { font-size: clamp(24px, 7.4vw, 30px); letter-spacing: .04em; }
  .season-card__excerpt { font-size: 16px; margin: 12px 0 20px; }
  .season-head { padding: 28px 0 36px; }
  .season-head__title { font-size: clamp(30px, 10vw, 42px); letter-spacing: .05em; margin-top: 16px; }
  .season-head__title::after { margin-top: 18px; width: 56px; }
  .season-main { padding-top: 36px; }
  .season-gallery, .season-video, .season-nav { margin-top: 44px; }
  .season-nav { flex-direction: column; align-items: stretch; }
  .season-nav .btn--back { align-self: flex-start; }
  .season-nav__steps { flex-direction: column; }
  .season-step { width: 100%; }
  .season-step--next { justify-content: flex-end; }
  .gallery--grid.gallery--n4 .gallery__link { aspect-ratio: 4 / 3; }
}

/* ==========================================================================
   Stage 5 — About: Our Mission, Our Team, Our Impact
   ========================================================================== */
/* ---------- Our Mission ---------- */
.mission-main__grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 80px; align-items: center; }
.mission-main__text h2 { margin-bottom: 22px; }
.mission-main__text p:not(.lead):not(.eyebrow) { color: var(--mut); }
.mission-main__media { margin-top: 0; margin-left: 0; }
.mission-main__media img { width: 100%; aspect-ratio: 4 / 5; }
.beliefs__list {
  list-style: none; margin: 44px 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0;
  border-top: 3px solid var(--ink);
}
.belief { position: relative; padding: 30px 28px 34px; border-right: 1px solid var(--line); background: transparent; transition: background .4s var(--ease); }
.belief:last-child { border-right: 0; }
.belief:hover { background: #fff; }
.belief::after { content: ""; position: absolute; left: 28px; bottom: 0; width: 0; height: 3px; background: var(--ac2); transition: width .5s var(--ease); }
.belief:hover::after { width: calc(100% - 56px); }
.belief__num { display: block; font: 700 40px/1 var(--hf); color: var(--ac2); font-variant-numeric: lining-nums; }
.belief h3 { margin: 18px 0 10px; font-size: 21px; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; color: var(--ac); }
.belief p { margin: 0; color: var(--mut); font-size: 16px; }
.mission-quote { position: relative; overflow: hidden; display: grid; align-items: end; min-height: clamp(360px, 46vw, 600px); color: #fff; }
.mission-quote__img { position: absolute; inset: 0; width: 100%; height: 100%; }
.mission-quote::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(20, 35, 59, 0) 20%, rgba(20, 35, 59, .82) 100%); }
.mission-quote .wrap { position: relative; z-index: 2; width: 100%; padding-bottom: 64px; }
.mission-quote__text { margin: 0; max-width: 760px; padding-left: 26px; border-left: 4px solid var(--ac2); }
.mission-quote__text p { margin: 0; font: 600 clamp(28px, 3.6vw, 46px)/1.2 var(--hf); letter-spacing: .05em; text-transform: uppercase; }
.vision { padding: calc(var(--sec-pad) + 24px) 0; }
.vision__inner { max-width: 880px; text-align: center; }
.vision h2 { margin: 12px 0 28px; font-size: clamp(26px, 2.8vw, 38px); font-weight: 600; text-transform: uppercase; letter-spacing: .07em; }
.vision__statement { margin: 0 auto; max-width: 760px; font: 500 clamp(24px, 2.6vw, 34px)/1.45 var(--hf); color: var(--ink); }
.vision__tagline { margin: 36px 0 0; font: 700 13px/1.4 var(--bf); letter-spacing: .28em; text-transform: uppercase; color: var(--ac2-text); }
.vision__tagline::before, .vision__tagline::after { content: ""; display: inline-block; width: 40px; height: 1px; margin: 0 14px; vertical-align: middle; background: var(--ac2); }

@media (max-width: 1100px) {
  .mission-main__grid { gap: 48px; }
  .beliefs__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .belief:nth-child(2) { border-right: 0; }
  .belief:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
}
@media (max-width: 900px) {
  .mission-main__grid { grid-template-columns: 1fr; gap: 36px; }
  .mission-main__media { max-width: 520px; margin-inline: auto; }
  .mission-main__media img { aspect-ratio: 4 / 5; }
}
@media (max-width: 640px) {
  .beliefs__list { grid-template-columns: 1fr; margin-top: 28px; }
  .belief { padding: 24px 4px 26px; border-right: 0; border-bottom: 1px solid var(--line); }
  .belief::after { left: 4px; }
  .belief:hover::after { width: calc(100% - 8px); }
  .belief__num { font-size: 32px; }
  .belief h3 { margin-top: 12px; font-size: 19px; }
  .mission-main__media { max-width: none; margin-right: 8px; }
  .mission-main__media img { aspect-ratio: 4 / 5; }
  .mission-quote { min-height: 380px; }
  .mission-quote .wrap { padding-bottom: 40px; }
  .mission-quote__text { padding-left: 16px; }
  .mission-quote__text p { font-size: clamp(22px, 7vw, 28px); letter-spacing: .03em; }
  .vision__tagline::before, .vision__tagline::after { width: 20px; margin: 0 8px; }
  .vision__tagline { letter-spacing: .18em; }
}

/* ---------- Our Team: one card per person, with small differences ---------- */
.team-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 40px; }
.member__card {
  position: relative; display: grid; grid-template-columns: minmax(0, 1fr);
  background: #fff; border: 1px solid var(--line);
  transition: box-shadow .5s var(--ease), border-color .5s;
}
.member.has-photo .member__card { grid-template-columns: minmax(0, .86fr) minmax(0, 1fr); align-items: stretch; }
.member--flip.has-photo .member__card { grid-template-columns: minmax(0, 1fr) minmax(0, .86fr); }
.member--flip .member__photo { order: 2; }
.member__card:hover { box-shadow: 0 34px 70px -48px rgba(0, 0, 0, .55); border-color: rgba(166, 124, 46, .4); }
.member__photo { position: relative; margin: 26px; min-height: 380px; }
.member__photo img { position: absolute; inset: 0; }
.member__body { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding: 44px 48px; min-width: 0; }
.member.has-photo .member__body { padding-left: 22px; }
.member--flip.has-photo .member__body { padding-left: 48px; padding-right: 22px; }
.member__name {
  position: relative; padding-bottom: 14px;
  font: 600 clamp(28px, 3vw, 40px)/1.12 var(--hf); letter-spacing: .06em; text-transform: uppercase; color: var(--ac);
}
.member__name::after { content: ""; position: absolute; left: 0; bottom: 0; width: 48px; height: 3px; background: var(--ac2); transition: width .6s var(--ease); }
.member__card:hover .member__name::after { width: 96px; }
.member__position { margin: 16px 0 0; font: 700 12.5px/1.5 var(--bf); letter-spacing: .16em; text-transform: uppercase; color: var(--ac2-text); transition: letter-spacing .6s var(--ease); }
.member__card:hover .member__position { letter-spacing: .2em; }
.member__desc { margin-top: 18px; color: var(--mut); font-size: 16.5px; max-width: 60ch; }
/* variant a — fine inner frame, slow zoom */
.member--a .member__photo::after { content: ""; position: absolute; inset: 12px; z-index: 1; border: 1px solid rgba(255, 255, 255, .6); pointer-events: none; }
.member--a .member__card:hover .member__photo.ph--cover img { transform: scale(calc(var(--z, 1) * 1.06)); }
/* variant b — bronze block behind the photo, photo lifts a little */
/* b: a bronze block behind the photo — drawn as a shadow, so the photo itself always stays inside its frame */
.member--b .member__photo { box-shadow: -12px 12px 0 var(--ac2-light); transition: transform .8s var(--ease), box-shadow .6s var(--ease); }
.member--b.member--flip .member__photo { box-shadow: 12px 12px 0 var(--ac2-light); }
.member--b .member__card:hover .member__photo { transform: translate(4px, -4px); box-shadow: -16px 16px 0 var(--ac2-light); }
.member--b.member--flip .member__card:hover .member__photo { transform: translate(-4px, -4px); box-shadow: 16px 16px 0 var(--ac2-light); }
/* variant c — cut corner, gentle colour warm-up */
.member--c .member__photo { clip-path: polygon(0 0, 100% 0, 100% calc(100% - 44px), calc(100% - 44px) 100%, 0 100%); }
.member--c.member--flip .member__photo { clip-path: polygon(0 0, 100% 0, 100% 100%, 44px 100%, 0 calc(100% - 44px)); }
.member--c .member__photo img { filter: saturate(.85); transition: transform 1s var(--ease), filter .8s; }
.member--c .member__card:hover .member__photo img { filter: saturate(1.05); }
.member--c .member__card:hover .member__photo.ph--cover img { transform: scale(calc(var(--z, 1) * 1.04)); }
.member--c .member__name { padding-left: 0; }

/* contacts: a "Contacts" button that reveals the links */
.member__contacts { margin-top: 24px; width: 100%; max-width: 440px; }
.member__contacts summary {
  display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 16px;
  border: 1.5px solid var(--ac); color: var(--ac); cursor: pointer; list-style: none;
  font: 700 13px/1 var(--bf); letter-spacing: .1em; text-transform: uppercase;
  transition: background .3s, color .3s;
}
.member__contacts summary::-webkit-details-marker { display: none; }
.member__contacts summary:hover, .member__contacts[open] summary { background: var(--ac); color: #fff; }
.member__contacts summary .ico { width: 18px; height: 18px; transition: transform .3s var(--ease); }
.member__contacts[open] summary .ico { transform: rotate(180deg); }
.member__contacts ul { list-style: none; margin: 12px 0 0; padding: 0; border-top: 1px solid var(--line); animation: bb-reveal .35s var(--ease); }
.member__contacts li { border-bottom: 1px solid var(--line); }
.member__contacts a { display: flex; align-items: center; gap: 14px; min-height: 52px; padding: 8px 4px; color: var(--ink); transition: background .25s, padding .25s; }
.member__contacts a:hover { background: var(--bg2); padding-left: 10px; }
.member__contact-icon { width: 36px; height: 36px; flex: none; display: grid; place-items: center; background: var(--ac); color: #fff; }
.member__contact-icon .ico { width: 18px; height: 18px; }
.member__contact-text { display: flex; flex-direction: column; min-width: 0; }
.member__contact-name { font: 700 11px/1.4 var(--bf); letter-spacing: .14em; text-transform: uppercase; color: var(--ac2-text); }
.member__contact-value { font-size: 15.5px; overflow-wrap: anywhere; }
@keyframes bb-reveal { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }

@media (max-width: 1100px) {
  .member__photo { margin: 20px; min-height: 340px; }
  .member__body { padding: 36px 36px; }
  .member.has-photo .member__body { padding-left: 16px; }
  .member--flip.has-photo .member__body { padding-left: 36px; padding-right: 16px; }
}
@media (max-width: 900px) {
  .team-list { gap: 28px; }
  .member.has-photo .member__card, .member--flip.has-photo .member__card { grid-template-columns: minmax(0, 1fr); }
  .member--flip .member__photo { order: 0; }
  /* the frame gets its height from padding, not from "aspect-ratio": Safari on iPhone
     stretched an aspect-ratio frame to the height of its (empty) content — no photo at all */
  .member__photo { margin: 20px 20px 0; min-height: 0; height: 0; padding-bottom: 72%; align-self: start; }
  .member.has-photo .member__body, .member--flip.has-photo .member__body { padding: 28px 28px 32px; }
}
@media (max-width: 640px) {
  .member__photo { margin: 14px 14px 0; padding-bottom: 94%; }
  .member--b .member__photo { margin: 14px 26px 0 26px; }
  .member--b .member__photo, .member--b.member--flip .member__photo { box-shadow: -10px 10px 0 var(--ac2-light); }
  .member__body, .member.has-photo .member__body, .member--flip.has-photo .member__body { padding: 22px 20px 26px; }
  .member__name { font-size: clamp(24px, 7.4vw, 30px); letter-spacing: .04em; }
  .member__position { font-size: 12px; letter-spacing: .12em; }
  .member__desc { font-size: 16px; }
  .member__contacts { max-width: none; }
  .member__contacts summary { width: 100%; justify-content: space-between; }
}
@media (prefers-reduced-motion: reduce) {
  .member__card *, .member__card *::before, .member__card *::after { transition: none !important; animation: none !important; }
}

/* ---------- Our Impact ---------- */
.impact-hero__photo { aspect-ratio: 4 / 5; }
/* Impact at a glance: an editorial composition, the first number largest */
.glance__grid { margin: 44px 0 0; display: grid; grid-template-columns: minmax(0, 1fr); border-top: 3px solid var(--ink); }
.glance__item {
  display: flex; flex-direction: column-reverse; justify-content: flex-end; gap: 12px;
  padding: 30px 34px 34px; border-bottom: 1px solid var(--line); min-width: 0;
}
.glance__num { margin: 0; font: 600 64px/.95 var(--hf); color: var(--ac); letter-spacing: .01em; font-variant-numeric: lining-nums; overflow-wrap: anywhere; }
.glance__label { font: 700 12.5px/1.4 var(--bf); letter-spacing: .16em; text-transform: uppercase; color: var(--ac2-text); }
.glance__item--1 { justify-content: center; background: var(--ac); border-bottom-color: var(--ac); }
.glance__item--1 .glance__num { font-size: clamp(96px, 11vw, 172px); color: #fff; }
.glance__item--1 .glance__label { color: var(--ac2-light); font-size: 14px; }
.glance__item--2 .glance__num { font-size: clamp(64px, 6.4vw, 96px); }
.glance--n2, .glance--n3, .glance--n4 { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1fr); }
.glance--n2 { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); }
.glance--n3 .glance__item--1, .glance--n4 .glance__item--1 { grid-row: span 2; }
.glance--n3 .glance__item--2, .glance--n3 .glance__item--3, .glance--n4 .glance__item--2 { grid-column: span 2; }
.glance__item + .glance__item { border-left: 1px solid var(--line); }
.glance__item--1 + .glance__item { border-left: 0; }

/* Where the impact happens: a path with four stops */
.areas__path {
  position: relative; list-style: none; margin: 56px 0 0; padding: 0;
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 0 36px;
}
.areas__path::before {
  /* from the centre of the first stop to the centre of the last one */
  content: ""; position: absolute; top: 50%; height: 2px; margin-top: -1px;
  left: calc((100% - (var(--n, 4) - 1) * 36px) / (2 * var(--n, 4)));
  right: calc((100% - (var(--n, 4) - 1) * 36px) / (2 * var(--n, 4)));
  background: linear-gradient(90deg, var(--ac2), var(--ac) 70%, var(--ac2)); opacity: .55;
}
.area { display: grid; grid-template-rows: 1fr auto 1fr; justify-items: center; text-align: center; min-width: 0; }
.area__node { grid-row: 2; position: relative; z-index: 1; display: grid; place-items: center; width: 84px; height: 84px; border-radius: 50%; background: var(--bg); border: 2px solid var(--ac2); color: var(--ac2); transition: transform .5s var(--ease); }
.sec--alt .area__node { background: var(--bg2); }
.area:nth-child(odd) .area__node { background: var(--ac); border-color: var(--ac); color: #fff; }
.area__node::after { content: ""; position: absolute; inset: -9px; border-radius: 50%; border: 1px dashed rgba(166, 124, 46, .45); transition: transform 1.2s var(--ease); }
.area:hover .area__node { transform: scale(1.06); }
.area:hover .area__node::after { transform: rotate(90deg); }
.area__icon .ico { width: 32px; height: 32px; }
.area__body { grid-row: 3; padding-top: 28px; min-width: 0; }
.area:nth-child(even) .area__body { grid-row: 1; align-self: end; padding: 0 0 28px; }
.area__num { display: block; font: 700 13px/1 var(--bf); letter-spacing: .2em; color: var(--ac2-text); }
.area__title { margin: 10px 0 8px; font-size: 26px; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; color: var(--ac); }
.area__text { color: var(--mut); font-size: 16.5px; }

/* Real stories: large alternating blocks */
.stories__list { display: grid; gap: 88px; margin-top: 52px; }
.story { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 72px; align-items: center; }
.story--flip .story__photo { order: 2; }
.story__photo { aspect-ratio: 4 / 5; max-height: 680px; box-shadow: 0 40px 70px -46px rgba(0, 0, 0, .6); }
.story__photo img { position: absolute; inset: 0; }
.story:hover .story__photo.ph--cover img { transform: scale(calc(var(--z, 1) * 1.03)); }
.story__quote { display: block; color: var(--ac2-light); }
.story__quote .ico { width: 58px; height: 58px; }
.story__kind { margin: 14px 0 0; font: 700 12px/1.4 var(--bf); letter-spacing: .2em; text-transform: uppercase; color: var(--ac2-text); }
.story__name { margin: 6px 0 0; font: 700 15.5px/1.4 var(--bf); color: var(--mut); }
.story__title { margin: 14px 0 20px; font: 600 clamp(28px, 3.2vw, 42px)/1.15 var(--hf); letter-spacing: .05em; text-transform: uppercase; color: var(--ac); }
.story__text { font-size: 18px; line-height: 1.75; color: var(--ink); }

/* Impact across seasons: a season line + the numbers of the chosen season */
.season-tabs {
  display: grid; grid-template-columns: repeat(var(--count, 4), minmax(116px, 1fr));
  margin: 40px 0 0; padding: 0 0 8px; overflow-x: auto; overscroll-behavior-x: contain;
  scrollbar-width: thin; scrollbar-color: var(--ac2) transparent;
}
html:not(.js) .season-tabs { display: none; }
.season-tab {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 12px;
  min-height: 72px; padding: 12px 8px 10px; border: 0; background: none; cursor: pointer;
  color: var(--mut); font: 600 17px/1.2 var(--hf); letter-spacing: .06em; text-transform: uppercase; font-variant-numeric: lining-nums;
}
.season-tab::before, .season-tab::after { content: ""; position: absolute; top: 21px; left: 0; right: 0; height: 2px; background: rgba(27, 36, 48, .14); }
.season-tab::after { right: 100%; background: var(--ac2); transition: right .5s var(--ease); }
.season-tab:first-child::before, .season-tab:first-child::after { left: 50%; }
.season-tab:last-child::before { right: 50%; }
.season-tab.is-past::after { right: 0; }
.season-tab[aria-selected="true"]:not(:first-child)::after { right: 50%; }
.season-tab__dot { position: relative; z-index: 1; width: 20px; height: 20px; border-radius: 50%; border: 2px solid var(--ac2); background: var(--bg); transition: background .3s, box-shadow .3s; }
.sec--alt .season-tab__dot { background: var(--bg2); }
.season-tab.is-past .season-tab__dot { background: var(--ac2-light); }
.season-tab[aria-selected="true"] .season-tab__dot { background: var(--ac2); box-shadow: 0 0 0 6px rgba(166, 124, 46, .2); }
.season-tab[aria-selected="true"] { color: var(--ac); font-weight: 700; }
.season-tab:hover .season-tab__name { color: var(--ac); }
.season-tab:focus-visible { outline: 2px solid var(--ac2); outline-offset: -2px; }
@media (forced-colors: active) {
  .season-tab[aria-selected="true"] { outline: 3px solid Highlight; outline-offset: -3px; }
  .season-tab[aria-selected="true"] .season-tab__dot { background: Highlight; forced-color-adjust: none; }
}
.season-panel { margin-top: 32px; }
.season-panel + .season-panel { margin-top: 40px; }
.js [data-season-tabs] .season-panel:not(.is-active) { display: none; }
.js [data-season-tabs] .season-panel__title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
.season-panel__title { margin-bottom: 16px; font-size: 24px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--ac); }
.season-panel:focus-visible { outline: 2px solid var(--ac2); outline-offset: 6px; }
.season-stats { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); gap: 20px; }
.season-stat { display: flex; flex-direction: column; gap: 8px; padding: 26px 24px 24px; background: #fff; border: 1px solid var(--line); min-width: 0; }
.season-stat__num { font: 600 54px/1 var(--hf); color: var(--ac); font-variant-numeric: lining-nums; }
.season-stat__label { font: 700 12px/1.4 var(--bf); letter-spacing: .16em; text-transform: uppercase; color: var(--ac2-text); }
.season-stat__bar { display: block; height: 6px; margin-top: 8px; background: rgba(27, 36, 48, .08); }
.season-stat__bar span { display: block; height: 100%; background: linear-gradient(90deg, var(--ac2), var(--ac)); }
.season-panel.is-active .season-stat__bar span { animation: bb-grow 1s var(--ease) both; }
@keyframes bb-grow { from { width: 0; } }
.season-stat__change { font-size: 14px; color: var(--mut); }
.season-stat__change b { color: var(--ink); }
.season-stat__change.is-up b { color: #2f7a4e; }
.season-stat__change.is-down b { color: #a33a2c; }

/* Final call to action: contrasting navy band */
.impact-cta { position: relative; overflow: hidden; padding: calc(var(--sec-pad) + 10px) 0; background: var(--ac); color: #fff; text-align: center; border-top: 4px solid var(--ac2); }
.impact-cta::before { content: ""; position: absolute; left: 50%; bottom: -380px; width: 760px; height: 760px; margin-left: -380px; border-radius: 50%; background: radial-gradient(circle, rgba(232, 201, 143, .22), rgba(232, 201, 143, 0) 62%); pointer-events: none; }
.impact-cta__inner { position: relative; max-width: 860px; }
.impact-cta h2 { font-size: clamp(20px, 6.2vw, 54px); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #fff; }
@media (min-width: 641px) { .impact-cta h2 { font-size: clamp(30px, 4.2vw, 54px); } }
.impact-cta .lead { margin: 18px auto 0; color: rgba(255, 255, 255, .84); }
.impact-cta .btns { justify-content: center; margin-top: 34px; }
.btn--gold { background: var(--ac2-light); border-color: var(--ac2-light); color: var(--ac); }
.btn--gold .btn__icon { background: rgba(29, 53, 87, .12); }
.btn--gold:hover { background: #f1dbb0; border-color: #f1dbb0; }
.btn--ghost { border-color: rgba(255, 255, 255, .72); color: #fff; }
.btn--ghost .btn__icon { background: rgba(255, 255, 255, .14); }
.btn--ghost:hover { background: rgba(255, 255, 255, .1); }

@media (max-width: 1100px) {
  .story { gap: 48px; }
  .areas__path { gap: 0 20px; }
  .areas__path::before {
    left: calc((100% - (var(--n, 4) - 1) * 20px) / (2 * var(--n, 4)));
    right: calc((100% - (var(--n, 4) - 1) * 20px) / (2 * var(--n, 4)));
  }
  .area__title { font-size: 22px; }
}
@media (max-width: 900px) {
  .impact-hero__photo { aspect-ratio: 16 / 9; }
  .glance--n3, .glance--n4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .glance--n3 .glance__item--1, .glance--n4 .glance__item--1 { grid-row: auto; grid-column: 1 / -1; }
  .glance--n3 .glance__item--2, .glance--n3 .glance__item--3, .glance--n4 .glance__item--2 { grid-column: auto; }
  .glance--n3 .glance__item--3 { border-left: 1px solid var(--line); }
  .glance--n4 .glance__item--2 { grid-column: 1 / -1; }
  .glance--n4 .glance__item--3 { border-left: 0; }
  .glance__item--2 + .glance__item { border-left: 0; }
  .glance--n3 .glance__item--2 + .glance__item { border-left: 1px solid var(--line); }
  .areas__path { grid-auto-flow: row; grid-auto-columns: auto; gap: 30px; margin-top: 40px; }
  .areas__path::before { display: none; }
  .area, .area:nth-child(even) { position: relative; grid-template-rows: auto; grid-template-columns: 84px minmax(0, 1fr); gap: 24px; align-items: start; justify-items: start; text-align: left; }
  /* a line from each stop down to the next one */
  .area:not(:last-child)::before { content: ""; position: absolute; left: 41px; top: 42px; width: 2px; height: calc(100% + 30px); background: linear-gradient(180deg, var(--ac2), var(--ac)); opacity: .55; }
  .area__node { grid-row: 1; grid-column: 1; }
  .area__body, .area:nth-child(even) .area__body { grid-row: 1; grid-column: 2; padding: 14px 0 0; align-self: start; }
  .stories__list { gap: 56px; }
  .story, .story--flip { grid-template-columns: minmax(0, 1fr); gap: 28px; }
  .story--flip .story__photo { order: 0; }
  .story__photo { aspect-ratio: 4 / 3; max-height: none; }
}
@media (max-width: 640px) {
  .impact-hero__photo { aspect-ratio: 3 / 2; }
  .glance__grid { margin-top: 28px; }
  .glance__item { padding: 22px 18px 24px; }
  .glance__num { font-size: 44px; }
  .glance__item--1 .glance__num { font-size: clamp(72px, 24vw, 104px); }
  .glance__item--2 .glance__num { font-size: clamp(52px, 15vw, 68px); }
  .glance__label { font-size: 11.5px; letter-spacing: .12em; }
  .glance--n2 { grid-template-columns: minmax(0, 1fr); }
  .glance--n2 .glance__item + .glance__item { border-left: 0; }
  .area:not(:last-child)::before { left: 31px; top: 32px; }
  .area__body, .area:nth-child(even) .area__body { padding-top: 6px; }
  .area, .area:nth-child(even) { grid-template-columns: 64px minmax(0, 1fr); gap: 18px; align-items: start; }
  .area__node { width: 64px; height: 64px; }
  .area__node::after { inset: -7px; }
  .area__icon .ico { width: 26px; height: 26px; }
  .area__title { font-size: 21px; margin-top: 8px; }
  .area__text { font-size: 16px; }
  .story__quote .ico { width: 44px; height: 44px; }
  .story__title { font-size: clamp(24px, 7.2vw, 30px); letter-spacing: .03em; }
  .story__text { font-size: 16.5px; }
  .season-tabs { margin: 28px calc(var(--gutter) * -1) 0; padding: 0 var(--gutter) 8px; grid-template-columns: repeat(var(--count, 4), minmax(104px, 1fr)); }
  .season-tab { font-size: 15.5px; }
  .season-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .season-stat { padding: 18px 14px; }
  .season-stat__num { font-size: 38px; }
  .season-stat__label { font-size: 11px; letter-spacing: .1em; }
  .season-stat__change { font-size: 13px; }
  .impact-cta .btns .btn { width: 100%; }
}

/* ==========================================================================
   Printing: show every section (the reveal-on-scroll effect is for screens)
   ========================================================================== */
/* ---- Email choices (computer only, see site.js) ---- */
.mail-menu {
  position: absolute; z-index: 300; min-width: 260px; max-width: calc(100vw - 16px);
  padding: 8px; background: #fff; color: var(--ink); font-family: var(--bf);
  border: 1px solid var(--line); border-top: 3px solid var(--ac2);
  box-shadow: 0 18px 40px rgba(20, 35, 59, .22);
  animation: mail-in .16s var(--ease);
}
.mail-menu__addr { margin: 4px 10px 8px; font-size: 14px; color: var(--mut); overflow-wrap: anywhere; }
.mail-menu__item {
  display: block; width: 100%; padding: 10px 12px; text-align: left;
  font: inherit; font-size: 16px; line-height: 1.3; color: var(--ac);
  background: none; border: 0; cursor: pointer; text-decoration: none;
}
.mail-menu__item:hover, .mail-menu__item:focus-visible { background: var(--bg2); }
.mail-menu__item:focus-visible { outline-offset: -2px; }
@keyframes mail-in { from { opacity: 0; transform: translateY(-4px); } }
@media (prefers-reduced-motion: reduce) { .mail-menu { animation: none; } }

@media print {
  .mail-menu { display: none !important; }
  .js .rv { opacity: 1 !important; transform: none !important; transition: none !important; }
  .nav { position: static !important; box-shadow: none !important; }
  .menu, .news, .skip-link, .burger, .lang, .video, .gallery__nav, .gallery__btn, .lb { display: none !important; }
  /* the scrolling gallery: every photo on paper, in rows */
  .gallery--carousel .gallery__track { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; overflow: visible; }
  .gallery--carousel .gallery__item { flex: none; }
  .gallery__item { break-inside: avoid; }
  .footer { background: none !important; color: #000 !important; border-top: 1px solid #000; }
  .footer * { color: #000 !important; }
  .footer__bg, .footer img { display: none !important; }
}

/* Full-height digits in headings and names that use the "font" shorthand above
   (the shorthand resets the setting, so it is repeated at the very end). */
.news-item__title, .course__name, .tagline, .logo__name, .story__title, .member__name,
.season-card__title { font-variant-numeric: lining-nums; }
/* "2-noyabr", "4-mavsum": a number and its word are never split over two lines */
.nb { white-space: nowrap; }
