/* statehousesignal.com. Tokens and type follow BRAND.md: cool neutrals, gilt as the only warm value,
   Zilla Slab for display, Public Sans for text, Spline Sans Mono for figures. No blue, no red. */
@font-face { font-family:"Public Sans"; font-weight:400; font-display:swap; src:url(/fonts/public-sans-latin-400-normal.woff2) format("woff2"); }
@font-face { font-family:"Public Sans"; font-weight:600; font-display:swap; src:url(/fonts/public-sans-latin-600-normal.woff2) format("woff2"); }
@font-face { font-family:"Zilla Slab"; font-weight:600; font-display:swap; src:url(/fonts/zilla-slab-latin-600-normal.woff2) format("woff2"); }
@font-face { font-family:"Spline Sans Mono"; font-weight:500; font-display:swap; src:url(/fonts/spline-sans-mono-latin-500-normal.woff2) format("woff2"); }

:root {
  --ink:#121B1F; --paper:#F1F3F3; --surface:#FFFFFF; --surface-2:#EEF1F0;
  --line:#D5D9D8; --line-soft:#E2E6E5; --line-firm:#BFC6C4;
  --text:#161D20; --text-2:#56636A; --text-3:#636E76;
  --gilt:#8F6A26; --gilt-bright:#B8893B; --gilt-wash:#F4ECDB; --gilt-deep:#765719;
  --advancing:#2F7D63; --on-ink:#F2F1EC; --on-ink-2:#A9B3BA;
  --r-ctl:8px; --r-surface:12px; --r-pill:999px;
  --shadow-1:0 1px 2px rgba(18,27,31,.05), 0 2px 10px rgba(18,27,31,.04);
  --shadow-2:0 12px 32px rgba(18,27,31,.16);
  --slab:"Zilla Slab",Georgia,"Times New Roman",serif;
  --sans:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --mono:"Spline Sans Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark) {
  :root {
    --paper:#0E1416; --surface:#151D20; --surface-2:#1B2427;
    --line:#283236; --line-soft:#1F2A2D; --line-firm:#3A464A;
    --text:#E9EDEC; --text-2:#A3AEB3; --text-3:#8A969C;
    --gilt:#D9A94E; --gilt-bright:#E8BE6A; --gilt-wash:#2C2316; --gilt-deep:#E8BE6A;
    --shadow-1:0 1px 2px rgba(0,0,0,.35); --shadow-2:0 12px 32px rgba(0,0,0,.5);
  }
}

* { box-sizing:border-box; }
html { scroll-behavior:smooth; scrollbar-color:var(--line-firm) var(--paper); }
::selection { background:var(--gilt-wash); color:var(--gilt-deep); }
input, textarea { caret-color:var(--gilt-deep); }
[hidden] { display:none !important; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior:auto; } }
body { margin:0; font:17px/1.6 var(--sans); color:var(--text); background:var(--paper); -webkit-font-smoothing:antialiased; }
img { max-width:100%; height:auto; display:block; }
a { color:var(--text); text-decoration-color:var(--line-firm); text-underline-offset:3px; }
a:hover { text-decoration-color:var(--gilt-bright); }
:focus-visible { outline:2px solid var(--gilt-bright); outline-offset:2px; }
h1, h2, h3 { font-family:var(--slab); font-weight:600; line-height:1.15; letter-spacing:-.01em; margin:0 0 .5em; }
h1 { font-size:clamp(36px, 5vw, 56px); }
h2 { font-size:clamp(28px, 3.4vw, 38px); }
h3 { font-size:21px; }
p { margin:0 0 1em; }

.wrap { max-width:1160px; margin:0 auto; padding:0 24px; }
.narrow { max-width:780px; }
.narrow-text { max-width:640px; }
.center { text-align:center; }
.skip { position:absolute; left:-9999px; } .skip:focus { left:12px; top:12px; z-index:10; background:var(--surface); padding:8px 12px; border-radius:var(--r-ctl); }

.button { display:inline-block; font:600 15px/1 var(--sans); padding:13px 20px; border-radius:var(--r-ctl);
  background:var(--ink); color:var(--on-ink); text-decoration:none; border:1px solid var(--ink); }
