:root{
  --navy:#0C1F3F;
  --navy-2:#132B52;
  --teal:#58BAA8;
  --teal-ink:#2A7A6C;
  --paper:#F3F6F8;
  --surface:#FFFFFF;
  --ink:#0C1F3F;
  --slate:#51627A;
  --rule:#D7E1E8;
  --on-navy:#EAF1F5;
  --on-navy-dim:#A9B8CC;
  --display:"Poppins", "Helvetica Neue", Arial, sans-serif;
  --body:"Source Sans 3", "Segoe UI", system-ui, -apple-system, sans-serif;
  --wrap:1160px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#081630; --surface:#0E2244; --ink:#E6EEF3; --slate:#A3B2C6;
    --rule:#223A62; --teal-ink:#6FCCB9;
  }
}
:root[data-theme="dark"]{
  --paper:#081630; --surface:#0E2244; --ink:#E6EEF3; --slate:#A3B2C6;
  --rule:#223A62; --teal-ink:#6FCCB9;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font:400 1.125rem/1.6 var(--body);-webkit-font-smoothing:antialiased}
img,svg{max-width:100%}
a{color:inherit}
:focus-visible{outline:3px solid var(--teal);outline-offset:3px;border-radius:4px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 clamp(20px,4vw,40px)}
h1,h2,h3{font-family:var(--display);font-weight:700;line-height:1.12;margin:0;letter-spacing:-0.01em}
p{margin:0}

/* Nav */
.nav{background:var(--navy);color:var(--on-navy)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;height:76px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font:700 1.375rem/1 var(--display);color:#fff}
.brand img{width:36px;height:36px;display:block}
.nav ul{display:flex;gap:28px;list-style:none;margin:0;padding:0}
.nav ul a{text-decoration:none;color:var(--on-navy-dim);font-weight:600;font-size:1rem}
.nav ul a:hover{color:#fff}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 22px;border-radius:999px;font:600 1rem/1 var(--display);text-decoration:none;border:2px solid transparent;transition:background .15s,color .15s,border-color .15s}
.btn-teal{background:var(--teal);color:var(--navy)}
.btn-teal:hover{background:#6FCCB9}
.btn-ghost{border-color:rgba(234,241,245,.35);color:var(--on-navy)}
.btn-ghost:hover{border-color:var(--on-navy)}
.nav .btn{min-height:42px;padding:0 18px}

/* Hero */
.hero{background:var(--navy);color:var(--on-navy);position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background:
  radial-gradient(ellipse 60% 70% at 78% 45%, rgba(88,186,168,.16), transparent 70%);pointer-events:none}
.hero-grid{position:relative;display:grid;grid-template-columns:1.05fr 1fr;gap:48px;align-items:center;padding:72px 0 56px}
.hero h1{font-size:clamp(2.5rem,5.2vw,4.25rem);color:#fff;max-width:12ch}
.hero .lede{margin-top:24px;max-width:46ch;font-size:1.25rem;color:var(--on-navy-dim)}
.hero .actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:36px}
.routing{width:100%;height:auto;display:block}
.routing .pill rect{fill:var(--navy-2);stroke:rgba(169,184,204,.28)}
.routing .pill text{fill:var(--on-navy);font:500 13px var(--display)}
.routing .pill.rx text{fill:#fff}
.routing .pill.rx rect{stroke:rgba(88,186,168,.55)}
.routing .root{fill:none;stroke:rgba(88,186,168,.38);stroke-width:1.5}
.routing .side-label{fill:var(--on-navy-dim);font:500 12px var(--body)}
.pulse{fill:var(--teal)}
@media (prefers-reduced-motion: reduce){.pulse{display:none}}

.proof{position:relative;border-top:1px solid rgba(169,184,204,.2)}
.proof .wrap{display:grid;grid-template-columns:repeat(3,1fr)}
.proof div.stat{padding:28px 0 32px}
.proof div.stat + div.stat{padding-left:32px;border-left:1px solid rgba(169,184,204,.2)}
.proof strong{display:block;font:700 2rem/1.1 var(--display);color:#fff}
.proof span{color:var(--on-navy-dim);font-size:1rem}

/* Sections */
section.block{padding:clamp(72px,10vw,120px) 0}
.section-head{max-width:640px;margin-bottom:56px}
.section-head h2{font-size:clamp(2rem,3.6vw,2.75rem)}
.section-head p{margin-top:16px;color:var(--slate);font-size:1.1875rem}

/* Two sides */
.sides{display:grid;grid-template-columns:1fr 1fr;border-top:2px solid var(--ink)}
.side{padding:40px 48px 0 0}
.side + .side{padding:40px 0 0 48px;border-left:1px solid var(--rule)}
.side h3{font-size:1.5rem}
.side > p{margin-top:12px;color:var(--slate);max-width:44ch}
.side ul{list-style:none;padding:0;margin:28px 0 0}
.side li{padding:14px 0;border-top:1px solid var(--rule);display:grid;grid-template-columns:22px 1fr;gap:12px}
.side li::before{content:"";width:10px;height:10px;margin-top:9px;background:var(--teal);clip-path:polygon(25% 5%,75% 5%,100% 50%,75% 95%,25% 95%,0 50%)}

/* Steps */
.steps-bg{background:var(--surface);border-block:1px solid var(--rule)}
.steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:40px;counter-reset:step}
.steps li{counter-increment:step;position:relative;padding-top:64px}
.steps li::before{content:counter(step);position:absolute;top:0;left:0;width:44px;height:44px;display:grid;place-items:center;
  font:700 1.125rem var(--display);color:var(--navy);background:var(--teal);
  clip-path:polygon(25% 3%,75% 3%,100% 50%,75% 97%,25% 97%,0 50%)}
.steps li:not(:last-child)::after{content:"";position:absolute;top:22px;left:56px;right:-28px;height:2px;background:var(--rule)}
.steps h3{font-size:1.25rem}
.steps p{margin-top:10px;color:var(--slate)}

/* Categories */
.cats{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.cats span{padding:10px 18px;border:1px solid var(--rule);border-radius:999px;background:var(--surface);font-weight:600;font-size:1rem}
.split{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}
.standards dt{font:600 1.0625rem var(--display);padding-top:18px;border-top:1px solid var(--rule)}
.standards dd{margin:6px 0 18px;color:var(--slate)}
.note{margin-top:32px;padding:20px 24px;border-left:4px solid var(--teal);background:var(--surface);color:var(--ink)}

/* Challenge CTA */
.challenge{background:var(--navy);color:var(--on-navy)}
.challenge .wrap{padding-block:clamp(72px,10vw,112px);display:grid;grid-template-columns:1.4fr 1fr;gap:48px;align-items:end}
.challenge h2{font-size:clamp(2.25rem,4.6vw,3.5rem);color:#fff;max-width:14ch}
.challenge h2 .aside{display:block;margin-top:10px;font-size:.55em;font-weight:500;color:var(--on-navy-dim)}
.challenge p{color:var(--on-navy-dim);max-width:40ch}
.challenge .actions{margin-top:24px;display:flex;flex-wrap:wrap;gap:12px}

footer{padding:40px 0;color:var(--slate);font-size:.9375rem}
footer .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px}
footer p + p{margin-top:4px}

@media (max-width:900px){
  .nav ul{display:none}
  .hero-grid,.split,.challenge .wrap{grid-template-columns:1fr}
  .hero-grid{padding-top:48px}
  .sides{grid-template-columns:1fr}
  .side,.side + .side{padding:36px 0 0;border-left:0}
  .side + .side{margin-top:40px;border-top:1px solid var(--rule)}
  .steps{grid-template-columns:1fr;gap:32px}
  .steps li:not(:last-child)::after{display:none}
}
@media (max-width:620px){
  .proof .wrap{grid-template-columns:1fr}
  .proof div.stat,.proof div.stat + div.stat{padding:20px 0;border-left:0}
  .proof div.stat + div.stat{border-top:1px solid rgba(169,184,204,.2)}
}

/* Quote dialog */
.quote-dialog{border:0;padding:0;border-radius:20px;width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 32px);background:var(--surface);color:var(--ink);box-shadow:0 30px 80px rgba(5,14,32,.45)}
.quote-dialog::backdrop{background:rgba(8,20,42,.62);backdrop-filter:blur(3px)}
.quote-dialog[open]{animation:dlg .18s ease-out}
@keyframes dlg{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){.quote-dialog[open]{animation:none}}
.qd-inner{padding:36px 32px 32px;position:relative}
.qd-close{position:absolute;top:14px;right:14px;width:40px;height:40px;border:0;border-radius:50%;background:transparent;color:var(--slate);font-size:26px;line-height:1;cursor:pointer}
.qd-close:hover{background:var(--paper);color:var(--ink)}
.quote-dialog h2{font-size:1.75rem;padding-right:32px}
.quote-dialog .qd-sub{margin-top:8px;color:var(--slate);font-size:1rem}
.qd-form{margin-top:24px;display:grid;gap:16px}
.qd-form label{display:grid;gap:6px;font:600 .9375rem var(--display)}
.qd-form input{font:400 1.0625rem var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule);border-radius:10px;padding:12px 14px;min-height:48px;width:100%}
.qd-form input:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(88,186,168,.3)}
.qd-form .hp{position:absolute;left:-9999px}
.qd-form .btn{width:100%;margin-top:6px;border:0;cursor:pointer}
.qd-form .btn[disabled]{opacity:.6;cursor:progress}
.qd-status{font-size:.9375rem;color:#B3261E;min-height:0}
.qd-status:empty{display:none}
.qd-done{text-align:left}
.qd-done[hidden]{display:none}
.qd-done .check{width:48px;height:48px;border-radius:50%;background:var(--teal);display:grid;place-items:center;margin-bottom:18px}

/* ---- multi-page additions ---- */
.page-hero{background:var(--navy);color:var(--on-navy);padding:64px 0 72px;position:relative;overflow:hidden}
.page-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 50% 80% at 88% 30%,rgba(88,186,168,.14),transparent 70%)}
.page-hero .wrap{position:relative}
.page-hero h1{font-size:clamp(2.25rem,4.6vw,3.25rem);color:#fff;max-width:20ch}
.page-hero p{margin-top:18px;max-width:60ch;color:var(--on-navy-dim);font-size:1.1875rem}
.eyebrow{display:block;font:600 .8125rem/1 var(--display);letter-spacing:.14em;text-transform:uppercase;color:var(--teal);margin-bottom:18px}
.nav ul a[aria-current]{color:#fff;box-shadow:inset 0 -2px 0 var(--teal)}
.stack section+section{border-top:1px solid var(--rule)}
.lead-in{max-width:62ch;color:var(--slate);font-size:1.1875rem;margin-top:16px}
.ticks{list-style:none;padding:0;margin:28px 0 0;max-width:72ch}
.ticks li{padding:16px 0;border-top:1px solid var(--rule)}
.ticks li strong{font-family:var(--display)}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:0 32px;margin-top:32px}
.facts div{padding:20px 0;border-top:2px solid var(--ink)}
.facts dt{font:700 1.375rem/1.2 var(--display)}
.facts dd{margin:6px 0 0;color:var(--slate);font-size:1rem}
.us-map{width:100%;max-width:880px;height:auto;display:block;margin-top:32px}
.us-map .states path,.us-map .states circle{fill:var(--teal);stroke:var(--surface);stroke-width:1;stroke-linejoin:round}
.us-map .frame{stroke:var(--rule);stroke-width:2}
.list-head{margin-top:48px;font-size:1.125rem}
.state-list{list-style:none;padding:0;margin:18px 0 0;columns:4;column-gap:32px;max-width:860px}
.state-list li{padding:9px 0 9px 16px;position:relative;break-inside:avoid;font-size:1rem}
.state-list li::before{content:"";position:absolute;left:0;top:20px;width:3px;height:3px;background:var(--teal);clip-path:polygon(25% 5%,75% 5%,100% 50%,75% 95%,25% 95%,0 50%)}
@media (max-width:900px){.state-list{columns:2}}
.stat-basis{grid-column:1/-1;margin:0 0 26px;color:var(--on-navy-dim);font-size:.6875rem;line-height:1.5;max-width:70ch}
.map-meta{margin-top:20px;color:var(--slate);font-size:.9375rem}
.tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.tags span{padding:10px 18px;border:1px solid var(--rule);border-radius:999px;background:var(--surface);font-weight:600;font-size:1rem}
.verify{display:block;margin-top:10px;padding:10px 14px;border-left:4px solid #C98A00;background:rgba(201,138,0,.1);color:var(--ink);font-size:.9375rem}
.prose{max-width:74ch}
.prose h2{margin-top:44px;font-size:1.5rem}
.prose h3{margin-top:28px;font-size:1.125rem;font-family:var(--display);font-weight:600}
.prose p,.prose li{font-size:1.0625rem}
.prose p+p,.prose h2+p,.prose h3+p{margin-top:14px}
.prose ul{margin-top:14px;padding-left:22px}
.prose li+li{margin-top:8px}
.legal-meta{color:var(--slate);font-size:.9375rem;margin-top:8px}
.crosslinks{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:24px;margin-top:8px}
.crosslinks a{display:block;padding:24px;border:1px solid var(--rule);border-radius:14px;background:var(--surface);text-decoration:none}
.crosslinks a:hover{border-color:var(--teal)}
.crosslinks strong{display:block;font:700 1.125rem var(--display)}
.crosslinks span{color:var(--slate);font-size:1rem}
.inline-link{color:var(--teal-ink);font-weight:600}
.more{display:inline-block;margin-top:28px;font:600 1.0625rem var(--display);color:var(--teal-ink);text-decoration:none}
.more:hover{text-decoration:underline}
footer nav{display:flex;flex-wrap:wrap;gap:18px}
footer a{color:var(--slate)}
@media (max-width:900px){.state-list{columns:2}}
