/* ============================================================
   Vallarium — design system
   Canvas: warm white. Ink: blue-slate from the logo wordmark.
   Gold: sampled from the logo render (champagne, not #d4af37).
   Gold budget: accents, signal lines, emphasis only (<15%).
   Motion: whispers. 160/240ms micro, 600–800ms entrances,
   cubic-bezier(.22,1,.36,1) in / ease-in out. Reduced motion:
   every diagram renders its final state, nothing is lost.
   ============================================================ */

@font-face{
  font-family:'General Sans';
  src:url('/assets/fonts/GeneralSans-Variable.woff2') format('woff2');
  font-weight:200 700;
  font-style:normal;
  font-display:swap;
}

:root{
  --paper:#FCFBF8;
  --paper-2:#F6F4EE;
  --ink:#191E24;
  --ink-2:#5A564C;
  --ink-3:#6F6A5C;
  --gold-100:#F6EEDC;
  --gold-200:#ECDFC0;
  --gold-300:#E2CD9E;
  --gold-400:#D4B678;
  --gold-500:#C2A05E;
  --gold-600:#A5833F;
  --gold-700:#7E6330;
  --line:#E9E4D8;
  --line-2:#D9D2C1;
  --ink-panel:#14181D;
  --paper-on-ink:#F2EFE7;
  --mut-on-ink:#A9A597;
  --gold-on-ink:#D9BC82;
  --err:#9C3D2E;
  --font:'General Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --ease:cubic-bezier(.22,1,.36,1);
  --t-fast:160ms;
  --t-med:240ms;
  --t-slow:700ms;
  --wrap:1180px;
  --gut:clamp(20px,4vw,44px);
  --r:3px;
  color-scheme:light;
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
html:focus-within{scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html:focus-within{scroll-behavior:auto}}

body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font);
  font-size:1.0625rem;
  font-weight:450;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
::selection{background:var(--gold-200);color:var(--ink)}

img,svg{display:block;max-width:100%}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
:focus{outline:none}
:focus-visible{outline:2px solid var(--gold-600);outline-offset:3px;border-radius:2px}

.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
[id]{scroll-margin-top:88px}

.skip{
  position:absolute;left:-9999px;top:16px;z-index:300;
  background:var(--ink);color:var(--paper-on-ink);
  padding:10px 18px;border-radius:var(--r);font-size:.9rem;
}
.skip:focus{left:16px}

/* ---------- typography ---------- */
h1,h2,h3{font-weight:560;letter-spacing:-.02em;text-wrap:balance}
h1{font-size:clamp(2.1rem,5.2vw,4rem);line-height:1.06}
h2{font-size:clamp(1.75rem,3.1vw,2.6rem);line-height:1.12}
h3{font-size:1.2rem;line-height:1.3;letter-spacing:-.01em;font-weight:580}
.lede{font-size:clamp(1.05rem,1.5vw,1.2rem);color:var(--ink-2);max-width:34em}
.dot{color:var(--gold-500)}
.small{font-size:.9rem;color:var(--ink-2)}
.micro{font-size:.8125rem;color:var(--ink-3)}
p a,.small a,li a{
  text-decoration:underline;text-decoration-color:var(--gold-400);
  text-decoration-thickness:1px;text-underline-offset:3px;
  transition:text-decoration-color var(--t-fast) ease;
}
p a:hover,.small a:hover,li a:hover{text-decoration-color:var(--gold-600)}

/* section marker: small tracked label, sentence case, used sparingly */
.marker{
  display:inline-flex;align-items:center;gap:10px;
  font-size:.8125rem;font-weight:550;letter-spacing:.05em;
  color:var(--gold-700);margin-bottom:22px;
}
.marker::before{content:"";width:22px;height:1px;background:var(--gold-500)}

