/* Form D Radar - third Furton property. Structural DNA shared with furton.ai v2
   (dark navy, Inter + JetBrains Mono, tile/card/pill system); accent is radar
   green. Chart color roles are validated ordinal ramps - see build_site.py
   header for the validator runs; do not eyeball-edit the --ord-* values. */

:root{
  --bg:#070b14; --panel:rgba(255,255,255,.035); --panel2:rgba(255,255,255,.06);
  --line:rgba(255,255,255,.08); --text:#e7ebf4; --muted:#8b93a7; --dim:#7d879e;
  --acc:#34c17a; --acc2:#8ff0b6;
  /* accent-as-TEXT token (UI-skills pass 2026-07-15): small accent-colored
     text must hit 4.5:1; the fill accent (--acc) doesn't in light mode.
     Use --acc-ink for text/links, --acc for fills/borders/marks. */
  --acc-ink:#34c17a;
  --up:#2fd08c; --down:#ff5d73; --warn:#ffb84d;
  --surface:#0d1320;               /* effective chart surface (panel over bg) */
  /* ordinal ramp, 6 steps (amount buckets) - validated dark 2026-07-09 */
  --ord6-1:#b9eed0; --ord6-2:#8adfb1; --ord6-3:#57cd8e;
  --ord6-4:#2eb471; --ord6-5:#1e9159; --ord6-6:#147044;
  /* ordinal ramp, 5 steps (stage bands) - validated dark */
  --ord5-1:#a8e7c4; --ord5-2:#6cd69e; --ord5-3:#34c17a;
  --ord5-4:#23a063; --ord5-5:#147e4c;
  /* sequential endpoints for heatmap interpolation (one hue, light→dark on
     dark mode reads dark→bright: anchor flips, more = brighter) */
  --seq-lo:#12351f; --seq-hi:#7ce7ad;
  --series:#34c17a;                /* single-series mark color */
  --gray-series:#4d5870;           /* de-emphasis series (D/A, context) */
  --neutral:#6b7688;               /* indefinite / indeterminate / unknown */
  --grid:rgba(255,255,255,.06); --axis:rgba(255,255,255,.16);
  --tip-bg:rgba(10,14,26,.97); --tip-line:rgba(255,255,255,.12);
  --mono:'JetBrains Mono',Consolas,monospace;
  /* display face = Inter, same as furton.ai v2 / Furton Coverage - one family
     across the Furton properties (per Nick, 2026-07-12; Bricolage retired) */
  --display:Inter,system-ui,sans-serif;
  --eo:cubic-bezier(.23,1,.32,1);
  --maxw:1240px;
}
.light{
  --bg:#f7f9fb; --panel:#ffffff; --panel2:#fdfefd;
  /* --dim darkened #6d7688 -> #646e80 (4.33:1 -> 4.87:1, AA for small text);
     --acc-ink #0f6b3e = 5.9:1 for small accent text (fill --acc is 4.04:1) */
  --line:rgba(13,22,36,.10); --text:#17202e; --muted:#5b6474; --dim:#646e80;
  --acc:#1a8c53; --acc2:#2eb977; --acc-ink:#0f6b3e;
  --up:#0e9a5e; --down:#d63a54; --warn:#b97a12;
  --surface:#f4f7f5;
  /* validated light 2026-07-09 */
  --ord6-1:#2eb977; --ord6-2:#23a365; --ord6-3:#1a8c53;
  --ord6-4:#127543; --ord6-5:#0c5e34; --ord6-6:#074726;
  --ord5-1:#2eb977; --ord5-2:#219a5f; --ord5-3:#187e4d;
  --ord5-4:#10633b; --ord5-5:#0a4a2b;
  --seq-lo:#ddf3e6; --seq-hi:#0c5e34;
  --series:#1a8c53; --gray-series:#b6bdcc; --neutral:#9aa3b5;
  --grid:rgba(13,22,36,.07); --axis:rgba(13,22,36,.20);
  --tip-bg:rgba(23,32,46,.97); --tip-line:rgba(255,255,255,.14);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;color-scheme:dark}
