/* expectedcosts.com — stylesheet.
   A forecast sheet, not a portal: slab-serif display type, tabular mono figures, hairline
   rules and a 3px radius. Token contract and layout system: DESIGN.md §3, §5.
   fonts.css is loaded by the document head; no external requests here. */

/* ================================================================ tokens (DESIGN.md §3) */
:root{
  /* Bitter reads as a printed report, Public Sans carries UI text, IBM Plex Mono carries
     every figure so numeric columns align. */
  --font-display: "Bitter", "Rockwell", Georgia, serif;
  --font-sans: "Public Sans", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
  --font-num: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;

  --primary:#0D223E;          /* wordmark ink — masthead, headings */
  --primary-light:#1C3A5E;    /* subheads, dark links */
  --text:#1B2733;             /* body */
  --text-light:#4E5D6B;       /* secondary, captions */
  --text-muted:#5F6D77;       /* 18.66px+ only */

  --bg:#FFFFFF;
  --surface:#F4F7F6;          /* table zebra, side rails */
  --surface-hover:#E8EFED;
  --border:#D5DEDB;           /* hairline rules, 1px */
  --border-light:#EAF0EE;

  --accent:#18675D;           /* sampled from the logo (hue 172) */
  --accent-strong:#0F4A40;
  --accent-deep:#0A332C;
  --accent-soft:#E7F3F0;

  --cta:#A8551B;              /* burnt amber: money action, never the teal link */
  --cta-hover:#864314;
  --evidence:#EEF6F4;         /* sourced-data callout background (pale mint) */
  --success:#0F6B45;
  --warn:#8A5A00;
  --danger:#A32017;

  --footer-bg:#0D223E;
  --footer-text:#C7D4DF;
  --footer-muted:#93A7B6;

  --radius:3px;               /* nearly square: this is a sheet, not a card */
  --radius-sm:2px;
  --rule:1px solid var(--border);
  --shadow:0 1px 0 var(--border);
  --shadow-md:0 2px 8px rgb(13 34 62 / .06);
  --shadow-hover:0 3px 0 var(--accent);   /* underline-style lift, not a blur */
  --transition:all .18s cubic-bezier(.2, 0, .2, 1);

  --container:1180px;
  --gutter:24px;
  --measure:68ch;

  --step--1:.8125rem;  /* 13px small */
  --step-0:1rem;       /* 16px body  */
  --step-1:1.1875rem;  /* 19px lead  */
  --step-2:1.375rem;   /* 22px h3    */
  --step-3:1.875rem;   /* 30px h2    */
  --step-4:2.625rem;   /* 42px h1    */

  /* one 4px-based vertical rhythm (§4) */
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:24px;
  --space-6:32px;
  --space-7:48px;
  --space-8:64px;
}

/* per-category re-theming — same technique the reference uses on a wrapper element, our
   hues. Every value is verified >= 4.5:1 as text on white and as a white-text background. */