/* ---------- buttons ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;gap:10px;
  padding:15px 26px;border-radius:var(--r);
  font-size:.95rem;font-weight:540;letter-spacing:.005em;line-height:1;
  border:1px solid var(--ink);background:var(--ink);color:var(--paper);
  transition:background var(--t-med) var(--ease),border-color var(--t-med) var(--ease),color var(--t-med) var(--ease);
  will-change:transform;text-decoration:none;white-space:nowrap;
  min-height:48px;
}
.btn .arr{transition:transform var(--t-med) var(--ease)}
.btn:hover{background:#232A32;border-color:#232A32}
.btn:hover .arr{transform:translateX(4px)}
.btn:active{background:#0F1317}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-2)}
.btn-ghost:hover{background:var(--gold-100);border-color:var(--gold-500);color:var(--ink)}
.btn-on-ink{background:var(--paper-on-ink);border-color:var(--paper-on-ink);color:var(--ink)}
.btn-on-ink:hover{background:#fff;border-color:#fff}
.btn[disabled]{opacity:.55;cursor:default;pointer-events:none}

/* ---------- nav ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:120;
  border-bottom:1px solid transparent;
  transition:background var(--t-med) ease,border-color var(--t-med) ease;
}
.nav.scrolled{
  background:color-mix(in srgb,var(--paper) 88%,transparent);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border-bottom-color:var(--line);
}
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:72px}
.nav-brand{display:inline-flex;align-items:center;min-height:44px}
.nav-brand img{height:30px;width:auto}
.nav-links{display:flex;align-items:center;gap:34px}
.nav-links a.nl{
  font-size:.92rem;color:var(--ink-2);text-decoration:none;position:relative;
  padding:6px 0;transition:color var(--t-fast) ease;
}
.nav-links a.nl::after{
  content:"";position:absolute;left:0;right:0;bottom:2px;height:1px;
  background:var(--gold-500);transform:scaleX(0);transform-origin:100% 50%;
  transition:transform .4s var(--ease);
}
.nav-links a.nl:hover{color:var(--ink)}
.nav-links a.nl:hover::after{transform:scaleX(1);transform-origin:0 50%}
.nav .btn{padding:11px 18px;min-height:42px;font-size:.88rem}
@media(max-width:820px){.nav-links a.nl{display:none}.nav-inner{height:64px}.nav-brand img{height:26px}}

/* ---------- reveal ---------- */
.rv{opacity:0;transform:translateY(16px);transition:opacity var(--t-slow) var(--ease),transform var(--t-slow) var(--ease);transition-delay:var(--d,0ms)}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}

/* connector tick between narrative sections: the signal continuing */
.tick{display:flex;justify-content:center;padding:8px 0 0}
.tick span{width:1px;height:56px;background:linear-gradient(var(--gold-400),transparent);display:block;transform:scaleY(0);transform-origin:top;transition:transform .9s var(--ease) .1s}
.rv.in .tick span,.tick.in span{transform:scaleY(1)}
@media(prefers-reduced-motion:reduce){.tick span{transform:scaleY(1);transition:none}}

/* ============================================================
   HERO
   ============================================================ */
.hero{padding:clamp(120px,16vh,176px) 0 clamp(48px,7vh,84px);position:relative}
.hero-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,5vw,76px);align-items:center}
.hero h1{max-width:11em}
.hero .lede{margin-top:26px}
.hero-ctas{display:flex;flex-wrap:wrap;gap:14px;margin-top:38px}
.guarantee{
  margin-top:34px;display:flex;gap:14px;align-items:flex-start;max-width:34em;
  border-left:2px solid var(--gold-500);padding-left:16px;
}
.guarantee strong{font-weight:560}
.guarantee .micro{margin-top:2px}
.hero-visual{position:relative;min-height:300px}
.hero-visual svg{width:100%;height:auto;overflow:visible}
.brandline{
  margin-top:clamp(40px,7vh,72px);
  display:flex;align-items:center;gap:16px;
  font-size:.8125rem;letter-spacing:.14em;color:var(--gold-700);font-weight:520;
}
.brandline::before,.brandline::after{content:"";height:1px;width:34px;background:var(--gold-400)}
@media(max-width:960px){
  .hero{padding-top:104px}
  .hero-grid{grid-template-columns:1fr;gap:40px}
  .hero-visual{max-width:420px;margin-inline:auto;min-height:0}
  .brandline{justify-content:center}
}

