/* The Home Engine — design system
   Editorial, not affiliate-farm. The visual language has to earn trust before
   the content gets a chance to. */

:root {
  --ink:        #16191d;
  --ink-2:      #3d444d;
  --ink-3:      #666e78;
  --ink-4:      #8b939d;
  --rule:       #e2e5e9;
  --rule-2:     #eef0f3;
  --paper:      #ffffff;
  --paper-2:    #f7f8fa;
  --paper-3:    #eff2f5;

  --brand:      #0f5c4e;
  --brand-2:    #147a66;
  --brand-tint: #e8f2ef;
  --accent:     #b8560f;
  --accent-tint:#fdf1e7;

  --good:       #1a7f5a;
  --warn:       #a86a12;
  --warn-tint:  #fdf6e8;
  --bad:        #a8322a;
  --bad-tint:   #fbeeed;

  /* Fixed dark-ink surface for the two "authority" bands (editorial
     argument, closing CTA). Deliberately independent of --brand, which
     flips to a light foreground color in dark mode (see design-system.md)
     and would be wrong as a large background there — same reasoning as the
     recall banner staying red regardless of site theme. Not redefined
     under prefers-color-scheme or [data-theme]; it's meant to read the
     same dark band in both site modes. */
  --ink-band:    #101b28;
  --ink-band-2:  #1c3247;
  --band-text:   #eef2f5;
  --band-text-2: rgba(238,242,245,.74);

  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;

  --w: 1180px;
  --w-text: 43rem;
  --r: 8px;
  --shadow: 0 1px 2px rgba(16,25,35,.05), 0 4px 16px rgba(16,25,35,.05);
  --shadow-lg: 0 2px 6px rgba(16,25,35,.06), 0 16px 44px rgba(16,25,35,.10);
}

@media (prefers-color-scheme: dark) {
  :root {
    --ink: #eef1f4; --ink-2: #c3cad2; --ink-3: #9aa3ad; --ink-4: #737c86;
    --rule: #2a3037; --rule-2: #21262c;
    --paper: #14171b; --paper-2: #1a1e23; --paper-3: #21262c;
    --brand: #4fd1b0; --brand-2: #6ee0c2; --brand-tint: #12302a;
    --accent: #f0a86a; --accent-tint: #2e2114;
    --good: #4fd1b0; --warn: #e8b563; --warn-tint: #2c2415; --bad: #f08a80; --bad-tint: #2e1a18;
    --shadow: 0 1px 2px rgba(0,0,0,.3), 0 4px 16px rgba(0,0,0,.25);
    --shadow-lg: 0 2px 6px rgba(0,0,0,.35), 0 16px 44px rgba(0,0,0,.4);
  }
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0; background: var(--paper); color: var(--ink);
  font-family: var(--sans); font-size: 17px; line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; }
a { color: var(--brand); text-decoration-thickness: 1px; text-underline-offset: 2px; }
a:hover { color: var(--brand-2); }

.wrap { max-width: var(--w); margin: 0 auto; padding: 0 24px; }
.narrow { max-width: var(--w-text); }