[data-category="medical"]            { --accent: hsl(268 60% 32%); --accent-strong: hsl(268 60% 24%); }
[data-category="cat-home-services"]  { --accent: hsl(190 70% 26%); --accent-strong: hsl(190 70% 20%); }
[data-category="cat-finance"]        { --accent: hsl(158 68% 25%); --accent-strong: hsl(158 68% 19%); }
[data-category="cat-legal"]          { --accent: hsl(330 62% 34%); --accent-strong: hsl(330 62% 26%); }
[data-category="cat-auto"]           { --accent: hsl(22 78% 32%);  --accent-strong: hsl(22 78% 24%); }
[data-category="insurance"]          { --accent: hsl(205 72% 30%); --accent-strong: hsl(205 72% 23%); }
[data-category="cat-events"]         { --accent: hsl(312 56% 36%); --accent-strong: hsl(312 56% 28%); }
[data-category="cat-pets"]           { --accent: hsl(92 58% 26%);  --accent-strong: hsl(92 58% 20%); }
[data-category="cat-senior-care"]    { --accent: hsl(350 60% 34%); --accent-strong: hsl(350 60% 26%); }
[data-category="cat-real-estate"]    { --accent: hsl(178 68% 25%); --accent-strong: hsl(178 68% 19%); }
[data-category="cat-travel"]         { --accent: hsl(224 62% 34%); --accent-strong: hsl(224 62% 26%); }
[data-category="cat-recreation"]     { --accent: hsl(138 60% 25%); --accent-strong: hsl(138 60% 19%); }
[data-category="cat-business"]       { --accent: hsl(250 52% 36%); --accent-strong: hsl(250 52% 28%); }
[data-category="cat-tech-services"]  { --accent: hsl(196 74% 27%); --accent-strong: hsl(196 74% 21%); }
[data-category="cat-education"]      { --accent: hsl(44 84% 26%);  --accent-strong: hsl(44 84% 20%); }
[data-category="cat-life-events"]    { --accent: hsl(300 44% 34%); --accent-strong: hsl(300 44% 26%); }
[data-category="cat-kids-family"]    { --accent: hsl(14 68% 32%);  --accent-strong: hsl(14 68% 24%); }
[data-category="cat-beauty-wellness"]{ --accent: hsl(338 54% 36%); --accent-strong: hsl(338 54% 28%); }

/* ================================================================ base */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--step-0);line-height:1.6;-webkit-font-smoothing:antialiased}
main{display:block}
img,svg{max-width:100%}
img{display:block;height:auto}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--accent-strong);text-decoration:underline}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
input,select,button,textarea{font:inherit}
label{display:block;font-size:var(--step--1);font-weight:700;color:var(--primary)}
code{font-family:var(--font-num);font-size:.9em;color:var(--primary);background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-sm);padding:1px 5px}
hr{border:0;border-top:var(--rule);margin:var(--space-7) 0}
ul,ol{margin:0 0 var(--space-4);padding-left:var(--space-5)}
.container{max-width:var(--container);margin:0 auto;padding:0 var(--gutter)}

/* ================================================================ type */
h1,h2,h3,h4{color:var(--primary);margin:0}
h1{font-family:var(--font-display);font-size:var(--step-4);font-weight:700;line-height:1.1;letter-spacing:-.015em;margin:var(--space-4) 0}
h2{font-family:var(--font-display);font-size:var(--step-3);font-weight:600;line-height:1.2;margin:var(--space-7) 0 var(--space-4)}
h3{font-size:var(--step-2);font-weight:700;line-height:1.3;margin:var(--space-6) 0 var(--space-3)}
h4{font-size:var(--step-1);font-weight:700;line-height:1.3;margin:var(--space-5) 0 var(--space-2)}
h2:first-child,h3:first-child{margin-top:0}
p{margin:0 0 var(--space-4)}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 var(--space-3)}
.lede{max-width:var(--measure);font-size:var(--step-1);line-height:1.55;color:var(--text-light)}
.answer{max-width:var(--measure)}
.small{font-size:var(--step--1);line-height:1.45;color:var(--text-light)}
.meta{font-size:var(--step--1);color:var(--text-light);font-weight:600}
.prov{font-size:var(--step--1);color:var(--text-light);word-break:break-word}
.count{font-family:var(--font-num);font-size:var(--step--1);color:var(--text-light);font-variant-numeric:tabular-nums;white-space:nowrap}
.big{font-family:var(--font-num);font-size:2rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--primary);margin:0 0 var(--space-2)}
.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;white-space:nowrap}
.src{font-size:var(--step--1);color:var(--text-light)}
.com{font-family:var(--font-num);font-size:.9em;color:var(--text-light)}
.center{text-align:center}

