:root {
  --paper: #e9ede8;
  --paper-deep: #d6ddd8;
  --white: #f9fbf8;
  --ink: #111716;
  --ink-soft: #26302e;
  --muted: #65706c;
  --line: #aeb8b3;
  --line-dark: #2f3936;
  --blue: #2457e6;
  --blue-soft: #89a8f8;
  --red: #e64834;
  --red-soft: #ef9b90;
  --gold: #dda62a;
  --mint: #75cfa7;
  --violet: #7767a8;
  --focus: #0a66ff;
  --danger: #bd261d;
  --success: #187c50;
  --font-display: "Bricolage Grotesque", "Avenir Next", sans-serif;
  --font-body: "IBM Plex Sans", "Helvetica Neue", sans-serif;
  --font-mono: "IBM Plex Mono", "Courier New", monospace;
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.25rem;
  --text-xl: clamp(2rem, 4vw, 4.5rem);
  --text-hero: clamp(4rem, 11vw, 10rem);
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --radius-sm: 3px;
  --radius-md: 6px;
  --shadow-sm: 0 2px 10px rgba(17, 23, 22, 0.12);
  --shadow-lg: 0 28px 70px rgba(17, 23, 22, 0.24);
  --duration-fast: 140ms;
  --duration-base: 260ms;
  --duration-slow: 620ms;
  --ease-out: cubic-bezier(.2,.8,.2,1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--font-body); font-size: var(--text-base); line-height: 1.55; letter-spacing: 0; }
img { max-width: 100%; display: block; }
[hidden] { display: none !important; }   /* the global display resets above must never defeat the hidden attribute (the hero-fallback ghost bug) */
button, input, select, textarea { font: inherit; letter-spacing: 0; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; }
button { color: inherit; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
::selection { color: var(--white); background: var(--blue); }

.skip-link { position: fixed; top: 12px; left: 12px; z-index: 200; transform: translateY(-180%); background: var(--white); color: var(--ink); padding: 10px 14px; border: 2px solid var(--ink); }
.skip-link:focus { transform: translateY(0); }
.site-header { position: fixed; top: 0; left: 0; right: 0; height: calc(72px + env(safe-area-inset-top, 0px)); display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: var(--space-8); padding: env(safe-area-inset-top, 0px) max(clamp(18px, 4vw, 64px), env(safe-area-inset-right, 0px)) 0 max(clamp(18px, 4vw, 64px), env(safe-area-inset-left, 0px)); z-index: 100; color: var(--white); border-bottom: 1px solid rgba(255,255,255,.18); transition: background var(--duration-base), color var(--duration-base), border-color var(--duration-base); }
.site-header.is-scrolled { background: rgba(233,237,232,.96); color: var(--ink); border-color: var(--line); backdrop-filter: blur(10px); }
.brand { display: inline-flex; align-items: center; gap: 10px; font-family: var(--font-display); font-size: 1.05rem; font-weight: 800; text-decoration: none; white-space: nowrap; }
.brand > span:last-child > span { color: var(--gold); }
.brand-mark { width: 18px; height: 18px; display: inline-block; background: conic-gradient(from 45deg, var(--blue) 0 25%, var(--gold) 0 50%, var(--red) 0 75%, var(--mint) 0); border: 2px solid currentColor; transform: rotate(45deg); }
.desktop-nav { justify-self: center; display: flex; gap: clamp(18px, 3vw, 42px); }
.desktop-nav a, .mobile-nav a { font-family: var(--font-mono); font-size: var(--text-xs); font-weight: 600; text-decoration: none; text-transform: uppercase; }
.desktop-nav a { position: relative; }
.desktop-nav a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -9px; height: 2px; background: currentColor; transition: right var(--duration-base) var(--ease-out); }
.desktop-nav a:hover::after { right: 0; }
.header-actions { display: flex; align-items: center; gap: 10px; }
.header-login { font-family: var(--font-body); font-size: var(--text-sm); font-weight: 700; text-decoration: none; }
.header-login:hover { color: var(--gold); }
.mobile-nav { position: absolute; top: calc(72px + env(safe-area-inset-top, 0px)); left: 0; right: 0; padding: 20px max(20px, env(safe-area-inset-right, 0px)) 20px max(20px, env(safe-area-inset-left, 0px)); background: var(--paper); color: var(--ink); border-bottom: 1px solid var(--line); box-shadow: var(--shadow-lg); grid-template-columns: 1fr; gap: 18px; }
.mobile-nav:not([hidden]) { display: grid; }
.mobile-nav-action { display: flex; align-items: center; justify-content: center; min-height: 44px; border: 1px solid var(--ink); }
.mobile-nav-action.is-primary { color: var(--ink); background: var(--gold); border-color: var(--gold); }
.icon-button.menu-button { display: none; }

.button { min-height: 46px; display: inline-flex; align-items: center; justify-content: center; gap: 10px; border: 1px solid transparent; border-radius: var(--radius-sm); padding: 0 18px; font-family: var(--font-body); font-size: var(--text-sm); font-weight: 700; text-decoration: none; cursor: pointer; transition: transform var(--duration-fast), background var(--duration-fast), color var(--duration-fast), border-color var(--duration-fast); }
.button svg { width: 17px; height: 17px; }
.button:hover { transform: translateY(-2px); }
.button:active { transform: translateY(0); }
.button:disabled { opacity: .5; cursor: not-allowed; transform: none; }
.button-primary { background: var(--gold); color: var(--ink); border-color: var(--gold); }
.button-primary:hover { background: #f1bc3d; }
.button-secondary { color: var(--white); border-color: rgba(255,255,255,.65); background: rgba(17,23,22,.28); backdrop-filter: blur(8px); }
.button-secondary:hover { background: var(--white); color: var(--ink); }
.button-dark { background: var(--ink); color: var(--white); border-color: var(--ink); }
.button-dark:hover { background: var(--blue); border-color: var(--blue); }
.button-ghost { color: inherit; background: transparent; border-color: currentColor; }
.button-small { min-height: 38px; padding: 0 14px; font-size: var(--text-xs); }
.button-large { min-height: 56px; padding: 0 24px; }
.icon-button { width: 44px; height: 44px; border: 1px solid currentColor; background: transparent; border-radius: 50%; display: inline-grid; place-items: center; cursor: pointer; }
.icon-button svg { width: 20px; height: 20px; }
.icon-button:hover { background: currentColor; color: var(--paper); }

.hero { min-height: 88svh; height: min(920px, 88svh); position: relative; overflow: hidden; color: var(--white); background: var(--ink); isolation: isolate; }
.hero-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 53% 40%; z-index: -3; }
.hero-scrim { position: absolute; inset: 0; z-index: -2; background: linear-gradient(90deg, rgba(9,14,15,.97) 0%, rgba(9,14,15,.82) 34%, rgba(9,14,15,.18) 67%, rgba(9,14,15,.34) 100%), linear-gradient(0deg, rgba(9,14,15,.72), transparent 48%); }
.hero::after { content: ""; position: absolute; inset: 72px 0 0; z-index: -1; background-image: linear-gradient(rgba(255,255,255,.06) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.06) 1px, transparent 1px); background-size: 92px 92px; mask-image: linear-gradient(to right, black, transparent 75%); }
.hero-grid { width: min(1480px, 100%); height: 100%; margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(280px, .8fr); align-items: end; gap: var(--space-12); padding: 92px clamp(22px, 5vw, 80px) 58px; }
.hero-copy { align-self: center; max-width: 860px; }
.signal-label { margin: 0 0 12px; font-family: var(--font-mono); font-size: var(--text-xs); font-weight: 600; text-transform: uppercase; color: var(--blue); }
.hero .signal-label, .proof-section .signal-label, .closing-cta .signal-label { color: var(--gold); }
.hero h1 { max-width: 1000px; margin: 0; font-family: var(--font-display); font-size: clamp(4rem, 7vw, 7rem); line-height: .86; font-weight: 800; letter-spacing: 0; }
.hero-thesis { margin: 16px 0 0; font-family: var(--font-display); font-size: clamp(1.8rem, 3vw, 3rem); line-height: 1; font-weight: 600; }
.hero-lede { max-width: 680px; margin: 18px 0 0; font-size: clamp(1rem, 1.4vw, 1.25rem); line-height: 1.5; color: rgba(255,255,255,.82); }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 24px; }
.self-serve-note { margin: 12px 0 0; font-family: var(--font-mono); font-size: .67rem; color: rgba(255,255,255,.66); }
.hero-readout { align-self: end; justify-self: end; width: min(430px, 100%); display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid rgba(255,255,255,.45); border-bottom: 1px solid rgba(255,255,255,.45); }
.hero-readout div { min-width: 0; padding: 18px 12px; border-right: 1px solid rgba(255,255,255,.28); }
.hero-readout div:last-child { border-right: 0; }
.hero-readout strong, .hero-readout span { display: block; }
.hero-readout strong { font-family: var(--font-display); font-size: clamp(1.2rem, 2vw, 2.1rem); line-height: 1; }
.hero-readout span { margin-top: 8px; font-family: var(--font-mono); font-size: .65rem; color: rgba(255,255,255,.72); }

