/* ==========================================================================
   Self-hosted variable fonts.

   Previously two Google Fonts stylesheets with 8 weights, loaded via
   media="print" onload. That is non-blocking but arrives after first paint,
   so every heading reflowed on swap, and it made the fonts unavailable to
   any offline render — which is how a nav-overflow bug survived four rounds
   of headless measurement: document.fonts.size was 0, so the harness sized
   the header in Georgia and Helvetica while real browsers used Fraunces and
   Inter and clipped the CTA. Same-origin fonts measure honestly.

   One file per family covers the whole weight range (both are variable).
   ========================================================================== */
@font-face{
  font-family:'Fraunces';
  src:url('/assets/fonts/fraunces.woff2') format('woff2');
  font-weight:100 900;font-style:normal;font-display:swap;
}
/* Arrows and stars fall outside the latin subset of both faces. Pin them to a
   predictable stack rather than letting each OS choose mid-line. */
@font-face{font-family:'Fraunces';src:local('Georgia'),local('Times New Roman');
  unicode-range:U+2190-2193,U+2605;font-weight:100 900;font-display:swap}
@font-face{
  font-family:'Inter';
  src:url('/assets/fonts/inter.woff2') format('woff2');
  font-weight:100 900;font-style:normal;font-display:swap;
}
@font-face{font-family:'Inter';src:local('Arial'),local('Helvetica'),local('Liberation Sans');
  unicode-range:U+2190-2193,U+2605;font-weight:100 900;font-display:swap}

/* ==========================================================================
   Simply Closed — Design System v2 (editorial / Swiss)
   Brand: #004AAD royal blue · #FFDE59 gold — from the logo, unchanged.

   Principles, so future edits don't drift back:
     1. No drop shadows. Depth comes from rules and space, never blur.
     2. Radii are 0 or 2px. Nothing is a pill.
     3. Hairline rules do the work that card borders used to.
     4. Headlines are flush left, large, tight. Centred stacks are the
        exception, not the default.
     5. Blue is ink. Gold is a hairline accent, used sparingly.
   ========================================================================== */

:root{
  /* Brand */
  --brand:#004AAD;
  --brand-600:#003F94;
  --brand-700:#00347C;
  --brand-800:#012A63;
  --ink:#0A1B33;
  --ink-900:#050F1F;
  --gold:#FFDE59;
  --gold-600:#E8C63C;
  --gold-700:#A8830A;
  --ai:#0E7C86;
  --ai-dark:#0A5C64;

  /* Neutrals */
  --white:#FFFFFF;
  --paper:#F6F7F9;
  --sand:#FAF8F3;
  --line:#E4E6EA;
  --line-strong:#C8CCD4;
  --rule:#0A1B33;
  --muted:#5B6675;
  --body:#2A3441;

  /* Status */
  --green:#0E7A54;
  --green-bg:#E8F4EF;
  --red:#B3352A;

  /* Type */
  --f-display:'Fraunces',Georgia,'Times New Roman',serif;
  --f-body:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --f-mono:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,monospace;

  /* Space */
  --wrap:1240px;
  --wrap-narrow:720px;
  --r-sm:2px; --r:2px; --r-lg:2px; --r-pill:2px;

  /* Kept as no-ops so any stray reference can't reintroduce blur */
  --sh-1:none; --sh-2:none; --sh-3:none; --sh-brand:none;
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:100px;overflow-x:hidden}
body{overflow-x:clip}
body{margin:0;font-family:var(--f-body);font-size:16px;line-height:1.6;color:var(--body);background:var(--white);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:'kern' 1,'liga' 1}
img,svg,video{max-width:100%;height:auto;display:block}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
button{font:inherit}
h1,h2,h3,h4{font-family:var(--f-display);color:var(--ink);font-weight:600;line-height:1.06;letter-spacing:-.028em;margin:0 0 .45em;text-wrap:balance}
h1{font-size:clamp(2.4rem,1.5rem + 3.6vw,4.4rem);letter-spacing:-.04em;line-height:1.04;font-variation-settings:'SOFT' 0,'WONK' 0}
h2{font-size:clamp(1.9rem,1.25rem + 2.6vw,3.15rem);letter-spacing:-.034em}
h3{font-size:clamp(1.18rem,1.05rem + .5vw,1.42rem);letter-spacing:-.02em;line-height:1.2}
h4{font-size:1rem;font-family:var(--f-body);font-weight:700;letter-spacing:-.01em;line-height:1.35}
p{margin:0 0 1.05em}
ul,ol{margin:0 0 1.15em;padding-left:1.3em}
li{margin-bottom:.45em}
:focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-radius:0}
/* On ink backgrounds the blue ring drops to ~2.1:1. Gold clears 3:1 on both. */
.bg-ink :focus-visible,.bg-brand :focus-visible,.hero :focus-visible,
.cta-band :focus-visible,.site-footer :focus-visible,.announce :focus-visible,
.calc-out :focus-visible{outline-color:var(--gold)}
::selection{background:var(--gold);color:var(--ink)}
hr{border:0;border-top:1px solid var(--line);margin:2.5rem 0}

