/* ==========================================================
   السكلر البحرينية · Bahrain Sickle Cell — theme styles
   Brand guidelines v1.0 win on any conflict. Colours are always flat:
   no gradients anywhere in this file.
   ========================================================== */

/* Fonts: Bahrain SC Serif v2.22 (brand kit) ------------------------- */
@font-face { font-family: "Bahrain SC Serif"; src: url("../fonts/BahrainSCSerif-ExtraLight.woff2") format("woff2"); font-weight: 200; font-display: swap; }
@font-face { font-family: "Bahrain SC Serif"; src: url("../fonts/BahrainSCSerif-Light.woff2") format("woff2"); font-weight: 300; font-display: swap; }
@font-face { font-family: "Bahrain SC Serif"; src: url("../fonts/BahrainSCSerif-SemiLight.woff2") format("woff2"); font-weight: 350; font-display: swap; }
@font-face { font-family: "Bahrain SC Serif"; src: url("../fonts/BahrainSCSerif-Plain.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Bahrain SC Serif"; src: url("../fonts/BahrainSCSerif-SemiBold.woff2") format("woff2"); font-weight: 600; font-display: swap; }
@font-face { font-family: "Bahrain SC Serif"; src: url("../fonts/BahrainSCSerif-Bold.woff2") format("woff2"); font-weight: 700; font-display: swap; }
@font-face { font-family: "Bahrain SC Serif"; src: url("../fonts/BahrainSCSerif-ExtraBold.woff2") format("woff2"); font-weight: 800; font-display: swap; }
@font-face { font-family: "Bahrain SC Serif"; src: url("../fonts/BahrainSCSerif-Black.woff2") format("woff2"); font-weight: 900; font-display: swap; }

/* Tokens (kit/css/tokens.css, verbatim values) ---------------------- */
:root {
  --c-red: #EC1D24; --c-white: #FFFFFF; --c-pearl: #F2EDE6; --c-garnet: #5E0B15;
  --c-saffron: #F4B33C; --c-mint: #A9DFC6; --c-palm: #0F5145; --c-ink: #1C1416;
  --c-red-tone: #D8161E; --c-garnet-tone: #6E0F1B; --c-pearl-tone: #E9E1D6; --c-tint: #FDE8E9;
  --c-text: var(--c-ink); --c-text-soft: rgb(28 20 22 / 0.72); --c-line: var(--c-pearl-tone);

  --font: "Bahrain SC Serif", "Segoe UI", Tahoma, Arial, sans-serif;
  --fs-display: clamp(3.5rem, 2rem + 7vw, 10rem);
  --fs-h1: clamp(2.75rem, 1.6rem + 4.2vw, 5.5rem);
  --fs-h2: clamp(2rem, 1.3rem + 2.6vw, 3.5rem);
  --fs-h3: clamp(1.375rem, 1.1rem + 0.8vw, 1.75rem);
  --fs-lead: clamp(1.2rem, 1.05rem + 0.5vw, 1.5rem);
  --fs-body: 1.125rem; --fs-caption: 0.9375rem; --fs-label: 0.875rem;

  --container: 1320px;
  --gutter: clamp(16px, 2vw, 32px);
  --margin: clamp(20px, 5vw, 90px);
  --section-y: clamp(88px, 12vw, 180px);
  --header-h: 84px;

  --r-sm: 8px; --r: 16px; --r-lg: 28px; --r-pill: 999px;
  --ease-out: cubic-bezier(.2, .7, .2, 1);
  --ease-in-out: cubic-bezier(.65, 0, .35, 1);
  --ease-snap: cubic-bezier(.25, .9, .3, 1);
  --dur-fast: 200ms; --dur: 400ms; --dur-slow: 800ms;
  --focus: var(--c-garnet);
}
@media (prefers-reduced-motion: reduce) { :root { --dur-fast: 0ms; --dur: 0ms; --dur-slow: 0ms; } }

/* Base --------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { font-family: var(--font); font-variant-numeric: lining-nums; -webkit-text-size-adjust: 100%; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
body { margin: 0; background: var(--c-white); color: var(--c-text); font: 400 var(--fs-body)/1.8 var(--font); text-rendering: optimizeLegibility; }
img, svg, video { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
ul, ol { list-style: none; margin: 0; padding: 0; }
h1, h2, h3, h4 { margin: 0; font-weight: 700; line-height: 1.2; text-wrap: balance; }
p { margin: 0; }
b, strong { font-weight: 700; } /* not "bolder", which pulls in the 900 weight */
:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; border-radius: 6px; }
.hero, .site-footer, .site-header[data-theme="red"], .site-header[data-theme="garnet"] { --focus: var(--c-saffron); }
.wrap { width: 100%; max-width: calc(var(--container) + 2 * var(--margin)); margin-inline: auto; padding-inline: var(--margin); }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

