:root{
  --cream:#FAF8F4; --paper:#FFFFFF; --ink:#141414; --muted:#5A5A5A;
  --deep:#1F4E79; --mid:#2E75B6; --sun:#F5B400; --gold:#8A6508;
  --line:#E4E1DA; --line-strong:#8A8478;
  --deep-2:#173B5C;
  --radius:14px; --radius-lg:22px;
  --font-display:Georgia,'Times New Roman',serif;
  --font-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --font-mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto} *{transition:none!important;animation:none!important}}
body{font-family:var(--font-body);color:var(--ink);background:var(--cream);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%}
a{color:var(--mid)}
.wrap{max-width:1180px;margin:0 auto;padding:0 28px}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
h1,h2,h3{font-family:var(--font-display);font-weight:400;color:var(--ink);letter-spacing:-.01em}
h1{font-size:clamp(40px,5.6vw,68px);line-height:1.06}
h2{font-size:clamp(30px,3.6vw,44px);line-height:1.12;margin-bottom:18px}
h3{font-size:22px;line-height:1.3;margin-bottom:8px}
.lead{font-size:20px;color:var(--muted);max-width:62ch}
p+p{margin-top:14px}
.section{padding:88px 0}
.section.tight{padding:64px 0}
.band-paper{background:var(--paper)}
.band-deep{background:var(--deep);color:#E8EAED}
.band-deep h2,.band-deep h3{color:#fff}
.band-deep .lead,.band-deep p{color:#C9D6E4}
.band-deep .eyebrow{color:var(--sun)}
.band-sun{background:var(--sun);color:var(--ink)}
.band-sun .eyebrow{color:#6B4E00}
.center{text-align:center}
.center .lead{margin-left:auto;margin-right:auto}

/* ---------- nav ---------- */
header.site{position:sticky;top:0;z-index:50;background:rgba(250,248,244,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;gap:26px;height:104px}
.nav .logo{height:64px;width:auto;flex-shrink:0}
.nav .logo svg{height:64px;width:auto}
.nav nav{display:flex;gap:4px;margin-left:auto;overflow-x:auto}
.nav nav a{color:var(--ink);text-decoration:none;font-size:15px;font-weight:600;padding:9px 14px;border-radius:999px;white-space:nowrap}
.nav nav a:hover{background:#F0EDE5}
.nav nav a.active{background:var(--deep);color:#fff}
.nav .cta{margin-left:8px;flex-shrink:0}
a.btn{display:inline-flex;align-items:center;gap:10px;text-decoration:none;font-weight:700;font-size:15.5px;padding:13px 24px;border-radius:999px;border:2px solid transparent;transition:transform .15s ease, background .15s ease}
a.btn:active{transform:translateY(1px)}
a.btn:focus-visible,.nav nav a:focus-visible,a:focus-visible,button:focus-visible{outline:3px solid var(--mid);outline-offset:2px}
.btn-primary{background:var(--ink);color:#fff}
.btn-primary:hover{background:#000}
.btn-primary .tag{background:var(--sun);color:var(--ink);border-radius:6px;padding:1px 7px;font-size:13px;line-height:1.5}
.btn-sun{background:var(--sun);color:var(--ink)}
.btn-sun:hover{background:#E5A800}
.btn-ghost{border-color:var(--line-strong);color:var(--ink);background:transparent}
.btn-ghost:hover{background:#F0EDE5}
.band-deep .btn-ghost{border-color:#5C7488;color:#fff}
.band-deep .btn-ghost:hover{background:var(--deep-2)}

/* honeypot: invisible to humans, present for bots */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* ---------- hero ---------- */
.hero{padding:96px 0 72px}
.hero h1{max-width:15ch}
.hero .lead{margin:26px 0 34px}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap}
.factstrip{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;margin-top:72px}
.fact{background:var(--paper);padding:26px 28px}
.fact b{font-family:var(--font-display);font-weight:400;font-size:26px;display:block;color:var(--deep);margin-bottom:4px}
.fact span{font-size:14.5px;color:var(--muted)}

/* ---------- cards ---------- */
.grid{display:grid;gap:22px}
.grid.c2{grid-template-columns:1fr 1fr}
.grid.c3{grid-template-columns:repeat(3,1fr)}
.grid.c4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);padding:30px}
.card.sun{background:var(--sun);border-color:var(--sun)}
.card.deep{background:var(--deep);border-color:var(--deep);color:#E8EAED}
.card.deep h3{color:#fff}
.card.deep p{color:#C9D6E4}
.card .icon{width:46px;height:46px;border-radius:12px;background:var(--deep);display:flex;align-items:center;justify-content:center;margin-bottom:18px}
.card.sun .icon{background:var(--ink)}
.card .icon svg{width:24px;height:24px}
.card p{font-size:15.5px;color:var(--muted)}
.card.sun p{color:#463200}
.card .go{margin-top:20px;display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:15px;color:var(--ink);text-decoration:none}
.card .go .arr{width:28px;height:28px;border-radius:50%;background:var(--sun);display:inline-flex;align-items:center;justify-content:center;transition:transform .15s ease}
.card.sun .go .arr{background:var(--ink)}
.card.sun .go .arr svg path{stroke:var(--sun)}
.card .go:hover .arr{transform:translateX(4px)}

/* ---------- flow (product) ---------- */
.flow{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;counter-reset:step}
.step{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:22px 18px;position:relative}
.step::before{counter-increment:step;content:counter(step,decimal-leading-zero);font-family:var(--font-mono);font-size:12px;font-weight:700;color:var(--gold);display:block;margin-bottom:10px;letter-spacing:.1em}
.step b{display:block;font-size:15.5px;margin-bottom:6px;color:var(--deep)}
.step span{font-size:13.5px;color:var(--muted);line-height:1.5;display:block}
.step.hot{background:var(--sun);border-color:var(--sun)}
.step.hot b{color:var(--ink)}
.step.hot span{color:#463200}
.step.hot::before{color:#6B4E00}

/* ---------- split lists ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.pane{border-radius:var(--radius-lg);padding:34px}
.pane.we{background:var(--deep);color:#E8EAED}
.pane.you{background:var(--paper);border:1px solid var(--line)}
.pane h3{margin-bottom:16px}
.pane.we h3{color:#fff}
.pane ul{list-style:none}
.pane li{padding:10px 0 10px 34px;position:relative;font-size:15.5px;border-top:1px solid rgba(138,132,120,.25)}
.pane.we li{border-top-color:rgba(255,255,255,.14);color:#C9D6E4}
.pane li::before{content:"";position:absolute;left:0;top:16px;width:18px;height:18px;border-radius:50%;background:var(--sun)}
.pane li::after{content:"";position:absolute;left:5px;top:21px;width:8px;height:5px;border-left:2.5px solid var(--ink);border-bottom:2.5px solid var(--ink);transform:rotate(-45deg)}

/* ---------- notice ---------- */
.notice{border-left:6px solid var(--sun);background:var(--paper);border-radius:0 var(--radius) var(--radius) 0;padding:26px 30px;box-shadow:0 1px 0 var(--line)}
.notice b{color:var(--deep)}

/* ---------- tables ---------- */
table{width:100%;border-collapse:collapse;background:var(--paper);border-radius:var(--radius);overflow:hidden;font-size:15.5px}
th{background:var(--ink);color:#fff;text-transform:uppercase;font-size:12.5px;letter-spacing:.08em;text-align:left;padding:14px 18px}
td{padding:14px 18px;border-top:1px solid var(--line)}
tr:nth-child(even) td{background:var(--cream)}
td.num{font-family:var(--font-mono);font-size:14.5px}
.tbl-note{font-size:13.5px;color:var(--muted);margin-top:12px}

/* ---------- pricing tiles ---------- */
.tiers{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.tier{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);padding:28px 24px;text-align:center}
.tier.pop{background:var(--deep);border-color:var(--deep);color:#C9D6E4}
.tier .range{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}
.tier.pop .range{color:var(--sun)}
.tier .pct{font-family:var(--font-display);font-size:52px;color:var(--deep);line-height:1.15;margin:10px 0 2px}
.tier.pop .pct{color:#fff}
.tier .fix{font-size:14px;color:var(--muted)}
.tier.pop .fix{color:#C9D6E4}

/* ---------- waterfall ---------- */
.calc{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);padding:38px;max-width:640px;margin:0 auto}
.calc .row{display:flex;justify-content:space-between;align-items:baseline;padding:15px 4px;border-bottom:1px solid var(--line);gap:16px}
.calc .row span{font-size:15.5px}
.calc .row small{display:block;color:var(--muted);font-size:13px}
.calc .row .amt{font-family:var(--font-mono);font-size:17px;white-space:nowrap}
.calc .row.minus .amt{color:#8A3B12}
.calc .row.total{border-bottom:none;border-top:3px solid var(--ink);margin-top:4px;padding-top:18px}
.calc .row.total span{font-weight:700;font-size:17px}
.calc .row.total .amt{font-weight:700;font-size:22px;background:var(--sun);padding:2px 10px;border-radius:8px}

/* ---------- forms ---------- */
form .field{margin-bottom:20px}
label{display:block;font-weight:700;font-size:14.5px;margin-bottom:7px}
label .opt{font-weight:400;color:var(--muted)}
input[type=text],input[type=email],input[type=url],select,textarea{width:100%;font:inherit;font-size:16px;padding:13px 15px;border:1.5px solid var(--line-strong);border-radius:10px;background:var(--paper);color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:3px solid var(--mid);outline-offset:1px;border-color:var(--mid)}
textarea{min-height:120px;resize:vertical}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 22px}
button.btn{font:inherit;font-weight:700;font-size:16px;padding:15px 30px;border-radius:999px;border:none;background:var(--sun);color:var(--ink);cursor:pointer}
button.btn:hover{background:#E5A800}
.altcha{display:flex;align-items:center;gap:12px;border:1.5px dashed var(--line-strong);border-radius:10px;padding:14px 16px;font-size:14px;color:var(--muted);margin:26px 0}
.altcha .box{width:22px;height:22px;border:2px solid var(--line-strong);border-radius:5px;flex-shrink:0}
.privacy{font-size:13.5px;color:var(--muted);border-left:4px solid var(--sun);padding-left:14px;margin:26px 0}

/* ---------- footer ---------- */
footer.site{background:var(--deep);color:#C9D6E4;padding:64px 0 40px;margin-top:0}
footer .cols{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap;align-items:flex-start}
footer .logo svg{height:76px;width:auto}
footer nav{display:flex;gap:22px;flex-wrap:wrap}
footer nav a{color:#C9D6E4;text-decoration:none;font-size:14.5px}
footer nav a:hover{color:#fff}
footer .id{margin-top:36px;padding-top:22px;border-top:1px solid rgba(255,255,255,.16);font-size:13px;color:#9AB0C6;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}

/* ---------- misc ---------- */
.kicker-line{width:64px;height:5px;background:var(--sun);border-radius:3px;margin-bottom:22px}
.mt-1{margin-top:22px}.mt-2{margin-top:44px}.mt-3{margin-top:66px}
.maxw{max-width:70ch}
.pill{display:inline-block;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:8px 16px;font-size:14.5px;margin:0 8px 10px 0}
.band-deep .pill{background:var(--deep-2);border-color:#3A5A7C;color:#DCE7F2}

@media(max-width:960px){
  .grid.c4{grid-template-columns:1fr 1fr}
  .grid.c3{grid-template-columns:1fr 1fr}
  .flow{grid-template-columns:repeat(3,1fr)}
  .tiers{grid-template-columns:1fr 1fr}
  .factstrip{grid-template-columns:1fr}
  .split{grid-template-columns:1fr}
}
@media(max-width:640px){
  .section{padding:60px 0}
  .hero{padding:64px 0 48px}
  .grid.c2,.grid.c3,.grid.c4{grid-template-columns:1fr}
  .flow{grid-template-columns:1fr 1fr}
  .tiers{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}
  .nav{gap:12px;height:84px}
  .nav .logo svg{height:50px}
  footer .logo svg{height:60px}
  .nav .cta{display:none}
}

/* ---------- CSP utilities (replace former inline styles) ---------- */
.cta-band{display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap}
.pb-56{padding-bottom:56px}.pb-40{padding-bottom:40px}.pt-56{padding-top:56px}
.mb-8{margin-bottom:8px}.mb-10{margin-bottom:10px}.mb-18{margin-bottom:18px}
.mb-28{margin-bottom:28px}.mb-32{margin-bottom:32px}.mb-36{margin-bottom:36px}
.form-h{margin:34px 0 18px}.lead-hero{margin:26px 0 34px}
.maxw-640{max-width:640px}.maxw-820{max-width:820px}
.maxch-15{max-width:15ch}.maxch-16{max-width:16ch}.maxch-17{max-width:17ch}.maxch-18{max-width:18ch}
.c-sun{color:#F5B400}.c-sun-ink{color:#463200}
.fact-row{padding:12px 0;border-bottom:1px solid rgba(255,255,255,.14)}
.fact-row-last{padding:12px 0}
.ai-start{align-items:start}.plainlist{list-style:none;margin-top:12px}
.stack-center{display:flex;flex-direction:column;align-items:center}
.jc-center{justify-content:center}.w-full{width:100%}
/* ---------- intake form: validation states, revised -----------------------

   REPLACES the block appended on 10 August 2026, which hardcoded #B3261E in
   four places. public.css has no red in its palette, so the colour was
   invented on the spot and sits outside the token set — the same mistake as
   the responsibility diagram, which was drawn against back-office tokens
   the public site does not define.

   HOW TO APPLY

   Open public/assets/public.css and find the block that starts with

       /* ---------- intake form: validation states (append to public.css) ---

   Delete everything from that comment to the end of the file, then append
   this. Nothing above it changes.

   THE COLOUR

   --bad is defined here rather than at :root, because the token belongs to
   this stylesheet's own vocabulary and adding it to the root block would
   mean editing a line the rest of the site depends on. #A63229 is the
   brand deep blue's temperature applied to red: it sits beside --gold
   without shouting, and it clears WCAG AA on both --paper and --cream.
*/

.formerrors,
.field .err,
.field.has-error label {
    --bad: #A63229;
    --bad-wash: #FCF4F3;
}

.formerrors {
    border: 1px solid var(--bad);
    border-left-width: 4px;
    background: var(--bad-wash);
    padding: 16px 20px;
    margin-bottom: 28px;
    border-radius: var(--radius-sm, 4px);
}

.formerrors b {
    display: block;
    color: var(--bad);
    margin-bottom: 8px;
}

.formerrors ul {
    margin: 0;
    padding-left: 20px;
}

.formerrors li {
    margin-bottom: 4px;
    line-height: 1.45;
}

.formerrors li::marker { color: var(--bad); }

/* The field itself. Colour is never the only signal: every error also
   carries text, and the field is outlined rather than merely tinted, so it
   reads the same to someone who cannot distinguish the red. */
.field .err {
    display: block;
    color: var(--bad);
    font-size: 13px;
    margin-top: 5px;
    line-height: 1.4;
}

.field.has-error input,
.field.has-error textarea,
.field.has-error select {
    border-color: #A63229;
    outline: 1px solid #A63229;
    outline-offset: -2px;
}

.field.has-error label { color: var(--bad); }
/* ============================================================
   APPEND THIS BLOCK TO THE END OF public/assets/public.css
   ------------------------------------------------------------
   Everything is scoped to .legal or to .hero .muted-note, so it
   cannot alter any existing rule. Nothing here introduces a new
   colour: all values come from the token set in section 10 of
   the master prompt.
   ============================================================ */

.hero .muted-note{
  margin-top:14px;
  font-size:.82rem;
  letter-spacing:.02em;
  color:var(--muted);
}

/* ---- Legal pages ---- */

.legal{
  max-width:70ch;
}

.legal h2{
  margin:44px 0 14px;
}

.legal h2:first-child{
  margin-top:0;
}

.legal h3{
  margin:28px 0 8px;
  font-size:1.02rem;
}

.legal p{
  margin:0 0 14px;
  line-height:1.72;
}

.legal ul:not(.plainlist){
  margin:0 0 18px;
  padding-left:1.2em;
}

.legal ul:not(.plainlist) li{
  margin:6px 0;
  line-height:1.65;
}

.legal ul:not(.plainlist) li::marker{
  color:var(--sun);
}

.legal a{
  color:var(--deep);
  text-underline-offset:.18em;
  text-decoration-thickness:1px;
}

.legal a:hover{
  text-decoration-thickness:2px;
}

/* The split panes already exist for the product page; on a legal
   page they need a little more air above and below. */
.legal .split{
  margin:22px 0 26px;
}

/* The model withdrawal form reads as a document, not as prose. */
.legal .card p{
  margin:0 0 10px;
  font-size:.92rem;
  line-height:1.9;
}

.legal .card p:last-child{
  margin-bottom:0;
}

@media (max-width:640px){
  .legal h2{ margin-top:34px; }
}


/* Footer identification links. --primary measures 1.00:1 against the deep
   blue footer — the same colour as its background. --sun is the token
   for text on dark: 4.71:1 on #1F4E79, 8.37:1 on #12263A. */
footer.site .id a{
  color:var(--sun);
  text-decoration:none;
}

footer.site .id a:hover,
footer.site .id a:focus-visible{
  text-decoration:underline;
  text-underline-offset:.18em;
}
