:root{--ink:#1E2614;--green:#344E41;--green-deep:#2B4136;--gold:#C4A56A;--gold-hover:#B8975A;--gold-deep:#7E6434;--gold-soft:#D9C08D;--parchment:#F6F1E7;--sage:#E8EDE5;--serif:'Cormorant Garamond',Georgia,serif;--sans:'Source Sans 3','Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;--measure:34em;--pad-x:clamp(20px,4vw,56px);--grain:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%22160%22 height=%22160%22%3E%3Cfilter id=%22n%22%3E%3CfeTurbulence type=%22fractalNoise%22 baseFrequency=%220.9%22 numOctaves=%222%22/%3E%3C/filter%3E%3Crect width=%22160%22 height=%22160%22 filter=%22url(%23n)%22 opacity=%220.03%22/%3E%3C/svg%3E");}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--parchment);color:var(--ink);font-family:var(--sans);font-size:16.5px;line-height:1.7;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:var(--green)}
a:hover{color:var(--gold-deep)}
::selection{background:var(--gold);color:var(--ink)}
:focus-visible{outline:2px solid var(--gold-deep);outline-offset:3px}
.bg-green :focus-visible,.bg-ink :focus-visible{outline-color:var(--gold-soft)}
.skip{position:absolute;left:-999px;top:0;z-index:200;background:var(--gold);color:var(--ink);padding:10px 18px;font-weight:700;text-decoration:none}
.skip:focus{left:12px;top:12px}
.wrap{max-width:1320px;margin:0 auto;padding-left:var(--pad-x);padding-right:var(--pad-x)}
.grain{background-image:var(--grain)}
.narrow{max-width:760px}
/* type */
.eyebrow{margin:0;font-size:11px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-deep)}
.bg-green .eyebrow,.bg-ink .eyebrow{color:var(--gold-soft)}
.display{font-family:var(--serif);font-weight:600;margin:0;color:var(--ink);line-height:1.06}
h1.display{font-size:clamp(3rem,6vw,4.6rem);line-height:1.02;letter-spacing:-.01em}
h2.display{font-size:clamp(2.4rem,4.6vw,3.6rem)}
h3.display{font-size:clamp(1.7rem,2.6vw,2.1rem);line-height:1.12}
.bg-green .display,.bg-ink .display{color:var(--parchment)}
.lede{margin:22px 0 0;max-width:var(--measure);font-size:19px;line-height:1.6;color:rgba(30,38,20,.84)}
.bg-green .lede,.bg-ink .lede{color:rgba(246,241,231,.9)}
.body-copy{margin:18px 0 0;max-width:var(--measure);font-size:16.5px;line-height:1.7;color:rgba(30,38,20,.82)}
.bg-green .body-copy,.bg-ink .body-copy{color:rgba(246,241,231,.9)}
.section{padding:clamp(72px,10vw,140px) 0}
.section--tight{padding:clamp(56px,7vw,96px) 0}
.bg-parch{background:var(--parchment)}
.bg-sage{background:var(--sage)}
.bg-green{background:var(--green)}
.bg-ink{background:var(--ink)}
.pull{font-family:var(--serif);font-style:italic;font-weight:600;font-size:clamp(1.5rem,3vw,2.1rem);line-height:1.3;color:var(--green);max-width:20ch;margin:0}
.bg-green .pull{color:var(--gold)}
.kicker-rule{width:56px;height:1px;background:var(--gold);border:none;margin:28px 0}
/* buttons */
.cta{display:inline-block;font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;transition:background .2s ease,color .2s ease;cursor:pointer;font-family:var(--sans)}
.cta-gold{background:var(--gold);color:var(--ink);padding:16px 30px;border:none}
.cta-gold:hover{background:var(--gold-hover);color:var(--ink)}
.cta-ghost{border:1px solid rgba(196,165,106,.75);color:var(--parchment);padding:15px 29px;background:transparent}
.cta-ghost:hover{background:rgba(196,165,106,.14);color:var(--parchment)}
.cta-line{border:1px solid var(--green);color:var(--green);padding:15px 29px;background:transparent} /* S222: retired from primary positions — one CTA weight site-wide (cta-gold) */
.cta-line:hover{background:var(--green);color:var(--parchment)}
.text-cta{display:inline-block;font-size:12.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--green);text-decoration:underline;text-decoration-color:rgba(196,165,106,.9);text-underline-offset:6px}
.text-cta:hover{color:var(--gold-deep)}
.bg-green .text-cta,.bg-ink .text-cta{color:var(--gold-soft);text-decoration-color:rgba(196,165,106,.6)}
.bg-green .text-cta:hover,.bg-ink .text-cta:hover{color:var(--parchment)}
.ctas{display:flex;flex-wrap:wrap;gap:16px;margin-top:38px}
/* header */
.site-header{position:sticky;top:0;z-index:120;background:var(--green);border-bottom:1px solid rgba(196,165,106,.4)}
.site-header .bar{min-height:74px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.brand{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--gold);padding:10px 0}
.brand:hover{color:var(--gold)}
.brand-mark{height:clamp(46px,5vw,56px);width:auto;display:block;flex:0 0 auto}
.brand .word{font-family:var(--serif);font-weight:600;font-size:clamp(19px,2.1vw,24px);letter-spacing:.16em;text-transform:uppercase;color:var(--gold);white-space:nowrap}
/* S229 — gold on green is 3.87:1: AA-large (3.0) at the 24px ceiling, but BELOW
   24px it is normal text needing 4.5 and it failed on every page at 390px. The
   hex table could never see this: it has no notion of viewport. Weight 700 at
   >=18.66px makes it AA-large by the spec, so the desktop lockup is untouched. */