.skip { position: fixed; top: 12px; right: 12px; z-index: 200; padding: 12px 20px; border-radius: 12px; background: var(--c-garnet); color: #fff; font-weight: 700; transform: translateY(-200%); }
.skip:focus { transform: none; }

@view-transition { navigation: auto; }

/* Line-reveal masks: room for Arabic dots and descenders so nothing is clipped while animating. */
.sl-mask { padding-block: .22em; margin-block: -.22em; }

/* Tags ---------------------------------------------------------------- */
.tag { display: inline-flex; align-items: center; gap: 8px; padding: 7px 16px; border-radius: var(--r-pill); background: var(--c-pearl); color: var(--c-garnet); font-size: var(--fs-label); font-weight: 600; line-height: 1.4; }
.tag--garnet { background: var(--c-garnet); color: #fff; }

/* Buttons: any button containing red is Bold 19px (brand rule) -------- */
.btn {
  --bg: var(--c-pearl); --fg: var(--c-ink); --fill: var(--c-garnet); --fill-fg: #fff;
  position: relative; isolation: isolate; overflow: hidden;
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 54px; padding: 0 28px; border-radius: 12px;
  background: var(--bg); color: var(--fg);
  font-size: 19px; font-weight: 700; line-height: 1.2; white-space: nowrap;
  transition: color 300ms var(--ease-out);
}
.btn::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--fill); transform: scaleX(0); transform-origin: right; transition: transform 300ms var(--ease-out); }
.btn:hover, .btn:focus-visible { color: var(--fill-fg); }
.btn:hover::before, .btn:focus-visible::before { transform: scaleX(1); }
.btn--white  { --bg: #fff; --fg: var(--c-red); --fill: var(--c-pearl); --fill-fg: var(--c-red); }
.btn--garnet { --bg: var(--c-garnet); --fg: #fff; --fill: var(--c-ink); }
.btn--red    { --bg: var(--c-red); --fg: #fff; --fill: var(--c-garnet); }
.btn--pearl  { --bg: var(--c-pearl); --fg: var(--c-ink); }
.btn--sm { min-height: 46px; padding: 0 20px; font-size: 15px; font-weight: 600; }
.btn--wide { width: 100%; }

/* =====================================================================
   Header
   ===================================================================== */
.site-header {
  --logo: var(--c-red); --pill-bg: #fff; --pill-line: var(--c-pearl-tone); --pill-fg: var(--c-ink); --pill-active: var(--c-pearl);
  position: fixed; inset: 0 0 auto; z-index: 60; height: var(--header-h);
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 16px;
  padding-inline: var(--margin);
  transition: transform 300ms var(--ease-out);
}
.site-header[data-theme="red"], .site-header[data-theme="garnet"] { --logo: #fff; --pill-bg: var(--c-garnet); --pill-line: var(--c-garnet); --pill-fg: #fff; --pill-active: var(--c-garnet-tone); }
.site-header.is-hidden { transform: translateY(-100%); }
html.menu-open .site-header { transform: none; }

.brand { justify-self: start; display: block; color: var(--logo); transition: color 300ms var(--ease-out); }
.logo { width: clamp(160px, 15vw, 214px); height: auto; fill: currentColor; overflow: visible; }
/* Logo hover: only the mark turns a quarter (it is rotationally symmetric, so it lands on the exact logo). */
.logo-mark { transform-box: view-box; transform-origin: 756.9px 83.42px; transition: transform 800ms cubic-bezier(.34, 1.45, .5, 1); } /* centre of the mark in logo units (measured) */
.brand:hover .logo-mark, .brand:focus-visible .logo-mark { transform: rotate(90deg); }

/* Capsule */
.nav-pill { position: relative; display: flex; align-items: center; gap: 2px; padding: 6px; border-radius: 12px; background: var(--pill-bg); border: 1px solid var(--pill-line); color: var(--pill-fg); transition: background-color 300ms, border-color 300ms, color 300ms; }
.nav-group { position: static; }
.nav-item { display: inline-flex; align-items: center; gap: 6px; height: 40px; padding: 0 14px; border-radius: 8px; font-size: 15px; font-weight: 600; line-height: 1; transition: background-color 120ms; }
.nav-item:hover, .nav-item[aria-expanded="true"], .nav-item[aria-current="page"] { background: var(--pill-active); }
.chev { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; transition: transform 160ms var(--ease-snap); }
.nav-item[aria-expanded="true"] .chev { transform: rotate(180deg); }
.nav-item--dots { width: 44px; justify-content: center; padding: 0; }

/* Four dots ⁘ (morph into ✕ when their button is expanded) */
.dots { position: relative; display: inline-block; width: 14px; height: 14px; flex: none; }
.dots i { position: absolute; top: 50%; left: 50%; width: 4px; height: 4px; margin: -2px; border-radius: 2px; background: currentColor; transition: transform 320ms var(--ease-out); }
.dots i:nth-child(1) { transform: translate(-4px, -4px); }
.dots i:nth-child(2) { transform: translate(4px, -4px); }
.dots i:nth-child(3) { transform: translate(-4px, 4px); }
.dots i:nth-child(4) { transform: translate(4px, 4px); }
[aria-expanded="true"] > .dots i:nth-child(1) { transform: translate(-2.6px, -2.6px) rotate(45deg) scale(2.3, .5); }
[aria-expanded="true"] > .dots i:nth-child(2) { transform: translate(2.6px, -2.6px) rotate(-45deg) scale(2.3, .5); }
[aria-expanded="true"] > .dots i:nth-child(3) { transform: translate(-2.6px, 2.6px) rotate(-45deg) scale(2.3, .5); }
[aria-expanded="true"] > .dots i:nth-child(4) { transform: translate(2.6px, 2.6px) rotate(45deg) scale(2.3, .5); }

/* Panels */
.panel {
  position: absolute; top: calc(100% + 14px); left: 50%; z-index: 2;
  width: max(100%, 340px); padding: 12px; border-radius: 12px; background: #fff; border: 1px solid var(--c-line); color: var(--c-ink);
  opacity: 0; visibility: hidden; transform: translate(-50%, -4px) scale(.985); transform-origin: top center;
  transition: opacity 140ms var(--ease-snap), transform 180ms var(--ease-snap), visibility 0s 140ms;
  will-change: opacity, transform;
}
.panel::before { content: ""; position: absolute; inset: -16px 0 auto; height: 16px; } /* hover bridge */
.panel--wide { width: 560px; }
.panel--wide .panel-list { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; }
.panel.is-open, html:not(.js) .nav-group:hover .panel, html:not(.js) .nav-group:focus-within .panel { opacity: 1; visibility: visible; transform: translate(-50%, 0) scale(1); transition-delay: 0s; }
.panel-list li { opacity: 0; transform: translateY(-3px); transition: opacity 150ms var(--ease-snap), transform 180ms var(--ease-snap); }
.panel.is-open .panel-list li, html:not(.js) .panel-list li { opacity: 1; transform: none; transition-delay: calc(var(--i, 0) * 18ms); }
/* Moving between open menus swaps panels instantly, like the reference. */
.panel.instant, .panel.instant .panel-list li { transition: none !important; }
.panel-link { display: flex; align-items: center; gap: 14px; padding: 8px; border-radius: 10px; transition: background-color var(--dur-fast); }
.panel-link:hover, .panel-link:focus-visible { background: var(--c-pearl); }
.panel-ico { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 10px; background: var(--c-pearl); color: var(--c-garnet); transition: background-color var(--dur-fast), color var(--dur-fast); }
.panel-ico .icon { width: 22px; height: 22px; }
.panel-link:hover .panel-ico, .panel-link:focus-visible .panel-ico { background: var(--c-red); color: #fff; }
.panel-link:hover { background: transparent; }
.panel-txt { display: grid; gap: 2px; line-height: 1.35; }
.panel-txt b { font-size: 15px; font-weight: 600; }
.panel-txt small { font-size: 13px; color: var(--c-text-soft); }
.is-urgent .panel-txt b::after { content: ""; display: inline-block; width: 8px; height: 8px; margin-inline-start: 8px; border-radius: 50%; background: var(--c-saffron); vertical-align: middle; }
.panel-cta { display: flex; align-items: center; justify-content: space-between; margin-top: 10px; min-height: 54px; padding: 0 20px; border-radius: 10px; background: var(--c-red); color: #fff; font-size: 19px; font-weight: 700; transition: background-color var(--dur-fast); }
.panel-cta:hover, .panel-cta:focus-visible { background: var(--c-garnet); }
.panel-cta span { transition: transform var(--dur-fast) var(--ease-out); }
.panel-cta:hover span { transform: translateX(-4px); }
.panel-foot { display: flex; align-items: center; gap: 8px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--c-line); }
.soc { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 10px; background: var(--c-pearl); color: var(--c-garnet); }
.soc .icon { width: 20px; height: 20px; }
.soc:hover { background: var(--c-red); color: #fff; }
.sos { margin-inline-start: auto; font-size: 14px; font-weight: 600; color: var(--c-garnet); }
.sos b { font-weight: 800; font-variant-numeric: tabular-nums; }

/* Header actions */
.head-actions { justify-self: end; display: flex; align-items: center; gap: 8px; }
.btn--join { --bg: var(--c-pearl); --fg: var(--c-ink); }
.btn--donate { --bg: var(--c-red); --fg: #fff; --fill: var(--c-garnet); min-height: 46px; padding: 0 22px; }
[data-theme="red"] .btn--join, [data-theme="garnet"] .btn--join { --bg: #fff; }
[data-theme="red"] .btn--donate { --bg: #fff; --fg: var(--c-red); --fill: var(--c-pearl); --fill-fg: var(--c-red); }

/* Page blur behind open menus (as on the reference). backdrop-filter on one fixed layer
   is composited by the GPU; blurring <main> itself repainted the whole page every frame. */
.scrim { position: fixed; inset: 0; z-index: 40; background: rgb(28 20 22 / .2); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); opacity: 0; visibility: hidden; transition: opacity 160ms var(--ease-snap), visibility 0s 160ms; }
html.menu-open .scrim { opacity: 1; visibility: visible; transition-delay: 0s; }

/* Mobile toggle + floating card --------------------------------------- */
.menu-toggle { display: none; justify-self: end; align-items: center; gap: 10px; height: 46px; padding: 0 16px; border-radius: 12px; background: var(--pill-bg); border: 1px solid var(--pill-line); color: var(--pill-fg); font-size: 15px; font-weight: 600; }
.menu-toggle__close, .menu-toggle[aria-expanded="true"] .menu-toggle__open { display: none; }
.menu-toggle[aria-expanded="true"] .menu-toggle__close { display: inline; }

.mnav { position: fixed; z-index: 55; top: var(--header-h); inset-inline: 12px; max-height: calc(100svh - var(--header-h) - 12px); overflow-y: auto; overscroll-behavior: contain; padding: 20px; border-radius: 16px; background: #fff; color: var(--c-ink); opacity: 0; transform: translateY(-8px); transition: opacity 260ms var(--ease-out), transform 260ms var(--ease-out); }
.mnav.is-open { opacity: 1; transform: none; }
.mnav-list > li { border-bottom: 1px solid var(--c-line); opacity: 0; transform: translateY(18px); transition: opacity 320ms var(--ease-out), transform 320ms var(--ease-out); }
.mnav.is-open .mnav-list > li { opacity: 1; transform: none; transition-delay: calc(var(--i) * 40ms + 60ms); }
.mnav-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.mnav-link { display: block; padding: 12px 0; font-size: 28px; font-weight: 700; line-height: 1.3; }
.mnav-link--soft { font-size: 22px; font-weight: 600; }
.mnav-plus { position: relative; flex: none; width: 44px; height: 44px; border-radius: 10px; background: var(--c-pearl); color: var(--c-garnet); }
.mnav-plus i { position: absolute; top: 50%; left: 50%; width: 16px; height: 2px; margin: -1px 0 0 -8px; border-radius: 1px; background: currentColor; transition: transform 260ms var(--ease-out); }
.mnav-plus i:last-child { transform: rotate(90deg); }
.mnav-plus[aria-expanded="true"] i:last-child { transform: rotate(0deg); }
.mnav-sub { padding: 0 0 14px; }
.mnav-sub a { display: block; padding: 9px 0; font-size: 18px; font-weight: 600; color: var(--c-garnet); }
.mnav-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 20px; }
.mnav-actions .btn--wide { grid-column: 1 / -1; }
html.m-open { overflow: hidden; }

@media (max-width: 1023px) {
  .site-header { grid-template-columns: 1fr auto; }
  .nav, .head-actions { display: none; }
  .menu-toggle { display: inline-flex; }
  .logo { width: 160px; }
}
@media (min-width: 1024px) { .mnav { display: none !important; } }

/* =====================================================================
   Page transition: a red curtain slides in from the right, the mark turns a quarter, then it
   slides away on the next page (≈600ms in all). Only for internal links, only with JS.
   ===================================================================== */
.curtain { position: fixed; inset: 0; z-index: 150; display: grid; place-items: center; background: var(--c-red); transform: translateX(101%); pointer-events: none; }
.curtain-mark { width: 104px; height: auto; fill: #fff; transform: rotate(-90deg); }
html.curtain-go .curtain { transform: none; transition: transform 300ms var(--ease-in-out); pointer-events: auto; }
html.curtain-go .curtain-mark { transform: none; transition: transform 300ms var(--ease-in-out); }
html.curtain-in .curtain { transform: none; animation: curtain-failsafe 0s 2s forwards; } /* opens even if main.js never runs */
@keyframes curtain-failsafe { to { transform: translateX(-101%); visibility: hidden; } }
html.curtain-in .curtain-mark { transform: none; }
html.curtain-out .curtain { transform: translateX(-101%); transition: transform 300ms var(--ease-in-out); }
html.curtain-out .curtain-mark { transform: rotate(90deg); transition: transform 300ms var(--ease-in-out); }

/* =====================================================================
   Intro (first visit per session, < 1.2s): the mark builds cell by cell
   ===================================================================== */
.intro { display: none; }
html.sc-intro .intro { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; background: var(--c-red); animation: intro-out 420ms var(--ease-in-out) 780ms forwards; }
.intro-mark { width: 132px; height: auto; fill: #fff; animation: intro-grow 420ms var(--ease-in-out) 780ms forwards; }
.intro .cell { opacity: 0; transform-box: fill-box; transform-origin: center; animation: intro-cell 260ms var(--ease-out) forwards; }
.intro .cell-2 { animation-delay: 120ms; }
.intro .cell-3 { animation-delay: 240ms; }
.intro .cell-4 { animation-delay: 360ms; }
@keyframes intro-cell { from { opacity: 0; transform: scale(.82); } to { opacity: 1; transform: none; } }
@keyframes intro-grow { to { transform: scale(6) rotate(90deg); opacity: 0; } }
@keyframes intro-out { to { opacity: 0; visibility: hidden; } }

/* =====================================================================
   Hero — full-screen everyday scenes, message on the calm right side
   ===================================================================== */
.hero { position: relative; isolation: isolate; overflow: hidden; display: flex; align-items: center; min-height: 100svh; background: var(--c-red); color: #fff; }

.hero-scene { position: absolute; inset: 0; z-index: 1; will-change: transform; }
.scene { position: absolute; inset: 0; margin: 0; clip-path: circle(0% at var(--focal)); transition: clip-path 1.6s var(--ease-in-out); }
.scene.is-prev { z-index: 1; clip-path: circle(150% at var(--focal)); }
.scene.is-active { z-index: 2; clip-path: circle(150% at var(--focal)); }
.scene picture { display: contents; }
.scene img { width: 100%; height: 100%; object-fit: cover; object-position: var(--focal); transform-origin: var(--focal); transform: scale(1.08); }
.scene.is-active img { animation: breathe 9s linear forwards; }
.scene.is-prev img { transform: scale(1); }
@keyframes breathe { from { transform: scale(1.08); } to { transform: scale(1); } }

/* Flat ink tint for legibility (the brand allows no gradients or text shadows). */
.scene::after { content: ""; position: absolute; inset: 0; background: rgb(28 20 22 / var(--shade, .26)); pointer-events: none; }

.hero-body { position: relative; z-index: 3; width: min(38rem, 44vw); margin-inline-start: var(--margin); padding-block: calc(var(--header-h) + 48px) 120px; }
.hero-title { margin: 28px 0 22px; font-size: clamp(3.5rem, 1.5rem + 6vw, 8.5rem); font-weight: 800; line-height: 1.1; }
.hero-lead { max-width: 24em; text-wrap: balance; font-size: clamp(1.5rem, 1.25rem + .5vw, 1.875rem); line-height: 1.6; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 36px; }
.btn--light { --bg: #fff; --fg: var(--c-ink); --fill: var(--c-pearl); --fill-fg: var(--c-ink); }
.play { display: inline-flex; align-items: center; gap: 14px; margin-top: 28px; font-size: 19px; font-weight: 700; }
.play-sq { display: grid; place-items: center; width: 54px; height: 54px; border-radius: 12px; background: #fff; color: var(--c-red); transition: transform 300ms var(--ease-out); }
.play-sq .icon { width: 22px; height: 22px; fill: currentColor; }
.play:hover .play-sq { animation: heartbeat .833s ease-in-out infinite; }
@keyframes heartbeat { 0%, 100% { transform: scale(1); } 14% { transform: scale(1.03); } 28% { transform: scale(1); } 42% { transform: scale(1.03); } }

.scene-count { letter-spacing: .04em; }
.scene-ctrl { position: absolute; z-index: 3; bottom: 28px; left: var(--margin); display: flex; align-items: center; gap: 14px; padding-block: 6px; padding-inline: 6px 20px; min-height: 46px; border-radius: var(--r-pill); background: var(--c-garnet); color: #fff; font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; }
.scene-pause { position: relative; flex: none; width: 34px; height: 34px; display: block; border-radius: 50%; background: #fff; color: var(--c-garnet); }
.scene-pause i { position: absolute; top: 11px; width: 3px; height: 12px; border-radius: 1px; background: currentColor; }
.scene-pause i:first-child { right: 12.5px; }
.scene-pause i:last-child { left: 12.5px; }
.scene-pause[aria-pressed="true"] i:last-child { display: none; }
.scene-pause[aria-pressed="true"] i:first-child { right: 11px; width: 12px; clip-path: polygon(100% 0, 100% 100%, 0 50%); } /* ▶ pointing in reading direction */

/* Entrance: pure CSS so it starts on the first frame (no wait for JS or fonts — keeps LCP early).
   With the intro (first visit) everything waits for the curtain of red to lift (--hd). */
.hero { --hd: 0s; }
html.sc-intro .hero { --hd: .8s; }
html.js .hero-scene { animation: scene-in 1.4s var(--ease-in-out) calc(var(--hd) + .1s) both; }
@keyframes scene-in { from { clip-path: circle(16% at 30% 50%); } to { clip-path: circle(150% at 30% 50%); } }
html.js .hero [data-lines], html.js .hero [data-fade] { animation: hero-rise .8s var(--ease-out) both; }
html.js .hero [data-lines] { animation-duration: 1s; animation-delay: calc(var(--hd) + .2s); }
html.js .hero .tag { animation-delay: calc(var(--hd) + .1s); }
html.js .hero .hero-lead { animation-delay: calc(var(--hd) + .4s); }
html.js .hero .hero-actions { animation-delay: calc(var(--hd) + .5s); }
html.js .hero .play { animation-delay: calc(var(--hd) + .6s); }
html.js .hero .scene-ctrl { animation-delay: calc(var(--hd) + .7s); }
@keyframes hero-rise { from { opacity: .01; transform: translateY(28px); } to { opacity: 1; transform: none; } }
@keyframes failsafe { to { opacity: 1; } }

.video-modal { width: min(960px, calc(100vw - 32px)); padding: 0; border: 0; border-radius: var(--r); background: var(--c-red); color: #fff; }
.video-modal::backdrop { background: rgb(28 20 22 / .6); }
.video-modal video { width: 100%; aspect-ratio: 16 / 9; }
.video-close { position: absolute; top: 12px; left: 12px; z-index: 2; width: 44px; height: 44px; border-radius: 12px; background: #fff; color: var(--c-red); font-size: 20px; font-weight: 700; }
.video-soon { display: grid; place-items: center; gap: 24px; aspect-ratio: 16 / 9; }
.video-mark { width: 96px; fill: #fff; }
.video-soon p { font-size: 28px; font-weight: 700; }

@media (max-aspect-ratio: 4/5) { .scene.has-m img { object-position: 50% 30%; transform-origin: 50% 30%; } }
@media (max-width: 1023px) {
  .hero { flex-direction: column; justify-content: flex-end; align-items: stretch; padding-bottom: 28px; }
  .hero-actions { margin-top: 26px; }
  .hero-actions .btn { flex: 1 1 auto; padding: 0 16px; }
  .play { margin-top: 18px; }
  .scene::after { background: rgb(28 20 22 / calc(var(--shade, .26) + .12)); }
  .hero-body { width: auto; margin: 0; padding: 0 var(--margin); }
  .hero-title { margin: 18px 0 12px; }
  .scene-ctrl { top: calc(var(--header-h) + 4px); bottom: auto; }
}

/* Name transition strip ---------------------------------------------- */
.name-strip { background: var(--c-pearl); }
.name-strip__in { display: flex; align-items: center; gap: 14px; padding-block: 18px; }
.name-strip__mark { flex: none; width: 28px; height: 28px; fill: var(--c-red); }
.name-strip p { font-size: 17px; font-weight: 600; line-height: 1.5; }


/* =====================================================================
   Home sections
   ===================================================================== */
.sec { padding-block: var(--section-y); }
.sec-head { max-width: 46rem; margin-bottom: clamp(40px, 5vw, 72px); }
.sec-title { margin-top: 18px; font-size: var(--fs-h1); font-weight: 800; line-height: 1.15; color: var(--c-red); }
.sec-lead { margin-top: 18px; max-width: 36em; font-size: var(--fs-lead); line-height: 1.7; color: var(--c-text-soft); }
.sec-head-row { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; flex-wrap: wrap; margin-bottom: clamp(40px, 5vw, 72px); }
.sec-head-row .sec-head { margin-bottom: 0; }
.cell-svg { width: 100%; height: auto; }

/* Shared motion: fade-up and line reveal (states only once JS is known to run) */
html.js [data-reveal] { opacity: 0; transform: translateY(16px); transition: opacity .6s var(--ease-out), transform .6s var(--ease-out); transition-delay: calc(var(--d, 0) * 80ms); }
html.js [data-reveal].is-in { opacity: 1; transform: none; }
html.js main [data-lines]:not(.hero *), html.js .site-footer [data-lines] { opacity: 0; }
html.js [data-reveal], html.js main [data-lines], html.js .site-footer [data-lines] { animation: failsafe 0s 4s forwards; }
html.ready [data-reveal], html.ready main [data-lines], html.ready .site-footer [data-lines] { animation: none; }

/* 5.3 Where do you start? */
.start-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--gutter); }
.start-grid > li { display: flex; }
.start-card { --tone: var(--c-red); --tone-fg: #fff; display: flex; flex-direction: column; width: 100%; border-radius: var(--r-lg); overflow: hidden; background: var(--tone); color: var(--tone-fg); isolation: isolate; }
.start-card--garnet { --tone: var(--c-garnet); }
.start-card--mint { --tone: var(--c-mint); --tone-fg: var(--c-garnet); }
.start-card--palm { --tone: var(--c-palm); }
.start-media { display: block; aspect-ratio: 1 / .86; overflow: hidden; }
.start-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease-out); }
.start-card:hover .start-media img { transform: scale(1.05); }
.start-body { display: flex; flex-direction: column; gap: 10px; flex: 1; padding: 24px 24px 26px; }
.start-title { font-size: 26px; font-weight: 700; line-height: 1.3; }
.start-text { font-size: 16px; line-height: 1.6; }
.start-card--red .start-text { font-size: 19px; font-weight: 700; } /* white on red: large text only */
.start-verb { display: inline-flex; align-items: center; gap: 8px; margin-top: auto; padding-top: 14px; font-size: 19px; font-weight: 700; }
.start-verb i { font-style: normal; transition: transform 300ms var(--ease-out); }
.start-card:hover .start-verb i { transform: translateX(-4px); }

/* 5.4 Statement: words colour in as you scroll */
.statement { background: var(--c-pearl); }
.statement-text { max-width: 17em; font-size: clamp(2.25rem, 1rem + 4.2vw, 5.25rem); font-weight: 800; line-height: 1.3; color: var(--c-ink); }

/* 5.5 Values rail */
.rail-in { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(32px, 6vw, 120px); }
.rail-index { position: sticky; top: calc(var(--header-h) + 40px); align-self: start; }
.rail-list { margin-top: 24px; counter-reset: rail; }
.rail-list li { counter-increment: rail; display: flex; align-items: flex-start; gap: 14px; }
.rail-list li::before { content: "0" counter(rail); padding-top: 1.2em; font-size: 15px; font-weight: 600; color: rgb(28 20 22 / .72); font-variant-numeric: tabular-nums; }
.rail-list a { display: block; font-size: clamp(3rem, 1.4rem + 5vw, 7rem); font-weight: 800; line-height: 1.2; color: rgb(28 20 22 / .5); transition: color .45s var(--ease-out); }
.rail-list a.is-active, .rail-list a:hover { color: var(--c-red); }
.rail-cards { display: grid; gap: clamp(24px, 4vw, 48px); }
.value-card { position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-end; gap: 14px; min-height: 64vh; padding: clamp(28px, 3.4vw, 48px); border-radius: var(--r-lg); }
.value-card h3 { font-size: var(--fs-h2); font-weight: 800; }
.value-card p { font-size: var(--fs-lead); line-height: 1.7; }
.value-card--photo { justify-content: flex-start; padding: 0 0 clamp(28px, 3vw, 40px); background: var(--c-pearl); }
.value-card--photo h3 { color: var(--c-red); }
.value-card--photo h3, .value-card--photo p { padding-inline: clamp(28px, 3vw, 40px); }
.value-media { aspect-ratio: 16 / 10; overflow: hidden; margin-bottom: 14px; }
.value-media img { width: 100%; height: 100%; object-fit: cover; }
.value-card--red { background: var(--c-red); color: #fff; }
.value-card--red p { font-size: clamp(1.5rem, 1.3rem + .4vw, 1.75rem); }
.value-cell { position: absolute; z-index: -1; top: -30%; left: -30%; width: 110%; }
.value-cell .cell-svg, .join-cell .cell-svg, .countdown-cell .cell-svg { fill: var(--c-red-tone); }
.value-quote { margin-bottom: auto; font-size: var(--fs-h2) !important; font-weight: 800; line-height: 1.25 !important; }
.value-card--mint { background: var(--c-mint); color: var(--c-garnet); }
.value-kicker { margin-bottom: 4px; font-size: 19px !important; font-weight: 700; }
.value-fact { margin-bottom: auto; font-size: clamp(1.5rem, 1.2rem + .8vw, 2rem) !important; font-weight: 700; line-height: 1.5 !important; }

/* 5.6 Support starts with one call */
.support { background: var(--c-pearl); }
.steps { --p: 1; position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--gutter); }
html.js .steps { --p: 0; }
.steps-line { position: absolute; top: 25px; inset-inline: 0; height: 2px; background: var(--c-pearl-tone); }
.steps-line i { position: absolute; inset: 0; background: var(--c-red); transform: scaleX(var(--p)); transform-origin: right; }
.step { position: relative; }
.step-num { position: relative; z-index: 1; display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 2px var(--c-red); color: var(--c-red); font-size: 19px; font-weight: 800; font-variant-numeric: tabular-nums; }
.step h3 { margin: 22px 0 8px; font-size: var(--fs-h3); }
.step p { max-width: 22em; font-size: 17px; line-height: 1.7; color: var(--c-text-soft); }
.support-row { display: grid; grid-template-columns: 7fr 5fr; gap: var(--gutter); margin-top: clamp(56px, 6vw, 88px); }
.chat { min-height: 380px; padding: clamp(24px, 3vw, 36px); border-radius: var(--r-lg); background: #fff; }
.chat-tag { display: inline-flex; padding: 5px 14px; border-radius: var(--r-pill); background: var(--c-pearl); color: var(--c-garnet); font-size: 14px; font-weight: 600; }
.chat-list { display: flex; flex-direction: column; gap: 12px; margin-top: 22px; }
.bubble { max-width: 80%; padding: 12px 18px; border-radius: 18px; font-size: 17px; line-height: 1.65; transition: opacity .3s var(--ease-out), transform .3s var(--ease-out); }
.bubble--me { align-self: flex-start; border-end-start-radius: 6px; background: var(--c-garnet); color: #fff; }
.bubble--us { align-self: flex-end; border-end-end-radius: 6px; background: var(--c-pearl); color: var(--c-ink); }
html.js .chat:not(.is-done) .bubble:not(.is-shown) { opacity: 0; transform: translateY(8px); }
.support-call { display: flex; flex-direction: column; justify-content: center; gap: 16px; padding: clamp(28px, 3.4vw, 44px); border-radius: var(--r-lg); background: var(--c-garnet); color: #fff; }
.support-call__label { font-size: 17px; }
.support-phone { align-self: flex-start; font-size: clamp(2rem, 1.2rem + 2.4vw, 3.25rem); font-weight: 800; line-height: 1.2; font-variant-numeric: tabular-nums; }
.support-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; }

/* 5.7 Programs */
.prog-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: var(--gutter); }
.prog-grid > li { grid-column: span 2; display: flex; }
.prog-grid > li:nth-child(4), .prog-grid > li:nth-child(5) { grid-column: span 3; }
.prog-card { position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; gap: 14px; width: 100%; min-height: 320px; padding: clamp(26px, 2.6vw, 36px); border-radius: var(--r-lg); border: 1px solid transparent; background: var(--c-pearl); color: var(--c-ink); transition: transform .4s var(--ease-out), border-color .4s var(--ease-out); }
.prog-card--garnet { background: var(--c-garnet); color: #fff; }
.prog-card:hover { transform: translateY(-4px); border-color: var(--c-red); }
.prog-cell { position: absolute; z-index: -1; bottom: -45%; left: -28%; width: 78%; }
.prog-cell .cell-svg { fill: var(--c-pearl-tone); transition: transform 1.4s var(--ease-out); }
.prog-card--garnet .prog-cell .cell-svg { fill: var(--c-garnet-tone); }
.prog-card:hover .prog-cell .cell-svg { transform: rotate(90deg); }
.prog-ico { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 14px; background: #fff; color: var(--c-red); }
.prog-ico .icon { width: 26px; height: 26px; }
.prog-title { margin-top: 14px; font-size: 26px; font-weight: 700; line-height: 1.3; color: var(--c-red); }
.prog-card--garnet .prog-title { color: #fff; }
.prog-text { max-width: 30em; font-size: 17px; line-height: 1.7; }
.prog-more { margin-top: auto; font-size: 24px; font-weight: 700; transition: transform 300ms var(--ease-out); }
.prog-card:hover .prog-more { transform: translateX(-6px); }

/* 5.8 Inheritance calculator */
.calc { background: var(--c-pearl); scroll-margin-top: var(--header-h); }
.calc-in { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(32px, 5vw, 96px); align-items: start; }
.calc-in .sec-head { margin-bottom: 36px; }
.seg { margin: 0 0 22px; padding: 0; border: 0; }
.seg legend { margin-bottom: 10px; padding: 0; font-size: 15px; font-weight: 600; color: var(--c-garnet); }
.seg-row { display: flex; gap: 4px; padding: 6px; border-radius: 12px; background: #fff; border: 1px solid var(--c-line); }
.seg-opt { position: relative; flex: 1; }
.seg-opt input { position: absolute; inset: 0; z-index: 1; margin: 0; opacity: 0; cursor: pointer; }
.seg-opt span { display: block; padding: 12px 8px; border-radius: 8px; text-align: center; font-size: 16px; font-weight: 600; line-height: 1.3; transition: background-color .2s, color .2s; }
.seg-opt input:checked + span { background: var(--c-garnet); color: #fff; }
.seg-opt input:focus-visible + span { outline: 3px solid var(--c-garnet); outline-offset: 2px; }
.calc-result { padding: clamp(24px, 3.2vw, 48px); border-radius: var(--r-lg); background: #fff; }
.calc-caption { font-size: 15px; font-weight: 600; color: var(--c-text-soft); }
.calc-kids { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(10px, 2vw, 24px); margin: 18px 0 32px; }
.kid { display: grid; justify-items: center; gap: 10px; }
.kid svg { width: 100%; max-width: 120px; overflow: visible; }
.kid-shape { fill: var(--c-red); transition: d .7s var(--ease-in-out); }
.kid-label { font-size: 15px; font-weight: 600; text-align: center; }
.calc-bars { display: grid; gap: 14px; }
.calc-bars li { display: grid; grid-template-columns: 7.5rem 1fr 3.5rem; align-items: center; gap: 14px; }
.bar-name { font-size: 16px; font-weight: 600; }
.bar-track { height: 10px; border-radius: var(--r-pill); background: var(--c-pearl); overflow: hidden; }
.bar-track i { display: block; width: var(--w, 0%); height: 100%; border-radius: inherit; background: var(--c-red); transition: width .8s var(--ease-out); }
.bar-val { font-size: 19px; font-weight: 700; color: var(--c-red); font-variant-numeric: tabular-nums; text-align: end; }
.calc-cta { margin-top: 32px; font-size: 19px; font-weight: 700; color: var(--c-garnet); }
.calc-note, .calc-noscript { margin-top: 8px; font-size: 14px; color: var(--c-text-soft); }

/* 5.9 Stories */
.track { display: flex; gap: var(--gutter); overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scroll-padding-inline: var(--margin); padding: 4px var(--margin) 24px; scrollbar-width: none; cursor: grab; }
.track::-webkit-scrollbar { display: none; }
.track.is-dragging { cursor: grabbing; scroll-snap-type: none; }
.story { flex: 0 0 min(440px, 84vw); scroll-snap-align: start; display: flex; flex-direction: column; gap: 16px; min-height: 380px; padding: clamp(28px, 3vw, 40px); border-radius: var(--r-lg); background: var(--c-pearl); user-select: none; }
.story-photo img { width: 160px; height: 160px; border-radius: 50%; object-fit: cover; }
.story-tag { align-self: flex-start; padding: 5px 14px; border-radius: var(--r-pill); background: var(--c-garnet); color: #fff; font-size: 14px; font-weight: 600; }
.story-mark { font-size: 140px; font-weight: 800; line-height: .7; color: var(--c-red); }
.story-quote { font-size: 28px; font-weight: 700; line-height: 1.4; color: var(--c-red); }
.story-who { margin-top: auto; font-size: 15px; color: var(--c-text-soft); }

/* 5.10 Events */
.events { background: var(--c-pearl); }
.events-row { display: grid; grid-template-columns: 8fr 4fr; gap: var(--gutter); }
.event-card { position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; gap: 12px; min-height: 440px; padding: clamp(32px, 4vw, 56px); border-radius: var(--r-lg); background: var(--c-garnet); color: #fff; }
.event-cell { position: absolute; z-index: -1; bottom: -55%; left: -18%; width: 70%; }
.event-cell .cell-svg { fill: var(--c-garnet-tone); }
.event-tag { align-self: flex-start; padding: 6px 16px; border-radius: var(--r-pill); background: var(--c-saffron); color: var(--c-garnet); font-size: 15px; font-weight: 700; }
.event-name { margin-top: 12px; max-width: 14em; font-size: var(--fs-h2); font-weight: 800; }
.event-date { font-size: 22px; font-weight: 700; color: var(--c-saffron); font-variant-numeric: tabular-nums; }
.event-meta, .event-text { max-width: 34em; font-size: 17px; line-height: 1.7; }
.event-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: auto; padding-top: 16px; }
.btn--line { --bg: transparent; --fg: #fff; --fill: #fff; --fill-fg: var(--c-garnet); box-shadow: inset 0 0 0 1.5px #fff; }
.countdown { position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; gap: 8px; padding: clamp(28px, 3vw, 40px); border-radius: var(--r-lg); background: var(--c-red); color: #fff; }
.countdown-cell { position: absolute; z-index: -1; top: -35%; right: -45%; width: 130%; }
.countdown-label { font-size: 24px; line-height: 1.4; }
.countdown-num { margin-top: auto; font-size: clamp(3.25rem, 2rem + 3vw, 5.5rem); font-weight: 800; line-height: 1.1; font-variant-numeric: tabular-nums; }
.countdown-date, .countdown-link { font-size: 19px; font-weight: 700; }

/* 5.11 News */
.news-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gutter); }
.news-card { display: block; }
.news-media { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; border-radius: var(--r); background: var(--c-red); }
.news-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease-out); }
.news-card:hover .news-media img { transform: scale(1.04); }
html.js [data-circle] { clip-path: circle(0% at 50% 50%); transition: clip-path 1s var(--ease-in-out) calc(var(--d, 0) * 80ms + 100ms); }
html.js .is-in [data-circle] { clip-path: circle(75% at 50% 50%); }
.news-ph { position: absolute; inset: 0; }
.news-ph .cell-svg { position: absolute; top: -40%; left: -25%; width: 95%; fill: var(--c-red-tone); }
/* Brand placeholders until a post has its own photo: tone-on-tone, each turned differently. */
.news-ph--1 { background: var(--c-garnet); }
.news-ph--1 .cell-svg { fill: var(--c-garnet-tone); top: -10%; left: 30%; transform: rotate(90deg); }
.news-ph--2 { background: var(--c-pearl); }
.news-ph--2 .cell-svg { fill: var(--c-pearl-tone); top: 10%; left: -40%; width: 110%; transform: rotate(180deg); }
.news-meta { display: flex; align-items: center; gap: 10px; margin-top: 18px; font-size: 14px; color: var(--c-text-soft); font-variant-numeric: tabular-nums; }
.news-cat { padding: 3px 12px; border-radius: var(--r-pill); background: var(--c-pearl); color: var(--c-garnet); font-weight: 600; }
.news-title { display: block; margin-top: 10px; font-size: 22px; font-weight: 700; line-height: 1.5; transition: color .2s; }
.news-card:hover .news-title { color: var(--c-garnet); }

/* 5.12 Daily tips (palm, with red present on screen) */
.tips { background: var(--c-palm); color: #fff; }
.tips-in { display: grid; grid-template-columns: 4fr 8fr; gap: clamp(32px, 5vw, 96px); align-items: start; }
.tips-badge { display: inline-flex; padding: 8px 18px; border-radius: var(--r-pill); background: var(--c-red); color: #fff; font-size: 19px; font-weight: 700; }
.tips .sec-title { color: #fff; }
.tips-list li { display: flex; align-items: flex-start; gap: 22px; padding: 24px 0; border-bottom: 1px solid rgb(255 255 255 / .2); }
.tips-list li:first-child { padding-top: 0; }
.tip-num { flex: none; display: grid; place-items: center; width: 54px; height: 54px; border-radius: 50%; background: var(--c-mint); color: var(--c-garnet); font-size: 22px; font-weight: 800; }
.tips-list p { padding-top: 6px; font-size: var(--fs-lead); line-height: 1.6; }

/* 5.13 FAQ */
.faq-in { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(32px, 5vw, 96px); align-items: start; }
.faq-side { position: sticky; top: calc(var(--header-h) + 40px); }
.faq-side .sec-head { margin-bottom: 28px; }
.qa { border-bottom: 1px solid var(--c-line); interpolate-size: allow-keywords; }
.qa summary { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 24px 0; font-size: 22px; font-weight: 700; line-height: 1.5; list-style: none; cursor: pointer; }
.qa summary::-webkit-details-marker { display: none; }
.qa summary i { position: relative; flex: none; width: 44px; height: 44px; border-radius: 10px; background: var(--c-pearl); color: var(--c-garnet); transition: background-color .2s, color .2s; }
.qa summary i::before, .qa summary i::after { content: ""; position: absolute; top: 50%; left: 50%; width: 16px; height: 2px; margin: -1px 0 0 -8px; border-radius: 1px; background: currentColor; transition: transform 260ms var(--ease-out); }
.qa summary i::after { transform: rotate(90deg); }
.qa[open] summary i { background: var(--c-red); color: #fff; }
.qa[open] summary i::after { transform: rotate(0deg); }
.qa::details-content { block-size: 0; overflow: hidden; transition: block-size 320ms var(--ease-out), content-visibility 320ms allow-discrete; }
.qa[open]::details-content { block-size: auto; }
.qa-a p { max-width: 60ch; padding-bottom: 26px; font-size: 18px; line-height: 1.8; color: var(--c-text-soft); }

/* 5.14 Partners marquee */
.partners { --gap: var(--gutter); padding-block: clamp(64px, 7vw, 112px); background: var(--c-pearl); }
.partners-title { margin-bottom: 36px; font-size: var(--fs-h3); font-weight: 700; color: var(--c-red); }
.marquee { display: flex; gap: var(--gap); overflow: hidden; }
.marquee-row { display: flex; flex: none; gap: var(--gap); animation: marquee 48s linear infinite; }
.marquee:hover .marquee-row { animation-play-state: paused; }
@keyframes marquee { to { transform: translateX(calc(100% + var(--gap))); } }
.partner { flex: none; display: grid; place-items: center; min-width: 260px; height: 104px; padding: 0 28px; border-radius: var(--r); background: #fff; color: var(--c-ink); font-size: 17px; font-weight: 600; transition: color .3s; }
.partner img { max-height: 56px; width: auto; filter: grayscale(1) brightness(.3); transition: filter .3s; }
.partner:hover { color: var(--c-garnet); }
.partner:hover img { filter: none; }

/* 5.15 Join */
.join { position: relative; isolation: isolate; overflow: hidden; padding-block: var(--section-y); background: var(--c-red); color: #fff; }
.join-cell { position: absolute; z-index: -1; top: -45%; left: -12%; width: min(1100px, 90vw); }
.join-title { max-width: 12em; font-size: clamp(2.75rem, 1.4rem + 5vw, 6.5rem); font-weight: 800; line-height: 1.15; }
.join-lead { max-width: 30em; margin-top: 24px; font-size: clamp(1.5rem, 1.3rem + .5vw, 1.875rem); line-height: 1.6; }
.join-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 40px; }

/* 5.16 Footer */
.site-footer { position: relative; isolation: isolate; overflow: hidden; background: var(--c-garnet); color: #fff; }
.footer-cell { position: absolute; z-index: -1; bottom: -55%; left: -10%; width: min(1200px, 95vw); }
.footer-cell .cell-svg { fill: var(--c-garnet-tone); }
.site-footer__in { padding-block: var(--section-y) 36px; }
.site-footer__line { font-size: clamp(3rem, 1.5rem + 6vw, 8rem); font-weight: 800; line-height: 1.1; }
.footer-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gutter); margin-top: clamp(64px, 7vw, 112px); }
.footer-col h2 { margin-bottom: 18px; font-size: 15px; font-weight: 600; color: var(--c-mint); }
.footer-col li + li { margin-top: 10px; }
.footer-col a { font-size: 17px; transition: color .2s; }
.footer-col a:hover { color: var(--c-saffron); }
.footer-contact li { display: flex; gap: 12px; align-items: baseline; }
.footer-contact li > span:first-child { min-width: 5.5rem; font-size: 14px; color: var(--c-mint); }
.footer-sos { display: inline-flex; align-items: center; gap: 12px; margin-top: 56px; padding: 12px 22px; border-radius: var(--r-pill); background: var(--c-red); color: #fff; font-size: 19px; font-weight: 700; } /* red keeps the secondary colours company (brand rule) */
.footer-sos .icon { width: 22px; height: 22px; }
.footer-sos b { font-weight: 800; }
.site-footer__base { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-top: 88px; }
.site-footer .brand { color: #fff; }
.site-footer__domain { font-size: 15px; font-weight: 600; }
.site-footer__legal { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: 28px; padding-top: 20px; border-top: 1px solid rgb(255 255 255 / .2); font-size: 14px; }
.site-footer__legal a:hover { color: var(--c-saffron); }

/* 5.17 Floating "talk to us" (bottom left; hidden over the hero and the footer) */
.talk { position: fixed; z-index: 50; bottom: 20px; left: 20px; transition: opacity .3s var(--ease-out), transform .3s var(--ease-out); }
.talk.is-hidden { opacity: 0; transform: translateY(12px); pointer-events: none; }
.talk-btn { display: inline-flex; align-items: center; gap: 10px; height: 52px; padding: 0 22px; border-radius: var(--r-pill); background: var(--c-garnet); color: #fff; font-size: 16px; font-weight: 600; }
.talk-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--c-saffron); animation: heartbeat .833s ease-in-out infinite; }
.talk-menu { position: absolute; bottom: 62px; left: 0; min-width: 200px; padding: 8px; border-radius: 16px; background: #fff; border: 1px solid var(--c-line); }
.talk-menu a { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 10px; font-size: 16px; font-weight: 600; color: var(--c-ink); }
.talk-menu a:hover { background: var(--c-pearl); }
.talk-menu .icon { width: 20px; height: 20px; color: var(--c-garnet); }

@media (max-width: 1100px) {
  .start-grid { grid-template-columns: repeat(2, 1fr); }
  .prog-grid { grid-template-columns: repeat(2, 1fr); }
  .prog-grid > li, .prog-grid > li:nth-child(4), .prog-grid > li:nth-child(5) { grid-column: span 1; }
  .prog-grid > li:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .steps { grid-template-columns: repeat(2, 1fr); row-gap: 40px; }
  .steps-line { display: none; }
}
@media (max-width: 1023px) {
  .rail-in, .calc-in, .tips-in, .faq-in, .support-row, .events-row { grid-template-columns: 1fr; }
  .rail-index, .faq-side { position: static; }
  .rail-list { display: flex; flex-wrap: wrap; gap: 4px 20px; }
  .rail-list a { font-size: clamp(2.25rem, 1.5rem + 3vw, 3.5rem); }
  .value-card { min-height: 0; }
  .value-card--red, .value-card--mint { min-height: 420px; }
  .news-grid { grid-template-columns: repeat(2, 1fr); }
  .footer-cols { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 639px) {
  .start-grid, .prog-grid, .news-grid, .steps, .footer-cols { grid-template-columns: 1fr; }
  .calc-bars li { grid-template-columns: 6rem 1fr 3rem; gap: 10px; }
  .seg-opt span { font-size: 15px; padding: 11px 4px; }
  .qa summary { font-size: 19px; }
  .site-footer__base { flex-direction: column; align-items: flex-end; }
  .talk { bottom: 14px; left: 14px; }
}
/* =====================================================================
   Inner pages
   ===================================================================== */
.sec-tight { padding-block: clamp(48px, 6vw, 88px); }
.split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 6vw, 112px); align-items: start; }
.h-sub { margin: 40px 0 18px; font-size: 22px; font-weight: 700; }
.split > div > .h-sub:first-child { margin-top: 0; }
.prose-lite { max-width: 62ch; font-size: 19px; line-height: 1.9; }
.prose-lite p + p, .prose-lite p + ul, .prose-lite ul + p { margin-top: 1em; }
.prose-lite a { color: var(--c-garnet); text-decoration: underline; text-underline-offset: 3px; }
.prose-lite h2, .prose-lite h3 { margin: 1.6em 0 .6em; font-size: var(--fs-h3); }
.prose-lite img { border-radius: var(--r); }
.text-link { font-size: 17px; font-weight: 700; color: var(--c-garnet); }
.ticks li { position: relative; padding-inline-start: 26px; font-size: 17px; line-height: 1.7; }
.ticks li + li { margin-top: 10px; }
.ticks li::before { content: ""; position: absolute; top: .72em; inset-inline-start: 4px; width: 8px; height: 8px; border-radius: 50%; background: var(--c-red); }
.ticks--lg li { font-size: 19px; }

/* Inner hero */
.phero { position: relative; isolation: isolate; overflow: hidden; display: flex; align-items: flex-end; min-height: 64svh; padding: calc(var(--header-h) + 72px) 0 clamp(48px, 6vw, 88px); background: var(--c-red); color: #fff; }
.phero--garnet { background: var(--c-garnet); }
.phero--pearl { min-height: 52svh; background: var(--c-pearl); color: var(--c-ink); }
.phero--photo { min-height: 86svh; background: var(--c-garnet); }
.phero-media { position: absolute; inset: 0; z-index: -1; }
.phero-media img { width: 100%; height: 100%; object-fit: cover; }
.phero-media::after { content: ""; position: absolute; inset: 0; background: rgb(28 20 22 / .4); }
.phero-cell { position: absolute; z-index: -1; top: -35%; left: -12%; width: min(980px, 85vw); }
.phero-cell .cell-svg { fill: var(--c-red-tone); }
.phero--garnet .phero-cell .cell-svg { fill: var(--c-garnet-tone); }
.phero--pearl .phero-cell .cell-svg { fill: var(--c-pearl-tone); }
.phero-in { position: relative; }
/* Inner hero entrance: CSS from the first frame (the title is usually the page's LCP). */
html.js .phero [data-lines], html.js .phero [data-reveal] { opacity: 1; transform: none; animation: hero-rise .8s var(--ease-out) both; }
html.js .phero .tag { animation-delay: .05s; }
html.js .phero [data-lines] { animation-duration: 1s; animation-delay: .15s; }
html.js .phero .phero-lead { animation-delay: .35s; }
html.js .phero .ev-facts { animation-delay: .45s; }
.phero-title { max-width: 14em; margin-top: 20px; font-size: clamp(3rem, 1.6rem + 5vw, 7rem); font-weight: 800; line-height: 1.1; }
.phero--pearl .phero-title { color: var(--c-red); }
.phero-lead { max-width: 34em; margin-top: 22px; font-size: clamp(1.5rem, 1.3rem + .5vw, 1.875rem); line-height: 1.6; }
.phero--pearl .phero-lead { font-size: var(--fs-lead); color: var(--c-text-soft); }
.phero-btn { margin-top: 32px; }
.btn .icon { width: 20px; height: 20px; flex: none; }

/* Sticky in-page navigation with scroll-spy */
.subnav { position: sticky; z-index: 30; top: var(--header-h); background: #fff; border-bottom: 1px solid var(--c-line); transition: top 300ms var(--ease-out); }
html.head-hidden .subnav { top: 0; }
.subnav-row { display: flex; gap: 4px; padding-block: 10px; overflow-x: auto; scrollbar-width: none; }
.subnav-row::-webkit-scrollbar { display: none; }
.subnav-row a { display: block; padding: 10px 16px; border-radius: 10px; font-size: 15px; font-weight: 600; white-space: nowrap; transition: background-color .2s, color .2s; }
.subnav-row a:hover { background: var(--c-pearl); }
.subnav-row a[aria-current="true"] { background: var(--c-garnet); color: #fff; }
[id] { scroll-margin-top: calc(var(--header-h) + 72px); }

/* Segmented links (events, news) */
.seg-row--links { display: inline-flex; flex-wrap: wrap; margin-bottom: 40px; }
.seg-row--links a { padding: 11px 20px; border-radius: 8px; font-size: 16px; font-weight: 600; transition: background-color .2s, color .2s; }
.seg-row--links a[aria-selected="true"] { background: var(--c-garnet); color: #fff; }
.seg-row--sm { display: inline-flex; }
.seg-row--sm .seg-opt span { padding: 10px 16px; white-space: nowrap; }

/* About */
.about-story-in { display: grid; grid-template-columns: 6fr 6fr; gap: clamp(32px, 6vw, 112px); align-items: end; }
.about-lede { margin-top: 18px; font-size: var(--fs-h2); font-weight: 800; line-height: 1.3; color: var(--c-red); }
.about-text p { font-size: var(--fs-lead); line-height: 1.8; }
.about-former { display: inline-block; margin-top: 18px; padding: 8px 16px; border-radius: 12px; background: var(--c-pearl); color: var(--c-garnet); font-size: 16px !important; font-weight: 600; }
.model { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gutter); margin-top: clamp(56px, 6vw, 96px); }
.model li { padding-top: 22px; border-top: 2px solid var(--c-red); }
.model b { font-size: 22px; }
.model p { margin-top: 8px; font-size: 17px; line-height: 1.7; color: var(--c-text-soft); }
.stats { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--gutter); margin-top: clamp(56px, 6vw, 96px); }
.stats li { display: grid; gap: 4px; }
.stats b { font-size: clamp(2.75rem, 1.6rem + 3vw, 4.75rem); font-weight: 800; line-height: 1.1; color: var(--c-red); font-variant-numeric: tabular-nums; }
.stats span { font-size: 15px; font-weight: 600; }
.vm-in { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gutter); }
.vm-card { position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-end; gap: 16px; min-height: 380px; padding: clamp(28px, 3.5vw, 52px); border-radius: var(--r-lg); background: var(--c-red); color: #fff; }
.vm-card--garnet { background: var(--c-garnet); }
.vm-cell { position: absolute; z-index: -1; top: -40%; left: -30%; width: 100%; }
.vm-cell .cell-svg { fill: var(--c-red-tone); }
.vm-card h2 { font-size: var(--fs-h2); font-weight: 800; }
.vm-card p { font-size: clamp(1.5rem, 1.3rem + .5vw, 1.875rem); line-height: 1.6; }
.together { padding-bottom: var(--section-y); font-size: var(--fs-h1); font-weight: 800; color: var(--c-red); }
.councils { background: var(--c-pearl); }
.council-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gutter); }
.council { display: flex; flex-direction: column; gap: 12px; padding: clamp(28px, 3vw, 44px); border-radius: var(--r-lg); background: #fff; }
.council-num { font-size: 19px; font-weight: 800; color: var(--c-red); font-variant-numeric: tabular-nums; }
.council h3 { font-size: var(--fs-h3); }
.council p { max-width: 40em; font-size: 17px; line-height: 1.8; color: var(--c-text-soft); }
.council--gulf { grid-column: 1 / -1; display: grid; grid-template-columns: 5fr 7fr; column-gap: clamp(24px, 4vw, 64px); }
.council--gulf > :not(.council-map) { grid-column: 1; }
.council-map { grid-column: 2; grid-row: 1 / span 3; }
.gulf-map { width: 100%; height: auto; }
.gulf-map .dots circle { fill: rgb(94 11 21 / .16); }
.pin circle { fill: var(--c-red); }
.pin-pulse { fill: var(--c-red); opacity: .35; transform-box: fill-box; transform-origin: center; animation: pin 2.4s var(--ease-out) infinite; }
.pin:nth-of-type(2) .pin-pulse { animation-delay: .4s; }
.pin:nth-of-type(3) .pin-pulse { animation-delay: .8s; }
.pin:nth-of-type(4) .pin-pulse { animation-delay: 1.2s; }
.pin:nth-of-type(5) .pin-pulse { animation-delay: 1.6s; }
.pin--bh text { fill: var(--c-garnet); font: 700 18px var(--font); text-anchor: middle; }
@keyframes pin { 0% { transform: scale(1); opacity: .45; } 100% { transform: scale(3.2); opacity: 0; } }
.team-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(20px, 2.4vw, 36px) var(--gutter); }
.member { display: grid; gap: 6px; }
.member-photo { display: block; aspect-ratio: 3 / 4; margin-bottom: 12px; overflow: hidden; border-radius: var(--r-lg); background: var(--c-pearl); }
.member-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; /* portraits are pre-aligned: same eye line, mouth line and headroom */ transition: transform .8s var(--ease-out); }
.member:hover .member-photo img { transform: scale(1.04); }
.member-name { font-size: 19px; }
.member-role { font-size: 15px; font-weight: 600; line-height: 1.6; color: var(--c-text-soft); transition: color .3s; }
.member:hover .member-role { color: var(--c-garnet); }

/* Committees */
.rail-list--sm a { font-size: 20px; font-weight: 700; line-height: 1.5; padding-block: 6px; }
.rail-list--sm li::before { padding-top: .55em; }
.committee { padding-block: 0 clamp(40px, 5vw, 72px); border-bottom: 1px solid var(--c-line); }
.committee + .committee { padding-top: clamp(40px, 5vw, 72px); }
.committee-num { font-size: 19px; font-weight: 800; color: var(--c-red); font-variant-numeric: tabular-nums; }
.committee h2 { margin-top: 10px; font-size: var(--fs-h2); font-weight: 800; }
.committee-def { margin: 16px 0 12px; max-width: 40em; font-size: var(--fs-lead); line-height: 1.7; color: var(--c-text-soft); }
.committee .qa summary { font-size: 19px; }
.committee .qa-a { padding-bottom: 22px; }

/* Sickle cell guide */
.flow { margin: 0; overflow: hidden; border-radius: var(--r-lg); background: var(--c-pearl); }
.flow-canvas { display: block; width: 100%; aspect-ratio: 4 / 3; }
.flow figcaption { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 20px 20px; }
.flow-note { font-size: 15px; font-weight: 600; color: var(--c-garnet); }
.genes { padding-top: 0; background: var(--c-pearl); }
.gene-grid, .sym-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gutter); }
.gene-grid li { padding: clamp(24px, 3vw, 36px); border-radius: var(--r-lg); background: #fff; }
.gene-code { display: block; font-size: 3.25rem; font-weight: 800; line-height: 1; color: var(--c-red); }
.gene-grid h3, .sym h3 { margin: 16px 0 8px; font-size: var(--fs-h3); }
.gene-grid p, .sym p { font-size: 17px; line-height: 1.7; color: var(--c-text-soft); }
.sym { padding: clamp(24px, 3vw, 36px); border-radius: var(--r-lg); background: var(--c-pearl); }
.sym-ico { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 14px; background: #fff; color: var(--c-red); }
.sym-ico .icon { width: 26px; height: 26px; }
.complications { background: var(--c-pearl); }
.complications .btn { margin-top: -24px; }
.numlist li { display: grid; grid-template-columns: 4rem 1fr; gap: 12px; padding-block: 22px; border-bottom: 1px solid var(--c-line); }
.complications .numlist li { border-color: var(--c-pearl-tone); }
.numlist li:first-child { padding-top: 0; }
.numlist span { font-size: 28px; font-weight: 800; line-height: 1.2; color: var(--c-red); font-variant-numeric: tabular-nums; }
.numlist h3 { font-size: 22px; }
.numlist p { margin-top: 4px; font-size: 17px; line-height: 1.7; color: var(--c-text-soft); }
.numlist--sm span { font-size: 22px; }
.numlist--sm p { margin: 0; font-size: 18px; color: var(--c-ink); }
.timeline { --p: 1; position: relative; display: grid; gap: 34px; padding-inline-start: 44px; }
html.js .timeline { --p: 0; }
.timeline-line { position: absolute; top: 8px; bottom: 8px; inset-inline-start: 9px; width: 2px; background: var(--c-pearl-tone); }
.timeline-line i { position: absolute; inset: 0; background: var(--c-red); transform: scaleY(var(--p)); transform-origin: top; }
.timeline li { position: relative; }
.timeline li::before { content: ""; position: absolute; top: 9px; inset-inline-start: -44px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 3px var(--c-red); }
.timeline h3 { font-size: 22px; }
.timeline p { margin-top: 4px; font-size: 17px; line-height: 1.7; color: var(--c-text-soft); }
.ring { position: relative; display: grid; place-items: center; width: 180px; margin-top: 8px; }
.ring svg { width: 180px; height: 180px; transform: rotate(-90deg); }
.ring circle { fill: none; stroke-width: 10; }
.ring-bg { stroke: var(--c-pearl); }
.ring-fg { stroke: var(--c-red); stroke-linecap: round; stroke-dasharray: 326.7; stroke-dashoffset: calc(326.7 * (1 - var(--p, 0))); transition: stroke-dashoffset .6s var(--ease-out); }
.ring-count { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums; }
.ring-count b { font-size: 44px; font-weight: 800; color: var(--c-red); }
.ring-done { margin-top: 12px; font-size: 19px; font-weight: 700; color: var(--c-garnet); text-align: center; }
.habits { display: grid; gap: 10px; }
.habit { display: flex; align-items: center; gap: 14px; padding: 16px 18px; border-radius: 14px; background: var(--c-pearl); cursor: pointer; transition: background-color .25s; }
.habit input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.habit-box { flex: none; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 8px; background: #fff; box-shadow: inset 0 0 0 2px var(--c-garnet); color: transparent; transition: background-color .25s, color .25s, box-shadow .25s; }
.habit-box .icon { width: 18px; height: 18px; stroke-width: 2.5; }
.habit input:checked + .habit-box { background: var(--c-red); box-shadow: none; color: #fff; }
.habit input:focus-visible + .habit-box { outline: 3px solid var(--c-garnet); outline-offset: 2px; }
.habit-ico { flex: none; color: var(--c-garnet); }
.habit-ico .icon { width: 22px; height: 22px; }
.habit-txt { font-size: 17px; line-height: 1.6; }
.habit:has(input:checked) { background: var(--c-pearl-tone); }
.sos-box { position: relative; isolation: isolate; overflow: hidden; padding: clamp(32px, 5vw, 72px); border-radius: var(--r-lg); background: var(--c-garnet); color: #fff; }
.sos-cell { position: absolute; z-index: -1; bottom: -60%; left: -15%; width: min(900px, 80vw); }
.sos-cell .cell-svg { fill: var(--c-garnet-tone); }
.sos-tag { font-size: 15px; font-weight: 700; color: var(--c-saffron); }
.sos-title { margin-top: 14px; font-size: var(--fs-h1); font-weight: 800; line-height: 1.15; }
.sos-lead { margin-top: 18px; font-size: 19px; font-weight: 700; }
.sos-list { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 40px; margin-top: 32px; max-width: 60rem; }
.sos-list li { display: flex; align-items: flex-start; gap: 12px; font-size: 18px; line-height: 1.6; }
.sos-list .icon { flex: none; width: 22px; height: 22px; margin-top: 3px; color: var(--c-saffron); }
.sos-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 40px; }
.btn--sos { --bg: var(--c-red); --fg: #fff; --fill: #fff; --fill-fg: var(--c-red); min-height: 64px; padding: 0 30px; font-size: 22px; }
.disclaimer { margin-top: 20px; font-size: 14px; color: var(--c-text-soft); }

/* Programs, events */
.info-cards { display: grid; gap: var(--gutter); }
.info-card { display: flex; flex-direction: column; gap: 14px; padding: clamp(24px, 3vw, 40px); border-radius: var(--r-lg); background: var(--c-pearl); }
.info-card h2 { font-size: var(--fs-h3); }
.info-card p, .mini-steps li { font-size: 17px; line-height: 1.7; }
.info-card .btn { align-self: flex-start; }
.mini-steps { counter-reset: s; display: grid; gap: 8px; }
.mini-steps li { counter-increment: s; display: flex; gap: 10px; }
.mini-steps li::before { content: "0" counter(s); font-weight: 800; color: var(--c-red); font-size: 19px; }
.ev-list { display: grid; gap: 12px; }
.ev { display: flex; align-items: center; gap: clamp(16px, 3vw, 40px); padding: 22px clamp(20px, 3vw, 36px); border-radius: var(--r-lg); background: var(--c-garnet); color: #fff; transition: transform .35s var(--ease-out); }
.ev:hover { transform: translateY(-3px); }
.ev-date { flex: none; display: grid; min-width: 6.5rem; }
.ev-date b { font-size: 44px; font-weight: 800; line-height: 1; color: var(--c-saffron); font-variant-numeric: tabular-nums; }
.ev-date small { margin-top: 4px; font-size: 14px; font-weight: 600; }
.ev-body { display: grid; gap: 4px; }
.ev-name { font-size: 22px; }
.ev-meta { font-size: 15px; }
.ev-go { margin-inline-start: auto; font-size: 24px; transition: transform .3s var(--ease-out); }
.ev:hover .ev-go { transform: translateX(-6px); }
.ev--past { background: var(--c-pearl); color: var(--c-ink); }
.ev--past .ev-date b { color: var(--c-garnet); }
.empty { display: grid; justify-items: start; gap: 12px; padding: clamp(32px, 4vw, 56px); border-radius: var(--r-lg); background: var(--c-pearl); }
.empty-title { font-size: 28px; font-weight: 700; color: var(--c-red); }
.ev-facts { display: flex; flex-wrap: wrap; gap: 12px 32px; margin-top: 24px; }
.ev-facts li { display: flex; align-items: center; gap: 10px; font-size: 19px; font-weight: 700; }
.ev-facts .icon { width: 22px; height: 22px; color: var(--c-saffron); }
.ev-actions { position: sticky; top: calc(var(--header-h) + 24px); }

/* News article */
.progress { position: fixed; z-index: 59; top: var(--header-h); inset-inline: 0; height: 2px; pointer-events: none; transition: top 300ms var(--ease-out); }
html.head-hidden .progress { top: 0; }
.progress i { display: block; height: 100%; background: var(--c-red); transform: scaleX(var(--p, 0)); transform-origin: right; }
.article-head { padding: calc(var(--header-h) + 72px) 0 36px; background: var(--c-pearl); }
.article-title { max-width: 20em; margin-top: 18px; font-size: clamp(2.25rem, 1.4rem + 2.8vw, 4rem); font-weight: 800; line-height: 1.25; }
.article-media { margin-top: 0; padding-top: 40px; }
.article-media img { width: 100%; max-height: 640px; object-fit: cover; border-radius: var(--r-lg); }
.article-body { margin-inline: 0 auto; padding-block: 48px var(--section-y); }
.news-grid--archive { row-gap: clamp(36px, 4vw, 56px); }
.pager { display: flex; gap: 8px; margin-top: 56px; }
.pager .page-numbers { display: grid; place-items: center; min-width: 44px; height: 44px; padding: 0 12px; border-radius: 10px; background: var(--c-pearl); font-weight: 700; }
.pager .current { background: var(--c-garnet); color: #fff; }

/* Forms */
.form-card { padding: clamp(24px, 3vw, 40px); border-radius: var(--r-lg); background: var(--c-pearl); }
.form-card > h3 { font-size: var(--fs-h3); }
.form-card > p { margin: 8px 0 24px; font-size: 17px; color: var(--c-text-soft); }
.form { position: relative; display: grid; gap: 18px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.field { display: grid; gap: 8px; }
.field label, .chips legend { font-size: 15px; font-weight: 600; }
.field small { font-weight: 400; color: var(--c-text-soft); }
.field input, .field select, .field textarea { width: 100%; padding: 14px 16px; border: 1.5px solid var(--c-line); border-radius: 12px; background: #fff; color: var(--c-ink); font: 400 17px/1.5 var(--font); transition: border-color .2s; }
.field textarea { resize: vertical; min-height: 140px; }
.field input:focus, .field select:focus, .field textarea:focus { outline: 3px solid var(--c-garnet); outline-offset: 1px; border-color: var(--c-garnet); }
.field.is-bad input, .field.is-bad textarea { border-color: var(--c-red); }
.field-err { min-height: 0; font-size: 14px; font-weight: 600; color: var(--c-garnet); }
.field-err:empty { display: none; }
.hp { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; } /* honeypot: hidden without an RTL-overflowing offset */
.chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; border: 0; }
.chips legend { width: 100%; margin-bottom: 10px; }
.chip { position: relative; }
.chip input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.chip span { display: block; padding: 10px 18px; border-radius: var(--r-pill); background: #fff; box-shadow: inset 0 0 0 1.5px var(--c-line); font-size: 15px; font-weight: 600; transition: background-color .2s, color .2s, box-shadow .2s; }
.chip input:checked + span { background: var(--c-garnet); color: #fff; box-shadow: none; }
.chip input:focus-visible + span { outline: 3px solid var(--c-garnet); outline-offset: 2px; }
.form .btn { justify-self: start; }
.form-msg { padding: 14px 18px; border-radius: 12px; font-size: 17px; font-weight: 600; }
.form-msg--ok { background: var(--c-mint); color: var(--c-garnet); }
.form-msg--err { background: var(--c-saffron); color: var(--c-garnet); }

/* Join */
.volunteer { background: var(--c-pearl); }
.volunteer .form-card { background: #fff; }
.donate-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gutter); }
.donate-card { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; padding: clamp(26px, 3vw, 40px); border-radius: var(--r-lg); background: var(--c-pearl); }
.donate-card--garnet { background: var(--c-garnet); color: #fff; }
.donate-card--red { background: var(--c-red); color: #fff; }
.donate-ico { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 14px; background: #fff; color: var(--c-red); }
.donate-ico .icon { width: 26px; height: 26px; }
.donate-card h3 { font-size: 26px; }
.donate-card p { font-size: 17px; line-height: 1.7; }
.donate-card .btn { margin-top: auto; }
.donate-big, .donate-card--red p { font-size: 24px !important; line-height: 1.5 !important; }
.bank { display: grid; gap: 10px; width: 100%; }
.bank dt { font-size: 14px; color: var(--c-mint); }
.bank dd { margin: 0; font-size: 19px; font-weight: 700; }
.iban, .bp { font-size: 24px !important; font-weight: 800; font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.donate-note { margin-top: 24px; font-size: 17px; color: var(--c-text-soft); }

/* Contact */
.contact-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gutter); }
.contact-card { display: flex; flex-direction: column; gap: 8px; height: 100%; padding: clamp(22px, 2.6vw, 32px); border-radius: var(--r-lg); background: var(--c-pearl); border: 1px solid transparent; transition: border-color .3s, transform .3s var(--ease-out); }
a.contact-card:hover { border-color: var(--c-red); transform: translateY(-3px); }
.contact-ico { display: grid; place-items: center; width: 52px; height: 52px; margin-bottom: 8px; border-radius: 14px; background: #fff; color: var(--c-red); }
.contact-ico .icon { width: 24px; height: 24px; }
.contact-label { font-size: 15px; color: var(--c-text-soft); }
.contact-value { align-self: flex-start; font-size: 22px; font-variant-numeric: tabular-nums; }
.contact-form { padding-top: 0; }
.visit { display: grid; gap: 14px; margin-top: -16px; }
.visit p { display: flex; gap: 12px; font-size: 18px; line-height: 1.7; }
.visit .icon { flex: none; width: 22px; height: 22px; margin-top: 4px; color: var(--c-red); }
.visit .btn { justify-self: start; }
.placeholder-note { padding: 16px 18px; border-radius: 12px; border: 1.5px dashed var(--c-pearl-tone); color: var(--c-text-soft); font-size: 16px !important; }

/* 404 */
.nf { position: relative; isolation: isolate; overflow: hidden; display: flex; align-items: center; min-height: 100svh; padding: calc(var(--header-h) + 48px) 0 64px; background: var(--c-pearl); }
.nf-cell { position: absolute; z-index: -1; top: -20%; left: -20%; width: min(1100px, 95vw); }
.nf-cell .cell-svg { fill: var(--c-pearl-tone); }
.nf-title { margin-top: 18px; font-size: var(--fs-display); font-weight: 800; line-height: 1.1; color: var(--c-red); }
.nf-lead { margin-top: 18px; font-size: var(--fs-lead); }
.nf-links { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 32px; }
.nf-links a { display: block; padding: 14px 22px; border-radius: 12px; background: #fff; font-size: 19px; font-weight: 700; color: var(--c-garnet); transition: background-color .2s, color .2s; }
.nf-links a:hover { background: var(--c-garnet); color: #fff; }

@media (max-width: 1023px) {
  .split, .about-story-in, .vm-in, .council-grid, .council--gulf { grid-template-columns: 1fr; }
  .council--gulf > :not(.council-map), .council-map { grid-column: auto; grid-row: auto; }
  .team-grid { grid-template-columns: repeat(3, 1fr); }
  .stats { grid-template-columns: repeat(3, 1fr); }
  .gene-grid, .sym-grid, .donate-grid, .contact-grid { grid-template-columns: repeat(2, 1fr); }
  .sos-list { grid-template-columns: 1fr; }
  .ev-actions { position: static; }
  .complications .btn { margin-top: 0; }
}
@media (max-width: 639px) {
  .team-grid { grid-template-columns: repeat(2, 1fr); }
  .stats { grid-template-columns: repeat(2, 1fr); }
  .model, .gene-grid, .sym-grid, .donate-grid, .contact-grid, .form-grid { grid-template-columns: 1fr; }
  .ev { flex-wrap: wrap; }
  .ev-go { display: none; }
  .phero-title { font-size: clamp(2.6rem, 1.8rem + 4vw, 3.5rem); }
}

/* Reduced motion: no breathing, no long reveals ----------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 150ms !important; }
  .scene { transition: opacity 150ms; }
  .scene img, .scene.is-active img { transform: none; animation: none; }
  .scrim { -webkit-backdrop-filter: none; backdrop-filter: none; }
}