/* ---------- Layout ---------- */
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:28px}
.wrap-narrow{max-width:var(--wrap-narrow)}
.section{padding:clamp(3.75rem,2rem + 5.5vw,7rem) 0}
.section-sm{padding:clamp(2.5rem,1.6rem + 3vw,4rem) 0}
.bg-paper{background:var(--paper)}
.bg-sand{background:var(--sand)}
.bg-ink{background:var(--ink);color:#AFC0D6}
.bg-ink h2,.bg-ink h3,.bg-ink h4{color:#fff}
.bg-brand{background:var(--brand-800);color:#C6D8F0}
.bg-brand h2,.bg-brand h3{color:#fff}
.center{text-align:left}
.center .lead,.center p{margin-inline:0}
.mx-auto{margin-inline:auto}
.grid{display:grid;gap:2.25rem 2.5rem}
/* Grid and flex children default to min-width:auto, which lets wide content
   (tables, long tokens) push the whole page sideways on narrow screens. */
.grid > *,.split > *,.hero-grid > *,.calc > *,.price-grid > *{min-width:0}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.split{display:grid;grid-template-columns:1.08fr .92fr;gap:clamp(2rem,1rem + 4vw,5rem);align-items:start}
@media(max-width:960px){.g3,.g4{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr;gap:2.5rem}}
@media(max-width:620px){.g2,.g3,.g4{grid-template-columns:1fr}}

/* ---------- Type utilities ---------- */
/* The eyebrow is a full-width ruled label, not a floating pill. */
.eyebrow{display:block;font-family:var(--f-body);font-size:.7rem;font-weight:650;letter-spacing:.2em;text-transform:uppercase;color:var(--brand);margin:0 0 1.5rem;padding-top:.85rem;border-top:1.5px solid var(--rule)}
.bg-ink .eyebrow,.bg-brand .eyebrow,.hero .eyebrow,.calc-out .eyebrow,.cta-band .eyebrow{color:var(--gold);border-top-color:rgba(255,255,255,.35)}
.lead{font-size:clamp(1.05rem,1rem + .35vw,1.22rem);line-height:1.55;color:var(--muted);max-width:56ch}
.bg-ink .lead,.bg-brand .lead{color:#A8BDD8}
.section-head{max-width:34ch;margin-bottom:3.25rem}
.split .section-head,.wrap-narrow .section-head,.calc .section-head{max-width:none;margin-bottom:2rem}
.split .section-head h2{font-size:clamp(1.7rem,1.2rem + 1.6vw,2.5rem)}
.section-head .lead{margin-top:1.1rem;max-width:52ch}
.section-head.center{margin-inline:auto;max-width:44ch}
.section-head.center .eyebrow{border-top:0;padding-top:0}
.section-head.center .lead{margin-inline:auto}
.small{font-size:.86rem}
.tiny{font-size:.78rem;color:var(--muted)}
strong{font-weight:640;color:var(--ink)}
.bg-ink strong,.bg-brand strong{color:#fff}
.label{font-size:.68rem;font-weight:650;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;padding:.95rem 1.7rem;border-radius:2px;font-weight:600;font-size:.95rem;letter-spacing:-.005em;border:1.5px solid transparent;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease;text-decoration:none;line-height:1.2}
.btn:hover{text-decoration:none}
[hidden]{display:none!important}
.btn-primary{background:var(--brand);color:#fff;border-color:var(--brand)}
.btn-primary:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.btn-gold{background:var(--gold);color:var(--ink-900);border-color:var(--gold)}
.btn-gold:hover{background:#fff;border-color:#fff;color:var(--ink-900)}
/* Ghost is a text link with an arrow, not an outlined capsule. */
.btn-ghost{background:transparent;color:var(--ink);border-color:transparent;border-bottom:1.5px solid var(--line-strong);padding-inline:0;border-radius:0}
.btn-ghost::after{content:"→";transition:transform .18s ease}
.btn-ghost:hover{border-bottom-color:var(--brand);color:var(--brand);background:transparent}
.btn-ghost:hover::after{transform:translateX(4px)}
.bg-ink .btn-ghost,.bg-brand .btn-ghost,.hero .btn-ghost,.cta-band .btn-ghost{color:#fff;border-bottom-color:rgba(255,255,255,.4)}
.bg-ink .btn-ghost:hover,.bg-brand .btn-ghost:hover,.hero .btn-ghost:hover,.cta-band .btn-ghost:hover{border-bottom-color:var(--gold);color:var(--gold);background:transparent}
.btn-lg{padding:1.1rem 2rem;font-size:1rem}
.btn-ghost.btn-lg{padding-inline:0}
.btn-row{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:center}
.btn-row.center{justify-content:flex-start}

/* ---------- Header ---------- */
.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:#fff;padding:.8rem 1.2rem;z-index:200}
.skip:focus{left:0}
.site-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.94);backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--line)}
.site-header.scrolled{border-bottom-color:var(--line-strong)}
.nav{display:flex;align-items:center;gap:1rem;height:76px}
.brand{display:flex;align-items:center;gap:.75rem;flex-shrink:0}
.brand:hover{text-decoration:none}
.brand img{width:38px;height:38px;border-radius:2px}
.brand-name{font-family:var(--f-display);font-weight:600;font-size:1.08rem;color:var(--ink);letter-spacing:-.02em;line-height:1.05}
.brand-name span{display:block;font-family:var(--f-body);font-size:.58rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-top:.15rem}
.nav-links{display:flex;align-items:center;gap:.1rem;margin-left:auto;list-style:none;padding:0;margin-block:0}
.nav-links > li{margin:0;position:relative}
.nav-links a{display:block;padding:.5rem .52rem;font-size:.875rem;font-weight:500;color:var(--body);white-space:nowrap;border-bottom:1.5px solid transparent}
.nav-links a:hover{color:var(--brand);text-decoration:none;border-bottom-color:var(--brand)}
.nav-links a[aria-current="page"]{color:var(--ink);font-weight:600;border-bottom-color:var(--gold)}
.nav-cta{display:flex;gap:1rem;align-items:center;flex-shrink:0;margin-left:1rem}
.nav-cta .btn{padding:.7rem 1rem;font-size:.86rem}
.nav-cta .btn-ghost{padding-inline:0}
.has-menu > a::after{content:"";display:inline-block;width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);margin-left:.45rem;opacity:.5}
.submenu{position:absolute;top:100%;left:0;min-width:270px;background:#fff;border:1px solid var(--ink);padding:0;list-style:none;margin:0;opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .16s ease,transform .16s ease}
.has-menu:hover .submenu,.has-menu:focus-within .submenu{opacity:1;visibility:visible;transform:translateY(0)}
.submenu li+li{border-top:1px solid var(--line)}
.submenu a{padding:.85rem 1rem;font-size:.9rem;border-bottom:0}
.submenu a:hover{background:var(--paper);border-bottom:0}
.submenu .sm-desc{display:block;font-size:.75rem;color:var(--muted);font-weight:400;margin-top:.15rem;line-height:1.4}
.burger{display:none;margin-left:auto;background:none;border:1px solid var(--ink);border-radius:2px;width:44px;height:44px;cursor:pointer;align-items:center;justify-content:center;flex-direction:column;gap:4px}
.burger span{display:block;width:18px;height:1.5px;background:var(--ink);transition:.2s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}
.mobile-nav{display:none;border-top:1px solid var(--line);background:#fff;max-height:calc(100vh - 76px);overflow-y:auto;padding:.5rem 0 2rem}
@media(max-width:1120px){.nav-links,.nav-cta{display:none}.burger{display:flex}.mobile-nav:not([hidden]){display:block}}
.mobile-nav[hidden]{display:none!important}
.mobile-nav ul{list-style:none;padding:0;margin:0}
.mobile-nav a{display:block;padding:.85rem .4rem;font-size:1rem;font-weight:500;color:var(--ink);border-bottom:1px solid var(--line)}
.mobile-nav .sub a{padding-left:1.3rem;font-size:.9rem;font-weight:400;color:var(--muted)}
.mobile-nav .btn{width:100%;margin-top:1rem;justify-content:center}
.mobile-nav a.btn-primary{color:#fff;border-bottom:0}
.mobile-nav a.btn-gold{color:var(--ink-900);border-bottom:0}
.mobile-nav .btn-ghost{border:1.5px solid var(--line-strong);padding:.95rem 1.7rem}

/* ---------- Announce bar ---------- */
.announce{background:var(--ink);color:#B9CCE4;font-size:.8rem;letter-spacing:.02em;text-align:center;padding:.35rem 1rem}
.announce a{display:inline-block;padding:.55rem 0}
.announce a{color:var(--gold);font-weight:600}
.announce a:hover{text-decoration:underline}
.announce strong{color:#fff;font-weight:600}

/* ---------- Hero ---------- */
/* Flat colour. No gradient, no glow, no mesh overlay. */
.hero{position:relative;background:var(--ink);color:#AFC2DA;padding:clamp(4rem,2rem + 7vw,7.5rem) 0 clamp(3.5rem,2rem + 5vw,5.5rem);overflow:hidden}
.hero::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--gold)}
.hero h1{color:#fff;max-width:15ch;margin-bottom:1.75rem}
.hero-sub{font-size:clamp(1.05rem,1rem + .4vw,1.24rem);color:#A8BDD8;max-width:46ch;margin-bottom:2.5rem;line-height:1.55}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(2rem,1rem + 4vw,4.5rem);align-items:start}
@media(max-width:940px){.hero-grid{grid-template-columns:1fr}}
/* Hero meta line — replaces the old floating "AI-powered" pill */
.pill{display:inline-flex;align-items:center;gap:.6rem;background:none;border:0;border-top:1.5px solid rgba(255,255,255,.35);color:var(--gold);padding:.85rem 0 0;border-radius:0;font-size:.7rem;font-weight:650;letter-spacing:.2em;text-transform:uppercase;margin-bottom:2rem}
.pill .dot{width:6px;height:6px;border-radius:50%;background:var(--gold);flex-shrink:0}
/* Stats as a ruled row of large figures */
.hero-proof{display:grid;grid-template-columns:repeat(4,auto);justify-content:start;gap:0;margin-top:3.25rem;border-top:1px solid rgba(255,255,255,.22)}
@media(max-width:620px){.hero-proof{grid-template-columns:repeat(2,1fr)}}
.hero-proof div{padding:1.5rem 2.25rem 0 0;margin-right:2.25rem;border-right:1px solid rgba(255,255,255,.14)}
.hero-proof div:last-child{border-right:0;margin-right:0;padding-right:0}
@media(max-width:620px){.hero-proof div:nth-child(2n){border-right:0;margin-right:0;padding-right:0}}
.hero-proof b{display:block;font-family:var(--f-display);font-size:clamp(2rem,1.5rem + 1.6vw,2.9rem);color:#fff;line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.hero-proof span{display:block;font-size:.68rem;color:#8AA3C4;letter-spacing:.16em;text-transform:uppercase;margin-top:.6rem;font-weight:600}

/* Hero panel — a bordered ledger, not a frosted glass card */
.hero-card{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.2);border-radius:2px;padding:1.75rem}
.hero-card h3,.hc-title{color:#fff;font-size:.7rem;font-family:var(--f-body);font-weight:650;letter-spacing:.18em;text-transform:uppercase;margin:0 0 1.4rem;padding-bottom:1rem;border-bottom:1px solid rgba(255,255,255,.18);display:flex;align-items:center;gap:.6rem}
.hero-card h3 svg,.hc-title svg{width:14px;height:14px;stroke:var(--gold);fill:none;stroke-width:2;flex-shrink:0}
.timeline{list-style:none;padding:0;margin:0}
.timeline li{display:flex;gap:.9rem;align-items:baseline;padding:.7rem 0;font-size:.87rem;color:#BDD0E6;border-bottom:1px solid rgba(255,255,255,.09);margin:0}
.timeline li:last-child{border-bottom:0;padding-bottom:0}
.timeline .tick{flex-shrink:0;width:14px;height:14px;border:1px solid rgba(255,255,255,.35);display:grid;place-items:center;align-self:center;border-radius:0}
.timeline .tick::after{content:"";width:6px;height:3px;border-left:1.5px solid rgba(255,255,255,.55);border-bottom:1.5px solid rgba(255,255,255,.55);transform:rotate(-45deg) translate(1px,-1px)}
.timeline .when{margin-left:auto;font-family:var(--f-mono);font-size:.66rem;color:#7E9ABE;white-space:nowrap;letter-spacing:.1em;text-transform:uppercase}
.timeline li.ai .tick{border-color:var(--gold)}
.timeline li.ai .tick::after{border-color:var(--gold)}
.timeline li.ai .when{color:var(--gold)}

/* ---------- Cards ---------- */
/* A card is a ruled column of a contents page. No box, no shadow, no lift. */
.card{background:none;border:0;border-top:1.5px solid var(--rule);border-radius:0;padding:1.4rem 0 0;box-shadow:none;height:100%;display:flex;flex-direction:column;transition:border-color .18s ease}
a.card:hover,.card.hoverable:hover{border-top-color:var(--brand);text-decoration:none;transform:none}
.card h3{margin-bottom:.5rem;transition:color .18s ease}
a.card:hover h3{color:var(--brand)}
.card p{color:var(--muted);font-size:.93rem;line-height:1.6}
.card .card-foot{margin-top:auto;padding-top:1.2rem}
.card-link{font-weight:600;font-size:.82rem;letter-spacing:.1em;text-transform:uppercase;color:var(--brand);display:inline-flex;align-items:center;gap:.45rem}
.card-link::after{content:"→";transition:transform .18s ease;display:inline-block}
a.card:hover .card-link::after,.card.hoverable:hover .card-link::after{transform:translateX(5px)}
.bg-ink .card,.bg-brand .card{border-top-color:rgba(255,255,255,.32)}
.bg-ink a.card:hover,.bg-brand a.card:hover{border-top-color:var(--gold)}
.bg-ink .card p,.bg-brand .card p{color:#9DB4D0}
.bg-ink a.card:hover h3,.bg-brand a.card:hover h3{color:var(--gold)}
/* Icons sit inline and unboxed */
.icon{width:auto;height:24px;background:none;border:0;border-radius:0;display:flex;align-items:center;margin-bottom:1.1rem;color:var(--brand);flex-shrink:0}
.icon svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.icon.gold{color:var(--gold-700)}
.icon.ai{color:var(--ai)}
.bg-ink .icon,.bg-brand .icon{color:var(--gold)}
.card-ink{background:none;border-top-color:rgba(255,255,255,.32);color:#B0C5DE}
.card-ink p{color:#9DB4D0}

/* Numbered steps */
.steps{counter-reset:step;display:grid;gap:0}
.step{position:relative;padding:1.6rem 0 1.6rem 5rem;counter-increment:step;border-top:1px solid var(--line)}
.step:first-child{border-top:1.5px solid var(--rule)}
.step::before{content:counter(step,decimal-leading-zero);position:absolute;left:0;top:1.6rem;width:auto;height:auto;background:none;border:0;border-radius:0;font-family:var(--f-mono);font-size:.8rem;font-weight:500;letter-spacing:.08em;color:var(--brand)}
.step h3{margin-bottom:.4rem;font-size:1.2rem}
.step p{color:var(--muted);margin-bottom:0;font-size:.93rem}
.bg-ink .step,.bg-brand .step{border-top-color:rgba(255,255,255,.16)}
.bg-ink .step:first-child,.bg-brand .step:first-child{border-top-color:rgba(255,255,255,.4)}
.bg-ink .step::before,.bg-brand .step::before{background:none;border:0;color:var(--gold)}

/* ---------- Chips ---------- */
.chip{display:inline-flex;align-items:center;gap:.4rem;font-size:.66rem;font-weight:650;letter-spacing:.16em;text-transform:uppercase;padding:.3rem .5rem;border-radius:2px;background:none;color:var(--ai);border:1px solid rgba(14,124,134,.4)}
.chip.human{background:none;color:var(--brand);border-color:rgba(0,74,173,.35)}
.chip.gold{background:none;color:var(--gold-700);border-color:rgba(168,131,10,.45)}
.chip-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}

/* ---------- Logo wall ---------- */
.logo-wall{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:clamp(2rem,1rem + 3.5vw,4rem);opacity:.5;filter:grayscale(1)}
.logo-wall img{height:24px;width:auto;object-fit:contain}
.logo-wall img.tall{height:34px}

/* ---------- Pricing ---------- */
.price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;align-items:stretch;border-top:1.5px solid var(--rule)}
@media(max-width:960px){.price-grid{grid-template-columns:1fr;max-width:520px;margin-inline:auto}}
.plan{background:none;border:0;border-right:1px solid var(--line);border-radius:0;padding:2rem 2rem 2rem 0;display:flex;flex-direction:column;box-shadow:none;position:relative;margin-right:2rem}
.plan:last-child{border-right:0}
@media(max-width:960px){.plan{border-right:0;border-bottom:1px solid var(--line);margin-right:0;padding-right:0}.plan:last-child{border-bottom:0}}
.plan.featured{border-top:3px solid var(--gold);margin-top:-3px;padding-top:2rem}
/* Absolutely positioned so it cannot push the featured column out of
   horizontal register with its neighbours (was 30.4px low). */
.plan{position:relative}
.plan-tag{position:absolute;top:-1.6rem;left:0;display:inline-block;background:none;color:var(--brand);font-size:.72rem;font-weight:650;letter-spacing:.16em;text-transform:uppercase;padding:0;border-radius:0;white-space:nowrap}
.plan h3{font-size:1.3rem;margin-bottom:.3rem}
.plan .plan-for{font-size:.86rem;color:var(--muted);margin-bottom:1.5rem;min-height:2.6em}
.price{font-family:var(--f-display);font-size:3rem;color:var(--ink);line-height:1;letter-spacing:-.045em;display:inline-flex;align-items:flex-start;gap:.04em;font-variant-numeric:tabular-nums}
.price sup{font-size:1.15rem;top:0;position:relative;font-family:var(--f-body);font-weight:600;line-height:1.6;vertical-align:baseline}
.price-from{display:block;font-size:.66rem;font-weight:650;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:.6rem}
.plan .price-wrap{padding-bottom:.2rem}
.price-unit{font-size:.88rem;color:var(--muted);font-family:var(--f-body)}
.plan ul{list-style:none;padding:0;margin:1.7rem 0;font-size:.91rem}
.plan ul li{position:relative;padding-left:1.6rem;margin-bottom:.65rem;color:var(--body)}
.plan ul li::before{content:"";position:absolute;left:0;top:.45em;width:10px;height:6px;border-left:1.5px solid var(--green);border-bottom:1.5px solid var(--green);transform:rotate(-45deg)}
.plan ul li.no{color:var(--muted)}
.plan ul li.no::before{content:"—";border:0;transform:none;top:0;left:0;color:var(--line-strong)}
.plan .btn{margin-top:auto;width:100%}
.plan .btn-ghost{justify-content:flex-start;width:auto}

/* ---------- Tables ---------- */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;border:0;border-top:1.5px solid var(--rule);border-radius:0;box-shadow:none;background:none}
.table-wrap:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.table-hint{display:none;font-size:.78rem;color:var(--muted);margin:.55rem 0 0;letter-spacing:.03em}
.table-wrap.is-scrollable + .table-hint{display:block}
table{width:100%;border-collapse:collapse;font-size:.91rem;min-width:520px}
th,td{padding:.9rem 1.2rem .9rem 0;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
thead th{background:none;font-family:var(--f-body);font-weight:650;font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);white-space:nowrap;padding-top:1rem}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:var(--paper)}
td strong{color:var(--ink)}

/* ---------- FAQ ---------- */
.faq{border-top:1.5px solid var(--rule)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;padding:1.4rem 2.5rem 1.4rem 0;position:relative;font-family:var(--f-display);font-size:clamp(1.05rem,1rem + .3vw,1.24rem);font-weight:600;color:var(--ink);line-height:1.25;letter-spacing:-.02em}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:.2rem;top:1.75rem;width:11px;height:1.5px;background:var(--brand)}
.faq summary::before{content:"";position:absolute;right:7.95px;top:1.75rem;width:1.5px;height:11px;background:var(--brand);transform:translateY(-4.75px);transition:opacity .2s ease}
.faq details[open] summary::before{opacity:0}
.faq summary:hover{color:var(--brand)}
.faq .answer{padding:0 2.5rem 1.6rem 0;color:var(--muted);font-size:.95rem;max-width:70ch}
.faq .answer p:last-child{margin-bottom:0}
.faq .answer strong{color:var(--ink)}

/* ---------- Direct answer block (AEO) ---------- */
.answer-box{background:none;border:0;border-top:1.5px solid var(--rule);border-left:0;border-radius:0;padding:1.2rem 0 0;margin:2rem 0}
.answer-box p:last-child{margin-bottom:0}
.answer-box p{font-size:1.02rem;color:var(--ink);line-height:1.6;max-width:64ch}
.answer-box .ab-label{font-size:.78rem;font-weight:650;letter-spacing:.1em;text-transform:uppercase;color:var(--brand);margin-bottom:.7rem;display:block}
.bg-ink .answer-box,.hero .answer-box{border-top-color:rgba(255,255,255,.35)}
.bg-ink .answer-box p{color:#D2E0F0}

.callout{background:var(--sand);border:0;border-left:2px solid var(--gold);border-radius:0;padding:1.3rem 1.5rem;margin:2rem 0}
.callout.ai{background:var(--paper);border-left-color:var(--ai)}
.callout p:last-child{margin-bottom:0}

/* ---------- Testimonials ---------- */
.quote{background:none;border:0;border-top:1.5px solid var(--rule);border-radius:0;padding:1.5rem 0 0;box-shadow:none;display:flex;flex-direction:column;height:100%}
.stars{color:var(--gold-700);letter-spacing:.14em;font-size:.95rem;margin-bottom:1rem}
.quote blockquote{margin:0 0 1.3rem;font-family:var(--f-display);font-size:1.14rem;line-height:1.4;color:var(--ink);letter-spacing:-.02em}
.quote cite{margin-top:auto;font-style:normal;font-size:.8rem;color:var(--ink);font-weight:600;letter-spacing:.02em}
.quote cite span{display:block;font-weight:400;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:.3rem}

/* ---------- State directory ---------- */
.state-search{position:relative;max-width:100%;margin:0 0 2.5rem}
.state-search input{width:100%;padding:1rem 1rem 1rem 2.4rem;border:0;border-bottom:1.5px solid var(--rule);border-radius:0;font-size:1.05rem;font-family:inherit;background:none;box-shadow:none}
.state-search input:focus{border-bottom-color:var(--brand);outline:none;box-shadow:none}
.state-search::before{content:"⌕";position:absolute;left:.2rem;top:50%;transform:translateY(-58%);font-size:1.4rem;color:var(--muted)}
.state-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0 2.5rem}
.state-item{display:flex;align-items:baseline;gap:.75rem;padding:.85rem 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;font-size:.94rem;font-weight:500;color:var(--body);transition:color .15s ease}
.state-item:hover{border-color:var(--line);color:var(--brand);background:none;text-decoration:none;transform:none}
.state-item .abbr{font-family:var(--f-mono);font-size:.68rem;font-weight:500;letter-spacing:.08em;color:var(--muted);background:none;border-radius:0;padding:0;flex-shrink:0;min-width:1.8em}
.state-item.supported .abbr{background:none;color:var(--ai)}
.state-item[hidden]{display:none}
.state-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0;background:none;border:0;border-top:1.5px solid var(--rule);border-radius:0;overflow:visible;margin:2.25rem 0}
.state-facts div{background:none;padding:1.25rem 2rem 1.25rem 0;border-bottom:1px solid var(--line)}
.state-facts dt{font-size:.66rem;font-weight:650;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:.45rem}
.state-facts dd{margin:0;font-size:.94rem;color:var(--ink);font-weight:500;line-height:1.45}

/* ---------- Breadcrumbs ---------- */
.crumbs{font-size:.72rem;color:var(--muted);padding:1.4rem 0 0;letter-spacing:.1em;text-transform:uppercase;font-weight:500}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem;padding:0;margin:0}
.crumbs li{margin:0;display:flex;gap:.5rem;align-items:center}
.crumbs li+li::before{content:"/";color:var(--line-strong)}
.crumbs a{color:var(--muted)}
.crumbs a:hover{color:var(--brand)}
.crumbs [aria-current]{color:var(--ink);font-weight:600}

/* ---------- Page header ---------- */
.page-head{background:none;border-bottom:1px solid var(--line);padding-bottom:clamp(2.75rem,1.5rem + 3.5vw,4.5rem)}
.page-head .wrap-narrow.mx-auto{margin-inline:0}
.page-head h1{margin-top:1.5rem;max-width:18ch}
.page-head .lead{max-width:58ch;margin-top:1.4rem}

/* ---------- Prose ---------- */
.prose{font-size:1.06rem;line-height:1.72}
.prose h2{margin-top:2.5em;margin-bottom:.55em;font-size:clamp(1.5rem,1.2rem + 1.1vw,2.05rem);padding-top:1.5rem;border-top:1px solid var(--line)}
.prose h3{margin-top:1.9em;margin-bottom:.45em}
.prose > *:first-child{margin-top:0}
.prose > h2:first-child{border-top:0;padding-top:0}
.prose ul li,.prose ol li{margin-bottom:.55em}
.prose img{border-radius:0;margin:2.25rem 0}
.prose figure{margin:2.25rem 0}
.prose figcaption{font-size:.78rem;color:var(--muted);text-align:left;margin-top:.75rem;letter-spacing:.06em}
.prose blockquote{margin:2.25rem 0;padding-left:1.5rem;border-left:2px solid var(--gold);font-family:var(--f-display);font-size:1.28rem;line-height:1.4;color:var(--ink);letter-spacing:-.02em}
.toc{background:none;border:0;border-top:1.5px solid var(--rule);border-bottom:1px solid var(--line);border-radius:0;padding:1.3rem 0;margin-bottom:2.75rem}
.toc h2{font-size:.66rem!important;letter-spacing:.2em;text-transform:uppercase;font-family:var(--f-body);color:var(--muted);margin:0 0 .9em!important;border:0!important;padding:0!important;font-weight:650}
.toc ol{margin:0;padding-left:1.1rem;font-size:.91rem}
.toc li{margin-bottom:.4em}

/* ---------- Forms ---------- */
.form-card{background:none;border:0;border-top:1.5px solid var(--rule);border-radius:0;box-shadow:none;padding:2rem 0 0}
.field{margin-bottom:1.4rem}
.field label{display:block;font-size:.82rem;font-weight:650;letter-spacing:.06em;color:var(--ink);margin-bottom:.5rem}
.field .hint{font-size:.78rem;color:var(--muted);font-weight:400;margin-top:.3rem;letter-spacing:0;text-transform:none}
.field input,.field select,.field textarea{width:100%;padding:.75rem 0;border:0;border-bottom:1.5px solid var(--muted);border-radius:0;font-family:inherit;font-size:1rem;background:none;color:var(--ink);transition:border-color .15s,box-shadow .15s}
.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-bottom-color:var(--brand)}
.field textarea{min-height:110px;resize:vertical}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
@media(max-width:560px){.field-row{grid-template-columns:1fr}}
.choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem}
.choice{position:relative}
.choice input{position:absolute;opacity:0;width:0;height:0}
.choice span{display:block;padding:.85rem 1rem;border:1px solid var(--line-strong);border-radius:2px;text-align:center;font-size:.9rem;font-weight:500;cursor:pointer;transition:.15s;background:none}
.choice input:checked + span{border-color:var(--brand);background:var(--brand);color:#fff;font-weight:600}
.choice input:focus-visible + span{outline:2px solid var(--brand);outline-offset:2px}
.choice span:hover{border-color:var(--ink)}
.form-steps{display:flex;gap:.4rem;margin-bottom:2rem}
.form-steps div{flex:1;height:2px;border-radius:0;background:var(--line);transition:background .3s}
.form-steps div.done{background:var(--brand)}
.fieldset-step[hidden]{display:none}
.form-nav{display:flex;gap:1.5rem;justify-content:space-between;align-items:center;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--line)}
.step-label{font-size:.66rem;font-weight:650;letter-spacing:.2em;text-transform:uppercase;color:var(--brand);margin-bottom:.6rem}

/* ---------- Calculator ---------- */
.calc{display:grid;grid-template-columns:1fr 1fr;gap:3rem}
@media(max-width:800px){.calc{grid-template-columns:1fr}}
.calc-out{background:var(--ink);border-radius:2px;padding:2rem;color:#AFC2DA;display:flex;flex-direction:column;justify-content:center}
.calc-out .big{font-family:var(--f-display);font-size:clamp(2.4rem,1.6rem + 2.6vw,3.4rem);color:var(--gold);line-height:1;margin:.4rem 0 .3rem;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.calc-out .row{display:flex;justify-content:space-between;padding:.7rem 0;border-bottom:1px solid rgba(255,255,255,.12);font-size:.88rem}
.calc-out .tiny,.calc-out .small{color:#AFC2DA}
.calc-out .row:last-of-type{border-bottom:0}
.calc-out .row b{color:#fff;font-variant-numeric:tabular-nums}
input[type=range]{width:100%;accent-color:var(--brand);height:4px}
.range-val{font-weight:650;color:var(--brand);font-variant-numeric:tabular-nums}

/* ---------- CTA band ---------- */
.cta-band{background:var(--ink);color:#AFC2DA;border-radius:2px;padding:clamp(2.5rem,1.4rem + 3.5vw,4.5rem);text-align:left;position:relative;overflow:hidden}
.cta-band::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--gold)}
.cta-band h2{color:#fff;max-width:18ch;margin-inline:0}
.cta-band .lead{color:#A8BDD8;max-width:52ch;margin-inline:0;margin-bottom:2.25rem}
.cta-band .btn-row.center{justify-content:flex-start}

/* ---------- Footer ---------- */
.site-footer{background:var(--ink-900);color:#8598B2;font-size:.88rem;padding:clamp(3.5rem,2rem + 3vw,5rem) 0 2rem}
.footer-grid{display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr;gap:3rem;padding-bottom:3rem;border-bottom:1px solid rgba(255,255,255,.12)}
@media(max-width:900px){.footer-grid{grid-template-columns:1fr 1fr;gap:2.5rem}}
@media(max-width:520px){.footer-grid{grid-template-columns:1fr}}
.site-footer h3{color:#fff;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;margin-bottom:1.3rem;font-family:var(--f-body);font-weight:650}
.site-footer ul{list-style:none;padding:0;margin:0}
.site-footer li{margin-bottom:.2rem}
.site-footer li a{display:inline-block;padding:.42rem 0}
.site-footer a{color:#8598B2}
.site-footer a:hover{color:var(--gold)}
.footer-brand img{width:42px;height:42px;border-radius:2px;margin-bottom:1.2rem}
.footer-brand p{max-width:34ch;font-size:.86rem;line-height:1.6}
.footer-bottom{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center;padding-top:2rem;font-size:.8rem;color:#8FA3BD;letter-spacing:.04em}
.footer-bottom ul{display:flex;gap:1.5rem;flex-wrap:wrap}
.footer-bottom li{margin:0}
.social{display:flex;gap:.35rem;margin-top:.6rem;margin-left:-10px}
.social a{min-width:44px;min-height:44px;border-radius:0;border:0;display:grid;place-items:center;color:#8598B2;transition:color .16s}
.social a:hover{background:none;color:var(--gold);border-color:transparent}
.social a svg{width:18px;height:18px;fill:currentColor;stroke:none}
.footer-partner{display:block;background:none;border:0;border-top:1px solid rgba(255,255,255,.16);border-radius:0;padding:1rem 0 0;font-size:.75rem;line-height:1.6;margin-top:1.5rem;max-width:32ch;letter-spacing:.02em}
.footer-partner b{color:#fff;font-weight:600}

/* ---------- Misc ---------- */
.tag{display:inline-block;font-size:.66rem;font-weight:650;letter-spacing:.18em;text-transform:uppercase;color:var(--brand);background:none;padding:0;border-radius:0;margin-bottom:1rem}
.note{font-size:.82rem;color:var(--muted);border-left:2px solid var(--line-strong);padding-left:1rem;margin:1.5rem 0}
.placeholder{background:rgba(255,222,89,.3);border-bottom:1px solid var(--gold-700);padding:0 .2rem;border-radius:0}
.divider-gold{width:40px;height:2px;background:var(--gold);border-radius:0;margin:1.4rem 0}
.center .divider-gold{margin-inline:auto}

/* Reveal on scroll — restrained */
/* Reveal-on-scroll, CSS only, and it never touches opacity.

   History worth keeping: this was opacity:0 undone by an IntersectionObserver,
   so any JS failure left up to 100% of a page invisible. Gating it behind a .js
   class did not help -- the class was set inline in <head>, so it was still set
   when the script it vouched for never ran. Moving to a scroll-driven CSS
   animation removed the JS dependency but kept the real hazard: a renderer that
   does not scroll (Googlebot, a reader mode, a screenshot service) would still
   see transparent text below the fold.

   So the animation now moves the element and nothing else. Text is opaque at
   every point in its timeline: always selectable, always in the accessibility
   tree, always visible to a crawler, with or without CSS, JS or scrolling. */
.reveal{opacity:1;transform:none}
@supports (animation-timeline:view()){
  .reveal{
    transform:translateY(12px);
    animation:sc-reveal linear forwards;
    animation-timeline:view();
    animation-range:entry 0% cover 16%;
  }
}
@keyframes sc-reveal{to{transform:none}}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  /* `.js .reveal` is (0,2,0); a bare `.reveal` here is (0,1,0) and loses. */
  .reveal{opacity:1;transform:none;animation:none}
}

/* Print */
@media print{
  .site-header,.site-footer,.cta-band,.announce,.btn{display:none!important}
  body{font-size:11pt;color:#000}
}