/* ================================================================ masthead: ink bar + 3px accent rule */
.site-header{position:sticky;top:0;z-index:100;background:var(--primary);border-bottom:3px solid var(--accent)}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);min-height:64px}
.logo{display:inline-flex;align-items:center;gap:var(--space-3);min-height:44px;font-family:var(--font-display);font-size:1.25rem;font-weight:700;letter-spacing:-.01em;color:var(--bg);white-space:nowrap;text-decoration:none}
.logo:hover{color:var(--bg);text-decoration:none}
.logo svg{display:block;flex:0 0 30px;width:30px;height:30px}
.nav-menu{display:flex;align-items:center;gap:var(--space-1);list-style:none;margin:0;padding:0}
.nav-menu a{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--space-3);color:var(--footer-text);font-size:.875rem;font-weight:600;border-bottom:2px solid transparent}
.nav-menu a:hover{color:var(--bg);background:var(--primary-light);border-bottom-color:var(--accent);text-decoration:none}
.nav-toggle{display:none;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:var(--space-2) var(--space-3);background:transparent;border:1px solid var(--primary-light);border-radius:var(--radius);color:var(--footer-text);font-weight:600;cursor:pointer}
.nav-toggle:hover{border-color:var(--accent);color:var(--bg)}
.nav-toggle:active{background:var(--primary-light)}
.nav-toggle:disabled{opacity:.5;cursor:not-allowed}
.skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--primary);color:var(--bg);padding:var(--space-3) var(--space-4);font-weight:700}
.skip:focus{left:var(--space-2);top:var(--space-2)}

/* ================================================================ heroes (ruled, no image) */
.home-hero,.niche-hero,.state-hero,.city-hero,.city-service-hero,.state-niche-hero,.category-hero{padding:var(--space-8) 0 var(--space-7);background:var(--bg);border-bottom:var(--rule)}
.home-hero{background-image:linear-gradient(var(--border-light) 1px,transparent 1px);background-size:100% 32px}
.hero-sub{max-width:var(--measure);margin:var(--space-4) 0 0;color:var(--text-light);font-size:var(--step-1);line-height:1.55}
.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-6)}
.search-box{position:relative;display:flex;gap:var(--space-2);max-width:640px;margin:var(--space-6) 0 0}
.search-box input{flex:1;min-width:0;min-height:48px;padding:var(--space-3) var(--space-4);color:var(--text);background:var(--bg);border:var(--rule);border-radius:var(--radius)}
.search-box input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.search-box input::placeholder{color:var(--text-muted)}
.search-box input:disabled{background:var(--surface);color:var(--text-muted);cursor:not-allowed}
.search-results{display:none;position:absolute;left:0;right:0;top:calc(100% + var(--space-1));z-index:60;max-height:60vh;overflow-y:auto;background:var(--bg);border:var(--rule);border-radius:var(--radius);box-shadow:var(--shadow-md)}
.search-results[data-open="1"]{display:block}
.search-results a{display:flex;align-items:center;min-height:44px;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-light);color:var(--text);font-weight:600;font-size:.9375rem}
.search-results a:last-child{border-bottom:0}
.search-results a:hover{background:var(--surface-hover);color:var(--primary);text-decoration:none}
.search-results:empty{display:none}

/* ================================================================ crumbs + sections */
.crumbs,.breadcrumb{font-size:var(--step--1);color:var(--text-muted);padding:var(--space-5) 0 0}
.crumbs ol,.breadcrumb ol{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0;padding:0}
.crumbs li,.breadcrumb li{display:inline-flex;align-items:center;gap:var(--space-2);margin:0}
.crumbs li+li::before,.breadcrumb li+li::before{content:"/";color:var(--border)}
.crumbs a,.breadcrumb a{display:inline-flex;align-items:center;min-height:44px;color:var(--text-light)}
.crumbs a:hover,.breadcrumb a:hover{color:var(--accent)}
.section{padding:var(--space-7) 0;border-bottom:var(--rule)}
.section:last-of-type{border-bottom:0}
.section-header{margin:0 0 var(--space-5);padding-bottom:var(--space-3);border-bottom:var(--rule)}
.section-header h2{margin:0 0 var(--space-2)}
.section-header p{max-width:var(--measure);color:var(--text-light);margin:0}
.rule{border:0;border-top:var(--rule);margin:var(--space-7) 0}

