/* Territory Tool landing page — the app's design language (Task 105 tokens), one face with the app since 1.10.0 (Builder Package v37):
   the same typeface (Public Sans 400/600/800), the same 15px base and type steps, the same mark, the same button language and the same
   two motion tokens. Public Sans is served from this site (fonts/, SIL Open Font License — fonts/OFL.txt), so the page's strict
   same-origin CSP (font-src 'self'; style-src 'self') is unchanged and no font request leaves the site. */
@font-face{font-family:"Public Sans";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/public-sans-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Public Sans";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/public-sans-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Public Sans";font-style:normal;font-weight:800;font-display:swap;src:url(fonts/public-sans-latin-800-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{
  color-scheme: light;
  --act:#1D4ED8; --act-ink:#FFFFFF; --act-bg:#E6EDFD;
  --bg:#F2F4F8; --surface:#FFFFFF; --raised:#F7F9FC; --ink:#131C33; --ink2:#46516A; --ink3:#5F6A82; --line:#DCE2EC; --soft:#E8EDF4;
  --navy:#1B2A4A; --focus:#2B6CB0; /* navy is identity only (mark, wordmark) — never an action */
  --ws-audit:#0E7C7B; --ws-docs:#B3540F; --ws-crt:#5B4BC4; --hot:#A02C2C; --hot-bg:#F8E4E4; --red:#B42F2F;
  --map-bg:#E6ECF2; --map-grid:#D0D9E4; --shadow:0 1px 2px rgba(19,28,51,.06), 0 8px 24px rgba(19,28,51,.06);
  /* type: the app's steps (15px base) + two named marketing steps — prose and the section head (v37 A6/A7) */
  --fs-xs:12px; --fs-sm:13.5px; --fs-md:15px; --fs-prose:16px; --fs-lg:18px; --fs-xl:22px; --fs-h2:32px; --fs-hero:clamp(30px, 5.2vw, 52px);
  --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px; --sp-8:56px; --r-md:12px; --r-lg:16px;
  --mo-micro:120ms; --mo-view:200ms; --mo-ease:ease-out; /* v37 A18: the app's two motion tokens */
  --font:"Public Sans",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
@media (prefers-color-scheme: dark){ :root{
  color-scheme: dark;
  --act:#93AEFF; --act-ink:#0A1230; --act-bg:#1B2650;
  --bg:#0C1322; --surface:#141D31; --raised:#18223A; --ink:#E9EEF8; --ink2:#B6C0D4; --ink3:#99A5BD; --line:#26324C; --soft:#1C2741;
  --navy:#C9D6F2; --focus:#7FB0F5; --hot:#FF8F8A; --hot-bg:#3A1D22; --red:#FF8F8A;
  --ws-audit:#3FC1BF; --ws-docs:#F2A35E; --ws-crt:#A99BFF;
  --map-bg:#121B2E; --map-grid:#1F2B44; --shadow:none;
}}
@media (max-width:640px){ :root{ --fs-h2:28px } }
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:76px}
@media (prefers-reduced-motion:no-preference){ html{scroll-behavior:smooth} } /* B.1: the anchors glide only when motion is welcome */
body{margin:0;background:var(--bg);color:var(--ink);font:400 var(--fs-md)/1.55 var(--font)}
h1,h2,h3,p{margin:0} h1,h2,h3{text-wrap:balance}
a{color:inherit}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:6px}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;background:var(--surface);padding:0 12px;min-height:44px;display:inline-flex;align-items:center;border-radius:8px}
.skip:focus{left:16px}
.wrap{max-width:1120px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.wrap.narrow{max-width:640px}
.row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}
.muted{color:var(--ink3)} .fine{color:var(--ink3);font-size:var(--fs-sm);margin-top:var(--sp-3)}
/* icons: one inline-SVG set in the app's stroke style — 20px, stroke-based, currentColor */
.ic{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;vertical-align:-4px}
.ic.lg{width:24px;height:24px;color:var(--act);margin-bottom:var(--sp-3);display:block}
/* the mark — one construction on both properties (app.css carries the same two rules). Canonical: conic thirds; ≤28px: solid thirds. */
.mark{display:inline-block;flex:none;border-radius:30%;background:conic-gradient(#0E7C7B 0 33.333%,#B3540F 0 66.667%,#5B4BC4 0)}
.mark.sm{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%230E7C7B' d='M12 12 12 -28 46.64 -8 46.64 32Z'/%3E%3Cpath fill='%23B3540F' d='M12 12 46.64 32 12 52 -22.64 32Z'/%3E%3Cpath fill='%235B4BC4' d='M12 12 -22.64 32 -22.64 -8 12 -28Z'/%3E%3C/svg%3E") center/100% 100% no-repeat}
/* header */
.top{position:sticky;top:0;z-index:5;background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.top .row{min-height:60px}
.brand{display:inline-flex;align-items:center;gap:10px;font-weight:800;text-decoration:none;font-size:var(--fs-lg);letter-spacing:-.01em;color:var(--ink);min-height:44px}
.brand .mark{width:26px;height:26px}
.anchors{display:flex;gap:4px;margin-left:auto}
.anchors a{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;border-radius:10px;text-decoration:none;color:var(--ink2);font-weight:600;font-size:var(--fs-md)}
.anchors a:hover{background:var(--soft);color:var(--ink)}
.doors-top{display:flex;align-items:center;gap:var(--sp-2)}
.doors-top .signin-away{visibility:hidden} /* the footer's Sign in is on screen: one Sign in per viewport */
@media (max-width:640px){ .anchors{display:none} .doors-top{margin-left:auto} }
/* buttons — the app's language: 10px radius, one filled action colour (--act), an outline secondary, a plain text door */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-weight:650;text-decoration:none;cursor:pointer;white-space:nowrap}
.btn:hover{border-color:var(--ink3)}
.btn.act,.btn.primary{background:var(--act);color:var(--act-ink);border-color:var(--act)} /* .primary was navy until 1.10.0; navy no longer does action work */
.btn.act:hover,.btn.primary:hover{border-color:var(--act);box-shadow:0 0 0 3px var(--act-bg)}
.btn.out{background:transparent;color:var(--act);border-color:var(--act)}
.btn.out:hover{background:var(--act-bg)}
.btn.text{background:transparent;border-color:transparent;color:var(--ink);padding:0 12px}
.btn.text:hover{background:var(--soft);border-color:transparent}
.btn[disabled]{opacity:.6;cursor:default}
/* E.1 (A18): hover/focus states take the 120ms micro token; nothing else moves; reduced motion turns it all off */
.btn,.anchors a,.foot a,input,select{transition:background-color var(--mo-micro) var(--mo-ease),border-color var(--mo-micro) var(--mo-ease),color var(--mo-micro) var(--mo-ease),box-shadow var(--mo-micro) var(--mo-ease)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
/* hero */
.hero{padding:var(--sp-8) 0}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-6);align-items:center}
.eyebrow{font-size:var(--fs-sm);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);margin-bottom:var(--sp-3)}
h1{font-size:var(--fs-hero);line-height:1.08;letter-spacing:-.025em;font-weight:800}
.lede{font-size:var(--fs-lg);color:var(--ink2);margin-top:var(--sp-4);max-width:36em}
.lede.small{font-size:var(--fs-prose);margin-top:var(--sp-2)}
.doors{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-5)}
.doors .btn{min-height:48px;padding:0 22px}
.shot{margin:0}
.frame{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);overflow:hidden}
.frame picture,.frame img{display:block;width:100%;height:auto}
.frame .bar{display:none;gap:6px;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--raised)}
.frame .bar i{width:9px;height:9px;border-radius:50%;background:var(--line)}
@media (max-width:1099px){ /* a phone frame below 1100px */
  .shot{max-width:340px;margin:0 auto;width:100%}
  .frame{border-radius:34px;border:8px solid var(--ink);box-shadow:var(--shadow)}
}
@media (min-width:1100px){ /* a browser frame at ≥1100px */
  .hero-copy{max-width:760px} /* the copy leads; the capture takes the full measure below it, so the product stays legible (never shrunk) */
  .frame .bar{display:flex}
}
.strip{list-style:none;padding:0;margin:var(--sp-3) 0 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2)}
.strip li{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 12px;min-width:0}
.strip b{display:block;font-size:var(--fs-xl);line-height:1.1;font-weight:800}
.strip span{font-size:var(--fs-xs);color:var(--ink3);font-weight:600;white-space:nowrap}
.shot figcaption{text-align:center;margin-top:var(--sp-2)}
/* proof strip */
.proof{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface)}
.proof-in{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-2) var(--sp-5);padding-top:var(--sp-4);padding-bottom:var(--sp-4)}
.proof-in p{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.proof .ic{color:var(--ws-audit)}
/* bands + section heads (A7) */
.band{padding:var(--sp-8) 0}
.band + .band{border-top:1px solid var(--line)}
.band.alt{background:var(--surface)}
h2{font-size:var(--fs-h2);line-height:1.15;letter-spacing:-.02em;font-weight:800}
/* What it does: four numbered modules */
.modules{list-style:none;padding:0;margin:var(--sp-5) 0 0;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-5)}
.module{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:center}
.module:nth-child(even) .m-viz{order:2;border-right:0;border-left:1px solid var(--line)}
.m-viz{background:var(--raised);border-right:1px solid var(--line);padding:var(--sp-5);display:flex;align-items:center;justify-content:center;min-height:220px;align-self:stretch}
.m-viz picture{display:block;width:100%}
.m-viz img{display:block;width:100%;height:auto;border-radius:10px;max-width:744px;margin:0 auto}
.motif svg{width:100%;max-width:360px;height:auto}
.motif .poly{fill:none;stroke:var(--line);stroke-width:2;stroke-linejoin:round}
@media (prefers-color-scheme: dark){ .motif .poly{stroke:var(--ink3)} }
.motif{background:var(--map-bg);background-image:linear-gradient(var(--map-grid) 1px,transparent 1px),linear-gradient(90deg,var(--map-grid) 1px,transparent 1px);background-size:28px 28px}
.motif .pin{stroke:var(--surface);stroke-width:2.5}
.motif .pin.a{fill:var(--ws-audit)} .motif .pin.d{fill:var(--ws-docs)} .motif .pin.c{fill:var(--ws-crt)}
.m-txt{padding:var(--sp-5);position:relative}
.m-no{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--act-bg);color:var(--act);font-weight:800;font-size:var(--fs-sm);margin-bottom:var(--sp-2)}
.m-txt h3{font-size:var(--fs-lg);font-weight:800;margin-bottom:var(--sp-2)}
.m-txt p{font-size:var(--fs-prose);color:var(--ink)}
.m-txt .m-how{color:var(--ink2);font-size:var(--fs-md);margin-top:var(--sp-2)}
.also{margin-top:var(--sp-5);color:var(--ink2);font-size:var(--fs-prose);max-width:52em}
/* cards (Who it's for · Trust & privacy) */
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-4);margin-top:var(--sp-5)}
.cards.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-5)}
.band.alt .card{background:var(--raised)}
.card h3{font-size:var(--fs-lg);font-weight:800;margin-bottom:var(--sp-2)} .card p{color:var(--ink2);font-size:var(--fs-prose)}
/* the composer (Task C) */
.composer,.signup{display:grid;gap:var(--sp-3);margin-top:var(--sp-5)}
.composer{grid-template-columns:repeat(3,minmax(0,1fr))}
.composer fieldset{grid-column:1/-1;border:1px solid var(--line);border-radius:var(--r-md);margin:0;padding:4px var(--sp-4) 4px} /* C.2: padding to content — no dead block under the module row */
.composer legend{padding:0 4px;font-weight:600;font-size:var(--fs-sm)}
#c-mods-list{display:flex;flex-wrap:wrap;gap:0 var(--sp-5)}
label{display:grid;gap:6px;font-weight:600;font-size:var(--fs-sm)}
label.chk{display:flex;gap:10px;align-items:center;font-weight:400;font-size:var(--fs-md);min-height:44px;padding:0}
label.chk input{width:22px;height:22px;min-height:0;margin:0;flex:none}
.opt{font-weight:400;color:var(--ink3)}
input,select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;min-height:46px;padding:0 12px;width:100%;min-width:0}
.price{margin-top:var(--sp-5)}
.shapes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4)}
.shape{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-5)}
.shape.rec{border-color:var(--act)}
.shape h3{font-size:var(--fs-md);color:var(--ink3);font-weight:800;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.rec-tag{font-size:var(--fs-xs);font-weight:800;color:var(--act);background:var(--act-bg);border-radius:999px;padding:2px 10px}
.shape ul{list-style:none;padding:0;margin:var(--sp-3) 0}
.shape li{display:flex;justify-content:space-between;gap:var(--sp-3);padding:6px 0;border-bottom:1px solid var(--soft)}
.shape li .n{color:var(--ink3)}
.total{font-size:var(--fs-xl);font-weight:800}
.total small{font-size:var(--fs-md);font-weight:600;color:var(--ink3)}
.sk{display:block;height:12px;border-radius:6px;background:var(--soft);margin-top:12px;width:100%}
.sk.w40{width:40%;margin-top:0} .sk.w60{width:60%;height:22px}
.price-fail{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3)}
.err{color:var(--red);font-weight:600}
#s-turnstile:empty{display:none} /* v36 Task B: no widget (blocked, failed, or not yet loaded) adds no gap to the form */
.done{margin-top:var(--sp-5);background:var(--raised);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-5)}
.done h3{margin-bottom:6px}
/* footer (A5) */
.foot{padding:var(--sp-6) 0 var(--sp-5);border-top:1px solid var(--line);font-size:var(--fs-sm);background:var(--surface)}
.foot-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);gap:var(--sp-4) var(--sp-5);align-items:start}
.foot-id .muted{margin-top:var(--sp-2)}
.foot-col{display:flex;flex-direction:column}
.foot-col a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;color:var(--ink2);font-weight:600}
.foot-col a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.foot-c{grid-column:1/-1;padding-top:var(--sp-3);border-top:1px solid var(--line)}
@media (max-width:1099px){ .cards.four{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:860px){
  .hero{padding:var(--sp-6) 0}
  .cards,.cards.three{grid-template-columns:1fr} .shapes{grid-template-columns:1fr}
  .module{grid-template-columns:1fr} .module .m-viz,.module:nth-child(even) .m-viz{order:0;border:0;border-bottom:1px solid var(--line);padding:var(--sp-4);min-height:0}
  .band{padding:var(--sp-6) 0}
}
@media (max-width:640px){
  .cards.four{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr 1fr} .foot-id{grid-column:1/-1}
}
@media (max-width:520px){ .composer{grid-template-columns:1fr} .doors .btn{flex:1 1 100%} .doors-top .btn{padding:0 12px} .brand{font-size:var(--fs-md)} }