/* hero svg stroke states */
.sig{stroke:var(--gold-500);fill:none;stroke-width:1.4}
.sig-soft{stroke:var(--gold-300);fill:none;stroke-width:1.1}
.sig-ink{stroke:var(--ink);fill:none;stroke-width:1.1}
.hero-shield path,.hero-shield line,.hero-path{stroke-linecap:square}
.pulse-dot{fill:var(--gold-600)}
.node-sq{fill:var(--paper);stroke:var(--gold-600);stroke-width:1.3}

/* ============================================================
   SECTIONS — shared scaffolding, varied pacing
   ============================================================ */
.sect{padding:clamp(72px,11vh,132px) 0;position:relative}
.sect-tight{padding:clamp(56px,8vh,96px) 0}
.sect-head{max-width:32em}
.sect-head .lede{margin-top:18px}

/* ============================================================
   THE PATH — journey demonstration
   ============================================================ */
.journey{margin-top:56px}
.journey-stage{position:relative}
.journey-stage svg{width:100%;height:auto;overflow:visible}
.journey-svg-v{display:none}
@media(max-width:760px){
  .journey-svg-h{display:none}
  .journey-svg-v{display:block;max-width:420px;margin-inline:auto}
}
.j-label{font-size:12.5px;fill:var(--ink-2);font-family:var(--font);font-weight:520}
.j-fail{font-size:12px;fill:var(--ink);font-family:var(--font);font-weight:540}
.j-fail-sub{font-size:11.5px;fill:var(--ink-3);font-family:var(--font)}
.j-fixed{font-size:11.5px;fill:var(--gold-700);font-family:var(--font);font-weight:550}
.j-break{stroke:var(--ink);stroke-width:1.2;opacity:0}
.j-leader{stroke:var(--line-2);stroke-width:1}
.rampart{stroke:var(--gold-500);stroke-width:1.4;fill:none;stroke-linecap:square}

.journey-legend{
  display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:26px;align-items:center;
}
.journey-legend .micro{display:inline-flex;align-items:center;gap:8px}
.legend-sq{width:7px;height:7px;background:var(--paper);border:1.3px solid var(--gold-600);display:inline-block}
.legend-line{width:20px;height:0;border-top:1.4px solid var(--gold-500);display:inline-block}
.legend-break{width:20px;height:0;border-top:1.2px dashed var(--ink);display:inline-block}

/* station detail list (semantic + interactive) */
.stations{margin-top:44px;border-top:1px solid var(--line);list-style:none}
.station{border-bottom:1px solid var(--line)}
.station-btn{
  width:100%;display:grid;grid-template-columns:minmax(112px,180px) 1fr 24px;gap:18px;align-items:baseline;
  padding:17px 4px;text-align:left;min-height:52px;
  transition:background var(--t-fast) ease;
}
.station-btn:hover{background:var(--gold-100)}
.station-btn .st-name{font-weight:560;font-size:1rem}
.station-btn .st-risk{color:var(--ink-2);font-size:.92rem}
.station-btn .st-ind{justify-self:end;color:var(--gold-600);transition:transform var(--t-med) var(--ease);line-height:1}
.station-btn[aria-expanded="true"] .st-ind{transform:rotate(45deg)}
.station-panel{
  display:grid;grid-template-columns:minmax(112px,180px) 1fr;gap:18px;
  padding:0 4px 20px;
}
.station-panel[hidden]{display:none}
.station-panel .sp-a{color:var(--ink-3);font-size:.85rem;padding-top:2px}
.station-panel .sp-b{color:var(--ink-2);font-size:.95rem;max-width:46em}
.station-panel .sp-b strong{color:var(--ink);font-weight:560}
@media(max-width:640px){
  .station-btn{grid-template-columns:1fr 24px}
  .station-btn .st-risk{grid-column:1/-1;padding-top:2px}
  .station-panel{grid-template-columns:1fr}
  .station-panel .sp-a{display:none}
}

/* ============================================================
   OPERATOR GAP — editorial argument
   ============================================================ */