.button:hover { background:#1f2b30; }
.button.secondary { background:transparent; color:var(--text); border-color:var(--line-firm); }
.button.secondary:hover { border-color:var(--gilt-bright); background:transparent; }
.button.small { padding:13px 14px; font-size:14px; }
@media (prefers-color-scheme: dark) {
  .button { border-color:var(--line-firm); }
  .button:hover { background:#26343A; }
}

/* Header */
.top { position:sticky; top:0; z-index:5; background:var(--paper); border-bottom:1px solid var(--line-soft); }
.top-row { display:flex; align-items:center; justify-content:space-between; gap:16px; height:64px; }
.brand { display:inline-flex; align-items:center; gap:10px; font:600 19px var(--slab); text-decoration:none; color:var(--text); }
.gilt { color:var(--gilt-deep); } /* small gold text on paper: --gilt is 4.43:1 there, below AA */
.top-nav { display:flex; align-items:center; gap:22px; font-size:15px; }
.top-nav a:not(.button) { text-decoration:none; color:var(--text-2); }
.top-nav a:not(.button):hover { color:var(--text); }
@media (max-width:760px) { .top-nav a:not(.button) { display:none; } }

/* Hero */
.hero { padding:72px 0 64px; }
.hero-grid { display:grid; grid-template-columns:minmax(0, 5fr) minmax(0, 7fr); gap:40px; align-items:center; }
@media (max-width:960px) { .hero-grid { grid-template-columns:1fr; } }
.lede { font-size:19px; color:var(--text-2); }
.facts { display:flex; flex-wrap:wrap; gap:4px 14px; margin:-4px 0 4px; padding:0; list-style:none; font:500 14px var(--mono); color:var(--text); }
.facts-sub { font-size:14px; color:var(--text-2); margin:0 0 18px; }
.facts li + li::before { content:"·"; margin-right:14px; color:var(--text-3); }
.states { color:var(--text-2); }
.cta-row { display:flex; flex-wrap:wrap; gap:12px; margin-top:24px; }
.shot { margin:0; }
.shot img { border-radius:var(--r-surface); box-shadow:var(--shadow-2); background:var(--surface); }
.shot figcaption, .caption { font-size:14px; color:var(--text-3); margin-top:10px; }
.wide-shot { margin-top:48px; }

/* Sections */
main > section { padding:64px 0; scroll-margin-top:64px; }
.problem { background:var(--surface); border-block:1px solid var(--line-soft); }
.plain-list { list-style:none; padding:0; margin:0 0 1.2em; }
.plain-list li { padding:14px 0; border-bottom:1px solid var(--line-soft); color:var(--text-2); }
.plain-list li strong { color:var(--text); font-weight:600; }
.ticks { list-style:none; padding:0; margin:0; font-size:15px; }
.ticks li { padding:6px 0 6px 22px; position:relative; }
.ticks li::before { content:""; position:absolute; left:2px; top:14px; width:10px; height:2px; background:var(--gilt-bright); }

.feed-demo { background:var(--surface-2); }
.feed-frame { background:var(--surface); border-radius:var(--r-surface); box-shadow:var(--shadow-1); padding:22px; margin-top:24px; color:#161D20; }
@media (prefers-color-scheme: dark) { .feed-frame { background:#FAFBFB; } } /* org websites are mostly light; show the feed as it would appear there */

.key-callout { display:grid; grid-template-columns:1fr 1fr; gap:48px; margin:28px 0; padding:28px 0; border-block:1px solid var(--line); }
.key-callout h3 { font-size:26px; }
.key-callout p { color:var(--text-2); margin:0; }
.security-facts { margin:0; display:grid; gap:18px; }
.security-facts dt { font-weight:600; }
.security-facts dd { margin:2px 0 0; color:var(--text-2); font-size:16px; }
.security-details { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; }
.security-details p { color:var(--text-2); font-size:16px; }
.price-card { background:var(--surface); border-radius:var(--r-surface); box-shadow:var(--shadow-1); padding:30px; }
.price-head { font:600 26px var(--slab); margin-bottom:10px; }
.price-card .ticks { margin:18px 0 24px; }

.founder { background:var(--ink); color:var(--on-ink); }
.founder h2 { color:var(--on-ink); }
.founder p { color:#D4D9DC; font-size:18px; }
.founder .sign { font:600 16px var(--sans); color:var(--gilt-bright); margin-top:20px; }

.faq details { border-bottom:1px solid var(--line); padding:16px 0; }
.faq summary { cursor:pointer; font-weight:600; font-size:18px; list-style:none; display:flex; justify-content:space-between; gap:16px; }
.faq summary::-webkit-details-marker { display:none; }
.faq summary::after { content:"+"; font:500 20px var(--mono); color:var(--gilt-deep); }
.faq details[open] summary::after { content:"–"; }
.faq details p { margin:10px 0 0; color:var(--text-2); }

.foot { border-top:1px solid var(--line); padding:28px 0 36px; font-size:14px; color:var(--text-2); }
.foot-row { display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; }
.foot nav { display:flex; gap:18px; }
.foot nav a { color:var(--text-2); }
.attribution { font-size:13px; color:var(--text-3); margin-top:6px; }

/* Plain pages (security, privacy) */
.doc { padding:56px 0 72px; }
.doc h2 { font-size:26px; margin-top:1.6em; }
.doc p, .doc li { color:var(--text-2); max-width:60ch; } /* "ch" is the width of 0: 60ch ≈ 75 characters of Public Sans */
.doc .note { background:var(--gilt-wash); color:var(--gilt-deep); border-radius:var(--r-ctl); padding:12px 16px; font-size:15px; }

/* Booking */
.book section { margin:28px 0; }
.book h2 { font-size:22px; margin-top:0; }
.muted-line { color:var(--text-3); font-size:14px; margin:-4px 0 12px; }
.days { display:grid; grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); gap:8px; }
.times { display:grid; grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); gap:8px; }
.slot { font:600 15px var(--sans); padding:12px 14px; border-radius:var(--r-ctl); border:1px solid var(--line-firm);
  background:var(--surface); color:var(--text); cursor:pointer; display:inline-flex; flex-direction:column; align-items:flex-start; gap:2px; min-width:96px; }
.slot:hover { border-color:var(--gilt-bright); }
.slot[aria-pressed="true"] { background:var(--ink); color:var(--on-ink); border-color:var(--ink); }
.slot-sub { font:400 14px var(--sans); color:var(--text-3); }
.slot[aria-pressed="true"] .slot-sub { color:var(--on-ink-2); }
.chosen { font-weight:600; }
.fld { display:block; margin-bottom:14px; }
.fld span { display:block; font-weight:600; font-size:14px; margin-bottom:4px; }
.fld em { font-style:normal; font-weight:400; color:var(--text-3); }
.fld input, .fld select, .fld textarea { width:100%; font:16px var(--sans); padding:10px 12px; border-radius:var(--r-ctl); border:1px solid var(--line-firm); background:var(--surface); color:var(--text); }
.form-note { font-size:13px; color:var(--text-3); margin:12px 0 16px; }
.cf-turnstile { margin:6px 0; min-height:65px; }
.status { color:var(--text-2); }
.status.error { color:#9B4A3F; font-weight:600; }
.book .note { background:var(--gilt-wash); color:var(--gilt-deep); border-radius:var(--r-ctl); padding:12px 16px; font-size:15px; }
@media (prefers-color-scheme: dark) { .slot[aria-pressed="true"] { border-color:var(--text); } .status.error, .field-error { color:#E1978D; } }

/* Marketing composition: readable product details, one clear path through the work. */
h1, h2, h3 { text-wrap:balance; }
.mobile-menu { display:none; }
.shot-link { display:block; border-radius:var(--r-surface); }
.shot-link:hover img { outline:2px solid var(--line-firm); outline-offset:3px; }
.hero-shot picture { display:block; }
.hero-shot { min-width:0; }
.section-intro { max-width:740px; margin-bottom:36px; }
.workflow-grid { display:grid; grid-template-columns:1fr 1.15fr; gap:64px; align-items:center; }
.workflow-steps article + article { margin-top:32px; }
.workflow-steps p, .report-row p { color:var(--text-2); }
.workflow-steps .detail { font-size:15px; }
.report-row { display:flex; gap:40px; justify-content:space-between; align-items:center; margin-top:48px; padding-top:32px; border-top:1px solid var(--line); }
.report-row > div { max-width:65ch; }
.report-row p { margin:0; }
.text-link { flex-shrink:0; font-weight:600; }
.pricing-note { font-size:16px; }
.closing { background:var(--surface); }
.doc p, .doc li { max-width:60ch; } /* "ch" is the width of 0: 60ch ≈ 75 characters of Public Sans */
.foot nav { flex-wrap:wrap; gap:8px 18px; }
.foot nav a { padding:8px 0; }
/* Booking: compact completed steps, stable feedback and recoverable errors. */
.book .step { padding:24px 0; margin:0; border-top:1px solid var(--line); scroll-margin-top:84px; }
.step-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.book .step-heading h2 { margin:0; }
.step-summary { margin:12px 0 0; color:var(--text-2); }
.quiet-button { background:none; border:0; color:var(--text); font:600 15px var(--sans); padding:12px 4px; text-decoration:underline; text-underline-offset:3px; cursor:pointer; }
.week-nav { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:16px 0; }
.week-nav p { margin:0; font-size:16px; font-weight:600; text-align:center; }
.week-nav button { padding:12px 8px; }
button { cursor:pointer; }
button:disabled { opacity:.5; cursor:not-allowed; }
.timezone-field { max-width:360px; margin:24px 0; }
.booking-contact { font-size:16px; margin:20px 0; }
.empty-times { margin-top:16px; }
.field-error { display:block; color:#9B4A3F; font-size:14px; margin-top:4px; }
.fld input[aria-invalid="true"] { border-color:#9B4A3F; }
.booking-confirm { border-top:1px solid var(--line); padding-top:20px; margin-top:24px; }
.booking-confirm .chosen { margin-bottom:16px; }
.booking-confirm .button { min-height:46px; }
.status:not(:empty) { padding:12px 0; }
@media (max-width:960px) {
  .hero-grid { gap:32px; }
  .hero-shot { max-width:719px; }
  .workflow-grid { gap:32px; }
  .report-row { display:block; }
  .report-row .text-link { display:inline-block; margin-top:20px; }
}
@media (max-width:760px) {
  .top-row { gap:8px; flex-wrap:wrap; min-height:64px; height:auto; padding-top:8px; padding-bottom:8px; }
  .brand { font-size:17px; gap:6px; }
  .brand svg { width:24px; height:24px; }
  .top-nav { margin-left:auto; }
  .top-nav .button { padding:13px 10px; }
  .mobile-menu { display:block; order:3; flex-basis:100%; font-size:15px; }
  .mobile-menu summary { cursor:pointer; padding:8px 0; font-weight:600; }
  body:has(.mobile-menu[open]) main > section { scroll-margin-top:220px; }
  .mobile-menu nav { display:grid; grid-template-columns:1fr 1fr; gap:4px 16px; padding:4px 0 8px; }
  .mobile-menu nav a { padding:10px 0; }
  main > section { padding:40px 0; scroll-margin-top:120px; }
  .hero { padding-top:36px; }
  .workflow-grid, .key-callout, .security-details { grid-template-columns:1fr; gap:24px; }
  .activity-shot img { display:none; }
  .activity-shot figcaption { margin:0; font-size:16px; }
  .activity-shot .shot-link { display:none; }
  .section-intro { margin-bottom:28px; }
  .key-callout { padding:24px 0; gap:28px; }
  .security-details { gap:8px; }
  .price-card { padding:24px; }
  .doc { padding-top:36px; }
  .book .step { scroll-margin-top:130px; }
}
@media (max-width:600px) {
  .hero-shot { max-width:390px; margin-inline:auto; }
  .hero-shot img { width:100%; }
  .hero .facts { font-size:13px; gap:4px 8px; }
  .facts li + li::before { margin-right:8px; }
  .feed-frame { padding:16px; }
}
@media (max-width:360px) {
  .wrap { padding-inline:16px; }
  .brand { font-size:16px; }
  .brand svg { display:none; }
}

@media (prefers-color-scheme: dark) { .field-error { color:#E1978D; } .fld input[aria-invalid="true"] { border-color:#E1978D; } }

/* Full-screen product gallery. Native dialog supplies focus containment and Escape. */
.doc h2[id] { scroll-margin-top:88px; }
@media (max-width:760px) { .doc h2[id] { scroll-margin-top:128px; } body:has(.mobile-menu[open]) .doc h2[id] { scroll-margin-top:230px; } }
body.preview-open { position:fixed; width:100%; overflow:hidden; }
.preview { position:fixed; inset:0; width:100%; max-width:none; height:100%; height:100dvh; max-height:none; margin:0; padding:0; border:0; background:#121B1F; color:#F2F1EC; overflow:hidden; }
.preview[open] { display:grid; grid-template-rows:auto auto minmax(0,1fr); }
.preview::backdrop { background:rgba(8,14,17,.9); }
.preview-bar { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:20px max(24px,env(safe-area-inset-right)) 16px max(24px,env(safe-area-inset-left)); }
.preview-bar h2 { font-size:24px; margin:0 0 4px; }
.preview-bar p { color:#AFBCC1; font-size:14px; margin:0; }
.preview button { font:600 14px var(--sans); min-height:44px; padding:10px 14px; color:#F2F1EC; background:transparent; border:1px solid #536169; border-radius:8px; white-space:nowrap; }
.preview button:hover { background:#26343A; border-color:#AFBCC1; }
.preview button:focus-visible, .preview-scroll:focus-visible, .preview-image:focus-visible { outline:2px solid #E8BE6A; outline-offset:-3px; }
.preview-close { display:flex; align-items:center; gap:10px; flex-shrink:0; }
.preview-tools { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:0 24px 16px; border-bottom:1px solid #35434A; }
.preview-tabs { display:flex; gap:4px; }
.preview-tabs button { border-color:transparent; }
.preview-tabs button[aria-current] { background:#F2F1EC; color:#121B1F; }
.preview-scroll { overflow:auto; overscroll-behavior:contain; scrollbar-color:#68777E #121B1F; padding:32px 32px max(48px,env(safe-area-inset-bottom)); position:relative; }
.preview-stack { max-width:1280px; margin:0 auto; display:grid; gap:64px; }
.preview figure { margin:0; min-width:0; }
.preview figure:last-child { min-height:calc(100dvh - 200px); }
.preview figcaption { margin:0 0 18px; }
.preview figcaption h3 { font-size:25px; margin:0 0 6px; }
.preview figcaption p { font-size:15px; color:#AFBCC1; margin:0; }
.preview-image { overflow:auto; overscroll-behavior-x:contain; border-radius:8px; scrollbar-color:#68777E #26343A; }
.preview-image img { width:auto; max-width:100%; margin:0 auto; height:auto; background:white; }
.preview.actual-size .preview-image img { max-width:none; }
.preview-error { padding:32px; border:1px solid #536169; border-radius:8px; }
.preview-error a { color:#F2F1EC; }
@media (max-width:600px) {
  .preview-bar { align-items:flex-start; padding:16px; gap:12px; }
  .preview-bar h2 { font-size:20px; }
  .preview-bar p { font-size:14px; max-width:28ch; }
  .preview-tools { gap:8px; padding:0 12px 12px; flex-wrap:wrap; }
  .preview-tools button { padding-inline:10px; }
  .preview-scroll { padding:24px 16px max(40px,env(safe-area-inset-bottom)); }
  .preview-stack { gap:40px; }
  .preview figcaption h3 { font-size:23px; }
}

/* The feed keeps its real responsive renderer while its configuration changes. */
.feed-showcase { margin-top:28px; }
.feed-demo-controls { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
.feed-style-buttons { display:flex; flex-wrap:wrap; gap:6px; }
.feed-demo-controls button { font:600 14px var(--sans); min-height:44px; padding:10px 12px; border:1px solid var(--line-firm); border-radius:8px; color:var(--text); background:transparent; }
.feed-demo-controls button:hover { border-color:var(--gilt-deep); }
.feed-demo-controls button[aria-pressed="true"] { background:var(--ink); color:var(--on-ink); border-color:var(--ink); }
.feed-playback { flex-shrink:0; }
.feed-scenes { display:grid; isolation:isolate; border-radius:12px; overflow:hidden; background:#fff; box-shadow:var(--shadow-1); }
.feed-scene { grid-area:1 / 1; padding:26px; color:#1B2428; background:#fff; min-width:0; opacity:1; visibility:visible; transition:opacity .35s ease, visibility .35s; }
.feed-scene[aria-hidden="true"] { opacity:0; visibility:hidden; pointer-events:none; }
.feed-style-note { margin-bottom:24px; padding-bottom:18px; border-bottom:1px solid #D7DDDC; }
.feed-style-note h3 { font:600 20px var(--sans); margin-bottom:6px; }
.feed-style-note p { font:14px/1.5 var(--sans); margin:2px 0; color:#4C5A60; }
.feed-render { font:16px/1.55 var(--sans); }
.feed-scene--editorial { background:#F7F9F9; } /* cool ground (BRAND.md: no warm cream) */
.feed-scene--compact { background:#F2F7F3; }
.feed-scene--table { background:#F4F7FA; }
.feed-demo-caption { color:var(--text-2); font-size:14px; margin:14px 0 0; }
.feed-capture-page { background:#E8ECEC; padding:24px; }
.feed-capture { margin:0; }
.feed-capture .feed-scenes { min-height:740px; }
.feed-capture .feed-demo-caption { color:#35464C; }
@media (max-width:600px) {
  .feed-demo-controls { align-items:flex-start; }
  .feed-style-buttons { display:grid; grid-template-columns:1fr 1fr; }
  .feed-demo-controls button { font-size:13px; padding-inline:10px; }
  .feed-scene { padding:20px 16px; }
  .feed-style-note { margin-bottom:20px; }
}
@media (prefers-reduced-motion:reduce) { .feed-scene { transition:none; } }
/* Export typography is sized for a reusable, readable GIF canvas. */
.feed-capture-page { zoom:1.2; }
.feed-capture .feed-scenes { min-height:610px; }
@media (max-width:360px) { .feed-scene { padding-inline:12px; } }
/* Typesetting: no one-word last lines. */
p, li, dd, figcaption { text-wrap:pretty; }
.narrow p, .narrow-text { max-width:60ch; }