/* ================================================================ grids + cards (ruled, 3px radius) */
.category-grid,.niche-grid,.state-grid,.city-grid,.deep-grid,.card-grid{display:grid;gap:var(--space-4);list-style:none;margin:var(--space-5) 0;padding:0}
.category-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.niche-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.state-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-3)}
.city-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:var(--space-2)}
.deep-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3)}
.card-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.category-card,.niche-card,.state-card,.city-card,.card{display:block;height:100%;color:var(--text);background:var(--bg);border:var(--rule);border-radius:var(--radius);box-shadow:var(--shadow);text-decoration:none;transition:var(--transition)}
.category-card:hover,.niche-card:hover,.state-card:hover,.city-card:hover,.card:hover{border-color:var(--accent);box-shadow:var(--shadow-hover);color:var(--text);text-decoration:none}
.category-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3);padding:var(--space-5)}
.category-card h3{margin:0;font-size:var(--step-1)}
.category-card p{margin:0;font-size:.875rem;color:var(--text-light)}
.category-card .count{margin-top:auto}
.cat-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;background:var(--accent-soft);color:var(--accent);border:var(--rule);border-radius:var(--radius);font-family:var(--font-display);font-size:1.25rem;font-weight:700}
.niche-card{padding:var(--space-5);border-left:3px solid var(--border)}
.niche-card h3{margin:0 0 var(--space-2);font-size:var(--step-1)}
.niche-card p{margin:0;font-size:.875rem;color:var(--text-light)}
.niche-card .meta{display:block;margin-top:var(--space-3);font-family:var(--font-num)}
.state-card{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-4)}
.state-name{font-weight:700;color:var(--primary)}
.state-meta{font-size:var(--step--1);color:var(--text-light)}
.city-card{display:flex;flex-direction:column;gap:2px;padding:var(--space-3) var(--space-4);font-weight:600}
.city-card .meta{font-size:12px;font-weight:400}
.card{padding:var(--space-5)}
.card h3{margin:0 0 var(--space-2);font-size:var(--step-1)}
.card p{margin:0;font-size:.9375rem;color:var(--text-light)}
.cat-block{margin:0 0 var(--space-7)}
.cat-block h2{margin:0 0 var(--space-3);padding-bottom:var(--space-2);border-bottom:var(--rule)}

/* ================================================================ index list: label + leader + count */
ul.idx{list-style:none;max-width:var(--measure);margin:0;padding:0}
ul.idx li{display:flex;align-items:baseline;gap:var(--space-3);margin:0;padding:var(--space-3) 0;border-bottom:1px solid var(--border-light)}
ul.idx li:last-child{border-bottom:0}
ul.idx a{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--text)}
ul.idx a:hover{color:var(--accent);text-decoration:none}
.leader{flex:1;min-width:var(--space-5);border-bottom:1px dotted var(--border);transform:translateY(-.3em)}