.gap-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(36px,6vw,90px);align-items:start}
.gap-rows{border-top:1px solid var(--line)}
.gap-row{
  display:grid;grid-template-columns:minmax(140px,200px) 1fr;gap:20px;
  padding:22px 0;border-bottom:1px solid var(--line);
}
.gap-row h3{font-size:1.02rem}
.gap-row .who{color:var(--ink-3);font-size:.85rem;margin-top:4px}
.gap-row p{color:var(--ink-2);font-size:.97rem;max-width:40em}
.gap-close{margin-top:30px;font-size:1.12rem;max-width:30em}
.gap-close strong{font-weight:580}
@media(max-width:900px){.gap-grid{grid-template-columns:1fr}.gap-row{grid-template-columns:1fr;gap:6px}}

/* ============================================================
   THREE LINES OF WORK — ladders
   ============================================================ */
.lines{margin-top:14px}
.line-band{
  display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(28px,4.5vw,72px);
  padding:44px 0;border-top:1px solid var(--line);align-items:start;
}
.line-band:last-of-type{border-bottom:1px solid var(--line)}
.line-band .lb-desc{color:var(--ink-2);margin-top:12px;font-size:.98rem;max-width:30em}
.ladder{list-style:none;position:relative;padding-left:26px}
.ladder::before{
  content:"";position:absolute;left:3px;top:12px;bottom:12px;width:1px;
  background:linear-gradient(var(--gold-400) 60%,var(--gold-200));
}
.rung{position:relative;padding:12px 0 12px 2px}
.rung::before{
  content:"";position:absolute;left:-26.5px;top:19px;width:8px;height:8px;
  background:var(--paper);border:1.3px solid var(--gold-600);
}
.rung h4{font-size:1rem;font-weight:560;display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline}
.rung .trust{font-size:.8125rem;color:var(--gold-700);font-weight:520}
.rung p{color:var(--ink-2);font-size:.93rem;max-width:42em;margin-top:3px}
@media(max-width:900px){.line-band{grid-template-columns:1fr;gap:22px}}
.lines-note{margin-top:30px;max-width:42em}
.practice{
  margin-top:44px;padding-top:26px;border-top:1px solid var(--line);
  display:grid;grid-template-columns:minmax(140px,200px) 1fr;gap:20px;
}
.practice ul{
  list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:8px 32px;color:var(--ink-2);font-size:.93rem;
}
.practice li{display:flex;gap:10px;align-items:baseline}
.practice li::before{content:"";width:5px;height:5px;background:var(--gold-400);flex:none;transform:translateY(-2px)}
@media(max-width:640px){.practice{grid-template-columns:1fr}}

/* ============================================================
   OPERATING LOOP
   ============================================================ */
.loop-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(36px,6vw,90px);align-items:center}
.loop-fig svg{width:100%;max-width:460px;height:auto;margin-inline:auto;overflow:visible}
.loop-station{font-size:12.5px;fill:var(--ink-2);font-family:var(--font);font-weight:530}
.loop-station.on{fill:var(--ink);font-weight:580}
.loop-copy p{margin-top:16px;color:var(--ink-2);max-width:30em}
.loop-copy p strong{color:var(--ink);font-weight:560}
@media(max-width:900px){.loop-grid{grid-template-columns:1fr}.loop-fig{order:2;margin-top:12px}}

/* ============================================================
   GUARANTEE — the one dark passage
   ============================================================ */
