/* Beacon 2.0 — white-label design system.
   Brand values resolve from theme.json presets so style variations and the
   Site Editor re-skin everything; hex values here are fallbacks only. */
:root{
  --primary:var(--wp--preset--color--primary,#2C2352);
  --primary-2:var(--wp--preset--color--primary-bright,#453873);
  --accent:var(--wp--preset--color--accent,#6D56D4);
  --accent-2:var(--wp--preset--color--ember,#4A2FA8);
  --alert:var(--wp--preset--color--alert,#B4231F);
  --deep:var(--wp--preset--color--deep,#0D0919);
  --bg:var(--deep);
  --bg-2:color-mix(in srgb,var(--deep) 94%,var(--primary-2));
  --surface:color-mix(in srgb,var(--deep) 80%,var(--primary-2));
  --surface-2:color-mix(in srgb,var(--deep) 68%,var(--primary-2));
  --line:color-mix(in srgb,var(--primary-2) 42%,var(--deep));
  --text:#ECE9F8;
  --muted:var(--wp--preset--color--mist,#A9A2C4);
  --glass:color-mix(in srgb,var(--deep) 74%,transparent);
  --ink:var(--text); --paper:var(--bg);
  --bar:color-mix(in srgb,var(--deep) 86%,var(--primary));
  --btn-ink:#FFFFFF;
  --accent-text:#9C86F0;
  --hero-scrim:var(--wp--preset--gradient--hero-scrim,linear-gradient(180deg,rgba(8,17,28,.35) 0%,rgba(8,17,28,.55) 45%,rgba(8,17,28,.94) 100%));
  --font-display:var(--wp--preset--font-family--display,"Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif);
  --font-body:var(--wp--preset--font-family--body,"Public Sans",ui-sans-serif,system-ui,sans-serif);
  --wrap:var(--wp--custom--wrap,1200px);
  --radius:var(--wp--custom--radius--lg,18px);
  --radius-sm:var(--wp--custom--radius--sm,12px);
  --shadow:var(--wp--custom--shadow--card,0 2px 6px rgba(0,0,0,.2),0 24px 60px -22px rgba(0,0,0,.55));
  --ring:0 0 0 1px var(--line);
  --nav-h:74px;
  /* One motion vocabulary: every transition/animation picks from these. */
  --ease:var(--wp--custom--motion--ease,cubic-bezier(.2,.8,.2,1));
  --ease-soft:var(--wp--custom--motion--ease-soft,cubic-bezier(.33,1,.68,1));
  --t-press:.11s;
  --t-fast:var(--wp--custom--motion--fast,.16s);
  --t-base:var(--wp--custom--motion--base,.26s);
  --t-slow:var(--wp--custom--motion--slow,.5s);
  --t-reveal:.8s;
  --t-scene:1s;
  --stagger:.08s;
  /* Amber clears 4.5:1 on the dark palette; the light scheme swaps to ember. */
  --focus:var(--accent);
  --focus-halo:color-mix(in srgb,var(--accent) 32%,transparent);
  --measure:var(--wp--custom--measure,66ch);
  --sec-y:var(--wp--custom--section--y,clamp(64px,7.6vw,112px));
  --ridge-h:15px;
}
html[data-theme="light"]{
  --bg:var(--wp--preset--color--paper,#F7F5FC);
  --bg-2:var(--wp--preset--color--surface,#FFFFFF);
  --surface:var(--wp--preset--color--surface,#FFFFFF);
  --surface-2:color-mix(in srgb,var(--bg) 92%,var(--primary));
  --line:color-mix(in srgb,var(--primary) 14%,var(--bg));
  --text:var(--wp--preset--color--ink,#17122B);
  --muted:color-mix(in srgb,var(--text) 60%,var(--bg));
  --glass:rgba(255,255,255,.78);
  --bar:var(--wp--preset--color--primary,#2C2352);
  --hero-scrim:linear-gradient(180deg,rgba(14,28,46,.28) 0%,rgba(14,28,46,.42) 42%,rgba(20,34,52,.86) 100%);
  --shadow:0 2px 6px rgba(30,58,95,.06),0 24px 55px -24px rgba(30,58,95,.32);
  /* Amber on paper falls under 3:1 — ember carries the focus ring in light. */
  --focus:var(--accent-2);
  --focus-halo:color-mix(in srgb,var(--accent-2) 26%,transparent);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scrollbar-width:thin;
  scrollbar-color:color-mix(in srgb,var(--muted) 42%,transparent) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 38%,transparent);border-radius:100px;
  border:3px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--accent) 70%,transparent);background-clip:content-box}
::selection{background:color-mix(in srgb,var(--accent) 82%,transparent);color:var(--btn-ink)}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);
  line-height:1.6;overflow-x:hidden;overflow-wrap:break-word;
  transition:background var(--t-slow) ease,color var(--t-slow) ease}
h1,h2,h3,h4,.dsp{font-family:var(--font-display);font-weight:700;line-height:1.08;letter-spacing:-.02em;
  font-optical-sizing:auto;text-wrap:balance}
/* Tracking tightens as type grows — optical, not linear. */
h1,.dsp{letter-spacing:-.03em}
h2{letter-spacing:-.024em}
h3{letter-spacing:-.016em}
h4,h5,h6{letter-spacing:-.008em}
p,li,dd,figcaption,blockquote{text-wrap:pretty}
a{color:inherit;text-decoration-thickness:.06em;text-underline-offset:.16em;
  text-decoration-color:color-mix(in srgb,currentColor 45%,transparent);
  transition:color var(--t-fast) var(--ease),text-decoration-color var(--t-fast) var(--ease)}
a:hover{text-decoration-color:currentColor}
/* Underlines belong to running prose; a linked heading is already a target. */
:is(h1,h2,h3,h4,h5,h6) a{text-decoration:none}
:is(h1,h2,h3,h4,h5,h6) a:hover{color:var(--accent)}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
.eyebrow{font-family:var(--font-display);font-weight:700;font-size:.78rem;letter-spacing:var(--wp--custom--tracking--label,.22em);
  text-transform:uppercase;color:var(--accent)}
.lead{color:var(--muted);font-size:1.12rem;max-width:60ch}
/* Numbers that get compared or animate must not dance. */
.stat .n,.stat-n,.tier .a,.mt,.mgive-row,.u-16,.u-17,.thermo,.meter-label,.statusbar,
.wp-block-post-date,.wp-block-query-pagination,.bf input[type="number"],time{font-variant-numeric:tabular-nums}

body::before{content:"";position:fixed;inset:0;z-index:9999;pointer-events:none;opacity:.045;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--accent);color:var(--btn-ink);
  padding:10px 18px;border-radius:0 0 10px 0;font-weight:700;font-family:var(--font-display);text-decoration:none}
.skip-link:focus,.skip-link:focus-visible{left:0;clip:auto!important;clip-path:none;
  width:auto;height:auto;box-shadow:0 10px 30px -12px rgba(0,0,0,.6)}

/* Keyboard affordance — one ring, legible on photography and both schemes.
   Mouse/touch never sees it; :focus-visible only. */
:is(a,button,summary,[tabindex],input,select,textarea,.tier,.mt,.mlink,.lang-pill):focus-visible{
  outline:2px solid var(--focus);outline-offset:3px}
.btn:focus-visible,.wp-block-button__link:focus-visible,.tier:focus-visible,.mt:focus-visible,
.icon-btn:focus-visible,.lang-pill:focus-visible,.yn button:focus-visible,.sdots button:focus-visible,
.gal a:focus-visible,.beacon-gal .wp-block-image:focus-within,.foot-social a:focus-visible{
  outline:2px solid var(--focus);outline-offset:3px;box-shadow:0 0 0 6px var(--focus-halo)}
.bf input:focus-visible,.bf select:focus-visible,.bf textarea:focus-visible,
.wp-block-search__input:focus-visible,.wp-block-post-comments-form :is(input,textarea):focus-visible{
  outline:2px solid var(--focus);outline-offset:1px}
:focus:not(:focus-visible){outline:none}
:disabled,[aria-disabled="true"]{opacity:.55;cursor:not-allowed;filter:saturate(.45);box-shadow:none}
:disabled:hover,[aria-disabled="true"]:hover{transform:none}

.beacon-nav{position:sticky;top:var(--wp-admin--admin-bar--height,0px);z-index:100;margin-bottom:calc(-1 * var(--nav-h));
  transition:background .4s ease,border-color .4s ease}
.beacon-nav .beacon-nav__bar{min-height:var(--nav-h);padding-top:10px;padding-bottom:10px}
.beacon-nav.scrolled{backdrop-filter:blur(16px) saturate(1.3);background:var(--glass);border-bottom:1px solid var(--line)}
.beacon-nav .wp-block-site-title a{text-decoration:none}
.beacon-nav .wp-block-navigation{font-weight:600;font-size:.94rem}
.beacon-nav .wp-block-navigation .wp-block-navigation-item__content{position:relative;padding:4px 0;text-decoration:none}
.beacon-nav .wp-block-navigation .wp-block-navigation-item__content::after{content:"";position:absolute;left:0;bottom:-2px;
  height:2px;width:0;background:var(--accent);transition:width var(--t-base) var(--ease)}
.beacon-nav .wp-block-navigation .wp-block-navigation-item__content:hover::after{width:100%}
.beacon-nav .wp-block-navigation__responsive-container.is-menu-open{background:var(--glass);backdrop-filter:blur(20px)}
.beacon-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content{
  font-family:var(--font-display);font-weight:700;font-size:1.6rem}
.beacon-nav .wp-block-site-logo img{width:42px;height:42px;border-radius:10px;background:#fff;padding:3px;object-fit:contain}

/* v1 / toolkit mega header (kept as a contract — the plugin injects this markup) */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;transition:background var(--t-slow) var(--ease),border-color var(--t-slow) var(--ease)}
body:has(> .statusbar) .nav,body:has(.statusbar:first-child) .nav{top:34px}
.nav .bar{display:flex;align-items:center;gap:22px;padding:16px 24px;max-width:calc(var(--wrap) + 48px);margin:0 auto}
/* Frost lives on a pseudo: backdrop-filter on .nav itself would become the
   backdrop root for the mega panels and kill their blur once scrolled. */
.nav.scrolled{border-bottom:1px solid var(--line)}
.nav.scrolled::before{content:"";position:absolute;inset:0;z-index:-1;backdrop-filter:blur(16px) saturate(1.3);background:var(--glass)}
.brand{display:flex;align-items:center;gap:12px;font-family:var(--font-display);font-weight:800;font-size:1.02rem;color:#fff;text-decoration:none}
.brand img{width:42px;height:42px;border-radius:10px;background:#fff;padding:3px;object-fit:contain}
.brand small{display:block;font-family:var(--font-body);font-weight:500;font-size:.68rem;color:rgba(255,255,255,.72);letter-spacing:.02em}
.nav .links{display:flex;gap:26px;margin-left:auto;font-weight:600;font-size:.94rem}
/* The nav floats over a dark hero at the top, so force legible light text in both
   schemes; once .scrolled the frosted bar appears and theme colors take over. */
.nav .links a{position:relative;padding:4px 0;color:#fff;opacity:.92;text-decoration:none}
.nav .links a::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:0;background:var(--accent);transition:width var(--t-base) var(--ease)}
.nav .links a:hover{opacity:1}.nav .links a:hover::after{width:100%}
.nav.scrolled .brand,.nav.scrolled .brand small{color:var(--text)}
.nav.scrolled .brand small{color:var(--muted)}
.nav.scrolled .links a{color:var(--text);opacity:.86}
/* Over photography the control needs its own scrim: a white wash disappears
   the moment the image behind it is bright. */
.icon-btn{width:42px;height:42px;border-radius:11px;border:1px solid rgba(255,255,255,.42);background:rgba(10,20,32,.34);
  display:grid;place-items:center;cursor:pointer;color:#fff;padding:0;
  backdrop-filter:blur(6px);
  transition:transform var(--t-base) var(--ease),border-color var(--t-base) var(--ease),background var(--t-base) var(--ease)}
.beacon-nav .icon-btn,.nav.scrolled .icon-btn{border-color:var(--line);background:var(--surface);color:var(--text)}
.beacon-theme-toggle .moon,#themeToggle .moon{display:none}
html[data-theme="light"] .beacon-theme-toggle .sun,html[data-theme="light"] #themeToggle .sun{display:none}
html[data-theme="light"] .beacon-theme-toggle .moon,html[data-theme="light"] #themeToggle .moon{display:block}
.icon-btn:hover{transform:translateY(-2px);border-color:var(--accent)}
.hamburger{display:none}

.btn{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-display);font-weight:700;
  border-radius:12px;padding:12px 22px;cursor:pointer;border:0;font-size:.95rem;white-space:nowrap;text-decoration:none;
  transition:transform var(--t-base) var(--ease),box-shadow var(--t-base) var(--ease),
    border-color var(--t-base) var(--ease),background var(--t-base) var(--ease),color var(--t-base) var(--ease)}
.btn-give,.wp-block-button.btn-give>.wp-block-button__link{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:var(--btn-ink);
  box-shadow:0 10px 26px -10px color-mix(in srgb,var(--accent) 70%,transparent)}
.btn-give:hover,.wp-block-button.btn-give>.wp-block-button__link:hover{transform:translateY(-2px);
  box-shadow:0 16px 34px -10px color-mix(in srgb,var(--accent) 85%,transparent)}
.btn-ghost,.wp-block-button.btn-ghost>.wp-block-button__link,.wp-block-button.is-style-outline>.wp-block-button__link{
  background:transparent;color:var(--text);border:1px solid var(--line);box-shadow:none}
.btn-ghost:hover,.wp-block-button.btn-ghost>.wp-block-button__link:hover,.wp-block-button.is-style-outline>.wp-block-button__link:hover{
  border-color:var(--accent);transform:translateY(-2px)}
/* Ghost buttons over scrimmed photography stay light regardless of scheme. */
.hero .btn-ghost,.hero .wp-block-button.btn-ghost>.wp-block-button__link,
.page-hero .btn-ghost,.page-hero .wp-block-button.btn-ghost>.wp-block-button__link,
.band .btn-ghost,.band .wp-block-button.btn-ghost>.wp-block-button__link{
  color:#fff;border-color:rgba(255,255,255,.55)}
.wp-block-button__link{font-family:var(--font-display);font-weight:700;text-decoration:none;
  transition:transform var(--t-base) var(--ease),box-shadow var(--t-base) var(--ease),
    border-color var(--t-base) var(--ease),background var(--t-base) var(--ease)}
.wp-block-button__link:hover{transform:translateY(-2px)}
/* Press: the surface takes the weight of the click. */
.btn:active,.wp-block-button__link:active,.icon-btn:active,.tier:active,.mt:active,
.yn button:active,.rescard:active,.plist a:active,.foot-social a:active,.wp-block-search__button:active{
  transform:translateY(0) scale(.985);transition-duration:var(--t-press)}
.card:active,.step:active,.pcard:active,.team-card:active{transition-duration:var(--t-press)}

.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;padding-bottom:7vh;isolation:isolate;overflow:hidden}
.hero .bg{position:absolute;inset:0;z-index:-2}
.hero .bg img,.hero .wp-block-cover__image-background{transform:scale(1.12);animation:kb 22s var(--ease-soft) forwards}
.hero .bg img{width:100%;height:100%;object-fit:cover}
@keyframes kb{to{transform:scale(1)}}
.hero .scrim{position:absolute;inset:0;z-index:-1;background:var(--hero-scrim)}
.hero .glow{position:absolute;z-index:-1;width:60vw;height:60vw;right:-14vw;top:-18vw;border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--accent-2) 30%,transparent),transparent 62%);filter:blur(30px)}
#embers{position:absolute;inset:0;z-index:-1;pointer-events:none}
.chip,.hero .chip{display:inline-flex;align-items:center;gap:9px;background:var(--glass);border:1px solid var(--line);
  padding:8px 15px;border-radius:100px;font-size:.82rem;font-weight:600;backdrop-filter:blur(8px);color:var(--text)}
.hero .chip{color:#fff;border-color:rgba(255,255,255,.28)}
.chip i,.chip .dot{width:8px;height:8px;border-radius:50%;background:#39D98A;box-shadow:0 0 0 0 rgba(57,217,138,.7);animation:pulse 2.2s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 9px rgba(57,217,138,0)}100%{box-shadow:0 0 0 0 rgba(57,217,138,0)}}
.hero h1{font-size:var(--wp--preset--font-size--display,clamp(3.2rem,10vw,7.6rem));font-weight:800;color:#fff;margin:20px 0 0;letter-spacing:-.03em}
.hero h1 .amber,.amber{color:var(--accent);display:inline-block}
.hero h1 .word{display:inline-block;opacity:0;transform:translateY(1.1em) rotate(3deg);
  animation:rise .78s var(--ease) forwards}
@keyframes rise{to{opacity:1;transform:none}}
.hero p.sub,.hero .sub{color:#DBE6F3;font-size:clamp(1.05rem,1.6vw,1.32rem);max-width:56ch;
  opacity:0;animation:fadeUp .7s var(--ease-soft) .34s forwards}
.hero .cta{display:flex;gap:14px;flex-wrap:wrap;opacity:0;animation:fadeUp .7s var(--ease-soft) .46s forwards}
.hero .trust{display:flex;gap:14px 24px;flex-wrap:wrap;align-items:center;color:#AEBFD2;font-size:.86rem;
  opacity:0;animation:fadeUp .7s var(--ease-soft) .58s forwards}
/* Core's flow layout margins land between flex children as vertical offsets. */
.hero .trust>*{margin-block:0}
.hero .trust b,.hero .trust strong{color:#fff;font-family:var(--font-display)}
@keyframes fadeUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
.scrolldown{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);color:#CDD9EA;font-size:.7rem;
  letter-spacing:.2em;text-transform:uppercase;opacity:.7;animation:bob 2s ease-in-out infinite}
@keyframes bob{50%{transform:translate(-50%,8px)}}

/* One sequence, evenly spaced: a section resolves in ~1.1s however many
   pieces it has, so no group ever reads as random. */
.reveal{opacity:0;transform:translateY(22px);
  transition:opacity var(--t-reveal) var(--ease-soft),transform var(--t-reveal) var(--ease-soft)}
.reveal.in{opacity:1;transform:none}
.reveal[data-d="1"]{transition-delay:calc(var(--stagger) * 1)}
.reveal[data-d="2"]{transition-delay:calc(var(--stagger) * 2)}
.reveal[data-d="3"]{transition-delay:calc(var(--stagger) * 3)}
.reveal[data-d="4"]{transition-delay:calc(var(--stagger) * 4)}
.reveal[data-d="5"]{transition-delay:calc(var(--stagger) * 5)}
.reveal[data-d="6"]{transition-delay:calc(var(--stagger) * 6)}

.marquee{border-block:1px solid var(--line);background:var(--bg-2);overflow:hidden;padding:16px 0}
.marquee .track{display:flex;gap:44px;width:max-content;animation:scrollx 26s linear infinite;white-space:nowrap;flex-wrap:nowrap}
.marquee span,.marquee p{font-family:var(--font-display);font-weight:700;font-size:1.5rem;color:var(--text);opacity:.5;letter-spacing:-.01em;margin:0}
.marquee span b,.marquee p strong{color:var(--accent);opacity:1}
@keyframes scrollx{to{transform:translateX(-50%)}}

section{position:relative}
.sec{padding-top:var(--sec-y);padding-bottom:var(--sec-y)}
.sec-head{max-width:64ch}
.sec-head h2{font-size:var(--wp--preset--font-size--x-large,clamp(2.1rem,4.6vw,3.5rem));margin:14px 0 0}
.grid2{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.beacon-split{align-items:center}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px;box-shadow:var(--ring)}
.card h3{margin-top:0}
.card:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}
.dd{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:8px}
.dd .card{padding:24px}
.dd .card h4{font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.dd .card ul{list-style:none;margin:14px 0 0;padding:0}
.dd .card li{display:flex;gap:10px;align-items:center;padding:8px 0;font-weight:600;font-size:1.05rem}
.dd .yes li::before{content:"";width:22px;height:22px;border-radius:7px;flex:0 0 auto;
  background:radial-gradient(circle at 30% 30%,#43E08A,#12A866)}
.dd .no li::before{content:"";width:22px;height:22px;border-radius:7px;flex:0 0 auto;
  background:var(--surface-2);border:1px solid var(--line)}
.figure{position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.figure img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--t-scene) var(--ease-soft)}
.figure:hover img{transform:scale(1.06)}
.figure .tag,.figure figcaption{position:absolute;left:16px;bottom:16px;background:var(--glass);backdrop-filter:blur(8px);
  border:1px solid var(--line);border-radius:100px;padding:7px 14px;font-size:.78rem;font-weight:600;margin:0;color:var(--text)}

.stats{background:linear-gradient(180deg,var(--bg),var(--bg-2));border-block:1px solid var(--line)}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.stat{padding:8px 4px}
.stat .n,.stat-n{font-family:var(--font-display);font-weight:800;font-size:clamp(2.6rem,5.2vw,4rem);
  line-height:1;background:linear-gradient(135deg,var(--text),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent;margin:0}
.stat .l,.stat-l{color:var(--muted);margin-top:8px;font-weight:600;font-size:.95rem}

.ic-chip{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));margin:0 0 16px}
.ic-chip img{width:26px;height:26px;border-radius:0}

.steps{counter-reset:s}
.step{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:30px 26px;position:relative;overflow:hidden}
.step::before{counter-increment:s;content:"0" counter(s);position:absolute;top:-10px;right:12px;
  font-family:var(--font-display);font-weight:800;font-size:5.6rem;color:var(--line);opacity:.7}
.step .ic,.step .wp-block-image{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;color:var(--btn-ink);
  background:linear-gradient(135deg,var(--accent),var(--accent-2));margin:0 0 16px}
.step .wp-block-image img{width:26px;height:26px}
.step h3{font-size:1.3rem;margin:0 0 8px;position:relative}
.step p{color:var(--muted);margin:0;position:relative}

.prep{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.pcard{position:relative;border-radius:var(--radius);overflow:hidden;min-height:340px;display:flex;align-items:flex-end;
  border:1px solid var(--line);box-shadow:var(--shadow)}
.pcard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform var(--t-scene) var(--ease-soft);filter:saturate(1.05)}
.pcard::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,rgba(6,14,24,.9))}
.pcard .c{position:relative;padding:26px;z-index:1;color:#fff}
.pcard .c h3{font-size:1.4rem}
.pcard .c p{color:#D6E2F0;margin:8px 0 0;font-size:.98rem}
.pcard:hover img{transform:scale(1.08)}
.pcard .num{position:absolute;top:18px;left:20px;z-index:1;font-family:var(--font-display);font-weight:800;
  color:var(--accent);font-size:1.1rem;letter-spacing:.1em}
.feature-card{border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow);min-height:340px}
.feature-card .wp-block-cover__image-background{transition:transform var(--t-scene) var(--ease-soft)}
.feature-card:hover .wp-block-cover__image-background{transform:scale(1.08)}
.feature-card h3{font-size:1.4rem;margin:0}
.feature-card p{color:#D6E2F0;margin:8px 0 0;font-size:.98rem}
.feature-card .num{font-family:var(--font-display);font-weight:800;color:var(--accent);font-size:1.1rem;letter-spacing:.1em}

.band{position:relative;padding-top:clamp(90px,14vw,180px);padding-bottom:clamp(90px,14vw,180px);overflow:hidden;isolation:isolate}
.band .bg{position:absolute;inset:-10% 0;z-index:-2}
.band .bg img{width:100%;height:120%;object-fit:cover}
.band blockquote{margin:0;max-width:22ch;font-family:var(--font-display);font-weight:700;
  font-size:clamp(2rem,4.4vw,3.4rem);line-height:1.05;color:#fff}
.band .src,.band cite{margin-top:20px;display:block;color:var(--accent);font-weight:700;letter-spacing:.04em;font-style:normal;font-size:1rem}
.band .wp-block-pullquote{border:0;padding:0;text-align:left}
.band .wp-block-pullquote blockquote{max-width:26ch}
.band .wp-block-pullquote p{font-size:inherit;line-height:inherit;margin:0}

.donate{background:radial-gradient(120% 120% at 90% 0%,var(--surface-2),var(--bg))}
.donate .box,.donate-box{background:var(--surface);border:1px solid var(--line);border-radius:calc(var(--radius) + 6px);
  padding:clamp(28px,4vw,48px);box-shadow:var(--shadow)}
.thermo{height:20px;border-radius:100px;background:var(--surface-2);overflow:hidden;position:relative;border:1px solid var(--line);--pct:0%}
.thermo .fill{height:100%!important;width:0;border-radius:100px;background:linear-gradient(90deg,var(--accent),var(--accent-2));
  transition:width 1.6s var(--ease);margin:0}
.thermo.in .fill{width:var(--pct)}
.tiers{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:22px}
.tiers .wp-block-button{margin:0}
.tier,.wp-block-button.tier>.wp-block-button__link{border:1px solid var(--line);background:var(--surface-2);color:var(--text);
  border-radius:var(--radius-sm);padding:16px 10px;text-align:center;width:100%;display:block;
  cursor:pointer;transition:var(--t-base) var(--ease);font-family:var(--font-display);font-weight:700;box-shadow:none}
.tier:hover,.tier.sel,.wp-block-button.tier>.wp-block-button__link:hover,.wp-block-button.tier.sel>.wp-block-button__link{
  border-color:var(--accent);transform:translateY(-3px);background:color-mix(in srgb,var(--accent) 12%,var(--surface))}
.tier .a{font-size:1.5rem}.tier .d{font-size:.74rem;color:var(--muted);font-weight:500;font-family:var(--font-body);margin-top:3px}

.gal{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:200px;gap:14px}
.gal a{position:relative;overflow:hidden;border-radius:var(--radius-sm);border:1px solid var(--line);cursor:zoom-in}
.gal a:nth-child(1){grid-column:span 2;grid-row:span 2}
.gal a:nth-child(6){grid-column:span 2}
.gal img{width:100%;height:100%;object-fit:cover;transition:transform var(--t-scene) var(--ease-soft)}
.gal a:hover img{transform:scale(1.09)}
.wp-block-gallery.beacon-gal{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:200px;gap:14px!important}
.wp-block-gallery.beacon-gal .wp-block-image{position:relative;overflow:hidden;border-radius:var(--radius-sm);
  border:1px solid var(--line);cursor:zoom-in;margin:0;width:auto!important;height:100%}
.wp-block-gallery.beacon-gal .wp-block-image:nth-child(1){grid-column:span 2;grid-row:span 2}
.wp-block-gallery.beacon-gal .wp-block-image:nth-child(6){grid-column:span 2}
.wp-block-gallery.beacon-gal img{width:100%;height:100%;object-fit:cover;transition:transform var(--t-scene) var(--ease-soft)}
.wp-block-gallery.beacon-gal .wp-block-image:hover img{transform:scale(1.09)}

.partners{display:flex;gap:14px;flex-wrap:wrap}
.partners .p{border:1px solid var(--line);background:var(--surface);border-radius:100px;padding:12px 22px;
  font-weight:700;font-family:var(--font-display);color:var(--muted)}

footer.beacon-footer,.beacon-footer{background:var(--bg-2);border-top:1px solid var(--line)}
.beacon-footer h5,.beacon-footer h4{font-family:var(--font-display);font-weight:700;font-size:.82rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted);margin:0 0 16px}
.beacon-footer .wp-block-navigation{font-size:.96rem}
.beacon-footer .wp-block-navigation .wp-block-navigation-item__content{padding:6px 0;opacity:.82;text-decoration:none}
.beacon-footer .wp-block-navigation .wp-block-navigation-item__content:hover{opacity:1;color:var(--accent)}
.fgrid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:40px}
footer h5{font-family:var(--font-display);font-weight:700;font-size:.82rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 16px}
.fgrid a{display:block;color:var(--text);opacity:.82;padding:6px 0;font-size:.96rem;text-decoration:none}
.beacon-menu{list-style:none;margin:0;padding:0}
.beacon-menu li{margin:0}
.fgrid a:hover{opacity:1;color:var(--accent)}
.foot911,.foot-contact{background:var(--accent);color:var(--btn-ink);border-radius:var(--radius);padding:18px 22px;font-weight:700;
  display:flex;gap:12px;align-items:center;font-family:var(--font-display)}
.foot-bottom{border-top:1px solid var(--line);margin-top:50px;padding:22px 0;color:var(--muted);font-size:.84rem;
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}
.foot-bottom p{margin:0}

.nav .links a.has-mega::after{content:none}
.nav .links a.has-mega{display:inline-flex;align-items:center;gap:5px}
.nav .links a.has-mega::before{content:"";order:2;width:7px;height:7px;border-right:2px solid currentColor;
  border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.6;transition:var(--t-base) var(--ease)}
.nav .links a.has-mega[aria-expanded="true"]::before{transform:rotate(225deg) translateY(-2px);opacity:1;border-color:var(--accent)}
.megapanels{position:absolute;top:calc(100% - 6px);left:0;right:0;display:flex;justify-content:center;pointer-events:none}
.mega{position:absolute;top:0;width:min(940px,94vw);background:var(--glass);backdrop-filter:blur(22px) saturate(1.35);
  border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:22px;
  opacity:0;transform:translateY(12px) scale(.99);transition:opacity var(--t-base) var(--ease),transform var(--t-base) var(--ease);
  pointer-events:none;visibility:hidden}
.mega.show{opacity:1;transform:none;pointer-events:auto;visibility:visible}
.mcols{display:grid;gap:18px}
.mcol h6,.mgive h6{margin:0 0 6px;font-family:var(--font-display);font-weight:700;font-size:.72rem;
  letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.mlink{display:block;padding:9px 11px;border-radius:11px;transition:var(--t-fast) var(--ease);border:1px solid transparent;text-decoration:none}
.mlink b{display:block;font-family:var(--font-display);font-weight:700;font-size:.98rem;color:var(--text)}
.mlink span{display:block;font-size:.8rem;color:var(--muted);margin-top:1px}
.mlink:hover{background:var(--surface-2);border-color:var(--line);transform:translateX(3px)}
.mlink.doc b{padding-left:22px;position:relative}
.mlink.doc b::before{content:"";position:absolute;left:0;top:1px;width:13px;height:16px;border:1.5px solid var(--accent);
  border-radius:2px;box-shadow:inset 0 -4px 0 -2px var(--accent)}
.mfeat{position:relative;border-radius:16px;overflow:hidden;min-height:190px;display:flex;align-items:flex-end;
  background-size:cover;background-position:center;color:#fff;isolation:isolate;text-decoration:none}
.mfeat::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(8,15,26,.15),rgba(8,15,26,.9))}
.mfeat .pill{position:absolute;top:12px;left:12px;background:var(--accent);color:var(--btn-ink);font-family:var(--font-display);
  font-weight:700;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;padding:5px 11px;border-radius:100px}
.mfeat-b{padding:16px}
.mfeat-b b{font-family:var(--font-display);font-weight:800;font-size:1.15rem;display:block}
.mfeat-b span{font-size:.85rem;color:#DBE6F3}
.mfeat:hover .mfeat-b b{color:var(--accent);transition:color var(--t-fast) var(--ease)}
.mgive{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px}
.mgive-row{display:flex;justify-content:space-between;font-weight:700;font-family:var(--font-display);font-size:1.05rem}
.mgive-row span:last-child{color:var(--muted)}
.mtiers{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.mt{border:1px solid var(--line);background:var(--surface-2);border-radius:9px;padding:9px 0;text-align:center;
  font-family:var(--font-display);font-weight:700;font-size:.95rem;cursor:pointer;transition:var(--t-fast) var(--ease)}
.mt:hover,.mt.sel{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}
.mobile-menu{display:none;position:fixed;inset:0;z-index:99;background:var(--glass);backdrop-filter:blur(20px);
  flex-direction:column;align-items:center;justify-content:center;gap:8px}
.mobile-menu a{font-family:var(--font-display);font-weight:700;font-size:1.8rem;padding:10px;text-decoration:none}
.mobile-menu .close{position:absolute;top:20px;right:20px}
.mobile-menu.open{display:flex}

.statusbar{position:fixed;top:0;left:0;right:0;z-index:101;height:34px;display:flex;align-items:center;justify-content:center;gap:8px;
  background:var(--bar);color:#fff;font-size:.82rem;font-weight:600;padding:0 16px}
.statusbar.activated{background:var(--alert)}
.statusbar .k{font-family:var(--font-display);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.statusbar.activated .k{color:#fff}
.statusbar p{margin:0}
/* status strip placed as page content (block pattern) flows in-document */
.status-strip{position:static;height:auto;min-height:34px;padding:6px 16px}

.meter{height:16px;border-radius:100px;background:var(--surface-2);border:1px solid var(--line);overflow:hidden;margin-top:20px}
.meter-fill{height:100%;width:0;border-radius:100px;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width var(--t-reveal) var(--ease)}
.meter-label{margin-top:10px;font-weight:600;color:var(--muted)}
.quiz{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:14px}
.q{display:flex;justify-content:space-between;align-items:center;gap:14px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.q:last-of-type{border-bottom:0;padding-bottom:0}
.q span{font-weight:600}
.yn{display:flex;gap:8px;flex:0 0 auto}
.yn button{border:1px solid var(--line);background:var(--surface-2);color:var(--text);border-radius:9px;padding:8px 16px;font-family:var(--font-display);font-weight:700;cursor:pointer;transition:var(--t-fast) var(--ease)}
.yn button:hover{border-color:var(--accent)}.yn button.on{background:var(--accent);color:var(--btn-ink);border-color:var(--accent)}
.slider{position:relative;border-radius:calc(var(--radius) + 4px);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow)}
.slides{display:flex;transition:transform var(--t-reveal) var(--ease)}
.slide{position:relative;min-width:100%;margin:0;min-height:420px;display:flex;align-items:flex-end}
.slide img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.slide::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,15,26,.92),rgba(8,15,26,.35))}
.slide blockquote{position:relative;z-index:1;margin:0;padding:40px;max-width:44ch;color:#fff;font-family:var(--font-display);font-weight:700;font-size:clamp(1.3rem,2.4vw,1.9rem);line-height:1.25}
.slide cite{display:block;margin-top:16px;font-family:var(--font-body);font-style:normal;font-weight:600;font-size:.95rem;color:var(--accent)}
.sdots{position:absolute;bottom:18px;right:24px;display:flex;gap:8px;z-index:2}
.sdots button{width:9px;height:9px;border-radius:50%;border:0;background:rgba(255,255,255,.45);cursor:pointer;transition:var(--t-fast) var(--ease)}
.sdots button.on{background:var(--accent);width:22px;border-radius:100px}
.rail911{position:fixed;right:20px;bottom:20px;z-index:95;display:flex;align-items:center;gap:9px;background:var(--accent);color:var(--btn-ink);
  font-family:var(--font-display);font-weight:800;padding:12px 18px;border-radius:100px;
  box-shadow:0 12px 30px -8px color-mix(in srgb,var(--accent) 70%,transparent);
  transform:translateY(160%);transition:transform var(--t-slow) var(--ease);text-decoration:none}
.rail911.show{transform:none}.rail911:hover{transform:translateY(-3px)}
.lightbox{position:fixed;inset:0;z-index:200;background:rgba(6,12,20,.92);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;padding:30px}
.lightbox.show{display:flex}
.lightbox img{max-width:92vw;max-height:88vh;border-radius:12px;box-shadow:0 30px 80px rgba(0,0,0,.6)}
.lb-close{position:absolute;top:22px;right:26px;width:44px;height:44px;border-radius:50%;border:0;background:var(--surface);color:var(--text);font-size:1.6rem;cursor:pointer;line-height:1}

.u-01{animation-delay:calc(var(--stagger) * .9)}
.u-02{animation-delay:calc(var(--stagger) * 1.9)}
.u-03{animation-delay:calc(var(--stagger) * 2.9)}
.u-04{color:#fff;border-color:rgba(255,255,255,.35)}
.u-05{margin-top:18px}
.u-06{min-height:460px}
.u-07{margin-top:44px}
.u-08{background:var(--bg-2);border-block:1px solid var(--line)}
.u-09{margin-top:16px}
.u-10{margin-top:12px}
.u-11{margin-top:14px}
.u-12{margin-top:4px;display:none}
.u-13{margin-top:36px}
.u-14{margin-top:26px}
.u-15{display:flex;justify-content:space-between;align-items:baseline;font-weight:700}
.u-16{font-family:var(--font-display);font-size:1.4rem}
.u-17{color:var(--accent);font-family:var(--font-display);font-size:1.4rem}
.u-18{color:var(--muted);font-size:.9rem;margin:4px 0 16px}
.u-19{--pct:74%}
.u-20{width:100%;justify-content:center;margin-top:18px;font-size:1.05rem;padding:15px}
.u-21{text-align:center;color:var(--muted);font-size:.8rem;margin-top:12px}
.u-22{margin-top:40px}
.u-23{text-align:center;max-width:820px}
.u-24{font-size:clamp(2.2rem,5vw,3.6rem);margin-top:14px}
.u-25{margin:18px auto 0}
.u-26{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:30px}
.u-27{grid-template-columns:1fr 1fr 1.2fr}
.u-28{grid-template-columns:1.3fr 1fr}
.u-29{--pct:74%;margin:8px 0 14px}
.u-30{width:100%;justify-content:center;margin-top:14px}
.u-31{margin-bottom:14px}
.u-32{color:var(--muted);max-width:34ch}

.page-hero{position:relative;padding-top:150px;padding-bottom:64px;isolation:isolate;overflow:hidden;border-bottom:1px solid var(--line)}
.page-hero .bg{position:absolute;inset:0;z-index:-2}
/* Headings sit on photography in both schemes — the scrim must not depend on the palette. */
.page-hero::before{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(6,14,24,.78),rgba(6,14,24,.46) 55%,rgba(6,14,24,.68))}
.page-hero .bg img{width:100%;height:100%;object-fit:cover}
.page-hero h1{font-size:clamp(2.4rem,6vw,4.2rem);color:#fff;margin:0}
.page-hero p{color:#DBE6F3;max-width:62ch;margin-top:14px;font-size:1.12rem}
.check-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.check-list li{position:relative;padding:13px 14px 13px 44px;background:var(--surface);border:1px solid var(--line);border-radius:11px;font-weight:500}
.check-list li::before{content:"";position:absolute;left:15px;top:15px;width:16px;height:16px;border-radius:5px;background:radial-gradient(circle at 30% 30%,var(--accent),var(--accent-2))}
.rescards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.rescard{display:flex;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px;transition:var(--t-fast) var(--ease)}
.rescard:hover{border-color:var(--accent);transform:translateY(-2px)}
.rescard .ic{width:42px;height:42px;flex:0 0 auto;border-radius:10px;background:var(--surface-2);display:grid;place-items:center;color:var(--accent);font-family:var(--font-display);font-weight:800}
.rescard b{display:block;font-family:var(--font-display)}
.rescard span{font-size:.8rem;color:var(--muted)}
.officers{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.officer{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px}
.officer b{font-family:var(--font-display);font-size:1.05rem}
.officer span{display:block;color:var(--muted);font-size:.85rem;margin-top:2px}
.plist{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.plist a{display:block;background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:16px;font-weight:700;font-family:var(--font-display);text-decoration:none}
.plist a:hover{border-color:var(--accent);transform:translateY(-2px)}
.plist a small{display:block;font-size:.8rem;color:var(--muted);font-weight:400;font-family:var(--font-body);margin-top:3px}
/* Paragraph form of a partner entry (block-editor content): the whole p is the card. */
.plist p{background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:16px;margin:0;
  font-size:.9rem;color:var(--muted);transition:var(--t-fast) var(--ease)}
.plist p:hover{border-color:var(--accent);transform:translateY(-2px)}
.plist p a{display:block;background:none;border:0;padding:0;margin:0 0 3px;font-weight:700;
  font-family:var(--font-display);font-size:1rem;color:var(--text);text-decoration:none}
.rescard{flex-wrap:wrap}
.rescard p{margin:0;flex:1 1 100%}
.rescard p strong{font-family:var(--font-display)}
.steps-num{counter-reset:sn;display:grid;gap:14px}
.stepn{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px 20px 20px 66px}
.stepn::before{counter-increment:sn;content:counter(sn);position:absolute;left:18px;top:18px;width:32px;height:32px;border-radius:9px;background:var(--accent);color:var(--btn-ink);display:grid;place-items:center;font-family:var(--font-display);font-weight:800}

.team-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:0 0 20px;overflow:hidden;text-align:center;transition:var(--t-base) var(--ease)}
.team-card:hover{border-color:var(--accent);transform:translateY(-3px)}
.team-card .wp-block-image{margin:0 0 16px}
.team-card img{width:100%;height:220px;object-fit:cover;display:block}
.team-card h3{font-size:1.1rem;margin:0 8px}
.team-card p{color:var(--muted);font-size:.88rem;margin:4px 12px 0}

.faq-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:0;transition:var(--t-base) var(--ease)}
.faq-item summary{cursor:pointer;padding:18px 20px;font-family:var(--font-display);font-weight:700;font-size:1.05rem;list-style:none;position:relative}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"";position:absolute;right:20px;top:50%;width:9px;height:9px;border-right:2px solid var(--accent);
  border-bottom:2px solid var(--accent);transform:translateY(-70%) rotate(45deg);transition:transform var(--t-base) var(--ease)}
.faq-item[open] summary::after{transform:translateY(-30%) rotate(225deg)}
.faq-item[open]{border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}
.faq-item>:not(summary){padding:0 20px}
.faq-item p{color:var(--muted);margin:0 0 18px}

.bf-wrap{max-width:840px;margin:36px auto;scroll-margin-top:100px}
.bf{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:clamp(20px,3vw,34px);box-shadow:var(--shadow)}
.bf-intro{color:var(--muted);margin:0 0 20px;max-width:60ch}
.bf-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.bf-section{border:0;border-top:1px solid var(--line);margin:0;padding:22px 0 4px}
.bf-section:first-of-type{border-top:0;padding-top:0}
.bf-section legend{font-family:var(--font-display);font-weight:800;font-size:1.15rem;color:var(--ink);padding:0;margin-bottom:4px}
.bf-note{color:var(--muted);font-size:.86rem;margin:0 0 12px}
.bf-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px 16px}
.bf-field{grid-column:span 4;display:flex;flex-direction:column;gap:6px;min-width:0}
.bf-field.w-half{grid-column:span 2}
.bf-field.w-quarter{grid-column:span 1}
.bf-field.w-full{grid-column:span 4}
.bf-label,.bf-check span{font-weight:600;font-size:.9rem;color:var(--ink)}
.bf .req{color:var(--accent-2)}
.bf input,.bf select,.bf textarea{width:100%;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:11px 13px;font:inherit;color:var(--ink);transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
.bf input:focus,.bf select:focus,.bf textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 26%,transparent)}
.bf textarea{resize:vertical;min-height:70px}
.bf-check{flex-direction:row;align-items:flex-start;gap:0}
.bf-check label{display:flex;gap:10px;align-items:flex-start;cursor:pointer;line-height:1.4}
.bf-check input{width:18px;height:18px;flex:0 0 auto;margin-top:1px;accent-color:var(--accent)}
.bf-radios{display:flex;gap:18px;flex-wrap:wrap;padding-top:2px}
.bf-radios label{display:flex;gap:7px;align-items:center;cursor:pointer;font-weight:500}
.bf-radios input{width:17px;height:17px;accent-color:var(--accent)}
.bf-actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}
.bf-actions .btn{cursor:pointer;border:0}
.bf-pdf{color:var(--muted);font-size:.88rem;font-weight:600;text-decoration:underline;text-underline-offset:3px}
.bf-pdf:hover{color:var(--accent)}
.bf-success{background:color-mix(in srgb,var(--accent) 14%,var(--surface));border:1px solid var(--accent);border-radius:14px;padding:22px 24px;line-height:1.6;color:var(--ink)}
.bf-error{background:color-mix(in srgb,var(--accent-2) 12%,var(--surface));border:1px solid var(--accent-2);border-radius:12px;padding:14px 18px;margin-bottom:18px;color:var(--ink);font-weight:600}
.bf-sigfield{gap:8px}
.bf-sigpad{position:relative;border:1.5px dashed var(--line);border-radius:12px;background:#fff;overflow:hidden}
.bf-sigpad.need{border-color:var(--accent-2);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-2) 20%,transparent)}
.bf-sigcanvas{display:block;width:100%;height:180px;touch-action:none;cursor:crosshair}
.bf-sigbar{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border-top:1px solid var(--line);background:var(--surface-2)}
.bf-sighint{font-size:.78rem;color:var(--muted)}
.bf-sigpad.signed .bf-sighint{color:var(--accent)}
.bf-sigclear{background:none;border:1px solid var(--line);border-radius:8px;padding:4px 12px;font:inherit;font-size:.8rem;color:var(--ink);cursor:pointer}
.bf-sigclear:hover{border-color:var(--accent-2);color:var(--accent-2)}
.bf-html{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.bf-legal-h{font-family:var(--font-display);font-weight:800;font-size:1.05rem;margin:0 0 2px;color:var(--ink)}
.bf-legal-sub{color:var(--muted);margin:0 0 8px;font-size:.9rem}
.bf-legal{margin:10px 0 4px;padding-left:20px;display:grid;gap:10px}
.bf-legal li{font-size:.9rem;line-height:1.62;color:var(--ink)}
.bf-legal-note{font-size:.85rem;color:var(--muted);font-style:italic;margin:8px 0 0}

.wp-block-quote{border-left:3px solid var(--accent);padding:6px 0 6px 22px;margin-left:0;font-size:1.12rem}
.wp-block-quote cite{color:var(--muted);font-style:normal;font-weight:600;font-size:.9rem}
.wp-block-pullquote{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:2.2em 0}
.wp-block-pullquote blockquote{font-family:var(--font-display);font-weight:700;letter-spacing:-.01em}
.wp-block-separator{border:0;border-top:1px solid var(--line);opacity:1}
.wp-block-separator.is-style-wide{width:100%}
.wp-block-table table{border-collapse:collapse;width:100%}
.wp-block-table td,.wp-block-table th{border:1px solid var(--line);padding:10px 14px}
.wp-block-table thead th{background:var(--surface);font-family:var(--font-display)}
.wp-block-table.is-style-stripes tbody tr:nth-child(odd){background:var(--surface)}
.wp-block-code,.wp-block-preformatted{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:18px;overflow:auto}
.wp-block-image img{border-radius:var(--radius-sm);height:auto}
.wp-block-image.is-style-rounded img{border-radius:50%}
.wp-block-image figcaption{color:var(--muted);font-size:.85rem;text-align:center}
.wp-block-cover{border-radius:0}
.wp-block-search .wp-block-search__input{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:11px 13px;color:var(--text);font:inherit}
.wp-block-search .wp-block-search__input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 26%,transparent)}
.wp-block-search .wp-block-search__button{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:var(--btn-ink);
  border:0;border-radius:10px;font-family:var(--font-display);font-weight:700;padding:11px 18px;cursor:pointer}
.wp-block-query-pagination a,.wp-block-query-pagination .page-numbers{border:1px solid var(--line);border-radius:9px;padding:8px 14px;
  text-decoration:none;font-weight:600;font-size:.9rem;background:var(--surface)}
.wp-block-query-pagination a:hover{border-color:var(--accent);color:var(--accent)}
.wp-block-query-pagination .current{background:var(--accent);color:var(--btn-ink);border-color:var(--accent)}
.wp-block-post-template .wp-block-post{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:26px;transition:var(--t-base) var(--ease)}
.wp-block-post-template .wp-block-post:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));transform:translateY(-2px)}
.wp-block-post-template .wp-block-post-title{font-size:1.35rem;margin:0}
.wp-block-post-template .wp-block-post-title a{text-decoration:none}
.wp-block-post-template .wp-block-post-title a:hover{color:var(--accent)}
.wp-block-post-template .wp-block-post-excerpt{color:var(--muted)}
.wp-block-post-template .wp-block-post-featured-image img{border-radius:var(--radius-sm)}
.wp-block-post-date,.wp-block-post-terms,.wp-block-post-author-name{color:var(--muted);font-size:.85rem}
.wp-block-post-terms a{color:var(--accent);text-decoration:none;font-weight:600}
.wp-block-comments{margin-top:40px}
.wp-block-comments .comment-body{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:18px 20px}
/* Width must not reach the boxes the browser draws itself. */
.wp-block-post-comments-form input:not([type=submit]):not([type=checkbox]):not([type=radio]),
.wp-block-post-comments-form textarea{
  background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:11px 13px;color:var(--text);font:inherit;width:100%}
.wp-block-post-comments-form input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent);margin-right:8px}
.wp-block-post-comments-form .comment-form-cookies-consent{display:flex;align-items:center;gap:6px}
.wp-block-post-comments-form label{font-weight:600;font-size:.9rem}
.wp-block-comment-author-name a,.wp-block-comment-date a,.wp-block-comment-reply-link a{text-decoration:none}
.wp-block-comment-reply-link a{color:var(--accent);font-weight:600}
.wp-block-post-comments-form input[type=submit]{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:var(--btn-ink);
  border:0;border-radius:10px;font-family:var(--font-display);font-weight:700;padding:12px 22px;cursor:pointer}
.wp-block-details{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm)}
.wp-block-details summary{padding:18px 20px;font-family:var(--font-display);font-weight:700;cursor:pointer}
.wp-block-details>:not(summary){padding:0 20px 4px}