/* ================================================================ money page: 1 col -> 2 col @960, 320px sticky rail */
.page-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6);padding:var(--space-6) 0 var(--space-8)}
.content-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6);padding:var(--space-6) 0}
.content-main{min-width:0}
.rail{display:flex;flex-direction:column;gap:var(--space-5);min-width:0}
.rail-card,.sidebar-card{background:var(--bg);border:var(--rule);border-top:3px solid var(--accent);border-radius:var(--radius);padding:var(--space-5);box-shadow:var(--shadow)}
.sidebar-card{border-top-color:var(--primary)}
.rail-card h2,.sidebar-card h2{font-family:var(--font-sans);font-size:var(--step--1);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);margin:0 0 var(--space-3);padding-bottom:var(--space-2);border-bottom:var(--rule)}
.rail-card dl{margin:0}
.rail-card dt{font-size:var(--step--1);color:var(--text-light)}
.rail-card dd{font-family:var(--font-num);font-size:var(--step-2);font-weight:600;font-variant-numeric:tabular-nums;color:var(--primary);margin:var(--space-1) 0 0;padding-bottom:var(--space-3);border-bottom:1px solid var(--border-light)}
.rail-card dl>div:last-child dd{border-bottom:0;padding-bottom:0}
.rail-card ul{list-style:none;margin:0;padding:0}
.rail-card li{margin:0;border-bottom:1px solid var(--border-light);font-size:.875rem}
.rail-card li:last-child{border-bottom:0}
.rail-card li a{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--text)}
.rail-card li a:hover{color:var(--accent);text-decoration:none}
.content-sidebar{display:flex;flex-direction:column;gap:var(--space-5)}
.related-list{list-style:none;margin:0;padding:0}
.related-list li{margin:0;border-bottom:1px solid var(--border-light);font-size:.875rem}
.related-list li:last-child{border-bottom:0}
.related-list a{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--text)}
.related-list a:hover{color:var(--accent);text-decoration:none}
.two-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-6)}

/* ================================================================ ruled data table */
.table-wrap{overflow-x:auto;overscroll-behavior-x:contain;background:var(--bg);border:var(--rule);border-radius:var(--radius);box-shadow:var(--shadow);margin:0 0 var(--space-5)}
table{border-collapse:collapse;width:100%;font-size:.875rem;line-height:1.4}
caption{caption-side:top;text-align:left;padding:var(--space-3) var(--space-4);color:var(--text-light);font-size:var(--step--1);background:var(--surface);border-bottom:var(--rule)}
th,td{padding:var(--space-3) var(--space-4);text-align:left;vertical-align:top;border-bottom:1px solid var(--border-light)}
thead th{position:sticky;top:0;z-index:1;background:var(--primary);color:var(--bg);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap}
tbody tr:nth-child(even){background:var(--surface)}
tbody tr:hover{background:var(--surface-hover)}
tbody tr:last-child td{border-bottom:0}
td.num,th.num{text-align:right}
td.src a{display:inline-flex;align-items:center;min-height:44px;color:var(--accent)}
.tbl-note{font-size:var(--step--1);color:var(--text-light);max-width:var(--measure);margin:calc(-1 * var(--space-3)) 0 var(--space-5)}

/* ================================================================ evidence block (signature) */
.evidence{max-width:var(--measure);background:var(--evidence);border:var(--rule);border-left:3px solid var(--accent);border-radius:var(--radius);padding:var(--space-5);margin:0 0 var(--space-5)}
.evidence h2{font-family:var(--font-sans);font-size:var(--step--1);font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin:0 0 var(--space-3)}
.evidence p{margin:0 0 var(--space-3);font-size:.875rem}
.evidence p:last-child{margin-bottom:0}
.evidence .prov{font-size:var(--step--1);color:var(--text-light)}
.evidence a{color:var(--accent);word-break:break-word}