.dark{background:var(--ink-panel);color:var(--paper-on-ink);padding:clamp(80px,12vh,140px) 0;position:relative;overflow:hidden}
.dark::before{ /* the signal passes through the dark */
  content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;
  background:linear-gradient(180deg,var(--gold-500),rgba(194,160,94,.12) 30%,rgba(194,160,94,.12) 70%,var(--gold-500));
  opacity:.6;
}
.dark .wrap{position:relative}
.dark ::selection{background:var(--gold-700);color:#fff}
.dark-head{max-width:15em;font-size:clamp(1.9rem,3.6vw,3rem);line-height:1.1;font-weight:560;letter-spacing:-.02em}
.dark-quote{
  margin-top:34px;font-size:clamp(1.25rem,2.2vw,1.7rem);line-height:1.35;font-weight:500;
  max-width:26em;color:#fff;
}
.dark-quote em{font-style:normal;color:var(--gold-on-ink)}
.dark-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:56px;border-top:1px solid rgba(242,239,231,.14)}
.dark-fact{padding:26px 28px 4px 0;border-right:1px solid rgba(242,239,231,.14)}
.dark-fact:last-child{border-right:none}
.dark-fact h3{font-size:1.02rem;color:#fff}
.dark-fact p{margin-top:8px;font-size:.93rem;color:var(--mut-on-ink);max-width:24em}
.dark-legal{margin-top:56px;font-size:.8125rem;color:var(--mut-on-ink);max-width:52em}
@media(max-width:820px){
  .dark-facts{grid-template-columns:1fr;border-top:none}
  .dark-fact{border-right:none;border-top:1px solid rgba(242,239,231,.14);padding:20px 0 4px}
  .dark::before{left:var(--gut)}
}

/* ============================================================
   OUTCOMES
   ============================================================ */
.outcomes-grid{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:clamp(36px,6vw,90px);align-items:start}
.outcome-list{list-style:none;margin-top:8px;columns:2;column-gap:44px;max-width:44em}
.outcome-list li{
  break-inside:avoid;padding:11px 0;border-bottom:1px solid var(--line);
  color:var(--ink-2);font-size:.97rem;display:flex;gap:12px;align-items:baseline;
}
.outcome-list li::before{content:"";width:6px;height:6px;border:1.2px solid var(--gold-600);flex:none;transform:translateY(-1px)}
.measure{
  border:1px solid var(--line-2);border-radius:var(--r);padding:26px 28px;
  background:var(--paper-2);
}
.measure h3{font-size:1rem}
.measure table{width:100%;border-collapse:collapse;margin-top:16px;font-variant-numeric:tabular-nums}
.measure th{font-size:.8125rem;color:var(--ink-3);font-weight:520;text-align:left;padding:8px 0;border-bottom:1px solid var(--line-2)}
.measure td{padding:11px 0;border-bottom:1px solid var(--line);font-size:.95rem;color:var(--ink-2)}
.measure td.na{color:var(--gold-600);letter-spacing:.08em}
.measure .micro{margin-top:14px;max-width:34em}
@media(max-width:900px){.outcomes-grid{grid-template-columns:1fr}.outcome-list{columns:1}}

/* ============================================================
   PROOF / WRITING
   ============================================================ */
.proof-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(36px,6vw,90px);align-items:start;margin-top:48px}
.teardown-card{
  display:block;text-decoration:none;border:1px solid var(--line-2);border-radius:var(--r);
  padding:34px 36px;position:relative;background:var(--paper);
  transition:border-color var(--t-med) ease,background var(--t-med) ease;
}
.teardown-card::before{
  content:"";position:absolute;left:-1px;top:18px;bottom:18px;width:2px;background:var(--gold-500);
  transform:scaleY(.35);transform-origin:top;transition:transform .5s var(--ease);
}
.teardown-card:hover{border-color:var(--gold-500);background:var(--gold-100)}
.teardown-card:hover::before{transform:scaleY(1)}
.teardown-card .micro{margin-bottom:12px}
.teardown-card h3{font-size:clamp(1.25rem,2vw,1.55rem);max-width:18em}
.teardown-card .dek{margin-top:12px;color:var(--ink-2);font-size:.97rem;max-width:36em}
.teardown-figs{display:flex;gap:36px;margin-top:26px;flex-wrap:wrap}
.tf b{display:block;font-size:1.5rem;font-weight:580;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.tf span{font-size:.8125rem;color:var(--ink-3)}
.teardown-card .go{margin-top:26px;font-size:.92rem;font-weight:550;color:var(--gold-700);display:inline-flex;gap:8px;align-items:center}
.reserved{border-top:1px solid var(--line)}
.reserved li{
  list-style:none;padding:18px 2px;border-bottom:1px solid var(--line);
  color:var(--ink-3);font-size:.93rem;display:flex;justify-content:space-between;gap:16px;align-items:baseline;
}
.reserved li b{color:var(--ink-2);font-weight:550}
.reserved-note{margin-top:16px;max-width:26em}
@media(max-width:900px){.proof-grid{grid-template-columns:1fr}}

/* ============================================================
   WHO THIS IS FOR
   ============================================================ */
.icp{margin-top:44px;border-top:1px solid var(--line)}
.icp-row{
  display:grid;grid-template-columns:minmax(200px,300px) 1fr;gap:20px;
  padding:24px 2px;border-bottom:1px solid var(--line);
}
.icp-row h3{font-size:1.05rem}
.icp-row p{color:var(--ink-2);font-size:.97rem;max-width:44em}
@media(max-width:720px){.icp-row{grid-template-columns:1fr;gap:6px}}

/* ============================================================
   ENGAGEMENT — steps on the signal
   ============================================================ */
.steps{margin-top:54px;position:relative;list-style:none;max-width:640px}
.steps::before{
  content:"";position:absolute;left:3.5px;top:14px;bottom:14px;width:1px;
  background:linear-gradient(var(--gold-500),var(--gold-200));
}
.step{position:relative;padding:0 0 34px 34px}
.step:last-child{padding-bottom:0}
.step::before{
  content:"";position:absolute;left:0;top:9px;width:8px;height:8px;
  background:var(--paper);border:1.3px solid var(--gold-600);
}
.step h3{font-size:1.08rem}
.step p{color:var(--ink-2);font-size:.96rem;margin-top:5px;max-width:38em}

/* ============================================================
   ASSESSMENT FORM
   ============================================================ */
.assess{background:var(--paper-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.assess-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(40px,6vw,96px);align-items:start}
.assess-side p{margin-top:16px;color:var(--ink-2);max-width:26em}
.assess-side .expect{margin-top:34px;border-top:1px solid var(--line-2);padding-top:8px;list-style:none}
.assess-side .expect li{
  padding:12px 0;border-bottom:1px solid var(--line);font-size:.93rem;color:var(--ink-2);
  display:flex;gap:12px;align-items:baseline;
}
.assess-side .expect li::before{content:"";width:5px;height:5px;background:var(--gold-500);flex:none;transform:translateY(-2px)}
.assess-side .direct{margin-top:26px}

form.af{display:grid;gap:22px}
.af-row{display:grid;gap:22px;grid-template-columns:1fr 1fr}
@media(max-width:640px){.af-row{grid-template-columns:1fr}}
.field label{display:block;font-size:.9rem;font-weight:550;margin-bottom:7px}
.field label .req{color:var(--gold-700)}
.field label .opt{color:var(--ink-3);font-weight:450}
.field input,.field select,.field textarea{
  width:100%;border:1px solid var(--line-2);border-radius:var(--r);
  background:var(--paper);color:var(--ink);font:inherit;font-size:1rem;
  padding:13px 14px;min-height:48px;
  transition:border-color var(--t-fast) ease,box-shadow var(--t-fast) ease;
}
.field textarea{min-height:120px;resize:vertical;line-height:1.55}
.field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%235A564C' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:38px}
.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{
  outline:none;border-color:var(--gold-600);box-shadow:0 0 0 3px var(--gold-200);
}
.field .hint{font-size:.8125rem;color:var(--ink-3);margin-top:6px}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--err)}
.ferr{display:none;font-size:.85rem;color:var(--err);margin-top:6px}
.field.invalid .ferr{display:flex;gap:7px;align-items:baseline}
.hp{position:absolute !important;left:-9999px;width:1px;height:1px;overflow:hidden}