@media (max-width:900px){
  .nav .links{display:none}.hamburger{display:grid}
  .grid2,.stat-grid,.steps,.prep,.gal,.fgrid,.dd,.tiers{grid-template-columns:1fr}
  .stat-grid,.tiers{grid-template-columns:1fr 1fr}
  .gal{grid-auto-rows:160px}.gal a:nth-child(1){grid-column:span 2;grid-row:span 1}
  .wp-block-gallery.beacon-gal{grid-template-columns:1fr 1fr;grid-auto-rows:160px}
  .wp-block-gallery.beacon-gal .wp-block-image:nth-child(1){grid-column:span 2;grid-row:span 1}
  .q{flex-direction:column;align-items:flex-start}.slide blockquote{padding:24px}
}
@media(max-width:640px){.bf-grid{grid-template-columns:repeat(2,1fr)}.bf-field.w-half,.bf-field.w-full{grid-column:span 2}.bf-field.w-quarter{grid-column:span 1}}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
  .hero .word,.hero p.sub,.hero .sub,.hero .cta,.hero .trust{animation:none;opacity:1}
  .hero .bg img,.hero .wp-block-cover__image-background{animation:none;transform:none}
  .marquee .track{animation:none}
  .chip i,.chip .dot,.scrolldown{animation:none}
  .thermo .fill,.meter-fill{transition:none}
  *{scroll-behavior:auto}
}