/* ================================================================ CTA (burnt amber money action) */
.cta{background:var(--surface);border:var(--rule);border-left:3px solid var(--cta);border-radius:var(--radius);padding:var(--space-5);margin:var(--space-5) 0}
.cta--primary{background:var(--primary);border-color:var(--primary);border-left-color:var(--cta);color:var(--footer-text)}
.cta--inline{border-left-color:var(--warn)}
.cta__label{font-size:var(--step--1);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-light);margin:0 0 var(--space-3)}
.cta--primary .cta__label{color:var(--footer-text)}
.cta__btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:48px;padding:var(--space-3) var(--space-6);background:var(--cta);color:var(--bg);border:0;border-radius:var(--radius);font-family:var(--font-sans);font-size:.9375rem;font-weight:700;cursor:pointer;transition:var(--transition);text-decoration:none}
.cta__btn:hover{background:var(--cta-hover);color:var(--bg);text-decoration:none}
.cta__btn:active{background:var(--cta-hover)}
.cta__btn:disabled{opacity:.55;cursor:not-allowed}
.cta__btn--accent{background:var(--accent)}
.cta__btn--accent:hover{background:var(--accent-strong)}
.cta--primary .cta__btn{background:var(--bg);color:var(--accent-strong)}
.cta--primary .cta__btn:hover{background:var(--accent-soft);color:var(--accent-deep)}
.cta__req{font-size:var(--step--1);font-weight:700;color:var(--text);margin:var(--space-3) 0 0}
.cta--primary .cta__req{color:var(--bg)}
.cta__note{font-size:var(--step--1);color:var(--text-light);margin:var(--space-3) 0 0}
.notlender{font-size:12px;color:var(--text-light);margin:var(--space-2) 0 0}
.cta--primary .notlender{color:var(--footer-muted)}
.cta-box{background:var(--primary);border-bottom:3px solid var(--accent);border-radius:var(--radius);padding:var(--space-7);margin:var(--space-7) 0;position:relative}
.cta-box h2{color:var(--bg);margin:0 0 var(--space-3)}
.cta-box p{max-width:52ch;color:var(--footer-text);margin:0 0 var(--space-5)}
.cta-box .cta__req{color:var(--bg);margin:var(--space-3) 0 0}
.cta-box .notlender{color:var(--footer-muted);margin:var(--space-2) 0 0}
.cta-card{background:var(--bg);border:var(--rule);border-radius:var(--radius);padding:var(--space-5);box-shadow:var(--shadow)}
.cta-card p{font-size:.875rem;color:var(--text-light);margin:0 0 var(--space-4)}
.cta--sticky{position:fixed;left:0;right:0;bottom:0;z-index:90;display:none;background:var(--bg);border-top:3px solid var(--cta);padding:var(--space-3) var(--gutter);box-shadow:0 -1px 0 var(--border);text-align:center}
.cta--sticky .cta__btn{width:100%;max-width:420px}
.cta--sticky .small{display:block;margin:var(--space-2) 0 0;font-size:12px}
.cta--sticky[data-dismissed="1"]{display:none}
.cta__dismiss{min-height:44px;padding:var(--space-2);background:transparent;border:0;color:var(--text-light);font-size:var(--step--1);text-decoration:underline;cursor:pointer}
.cta__dismiss:hover{color:var(--primary)}
.cta__dismiss:disabled{opacity:.5;cursor:not-allowed}

/* ================================================================ buttons */
.btn-primary,.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:48px;padding:var(--space-3) var(--space-6);border-radius:var(--radius);font-family:var(--font-sans);font-size:.9375rem;font-weight:700;cursor:pointer;transition:var(--transition);text-decoration:none}
.btn-primary{background:var(--accent);border:1px solid var(--accent);color:var(--bg)}
.btn-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong);color:var(--bg);text-decoration:none}
.btn-primary:active{background:var(--accent-deep);border-color:var(--accent-deep)}
.btn-primary:disabled{opacity:.55;cursor:not-allowed}
.btn-secondary{background:var(--bg);border:1px solid var(--border);color:var(--primary)}
.btn-secondary:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}
.btn-secondary:active{background:var(--surface)}
.btn-secondary:disabled{opacity:.55;cursor:not-allowed}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:var(--space-3) var(--space-5);background:var(--accent);border:1px solid var(--accent);border-radius:var(--radius);color:var(--bg);font-family:var(--font-sans);font-weight:700;cursor:pointer;transition:var(--transition)}
.btn:hover{background:var(--accent-strong);border-color:var(--accent-strong);color:var(--bg)}
.btn:active{background:var(--accent-deep)}
.btn:disabled{opacity:.55;cursor:not-allowed}