.af-foot{display:grid;gap:18px}
.af-submit{justify-self:start;min-width:240px;justify-content:center}
.af-submit .spinner{
  width:14px;height:14px;border:1.6px solid rgba(252,251,248,.35);border-top-color:var(--paper);
  border-radius:50%;display:none;animation:spin .7s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
form.af.busy .af-submit .spinner{display:block}
form.af.busy .af-submit .arr{display:none}

.af-status{border-radius:var(--r);font-size:.95rem;display:none;padding:16px 18px}
.af-status.show{display:block}
.af-status.ok{background:var(--gold-100);border:1px solid var(--gold-300);color:var(--ink)}
.af-status.ok b{font-weight:580}
.af-status.bad{background:#F7ECE9;border:1px solid #E3C6BF;color:var(--err)}
.af-status a{color:inherit}
.af-success{display:none;border-left:2px solid var(--gold-500);padding:6px 0 6px 20px}
.af-success.show{display:block}
.af-success h3{font-size:1.3rem}
.af-success p{margin-top:10px;color:var(--ink-2);max-width:30em}
.turnstile-slot{min-height:66px}
@media(max-width:900px){.assess-grid{grid-template-columns:1fr}}

/* ============================================================
   CLOSE + FOOTER
   ============================================================ */
.close{padding:clamp(96px,15vh,180px) 0;text-align:left}
.close h2{font-size:clamp(2rem,4.4vw,3.4rem);max-width:16em;line-height:1.08}
.close .btn{margin-top:40px}
.close-line{display:flex;justify-content:flex-start;margin-bottom:34px}
.close-line span{width:1px;height:72px;background:linear-gradient(var(--gold-400),transparent)}

footer{border-top:1px solid var(--line);padding:56px 0 44px;background:var(--paper)}
.foot-grid{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap;align-items:flex-start}
.foot-brand img{width:200px;height:auto}
.foot-links{display:grid;gap:10px;font-size:.92rem}
.foot-links a{color:var(--ink-2);text-decoration:none}
.foot-links a:hover{color:var(--ink);text-decoration:underline;text-decoration-color:var(--gold-500);text-underline-offset:3px}
.foot-meta{margin-top:44px;padding-top:22px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}
.foot-meta .micro{max-width:46em}

/* ============================================================
   ARTICLE (writing) + simple pages
   ============================================================ */
.article{padding:140px 0 90px}
.article-head{max-width:44em}
.article-head h1{font-size:clamp(1.9rem,3.6vw,2.9rem)}
.article-head .byline{margin-top:20px;display:flex;gap:14px;align-items:baseline;flex-wrap:wrap}
.article-body{max-width:41em;margin-top:44px;border-top:1px solid var(--line);padding-top:36px}
.article-body>*+*{margin-top:1.15em}
.article-body h2{font-size:1.45rem;margin-top:2em;letter-spacing:-.015em}
.article-body p{color:#2A2E33}
.article-body .preamble{color:var(--ink-2);font-size:.97rem;border-left:2px solid var(--gold-400);padding-left:18px}
.article-body strong{font-weight:600}
.article-body table{width:100%;border-collapse:collapse;font-size:.9rem;font-variant-numeric:tabular-nums;margin-top:1.4em}
.article-body th{text-align:left;font-weight:560;font-size:.8125rem;color:var(--ink-2);border-bottom:1px solid var(--line-2);padding:8px 14px 8px 0}
.article-body td{border-bottom:1px solid var(--line);padding:10px 14px 10px 0;color:#2A2E33}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.article-body .foot-cta{margin-top:3em;border-top:1px solid var(--line);padding-top:2em}
.crumb{font-size:.9rem;color:var(--ink-2);margin-bottom:26px;display:inline-flex;gap:8px;align-items:center;text-decoration:none}
.crumb:hover{color:var(--ink)}

/* page for privacy */
.page{padding:140px 0 90px}
.page .article-body{margin-top:30px}

/* ============================================================
   MISC
   ============================================================ */
noscript .noscript-note{
  display:block;background:var(--gold-100);border:1px solid var(--gold-300);
  border-radius:var(--r);padding:14px 18px;font-size:.95rem;
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
}

/* article inline code */
.article-body code{
  font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  font-size:.86em;background:var(--paper-2);border:1px solid var(--line);
  border-radius:2px;padding:1px 5px;white-space:nowrap;
}

/* forced editorial line breaks release on small screens for natural wrap */
@media(max-width:640px){.hb{display:none}}

/* cross-page transitions: quick native crossfade, disabled for reduced motion */
@view-transition{navigation:auto}
@media(prefers-reduced-motion:reduce){
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none !important}
}