/* ---------- Header ---------- */
.site-head {
  border-bottom: 1px solid var(--rule); background: var(--paper);
  position: sticky; top: 0; z-index: 50;
  backdrop-filter: saturate(180%) blur(12px);
}
.site-head .wrap {
  display: flex; align-items: center; gap: 28px; min-height: 52px;
  padding-top: 10px; padding-bottom: 10px; flex-wrap: nowrap;
}
.logo {
  font-family: var(--serif); font-size: 21px; font-weight: 600; letter-spacing: -.02em;
  color: var(--ink); text-decoration: none; white-space: nowrap;
}
.logo span { color: var(--brand); }
.nav { display: flex; gap: 22px; margin-left: auto; align-items: center; flex-wrap: wrap; }
.nav a {
  color: var(--ink-2); text-decoration: none; font-size: 14.5px; font-weight: 500;
  white-space: nowrap;
}
.nav a:hover { color: var(--brand); }
.nav a.cta {
  background: var(--brand); color: #fff; padding: 7px 15px; border-radius: 100px;
  font-weight: 600;
}
@media (prefers-color-scheme: dark) { .nav a.cta { color: #0d1a17; } }
.nav a.cta:hover { background: var(--brand-2); }
.cta-short { display: none; }

/* Mobile header — collapse everything except the wordmark and CTA into one
   menu button below 760px, per the homepage redesign brief. */
.mobile-menu { display: none; }
@media (max-width: 760px) {
  .nav { gap: 10px; }
  .nav > a:not(.cta), .nav > #nav-equipment { display: none; }
  .cta-full { display: none; }
  .cta-short { display: inline; }
  .mobile-menu { display: block; }
  .mobile-menu > summary {
    display: flex; align-items: center; justify-content: center;
    width: 34px; height: 34px; border-radius: 8px; cursor: pointer;
    color: var(--ink-2); list-style: none;
  }
  .mobile-menu > summary::-webkit-details-marker { display: none; }
  .mobile-menu > summary::marker { content: ""; }
  .mobile-menu[open] > summary { background: var(--paper-2); color: var(--brand); }
  .mobile-menu .nav-overlay { right: 0; left: auto; width: 280px; border-radius: 0 0 0 12px; }
}
.mobile-links { display: flex; flex-direction: column; padding: 8px 6px; }
.mobile-links a {
  padding: 10px 12px; border-radius: 8px; color: var(--ink); text-decoration: none;
  font-size: 14.5px; font-weight: 500;
}
.mobile-links a:hover { background: var(--paper-2); }
.mobile-links-h {
  font-size: 11px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase;
  color: var(--ink-4); padding: 14px 12px 4px;
}

/* ---------- Equipment overlay menu ---------- */
.nav-menu { position: static; }
.nav-menu > summary {
  display: flex; align-items: center; gap: 6px; cursor: pointer;
  color: var(--ink-2); font-size: 14.5px; font-weight: 500; white-space: nowrap;
  list-style: none;
}
.nav-menu > summary::-webkit-details-marker { display: none; }
.nav-menu > summary::marker { content: ""; }
.nav-menu > summary:hover { color: var(--brand); }
.nav-menu[open] > summary { color: var(--brand); }
.nav-caret { color: var(--ink-4); transition: transform .15s ease; flex: none; }
.nav-menu[open] .nav-caret { transform: rotate(180deg); color: var(--brand); }

.nav-overlay {
  position: absolute; left: 0; right: 0; top: 100%;
  background: var(--paper); border-bottom: 1px solid var(--rule);
  box-shadow: var(--shadow-lg); z-index: 60;
  animation: nav-overlay-in .16s ease;
}
@keyframes nav-overlay-in {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.nav-overlay-inner { max-width: var(--w); margin: 0 auto; padding: 26px 24px 20px; }
.nav-overlay-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px 24px;
}
.nav-overlay a.nav-cat {
  display: flex; flex-direction: column; gap: 3px; padding: 11px 12px;
  border-radius: 8px; text-decoration: none; color: inherit;
  min-width: 0; white-space: normal;
}
.nav-cat:hover { background: var(--paper-2); }
.nav-cat-name { font-weight: 650; color: var(--ink); font-size: 15px; }
.nav-cat-desc {
  font-size: 12.5px; color: var(--ink-3); line-height: 1.42;
  overflow-wrap: break-word;
}
.nav-cat-count {
  font-size: 11px; color: var(--ink-4); text-transform: uppercase;
  letter-spacing: .05em; margin-top: 2px;
}
.nav-overlay-foot {
  margin-top: 16px; padding-top: 15px; border-top: 1px solid var(--rule-2);
  display: flex; gap: 26px; flex-wrap: wrap;
}
.nav-overlay-foot a { font-size: 14px; font-weight: 600; text-decoration: none; }
.nav-overlay-foot a:hover { color: var(--brand-2); }

@media (max-width: 760px) {
  .nav-overlay-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
  .nav-overlay-grid { grid-template-columns: 1fr; }
  .nav-overlay-inner { padding: 20px 18px 18px; }
}

/* ---------- Typography ---------- */
h1, h2, h3, h4 { font-family: var(--serif); font-weight: 600; letter-spacing: -.018em; line-height: 1.2; }
h1 { font-size: clamp(2.1rem, 4.4vw, 3.15rem); margin: 0 0 .5em; }
h2 { font-size: clamp(1.5rem, 2.6vw, 2rem); margin: 2.2em 0 .6em; }
h3 { font-size: 1.24rem; margin: 1.9em 0 .5em; }
h4 { font-size: 1.05rem; margin: 1.6em 0 .4em; font-family: var(--sans); font-weight: 650; }
.deck { font-size: 1.2rem; color: var(--ink-3); line-height: 1.55; margin: 0 0 1.6em; max-width: 44rem; }
.eyebrow {
  font-size: 12px; font-weight: 700; letter-spacing: .11em; text-transform: uppercase;
  color: var(--brand); margin: 0 0 12px;
}
.lede { font-size: 1.1rem; }
.muted { color: var(--ink-3); }
.small { font-size: 14px; }
.xs { font-size: 12.5px; }

/* ---------- Layout blocks ---------- */
section { padding: 0; }
.band { padding: 68px 0; border-top: 1px solid var(--rule); }
.band.tint { background: var(--paper-2); }
.band-head { max-width: 42rem; margin-bottom: 34px; }
.band-head h2 { margin-top: 0; }

.grid { display: grid; gap: 20px; }
.g2 { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.g3 { grid-template-columns: repeat(auto-fit, minmax(268px, 1fr)); }
.g4 { grid-template-columns: repeat(auto-fit, minmax(215px, 1fr)); }

.card {
  background: var(--paper); border: 1px solid var(--rule); border-radius: var(--r);
  padding: 22px; transition: border-color .15s, box-shadow .15s, transform .15s;
}
a.card { text-decoration: none; color: inherit; display: block; }
a.card:hover { border-color: var(--brand); box-shadow: var(--shadow); transform: translateY(-1px); }
.card h3 { margin: 0 0 6px; font-size: 1.12rem; }
.card p { margin: 0; color: var(--ink-3); font-size: 14.5px; line-height: 1.55; }

/* ---------- Hero ---------- */
/* Two columns: copy + stat row on the left, the quick-personalize tool as a
   standalone card on the right. Previously the copy column alone (capped at
   a readable measure) sat inside a full-width section, which left a large
   empty rectangle beside the headline with nothing using it — the tool card
   now occupies exactly that space instead of floating unclaimed. Collapses
   to one column on narrow viewports, tool card below the copy. */
.hero { padding: 66px 0 58px; overflow: hidden; background: var(--ink-band); color: var(--band-text); }
.hero-grid { display: grid; grid-template-columns: minmax(0,.88fr) minmax(500px,1.12fr); gap: 32px 64px; align-items: center; }
@media (max-width: 880px) { .hero-grid { grid-template-columns: 1fr; } }
.hero-copy { min-width: 0; }
.hero-copy .eyebrow { font-size: 14px; letter-spacing: .09em; margin-bottom: 20px; color: #e59a5f; }
.hero h1 { max-width: 13ch; font-size: clamp(2.7rem, 5vw, 4.35rem); line-height: 1.04; letter-spacing: -.035em; }
.hero .deck { font-size: 1.16rem; max-width: 35rem; color: var(--band-text-2); }
.hero-ctas { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 30px; }
.hero-ctas .btn { padding: 12px 22px; font-size: 15.5px; }
.hero-trust { margin-top: 18px; font-size: 13px; color: rgba(238,242,245,.58); max-width: 40rem; }
.hero .btn { background: #f1e8da; color: #142536; border-color: #f1e8da; }
.hero .btn:hover { background: #fff8ed; color: #142536; border-color: #fff8ed; }
.hero .btn.ghost { background: transparent; color: var(--band-text); border-color: rgba(238,242,245,.3); }
.hero .btn.ghost:hover { border-color: rgba(238,242,245,.75); background: rgba(255,255,255,.06); }
.hero-stats { display: flex; gap: 34px; flex-wrap: wrap; margin-top: 30px; }
.hero-stat .n { font-family: var(--serif); font-size: 1.85rem; font-weight: 600; color: var(--brand); line-height: 1; }
.hero-stat .l { font-size: 13px; color: var(--ink-3); margin-top: 6px; }

/* ---------- House system cutaway ---------- */
.house-map { min-width: 0; }
.system-cutaway { margin: 0; padding: 20px 20px 16px; border: 1px solid var(--rule); background: var(--paper-2); }
.system-cutaway figcaption { font-size: 11px; font-weight: 750; letter-spacing: .11em; text-transform: uppercase; color: var(--ink-4); }
.cutaway-stage { position: relative; height: 365px; margin-top: 10px; }
.cutaway-house { position: absolute; left: 19%; right: 18%; top: 68px; height: 242px; color: var(--brand); }
.cutaway-roof { position: absolute; left: 6%; right: 6%; top: 0; height: 92px; overflow: hidden; }
.cutaway-roof::before { content: ""; position: absolute; left: 10%; top: 25px; width: 80%; height: 130px; transform: rotate(30deg); border: 2px solid currentColor; background: var(--brand-tint); }
.cutaway-roof i { position: absolute; z-index: 1; top: 33px; width: 34px; height: 47px; transform: skewY(-30deg); background: var(--brand); border: 1px solid var(--paper-2); opacity: .88; }
.cutaway-roof i:nth-child(1) { left: 31%; }.cutaway-roof i:nth-child(2) { left: 44%; }.cutaway-roof i:nth-child(3) { left: 57%; }
.cutaway-upper { position: absolute; top: 77px; left: 14%; right: 14%; height: 86px; display: grid; grid-template-columns: 1.6fr 1fr; border: 2px solid currentColor; background: var(--paper); }
.room { position: relative; border-right: 1px solid color-mix(in srgb, var(--brand) 35%, transparent); }
.room:last-child { border: 0; }.window { position: absolute; width: 42px; height: 30px; left: 20%; top: 20px; border: 1px solid currentColor; box-shadow: inset 0 -14px var(--brand-tint); }
.register { position: absolute; width: 30px; height: 5px; right: 12%; bottom: 10px; border-block: 1px solid currentColor; }
.battery { position: absolute; width: 23px; height: 42px; left: 22%; top: 21px; border: 1.5px solid currentColor; border-radius: 3px; background: var(--brand-tint); }
.battery::after { content: ""; position: absolute; width: 7px; height: 13px; left: 7px; top: 13px; border-block: 2px solid var(--accent); transform: skew(-22deg); }
.panel { position: absolute; width: 25px; height: 36px; right: 18%; top: 24px; border: 1px solid currentColor; }
.cutaway-lower { position: absolute; left: 9%; right: 9%; top: 163px; height: 68px; border: 2px solid currentColor; border-top: 1px solid currentColor; background: var(--brand-tint); }
.heat-pump { position: absolute; width: 54px; height: 37px; left: 8%; bottom: 10px; border: 1.5px solid currentColor; background: var(--paper); }
.heat-pump i { position: absolute; width: 22px; height: 22px; left: 15px; top: 6px; border: 1px solid currentColor; border-radius: 50%; }
.heat-pump i::before,.heat-pump i::after { content: ""; position: absolute; left: 10px; top: 2px; width: 1px; height: 18px; background: currentColor; }.heat-pump i::after { transform: rotate(90deg); }
.water-heater,.pressure-tank { position: absolute; bottom: 9px; width: 27px; height: 47px; border: 1.5px solid currentColor; border-radius: 14px 14px 5px 5px; background: var(--paper); }
.water-heater { left: 52%; }.pressure-tank { right: 11%; width: 23px; background: var(--paper-2); }
.cutaway-ground { position: absolute; left: 0; right: 0; top: 231px; border-top: 1px solid var(--ink-4); }
.well-line { position: absolute; right: 16%; top: 232px; height: 74px; border-left: 2px solid currentColor; }.well-line span { position: absolute; left: -6px; bottom: 0; width: 10px; height: 22px; border: 1px solid currentColor; border-radius: 5px; background: var(--brand-tint); }
.cutaway-note { position: absolute; z-index: 3; width: 142px; color: var(--ink); text-decoration: none; padding-left: 26px; transition: color .18s; }
.cutaway-note::after { content: ""; position: absolute; top: 10px; width: 58px; border-top: 1px solid var(--accent); }
.cutaway-note::before { content: ""; position: absolute; top: 7px; width: 7px; height: 7px; border: 1px solid var(--accent); border-radius: 50%; background: var(--paper-2); }
.cutaway-note b,.cutaway-note small { display: block; }.cutaway-note b { font-size: 13px; line-height: 1.2; }.cutaway-note small { margin-top: 3px; font-size: 11px; line-height: 1.3; color: var(--ink-4); }
.note-index { position: absolute; left: 0; top: 0; font-family: var(--mono); font-size: 10px; color: var(--accent); }
.note-solar { left: 0; top: 16px; }.note-solar::after { left: 100%; }.note-solar::before { left: calc(100% + 56px); }
.note-climate { left: 0; top: 166px; }.note-climate::after { left: 100%; }.note-climate::before { left: calc(100% + 56px); }
.note-water { right: 0; top: 150px; }.note-water::after { right: 100%; }.note-water::before { right: calc(100% + 56px); }
.note-well { right: 0; top: 265px; }.note-well::after { right: 100%; }.note-well::before { right: calc(100% + 56px); }
.cutaway-note:hover,.cutaway-note:focus-visible { color: var(--accent); }.cutaway-note:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.cutaway-key { margin: 0; padding-top: 12px; border-top: 1px solid var(--rule); font-family: var(--serif); font-size: 13px; font-style: italic; color: var(--ink-3); }
.house-map-fallback { display: none; }
.house-map-fallback-h {
  font-family: var(--sans); font-size: 12px; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; color: var(--ink-4); margin: 0 0 14px;
}
.hmf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 20px; }
.hmf-grid a { display: block; text-decoration: none; padding: 12px 14px; border: 1px solid var(--rule);
  border-radius: 10px; color: inherit; }
.hmf-grid a:hover { border-color: var(--brand); background: var(--paper-2); }
.hmf-grid b { display: block; font-size: 15px; color: var(--ink); margin-bottom: 3px; }
.hmf-grid span { display: block; font-size: 13px; color: var(--ink-3); line-height: 1.4; }
@media (max-width: 640px) {
  .system-cutaway { display: none; }
  .house-map-fallback { display: block; }
}
@media (max-width: 420px) { .hmf-grid { grid-template-columns: 1fr; } }

/* Clean vector system map. The house carries the visual weight; equipment
   details and labels stay quiet and use one consistent stroke language. */
.system-map { margin: -34px -50px -28px -18px; padding: 0; }
.system-map svg { display: block; width: 100%; height: auto; overflow: visible; }
.blueprint-field { fill: #143249; stroke: rgba(220,239,247,.25); stroke-width: 1; }
.blueprint-grid { fill: url(#blueprint-grid); opacity: .28; }
.grid-minor { fill: none; stroke: #9ac1d2; stroke-width: .45; }
.map-field { fill: none; stroke: rgba(220,239,247,.4); stroke-width: .8; }
.map-shadow { fill: #07111b; opacity: .65; }
.shell-back,.shell-side,.shell-front { fill: none; }
.shell-roof { fill: none; }
.shell-hatch { fill: none; stroke: none!important; }
.hatch-line { stroke: #d9edf4; stroke-width: 1; }
.house-shell path { stroke: #e7f1f3; stroke-width: 1.5; stroke-linejoin: miter; }
.house-rooms path { fill: rgba(10,28,42,.58); stroke: #d9edf4; stroke-width: .9; }
.section-cut { fill: url(#field-hatch); stroke: #f2ede2; stroke-width: 1.2; }
.solar-array { fill: rgba(13,39,57,.82); stroke: #e7f1f3; stroke-width: 1; stroke-linecap: square; }
.system-paths { fill: none; stroke-width: 1.8; stroke-linecap: square; stroke-linejoin: miter; }
.path-energy { stroke: #e59a5f; stroke-dasharray: 8 3 2 3; }.path-heat { stroke: #e59a5f; stroke-dasharray: 5 3; }.path-air { stroke: #9ed7ec; stroke-dasharray: 10 4; }.path-water { stroke: #70b2ce; }
.system-forms { fill: none; stroke: #e7f1f3; stroke-width: 1.15; stroke-linecap: square; }
.mini-split-form,.condenser-form { fill: rgba(13,39,57,.72); }.mini-split-form path,.condenser-form path { fill: none; }
.battery-form rect,.tank-form path:first-child { fill: rgba(184,86,15,.5); }.battery-form path,.tank-form path:not(:first-child) { fill: none; }
.well-form path:first-child { fill: rgba(112,178,206,.35); }.well-form path:not(:first-child) { fill: none; }
.drafting-notes { fill: none; stroke: #a9cfde; stroke-width: .65; }
.drafting-notes text { fill: #b8d7e3; stroke: none; font: 500 8px var(--mono); letter-spacing: .08em; }
.drafting-notes .drawing-title { fill: #e7f1f3; font-weight: 650; font-size: 8.5px; }.drafting-notes .drawing-scale { text-anchor: end; }
.dimension-line,.note-leader { stroke-dasharray: 2 2; }.datum-line { stroke-dasharray: 12 4 2 4; }
.system-map figcaption { display: flex; justify-content: center; gap: 28px; margin-top: -12px; font-size: 12px; font-weight: 600; color: rgba(238,242,245,.62); }
.system-map figcaption a { display: inline-flex; align-items: center; gap: 8px; color: inherit; text-decoration: none; }
.system-map figcaption a:hover { color: var(--band-text); }.system-map figcaption i { width: 7px; height: 7px; border-radius: 50%; }
.legend-energy { background: #e59a5f; }.legend-air { background: #8fcbe8; }.legend-water { background: #70a7bf; }
@media (max-width: 1040px) { .hero-grid { grid-template-columns: .95fr 1.05fr; gap: 34px; }.system-map { margin-right: -24px; } }
@media (max-width: 880px) { .hero { padding-top: 50px; }.hero-grid { grid-template-columns: 1fr; }.hero-copy { max-width: 650px; }.system-map { max-width: 680px; margin: 4px auto -18px; } }
@media (max-width: 640px) { .hero { padding: 38px 0 40px; }.hero h1 { font-size: clamp(2.55rem, 12vw, 3.5rem); }.system-map { width: 112%; margin-top: -14px; margin-left: -6%; }.system-map figcaption { gap: 16px; font-size: 11px; }.house-map-fallback { display: none; } }

/* ---------- Journey router: recognize the visitor's moment before asking
   for any data. Four ways in; the first two are buttons (they reveal the
   "which part of the house?" step in place) rather than links, since they
   don't navigate anywhere on their own. */
.router-section .band-head { max-width: 50rem; }
.journey-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 8px; }
@media (max-width: 980px) { .journey-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 620px) { .journey-grid { grid-template-columns: 1fr; } }

.journey-card {
  display: block; width: 100%; text-align: left; text-decoration: none; color: inherit;
  font: inherit; background: var(--paper); border: 1px solid var(--rule); border-radius: 14px;
  padding: 24px 24px 22px; cursor: pointer;
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.journey-card:hover { border-color: var(--brand); box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.journey-card .eyebrow { margin-bottom: 10px; }
.journey-card .journey-body { margin: 0 0 18px; color: var(--ink-3); font-size: 15.5px; line-height: 1.55; }
.journey-card .journey-cta { display: inline-flex; align-items: center; font-weight: 650; font-size: 15px; color: var(--brand); }
.journey-card:hover .journey-cta { text-decoration: underline; }

.journey-card.primary { background: var(--brand-tint); border-color: transparent; }
.journey-card.primary:hover { border-color: var(--brand); }
.journey-card.primary.selected { box-shadow: 0 0 0 2px var(--brand) inset; }

.house-part-step {
  margin-top: 26px; padding: 22px 24px; background: var(--paper);
  border: 1px solid var(--rule); border-radius: 14px;
}
.house-part-h { margin: 0 0 12px; font-weight: 650; font-size: 16px; }
.chip-select { display: flex; flex-wrap: wrap; gap: 10px; }
.chip-opt {
  font: inherit; font-size: 15px; font-weight: 550; color: var(--ink-2); cursor: pointer;
  background: var(--paper); border: 1px solid var(--rule); border-radius: 100px;
  padding: 9px 16px;
}
.chip-opt:hover { border-color: var(--brand); }
.chip-opt.active { border-color: var(--brand); background: var(--brand-tint); color: var(--brand); font-weight: 650; }

.router-shortcuts { margin: 22px 0 0; font-size: 14.5px; color: var(--ink-3); }

#router, #recommender, #owner-reports, #prices, #directory { scroll-margin-top: 96px; }

/* ---------- Editorial argument band ---------- */
.editorial-band { background: var(--ink-band); padding: 72px 0; }
.editorial-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 30px 60px; align-items: start; }
@media (max-width: 820px) { .editorial-grid { grid-template-columns: 1fr; } }
.editorial-quote {
  margin: 0; font-family: var(--serif); font-weight: 600; font-size: clamp(1.7rem, 3.4vw, 2.5rem);
  line-height: 1.2; letter-spacing: -.01em; color: var(--band-text);
}
.editorial-body p { margin: 0; font-size: 16px; line-height: 1.65; color: var(--band-text-2); }
.editorial-points {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 52px;
  padding-top: 34px; border-top: 1px solid rgba(255,255,255,.14);
}
@media (max-width: 700px) { .editorial-points { grid-template-columns: 1fr; } }
.editorial-point h4 { color: var(--band-text); margin: 0 0 8px; font-size: 15.5px; }
.editorial-point p { margin: 0; font-size: 14.5px; line-height: 1.6; color: var(--band-text-2); }
.editorial-cta { margin: 34px 0 0; }
.editorial-cta a {
  color: var(--band-text); font-weight: 650; font-size: 14.5px; text-decoration: none;
  border-bottom: 1px solid rgba(255,255,255,.35); padding-bottom: 2px;
}
.editorial-cta a:hover { border-color: var(--band-text); }

/* ---------- System directory: three house-level groups, not nine equal
   tiles — a large horizontal card per group with one line-art icon, not a
   grid of small database tiles. */
.gi-line { fill: none; stroke: var(--brand); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.group-list { display: flex; flex-direction: column; gap: 16px; margin-top: 8px; }
.group-card {
  display: grid; grid-template-columns: auto 1fr; gap: 24px; align-items: start;
  padding: 30px 32px; border: 1px solid var(--rule); border-radius: 14px; background: var(--paper);
  scroll-margin-top: 96px;
}
.group-icon {
  width: 58px; height: 58px; border-radius: 12px; background: var(--brand-tint);
  display: flex; align-items: center; justify-content: center; flex: none;
}
.group-content h3 { margin: 0 0 6px; font-size: 1.32rem; }
.group-content > p { margin: 0 0 18px; color: var(--ink-3); font-size: 15.5px; max-width: 58ch; }
.group-links { display: flex; flex-wrap: wrap; gap: 8px; }
.group-links a {
  display: inline-flex; align-items: center; gap: 8px; text-decoration: none; color: var(--ink);
  font-size: 14.5px; font-weight: 550; background: var(--paper-2); border: 1px solid var(--rule);
  border-radius: 100px; padding: 7px 8px 7px 14px;
}
.group-links a:hover { border-color: var(--brand); color: var(--brand); }
.group-link-count {
  font-family: var(--mono); font-size: 11px; color: var(--ink-4); background: var(--paper);
  border-radius: 100px; padding: 3px 8px;
}
@media (max-width: 620px) {
  .group-card { grid-template-columns: 1fr; padding: 24px; }
}

/* ---------- One useful example: a real product, shown, not another
   feature explanation. Pale blueprint-blue background reuses --brand-tint
   rather than a new token — it's already exactly that color. */
.example-section { background: var(--brand-tint); }
.example-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 40px 56px; align-items: center; }
@media (max-width: 880px) { .example-grid { grid-template-columns: 1fr; } }
.example-copy h2 { margin: .3em 0 .5em; max-width: 18ch; }
.example-copy > p { color: var(--ink-2); font-size: 15.5px; line-height: 1.65; max-width: 46ch; margin: 0; }
.example-card {
  background: var(--paper); border: 1px solid var(--rule); border-radius: 16px;
  padding: 30px 32px; box-shadow: var(--shadow-lg);
}
.ex-label {
  font-family: var(--mono); font-size: 11px; font-weight: 700; letter-spacing: .1em;
  text-transform: uppercase; color: var(--accent); margin: 0 0 12px;
}
.example-card h3 { margin: 0 0 16px; font-size: 1.25rem; line-height: 1.3; }
.ex-bullets { margin: 0 0 20px; padding: 0; list-style: none; display: grid; gap: 10px; }
.ex-bullets li { font-size: 15px; line-height: 1.5; color: var(--ink-2); padding-left: 18px; position: relative; }
.ex-bullets li::before { content: "\2014"; position: absolute; left: 0; color: var(--accent); }
.ex-footer {
  font-size: 13px; color: var(--ink-4); border-top: 1px solid var(--rule-2);
  padding-top: 16px; margin: 0 0 16px;
}
.ex-cta { font-weight: 650; font-size: 14.5px; text-decoration: none; color: var(--brand); }
.ex-cta:hover { text-decoration: underline; }

/* ---------- Alert / notice ---------- */
.notice {
  border-left: 3px solid var(--accent); background: var(--accent-tint);
  padding: 18px 22px; border-radius: 0 var(--r) var(--r) 0; margin: 26px 0;
}
.notice.warn { border-color: var(--warn); background: var(--warn-tint); }
.notice.info { border-color: var(--brand); background: var(--brand-tint); }
.notice h4 { margin: 0 0 6px; font-size: 15px; }
.notice p { margin: 0; font-size: 14.5px; line-height: 1.6; color: var(--ink-2); }
.notice p + p { margin-top: 8px; }

/* ---------- Timely notice: a dated, rust-accented strip, not an essay.
   Used for the incentives update — one claim, one link, done. */
.timely-notice {
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  border: 1px solid var(--accent); border-left-width: 4px; border-radius: var(--r);
  background: var(--accent-tint); padding: 18px 26px;
}
.tn-updated {
  display: block; font-family: var(--mono); font-size: 11px; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase; color: var(--accent); margin-bottom: 6px;
}
.tn-text p { margin: 0; font-size: 15px; line-height: 1.55; color: var(--ink-2); max-width: 62ch; }
.tn-cta {
  flex: none; font-weight: 650; font-size: 14.5px; color: var(--brand); text-decoration: none;
  white-space: nowrap;
}
.tn-cta:hover { text-decoration: underline; }
@media (max-width: 700px) {
  .timely-notice { flex-direction: column; align-items: flex-start; gap: 14px; }
}

/* ---------- Buying guides: one featured read, the rest a scan list. ---------- */
.guides-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 28px 40px; margin-top: 8px; align-items: start; }
@media (max-width: 820px) { .guides-layout { grid-template-columns: 1fr; } }
.guide-featured {
  display: block; text-decoration: none; color: inherit; background: var(--paper);
  border: 1px solid var(--rule); border-radius: 14px; padding: 30px 32px;
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.guide-featured:hover { border-color: var(--brand); box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.guide-featured .eyebrow { margin-bottom: 12px; }
.guide-featured h3 { margin: 0 0 12px; font-size: 1.4rem; line-height: 1.25; }
.guide-featured > p { margin: 0 0 18px; color: var(--ink-2); font-size: 15.5px; line-height: 1.6; }
.guide-featured-cta { font-weight: 650; font-size: 14.5px; color: var(--brand); }
.guide-featured:hover .guide-featured-cta { text-decoration: underline; }
.guide-list { display: flex; flex-direction: column; gap: 2px; }
.guide-row {
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  text-decoration: none; color: inherit; padding: 16px 4px; border-bottom: 1px solid var(--rule-2);
}
.guide-row:first-child { padding-top: 2px; }
.guide-row h4 { margin: 0 0 4px; font-size: 15.5px; }
.guide-row p { margin: 0; font-size: 13.5px; color: var(--ink-3); line-height: 1.5; }
.guide-row:hover h4 { color: var(--brand); }
.guide-row-min {
  flex: none; font-family: var(--mono); font-size: 11.5px; color: var(--ink-4);
  border: 1px solid var(--rule); border-radius: 100px; padding: 4px 10px;
}

/* ---------- Trust ledger: the claim plus the numbers that back it,
   reusing the hero's stat styling so the two feel like one vocabulary. ---------- */
.trust-ledger { display: grid; grid-template-columns: 1.3fr 1fr; gap: 40px 56px; align-items: start; }
@media (max-width: 820px) { .trust-ledger { grid-template-columns: 1fr; } }
.trust-copy h2 { margin: 0 0 .5em; }
.trust-copy p { margin: 0 0 1em; }
.trust-links { margin-bottom: 0 !important; }
.trust-stats {
  display: grid; grid-template-columns: 1fr; gap: 24px; padding: 28px 30px;
  background: var(--paper-2); border: 1px solid var(--rule); border-radius: 14px;
}

/* ---------- Closing CTA: dark band, same fixed tokens as the editorial
   band, so the two dark sections read as one visual family. ---------- */
.closing-cta { background: var(--ink-band); padding: 64px 0; text-align: center; }
.closing-cta h2 { color: var(--band-text); margin: 0 0 .45em; }
.closing-cta p {
  color: var(--band-text-2); font-size: 16px; line-height: 1.6; max-width: 46ch;
  margin: 0 auto; }
.closing-cta-btns { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; margin-top: 30px; }
.btn.light { background: var(--band-text); color: var(--ink-band); }
.btn.light:hover { background: #fff; color: var(--ink-band); }
.btn.ghost-dark {
  background: transparent; color: var(--band-text); border: 1px solid rgba(255,255,255,.35);
}
.btn.ghost-dark:hover { border-color: var(--band-text); background: rgba(255,255,255,.08); }

/* ---------- Recommender ---------- */
/* The full 9-question form is the deep version of the hero quick-personalize
   card above, not a second tool that happens to sit below it — so it stays
   collapsed (heading + explanation only) until something asks for it: the
   "Show all 9 questions" button here, the homepage fork's alt tile, or
   submitting the hero card (which expands this and shows results in it). */
.tool {
  background: var(--paper); border: 1px solid var(--rule); border-radius: 14px;
  box-shadow: var(--shadow-lg); overflow: hidden;
}
.tool-head {
  padding: 24px 28px; border-bottom: 1px solid var(--rule); background: var(--paper-2);
  display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap;
}
.tool-head-text { flex: 1 1 380px; }
.tool-head h2 { margin: 0 0 4px; font-size: 1.35rem; }
.tool-head p { margin: 0; font-size: 14.5px; color: var(--ink-3); }
.tool-expand-btn { flex-shrink: 0; white-space: nowrap; }
.tool.collapsed .tool-body { display: none; }
.tool-body { padding: 26px 28px; }
.fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(215px, 1fr)); gap: 18px; }
.field label {
  display: block; font-size: 12.5px; font-weight: 650; letter-spacing: .04em;
  text-transform: uppercase; color: var(--ink-3); margin-bottom: 7px;
}
.field select, .field input[type=number] {
  width: 100%; padding: 10px 12px; font-size: 15px; font-family: inherit;
  border: 1px solid var(--rule); border-radius: 6px; background: var(--paper); color: var(--ink);
}
.field select:focus, .field input:focus { outline: 2px solid var(--brand); outline-offset: -1px; border-color: var(--brand); }
.checks { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
.checks label {
  display: inline-flex; align-items: center; gap: 7px; padding: 8px 14px;
  border: 1px solid var(--rule); border-radius: 100px; font-size: 14px; cursor: pointer;
  text-transform: none; letter-spacing: 0; font-weight: 500; color: var(--ink-2); margin: 0;
}
.checks label:has(input:checked) { border-color: var(--brand); background: var(--brand-tint); color: var(--brand); font-weight: 600; }
.checks input { accent-color: var(--brand); }

/* ---------- Per-project fieldsets (W1) ---------- */
.proj-fields {
  margin: 22px 0 0; padding: 18px 20px 20px; border: 1px solid var(--rule); border-radius: var(--r);
  background: var(--paper-2);
}
.proj-fields legend {
  font-size: 12.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  color: var(--brand); padding: 0 6px;
}
.proj-fields .fields { margin-top: 6px; }
.btn {
  display: inline-block; background: var(--brand); color: #fff; border: 0; cursor: pointer;
  padding: 12px 26px; border-radius: 100px; font-size: 15.5px; font-weight: 650;
  font-family: inherit; text-decoration: none; transition: background .15s;
}
.btn:hover { background: var(--brand-2); color: #fff; }
.btn.ghost { background: transparent; color: var(--brand); border: 1px solid var(--rule); }
.btn.ghost:hover { border-color: var(--brand); background: var(--brand-tint); }
@media (prefers-color-scheme: dark) { .btn { color: #0d1a17; } .btn:hover { color: #0d1a17; } }

/* ---------- Results ---------- */
.results { margin-top: 30px; }
.result-block { border-top: 1px solid var(--rule); padding-top: 26px; margin-top: 26px; }
.result-block:first-child { border-top: 0; margin-top: 0; padding-top: 0; }
.rec-headline { font-family: var(--serif); font-size: 1.42rem; font-weight: 600; margin: 0 0 4px; }
.why { margin: 14px 0 0; padding: 0; list-style: none; }
.why li {
  position: relative; padding-left: 22px; margin-bottom: 10px;
  font-size: 15px; line-height: 1.6; color: var(--ink-2);
}
.why li::before {
  content: ""; position: absolute; left: 4px; top: .62em;
  width: 6px; height: 6px; border-radius: 50%; background: var(--brand);
}

.pick {
  display: flex; gap: 16px; align-items: flex-start; padding: 16px 0;
  border-top: 1px dashed var(--rule);
}
.pick-rank {
  flex: 0 0 30px; height: 30px; border-radius: 50%; background: var(--brand-tint);
  color: var(--brand); font-weight: 700; font-size: 14px;
  display: flex; align-items: center; justify-content: center;
}
.pick-body { flex: 1; min-width: 0; }
.pick-name { font-weight: 650; font-size: 15.5px; margin: 0 0 2px; }
.pick-name a { color: var(--ink); text-decoration: none; }
.pick-name a:hover { color: var(--brand); text-decoration: underline; }
.pick-mfr { font-size: 13px; color: var(--ink-4); }

/* ---------- Water-heater fit badge (W4) ---------- */
.fit-pill {
  display: inline-block; margin-left: 8px; padding: 2px 9px; border-radius: 100px;
  font-size: 11px; font-weight: 700; letter-spacing: .02em; vertical-align: middle;
}
.fit-pill.fit-pass { background: #e5f3ec; color: var(--good); }
.fit-pill.fit-conditional { background: var(--warn-tint); color: var(--warn); }
.fit-pill.fit-fail { background: var(--bad-tint); color: var(--bad); }
.pick-reasons { margin: 8px 0 0; padding-left: 16px; font-size: 14px; color: var(--ink-2); }
.pick-reasons li { margin-bottom: 4px; }
.caution {
  background: var(--warn-tint); border-left: 2px solid var(--warn);
  padding: 8px 12px; font-size: 13.5px; color: var(--ink-2); border-radius: 0 4px 4px 0;
  margin-top: 8px;
}

/* ---------- Sufficiency-gate "collect this first" block (W1) ---------- */
.collect-block { border-left: 3px solid var(--warn); padding-left: 20px !important; }
.collect-list { list-style: none; margin: 16px 0 0; padding: 0; }
.collect-list li {
  padding: 10px 0; border-top: 1px dashed var(--rule); font-size: 14.5px; color: var(--ink-2);
}
.collect-list li:first-child { border-top: 0; }

/* ---------- Urgency mode (W7) ---------- */
.urgent-block { border: 1px solid var(--accent); border-radius: var(--r); padding: 22px 24px !important; background: var(--accent-tint); }
.ask-today { margin: 14px 0 0; padding-left: 20px; }
.ask-today li { margin-bottom: 9px; font-size: 15px; line-height: 1.45; }
.urgent-split { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 18px; }
@media (max-width: 640px) { .urgent-split { grid-template-columns: 1fr; } }
.urgent-split h4 { font-size: 12.5px; text-transform: uppercase; letter-spacing: .04em; margin: 0 0 8px; color: var(--ink-3); }
.urgent-split ul { margin: 0; padding-left: 18px; font-size: 13.5px; color: var(--ink-2); }
.urgent-split li { margin-bottom: 5px; }
@media print { .urgent-block { break-inside: avoid; } }

/* ---------- Cost table ---------- */
table { width: 100%; border-collapse: collapse; font-size: 15px; }
th, td { text-align: left; padding: 11px 14px; border-bottom: 1px solid var(--rule-2); }
th { font-size: 12px; text-transform: uppercase; letter-spacing: .07em; color: var(--ink-4); font-weight: 700; }
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; }
tbody tr:hover { background: var(--paper-2); }
tr.best td { background: var(--brand-tint); font-weight: 600; }
tr.best td:first-child::after {
  content: "cheapest"; font-size: 10.5px; text-transform: uppercase; letter-spacing: .08em;
  background: var(--brand); color: #fff; padding: 2px 7px; border-radius: 100px; margin-left: 9px;
  font-weight: 700; vertical-align: 1px;
}
@media (prefers-color-scheme: dark) { tr.best td:first-child::after { color: #0d1a17; } }

/* ---------- Spec tables ---------- */
.specs { margin: 20px 0 0; }
.spec-group { margin-bottom: 26px; }
.spec-group h4 {
  font-size: 12px; text-transform: uppercase; letter-spacing: .09em; color: var(--ink-4);
  margin: 0 0 6px; padding-bottom: 6px; border-bottom: 1px solid var(--rule);
}
.spec-row {
  /* minmax(0, ...) on both tracks, not bare 1fr/auto -- a bare auto track
     refuses to shrink below its content's min-content width, and a long
     nowrap .spec-raw string (see below) was enough to blow the row past
     the viewport on a narrow product-sidebar column. */
  display: grid; grid-template-columns: minmax(0,1fr) minmax(0,auto); gap: 14px;
  align-items: baseline; padding: 9px 0; border-bottom: 1px solid var(--rule-2);
}
.spec-label { font-size: 14.5px; color: var(--ink-2); }
.spec-label .q {
  display: inline-block; width: 15px; height: 15px; line-height: 15px; text-align: center;
  border-radius: 50%; background: var(--paper-3); color: var(--ink-4); font-size: 10px;
  font-weight: 700; cursor: help; margin-left: 5px; vertical-align: 1px;
}
.spec-value { font-weight: 650; font-variant-numeric: tabular-nums; white-space: nowrap; max-width: 100%; }
.spec-src { font-size: 11.5px; color: var(--ink-4); margin-top: 2px; }
.spec-src a { color: var(--ink-4); }
.spec-why {
  font-size: 13.5px; color: var(--ink-3); line-height: 1.55; grid-column: 1 / -1;
  margin: 2px 0 0; padding: 8px 12px; background: var(--paper-2); border-radius: 5px;
}

/* ---------- Badges ---------- */
.badge {
  display: inline-block; font-size: 11.5px; font-weight: 650; letter-spacing: .03em;
  padding: 3px 9px; border-radius: 100px; background: var(--paper-3); color: var(--ink-3);
  vertical-align: 2px;
}
.badge.tier1 { background: var(--brand-tint); color: var(--brand); }
.badge.tier2 { background: var(--brand-tint); color: var(--brand); }
.badge.good { background: var(--brand-tint); color: var(--good); }
.badge.warn { background: var(--warn-tint); color: var(--warn); }
.badge.bad  { background: var(--bad-tint); color: var(--bad); }

/* ---------- Browse / filters ---------- */
.browse-layout { display: grid; grid-template-columns: 236px 1fr; gap: 34px; align-items: start; }
@media (max-width: 860px) { .browse-layout { grid-template-columns: 1fr; } }
.filters { position: sticky; top: 84px; }
.filter-group { margin-bottom: 22px; }
.filter-group h4 {
  font-size: 11.5px; text-transform: uppercase; letter-spacing: .09em; color: var(--ink-4);
  margin: 0 0 9px;
}
.filter-group label {
  display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--ink-2);
  padding: 4px 0; cursor: pointer;
}
.filter-group input { accent-color: var(--brand); }
.filter-group input[type=range] { width: 100%; }

/* ---------- Compact comparison row (two-anchor: identity | stats | price) ---------- */
.prod-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(200px, 300px) minmax(150px, 180px);
  gap: 24px; align-items: center;
  padding: 16px 0; border-bottom: 1px solid var(--rule);
}

/* Identity block — the left hero */
.pr-id { min-width: 0; }
.pr-flags { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 5px; }
.pr-flags:empty { display: none; }
.pr-chip {
  font-size: 11px; font-weight: 600; letter-spacing: .01em; padding: 1px 8px;
  border-radius: 100px; border: 1px solid var(--rule); color: var(--ink-3); white-space: nowrap;
}
.pr-chip.chip-cold { border-color: var(--brand); color: var(--brand); background: var(--brand-tint); }
.pr-chip.chip-good { border-color: var(--good); color: var(--good); background: var(--brand-tint); }
.pr-chip.chip-warn { border-color: var(--warn); color: var(--warn); background: var(--warn-tint); }
.pr-chip.chip-neutral { color: var(--ink-3); }
.pr-recall {
  font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 100px;
  background: var(--bad-tint); border: 1px solid var(--bad); color: var(--bad);
  text-decoration: none; white-space: nowrap;
}
.pr-name {
  margin: 0; font-family: var(--sans); font-weight: 500; font-size: 1.06rem; line-height: 1.25;
}
.pr-name a { color: var(--ink); text-decoration: none; }
.pr-name a b { font-weight: 700; }
.pr-name a:hover { color: var(--brand); }
.pr-sku {
  margin-left: 8px; font-family: var(--mono, monospace); font-size: 11.5px; font-weight: 500;
  color: var(--ink-4); background: var(--paper-3); padding: 1px 6px; border-radius: 4px;
  white-space: nowrap;
}
.pr-tag {
  margin: 4px 0 0; font-size: 13px; line-height: 1.45; color: var(--ink-3);
  overflow: hidden; text-overflow: ellipsis; display: -webkit-box;
  -webkit-line-clamp: 1; -webkit-box-orient: vertical;
}
.pr-owners {
  display: inline-flex; flex-wrap: wrap; gap: 4px 9px; align-items: baseline;
  margin-top: 7px; font-size: 12px; text-decoration: none;
}
.pr-owners .po-label { color: var(--ink-4); font-weight: 600; }
.pr-owners .po-pos { color: var(--good); font-weight: 600; }
.pr-owners .po-neg { color: var(--warn); font-weight: 600; }
.pr-owners .po-mixed { color: var(--ink-3); }
.pr-owners .po-more { color: var(--brand); font-weight: 600; }
.pr-owners:hover .po-more { text-decoration: underline; }

/* Stat mini-grid — bold values, muted labels */
.pr-stats { display: flex; gap: 18px; }
.pr-stats .stat { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pr-stats .stat-l {
  font-size: 10.5px; text-transform: uppercase; letter-spacing: .02em; color: var(--ink-4);
  line-height: 1.25;
}
.pr-stats .stat-v {
  font-family: var(--serif); font-size: 1.12rem; font-weight: 600; color: var(--ink);
  font-variant-numeric: tabular-nums; line-height: 1.1;
}

/* Price — the right anchor */
.pr-price { text-align: right; }
.pr-pricebtn, .pr-pricestatic {
  display: block; width: 100%; text-align: right; background: transparent;
  border: 1px solid transparent; border-radius: 8px; padding: 5px 8px; cursor: pointer; font: inherit;
}
.pr-pricestatic { cursor: default; }
.pr-pricebtn:hover { border-color: var(--rule); background: var(--paper-2); }
.pr-pricebtn:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }
.pr-pricebtn.open { border-color: var(--rule); background: var(--paper-2); }
.pp-main {
  display: block; font-family: var(--serif); font-size: 1.32rem; font-weight: 700;
  color: var(--ink); line-height: 1.1; white-space: nowrap;
}
.pp-from {
  font-family: var(--sans); font-size: .56em; font-weight: 500; color: var(--ink-4);
  text-transform: uppercase; letter-spacing: .03em; vertical-align: .22em;
}
.pp-sub { display: block; font-size: 11px; color: var(--ink-4); margin-top: 2px; }
.pr-pricestatic.price-unknown .pp-main { font-size: .95rem; font-weight: 600; color: var(--ink-4); }
.pp-cta { display: block; font-size: 11.5px; font-weight: 600; color: var(--brand); margin-top: 5px; }
.pp-cta .chev { display: inline-block; transition: transform .15s ease; }
.pr-pricebtn.open .pp-cta .chev { transform: rotate(180deg); }
.pr-details {
  display: inline-block; margin-top: 8px; font-size: 12px; font-weight: 600;
  color: var(--brand); text-decoration: none;
}
.pr-details:hover { text-decoration: underline; }

@media (max-width: 820px) {
  .prod-row { grid-template-columns: 1fr; gap: 12px; }
  .pr-stats { gap: 24px; }
  .pr-price { text-align: left; }
  .pr-pricebtn, .pr-pricestatic { text-align: left; width: auto; }
}

/* ---------- Buyer's guide slim link ---------- */
.guide-link {
  display: inline-flex; align-items: baseline; gap: 8px;
  font-size: 14px; font-weight: 600; color: var(--brand); text-decoration: none;
}
.guide-link:hover { color: var(--brand-2); text-decoration: underline; }
.guide-link .gl-meta { font-weight: 400; font-size: 12.5px; color: var(--ink-4); }

/* ---------- Category filter (horizontal verdict bar) ---------- */
.cat-filter {
  position: sticky; top: 0; z-index: 20;
  background: var(--paper-2); border: 1px solid var(--rule); border-radius: 10px;
  padding: 12px 14px; margin: 16px 0 10px;
}
.cf-fields { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: flex-end; }
.cf-field { display: flex; flex-direction: column; gap: 5px; }
.cf-field > span {
  font-size: 11.5px; font-weight: 600; letter-spacing: .02em; color: var(--ink-3);
}
.cf-field select, .cf-field input {
  border: 1px solid var(--rule); border-radius: 7px; background: var(--paper);
  color: var(--ink); padding: 8px 10px; font-size: 13.5px; min-width: 150px; cursor: pointer;
}
.cf-field input { cursor: text; min-width: 110px; }
.cf-field input:focus, .cf-field select:focus {
  outline: 2px solid var(--brand); outline-offset: -1px;
}
.cf-field em { font-style: normal; color: var(--ink-4); font-weight: 400; }
.cf-field-zip { flex: 0 0 auto; }
.cf-reset {
  border: 1px solid var(--rule); background: var(--paper); color: var(--ink-3);
  border-radius: 100px; padding: 8px 14px; font-size: 12.5px; cursor: pointer; height: 37px;
}
.cf-reset:hover { border-color: var(--brand); color: var(--brand); }
.cf-status { font-size: 13px; color: var(--ink-3); margin: 0 0 6px; min-height: 1px; }
.cf-incentive {
  font-size: 13px; color: var(--ink-2); margin: 0 0 14px; padding: 8px 12px;
  background: var(--brand-tint); border: 1px solid var(--rule); border-radius: 7px;
}
.cf-incentive a { color: var(--brand-2); font-weight: 600; }
@media (max-width: 640px) {
  .cat-filter { position: static; }
  .cf-field select, .cf-field input { min-width: 0; width: 100%; }
  .cf-field { flex: 1 1 45%; }
}

/* ---------- Durability line ---------- */
.dur-line {
  margin: 9px 0 0; font-size: 13px; line-height: 1.5; color: var(--ink-2);
  max-width: 52rem; padding-left: 11px; border-left: 2px solid var(--rule);
}
.dur-line .dur-tag {
  display: inline-block; font-weight: 700; font-size: 11px; letter-spacing: .03em;
  text-transform: uppercase; margin-right: 8px; padding: 1px 7px; border-radius: 4px;
  background: var(--paper-3); color: var(--ink-3); vertical-align: 1px;
}
.dur-line.dur-good { border-left-color: var(--good); }
.dur-line.dur-good .dur-tag { background: var(--brand-tint); color: var(--good); }
.dur-line.dur-warn { border-left-color: var(--warn); }
.dur-line.dur-warn .dur-tag { background: var(--warn-tint); color: var(--warn); }

/* ---------- Recall banner (product page) ---------- */
.recall-banner {
  border: 1px solid var(--bad); border-left: 4px solid var(--bad);
  background: var(--bad-tint); border-radius: 0 var(--r) var(--r) 0;
  padding: 14px 18px; margin: 4px 0 18px;
}
.recall-banner .rb-head { font-weight: 700; color: var(--bad); font-size: 14px; }
.recall-banner p { margin: 6px 0 0; font-size: 13.5px; line-height: 1.55; color: var(--ink-2); }
.recall-banner .rb-do { color: var(--ink-2); }
.recall-banner a { display: inline-block; margin-top: 8px; font-weight: 600; font-size: 13px; }

/* ---------- Recall / safety flag ---------- */
.recall-flag {
  display: block; margin: 0 0 8px; padding: 7px 12px;
  background: var(--bad-tint); border: 1px solid var(--bad); border-radius: 7px;
  color: var(--ink-2); font-size: 12.5px; line-height: 1.45; text-decoration: none;
  max-width: 52rem;
}
.recall-flag:hover { border-color: var(--bad); background: var(--bad-tint); filter: brightness(0.98); }
.recall-flag .rf-tag { font-weight: 700; color: var(--bad); margin-right: 4px; }
.recall-flag .rf-arrow { color: var(--bad); font-weight: 700; }

/* ---------- Owner-report summary (links to product detail) ---------- */
.owner-line {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px;
  margin: 9px 0 0; text-decoration: none; max-width: 52rem;
}
.owner-line .ol-tag {
  font-size: 11px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase;
  color: var(--ink-3);
}
.owner-line .ol-theme {
  font-size: 12px; padding: 1px 9px; border-radius: 100px; border: 1px solid var(--rule);
  color: var(--ink-2);
}
.owner-line .ol-positive { border-color: var(--good); color: var(--good); background: var(--brand-tint); }
.owner-line .ol-negative { border-color: var(--warn); color: var(--warn); background: var(--warn-tint); }
.owner-line .ol-mixed { color: var(--ink-3); }
.owner-line .ol-more { font-size: 12px; font-weight: 600; color: var(--brand); }
.owner-line:hover .ol-more { text-decoration: underline; }

/* ---------- Per-row fit annotation (JS-populated) ---------- */
.fit-badge { margin-bottom: 6px; display: inline-block; }
.fit-note { margin: 8px 0 0; }
.fit-reasons { margin: 0; padding-left: 18px; }
.fit-reasons li { font-size: 13px; color: var(--ink-2); line-height: 1.5; margin-bottom: 2px; }
.fit-caution {
  margin-top: 6px; font-size: 12.5px; line-height: 1.5; color: var(--ink-2);
  background: var(--warn-tint); border-left: 2px solid var(--warn);
  padding: 6px 10px; border-radius: 0 6px 6px 0; max-width: 52rem;
}
.fit-caution strong { color: var(--warn); }

/* ---------- Article ---------- */
/* ---------- Product detail two-column layout ----------
   Was an inline style on the template (no way to override it responsively).
   Pulled out into a class specifically so it can collapse on mobile --
   without this, the spec sidebar was squeezed into a track roughly a third
   of the viewport width on a phone, which is what forced .spec-row's
   content to overflow in the first place. */
.product-layout {
  display: grid; grid-template-columns: minmax(0,1.55fr) minmax(0,1fr); gap: 52px;
  align-items: start;
}
@media (max-width: 880px) { .product-layout { grid-template-columns: 1fr; gap: 30px; } }

.article { max-width: var(--w-text); }
.article p { margin: 0 0 1.15em; }
.article h2 { margin-top: 1.9em; }
.article h2:first-of-type { margin-top: 1.2em; }
.article ul, .article ol { margin: 0 0 1.2em; padding-left: 1.3em; }
.article li { margin-bottom: .5em; }
.article strong { font-weight: 650; }
.article em { font-style: italic; }
.article blockquote {
  margin: 1.5em 0; padding: 2px 0 2px 20px; border-left: 3px solid var(--brand);
  color: var(--ink-2); font-style: italic;
}
.article hr { border: 0; border-top: 1px solid var(--rule); margin: 2.4em 0; }

.meta-line {
  display: flex; gap: 16px; flex-wrap: wrap; align-items: center;
  font-size: 13.5px; color: var(--ink-4); margin-bottom: 30px;
  padding-bottom: 18px; border-bottom: 1px solid var(--rule);
}

/* ---------- Breadcrumb ---------- */
.crumb { font-size: 13.5px; color: var(--ink-4); padding: 22px 0 0; }
.crumb a { color: var(--ink-3); text-decoration: none; }
.crumb a:hover { color: var(--brand); }
.crumb span { margin: 0 7px; opacity: .5; }

/* ---------- Data quality bar ---------- */
.dq { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--ink-3); }
.dq-bar { flex: 0 0 74px; height: 5px; background: var(--paper-3); border-radius: 3px; overflow: hidden; }
.dq-fill { height: 100%; background: var(--brand); border-radius: 3px; }

/* ---------- Footer ---------- */
.site-foot {
  border-top: 1px solid var(--rule); background: var(--paper-2);
  padding: 52px 0 40px; margin-top: 76px; font-size: 14px; color: var(--ink-3);
}
.foot-grid { display: grid; grid-template-columns: 1.6fr repeat(3, 1fr); gap: 34px; }
@media (max-width: 760px) { .foot-grid { grid-template-columns: 1fr 1fr; } }
.site-foot h5 {
  font-size: 11.5px; text-transform: uppercase; letter-spacing: .09em; color: var(--ink-4);
  margin: 0 0 12px; font-family: var(--sans); font-weight: 700;
}
.site-foot ul { list-style: none; padding: 0; margin: 0; }
.site-foot li { margin-bottom: 7px; }
.site-foot a { color: var(--ink-2); text-decoration: none; }
.site-foot a:hover { color: var(--brand); }
.foot-bottom {
  margin-top: 40px; padding-top: 22px; border-top: 1px solid var(--rule);
  font-size: 13px; color: var(--ink-4); display: flex; gap: 18px; flex-wrap: wrap;
}

.hidden { display: none !important; }
.tag-list { display: flex; gap: 8px; flex-wrap: wrap; margin: 14px 0 0; }
.tag {
  font-size: 13px; padding: 5px 12px; border: 1px solid var(--rule); border-radius: 100px;
  color: var(--ink-2); text-decoration: none;
}
.tag:hover { border-color: var(--brand); color: var(--brand); }

@media print {
  .site-head, .site-foot, .filters, .btn { display: none; }
  body { font-size: 12pt; }
}

/* ---------- Evidence layer ---------- */
.ev-theme {
  border: 1px solid var(--rule); border-radius: var(--r);
  padding: 20px 22px; margin: 20px 0; background: var(--paper);
}
.ev-head { display: flex; gap: 18px; justify-content: space-between; align-items: flex-start; }
.ev-head h3 { margin: 0 0 3px; font-size: 1.08rem; }
.ev-head p { margin: 0; }
.ev-claim { border-top: 1px dashed var(--rule); padding-top: 15px; margin-top: 15px; }
.ev-claim:first-of-type { border-top: 1px solid var(--rule); }
.ev-quote {
  margin: 10px 0; padding: 10px 16px; border-left: 3px solid var(--brand);
  background: var(--paper-2); border-radius: 0 5px 5px 0;
  font-style: italic; color: var(--ink-2); font-size: 15px; line-height: 1.55;
}
.ev-quote cite {
  display: block; margin-top: 7px; font-style: normal; font-size: 12.5px;
  color: var(--ink-4);
}
.ev-fix {
  margin-top: 10px; padding: 10px 14px; background: var(--brand-tint);
  border-radius: 5px; font-size: 14px; color: var(--ink-2); line-height: 1.55;
}

/* ---------- Network signifier ---------- */
.signifier {
  margin: 8px 0 0; font-size: 12px; letter-spacing: .05em; text-transform: uppercase;
  font-weight: 600; color: var(--ink-4);
}
.signifier a { color: var(--ink-4); text-decoration: none; border-bottom: 1px solid var(--rule); }
.signifier a:hover { color: var(--brand); border-color: var(--brand); }

/* ---------- Plain-language specs ----------
   The sentence is the content; the number is the citation. A first-time buyer
   reads the first line and stops, and that line has to be enough. */
.plain-specs { list-style: none; margin: 10px 0 0; padding: 0; max-width: 46rem; }
.plain-specs li {
  position: relative; padding-left: 20px; margin-bottom: 7px;
  font-size: 14.5px; line-height: 1.5; color: var(--ink-2);
}
.plain-specs li::before {
  content: ""; position: absolute; left: 4px; top: .6em;
  width: 5px; height: 5px; border-radius: 50%; background: var(--brand); opacity: .55;
}
.ps-text { }
.ps-num {
  display: inline-block; margin-left: 8px; font-size: 12px; color: var(--ink-4);
  font-variant-numeric: tabular-nums; white-space: nowrap;
}

.spec-plain {
  font-size: 13.5px; line-height: 1.5; color: var(--ink-2); margin-top: 3px;
  max-width: 30rem;
}
.spec-raw {
  /* Explanatory text (e.g. "NEEP cold-climate listed"), not a short number --
     it must not inherit .spec-value's white-space: nowrap. That inheritance
     was the actual cause of the overflow: a long .spec-raw string forced
     the whole "auto" column, and with it the row, wider than the screen. */
  font-size: 11px; font-weight: 500; color: var(--ink-4); letter-spacing: .02em;
  margin-top: 2px; text-align: right; white-space: normal; overflow-wrap: break-word;
}
.spec-caveat {
  grid-column: 1 / -1; margin: 8px 0 0; padding: 8px 12px;
  background: var(--paper-2); border-radius: 5px;
  font-size: 12.5px; line-height: 1.5; color: var(--ink-3);
}
@media (max-width: 560px) {
  /* Below this, even a full-width single-column product sidebar is tight
     enough that label-beside-value reads cramped. Stack instead. */
  .spec-row { grid-template-columns: 1fr; gap: 3px; }
  .spec-value { text-align: left; }
  .spec-raw { text-align: left; }
}

/* ---------- Price ----------
   Required on every product row. A list you can't shop from isn't a list. */
.price-block { margin-bottom: 10px; text-align: right; }
.price-main {
  font-family: var(--serif); font-size: 1.12rem; font-weight: 600;
  color: var(--ink); white-space: nowrap; line-height: 1.2;
}
.price-sub { font-size: 11.5px; color: var(--ink-4); margin-top: 2px; }
.price-block.price-unknown .price-main {
  font-size: .92rem; font-family: var(--sans); font-weight: 600; color: var(--ink-4);
}

.price-hero {
  display: flex; gap: 20px; align-items: baseline; flex-wrap: wrap;
  border: 1px solid var(--rule); border-left: 3px solid var(--brand);
  border-radius: 0 var(--r) var(--r) 0; padding: 16px 20px; margin: 0 0 22px;
  background: var(--paper-2);
}
.price-hero .price-main { font-size: 1.5rem; }
.price-hero .price-sub { font-size: 12.5px; }
.price-hero.price-unknown { border-left-color: var(--warn); }
.price-hero.price-unknown .price-main { font-size: 1.05rem; }
@media (max-width: 380px) {
  /* At the narrowest common phone width, the hero price range ($X - $Y) in
     .price-main's inherited nowrap no longer fits its own container. Let it
     wrap to a second line instead of pushing the page wider than the screen. */
  .price-hero .price-main { white-space: normal; }
}
.price-caveat {
  margin: 0; flex: 1 1 22rem; min-width: 16rem;
  font-size: 13px; line-height: 1.5; color: var(--ink-3);
}
@media (max-width: 700px) { .price-block { text-align: left; } }
.mono { font-family: var(--mono); font-size: 11px; }
.price-from {
  font-family: var(--sans); font-size: .62em; font-weight: 500; color: var(--ink-4);
  text-transform: uppercase; letter-spacing: .03em; vertical-align: .18em;
}

/* Clickable price → seller listings */
button.price-toggle {
  display: block; width: 100%; margin: 0 0 10px; padding: 6px 8px 5px;
  background: transparent; border: 1px solid transparent; border-radius: 8px;
  text-align: right; cursor: pointer; font: inherit;
}
button.price-toggle:hover { border-color: var(--rule); background: var(--paper-2); }
button.price-toggle:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }
.price-cta {
  font-size: 11.5px; font-weight: 600; color: var(--brand); margin-top: 4px;
}
.price-cta .chev { display: inline-block; transition: transform .15s ease; }
button.price-toggle.open .price-cta .chev { transform: rotate(180deg); }
button.price-toggle.open { border-color: var(--rule); background: var(--paper-2); }

/* Seller listing panel — spans the full product row */
.seller-panel {
  grid-column: 1 / -1; margin: 2px 0 6px;
  background: var(--paper-2); border: 1px solid var(--rule); border-radius: 10px;
  padding: 12px 16px;
}
.sp-head {
  font-size: 12px; font-weight: 700; letter-spacing: .02em; color: var(--ink-2);
  margin-bottom: 8px;
}
.sp-head-note { font-weight: 400; color: var(--ink-4); }
.sp-row {
  display: flex; justify-content: space-between; align-items: baseline; gap: 16px;
  padding: 8px 0; border-top: 1px solid var(--rule-2);
}
.sp-main a { font-weight: 650; text-decoration: none; }
.sp-main a:hover { text-decoration: underline; }
.sp-scope {
  display: inline-block; margin-left: 8px; font-size: 11px; color: var(--ink-3);
  background: var(--paper-3); padding: 1px 7px; border-radius: 4px; vertical-align: 1px;
}
.sp-stock {
  margin-left: 6px; font-size: 11px; font-weight: 600; color: var(--good);
}
.sp-variant { font-size: 12px; color: var(--ink-4); margin-top: 3px; }
.sp-price {
  font-family: var(--serif); font-weight: 600; color: var(--ink); white-space: nowrap;
  text-align: right;
}
.sp-price .sp-date {
  display: block; font-family: var(--sans); font-weight: 400; font-size: 11px;
  color: var(--ink-4); margin-top: 2px;
}
.sp-note { font-size: 11.5px; color: var(--ink-4); line-height: 1.5; margin-top: 10px; }

/* ---------- Price build-up ----------
   Shown whenever a displayed price is partly estimated. The reader can see
   exactly which parts we observed and which we inferred. */
.build-up { flex: 1 1 24rem; min-width: 18rem; margin-top: 4px; }
.build-up-head {
  font-size: 11.5px; text-transform: uppercase; letter-spacing: .08em;
  color: var(--ink-4); font-weight: 700; margin-bottom: 8px;
}
.build-up-row {
  display: flex; justify-content: space-between; gap: 14px; align-items: baseline;
  font-size: 13.5px; color: var(--ink-2); padding: 4px 0;
  border-bottom: 1px solid var(--rule-2);
}
.build-up-row .num { font-variant-numeric: tabular-nums; white-space: nowrap; font-weight: 600; }
.build-up-note { font-size: 12px; color: var(--ink-4); line-height: 1.45; padding: 4px 0 6px; }

/* --- ZIP-filtered incentive module ------------------------------------ */
.inc-module {
  margin: 26px 0 34px; padding: 22px 22px 24px;
  background: var(--paper-2); border: 1px solid var(--rule);
  border-radius: var(--r);
}
.inc-module > h2 { margin-top: 0; }
.inc-controls {
  display: flex; flex-wrap: wrap; gap: 14px; margin-top: 14px;
}
.inc-field {
  display: flex; flex-direction: column; gap: 5px;
  font-size: 12px; font-weight: 600; color: var(--ink-3);
  text-transform: uppercase; letter-spacing: .03em;
}
.inc-field input, .inc-field select {
  font: inherit; font-size: 15px; font-weight: 400; text-transform: none;
  letter-spacing: 0; color: var(--ink); background: var(--paper);
  border: 1px solid var(--rule); border-radius: 6px; padding: 9px 11px;
  min-width: 200px;
}
.inc-field input:focus, .inc-field select:focus {
  outline: none; border-color: var(--brand-2);
  box-shadow: 0 0 0 3px var(--brand-tint);
}
#inc-detected { margin: 10px 0 0; }
#inc-results { margin-top: 18px; }
.inc-federal { margin-bottom: 16px; }
.inc-federal p { margin: 8px 0 0; }
.inc-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 640px) { .inc-cards { grid-template-columns: 1fr; } }
.inc-card {
  display: flex; flex-direction: column; gap: 4px;
  padding: 16px; background: var(--paper); border: 1px solid var(--rule);
  border-radius: var(--r); text-decoration: none; color: var(--ink);
  transition: border-color .12s, box-shadow .12s, transform .12s;
}
.inc-card:hover {
  border-color: var(--brand-2); box-shadow: var(--shadow); transform: translateY(-1px);
}
.inc-card-k { font-weight: 700; font-size: 16px; color: var(--brand-2); }
.inc-card-src {
  font-size: 12px; font-weight: 600; color: var(--ink-3);
  text-transform: uppercase; letter-spacing: .03em; margin-bottom: 3px;
}
.inc-card .small { color: var(--ink-2); }
.inc-traps { margin-top: 18px; }
.inc-traps ul { margin: 8px 0 0; padding-left: 20px; }
.inc-traps li { margin: 7px 0; }

/* ---------- Comparison table (W6) ---------- */
.view-toggle {
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap;
  gap: 12px; margin-top: 18px;
}
.vt-buttons { display: inline-flex; border: 1px solid var(--rule); border-radius: 8px; overflow: hidden; }
.vt-btn {
  font: inherit; font-size: 13px; font-weight: 650; padding: 7px 16px; border: none;
  background: var(--paper); color: var(--ink-3); cursor: pointer;
}
.vt-btn + .vt-btn { border-left: 1px solid var(--rule); }
.vt-btn.active { background: var(--brand); color: #fff; }
.vt-compare-bar {
  display: flex; align-items: center; gap: 12px; font-size: 13px; color: var(--ink-2);
  background: var(--brand-tint); border-radius: 8px; padding: 8px 14px;
}
.vt-compare-bar .btn.small { padding: 6px 14px; font-size: 13px; }
.vt-compare-clear {
  background: none; border: none; color: var(--ink-3); font-size: 12.5px; cursor: pointer;
  text-decoration: underline;
}
.pr-compare-check {
  display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--ink-3);
  cursor: pointer; font-weight: 600; margin-right: auto;
}
.pr-compare-check input { margin: 0; }

.compare-table-wrap { margin-top: 14px; overflow-x: auto; }
.compare-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.compare-table th, .compare-table td {
  padding: 10px 14px; text-align: left; border-bottom: 1px solid var(--rule);
  white-space: nowrap;
}
.compare-table thead th {
  background: var(--paper-2); font-size: 11.5px; text-transform: uppercase;
  letter-spacing: .04em; color: var(--ink-3); font-weight: 650;
}
.compare-table tbody tr:hover { background: var(--paper-2); }
.ct-name { white-space: normal; min-width: 200px; }
.ct-name a { color: var(--ink); text-decoration: none; }
.ct-name a:hover { color: var(--brand); }
.ct-recall { color: var(--bad); font-size: 12px; margin-left: 6px; }

@media print {
  .view-toggle, .cat-filter, .cf-status, .cf-incentive, #cf-advice { display: none; }
  /* Print always renders the table, not the card list — a table is what
     survives being printed and set beside a contractor's paperwork. */
  #cat-list { display: none !important; }
  .compare-table-wrap.hidden { display: block !important; }
  .compare-table-wrap { overflow-x: visible; }
  .compare-table { font-size: 11pt; }
  .compare-table th, .compare-table td { padding: 6px 8px; white-space: normal; }
}
.inc-why { margin-top: 14px; line-height: 1.5; }

/* ---------- Assumptions disclosure (W8) ---------- */
.assumptions {
  margin-top: 14px; border: 1px solid var(--rule); border-radius: var(--r);
  padding: 4px 16px; background: var(--paper-2);
}
.assumptions summary {
  cursor: pointer; padding: 10px 0; font-size: 13px; font-weight: 650; color: var(--ink-2);
  list-style: none;
}
.assumptions summary::-webkit-details-marker { display: none; }
.assumptions summary::before { content: "▸ "; color: var(--ink-4); }
.assumptions[open] summary::before { content: "▾ "; }
.assumptions table { margin: 4px 0 12px; font-size: 13px; }
.assumptions td, .assumptions th { padding: 5px 8px; }

/* ---------- Coverage honesty note (W9) ---------- */
.coverage-note { font-size: 13.5px; color: var(--ink-3); margin: 10px 0 0; }
.coverage-note.coverage-thin {
  color: var(--warn); background: var(--warn-tint); border-radius: 6px;
  padding: 8px 12px; display: inline-block;
}
.coverage-note.coverage-thin strong { color: inherit; }