@media (max-width:1142px){.brand .word{font-weight:700}}
.site-nav{display:flex;align-items:center;gap:clamp(14px,2.2vw,30px)}
.nav-link{font-size:14px;font-weight:600;color:var(--parchment);text-decoration:none;letter-spacing:.04em}
.nav-link:hover{color:var(--gold-soft)}
.nav-group{position:relative}
.nav-group>.nav-link{display:inline-flex;align-items:center;gap:6px;background:none;border:none;cursor:pointer;font-family:var(--sans);padding:0}
.nav-group>.nav-link::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.8}
.nav-menu{position:absolute;top:calc(100% + 14px);left:-18px;min-width:230px;background:var(--parchment);border:1px solid var(--gold);padding:10px;display:grid;gap:2px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .18s,transform .18s;box-shadow:0 18px 40px rgba(30,38,20,.22);z-index:130}
/* S234 — invisible hover bridge across the 14px trigger->menu gap (transparent, no paint; inherits .nav-menu visibility so it is inert while the menu is closed) */
.nav-menu::before{content:"";position:absolute;left:0;right:0;top:-14px;height:14px}
.nav-group:hover .nav-menu,.nav-group:focus-within .nav-menu{opacity:1;visibility:visible;transform:none}
.nav-menu a{display:block;padding:11px 14px;text-decoration:none;color:var(--ink)}
.nav-menu a:hover{background:var(--sage);color:var(--gold-deep)}
.nav-menu a .m-sub{display:block;font-size:12.5px;color:rgba(30,38,20,.6);font-weight:400}
.nav-menu a .m-title{font-weight:700;font-size:14px}
.nav-support{background:var(--gold);color:var(--ink);font-size:12.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:11px 22px;text-decoration:none}
.nav-support:hover{background:var(--gold-hover);color:var(--ink)}
.menu-toggle{display:none;background:none;border:none;color:var(--parchment);font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;padding:10px 0}
/* mobile menu */
.mobile-menu{position:fixed;inset:0;z-index:115;background:var(--green);padding:96px var(--pad-x) 40px;display:flex;flex-direction:column;gap:26px;transform:translateY(-100%);transition:transform .3s ease;overflow-y:auto}
body.menu-open .mobile-menu{transform:none}
.mobile-menu a{color:var(--parchment);text-decoration:none;font-family:var(--serif);font-size:30px;font-weight:600}
.mobile-menu a:hover{color:var(--gold)}
.mm-contact{margin-top:auto;padding-top:24px;border-top:1px solid rgba(196,165,106,.35);display:flex;flex-direction:column;gap:8px}
.mm-contact a{font-family:var(--sans);font-size:16px;color:var(--gold-soft)}
/* hero (arch) */
.hero{background:var(--green);position:relative}
.hero-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(16px,2vw,28px);padding-top:clamp(60px,8vw,116px);padding-bottom:clamp(72px,9vw,128px)}
.hero-text{grid-column:2/9;align-self:center;min-width:0}
.hero h1{margin:24px 0 0;font-family:var(--serif);font-weight:600;font-size:clamp(3rem,6.2vw,5rem);line-height:1.04;letter-spacing:-.01em;color:var(--parchment);text-wrap:balance}
.hero h1 em{font-style:italic;font-weight:600;color:var(--gold)}
.nb{white-space:nowrap}
.hero-sub{margin:26px 0 0;max-width:var(--measure);font-size:18px;line-height:1.65;color:rgba(246,241,231,.9)}
.arch-cell{grid-column:9/13;position:relative;min-height:520px}
.arch-frame{position:absolute;top:0;left:0;right:0;bottom:calc(-56px - clamp(72px,9vw,128px));border:1px solid var(--gold);border-radius:999px 999px 0 0;padding:8px}
.arch-media{position:relative;width:100%;height:100%;border-radius:992px 992px 0 0;overflow:hidden;isolation:isolate;background:var(--green-deep)}
.arch-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.05)}
/* S222 variant B — the lightened arch: treatment baked at the asset layer, no duotone burial */
.arch-media--lit img{filter:none;object-position:50% 18%}
.duo-a{position:absolute;inset:0;background:var(--green);mix-blend-mode:screen;pointer-events:none}
.duo-b{position:absolute;inset:0;background:var(--parchment);mix-blend-mode:multiply;pointer-events:none}
/* S222 variant A — full-bleed right photo panel, soft melt into the green field */
.hero--panel .hero-text{grid-column:2/8}
.hero-photo{position:absolute;top:0;right:0;bottom:0;width:min(45%,720px);overflow:hidden}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:48% 62%}
.hero-melt{position:absolute;inset:0;background:linear-gradient(90deg,var(--green) 0%,rgba(52,78,65,.62) 16%,rgba(52,78,65,0) 54%),linear-gradient(0deg,rgba(52,78,65,.4) 0%,rgba(52,78,65,0) 26%),linear-gradient(180deg,rgba(52,78,65,.32) 0%,rgba(52,78,65,0) 22%)}
/* duotone band (stage/section headers — rider d, CSS duotone over R2 assets)
   S229: RETIRED from every masthead — this is the treatment that put text on a
   raw photograph (gold eyebrow measured 1.05:1). Retained unused on the S223
   variant-A precedent, so the old treatment is one call away if ever wanted. */