/* ================================================================ disclosure + notice */
.disclosure-strip{background:var(--surface);border:var(--rule);border-left:3px solid var(--warn);border-radius:var(--radius);padding:var(--space-3) var(--space-4);font-size:var(--step--1);color:var(--text-light);margin:0 0 var(--space-5)}

/* ================================================================ FAQ (no JS) */
.faq-item{border-bottom:var(--rule);padding:0}
.faq-item summary{display:flex;align-items:center;gap:var(--space-3);min-height:48px;padding:var(--space-3) 0;font-weight:700;color:var(--primary);cursor:pointer}
.faq-item summary:hover{color:var(--accent)}
.faq-item summary::marker{color:var(--accent)}
.faq-item[open] summary{color:var(--accent-strong)}
.faq-item .a{max-width:var(--measure);padding:0 0 var(--space-4);color:var(--text)}
details{border-bottom:var(--rule)}
summary{cursor:pointer;font-weight:700;color:var(--primary)}

/* ================================================================ calculator shell */
.tool{background:var(--bg);border:var(--rule);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-6);margin:0 0 var(--space-5)}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:var(--space-5);margin:0 0 var(--space-5)}
.tool label{margin:0 0 var(--space-1)}
.tool input,.tool select{width:100%;min-height:46px;padding:var(--space-3) var(--space-4);color:var(--text);background:var(--bg);border:var(--rule);border-radius:var(--radius-sm)}
.tool input:focus-visible,.tool select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.tool input:disabled,.tool select:disabled{background:var(--surface);color:var(--text-muted);cursor:not-allowed}
.tool input[aria-invalid="true"],.tool select[aria-invalid="true"]{border-color:var(--danger)}
.out{margin:var(--space-5) 0 0;padding:var(--space-5);background:var(--surface);border:var(--rule);border-left:3px solid var(--accent);border-radius:var(--radius)}
.out table{margin:var(--space-4) 0 0;font-size:.875rem}
.err{color:var(--danger);font-size:.875rem;font-weight:600;margin:var(--space-3) 0 0}

/* ================================================================ lists */
ul.plain{list-style:none;margin:0 0 var(--space-4);padding:0}
ul.plain li{position:relative;padding:var(--space-2) 0 var(--space-2) var(--space-5);border-bottom:1px solid var(--border-light)}
ul.plain li::before{content:"";position:absolute;left:var(--space-1);top:1.1em;width:6px;height:2px;background:var(--accent)}
ol.steps{margin:0 0 var(--space-5);padding-left:var(--space-6)}
ol.steps li{padding:var(--space-2) 0;border-bottom:1px solid var(--border-light)}
ol.steps li::marker{font-family:var(--font-num);font-weight:600;color:var(--accent)}

/* ================================================================ stat rows */
.stat-row{list-style:none;max-width:var(--measure);margin:0;padding:0}
.stat-row .stat{display:flex;justify-content:space-between;gap:var(--space-4);margin:0;padding:var(--space-3) 0;border-bottom:1px solid var(--border-light)}
.stat-row .stat:last-child{border-bottom:0}
.stat-row dt{color:var(--text-light);font-size:.875rem}
.stat-row dd{margin:0;font-family:var(--font-num);font-weight:600;font-variant-numeric:tabular-nums;color:var(--primary);text-align:right}
.stat-row .k{color:var(--text-light)}
.stat-row .v{font-family:var(--font-num);color:var(--primary);font-weight:600;text-align:right}

/* ================================================================ misc states */
.empty-state{max-width:var(--measure);background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius);padding:var(--space-6);color:var(--text-light)}
.empty-state p{margin:0 0 var(--space-3)}
.empty-state p:last-child{margin-bottom:0}
.pill{display:inline-flex;align-items:center;padding:3px var(--space-2);background:var(--surface);border:var(--rule);border-radius:var(--radius-sm);color:var(--text-light);font-family:var(--font-num);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}