.section { padding: clamp(74px, 9vw, 140px) clamp(20px, 5vw, 76px); }
.section-intro { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 560px); gap: var(--space-12); align-items: end; max-width: 1440px; margin: 0 auto 56px; }
.section-intro.narrow { display: block; max-width: 970px; margin-left: 0; }
.section-intro h2, .proof-heading h2, .closing-cta h2 { margin: 0; font-family: var(--font-display); font-size: var(--text-xl); line-height: .98; letter-spacing: 0; }
.section-intro > p:last-child { margin: 0; font-size: var(--text-lg); color: var(--ink-soft); }

.primary-lab { color: var(--white); background: var(--ink); }
.primary-heading { max-width: 1440px; margin: 0 auto 42px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 520px); gap: var(--space-12); align-items: end; }
.primary-heading .signal-label { color: var(--gold); }
.primary-heading h2 { max-width: 860px; margin: 0; font-family: var(--font-display); font-size: var(--text-xl); line-height: .98; }
.primary-heading-copy p { margin: 0; color: rgba(255,255,255,.72); font-size: var(--text-lg); }
.primary-heading-copy span { display: inline-flex; align-items: center; gap: 7px; margin-top: 16px; font-family: var(--font-mono); font-size: .68rem; color: var(--mint); text-transform: uppercase; }
.primary-heading-copy svg { width: 15px; height: 15px; }
.primary-workspace { --primary-party: var(--blue); max-width: 1440px; min-height: 690px; margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1fr) 350px; border: 1px solid rgba(255,255,255,.28); background: #080d0f; box-shadow: 20px 20px 0 var(--blue); }
.primary-workspace[data-primary-party="r"] { --primary-party: var(--red); box-shadow: 20px 20px 0 var(--red); }
.primary-map-column { min-width: 0; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.primary-toolbar { min-height: 66px; padding: 12px 16px; display: flex; align-items: center; justify-content: space-between; gap: 16px; border-bottom: 1px solid rgba(255,255,255,.18); }
.primary-toolbar .segmented { border-color: rgba(255,255,255,.5); }
.primary-toolbar .segmented button { color: rgba(255,255,255,.68); border-color: rgba(255,255,255,.32); }
.primary-toolbar .segmented button[aria-pressed="true"] { color: var(--white); background: var(--primary-party); }
.primary-draft-state { display: inline-flex; align-items: center; gap: 7px; font-family: var(--font-mono); font-size: .64rem; color: var(--gold); text-transform: uppercase; }
.primary-draft-state svg { width: 14px; height: 14px; }
.primary-map-stage { position: relative; min-height: 540px; display: grid; place-items: center; overflow: hidden; background-image: linear-gradient(rgba(255,255,255,.055) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.055) 1px, transparent 1px); background-size: 54px 54px; }
.primary-map-label { position: absolute; top: 16px; left: 18px; right: 18px; z-index: 3; display: flex; align-items: center; justify-content: space-between; gap: 18px; font-family: var(--font-mono); font-size: .65rem; text-transform: uppercase; pointer-events: none; }
.primary-map-label span:first-child { color: var(--gold); font-weight: 600; }
.primary-map-label span:last-child { color: rgba(255,255,255,.56); text-align: right; }
.primary-map { width: min(92%, 820px); max-height: 500px; margin-top: 26px; overflow: visible; filter: drop-shadow(0 18px 30px rgba(0,0,0,.36)); }
.primary-state { stroke: #080d0f; stroke-width: 1.15; vector-effect: non-scaling-stroke; cursor: pointer; transition: fill var(--duration-base), opacity var(--duration-base), stroke var(--duration-fast), stroke-width var(--duration-fast); }
.primary-state:hover, .primary-state:focus-visible { stroke: var(--gold); stroke-width: 2.8; outline: none; }
.primary-state.is-called { stroke: rgba(255,255,255,.7); stroke-width: 1.4; }
.primary-state.is-called:hover, .primary-state.is-called:focus-visible { stroke: var(--gold); stroke-width: 2.8; }
.primary-map-tooltip { position: absolute; z-index: 5; min-width: 190px; max-width: 260px; padding: 10px 12px; color: var(--white); background: #121821; border: 1px solid rgba(255,255,255,.28); box-shadow: var(--shadow-sm); font-family: var(--font-mono); font-size: .68rem; pointer-events: none; opacity: 0; transform: translate(-50%, calc(-100% - 14px)); transition: opacity var(--duration-fast); }
.primary-map-tooltip.is-visible { opacity: 1; }
.primary-map-tooltip strong { display: block; margin-bottom: 3px; font-family: var(--font-body); font-size: .86rem; }
.primary-map-tooltip b { color: var(--gold); }
.primary-calendar-legend { position: absolute; left: 18px; bottom: 16px; z-index: 3; display: flex; flex-wrap: wrap; gap: 7px 14px; padding: 9px 11px; border: 1px solid rgba(255,255,255,.22); background: rgba(8,13,15,.84); font-family: var(--font-mono); font-size: .58rem; }
.primary-calendar-legend span { display: flex; align-items: center; gap: 6px; }
.primary-legend-dot { width: 10px; height: 10px; display: inline-block; background: #39423f; }
.primary-legend-dot.is-early { background: var(--gold); }
.primary-legend-dot.is-super { background: var(--primary-party); }
.primary-legend-dot.is-later { background: #39423f; }
.primary-legend-dot.is-called { background: var(--mint); border: 1px solid var(--white); }
.primary-map-actions { min-height: 72px; display: flex; align-items: center; gap: 8px; padding: 12px 16px; border-top: 1px solid rgba(255,255,255,.18); }
.primary-map-actions .button { margin-right: auto; }
.primary-action, .primary-clear { min-height: 40px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 0 12px; border: 1px solid rgba(255,255,255,.32); border-radius: var(--radius-sm); color: var(--white); background: transparent; font-size: .75rem; font-weight: 700; cursor: pointer; }
.primary-action:hover, .primary-clear:hover { border-color: var(--gold); color: var(--gold); }
.primary-action svg, .primary-clear svg { width: 15px; height: 15px; }
.primary-field { min-width: 0; display: flex; flex-direction: column; padding: 28px 24px; color: var(--ink); background: var(--white); border-left: 1px solid rgba(255,255,255,.28); }
.primary-field-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding-bottom: 18px; border-bottom: 2px solid var(--ink); }
.primary-field h3 { margin: 0; font-family: var(--font-display); font-size: 1.55rem; line-height: 1.05; }
.primary-field-meta { margin: 8px 0 0; color: var(--muted); font-family: var(--font-mono); font-size: .59rem; text-transform: uppercase; }
.primary-clear { flex: none; min-height: 34px; padding: 0 9px; border-color: var(--line); color: var(--ink); }
.primary-candidates { max-height: 300px; overflow-y: auto; margin-top: 14px; border-top: 1px solid var(--line); }
.primary-candidate { width: 100%; min-height: 50px; display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 9px 4px; border: 0; border-bottom: 1px solid var(--line); color: var(--ink); background: transparent; text-align: left; cursor: pointer; }
.primary-candidate:hover { background: var(--paper); }
.primary-candidate[aria-pressed="true"] { background: var(--paper-deep); box-shadow: inset 4px 0 0 var(--candidate-color); }
.primary-candidate-dot { width: 13px; height: 13px; display: block; background: var(--candidate-color); border: 1px solid rgba(17,23,22,.34); }
.primary-candidate strong, .primary-candidate small { display: block; }
.primary-candidate strong { font-size: .83rem; }
.primary-candidate small { margin-top: 2px; font-family: var(--font-mono); font-size: .57rem; color: var(--muted); text-transform: uppercase; }
.primary-candidate-count { font-family: var(--font-mono); font-size: .68rem; font-weight: 600; color: var(--muted); }
.primary-tally { display: flex; align-items: baseline; gap: 10px; padding: 18px 0 12px; border-bottom: 1px solid var(--line); }
.primary-tally strong { font-family: var(--font-display); font-size: 2.5rem; line-height: 1; color: var(--primary-party); }
.primary-tally span { font-family: var(--font-mono); font-size: .65rem; color: var(--muted); text-transform: uppercase; }
.primary-method { margin: 14px 0 20px; color: var(--ink-soft); font-size: .78rem; line-height: 1.55; }
.primary-save { width: 100%; margin-top: auto; }
.primary-save-note { margin: 9px 0 0; color: var(--muted); font-family: var(--font-mono); font-size: .6rem; line-height: 1.45; }

.primary-desk {
  --primary-party: var(--blue);
  max-width: 1440px;
  margin: 0 auto;
  border: 1px solid rgba(255,255,255,.3);
  background: #080d0f;
  box-shadow: 20px 20px 0 var(--primary-party);
  transition: box-shadow var(--duration-base);
}
.primary-desk[data-primary-desk-party="r"] { --primary-party: var(--red); }
.primary-desk-toolbar {
  min-height: 76px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 12px 16px 12px 20px;
  border-bottom: 1px solid rgba(255,255,255,.22);
}
.primary-desk-toolbar > div:first-child { display: grid; gap: 4px; }
.primary-desk-toolbar .signal-label { margin: 0; color: var(--gold); }
.primary-desk-toolbar strong { font-family: var(--font-display); font-size: 1.18rem; }
.primary-desk-toolbar > div:first-child > span { color: rgba(255,255,255,.58); font-family: var(--font-mono); font-size: .62rem; }
.primary-carousel-controls { display: flex; align-items: center; gap: 9px; }
.primary-carousel-controls .icon-button { width: 40px; height: 40px; color: rgba(255,255,255,.82); border-color: rgba(255,255,255,.4); }
.primary-carousel-controls .icon-button:hover { color: var(--ink); background: var(--white); }
.primary-carousel-position { min-width: 54px; color: rgba(255,255,255,.68); font-family: var(--font-mono); font-size: .65rem; text-align: center; }
.primary-carousel-tabs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-bottom: 1px solid rgba(255,255,255,.22);
}
.primary-carousel-tabs button {
  position: relative;
  min-width: 0;
  min-height: 86px;
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) 20px;
  align-items: center;
  gap: 12px;
  padding: 14px 18px;
  color: rgba(255,255,255,.7);
  background: transparent;
  border: 0;
  border-right: 1px solid rgba(255,255,255,.22);
  text-align: left;
  cursor: pointer;
}
.primary-carousel-tabs button:last-child { border-right: 0; }
.primary-carousel-tabs button::after { content: ""; position: absolute; right: 0; bottom: 0; left: 0; height: 4px; background: transparent; }
.primary-carousel-tabs button:first-child[aria-selected="true"] { color: var(--white); background: rgba(36,87,230,.2); }
.primary-carousel-tabs button:last-child[aria-selected="true"] { color: var(--white); background: rgba(230,72,52,.18); }
.primary-carousel-tabs button:first-child[aria-selected="true"]::after { background: var(--blue); }
.primary-carousel-tabs button:last-child[aria-selected="true"]::after { background: var(--red); }
.primary-carousel-tabs button:hover { color: var(--white); background: rgba(255,255,255,.06); }
.primary-carousel-tabs button > span:nth-child(2) { min-width: 0; display: grid; gap: 3px; }
.primary-carousel-tabs strong, .primary-carousel-tabs small { overflow-wrap: anywhere; }
.primary-carousel-tabs strong { font-size: .82rem; }
.primary-carousel-tabs small { color: rgba(255,255,255,.5); font-family: var(--font-mono); font-size: .56rem; }
.primary-carousel-tabs svg { width: 18px; height: 18px; justify-self: end; }
.primary-carousel-number { color: var(--gold); font-family: var(--font-mono); font-size: .68rem; }
.primary-desk-viewport {
  position: relative;
  height: min(760px, 78vh);
  min-height: 650px;
  overflow: hidden;
  background: #0b0f1a;
}
.primary-desk-viewport iframe {
  width: 100%;
  height: 100%;
  display: block;
  border: 0;
  background: #0b0f1a;
  opacity: 0;
  transition: opacity 180ms ease;
}
.primary-desk-viewport iframe[data-primary-ready="true"] { opacity: 1; }
.primary-desk-loading {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 12px;
  color: rgba(255,255,255,.72);
  background: #0b0f1a;
  font-family: var(--font-mono);
  font-size: .72rem;
  text-transform: uppercase;
}
.primary-desk-loading strong { font-family: inherit; font-size: inherit; font-weight: 500; }
.primary-desk-loading[hidden] { display: none; }
.primary-desk-loading span {
  width: 28px;
  height: 28px;
  border: 2px solid rgba(255,255,255,.2);
  border-top-color: var(--primary-party);
  border-radius: 50%;
  animation: spin 800ms linear infinite;
}
.primary-desk-footer { border-top: 1px solid rgba(255,255,255,.22); }
.primary-capabilities {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  border-bottom: 1px solid rgba(255,255,255,.18);
}
.primary-capabilities > span {
  min-width: 0;
  min-height: 88px;
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  align-content: center;
  gap: 3px 9px;
  padding: 14px 16px;
  border-right: 1px solid rgba(255,255,255,.18);
}
.primary-capabilities > span:last-child { border-right: 0; }
.primary-capabilities svg { grid-row: 1 / 3; width: 19px; height: 19px; color: var(--primary-party); }
.primary-capabilities strong { overflow-wrap: anywhere; font-size: .78rem; }
.primary-capabilities small { overflow-wrap: anywhere; color: rgba(255,255,255,.58); font-family: var(--font-mono); font-size: .55rem; line-height: 1.4; }
.primary-desk-actions { display: flex; align-items: center; gap: 10px; padding: 16px 18px 8px; }
.primary-desk-actions .button-secondary { border-color: rgba(255,255,255,.45); }
.primary-desk-footer > p { margin: 0; padding: 0 18px 16px; color: rgba(255,255,255,.58); font-family: var(--font-mono); font-size: .62rem; line-height: 1.5; }

.market-lab { background: var(--paper); }
.market-switchboard { max-width: 1440px; margin: 0 auto; display: grid; grid-template-columns: 220px minmax(0, 1fr) 330px; min-height: 680px; border-top: 2px solid var(--ink); border-bottom: 2px solid var(--ink); }
.market-tabs { grid-row: 1; grid-column: 1; display: flex; flex-direction: column; border-right: 1px solid var(--line); }
.market-tab { min-height: 74px; flex: 1; display: grid; grid-template-columns: 24px 1fr; align-items: center; gap: 12px; padding: 14px; border: 0; border-bottom: 1px solid var(--line); background: transparent; text-align: left; font-size: var(--text-sm); font-weight: 700; cursor: pointer; transition: background var(--duration-fast), color var(--duration-fast); }
.market-tab:last-child { border-bottom: 0; }
.market-tab svg { width: 19px; height: 19px; }
.market-tab:hover { background: var(--white); }
.market-tab.is-active { background: var(--ink); color: var(--white); }
.map-workbench { grid-row: 1; grid-column: 2; min-width: 0; display: grid; grid-template-rows: auto 1fr; background: #dfe4df; overflow: hidden; }
.map-toolbar { min-height: 64px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 10px 14px; border-bottom: 1px solid var(--line); background: rgba(249,251,248,.72); }
.segmented { min-width: 0; display: inline-flex; border: 1px solid var(--ink); border-radius: var(--radius-sm); overflow: hidden; }
.segmented button { min-height: 36px; padding: 0 13px; border: 0; border-right: 1px solid var(--ink); background: transparent; font-family: var(--font-mono); font-size: .66rem; font-weight: 600; cursor: pointer; white-space: nowrap; }
.segmented button:last-child { border-right: 0; }
.segmented button:hover { background: rgba(17,23,22,.08); }
.segmented button[aria-pressed="true"] { background: var(--ink); color: var(--white); }
.map-stage { position: relative; min-height: 610px; display: grid; place-items: center; overflow: hidden; perspective: 900px; background-image: linear-gradient(rgba(17,23,22,.08) 1px, transparent 1px), linear-gradient(90deg, rgba(17,23,22,.08) 1px, transparent 1px); background-size: 48px 48px; }
.map-stage::before { content: ""; position: absolute; width: 52%; aspect-ratio: 1; left: -18%; bottom: -35%; border: 1px solid var(--ink); border-radius: 50%; opacity: .16; }
.map-stage-label { position: absolute; top: 16px; left: 16px; right: 16px; display: flex; justify-content: space-between; gap: 12px; font-family: var(--font-mono); font-size: .63rem; font-weight: 600; text-transform: uppercase; z-index: 3; }
.map-stage-label span:last-child { color: var(--muted); }
.market-map { width: min(90%, 720px); max-height: 490px; overflow: visible; filter: drop-shadow(0 18px 20px rgba(17,23,22,.16)); transition: transform var(--duration-slow) var(--ease-out), filter var(--duration-slow); }
.map-plane { transform-origin: center; }
.region { stroke: var(--white); stroke-width: 1.2; vector-effect: non-scaling-stroke; transition: fill var(--duration-base), opacity var(--duration-base), transform var(--duration-fast); cursor: crosshair; }
.region:hover { opacity: .78; }
.d1 { fill: var(--blue); }.d2 { fill: var(--blue-soft); }.r1 { fill: var(--red); }.r2 { fill: var(--red-soft); }.neutral { fill: #cbd2ce; }.independent { fill: var(--violet); }
.major-boundary, .selected-boundary, .custom-boundary { fill: none; pointer-events: none; vector-effect: non-scaling-stroke; }
.major-boundary { stroke: var(--ink); stroke-width: 4; }
.selected-boundary { stroke: var(--gold); stroke-width: 5; filter: drop-shadow(0 0 5px rgba(221,166,42,.7)); }
.custom-boundary { stroke: var(--ink); stroke-width: 2.5; stroke-dasharray: 8 6; }
.market-switchboard[data-layer="turnout"] .d1 { fill: #19835c; }.market-switchboard[data-layer="turnout"] .d2 { fill: var(--mint); }.market-switchboard[data-layer="turnout"] .r1 { fill: #c98110; }.market-switchboard[data-layer="turnout"] .r2 { fill: #efc96c; }.market-switchboard[data-layer="turnout"] .neutral { fill: #bdc5c0; }.market-switchboard[data-layer="turnout"] .independent { fill: #749f91; }
.market-switchboard[data-layer="custom"] .region { fill: #cbd2ce; opacity: .62; }.market-switchboard[data-layer="custom"] .custom-boundary { stroke: var(--blue); stroke-width: 6; }.market-switchboard[data-layer="custom"] .selected-boundary { stroke: var(--red); }
.map-stage.is-3d .market-map { transform: rotateX(47deg) rotateZ(-7deg) translateY(-20px) scale(.9); filter: drop-shadow(0 42px 14px rgba(17,23,22,.28)); }
.map-stage.is-3d .region { filter: drop-shadow(0 9px 0 rgba(17,23,22,.24)); }
.map-metric { position: absolute; left: 18px; bottom: 22px; width: 180px; padding-left: 13px; border-left: 4px solid var(--blue); z-index: 3; }
.map-metric span, .map-metric small { display: block; font-family: var(--font-mono); font-size: .64rem; }
.map-metric strong { display: block; margin: 4px 0; font-family: var(--font-display); font-size: 2.1rem; line-height: 1; }
.map-metric small { color: var(--muted); }
.map-legend { position: absolute; right: 16px; bottom: 18px; display: grid; grid-template-columns: repeat(2, auto); gap: 7px 14px; padding: 10px; background: rgba(249,251,248,.84); border: 1px solid var(--line); backdrop-filter: blur(6px); font-family: var(--font-mono); font-size: .58rem; }
.map-legend span { display: flex; align-items: center; gap: 6px; }
.legend-dot { width: 10px; height: 10px; display: inline-block; border-radius: 50%; }.legend-dot.blue { background: var(--blue); }.legend-dot.red { background: var(--red); }.legend-dot.neutral { background: #cbd2ce; }.legend-line { width: 18px; border-top: 3px solid var(--gold); }
.map-tooltip { position: absolute; z-index: 5; min-width: 130px; padding: 8px 10px; background: var(--ink); color: var(--white); font-family: var(--font-mono); font-size: .65rem; pointer-events: none; opacity: 0; transform: translate(-50%, calc(-100% - 14px)); transition: opacity var(--duration-fast); }
.map-tooltip.is-visible { opacity: 1; }
.market-case { grid-row: 1; grid-column: 3; padding: 34px 28px; display: flex; flex-direction: column; border-left: 1px solid var(--line); background: var(--white); }
.market-case h3 { margin: 0; font-family: var(--font-display); font-size: clamp(1.85rem, 2.4vw, 2.5rem); line-height: 1; }
.market-description { margin: 18px 0 26px; color: var(--ink-soft); }
.market-facts { margin: 0; }
.market-facts div { padding: 14px 0; border-top: 1px solid var(--line); }
.market-facts dt { font-family: var(--font-mono); font-size: .62rem; text-transform: uppercase; color: var(--muted); }
.market-facts dd { margin: 5px 0 0; font-weight: 600; }
.job-list { display: grid; gap: 8px; margin: 22px 0 28px; }
.job-list span { position: relative; padding-left: 20px; font-size: var(--text-sm); }
.job-list span::before { content: ""; position: absolute; left: 0; top: .48em; width: 8px; height: 8px; background: var(--gold); transform: rotate(45deg); }
.market-proof { margin: 0 0 24px; border-top: 2px solid var(--ink); border-bottom: 1px solid var(--ink); }
.market-proof[hidden] { display: none; }
.market-proof-label { margin: 0; padding: 8px 0 7px; color: var(--blue); font-family: var(--font-mono); font-size: .61rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.market-proof-rows { list-style: none; margin: 0; padding: 0; }
.market-proof-rows li { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 10px; padding: 7px 0; border-top: 1px solid var(--line); }
.market-proof-rows span { color: var(--muted); font-family: var(--font-mono); font-size: .58rem; line-height: 1.35; text-transform: uppercase; }
.market-proof-rows strong { align-self: start; font-family: var(--font-mono); font-size: .64rem; line-height: 1.35; }
.market-proof-note { margin: 0; padding: 9px 0; border-top: 1px solid var(--line); color: var(--ink-soft); font-size: .7rem; line-height: 1.45; }
.market-cta { margin-top: auto; }
.market-county-link { width: fit-content; min-height: 44px; display: inline-flex; align-items: center; gap: 7px; margin-top: 10px; color: var(--blue); font-size: .78rem; font-weight: 700; line-height: 1.35; text-decoration: none; }
.market-county-link svg { width: 15px; height: 15px; flex: none; }
.market-county-link:hover { text-decoration: underline; }

.workflow-section { display: grid; grid-template-columns: minmax(280px, .75fr) minmax(0, 1.25fr); gap: clamp(40px, 8vw, 110px); align-items: center; padding: clamp(74px, 9vw, 140px) clamp(20px, 6vw, 90px); background: var(--blue); color: var(--white); }
.workflow-copy { max-width: 590px; }
.workflow-copy .signal-label { color: var(--gold); }
.workflow-copy h2 { margin: 0; font-family: var(--font-display); font-size: clamp(2.7rem, 5.5vw, 6rem); line-height: .94; }
.workflow-copy > p:last-child { margin-top: 24px; font-size: var(--text-lg); color: rgba(255,255,255,.76); }
.prompt-console { min-width: 0; border: 1px solid rgba(255,255,255,.64); background: var(--ink); box-shadow: 18px 18px 0 var(--gold); }
.prompt-console-head { display: flex; justify-content: space-between; gap: 16px; padding: 13px 16px; border-bottom: 1px solid rgba(255,255,255,.24); font-family: var(--font-mono); font-size: .66rem; }
.prompt-console-head span:last-child { color: var(--mint); }
.prompt-console blockquote { margin: 0; padding: 24px; font-family: var(--font-display); font-size: clamp(1.25rem, 2vw, 2rem); line-height: 1.22; border-bottom: 1px solid rgba(255,255,255,.24); }
.tool-trace { list-style: none; margin: 0; padding: 0; }
.tool-trace li { min-height: 72px; display: grid; grid-template-columns: 40px 1fr 24px; gap: 12px; align-items: center; padding: 12px 18px; border-bottom: 1px solid rgba(255,255,255,.16); }
.tool-trace li:last-child { border-bottom: 0; }
.tool-trace li > span { font-family: var(--font-mono); font-size: .65rem; color: var(--gold); }
.tool-trace strong, .tool-trace small { display: block; }
.tool-trace strong { font-size: var(--text-sm); }
.tool-trace small { margin-top: 3px; color: rgba(255,255,255,.58); }
.tool-trace svg { width: 18px; color: var(--mint); }

.product-system { background: var(--white); border-top: 1px solid var(--line); }
.product-rows { max-width: 1440px; margin: 0 auto; border-top: 2px solid var(--ink); }
.product-row { min-height: 116px; display: grid; grid-template-columns: 74px minmax(0, 1fr) 220px; align-items: center; gap: 28px; padding: 20px 0; border-bottom: 1px solid var(--line); transition: padding var(--duration-base), background var(--duration-base); }
.product-row:hover { padding-left: 16px; padding-right: 16px; background: var(--paper); }
.product-row h3 { margin: 2px 0; font-family: var(--font-display); font-size: 1.65rem; line-height: 1; }
.product-row p { margin: 0; color: var(--ink-soft); }
.product-row .product-audience { font-family: var(--font-mono); font-size: .64rem; text-transform: uppercase; color: var(--blue); }
.product-row > strong { justify-self: end; font-family: var(--font-mono); font-size: .8rem; text-align: right; }
.shape { width: 58px; height: 58px; position: relative; display: block; border: 2px solid var(--ink); background: var(--paper); }
.shape-district { clip-path: polygon(12% 10%, 78% 0, 100% 45%, 74% 100%, 8% 82%, 0 34%); background: var(--blue); }
.shape-stack { box-shadow: 8px 8px 0 var(--red), 16px 16px 0 var(--gold); }
.shape-members { border-radius: 50%; background: radial-gradient(circle at 32% 35%, var(--blue) 0 5px, transparent 6px), radial-gradient(circle at 65% 30%, var(--red) 0 5px, transparent 6px), radial-gradient(circle at 50% 66%, var(--gold) 0 5px, transparent 6px), var(--paper); }
.shape-custom { border-style: dashed; transform: skew(-8deg); background: rgba(117,207,167,.65); }
.shape-frame { border-width: 6px; background: linear-gradient(135deg, var(--blue) 0 50%, var(--red) 50%); }
.shape-evidence::before, .shape-evidence::after { content: ""; position: absolute; inset: 8px; border: 2px solid var(--blue); transform: rotate(12deg); }.shape-evidence::after { border-color: var(--red); transform: rotate(-10deg); }
.shape-api { background: repeating-linear-gradient(90deg, var(--ink) 0 2px, transparent 2px 9px), repeating-linear-gradient(0deg, var(--ink) 0 2px, transparent 2px 9px), var(--gold); }

.proof-section { padding: clamp(74px, 9vw, 140px) clamp(20px, 5vw, 76px); background: var(--ink); color: var(--white); }
.proof-heading { max-width: 1440px; margin: 0 auto 50px; }
.proof-heading h2 { max-width: 860px; }
.proof-story { max-width: 1440px; margin: 0 auto; border-top: 1px solid rgba(255,255,255,.26); padding: 42px 0 80px; }
.proof-story-wide { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 44px; align-items: start; }
.proof-story-split { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(280px, .8fr); gap: 44px; align-items: center; }
.proof-story figure { margin: 0; background: #070d0f; border: 1px solid rgba(255,255,255,.22); box-shadow: var(--shadow-lg); overflow: hidden; }
.proof-story figure img { width: 100%; height: auto; }
.proof-story figcaption { padding: 10px 12px; font-family: var(--font-mono); font-size: .62rem; color: rgba(255,255,255,.6); }
.proof-copy span { font-family: var(--font-mono); font-size: .65rem; text-transform: uppercase; color: var(--gold); }
.proof-copy h3 { margin: 10px 0 18px; font-family: var(--font-display); font-size: clamp(2rem, 4vw, 4.8rem); line-height: .96; }
.proof-copy p { margin: 0; color: rgba(255,255,255,.7); font-size: var(--text-lg); }
.poll-proof { max-width: 1440px; margin: 0 auto; display: grid; grid-template-columns: minmax(280px, .75fr) minmax(0, 1.25fr); gap: 70px; padding: 76px 0 10px; border-top: 1px solid rgba(255,255,255,.26); align-items: center; }
.poll-viz { padding: 28px; background: var(--paper); color: var(--ink); border: 1px solid rgba(255,255,255,.22); box-shadow: 16px 16px 0 var(--blue); }
.poll-viz-head, .poll-viz-foot { display: flex; justify-content: space-between; gap: 16px; font-family: var(--font-mono); font-size: .65rem; }
.poll-viz-head { padding-bottom: 18px; border-bottom: 2px solid var(--ink); }.poll-viz-head strong { color: var(--blue); }
.poll-row { display: grid; grid-template-columns: 120px 1fr 44px; gap: 14px; align-items: center; padding: 16px 0; border-bottom: 1px solid var(--line); }
.poll-row > span { font-weight: 600; }.poll-row > div { height: 12px; background: var(--paper-deep); overflow: hidden; }.poll-row i { width: var(--value); height: 100%; display: block; background: var(--bar); }
.poll-viz-foot { padding-top: 18px; color: var(--muted); }

.plans { background: var(--paper); }
.plans-intro { align-items: center; }
.plans-intro > div:last-child { justify-self: end; }
.catalog-status { max-width: 360px; display: flex; align-items: center; justify-content: flex-end; gap: 12px; color: var(--muted); font-family: var(--font-mono); font-size: .68rem; line-height: 1.45; text-align: right; }
.catalog-status[data-catalog-state="ready"] { color: var(--ink-soft); }
.catalog-status[data-catalog-state="error"] { color: var(--red); }
.catalog-status button { min-height: 44px; padding: 8px 12px; border: 1px solid currentColor; background: transparent; color: inherit; font: inherit; font-weight: 700; cursor: pointer; }
[data-catalog-price][data-catalog-state="loading"] { color: var(--muted); }
[data-catalog-price][data-catalog-state="unavailable"], [data-catalog-price][data-catalog-state="error"] { color: var(--red); font-family: var(--font-mono); font-size: .78rem; line-height: 1.45; }
.plans-note { max-width: 1440px; margin: -28px auto 34px; color: var(--ink-soft); }
.plan-grid { max-width: 1440px; margin: 0 auto; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 2px solid var(--ink); border-bottom: 2px solid var(--ink); }
.plan { min-height: 430px; display: flex; flex-direction: column; padding: 28px 24px; border-right: 1px solid var(--line); }
.plan:last-child { border-right: 0; }
.plan-featured { background: var(--white); box-shadow: inset 0 8px 0 var(--gold); }
.plan-type { margin: 0; font-family: var(--font-mono); font-size: .64rem; text-transform: uppercase; color: var(--blue); }
.plan h3 { margin: 14px 0 18px; font-family: var(--font-display); font-size: 2rem; line-height: 1; }
.plan > p:not(.plan-type) { margin: 0; min-height: 104px; color: var(--ink-soft); }
.plan > strong { display: block; margin: 26px 0 10px; font-family: var(--font-display); font-size: 1.5rem; }
.plan > span { color: var(--muted); font-size: var(--text-sm); }
.text-link { width: fit-content; display: inline-flex; align-items: center; gap: 7px; margin-top: auto; padding: 12px 0 4px; border: 0; border-bottom: 2px solid currentColor; background: transparent; font-weight: 700; text-decoration: none; cursor: pointer; }
.text-link svg { width: 16px; height: 16px; }
.text-link:hover { color: var(--blue); }
.plan-ladder { max-width: 1440px; margin: 24px auto 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)) auto; border: 1px solid var(--line); background: var(--white); }
.plan-ladder > * { min-height: 86px; display: flex; flex-direction: column; justify-content: center; padding: 16px 18px; border-right: 1px solid var(--line); font-size: var(--text-sm); }
.plan-ladder > *:last-child { border-right: 0; align-items: center; flex-direction: row; gap: 8px; font-weight: 700; color: var(--blue); text-decoration: none; }
.plan-ladder svg { width: 16px; height: 16px; }
.plan-ladder-price { min-height: 1.4em; margin-top: 5px; color: var(--ink-soft); font-family: var(--font-mono); font-size: .67rem; }
.group-preview-link { width: fit-content; display: inline-flex; align-items: center; gap: 5px; margin-top: 7px; color: var(--blue); font-size: .68rem; font-weight: 700; text-decoration: none; }
.group-preview-link:hover { text-decoration: underline; }
.group-preview-link svg { width: 13px; height: 13px; }

.signals { background: var(--white); }
.signal-grid { max-width: 1440px; margin: 0 auto; display: grid; grid-template-columns: repeat(5, 1fr); border-top: 2px solid var(--ink); }
.signal-grid a { min-height: 240px; display: flex; flex-direction: column; padding: 24px 18px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); text-decoration: none; transition: background var(--duration-base), color var(--duration-base); }
.signal-grid a:last-child { border-right: 0; }
.signal-grid a:hover { background: var(--ink); color: var(--white); }
.signal-grid strong { font-family: var(--font-display); font-size: clamp(2rem, 4vw, 4rem); line-height: 1; color: var(--blue); }
.signal-grid a:nth-child(2) strong { color: var(--red); }.signal-grid a:nth-child(3) strong { color: var(--success); }.signal-grid a:nth-child(4) strong { color: #a87300; }.signal-grid a:nth-child(5) strong { color: var(--violet); }
.signal-grid span { margin-top: 18px; font-weight: 600; }.signal-grid small { margin-top: auto; padding-top: 18px; font-family: var(--font-mono); color: var(--muted); }
.signal-grid a:hover small { color: rgba(255,255,255,.64); }

.closing-cta { min-height: 520px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 50px; align-items: end; padding: clamp(74px, 10vw, 150px) clamp(20px, 6vw, 90px); color: var(--white); background: linear-gradient(110deg, var(--blue) 0 46%, var(--red) 46% 72%, var(--gold) 72%); position: relative; overflow: hidden; }
.closing-cta::before { content: ""; position: absolute; width: 520px; height: 520px; right: 16%; top: -58%; border: 3px dashed rgba(255,255,255,.65); transform: rotate(22deg); }
.closing-cta > * { position: relative; }
.closing-cta h2 { max-width: 900px; font-size: clamp(3rem, 7vw, 7rem); }
.closing-cta p:last-child { max-width: 680px; font-size: var(--text-lg); }
.site-footer { min-height: 100px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 20px; padding: 24px clamp(20px, 5vw, 76px); background: var(--ink); color: var(--white); }
.site-footer p { text-align: center; color: rgba(255,255,255,.58); }
.site-footer > a { justify-self: end; display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-mono); font-size: .7rem; }
.site-footer svg { width: 15px; height: 15px; }

@keyframes spin { to { transform: rotate(360deg); } }

@media (max-width: 1120px) {
  .primary-workspace { grid-template-columns: minmax(0, 1fr) 310px; }
  .primary-map-actions { flex-wrap: wrap; }
  .primary-map-actions .button { width: 100%; margin-right: 0; }
  .primary-action { flex: 1; }
  .primary-capabilities { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .primary-capabilities > span:nth-child(3) { border-right: 0; }
  .primary-capabilities > span:nth-child(-n+3) { border-bottom: 1px solid rgba(255,255,255,.18); }
  .primary-capabilities > span:nth-child(4) { grid-column: 1 / 2; }
  .market-switchboard { grid-template-columns: 190px minmax(0, 1fr); }
  .market-case { grid-row: 3; grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 20px 40px; border-left: 0; border-top: 1px solid var(--line); }
  .market-description, .market-facts, .job-list { margin-top: 0; }
  .market-cta { align-self: end; }
  .plan-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .plan-ladder { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .plan-ladder > * { border-bottom: 1px solid var(--line); }
  .plan { border-bottom: 1px solid var(--line); }
  .plan:nth-child(2) { border-right: 0; }
  .signal-grid { grid-template-columns: repeat(3, 1fr); }
  .signal-grid a:nth-child(3) { border-right: 0; }
}

@media (max-width: 820px) {
  .site-header { height: calc(64px + env(safe-area-inset-top, 0px)); padding: env(safe-area-inset-top, 0px) max(18px, env(safe-area-inset-right, 0px)) 0 max(18px, env(safe-area-inset-left, 0px)); }
  .desktop-nav, .header-actions .button, .header-login { display: none; }
  .header-actions { justify-self: end; }
  .icon-button.menu-button { display: inline-grid; }
  .mobile-nav { top: calc(64px + env(safe-area-inset-top, 0px)); }
  .hero { min-height: 92svh; height: auto; }   /* the rotating slides vary in height — a fixed hero overflowed the tall ones UP through the header (founder repro 2026-07-19) */
  .hero-image { object-position: 59% center; opacity: .74; }
  .hero-scrim { background: linear-gradient(0deg, rgba(9,14,15,.98) 0%, rgba(9,14,15,.82) 56%, rgba(9,14,15,.28)); }
  .hero-grid { display: flex; align-items: flex-end; padding: 108px 22px 32px; }
  .hero-copy { align-self: auto; }
  .hero-readout { display: none; }
  .section-intro { grid-template-columns: 1fr; gap: 18px; }
  .primary-heading { grid-template-columns: 1fr; gap: 18px; }
  .primary-workspace { grid-template-columns: 1fr; box-shadow: 10px 10px 0 var(--blue); }
  .primary-workspace[data-primary-party="r"] { box-shadow: 10px 10px 0 var(--red); }
  .primary-field { border-top: 1px solid rgba(255,255,255,.28); border-left: 0; }
  .primary-candidates { max-height: 260px; }
  .primary-save { margin-top: 0; }
  .primary-desk { box-shadow: 10px 10px 0 var(--primary-party); }
  .primary-desk-viewport { height: 700px; min-height: 0; }
  .market-switchboard { display: block; }
  .market-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-right: 0; border-bottom: 1px solid var(--line); }
  .market-tab { min-height: 62px; border-right: 1px solid var(--line); }
  .map-toolbar { align-items: stretch; flex-direction: column; }
  .segmented { width: 100%; }
  .segmented button { flex: 1; }
  .map-stage { min-height: 520px; }
  .market-case { display: flex; }
  .workflow-section { grid-template-columns: 1fr; }
  .product-row { grid-template-columns: 60px 1fr; }
  .product-row > strong { grid-column: 2; justify-self: start; text-align: left; }
  .proof-story-wide, .proof-story-split, .poll-proof { grid-template-columns: 1fr; }
  .proof-story-wide .proof-copy { order: 0; }
  .proof-story-wide figure { order: 1; }
  .poll-viz { box-shadow: 10px 10px 0 var(--blue); }
  .signal-grid { grid-template-columns: repeat(2, 1fr); }
  .signal-grid a:nth-child(2n) { border-right: 0; }
  .signal-grid a:nth-child(3) { border-right: 1px solid var(--line); }
  .closing-cta { grid-template-columns: 1fr; align-items: end; }
  .site-footer { grid-template-columns: 1fr auto; }
  .site-footer p { display: none; }
}

@media (max-width: 560px) {
  .hero { min-height: 760px; }
  .hero h1 { font-size: clamp(2.3rem, 10.5vw, 3.1rem); line-height: .92; }
  .hero-thesis { font-size: 1.05rem; }
  .hero-lede { font-size: 0.92rem; }
  .hero-thesis { font-size: 1.7rem; }
  .hero-lede { font-size: .95rem; line-height: 1.45; }
  .hero-actions { display: grid; }
  .primary-lab { padding-inline: 12px; }
  .primary-heading { padding-inline: 8px; }
  .primary-heading-copy p { font-size: 1rem; }
  .primary-desk-toolbar { align-items: stretch; flex-direction: column; padding: 16px; }
  .primary-carousel-controls { justify-content: space-between; }
  .primary-carousel-position { flex: 1; }
  .primary-carousel-tabs { grid-template-columns: 1fr; }
  .primary-carousel-tabs button { min-height: 74px; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.18); }
  .primary-carousel-tabs button:last-child { border-bottom: 0; }
  .primary-desk-viewport { height: 640px; }
  .primary-capabilities { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .primary-capabilities > span { min-height: 82px; border-right: 1px solid rgba(255,255,255,.18); border-bottom: 1px solid rgba(255,255,255,.18); }
  .primary-capabilities > span:nth-child(even) { border-right: 0; }
  .primary-capabilities > span:nth-child(3) { border-right: 1px solid rgba(255,255,255,.18); }
  .primary-capabilities > span:last-child { grid-column: 1 / -1; border-right: 0; border-bottom: 0; }
  .primary-desk-actions { display: grid; }
  .primary-desk-actions .button { width: 100%; }
  .primary-toolbar { align-items: stretch; flex-direction: column; }
  .primary-party-tabs { display: flex; }
  .primary-draft-state { justify-content: center; }
  .primary-map-stage { min-height: 410px; }
  .primary-map-label { display: grid; gap: 4px; }
  .primary-map-label span:last-child { text-align: left; }
  .primary-map { width: 100%; margin-top: 42px; }
  .primary-calendar-legend { right: 12px; left: 12px; bottom: 10px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .primary-map-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .primary-map-actions .button { grid-column: 1 / -1; }
  .primary-action { min-width: 0; padding-inline: 7px; font-size: .68rem; }
  .primary-field { padding: 24px 18px; }
  .market-tabs { grid-template-columns: 1fr; }
  .market-tab { border-right: 0; }
  .map-stage { min-height: 430px; }
  .map-stage-label { font-size: .55rem; }
  .map-metric { bottom: 72px; }
  .map-legend { left: 16px; right: 16px; bottom: 14px; grid-template-columns: repeat(2, 1fr); }
  .market-case { padding: 26px 20px; }
  .catalog-status { justify-self: start; justify-content: flex-start; text-align: left; }
  .product-row { grid-template-columns: 48px 1fr; gap: 16px; }
  .shape { width: 44px; height: 44px; }
  .plan-grid { grid-template-columns: 1fr; }
  .plan-ladder { grid-template-columns: 1fr; }
  .plan-ladder > * { border-right: 0; }
  .plan { min-height: 360px; border-right: 0; }
  .poll-row { grid-template-columns: 86px 1fr 40px; }
  .poll-viz { padding: 18px; }
  .poll-viz-foot { display: grid; }
  .signal-grid { grid-template-columns: 1fr; }
  .signal-grid a, .signal-grid a:nth-child(3) { min-height: 190px; border-right: 0; }
  .closing-cta { min-height: 620px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
  .map-stage.is-3d .market-map { transform: none; }
}

/* ---- REAL GEOGRAPHY (2026-07-17): actual precincts/counties/states, banded in the product's
   rating vocabulary. Colors are the Analyst Precision theme from server/data/map-themes.json —
   the storefront speaks the same palette the product does. ---- */
.region { stroke: #ffffff; stroke-width: 0.7; vector-effect: non-scaling-stroke; cursor: pointer;
  transition: filter 160ms ease, stroke-width 160ms ease; }
.region.band-sd { fill: #17407f; } .region.band-ld { fill: #2457a6; } .region.band-nd { fill: #8eb4df; }
.region.band-tu { fill: #8d93a8; }
.region.band-nr { fill: #df9b9f; } .region.band-lr { fill: #b33f46; } .region.band-sr { fill: #8b2f36; }
.region.band-missing { fill: url(#stripePattern); }
.region:hover { filter: brightness(1.12); stroke-width: 1.6; }
.region.is-selected { stroke: #111827; stroke-width: 2.4; filter: brightness(1.06); }
/* Keep the data readable even when a background tab throttles the decorative reveal frame. */
.map-plane .region { opacity: 1; }
.map-plane.is-revealing .region { animation: regionReveal 420ms ease-out both; animation-delay: calc(var(--i, 0) * 1ms); }
@keyframes regionReveal { from { opacity: 0.55; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .map-plane.is-revealing .region { animation-duration: 1ms; animation-delay: 0ms; } }
/* layer modes drive real data channels */
[data-layer-mode="turnout"] .region { fill: #4a5568; opacity: calc(0.25 + var(--tq, 0.5) * 0.75) !important; }
[data-layer-mode="custom"] .region:not(.is-custom) { filter: saturate(0.2); opacity: 0.4 !important; }
[data-layer-mode="custom"] .region.is-custom { stroke: #111827; stroke-width: 1.8; stroke-dasharray: 5 3; }
/* legend band dots */
.legend-dot.band-sd { background: #17407f; } .legend-dot.band-ld { background: #2457a6; }
.legend-dot.band-nd { background: #8eb4df; } .legend-dot.band-tu { background: #8d93a8; }
.legend-dot.band-nr { background: #df9b9f; } .legend-dot.band-lr { background: #b33f46; }
.legend-dot.band-sr { background: #8b2f36; }
.map-tooltip strong { display: block; font-weight: 700; }

/* ---- THE DEMO MODELER (2026-07-17): edit card, scenario tally, conversion gates ---- */
.demo-editcard { position: absolute; left: 16px; bottom: 16px; z-index: 4; background: #ffffff;
  border: 1px solid #d5dbd7; border-radius: 10px; padding: 12px 14px; box-shadow: 0 10px 28px rgba(17, 23, 22, 0.14); max-width: 250px; }
.demo-editname { font-weight: 800; font-size: 0.95rem; }
.demo-editread { font-size: 0.8rem; color: #55605c; margin: 2px 0 8px; font-variant-numeric: tabular-nums; }
.demo-editbtns { display: flex; gap: 5px; flex-wrap: wrap; }
.demo-editbtns button { border: 1px solid #b9c2bd; background: #fff; border-radius: 7px; padding: 5px 9px;
  font: inherit; font-size: 0.78rem; font-weight: 700; cursor: pointer; }
.demo-editbtns button:hover { border-color: #111716; }
.demo-editbtns button:nth-child(1), .demo-editbtns button:nth-child(2) { color: #8b2f36; }
.demo-editbtns button:nth-child(3), .demo-editbtns button:nth-child(4) { color: #17407f; }
.demo-editbtns .demo-reset { color: #55605c; }
.demo-editnote { margin-top: 8px; font-size: 0.68rem; color: #7a847f; line-height: 1.4; }
.region.is-edited { stroke: #111716; stroke-width: 1.4; }
.demo-bar { grid-row: 2; grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap;
  margin-top: 10px; padding: 10px 14px; background: #ffffff; border: 1px solid #d5dbd7; border-radius: 10px; }
.demo-tally { font-size: 0.82rem; color: #3c4642; font-variant-numeric: tabular-nums; }
.demo-tally strong { color: #111716; letter-spacing: 0.04em; }
.demo-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.demo-actions button { display: inline-flex; align-items: center; gap: 6px; border: 1px solid #111716;
  background: #111716; color: #fff; border-radius: 8px; padding: 8px 13px; font: inherit; font-size: 0.8rem;
  font-weight: 700; cursor: pointer; }
.demo-actions button:hover { background: #2a3330; }
.demo-actions button svg { width: 14px; height: 14px; }
.demo-gate[hidden] { display: none; }
.demo-gate { position: fixed; inset: 0; z-index: 60; display: grid; place-items: center;
  background: rgba(17, 23, 22, 0.45); }
.demo-gate-card { background: #ffffff; border-radius: 14px; padding: 28px 30px; max-width: 460px;
  width: calc(100vw - 40px); box-shadow: 0 24px 60px rgba(17, 23, 22, 0.3); }
.demo-gate-card h3 { margin: 6px 0 10px; font-size: 1.4rem; line-height: 1.2; }
.demo-gate-card p { color: #55605c; font-size: 0.92rem; line-height: 1.55; }
.demo-gate-actions { display: flex; align-items: center; gap: 16px; margin-top: 18px; flex-wrap: wrap; }
@media (max-width: 700px) { .demo-editcard { left: 8px; bottom: 8px; max-width: 210px; } }

/* OBSERVED POLL REGIONS view (platform tab, 2026-07-18): three real survey regions over real
   counties — neutral hues distinct from the party bands, dashed seams between regions */
.map-stage[data-layer-mode="regions"] .region { fill: #d7dcd9; }
.map-stage[data-layer-mode="regions"] .region.rg-north { fill: #7d9b8f; }
.map-stage[data-layer-mode="regions"] .region.rg-central { fill: #b9a97c; }
.map-stage[data-layer-mode="regions"] .region.rg-south { fill: #8d86a8; }
.map-stage[data-layer-mode="regions"] .region { stroke: #f4f1ea; stroke-width: 0.8; }

/* ---- THE LIVE CONTROL TOOL (2026-07-18) ---- */
.control-tool { background: #ffffff; border: 1px solid #d5dbd7; border-radius: 12px; padding: 16px 18px; }
.control-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.control-tabs { display: inline-flex; border: 1px solid #b9c2bd; border-radius: 8px; overflow: hidden; }
.control-tabs button { border: 0; background: #fff; padding: 8px 14px; font: inherit; font-size: 0.82rem; font-weight: 700; cursor: pointer; }
.control-tabs button[aria-selected="true"] { background: #111716; color: #fff; }
.control-tally { margin-top: 12px; font-size: 1.02rem; font-variant-numeric: tabular-nums; }
.control-tally strong { color: #17407f; } .control-tally strong.is-r { color: #8b2f36; }
.control-tally em { font-style: normal; font-weight: 800; }
.control-bar { position: relative; display: flex; height: 12px; border-radius: 999px; overflow: hidden; background: #e3e7e4; margin: 8px 0 12px; }
.control-bar-d { background: #2f5fae; } .control-bar-r { background: #b0453c; margin-left: auto; }
.control-bar-mark { position: absolute; left: 50%; top: -2px; bottom: -2px; width: 2px; background: #111716; }
.control-map { width: 100%; display: block; }
.control-map[hidden], .control-strip[hidden] { display: none; }
.control-map .region { stroke: #f4f1ea; stroke-width: 0.7; }
.control-map .ctrl-carry { fill: #dfe3e0; }
.control-map .ctrl-up { cursor: pointer; }
.control-map .ctrl-up:hover { filter: brightness(1.08); }
.control-map .ctrl-d { fill: #2f5fae; } .control-map .ctrl-r { fill: #b0453c; }
.control-map .is-flipped { stroke: #111716; stroke-width: 1.6; }
.control-strip { display: flex; flex-wrap: wrap; gap: 5px; padding: 6px 0; }
.ctrl-seat { border: 1px solid transparent; border-radius: 6px; padding: 6px 7px; font: inherit; font-size: 0.68rem; font-weight: 800; color: #fff; cursor: pointer; }
.ctrl-seat.ctrl-d { background: #2f5fae; } .ctrl-seat.ctrl-r { background: #b0453c; }
.ctrl-seat.is-flipped { border-color: #111716; box-shadow: 0 0 0 1px #111716; }
.control-note { font-size: 0.72rem; color: #7a847f; margin-top: 8px; line-height: 1.45; }
.control-ctas { display: flex; align-items: center; gap: 16px; margin-top: 12px; flex-wrap: wrap; }

/* ---- THE COUNTY PORTAL (2026-07-18): rotating real counties in the proof section ---- */
.county-portal { background: #ffffff; border: 1px solid #d5dbd7; border-radius: 12px; padding: 14px 16px; }
.portal-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.portal-kicker { font-size: 0.62rem; letter-spacing: 0.1em; color: #7a847f; margin: 0 0 2px; }
.portal-name { margin: 0; font-size: 1.15rem; }
.portal-read { font-size: 0.86rem; font-variant-numeric: tabular-nums; color: #3c4642; text-align: right; }
.portal-read .is-d { color: #17407f; } .portal-read .is-r { color: #8b2f36; }
.portal-map { width: 100%; display: block; margin: 10px 0 8px; opacity: 0; transition: opacity 0.45s ease; }
.portal-map.is-in { opacity: 1; }
.portal-map .region { stroke: #f4f1ea; stroke-width: 0.4; }
.portal-foot { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.portal-chips { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.portal-chips button { border: 1px solid #b9c2bd; background: #fff; border-radius: 999px; padding: 5px 11px; font: inherit; font-size: 0.72rem; font-weight: 700; cursor: pointer; }
.portal-chips button[aria-selected="true"] { background: #111716; color: #fff; border-color: #111716; }

/* ---- COUNTIES DIRECTORY: the storefront path into all 51 state indexes and 3,144 portals ---- */
.county-directory { scroll-margin-top: 72px; background: linear-gradient(135deg, #f2c14a 0 16%, var(--paper) 16% 100%); }
.county-directory-heading { max-width: 1440px; margin: 0 auto 44px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, 560px); gap: var(--space-12); align-items: end; }
.county-directory-heading h2 { max-width: 850px; margin: 0; font-family: var(--font-display); font-size: var(--text-xl); line-height: .94; }
.county-directory-copy p { margin: 0; color: var(--ink-soft); font-size: var(--text-lg); }
.county-local-link { min-height: 44px; width: fit-content; display: inline-flex; align-items: center; gap: 8px; margin-top: 16px; color: var(--blue); font-weight: 800; text-decoration: none; border-bottom: 2px solid currentColor; }
.county-local-link svg { width: 16px; height: 16px; }
.county-personas { max-width: 1440px; margin: 0 auto 28px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 2px solid var(--ink); background: var(--white); }
.county-personas a { min-height: 230px; display: flex; flex-direction: column; padding: 24px; border-right: 1px solid var(--ink); text-decoration: none; transition: color var(--duration-fast), background var(--duration-fast); }
.county-personas a:last-child { border-right: 0; }
.county-personas a:hover { color: var(--white); background: var(--ink); }
.county-personas span { font-family: var(--font-mono); font-size: .66rem; color: var(--blue); text-transform: uppercase; }
.county-personas strong { max-width: 18ch; margin-top: 18px; font-family: var(--font-display); font-size: clamp(1.45rem, 2.3vw, 2.25rem); line-height: 1; }
.county-personas small { display: flex; align-items: center; gap: 7px; margin-top: auto; padding-top: 28px; font-size: .8rem; font-weight: 700; }
.county-personas small svg { width: 15px; height: 15px; }
.county-state-directory { max-width: 1440px; margin: 0 auto; border-top: 2px solid var(--ink); border-bottom: 2px solid var(--ink); background: rgba(249,251,248,.72); }
.county-state-directory summary { min-height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 14px 18px; font-family: var(--font-display); font-size: 1.35rem; font-weight: 800; cursor: pointer; list-style: none; }
.county-state-directory summary::-webkit-details-marker { display: none; }
.county-state-directory summary span { display: inline-flex; align-items: center; gap: 8px; color: var(--muted); font-family: var(--font-mono); font-size: .67rem; text-transform: uppercase; }
.county-state-directory summary svg { width: 18px; height: 18px; transition: transform var(--duration-fast); }
.county-state-directory[open] summary svg { transform: rotate(180deg); }
.county-state-links { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); border-top: 1px solid var(--ink); }
.county-state-links a { min-height: 48px; display: flex; align-items: center; padding: 9px 12px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: .78rem; font-weight: 700; text-decoration: none; }
.county-state-links a:nth-child(6n) { border-right: 0; }
.county-state-links a:hover { color: var(--white); background: var(--blue); }
@media (max-width: 820px) {
  .county-directory { scroll-margin-top: 64px; }
  .county-directory-heading { grid-template-columns: 1fr; gap: 20px; }
  .county-state-links { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .county-state-links a:nth-child(6n) { border-right: 1px solid var(--line); }
  .county-state-links a:nth-child(3n) { border-right: 0; }
}
@media (max-width: 560px) {
  .county-directory { background: linear-gradient(145deg, #f2c14a 0 8%, var(--paper) 8% 100%); }
  .county-directory-copy p { font-size: 1rem; }
  .county-personas { grid-template-columns: 1fr; }
  .county-personas a { min-height: 190px; border-right: 0; border-bottom: 1px solid var(--ink); }
  .county-personas a:last-child { border-bottom: 0; }
  .county-state-directory summary { align-items: flex-start; flex-direction: column; gap: 4px; }
  .county-state-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .county-state-links a:nth-child(3n) { border-right: 1px solid var(--line); }
  .county-state-links a:nth-child(2n) { border-right: 0; }
}

/* ---- THE ROTATING HERO (2026-07-18): five use cases, five real maps ---- */
svg.hero-map { inset: 6% 3% 6% auto; left: auto; width: 58%; height: 88%; z-index: -3; opacity: 0.94; }
svg.hero-map .region { pointer-events: none; cursor: default; transition: none; }
svg.hero-map .region { filter: drop-shadow(0 6px 0 rgba(0, 0, 0, 0.42)); }
@media (prefers-reduced-motion: no-preference) {
  svg.hero-map .region { animation: heroShapeIn 0.55s cubic-bezier(0.2, 0.7, 0.2, 1) backwards; animation-delay: calc(var(--i, 0) * 1ms); }
  .hero-map { transition: opacity 0.35s ease, transform 0.7s cubic-bezier(0.2, 0.7, 0.2, 1); }
  .hero.is-switching .hero-map { transform: scale(0.96); }
}
@keyframes heroShapeIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
svg.hero-map .region.rg-north { fill: #7d9b8f; }
svg.hero-map .region.rg-central { fill: #b9a97c; }
svg.hero-map .region.rg-south { fill: #8d86a8; }
@media (max-width: 860px) {
  svg.hero-map { inset: 9% 4% auto auto; left: auto; width: 92%; height: 42%; opacity: 0.8; }
  .hero-dots { gap: 6px; }
  .hero-dots button { padding: 5px 10px; font-size: 0.68rem; }
}
svg.hero-map .region { stroke: rgba(244, 241, 234, 0.25); stroke-width: 0.5; }
svg.hero-map .hero-quiet { fill: #2a3330; }
svg.hero-map .hero-early { fill: #d9a441; }
/* the visitor's own county on the geo-personalized campaigns slide */
svg.hero-map .hero-mine { stroke: #f2b441; stroke-width: 2.4; paint-order: stroke; }
svg.hero-map .ctrl-carry { fill: #313b38; }
svg.hero-map .ctrl-d { fill: #2f5fae; } svg.hero-map .ctrl-r { fill: #b0453c; }
.hero-copy { transition: opacity 0.22s ease; }
.hero.is-switching .hero-copy, .hero.is-switching .hero-map { opacity: 0.25; }
.hero-map { transition: opacity 0.35s ease; }
.hero-dots { display: flex; gap: 8px; margin-top: 22px; flex-wrap: wrap; }
.hero-dots button { border: 1px solid rgba(244, 241, 234, 0.35); background: transparent; color: rgba(244, 241, 234, 0.75);
  border-radius: 999px; padding: 6px 13px; font: inherit; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.04em; cursor: pointer; }
.hero-dots button[aria-selected="true"] { background: #f4f1ea; color: #111716; border-color: #f4f1ea; }

/* ---- THE TWO PRIMARY PORTALS (founder 2026-07-19): animated doors, no embedded app ---- */
.primary-doors { max-width: 1440px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.primary-door { display: block; position: relative; border: 1px solid rgba(244, 241, 234, 0.14); border-radius: 16px; overflow: hidden; background: #0d1213; text-decoration: none; color: var(--white); transition: transform 0.35s cubic-bezier(0.2, 0.7, 0.2, 1), border-color 0.35s ease; }
.primary-door:hover { transform: translateY(-4px); border-color: rgba(244, 241, 234, 0.4); }
.door-d { border-top: 3px solid #2f5fae; }
.door-r { border-top: 3px solid #b0453c; }
.door-map { width: 100%; height: auto; display: block; padding: 26px 26px 8px; box-sizing: border-box; }
.door-map .region { stroke: rgba(244, 241, 234, 0.16); stroke-width: 0.5; opacity: 0; }
.primary-doors.is-in .door-map .region { animation: heroShapeIn 0.55s cubic-bezier(0.2, 0.7, 0.2, 1) both; animation-delay: calc(var(--i, 0) * 1ms); }
@media (prefers-reduced-motion: reduce) { .door-map .region { opacity: 1; animation: none !important; } }
.door-d .dq-0 { fill: #1a2634; } .door-d .dq-1 { fill: #20344c; } .door-d .dq-2 { fill: #274264; }
.door-r .dq-0 { fill: #2c1c1a; } .door-r .dq-1 { fill: #3e2420; } .door-r .dq-2 { fill: #522c26; }
.door-map .is-early { fill: #8a6b2f; transition: fill 0.5s ease, filter 0.5s ease; }
.door-map .is-early.is-hot { fill: #f2b441; filter: drop-shadow(0 0 6px rgba(242, 180, 65, 0.55)); }
.door-copy { padding: 4px 26px 26px; }
.door-copy h3 { margin: 4px 0 8px; font-family: var(--font-display); font-size: 1.9rem; }
.door-copy p { margin: 0 0 14px; color: rgba(244, 241, 234, 0.72); font-size: 0.95rem; line-height: 1.5; max-width: 46ch; }
.door-cta { color: #f2b441; font-weight: 700; font-size: 0.95rem; }
.primary-doors-note { max-width: 1440px; margin: 14px auto 0; color: rgba(244, 241, 234, 0.55); font-size: 0.85rem; }
@media (max-width: 900px) { .primary-doors { grid-template-columns: 1fr; } }

/* Footer legal links — these must be reachable from every page a stranger lands on, not only
   from a URL they'd have to guess. Stripe requires a published privacy policy; more practically,
   a customer's counsel looks for these before they look at the product. */
.site-footer .footer-legal { display: flex; gap: 18px; flex-wrap: wrap; margin: 10px 0 6px; }
.site-footer .footer-legal a { font-size: 0.85rem; opacity: 0.75; }
.site-footer .footer-legal a:hover, .site-footer .footer-legal a:focus-visible { opacity: 1; }