.duoband{position:relative;isolation:isolate;background:var(--green);overflow:hidden}
.duoband>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.02)}
.duoband .duo-a{background:var(--green)}
.duoband .duo-b{background:var(--parchment)}
.duoband::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(43,65,54,.5),rgba(43,65,54,.82));z-index:1}
.duoband .wrap{position:relative;z-index:2}
/* S231 — the pathway masthead ON THE LANDING'S APPROVED HERO GEOMETRY (the
   CEO's /launch verdict: text lost in an empty green field, photo floating
   mid-page). The ruling: /plan /launch /grow /about adopt the landing's grid
   split, column measures, and image treatment class (the S222/S223 hero
   system) — the plate anchored through the arch frame to the band edge, never
   floating. These pages reuse .hero/.hero-grid/.hero-text/.arch-cell
   verbatim; .hero--stage carries ONLY the masthead's tighter vertical rhythm.
   (The replaced S229 .stage-* system also died of a collision: its 12-col
   .stage-grid was overridden by the home stage-preview's later .stage-grid at
   equal specificity, so its split never rendered.)
   Read order: 1 stage title · 2 tagline · 3 rail, all in the text column on
   flat --green only (the S229 contrast law). */
.hero--stage .hero-grid{padding-top:clamp(44px,5.5vw,76px);padding-bottom:clamp(44px,5.5vw,76px)}
.hero--stage .arch-cell{min-height:clamp(340px,36vw,470px)}
.hero--stage .arch-frame{bottom:calc(-56px - clamp(44px,5.5vw,76px))}
.stage-mark{display:flex;align-items:baseline;gap:20px}
.stage-no{font-family:var(--serif);font-weight:600;font-size:clamp(2.4rem,4.4vw,3.2rem);color:var(--gold);line-height:1}
.hero--stage h1{margin:0}
/* S229 rail — a real progress device, not decoration: the stage sequence is
   genuine, so it is marked by COLOUR FAMILY + a gold rule on the active step.
   Hierarchy is carried by weight, never by opacity: the old .6/.4 translucency
   is exactly what measured 2.3-2.8:1 over the photo and failed AA. */