html.light{color-scheme:light}
h1,h2,h3,h4{text-wrap:balance}
p{text-wrap:pretty}
:focus-visible{outline:2px solid var(--acc2);outline-offset:2px}
.light :focus-visible{outline-color:#0a6b3e}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} *{animation:none!important;transition:none!important} }
body{
  background:var(--bg); color:var(--text);
  font:15px/1.6 Inter,system-ui,-apple-system,'Segoe UI',sans-serif;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
body::before{
  content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
  /* logo halo: tight around the nav mark (top-left), many stops so the
     falloff is smooth - a 2-stop radial at this size shows visible rings */
  background:
    radial-gradient(300px 220px at 60px 30px,
      rgba(52,193,122,.20) 0%, rgba(52,193,122,.13) 22%,
      rgba(52,193,122,.07) 42%, rgba(52,193,122,.03) 62%,
      rgba(52,193,122,.012) 78%, transparent 92%),
    radial-gradient(680px 420px at 88% -12%, rgba(143,240,182,.07), transparent 60%),
    radial-gradient(1000px 640px at 50% 118%, rgba(52,193,122,.05), transparent 60%);
}
.light body::before{
  background:
    radial-gradient(300px 220px at 60px 30px,
      rgba(26,140,83,.13) 0%, rgba(26,140,83,.08) 22%,
      rgba(26,140,83,.045) 42%, rgba(26,140,83,.02) 62%,
      rgba(26,140,83,.008) 78%, transparent 92%),
    radial-gradient(680px 420px at 88% -12%, rgba(46,185,119,.05), transparent 60%);
}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 clamp(20px,4.5vw,56px)}
.pos{color:var(--up)} .neg{color:var(--down)}

/* ───────── nav ───────── */
nav{position:fixed;top:0;left:0;right:0;z-index:50;backdrop-filter:blur(14px);background:rgba(7,11,20,.72);border-bottom:1px solid var(--line)}
.light nav{background:rgba(247,249,251,.82)}
.nav-inner{max-width:var(--maxw);margin:0 auto;padding:13px clamp(20px,4.5vw,56px);display:flex;align-items:center;gap:12px}
.mark{width:34px;height:34px;border-radius:10px;flex:none;background:linear-gradient(135deg,var(--acc),var(--acc2));display:grid;place-items:center;box-shadow:0 0 20px rgba(52,193,122,.4)}
.mark svg{width:20px;height:20px}
.nav-brand{font-weight:800;font-size:15px;letter-spacing:-.01em;white-space:nowrap}
.nav-brand span{color:var(--acc2)}
.light .nav-brand span{color:var(--acc)}
.nav-links{margin-left:auto;display:flex;gap:22px;font-size:11.5px;font-weight:600;letter-spacing:.11em;text-transform:uppercase}
.nav-links a{color:var(--muted);transition:color .15s;padding:4px 2px}
.nav-links a:hover{color:var(--text)}
.nav-links a.active{color:var(--acc-ink)}
@media(max-width:960px){.nav-links{display:none}}
.theme-btn{margin-left:14px;width:38px;height:38px;border:1px solid var(--line);border-radius:10px;background:transparent;color:var(--muted);cursor:pointer;display:grid;place-items:center;transition:color .15s,border-color .15s}
.theme-btn:hover{color:var(--text);border-color:var(--acc2)}
@media(max-width:960px){.theme-btn{margin-left:auto}}
.nav-menu{display:none;margin-left:10px;position:relative}
.nav-menu summary{list-style:none;cursor:pointer;width:38px;height:38px;border:1px solid var(--line);border-radius:10px;display:grid;place-items:center;color:var(--text)}
.nav-menu summary::-webkit-details-marker{display:none}
.nav-menu[open] summary{border-color:var(--acc2)}
.nav-menu .sheet{position:absolute;top:calc(100% + 8px);right:0;min-width:210px;background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:8px;display:flex;flex-direction:column;box-shadow:0 22px 54px -22px rgba(0,0,0,.6);z-index:60}
.nav-menu .sheet a{padding:11px 14px;border-radius:9px;color:var(--muted);font-size:13px;font-weight:600}
.nav-menu .sheet a:hover,.nav-menu .sheet a.active{background:var(--panel2);color:var(--text)}
@media(max-width:960px){.nav-menu{display:block}}

/* ───────── page scaffolding ───────── */
main{padding:110px 0 40px}
.page-head{margin-bottom:30px}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--acc-ink);margin-bottom:14px}
.eyebrow::before{content:"";width:30px;height:1px;background:linear-gradient(90deg,var(--acc),var(--acc2))}
.page-head h1{font-family:var(--display);font-weight:800;font-size:clamp(26px,3.6vw,44px);letter-spacing:-.03em;line-height:1.1}
.page-head h1 em{font-style:normal;color:var(--acc2)}
.light .page-head h1 em{color:var(--acc)}
.page-lead{margin-top:14px;font-size:15.5px;color:var(--muted);max-width:72ch;line-height:1.7}
.asof{font-family:var(--mono);font-size:11.5px;color:var(--dim);letter-spacing:.04em;margin-top:10px}
section{margin-bottom:40px}
.sec-h{display:flex;align-items:baseline;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.sec-h h2{font-weight:700;font-size:19px;letter-spacing:-.02em}
.sec-h .sub{font-size:12.5px;color:var(--dim)}

/* ───────── stats / panels (FLAT system, no boxed cards - Nick 2026-07-15:
   card UI is retired everywhere; structure comes from hairline rules +
   whitespace, never from bordered/filled boxes) ───────── */
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 28px}
.tiles.three{grid-template-columns:repeat(3,1fr)}
.tiles.five{grid-template-columns:repeat(5,1fr)}
@media(max-width:1000px){.tiles,.tiles.three,.tiles.five{grid-template-columns:repeat(2,1fr)}}
@media(max-width:420px){.tiles,.tiles.three,.tiles.five{grid-template-columns:1fr}}
.tile{border-top:1px solid var(--line);padding:14px 2px 0;min-width:0}
.tile .k{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile .v{font-size:22px;font-weight:700;letter-spacing:-.02em;white-space:nowrap}
.tile .d{font-size:11.5px;margin-top:3px;font-family:var(--mono)}
.tile .d .vs{color:var(--dim);font-family:Inter,sans-serif}
.card{border-top:1px solid var(--line);padding:16px 0 0;min-width:0}
.card h3{font-size:12.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}
.card .sub{font-size:12px;color:var(--dim);margin-bottom:12px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.grid2 .span2{grid-column:1/-1}
@media(max-width:900px){.grid2{grid-template-columns:minmax(0,1fr)}}
.note{margin-top:12px;font-size:12.5px;color:var(--dim);max-width:78ch;line-height:1.65}

/* ───────── tables ───────── */
.twrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th{color:var(--muted);font-weight:600;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;text-align:right;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
th:first-child,td:first-child{text-align:left}
/* th.tl: header follows its column's alignment - a right-aligned header over
   left-aligned cells reads as a misaligned column (Nick 2026-07-15) */
th.tl{text-align:left}
td{padding:8px 10px;border-bottom:1px solid var(--grid);text-align:right;font-family:var(--mono);font-size:12.5px;font-variant-numeric:tabular-nums}
td:first-child{font-family:Inter,sans-serif;font-weight:600}
td.tl{text-align:left;font-family:Inter,sans-serif;font-weight:400}
td .cty{color:var(--dim);font-size:11.5px;font-family:Inter,sans-serif}
tr:hover td{background:rgba(255,255,255,.02)}
.light tr:hover td{background:rgba(13,22,36,.03)}
td .desc{display:block;font-family:Inter,sans-serif;font-size:12px;color:var(--muted);font-weight:400;margin-top:2px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:56ch}
.prov{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;border-radius:99px;padding:1px 7px;border:1px solid var(--line);color:var(--dim);white-space:nowrap}
.prov.verified,.prov.fresh{color:var(--acc2);border-color:rgba(52,193,122,.5)}
.light .prov.verified,.light .prov.fresh{color:var(--acc)}
/* quiet provenance (2026-07-15): verified = a small check beside the label,
   inferred = the bare label, unlabeled = muted "label pending" - no pills.
   The pill class above stays for the via-SPV / NEW / lead marks only. */
.vmark{color:var(--acc-ink);font-weight:700;cursor:help}
.lbl-pending{color:var(--dim);font-size:12px;font-style:italic;cursor:help}
.prov.lead{background:var(--acc);border-color:var(--acc);color:#08130c;font-weight:700;margin-left:4px}
.light .prov.lead{background:#0f6b3d;border-color:#0f6b3d;color:#fff}
a.ext{border-bottom:1px dotted var(--dim)}
a.sitelink{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--acc-ink);white-space:nowrap;margin-left:4px}
a.sitelink:hover{text-decoration:underline}
a.ext:hover{color:var(--acc2);border-color:var(--acc2)}
.light a.ext:hover{color:var(--acc)}

.showmore{margin:14px auto 0;display:block;padding:10px 26px;border-radius:99px;border:1px solid var(--line);background:transparent;color:var(--muted);font:600 13px Inter,sans-serif;cursor:pointer}
.showmore:hover{color:var(--text);border-color:var(--acc2)}
.showmore:active{transform:translateY(1px)}
.showmore[hidden]{display:none}

/* ───────── the feed (P4) ───────── */
.feed-bar{display:flex;flex-direction:column;gap:10px;margin:0 0 16px}
.feed-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.feed-filters input[type=search],.feed-filters select,.feed-filters .ms>summary,.date-f{
  background:var(--panel);border:1px solid var(--line);border-radius:10px;color:var(--text);
  font:400 13px Inter,sans-serif;height:38px;padding:0 13px;display:inline-flex;align-items:center}
.light .feed-filters input[type=search],.light .feed-filters select,.light .feed-filters .ms>summary,.light .date-f{background:#fff}
.feed-filters input[type=search]{min-width:190px;flex:1 1 190px;max-width:320px}
.feed-filters select{appearance:none;-webkit-appearance:none;padding-right:32px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238b93a7' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.feed-filters input:focus,.feed-filters select:focus,.feed-filters .ms>summary:focus-visible,.date-f input:focus{outline:2px solid var(--acc2);outline-offset:1px}
.date-f{gap:7px;color:var(--dim);font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em}
.date-f input[type=date]{background:transparent;border:0;color:var(--text);font:400 12px var(--mono);padding:0;cursor:pointer;min-width:118px}
/* multi-select territory picker */
.ms{position:relative}
.ms>summary{list-style:none;gap:10px;cursor:pointer;white-space:nowrap;user-select:none;justify-content:space-between;min-width:132px}
.ms>summary::-webkit-details-marker{display:none}
.ms .ms-lab{max-width:150px;overflow:hidden;text-overflow:ellipsis}
.ms .ms-caret{color:var(--dim);font-size:10px}
.ms[open]>summary{border-color:var(--acc2)}
.ms-panel{position:absolute;z-index:45;top:calc(100% + 6px);left:0;width:252px;max-width:82vw;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:10px;box-shadow:0 18px 44px -20px rgba(0,0,0,.6)}
.light .ms-panel{background:#fff}
.ms-search{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--text);font:400 12.5px Inter,sans-serif;padding:7px 10px;margin-bottom:8px}
.light .ms-search{background:#fbfdfc}
.ms-actions{display:flex;gap:8px;margin-bottom:8px}
.ms-actions button{flex:1;background:transparent;border:1px solid var(--line);border-radius:8px;color:var(--muted);font:600 10.5px var(--mono);letter-spacing:.05em;text-transform:uppercase;padding:6px;cursor:pointer}
.ms-actions button:hover{color:var(--text);border-color:var(--acc2)}
.ms-list{max-height:244px;overflow-y:auto;display:flex;flex-direction:column;gap:1px}
.ms-opt{display:flex;align-items:center;gap:9px;padding:6px 8px;border-radius:7px;cursor:pointer;font-size:13px;color:var(--text)}
.ms-opt:hover{background:rgba(255,255,255,.05)}
.light .ms-opt:hover{background:rgba(13,22,36,.04)}
.ms-opt input{accent-color:var(--acc);width:15px;height:15px;flex:none;cursor:pointer}
.linkbtn{background:transparent;border:0;color:var(--dim);font:600 12px Inter,sans-serif;cursor:pointer;padding:8px 4px;text-decoration:underline;text-underline-offset:3px}
.linkbtn:hover{color:var(--acc-ink)}
.linkbtn[hidden]{display:none}
.feed-meta{min-height:15px}
.feed-meta .count{font-family:var(--mono);font-size:11.5px;color:var(--dim)}
.feed-card table[hidden]{display:none}
.feed-status{padding:30px 20px;text-align:center;color:var(--dim);font-family:var(--mono);font-size:12.5px;line-height:1.6}
.feed-status[hidden]{display:none}
.feed-foot{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:8px}
.showmore.ghost{color:var(--dim);font-weight:500}
.feed-fresh{font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.02em;margin:0 0 12px}
/* no side-stripe (UI-skills ban): the hint reads as a plain sentence with an
   accent-colored action inside it */
.feed-hint{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;padding:2px 0;margin:0 0 14px;font-size:13px;color:var(--muted)}
.feed-hint[hidden]{display:none}
.feed-hint .linkbtn{padding:0;font-size:13px;color:var(--acc-ink);font-weight:600}
a.findlink{color:var(--dim)}
a.findlink:hover{color:var(--acc-ink)}

/* ───────── feed row detail panel (feed-detail.js, 2026-07-15) ─────────
   "The filing, decoded" - flat: a left accent rule + whitespace, no box. */
#feedtbl tbody tr.frow{cursor:pointer}
tr.drow td{padding:0;font-family:Inter,sans-serif;text-align:left}
tr.drow:hover td{background:transparent}
.light tr.drow:hover td{background:transparent}
/* flat detail region: a quiet background tint (the hover-tint family), no
   side stripe (UI-skills ban). Opacity-only entrance, killed by the global
   prefers-reduced-motion rule. */
.drow-inner{background:rgba(255,255,255,.025);margin:4px 0 10px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;animation:drowin .18s cubic-bezier(.16,1,.3,1)}
.light .drow-inner{background:rgba(13,22,36,.028)}
@keyframes drowin{from{opacity:0}to{opacity:1}}
.ddesc{font-size:13.5px;color:var(--text);line-height:1.65;max-width:78ch}
.dfacts{display:flex;flex-wrap:wrap;gap:6px 22px}
.dfact{white-space:nowrap}
.dk{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.dv{font-size:13px;color:var(--text);font-variant-numeric:tabular-nums}
.dv[title]{cursor:help}
.dnote{font-size:12.5px;color:var(--muted);line-height:1.6;max-width:78ch}
.dexec .dperson{font-size:13px;color:var(--text)}
.dexec .dentity{color:var(--muted)}  /* P11: entity promoters read as context, never as a person to call */
.dlinks{display:flex;flex-wrap:wrap;gap:6px 20px}
a.dlink{font-size:13px;font-weight:600;color:var(--acc-ink)}
a.dlink:hover{text-decoration:underline}
a.dlink-sm{font-weight:500;font-size:12px}
.dacc{font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--dim)}

/* ───────── prose (digests / methodology) ───────── */
.prose{max-width:860px;font-size:15px;line-height:1.75;color:var(--text)}
.prose h1{font-size:clamp(24px,3vw,36px);font-weight:800;letter-spacing:-.03em;margin:0 0 18px;line-height:1.15}
.prose h2{font-size:21px;font-weight:700;letter-spacing:-.02em;margin:34px 0 12px}
.prose h3{font-size:16.5px;font-weight:700;margin:26px 0 10px}
.prose p{margin:0 0 14px;color:var(--text)}
.prose p em,.prose li em{color:var(--muted)}
.prose ul,.prose ol{margin:0 0 14px 22px}
.prose li{margin-bottom:6px}
.prose blockquote{border-left:1px solid var(--line);padding:4px 0 4px 18px;margin:0 0 14px;color:var(--muted)}
.prose hr{border:none;border-top:1px solid var(--line);margin:28px 0}
.prose code{font-family:var(--mono);font-size:.88em;background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:1px 5px}
.prose a{color:var(--acc-ink);border-bottom:1px dotted}
.prose table{margin:0 0 18px}
.prose .twrap{margin-bottom:18px}
.prose pre{font-family:var(--mono);font-size:12.5px;line-height:1.6;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:14px 16px;overflow-x:auto;margin:0 0 16px}
.prose pre code{background:none;border:none;padding:0;font-size:inherit}
.digest-list{display:flex;flex-direction:column;gap:10px;max-width:760px}
.digest-item{display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--line);padding:16px 4px;transition:background .15s}
.digest-item:first-child{border-top:1px solid var(--line)}
.digest-item:hover{background:rgba(255,255,255,.03)}
.light .digest-item:hover{background:rgba(13,22,36,.03)}
.digest-item .dt{font-family:var(--mono);font-size:12px;color:var(--acc-ink);white-space:nowrap}
.digest-item .ttl{font-weight:600;font-size:14.5px}
.digest-item .arr{margin-left:auto;color:var(--dim)}
.empty{padding:44px 20px;text-align:center;color:var(--dim);font-family:var(--mono);font-size:12.5px}

/* ───────── landing / marketing (P3) ─────────
   Product shell components: hero, live-proof table, how-it-works steps,
   plan columns, digest signup. Same tokens as the app pages - one FLAT
   system (rules + whitespace, no boxed cards). */
.hero-grid{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);gap:clamp(24px,4vw,56px);align-items:center;padding:10px 0 8px}
@media(min-width:1021px){.hero-grid{min-height:calc(100svh - 220px)}}
@media(max-width:1020px){.hero-grid{grid-template-columns:1fr}}
.radar-wrap{min-width:0}
/* no clip: the sweep is a FULL circle sized to fit inside the frame (Nick
   2026-07-15: never cut the sweep, place + size it to fit instead - the
   fit-to-nearest-edge radius lives in build_site.radar_map). */
.radar-frame{position:relative}
.radar-frame svg{display:block;width:100%;height:auto}
.us-land{fill:var(--panel2);stroke:var(--line);stroke-width:1;vector-effect:non-scaling-stroke}
.light .us-land{fill:#eef3ef;stroke:rgba(13,22,36,.16)}
/* dot base state + beam trail colors (keyframes read the vars per theme) */
:root{--dotbase:.6;--beam:rgba(143,240,182,.20);--beam0:rgba(143,240,182,0)}
.light{--dotbase:.5;--beam:rgba(26,140,83,.15);--beam0:rgba(26,140,83,0)}
.us-dots circle{fill:var(--acc);opacity:var(--dotbase);animation:dotping 9s linear infinite}
/* beam pass: fast light-up, then a long graceful decay back to base */
@keyframes dotping{
  0%{opacity:var(--dotbase);fill:var(--acc);r:2.2px}
  0.9%{opacity:1;fill:var(--acc2);r:3.9px}
  3.5%{opacity:.95;fill:var(--acc2);r:3.3px}
  10%{opacity:.8;r:2.7px}
  24%{opacity:var(--dotbase);fill:var(--acc);r:2.2px}
  100%{opacity:var(--dotbase);fill:var(--acc);r:2.2px}
}
.beam-hub{fill:var(--acc2)}
.light .beam-hub{fill:var(--acc)}
/* per-state hit targets: the map is also the territory entry point */
.us-hit{fill:transparent;pointer-events:all;cursor:pointer}
.us-hits a:hover .us-hit,.us-hits a:focus-visible .us-hit{fill:rgba(52,193,122,.10);stroke:var(--acc2);stroke-width:1.5}
.light .us-hits a:hover .us-hit,.light .us-hits a:focus-visible .us-hit{stroke:var(--acc)}
/* the sweep: a circular radar scope - bright leading ray, smooth conic
   trail, no rim/rings. left/top/width are set inline per build. */
.radar-sweep{position:absolute;aspect-ratio:1;border-radius:50%;pointer-events:none;
  background:conic-gradient(from 0deg,transparent 0deg 16deg,var(--beam0) 16deg,var(--beam) 89.5deg,transparent 90deg 360deg);
  animation:radarspin 9s linear infinite}
.radar-sweep::after{content:"";position:absolute;left:50%;top:calc(50% - 1px);width:50%;height:2px;
  background:linear-gradient(90deg,var(--acc2) 0%,var(--acc2) 45%,transparent 96%);opacity:.75;border-radius:2px}
.light .radar-sweep::after{background:linear-gradient(90deg,var(--acc) 0%,var(--acc) 45%,transparent 96%)}
@keyframes radarspin{from{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(360deg)}}
.radar-cap{margin-top:10px;font-size:11.5px;color:var(--dim);text-align:center}
@media (prefers-reduced-motion: reduce){.radar-sweep{display:none}}
.hero{padding:26px 0 8px;max-width:880px}
/* clamp max 62->52 (UI-skills hero discipline): the 10-word headline was
   wrapping to 5 lines at full scale; ~3 lines max in the split column now */
.hero h1{font-family:var(--display);font-weight:800;font-size:clamp(32px,4.4vw,52px);letter-spacing:-.035em;line-height:1.06;text-wrap:balance}
.hero h1 em{font-style:normal;color:var(--acc)}
.hero .sub{margin-top:18px;font-size:clamp(15.5px,1.6vw,18px);color:var(--muted);line-height:1.65;max-width:58ch}
.hero .sub b{color:var(--text);font-weight:600}
.cta-row{display:flex;gap:12px;margin-top:26px;flex-wrap:wrap;align-items:center}
.btn{display:inline-flex;align-items:center;gap:8px;border-radius:12px;padding:12px 22px;font:600 14.5px Inter,sans-serif;cursor:pointer;border:1px solid var(--line);transition:transform .15s var(--eo),border-color .15s,background .15s}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--acc);border-color:var(--acc);color:#fff}
.btn.primary:hover{background:var(--acc2);border-color:var(--acc2)}
.light .btn.primary:hover{background:#147040;border-color:#147040}
.btn.ghost{background:transparent;color:var(--text)}
.btn.ghost:hover{border-color:var(--acc)}
/* proof section header matches the shared .sec-h pattern (Nick 2026-07-15:
   the old LIVE-pill-only header sat out of line with neighboring sections) */
.proof-card{margin-top:34px}
.sec-h .live{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--acc-ink)}
.sec-h .live::before{content:"";width:7px;height:7px;border-radius:99px;background:var(--acc);box-shadow:0 0 0 3px rgba(52,193,122,.18);animation:pulse 2.2s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 3px rgba(52,193,122,.18)}50%{box-shadow:0 0 0 6px rgba(52,193,122,.06)}}
.sec-h .more{margin-left:auto;font-size:12.5px;font-weight:600;color:var(--acc-ink)}
.sec-h .more:hover{text-decoration:underline}
.proof-card table{font-size:13.5px}
.proof-card td,.proof-card th{padding:10px 14px}
.proof-card td:first-child{padding-left:2px}
.proof-card th:first-child{padding-left:2px}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.steps.four{grid-template-columns:repeat(4,1fr)}
/* .two: the airy variant (Nick 2026-07-15: the 4-across workflow read too
   dense). Two wide columns, generous gaps, roomier steps. */
.steps.two{grid-template-columns:repeat(2,1fr);gap:36px clamp(40px,6vw,88px);max-width:980px}
.steps.two .step{padding-top:22px}
.steps.two .step p{font-size:14px;max-width:44ch}
@media(max-width:1000px){.steps.four{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.steps{grid-template-columns:1fr}.steps.two{grid-template-columns:1fr;gap:28px}}
@media(max-width:560px){.steps.four{grid-template-columns:1fr}}
.step{border-top:1px solid var(--line);padding:18px 2px 0}
.step .n{font-family:var(--mono);font-size:11px;color:var(--acc-ink);letter-spacing:.14em;margin-bottom:10px}
.step h3{font-family:var(--display);font-size:17px;font-weight:700;letter-spacing:-.02em;margin-bottom:8px}
.step p{font-size:13.5px;color:var(--muted);line-height:1.65}
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:stretch}
@media(max-width:900px){.plans{grid-template-columns:1fr}}
/* plan CARDS (Nick 2026-07-15): pricing plans are the ONE surface allowed
   card treatment. Border only, no drop shadow (ghost-card ban); 14px radius. */
.plan{border:1px solid var(--line);border-radius:14px;background:var(--panel);padding:24px 22px;display:flex;flex-direction:column;min-width:0}
.light .plan{background:#fff}
.plan.feat{border-color:var(--acc);position:relative}
.plan.feat::before{content:"MOST POPULAR";position:absolute;top:-9px;left:18px;font-family:var(--mono);font-size:9px;letter-spacing:.14em;background:var(--acc);color:#fff;border-radius:99px;padding:2px 10px}
.plan h3{font-family:var(--display);font-size:18px;font-weight:700;letter-spacing:-.02em;margin-bottom:2px}
.plan .price{font-family:var(--display);font-size:34px;font-weight:800;letter-spacing:-.02em;margin:10px 0 2px}
.plan .price span{font-family:Inter,sans-serif;font-size:13px;font-weight:500;color:var(--dim);letter-spacing:0}
.plan .for{font-size:12.5px;color:var(--dim);margin-bottom:16px}
.plan ul{list-style:none;display:flex;flex-direction:column;gap:9px;font-size:13.5px;color:var(--muted);margin-bottom:20px}
.plan li{padding-left:22px;position:relative;line-height:1.5}
.plan li::before{content:"✓";position:absolute;left:0;color:var(--acc);font-weight:700}
.plan li.no{color:var(--dim)}
.plan li.no::before{content:"×";color:var(--dim)}
.plan .btn{margin-top:auto;justify-content:center}
/* persona links: sentence-case kicker (.pn), not a tracked mono-caps eyebrow
   (UI-skills eyebrow restraint) */
.pn{font-size:12.5px;font-weight:600;color:var(--muted);margin-bottom:10px}
/* persona links (landing + persona-page cross-link): a .step that is a link */
a.persona-link{display:block;transition:border-color .15s,transform .15s var(--eo)}
a.persona-link:hover{border-top-color:var(--acc);transform:translateY(-1px)}
a.persona-link .go{display:inline-block;margin-top:10px;font-size:13px;font-weight:600;color:var(--acc-ink)}
.signup{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:30px 2px;display:flex;gap:22px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.signup h3{font-family:var(--display);font-size:20px;font-weight:700;letter-spacing:-.02em}
.signup p{font-size:13.5px;color:var(--muted);margin-top:4px;max-width:46ch}
.signup form{display:flex;gap:10px;flex-wrap:wrap}
.signup input[type=email]{background:var(--bg);border:1px solid var(--line);border-radius:12px;color:var(--text);font:400 14px Inter,sans-serif;padding:12px 16px;min-width:min(260px,100%)}
.signup input[type=email]:focus{outline:2px solid var(--acc2);outline-offset:1px}
.signup-msg{flex-basis:100%;font-size:13px;color:var(--muted);min-height:1em;margin:0}
.feed-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap}

/* ───────── alert email specimen (pricing, 2026-07-15) ─────────
   A document excerpt, not a card: rules above and below, mono metadata. */
.mailx{border-top:2px solid var(--line);border-bottom:1px solid var(--line);padding:16px 2px 14px;max-width:860px}
.mail-meta{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--dim);margin-bottom:8px}
.mail-subj{font-weight:700;font-size:16px;letter-spacing:-.01em;margin-bottom:6px}
.mailx table{font-size:13px}
.mail-foot{margin-top:10px;font-size:12.5px;color:var(--muted);line-height:1.6}

/* ───────── footer ───────── */
footer{border-top:1px solid var(--line);padding:30px 0 40px;margin-top:30px}
.foot-disc{font-size:12px;color:var(--dim);line-height:1.7;max-width:88ch}
.foot-disc a{color:var(--muted);border-bottom:1px dotted}
.foot-disc a:hover{color:var(--acc2)}
.light .foot-disc a:hover{color:var(--acc)}
.foot-meta{margin-top:14px;font-family:var(--mono);font-size:11px;color:var(--dim);display:flex;gap:18px;flex-wrap:wrap}
.foot-meta a:hover{color:var(--text)}

/* touch targets: 44px minimum on coarse pointers (UI-skills a11y) */
@media(pointer:coarse){
  #feedtbl td{padding:12px 10px}
  .feed-filters input[type=search],.feed-filters select,.feed-filters .ms>summary,.date-f{height:44px}
}