/* ================================================================ ruled ink footer */
.site-footer{background:var(--footer-bg);border-top:3px solid var(--accent);color:var(--footer-text);padding:var(--space-8) 0 var(--space-6)}
.footer-grid{display:grid;grid-template-columns:1.6fr repeat(3,1fr);gap:var(--space-7);margin-bottom:var(--space-7)}
.footer-col{font-size:var(--step--1);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--bg);margin:0 0 var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--primary-light)}
.site-footer ul{list-style:none;margin:0;padding:0}
.site-footer li{margin:0;border-bottom:1px solid var(--primary-light);font-size:.875rem}
.site-footer li:last-child{border-bottom:0}
.site-footer a{display:inline-flex;align-items:center;min-height:44px;color:var(--footer-text)}
.site-footer a:hover{color:var(--bg);text-decoration:underline}
.site-footer .small{color:var(--footer-muted)}
.footer-note{border-top:1px solid var(--primary-light);padding-top:var(--space-5);font-size:var(--step--1);line-height:1.7;max-width:92ch;color:var(--footer-muted)}
.footer-note p{margin:0 0 var(--space-3)}
.footer-note a{color:var(--footer-text)}

/* ================================================================ responsive */
@media (min-width:960px){
  .page-grid{grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-7);align-items:start}
  .page-grid>.rail{position:sticky;top:84px}
  .content-grid{grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-7);align-items:start}
  .content-sidebar{position:sticky;top:84px;align-self:start}
}
@media (max-width:959px){
  .page-grid{display:flex;flex-direction:column}
  .page-grid>.rail{display:contents}
  .page-grid .rail-card:first-child{order:-1}
  .page-grid .cta{margin:0}
  .content-sidebar{position:static}
}
@media (max-width:1024px){
  .footer-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-6)}
}
@media (max-width:900px){
  .cta--sticky{display:block}
}
@media (max-width:768px){
  :root{--gutter:16px}
  h1{font-size:28px}
  .nav-toggle{display:inline-flex;margin-left:auto}
  .nav-menu{display:none;position:absolute;left:0;right:0;top:100%;z-index:110;flex-direction:column;align-items:stretch;gap:0;background:var(--primary);border-bottom:3px solid var(--accent);padding:var(--space-2)}
  .nav-menu[data-open="1"]{display:flex}
  .nav-menu a{min-height:48px;padding:0 var(--space-4);border-bottom:1px solid var(--primary-light);border-left:2px solid transparent}
  .nav-menu li:last-child a{border-bottom:0}
  .nav-menu a:hover{border-left-color:var(--accent)}
  .header-inner{position:relative}
  .home-hero,.niche-hero,.state-hero,.city-hero,.city-service-hero,.state-niche-hero,.category-hero{padding:var(--space-6) 0 var(--space-5)}
  .section{padding:var(--space-6) 0}
  .table-wrap table{min-width:600px}
  .search-box{flex-direction:column}
  .search-box .btn-primary{width:100%}
  .cta-box{padding:var(--space-6) var(--space-5)}
  .tool{padding:var(--space-5)}
  .footer-grid{gap:var(--space-5)}
}
@media (max-width:480px){
  .footer-grid{grid-template-columns:1fr}
  .category-grid,.niche-grid,.card-grid,.city-grid{grid-template-columns:1fr}
  .state-grid{grid-template-columns:repeat(2,1fr)}
  .hero-actions{flex-direction:column;align-items:stretch}
  .hero-actions .btn-secondary{width:100%}
  .stat-row .stat{flex-direction:column;gap:var(--space-1)}
  .stat-row dd{text-align:left}
  .cta-box{padding:var(--space-5) var(--space-4)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none !important;animation:none !important}
  html{scroll-behavior:auto}
}
@media print{
  .site-header,.nav-menu,.nav-toggle,.site-footer,.cta--sticky,.search-box,.rail,.content-sidebar{display:none}
  .page-grid,.content-grid{display:block}
}