.pathway-rail{display:flex;gap:0;margin:clamp(36px,4.5vw,56px) 0 0;flex-wrap:wrap;border-top:1px solid rgba(196,165,106,.35);padding-top:6px}
.pathway-rail a{position:relative;display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgba(246,241,231,.82);text-decoration:none;padding:16px 26px 10px 0}
.pathway-rail a .r-no{font-weight:600;color:rgba(246,241,231,.82)}
.pathway-rail a.on,.pathway-rail a.on .r-no{color:var(--gold-soft)}
.pathway-rail a.on::before{content:"";position:absolute;top:-1px;left:0;right:26px;height:2px;background:var(--gold)}
.pathway-rail a:hover{color:var(--parchment)}
.pathway-rail a:not(:last-child)::after{content:"";width:26px;height:1px;background:rgba(196,165,106,.4);margin-left:6px}
/* router / cards */
.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr));gap:16px;margin-top:clamp(36px,4.5vw,52px)}
.router-card{display:flex;flex-direction:column;gap:8px;background:var(--parchment);border:1px solid var(--ink);padding:28px 24px 24px;text-decoration:none;transition:background-color .2s}
.bg-parch .router-card{background:var(--sage)}
.router-card:hover{background-image:radial-gradient(circle 34px at 50% 0,rgba(0,0,0,0) 31.5px,var(--gold) 32px,var(--gold) 33px,rgba(0,0,0,0) 33.5px)}
.router-card h3{margin:0;font-size:17px;font-weight:700;line-height:1.35;color:var(--ink);font-family:var(--sans)}
.router-card p{margin:0;font-size:16px;line-height:1.55;color:rgba(30,38,20,.75)}
.card-cta{margin:auto 0 0;padding-top:18px;font-size:12.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-deep)}
/* stage preview (home) */
.stage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(270px,100%),1fr));gap:clamp(32px,4vw,56px);margin-top:clamp(44px,6vw,72px)}
.stagecard{position:relative;display:flex;flex-direction:column;border-top:1px solid var(--gold);padding-top:60px;text-decoration:none}
.stagecard .ghost{position:absolute;top:-28px;left:-8px;font-family:var(--serif);font-weight:600;font-size:150px;line-height:1;color:rgba(196,165,106,.12);pointer-events:none;user-select:none}
.stagecard h3{position:relative;margin:0;font-family:var(--serif);font-weight:600;font-size:40px;line-height:1.05;color:var(--ink)}
.stagecard p{position:relative;margin:12px 0 0;font-size:16px;line-height:1.6;color:rgba(30,38,20,.78)}
.stagecard .card-cta{position:relative;margin:20px 0 0;padding-top:0}
/* checklist / feature lists */
.checklist{list-style:none;margin:28px 0 0;padding:0;display:grid;gap:2px}
.checklist li{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start;padding:20px 0;border-top:1px solid rgba(30,38,20,.12)}
.checklist li .n{font-family:var(--serif);font-weight:600;font-size:22px;color:var(--gold-deep);line-height:1.2}
.checklist li h4{margin:0;font-size:17px;font-weight:700}
.checklist li p{margin:6px 0 0;font-size:16px;color:rgba(30,38,20,.75)}
.split{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:clamp(20px,3vw,40px);margin-top:36px}
.panel{border:1px solid rgba(30,38,20,.18);padding:30px 28px;background:var(--parchment)}
.bg-sage .panel{background:var(--parchment)}
.panel h3{margin:0 0 6px;font-family:var(--serif);font-weight:600;font-size:26px}
.panel ul{margin:14px 0 0;padding-left:20px}
.panel ul li{margin:7px 0;color:rgba(30,38,20,.8)}
/* S229: ink was .62 -> 4.21:1 measured (4.30 flat; the grain overlay takes the
   rest). GOLD_PAIRS never covered it — that table is gold-family only, so
   translucent ink had never been checked at all. .70 -> 5.50:1. */