/* Cascade overrides — must stay after the base rules they refine. */
/* Photo bands: text must survive any photo in either scheme. */
.band::before{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(90deg,rgba(6,14,24,.82) 0%,rgba(6,14,24,.55) 45%,rgba(6,14,24,.18) 100%)}
.band .wrap{position:relative;z-index:1}
/* Readiness meter: stays in the content column; meter appears once the quiz starts. */
.wp-block-beacon-toolkit-readiness-meter{max-width:min(1200px,calc(100% - 48px));margin-left:auto;margin-right:auto}
#readiness .meter,#readiness .meter-label{transition:opacity var(--t-base) var(--ease)}
#readiness:not(.started) .meter{opacity:0;height:0;margin:0;overflow:hidden}
#readiness .meter-label{padding:0 4px}
/* pcards: the figure wrapper must fill the card or the scrim floats on empty surface. */
.pcard figure.wp-block-image{position:absolute;inset:0;margin:0}
.pcard figure.wp-block-image img{position:static;width:100%;height:100%;object-fit:cover}
.pcard .c{min-height:340px;display:flex;flex-direction:column;justify-content:flex-end}
/* Real glyphs instead of blank squares. */
.dd .yes li::before{background:var(--accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230B1A2C' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 12.5l5 5 10-11'/%3E%3C/svg%3E");background-size:13px;background-position:center;background-repeat:no-repeat}
.dd .no li::before{background:color-mix(in srgb,var(--alert,#B4231F) 18%,transparent);border:1px solid color-mix(in srgb,var(--alert,#B4231F) 45%,transparent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D06A66' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E");background-size:11px;background-position:center;background-repeat:no-repeat}
.check-list li::before{background:linear-gradient(135deg,var(--accent),var(--accent-2));background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230B1A2C' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 12.5l5 5 10-11'/%3E%3C/svg%3E"),linear-gradient(135deg,var(--accent),var(--accent-2));background-size:11px,cover;background-position:center;background-repeat:no-repeat}
.mlink.doc b::before{background:
  linear-gradient(var(--accent),var(--accent)) 3px 5px/7px 1.5px no-repeat,
  linear-gradient(var(--accent),var(--accent)) 3px 8px/7px 1.5px no-repeat,
  linear-gradient(var(--accent),var(--accent)) 3px 11px/5px 1.5px no-repeat}
/* Block-editor buttons: chrome belongs on the inner link only, never the wrapper. */
.wp-block-button.btn,.wp-block-button.btn-give,.wp-block-button.btn-ghost{
  background:none!important;border:0!important;padding:0!important;box-shadow:none!important;border-radius:0}
.wp-block-button.btn:hover,.wp-block-button.btn-give:hover,.wp-block-button.btn-ghost:hover{transform:none}
/* Fact pills. */
p.p{display:inline-flex;align-items:center;margin:0 10px 10px 0;padding:10px 18px;border-radius:999px;
  background:var(--surface);border:1px solid var(--line);font-weight:600;font-size:.95rem}
/* Gallery: 3-column grid ends on a clean row (hero tile spans 2×2). */
.gal{grid-template-columns:repeat(3,1fr)}
.gal a:nth-child(6){grid-column:auto}
/* Step watermark numerals: consistent, never colliding with copy. */
.step::before{opacity:.14}
[data-theme="light"] .step::before{opacity:.10}
/* Card rows align to the top regardless of inner tag mix. */
.officers,.rescards,.plist{align-items:start}
.officer>*,.rescard>*,.plist p>*{margin-block-start:0}
.officer p{margin:0}
.officer span{margin-top:4px}
/* Forms in dark: intentional-looking pads, visible native picker icons, clear radio states. */
.bf-sig canvas,.beacon-form canvas{background:#fff;border:1px solid var(--line);border-radius:10px;
  /* The pad is always white, so its ink is set here rather than inherited — in
     dark mode the inherited text colour would draw invisible strokes. */
  color:var(--sig-ink,#17122B)}
.bf-sigwrap{border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--surface)}
[data-theme="dark"] input[type="date"],[data-theme="dark"] input[type="time"]{color-scheme:dark}
.beacon-form input[type="radio"],.beacon-form input[type="checkbox"]{accent-color:var(--accent);width:16px;height:16px;appearance:auto}
.bf-field .bf-label{margin-bottom:6px;display:block}
.beacon-form h3,.bf-sec-title{margin-top:34px;padding-top:22px;border-top:1px solid var(--line)}
/* Tighter rhythm where consecutive sections are one flow. */
.sec-tight{padding-top:clamp(28px,3.5vw,48px)}
@media (max-width:640px){.sec{padding-top:clamp(44px,9vw,64px);padding-bottom:clamp(44px,9vw,64px)}}
/* Mobile menu: the hamburger yields to the close button. */
html.menu-open .hamburger{visibility:hidden}
.mobile-menu .btn-give{margin-top:26px;align-self:flex-start}
/* Mega give panel: card hugs its content. */
.mgive>.btn{margin-bottom:0}
.mgive{padding-bottom:4px}

/* Core flex layouts vertically center children; card rows must top-align. */
.entry-content .wp-block-columns,.wp-block-post-content .wp-block-columns{align-items:stretch}
.rescard{align-items:flex-start}
.is-layout-flex>p.p{align-self:flex-start}
/* Orphan gallery tiles widen to close the row. */
.gal a:last-child:nth-child(3n+1){grid-column:1/-1}
.gal a:last-child:nth-child(3n+2){grid-column:span 2}
/* Mobile menu CTA sits with the centered links, never against the edge. */
.mobile-menu .btn-give{align-self:center;margin:26px auto 0}
/* The footer is its own band, unmistakably distinct from the page body. */
footer:has(.fgrid){
  background:color-mix(in srgb,var(--bg) 55%,#05090F);
  border-top:2px solid var(--accent);
  box-shadow:inset 0 24px 40px -32px rgba(0,0,0,.55)}
[data-theme="light"] footer:has(.fgrid){background:#0F1E33}
[data-theme="light"] footer:has(.fgrid) .fgrid,[data-theme="light"] footer:has(.fgrid) .foot-bottom{
  --text:#F7F5FC;--muted:#A9A2C4;color:var(--text)}
footer:has(.fgrid) .foot-bottom{border-top:1px solid color-mix(in srgb,var(--line) 60%,transparent);margin-top:34px;padding-top:18px}
footer:has(.fgrid){padding-top:clamp(56px,6vw,84px);padding-bottom:34px;
  /* Clearance above the footer. Its own padding only holds the footer's contents
     off its edge; without this the last line of a page sits directly on the
     footer's background and the two read as one block. */
  margin-top:clamp(56px,7vw,110px)}
footer:has(.fgrid) .brand img,.nav .brand img{width:42px;height:42px;border-radius:9px;object-fit:cover}
.foot-credit a{color:inherit;text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent) 55%,transparent)}

/* Core flow-layout margins leak into grid children: item 1 gets margin 0,
   siblings get 24px — the "first card floats" bug. Zero them inside grids. */
.rescards>*,.officers>*,.plist>*,.gal>*,.stat-grid>*{margin-block-start:0}
p.p{margin-block:0 10px;line-height:1.25;align-items:center}
footer .brand{display:inline-flex;align-items:center;gap:12px}
footer .brand span{line-height:1.2}

/* Icon buttons are perfect circles at every size. */
.icon-btn{width:42px;height:42px;min-width:42px;min-height:42px;flex:0 0 auto;border-radius:50%;aspect-ratio:1}
@media (max-width:640px){
  /* Mobile bar: brand row first, controls row beneath. */
  .nav .bar{flex-wrap:wrap;row-gap:10px;padding-top:10px;padding-bottom:10px}
  .nav .brand{flex:1 1 100%;justify-content:flex-start;order:1}
  .nav #themeToggle,.nav .beacon-theme-toggle{order:2;margin-left:0}
  .nav .btn-give{order:3;margin-left:auto}
  .nav .hamburger{order:4}
  .icon-btn{width:40px;height:40px;min-width:40px;min-height:40px}
}

/* Hero background video: image-first — the img paints immediately and stays
   the fallback; the video fades over it only once it can actually play. */
.hero .bg video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity var(--t-reveal) var(--ease-soft)}
.hero .bg video.playing{opacity:1}

/* The statusbar/nav are fixed (out of flow), so core's flow margins offset the
   whole wrapper and every first in-flow child — bare strips at the top edge and
   under the statusbar. Sections space themselves; the wrapper never does. */
.wp-site-blocks>*{margin-block-start:0}


/* Fixed chrome respects the WP admin bar for logged-in users. */
.statusbar{top:var(--wp-admin--admin-bar--height,0px)}
body:has(> .wp-site-blocks .statusbar) .nav,body:has(.statusbar) .nav{top:calc(34px + var(--wp-admin--admin-bar--height,0px))}
body.admin-bar .statusbar{top:32px}
body.admin-bar:has(.statusbar) .nav{top:66px}
@media (max-width:782px){
  body.admin-bar .statusbar{top:46px}
  body.admin-bar:has(.statusbar) .nav{top:80px}
}

/* Social profiles */
.foot-social{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.foot-social a{width:38px;height:38px;padding:0;border-radius:50%;border:1px solid var(--line);
  display:grid;place-items:center;color:var(--muted);opacity:1;transition:var(--t-fast) var(--ease)}
.foot-social a:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}
/* The footer band only re-derives --text/--muted in the light scheme, so --line
   would paint a pale ring on the dark band; derive the ring from the icon color. */
footer:has(.fgrid) .foot-social a{border-color:color-mix(in srgb,var(--muted) 45%,transparent)}
.mobile-menu .foot-social{justify-content:center}

/* Template parts wrap the footer block in a second <footer>; the band chrome
   belongs to the inner one only or every border/padding doubles. */
footer.wp-block-template-part:has(.fgrid),footer:has(> footer .fgrid),footer:has(> footer){
  background:none;border-top:0;padding:0;box-shadow:none}

/* Language switcher */
.lang-switch{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:100px;
  border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.12);flex:0 0 auto}
.lang-switch .lang-pill{font-family:var(--font-display);font-weight:700;font-size:.72rem;letter-spacing:.05em;
  line-height:1;padding:7px 11px;border-radius:100px;color:#fff;opacity:.8;text-decoration:none;transition:var(--t-fast) var(--ease)}
.lang-switch .lang-pill:hover{opacity:1}
.lang-switch .lang-pill.on{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:var(--btn-ink);opacity:1}
.beacon-nav .lang-switch,.nav.scrolled .lang-switch{border-color:var(--line);background:var(--surface)}
.beacon-nav .lang-switch .lang-pill,.nav.scrolled .lang-switch .lang-pill{color:var(--text)}
.beacon-nav .lang-switch .lang-pill.on,.nav.scrolled .lang-switch .lang-pill.on{color:var(--btn-ink)}
/* Mobile menu: the bar hides its pills (the brand row owns that width); the
   overlay carries them, sized down from the oversized menu links. */
.mobile-menu .lang-switch{margin:18px auto 0;border-color:var(--line);background:var(--surface)}
.mobile-menu .lang-switch .lang-pill{font-size:.8rem;padding:9px 15px;color:var(--text)}
.mobile-menu .lang-switch .lang-pill.on{color:var(--btn-ink)}
@media (max-width:640px){.nav .bar .lang-switch{display:none}}
/* Footer bottom line: quiet pills on the dark band. */
.foot-bottom .lang-switch{border-color:color-mix(in srgb,var(--muted) 45%,transparent);background:transparent}
.foot-bottom .lang-switch .lang-pill{color:inherit}
.foot-bottom .lang-switch .lang-pill.on{color:var(--btn-ink)}

/* The lang pills sit on unpredictable photography until the bar frosts. */
.lang-switch{background:rgba(10,20,32,.34);border-color:rgba(255,255,255,.42);backdrop-filter:blur(6px)}
/* Light-on-photo is the nav's default because a hero is normally behind it.
   Templates without one (search, archive, 404, single) get theme colors, or
   the whole bar goes white on white. */
body:not(:has(.hero,.page-hero)) .nav:not(.scrolled) :is(.links a,.brand,.brand small,.icon-btn,.lang-pill){
  color:var(--text)}
body:not(:has(.hero,.page-hero)) .nav:not(.scrolled) .brand small{color:var(--muted)}
body:not(:has(.hero,.page-hero)) .nav:not(.scrolled) :is(.icon-btn,.lang-switch){
  background:var(--surface);border-color:var(--line)}
body:not(:has(.hero,.page-hero)) .nav:not(.scrolled) .lang-pill.on{color:var(--btn-ink)}

/* Ridgeline — the one signature. A band never just starts: the horizon it
   rises from is drawn in the hairline, brightest at the summit. */
.stats::before,.u-08::before,.tpl-main::before,footer:has(.fgrid)::before{
  content:"";position:absolute;left:0;right:0;bottom:100%;height:var(--ridge-h);pointer-events:none;
  background:linear-gradient(90deg,transparent 0,var(--line) 12%,
    color-mix(in srgb,var(--accent) 70%,var(--line)) 50%,var(--line) 88%,transparent 100%);
  clip-path:polygon(0 12px,10% 8px,22% 3px,33% 8px,44% 5px,50% 1px,58% 6px,70% 3px,82% 9px,92% 5px,100% 10px,
    100% 11.6px,92% 6.6px,82% 10.6px,70% 4.6px,58% 7.6px,50% 2.6px,44% 6.6px,33% 9.6px,22% 4.6px,10% 9.6px,0 13.6px);
  opacity:.85}
[data-theme="light"] .stats::before,[data-theme="light"] .u-08::before,
[data-theme="light"] .tpl-main::before{opacity:.7}
footer:has(.fgrid){position:relative}
footer:has(.fgrid)::before{background:linear-gradient(90deg,transparent 0,
  color-mix(in srgb,var(--accent) 55%,transparent) 12%,var(--accent) 50%,
  color-mix(in srgb,var(--accent) 55%,transparent) 88%,transparent 100%);opacity:.9}

/* Media reserves its box before a byte arrives; the tint is what shows while
   it loads and what sits harmlessly behind it afterwards. */
.gal a,.pcard,.figure,.feature-card,.mfeat,.team-card .wp-block-image,.tpl-thumb,
.wp-block-gallery.beacon-gal .wp-block-image,.wp-block-post-featured-image{
  background-image:linear-gradient(135deg,var(--surface-2),var(--surface))}
.figure img,.gal img,.pcard img,.wp-block-gallery.beacon-gal img{object-position:center}
.hero .bg img,.hero .bg video,.page-hero .bg img{object-position:center}
.wp-block-post-featured-image{overflow:hidden;border-radius:var(--radius-sm)}
.wp-block-post-featured-image img{width:100%;object-fit:cover}

/* Post-list / archive / search / 404 chrome, in the same language as the
   marketing pages: a quiet band, then content. */
.tpl-head{position:relative;padding-top:calc(var(--nav-h) + 76px);padding-bottom:clamp(34px,4.4vw,58px);
  background:linear-gradient(180deg,var(--bg-2),var(--bg));border-bottom:1px solid var(--line)}
.tpl-head h1,.tpl-head .wp-block-query-title{font-size:clamp(2.2rem,5vw,3.6rem);margin:10px 0 0;max-width:20ch}
.tpl-head p{max-width:60ch}
.tpl-head .wp-block-search{max-width:520px;margin-top:22px}
.tpl-head .wp-block-search__inside-wrapper{gap:8px}
.tpl-main{position:relative;padding-top:clamp(44px,5vw,72px);padding-bottom:var(--sec-y)}
.tpl-grid.wp-block-post-template{gap:22px;margin:0}
/* A single result should read as the point of the page, not as a gap. */
.tpl-grid:has(>:only-child){grid-template-columns:minmax(0,620px)}
.tpl-grid .wp-block-post{display:flex;flex-direction:column;padding:0;overflow:hidden}
.tpl-grid .wp-block-post>*{margin:0}
.tpl-grid .wp-block-post-featured-image{border-radius:0;margin:0}
.tpl-grid .wp-block-post-featured-image img{border-radius:0}
.tpl-grid :is(.wp-block-post-title,.tpl-meta,.wp-block-post-excerpt){padding-inline:22px}
.tpl-grid .wp-block-post-title{padding-top:22px;font-size:1.25rem}
.tpl-grid .tpl-meta{padding-top:8px}
.tpl-grid .wp-block-post-excerpt{padding-top:12px;padding-bottom:24px}
.tpl-grid .wp-block-post-excerpt__excerpt{color:var(--muted);font-size:.95rem}
.tpl-grid .wp-block-post-excerpt__more-link{display:inline-block;margin-top:10px;font-weight:700;
  font-family:var(--font-display);color:var(--accent);text-decoration:none}
.tpl-pager{margin-top:44px;gap:8px}
.tpl-pager .wp-block-query-pagination-numbers{display:flex;gap:8px}
.tpl-meta{color:var(--muted);font-size:.85rem;display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.tpl-meta>*{margin:0}
.tpl-meta .wp-block-post-terms a{color:var(--accent)}
.tpl-prose{max-width:var(--measure)}
.tpl-prose :is(h2,h3,h4){margin-top:1.6em}
.tpl-prose :is(p,li) a{text-decoration:underline;text-decoration-thickness:.06em;text-underline-offset:.18em;
  text-decoration-color:color-mix(in srgb,var(--accent) 65%,transparent)}
.tpl-prose :is(p,li) a:hover{color:var(--accent);text-decoration-color:var(--accent)}
.tpl-nav{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:44px;
  border-top:1px solid var(--line);padding-top:26px}
.tpl-nav .wp-block-post-navigation-link{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-sm);padding:16px 18px;font-family:var(--font-display);font-weight:700;
  transition:border-color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}
.tpl-nav .wp-block-post-navigation-link:hover{border-color:var(--accent);transform:translateY(-2px)}
.tpl-nav .post-navigation-link-next{text-align:right}
.tpl-nav a{text-decoration:none}
/* First and last post: the block still prints its wrapper. */
.tpl-nav .wp-block-post-navigation-link:not(:has(a)){display:none}
.tpl-nav:not(:has(a)){display:none}
.tpl-empty{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:clamp(24px,4vw,44px);text-align:center}
.tpl-empty .wp-block-search{max-width:460px;margin:18px auto 0}
.tpl-routes ul{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.tpl-routes li{margin:0}
.tpl-routes li ul{display:none}
.tpl-routes a{display:block;background:var(--surface);border:1px solid var(--line);border-radius:11px;
  padding:15px 17px;font-family:var(--font-display);font-weight:700;text-decoration:none;
  transition:border-color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}
.tpl-routes a:hover{border-color:var(--accent);transform:translateY(-2px)}

/* Tablet is its own layout problem, not a wide phone: four-up grids halve
   before they stack, and the gallery never keeps three columns on a phone. */
@media (max-width:1100px){
  .stat-grid{grid-template-columns:repeat(2,1fr);gap:30px 24px}
  .prep{grid-template-columns:repeat(2,1fr)}
  .fgrid{grid-template-columns:1.4fr 1fr;gap:34px}
  .grid2{gap:38px}
}
@media (max-width:900px){
  /* The mobile menu owns navigation here; the mega panels are unreachable and
     their off-screen boxes were widening the document on narrow phones. */
  .megapanels{display:none}
  .grid2{grid-template-columns:1fr}
  .gal,.wp-block-gallery.beacon-gal{grid-template-columns:repeat(2,1fr);grid-auto-rows:180px}
  .gal a:nth-child(1),.wp-block-gallery.beacon-gal .wp-block-image:nth-child(1){grid-column:span 2;grid-row:span 1}
  .wp-block-gallery.beacon-gal .wp-block-image:nth-child(6){grid-column:auto}
  /* The full-width opener shifts the pairing, so a lone tail tile is even. */
  .gal a:last-child:nth-child(3n+1),.gal a:last-child:nth-child(3n+2){grid-column:auto}
  .gal a:last-child:nth-child(2n),
  .wp-block-gallery.beacon-gal .wp-block-image:last-child:nth-child(2n){grid-column:1/-1}
  .tpl-nav{grid-template-columns:1fr}
  .tpl-nav .post-navigation-link-next{text-align:left}
}
@media (max-width:760px){
  .fgrid{grid-template-columns:1fr;gap:28px}
  .prep,.stat-grid{grid-template-columns:1fr}
  .stat-grid{gap:22px}
  .tiers,.mtiers{grid-template-columns:repeat(2,1fr)}
}
/* Below 640 the bar wraps to two rows, so the fixed chrome is ~50px taller. */
@media (max-width:640px){
  .tpl-head{padding-top:calc(var(--nav-h) + 96px)}
}
@media (max-width:560px){
  /* Below this a long label is wider than the column, and nowrap would push
     the whole document sideways. */
  .btn,.wp-block-button__link{white-space:normal;max-width:100%}
  .gal,.wp-block-gallery.beacon-gal{grid-auto-rows:150px}
  /* Long unbroken words (place names, URLs) must not push a card open. */
  .card,.step,.rescard,.plist a,.tier,.mlink,.check-list li,.officer{hyphens:auto}
}

@media (prefers-reduced-motion:reduce){
  /* Belt and braces: anything added later is covered by default. */
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important}
  .hero .bg img,.hero .wp-block-cover__image-background{transform:none!important}
  .marquee .track{transform:none!important}
  .rail911{transform:none}
}

/* The scheme's own :focus rules zero the outline further down the file; the
   keyboard ring must win, so it lands last. */
.bf :is(input,select,textarea):focus-visible,
.wp-block-search .wp-block-search__input:focus-visible,
.wp-block-post-comments-form :is(input,textarea):focus-visible{
  outline:2px solid var(--focus);outline-offset:1px}

@media print{
  /* Paper gets the document, never the interface. */
  .nav,.beacon-nav,.statusbar,.megapanels,.mobile-menu,.rail911,.lightbox,.scrolldown,
  .marquee,#embers,.hero .glow,.foot-social,.lang-switch,.icon-btn,.hamburger,
  .wp-block-search,.wp-block-query-pagination,.wp-block-post-comments-form,.tpl-nav,.sdots{display:none!important}
  body::before{content:none}
  html,body{background:#fff!important;color:#000!important}
  body{font-size:11pt;line-height:1.45}
  :is(h1,h2,h3,h4,h5,h6,p,li,td,th,blockquote,figcaption,.lead,.eyebrow,.sec-head h2){color:#000!important}
  .eyebrow{color:#444!important}
  a{color:#000!important;text-decoration:underline}
  .tpl-prose :is(p,li)>a[href^="http"]::after,.entry-content :is(p,li)>a[href^="http"]::after{
    content:" (" attr(href) ")";font-size:.85em;word-break:break-all}
  .hero,.page-hero,.band,.tpl-head{min-height:0!important;padding:18pt 0!important;background:none!important;border:0}
  .hero .bg,.page-hero .bg,.band .bg,.hero .scrim,.page-hero::before,.band::before{display:none}
  :is(.hero,.page-hero,.band) :is(h1,h2,p,blockquote,cite,.sub,.trust){color:#000!important}
  .sec,.tpl-main{padding:14pt 0!important}
  .card,.step,.pcard,.figure,.team-card,.rescard,.officer,.faq-item,.stat,.bf,.quiz,
  .wp-block-post-template .wp-block-post,.tpl-empty{
    break-inside:avoid;page-break-inside:avoid;box-shadow:none!important;background:none!important;
    border:1px solid #bbb!important;color:#000!important}
  :is(h1,h2,h3){break-after:avoid;page-break-after:avoid}
  img{max-width:100%!important;break-inside:avoid}
  .stat .n,.stat-n{-webkit-text-fill-color:#000;color:#000!important;background:none!important}
  .stats::before,.u-08::before,.tpl-main::before,footer:has(.fgrid)::before{display:none}
  footer:has(.fgrid){background:none!important;border-top:1px solid #bbb!important;box-shadow:none!important}
  /* The footer band carries its own text colors; paper overrides all of them. */
  footer,footer *{color:#000!important}
  @page{margin:16mm}
}

/* Touch ergonomics — WCAG 2.5.8: standalone controls need a real target.
   Inline prose links are exempt, so only discrete controls are enlarged. */
.bf-sigclear{min-height:38px;padding:8px 16px}
.bf-pdf{display:inline-flex;align-items:center;min-height:38px;padding:8px 2px}
.lang-pill{min-height:32px;display:inline-flex;align-items:center}
@media (pointer:coarse){
  .lang-pill{min-height:40px;padding-inline:14px}
  .bf-sigclear,.bf-pdf{min-height:44px}
  .mtiers .mt,.tiers .tier{min-height:44px}
  .mobile-menu a{min-height:44px;display:flex;align-items:center}
  .gal a{min-height:44px}
}

/* Open mobile menu owns the screen: the bar's controls would otherwise float
   over the panel (the menu carries its own donate CTA and switcher). */
html.menu-open .nav .btn-give,
html.menu-open .nav #themeToggle,
html.menu-open .nav .beacon-theme-toggle,
html.menu-open .nav .lang-switch{visibility:hidden}
html.menu-open .mobile-menu{padding-top:96px}

/* ============================================================================
   Accessibility — theme-owned rules.
   The stylesheet above already answers prefers-reduced-motion; this block only
   routes the toolkit's visitor preference through the SAME selectors, so the
   two paths can never drift. Nothing here re-states that media query.
   ========================================================================= */
html[data-a11y-motion="reduce"]{scroll-behavior:auto;
  --t-press:0s;--t-fast:0s;--t-base:0s;--t-slow:0s;--t-reveal:0s;--t-scene:0s;--stagger:0s}
html[data-a11y-motion="reduce"] .reveal{opacity:1;transform:none;transition:none}
html[data-a11y-motion="reduce"] :is(.hero .word,.hero p.sub,.hero .sub,.hero .cta,.hero .trust){animation:none;opacity:1}
html[data-a11y-motion="reduce"] :is(.hero .bg img,.hero .wp-block-cover__image-background){animation:none;transform:none}
html[data-a11y-motion="reduce"] .marquee .track{animation:none}
html[data-a11y-motion="reduce"] :is(.chip i,.chip .dot,.scrolldown){animation:none}
html[data-a11y-motion="reduce"] :is(.thermo .fill,.meter-fill){transition:none}
html[data-a11y-motion="reduce"] *{scroll-behavior:auto}

/* Light-scheme contrast: the amber accent reads ~2:1 on paper, so label and
   marquee text derive a darkened accent instead of using it raw. */
html[data-theme="light"]{--accent-text:#4A2FA8}
html[data-theme="light"] .eyebrow{color:var(--accent-text)}
html[data-theme="light"] .marquee{color:color-mix(in srgb,var(--text) 82%,transparent)}
html[data-theme="light"] .marquee b{color:var(--accent-text)}

/* Hero content is bottom-aligned; when it is taller than the viewport the
   overflow rises under the fixed bar unless that height is reserved. */
@media (max-width:900px){
  .hero{padding-top:calc(var(--chrome-h,160px) + 16px)}
  .page-hero{padding-top:calc(var(--chrome-h,160px) + 28px)}
}

/* Social icon geometry */
/* The button is a circle, so both axes must be pinned: a bare width/height loses
   to the a11y target-size rule (min-height only) and to flex stretch when the row
   wraps, and either one turns the circle into an ellipse with the mark off-centre. */
.foot-social{align-items:center}
.foot-social a{inline-size:38px;block-size:38px;aspect-ratio:1;flex:0 0 auto;border-radius:50%;
  display:grid;place-items:center;padding:0;line-height:0}
.foot-social svg{inline-size:18px;block-size:18px;display:block}
/* Target-size mode grows the button on BOTH axes rather than only the height it asks for. */
body.a11y-targets .foot-social a,
body.a11y-targets .mobile-menu .foot-social a{inline-size:44px;block-size:44px;
  min-inline-size:44px;min-block-size:44px;display:grid;place-items:center}
@media (pointer:coarse){
  .mobile-menu .foot-social a{inline-size:44px;block-size:44px;display:grid;place-items:center}
}
/* Footer band re-declares the icon border, so the hover accent needs to win there too. */
footer:has(.fgrid) .foot-social a:hover,footer:has(.fgrid) .foot-social a:focus-visible{border-color:var(--accent);color:var(--accent)}

/* Core's buttons layout sets display:flex on the same element, so the tier
   grid needs to win or every tier claims a full row. */
.wp-block-buttons.tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:12px}
.wp-block-buttons.tiers .wp-block-button{width:auto;margin:0}
.wp-block-buttons.tiers .wp-block-button__link{width:100%;justify-content:center}