.disclaimer{margin:30px 0 0;font-size:14px;line-height:1.6;color:rgba(30,38,20,.7);border-left:1px solid var(--gold);padding-left:18px;max-width:60ch}
/* filter chips + resource cards */
.chips{display:flex;flex-wrap:wrap;gap:10px;margin:30px 0 0}
.chip{font-size:12.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:9px 16px;border:1px solid rgba(30,38,20,.28);background:transparent;color:rgba(30,38,20,.72);cursor:pointer;font-family:var(--sans);transition:all .18s}
.chip:hover{border-color:var(--gold-deep);color:var(--gold-deep)}
.chip[aria-pressed="true"]{background:var(--green);border-color:var(--green);color:var(--parchment)}
.res-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:16px;margin-top:28px}
.res-card{display:flex;flex-direction:column;gap:10px;border:1px solid rgba(30,38,20,.18);padding:26px 24px;background:var(--parchment)}
.res-card .r-cat{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-deep)}
.res-card h3{margin:0;font-family:var(--serif);font-weight:600;font-size:23px;line-height:1.1}
.res-card p{margin:0;font-size:15.5px;line-height:1.55;color:rgba(30,38,20,.78);flex:1}
.res-card .r-reach{font-size:12.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--green)}
.res-empty{margin-top:28px;font-size:16px;color:rgba(30,38,20,.7)}
.note-band{margin-top:34px;font-size:14px;color:rgba(30,38,20,.66);border-left:1px solid var(--gold);padding-left:18px;max-width:64ch}
/* form cards */
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:20px;margin-top:clamp(36px,5vw,56px)}
.form-card{display:flex;flex-direction:column;border:1px solid rgba(30,38,20,.2);background:var(--parchment)}
.form-card .fc-head{padding:26px 26px 20px;border-bottom:1px solid rgba(30,38,20,.12)}
.form-card h3{margin:0;font-family:var(--serif);font-weight:600;font-size:26px}
.form-card .fc-head p{margin:8px 0 0;font-size:15.5px;color:rgba(30,38,20,.76)}
.form-card .fc-tags{display:flex;flex-wrap:wrap;gap:8px;padding:18px 26px 0}
.form-card .fc-tag{font-size:12px;font-weight:600;letter-spacing:.06em;color:var(--gold-deep);border:1px solid rgba(196,165,106,.5);padding:5px 11px}
.form-slot{margin:18px 26px;min-height:120px;border:1px dashed rgba(30,38,20,.28);display:flex;flex-direction:column;justify-content:center;gap:8px;padding:22px;background:var(--sage)}
.form-slot .fs-label{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:rgba(30,38,20,.55)}
.form-slot p{margin:0;font-size:14.5px;color:rgba(30,38,20,.7)}
.form-card .fc-foot{margin-top:auto;padding:0 26px 26px}
.forms-note{margin-top:34px;font-size:15px;color:rgba(30,38,20,.72)}
/* proof band (voices on home) */
.proof-rule{position:relative;border-top:1px solid rgba(196,165,106,.85);padding-top:clamp(64px,8vw,110px)}
.proof-arch{position:absolute;top:-22px;left:50%;transform:translateX(-50%);width:44px;height:22px;border:1px solid var(--gold);border-bottom:none;border-radius:999px 999px 0 0;background:var(--sage)}
.proof-well{max-width:var(--measure);margin-left:auto;margin-top:clamp(28px,4vw,44px);border-left:1px solid rgba(196,165,106,.85);padding-left:clamp(20px,3vw,32px)}
.count-h{font-size:clamp(2.4rem,5vw,3.8rem);line-height:1.05;text-wrap:balance;max-width:16ch}
/* honesty */
.honesty-inner{max-width:640px}
.thesis{margin:0;font-family:var(--serif);font-style:italic;font-weight:600;font-size:clamp(1.8rem,3.4vw,2.6rem);line-height:1.25;color:var(--gold);text-wrap:balance}
/* coalition */
.coalition-inner{max-width:900px;margin:0 auto;text-align:center;display:flex;flex-direction:column;align-items:center;gap:24px}
.partners{display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:10px 16px;max-width:800px;margin:0;padding:0;list-style:none}
.partners li{font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:rgba(30,38,20,.66)}
.partners li.dot{color:var(--gold-deep)}
.muted-note{margin:0;font-size:14px;color:rgba(30,38,20,.66)}
/* newsletter / close */
.close-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));gap:clamp(32px,5vw,80px);align-items:center}
/* S222 — warmth figures + band (licensed, provenanced: assets_src/provenance_s222.json) */
.warm-figure{position:relative;overflow:hidden;border:1px solid var(--gold);margin:0}
.warm-figure img{display:block;width:100%;height:100%;object-fit:cover}
.warm-arch{border-radius:900px 900px 0 0}
.proof-duo{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(28px,4vw,56px);align-items:start;margin-top:clamp(28px,4vw,44px)}
.proof-duo .proof-well{margin-top:0}
.thanks-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:clamp(32px,5vw,72px);align-items:end}
.gi-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:clamp(32px,5vw,72px);align-items:center}
.warmth-band{position:relative;height:clamp(220px,30vw,380px);overflow:hidden;background:var(--green)}
.warmth-band img{width:100%;height:100%;object-fit:cover;display:block}
.warmth-band::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(52,78,65,.42),rgba(52,78,65,0) 42%)}
.news-form{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;margin-top:26px}
.news-form input{flex:1;min-width:230px;height:48px;padding:0 2px;border:none;border-bottom:1px solid rgba(196,165,106,.75);background:transparent;color:var(--parchment);font-family:var(--sans);font-size:16px;border-radius:0}
.news-form input::placeholder{color:rgba(246,241,231,.75)}
.confirm{margin:20px 0 0;font-family:var(--serif);font-style:italic;font-weight:600;font-size:24px;color:var(--parchment)}
.support-line{margin:24px 0 0;font-size:16px;color:rgba(246,241,231,.9)}
.support-link{font-weight:700;color:var(--gold-soft);text-decoration:underline;text-decoration-color:rgba(196,165,106,.75);text-underline-offset:5px}
.support-link:hover{color:var(--parchment)}
/* network map */
.netmap{margin-top:36px;width:100%;overflow-x:auto}
.netmap svg{display:block;width:100%;min-width:640px;height:auto}
/* about model diagram */
.model-flow{display:flex;flex-wrap:wrap;align-items:stretch;gap:14px;margin-top:32px}
.model-step{flex:1;min-width:200px;border:1px solid rgba(30,38,20,.2);padding:24px 22px;background:var(--parchment);position:relative}
.model-step .ms-no{font-family:var(--serif);font-weight:600;font-size:20px;color:var(--gold-deep)}
.model-step h4{margin:8px 0 6px;font-size:18px}
.model-step p{margin:0;font-size:15px;color:rgba(30,38,20,.76)}
/* support give */
.give-card{max-width:640px;margin:34px 0 0;border:1px solid var(--gold);padding:8px}
.give-card dbox-widget{display:block;width:100%}
.give-secure{margin:16px 0 0;font-size:14px;color:rgba(30,38,20,.66)}
.gift-points{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:24px;margin-top:44px}
.gift-point{display:flex;gap:14px}
.gift-point .g-no{font-family:var(--serif);font-weight:600;font-size:26px;color:var(--gold-deep);line-height:1}
/* S229: .62 put the third step's body copy at 2.83:1 and its numeral at 2.45:1 —
   the same anti-pattern as the old pathway rail, using opacity to encode state
   at the cost of legibility. .88 keeps the recession the design intended while
   every string clears AA with margin (p 5.0, h4 9.8, numeral 3.9). The cue is
   necessarily subtle: opacity is a weak state encoder, and a roadmap step dimmed
   to illegibility serves nobody. */
.gift-point.future{opacity:.88}
.gift-point h4{margin:0 0 4px;font-size:17px}
.gift-point p{margin:0;font-size:15px;color:rgba(30,38,20,.76)}
/* footer */
.site-footer{background:var(--ink);color:var(--parchment);border-top:1px solid rgba(196,165,106,.5);padding:clamp(56px,7vw,88px) 0 30px}
.footer-cols{display:flex;flex-wrap:wrap;justify-content:space-between;gap:32px 48px}
.footer-brand{display:flex;flex-direction:column;gap:12px;max-width:320px}
.footer-brand .fb-lock{display:flex;align-items:center;gap:12px}
.footer-brand .brand-mark{height:58px}
.footer-logo{font-family:var(--serif);font-weight:600;font-size:21px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);white-space:nowrap}
.footer-tag{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:rgba(246,241,231,.72)}
.footer-nav{display:flex;flex-wrap:wrap;gap:8px 26px}
.footer-nav a{font-size:14px;color:rgba(246,241,231,.86);text-decoration:none}
.footer-nav a:hover{color:var(--gold-soft)}
.footer-info{display:flex;flex-direction:column;gap:7px;font-size:15px;line-height:1.5}
.footer-info .muted{color:rgba(246,241,231,.82)}
.footer-contact{color:var(--gold-soft);font-weight:600;text-decoration:none;width:fit-content}
.footer-contact:hover{color:var(--gold)}
.footer-base{border-top:1px solid rgba(196,165,106,.35);margin-top:42px;padding-top:20px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;font-size:13px;color:rgba(246,241,231,.65)}
/* inquire modal */
.inquire-modal{position:fixed;inset:0;z-index:200;background:rgba(30,38,20,.6);display:none;align-items:flex-start;justify-content:center;overflow-y:auto;padding:5vh 20px}
body.inquire-open{overflow:hidden}
body.inquire-open .inquire-modal{display:flex}
.inquire-inner{position:relative;background:var(--parchment);max-width:560px;width:100%;padding:clamp(32px,5vw,52px);border:1px solid var(--gold)}
.inquire-close{position:absolute;top:16px;right:18px;background:none;border:none;font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--green);cursor:pointer;padding:8px}
.inquire-close:hover{color:var(--gold-deep)}
.inquire-inner h2{margin:6px 0 0;font-family:var(--serif);font-weight:600;font-size:clamp(2rem,4vw,2.6rem);line-height:1.05}
.inquire-form{margin-top:26px;display:grid;gap:18px}
.inquire-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.inquire-field{display:flex;flex-direction:column;gap:7px}
.inquire-field label{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(30,38,20,.7)}
.inquire-field input,.inquire-field textarea{border:1px solid rgba(30,38,20,.3);background:#fff;padding:12px 14px;font-family:var(--sans);font-size:16px;color:var(--ink);border-radius:0}
.inquire-field input:focus,.inquire-field textarea:focus{outline:2px solid var(--gold-deep);outline-offset:1px;border-color:var(--gold-deep)}
.inquire-honeypot{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.inquire-submit{margin-top:4px;background:var(--gold);color:var(--ink);border:none;padding:15px 30px;font-family:var(--sans);font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
.inquire-submit:hover{background:var(--gold-hover)}
.inquire-submit:disabled{opacity:.6;cursor:default}
.inquire-note{margin:14px 0 0;font-size:14px;color:rgba(30,38,20,.66)}
.inquire-error{margin:12px 0 0;font-size:14px;color:#8a3b2a}
.inquire-success h3{margin:0;font-family:var(--serif);font-weight:600;font-size:2rem}
.inquire-success p{margin:12px 0 0;font-size:17px;color:rgba(30,38,20,.82)}
/* reveal */
[data-reveal]{will-change:opacity,transform}
/* responsive */
@media (max-width:960px){
  .hero-grid{display:flex;flex-direction:column;gap:44px}
  .arch-cell{min-height:400px;width:min(400px,86vw);margin:0 auto}
  .hero-text{align-self:auto}
  /* the home stage-preview stacks (S231: the masthead no longer uses
     .stage-grid — it rides the landing's own .hero-grid stack above) */
  .stage-grid{display:flex;flex-direction:column;align-items:stretch;gap:clamp(28px,5vw,40px)}
  /* S231 masthead at 390: the landing's stacked order — text first, then the
     centred 400px arch plate (568's landing rule, re-asserted over the
     .hero--stage desktop min-height at higher specificity) */
  .hero--stage .arch-cell{min-height:400px}
  .pathway-rail a{padding-right:18px}
  .pathway-rail a:not(:last-child)::after{width:16px}
  /* S222 variant A — the panel becomes a full-width warmth band under the text */
  .hero-photo{position:relative;top:auto;right:auto;bottom:auto;width:auto;margin:0 calc(50% - 50vw) calc(-1*clamp(72px,9vw,128px));height:clamp(240px,58vw,360px)}
  .hero-photo img{object-position:40% 70%}
  .hero-melt{background:linear-gradient(180deg,var(--green) 0%,rgba(52,78,65,.5) 18%,rgba(52,78,65,0) 46%)}
}
@media (max-width:820px){
  .site-nav .nav-link,.site-nav .nav-group,.site-nav .nav-support{display:none}
  .menu-toggle{display:inline-block}
}
@media (max-width:760px){
  .proof-duo,.thanks-grid,.gi-grid{grid-template-columns:1fr}
  .proof-duo .warm-figure,.thanks-grid .warm-figure,.gi-grid .warm-figure{max-width:420px}
}
@media (max-width:560px){
  .inquire-row{grid-template-columns:1fr}
  .close-grid{gap:36px}
}
