/* ==========================================================================
   ANCHORFRAME — core stylesheet
   Ports the original brand system (see docs in project notes) to plain CSS:
   no build step, no preprocessor. Edit CSS custom properties below to
   retheme the whole site from one place.
   ========================================================================== */

:root {
  /* --- Brand colors --- */
  --color-paper: #F3F5F4;
  --color-ink: #16232E;
  --color-blueprint: #2B4C7E;
  --color-blueprint-light: #4A6C9E;
  --color-blueprint-dark: #1B3358;
  --color-brass: #B8862E;
  --color-brass-light: #D4A64F;
  --color-brass-dark: #8F6A22;
  --color-chalk: #E4E9E6;
  --color-signal: #B23B2E;
  --color-white: #FFFFFF;

  /* --- Fonts (loaded via Google Fonts <link> in <head>) --- */
  --font-display: 'Fraunces', ui-serif, Georgia, serif;
  --font-body: 'Inter', ui-sans-serif, system-ui, -apple-system, sans-serif;
  --font-mono: 'IBM Plex Mono', ui-monospace, 'SFMono-Regular', monospace;

  /* --- Radii --- */
  --radius-sm: 4px;
  --radius: 8px;
  --radius-lg: 14px;
  --radius-full: 9999px;

  /* --- Shadows --- */
  --shadow-sm: 0 1px 2px rgba(22, 35, 46, 0.06);
  --shadow-md: 0 8px 24px rgba(22, 35, 46, 0.10);
  --shadow-lg: 0 16px 40px rgba(22, 35, 46, 0.14);

  /* --- Motion --- */
  --transition-fast: 150ms ease;
  --transition: 220ms ease;

  color-scheme: light;
}

/* ==========================================================================
   Reset & base
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  background: var(--color-paper);
  color: var(--color-ink);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

img, svg { display: block; max-width: 100%; }

a { color: inherit; text-decoration: none; }

button { font-family: inherit; }

h1, h2, h3, h4, p, dl, dd, figure { margin: 0; }

ul, ol { margin: 0; padding: 0; list-style: none; }

input, select, textarea, button { font: inherit; color: inherit; }

::selection { background: var(--color-brass-light); color: var(--color-ink); }

h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 600; color: var(--color-ink); line-height: 1.15; }

.container {
  width: 100%;
  max-width: 1152px;
  margin-inline: auto;
  padding-inline: 1rem;
}

@media (min-width: 640px) {
  .container { padding-inline: 1.5rem; }
}

.container-narrow { max-width: 768px; }
.container-mid { max-width: 896px; }

section { position: relative; }

.section-pad { padding-block: 4rem; }
@media (min-width: 640px) { .section-pad { padding-block: 5rem; } }

.visually-hidden {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.skip-link {
  position: absolute;
  left: 1rem; top: -3rem;
  background: var(--color-ink);
  color: var(--color-paper);
  padding: 0.75rem 1.25rem;
  border-radius: var(--radius);
  z-index: 100;
  transition: top var(--transition-fast);
}
.skip-link:focus { top: 1rem; }

:focus-visible {
  outline: 2px solid var(--color-brass);
  outline-offset: 2px;
}

/* ==========================================================================
   Typography helpers
   ========================================================================== */

.eyebrow {
  font-family: var(--font-mono);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-brass-dark);
}

.lede { font-size: 1.125rem; color: rgba(22, 35, 46, 0.65); }
@media (min-width: 640px) { .lede { font-size: 1.25rem; } }

.text-muted { color: rgba(22, 35, 46, 0.6); }
.text-faint { color: rgba(22, 35, 46, 0.4); }
.text-small { font-size: 0.875rem; }
.text-xs { font-size: 0.75rem; }
.mono { font-family: var(--font-mono); }

/* ==========================================================================
   Buttons
   ========================================================================== */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.9375rem;
  border-radius: var(--radius);
  border: 1px solid transparent;
  padding: 0.75rem 1.375rem;
  cursor: pointer;
  transition: background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);
  text-align: center;
  line-height: 1.2;
}
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }

.btn-lg { font-size: 1rem; padding: 0.9375rem 1.75rem; }
.btn-sm { font-size: 0.8125rem; padding: 0.5rem 1rem; }
.btn-block { width: 100%; }

.btn-primary { background: var(--color-blueprint); color: var(--color-paper); }
.btn-primary:hover { background: var(--color-blueprint-dark); }

.btn-secondary { background: transparent; color: var(--color-ink); border-color: rgba(22, 35, 46, 0.2); }
.btn-secondary:hover { border-color: rgba(22, 35, 46, 0.4); background: var(--color-chalk); }

.btn-ghost { background: transparent; color: var(--color-blueprint); }
.btn-ghost:hover { background: rgba(43, 76, 126, 0.06); }

.btn-danger { background: var(--color-signal); color: var(--color-paper); }
.btn-danger:hover { background: #9a3227; }

.btn-icon { width: 1rem; height: 1rem; flex-shrink: 0; }

/* ==========================================================================
   Cards, badges
   ========================================================================== */

.card {
  background: var(--color-white);
  border: 1px solid rgba(22, 35, 46, 0.1);
  border-radius: var(--radius-lg);
  padding: 1.5rem;
}

.badge {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-family: var(--font-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 0.3rem 0.65rem;
  border-radius: var(--radius-full);
  background: var(--color-chalk);
  color: rgba(22, 35, 46, 0.7);
  white-space: nowrap;
}
.badge-success { background: rgba(43, 76, 126, 0.1); color: var(--color-blueprint-dark); }
.badge-warning { background: rgba(184, 134, 46, 0.15); color: var(--color-brass-dark); }
.badge-danger { background: rgba(178, 59, 46, 0.1); color: var(--color-signal); }
.badge-info { background: rgba(22, 35, 46, 0.05); color: rgba(22, 35, 46, 0.7); }

/* ==========================================================================
   Disclosure line (platform disclaimer — exact wording lives in HTML)
   ========================================================================== */

.disclosure {
  font-size: 0.8125rem;
  color: rgba(22, 35, 46, 0.6);
  max-width: 46rem;
}

.disclosure-box {
  border: 1px solid rgba(184, 134, 46, 0.35);
  background: rgba(184, 134, 46, 0.06);
  border-radius: var(--radius);
  padding: 0.875rem 1rem;
  font-size: 0.8125rem;
  color: rgba(22, 35, 46, 0.75);
}

/* ==========================================================================
   Header
   ========================================================================== */

.site-header {
  position: sticky;
  top: 0;
  z-index: 40;
  background: rgba(243, 245, 244, 0.92);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(22, 35, 46, 0.1);
}

.site-header .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 4rem;
}

.brand-mark {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 1.25rem;
  letter-spacing: -0.01em;
  color: var(--color-ink);
}

.primary-nav {
  display: none;
  align-items: center;
  gap: 2rem;
}

.primary-nav a {
  font-size: 0.9375rem;
  color: rgba(22, 35, 46, 0.7);
  transition: color var(--transition-fast);
}
.primary-nav a:hover, .primary-nav a.active { color: var(--color-ink); }

.header-actions { display: none; align-items: center; gap: 1rem; }

.menu-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  padding: 0.5rem;
  border-radius: var(--radius);
  cursor: pointer;
  color: var(--color-ink);
}

.mobile-nav {
  display: none;
  border-top: 1px solid rgba(22, 35, 46, 0.1);
  background: var(--color-paper);
  padding: 1rem;
}
.mobile-nav.open { display: block; }

.mobile-nav a {
  display: block;
  padding: 0.75rem 0.5rem;
  border-radius: var(--radius);
  font-size: 1rem;
  color: rgba(22, 35, 46, 0.85);
}
.mobile-nav a:hover, .mobile-nav a.active { background: var(--color-chalk); }
.mobile-nav .btn { margin-top: 0.75rem; }

@media (min-width: 900px) {
  .primary-nav { display: flex; }
  .header-actions { display: flex; }
  .menu-toggle { display: none; }
  .mobile-nav { display: none !important; }
}

/* ==========================================================================
   Footer
   ========================================================================== */

.site-footer { border-top: 1px solid rgba(22, 35, 46, 0.1); background: var(--color-white); }
.footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  padding-block: 3rem;
}
@media (min-width: 640px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 900px) { .footer-grid { grid-template-columns: 2fr 1fr 1fr; } }

.footer-col-title {
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: rgba(22, 35, 46, 0.4);
  margin-bottom: 0.75rem;
}
.footer-col ul { display: flex; flex-direction: column; gap: 0.5rem; }
.footer-col a { font-size: 0.875rem; color: rgba(22, 35, 46, 0.7); }
.footer-col a:hover { color: var(--color-ink); }

.footer-bottom {
  border-top: 1px solid rgba(22, 35, 46, 0.1);
  padding-block: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  font-family: var(--font-mono);
  font-size: 0.75rem;
  color: rgba(22, 35, 46, 0.4);
}
@media (min-width: 640px) { .footer-bottom { flex-direction: row; justify-content: space-between; } }

/* ==========================================================================
   Hero
   ========================================================================== */

.hero { border-bottom: 1px solid rgba(22, 35, 46, 0.1); background: var(--color-white); }
.hero .container { padding-block: 3rem; }
@media (min-width: 640px) { .hero .container { padding-block: 4rem; } }

.hero-grid { display: grid; gap: 2.5rem; align-items: center; }
@media (min-width: 1024px) { .hero-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 4rem; } }

.hero h1 {
  font-size: 2.25rem;
  line-height: 1.08;
  letter-spacing: -0.01em;
}
@media (min-width: 640px) { .hero h1 { font-size: 3rem; } }
@media (min-width: 1024px) { .hero h1 { font-size: 3.25rem; } }

.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; margin-top: 2rem; }

/* ==========================================================================
   Sample Price Snapshot card (homepage + wizard reveal use the same visual)
   ========================================================================== */

.snapshot-card {
  background: var(--color-white);
  border: 1px solid rgba(22, 35, 46, 0.1);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-md);
}
.snapshot-card-head {
  background: var(--color-ink);
  color: var(--color-paper);
  padding: 1.25rem 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.snapshot-card-head .eyebrow { color: var(--color-brass-light); }
.snapshot-card-head h3 { color: var(--color-paper); font-size: 1.25rem; margin-top: 0.15rem; }

.snapshot-body { padding: 1.5rem; }

.snapshot-range {
  font-family: var(--font-mono);
  font-size: 2rem;
  color: var(--color-ink);
  letter-spacing: -0.01em;
}
@media (min-width: 640px) { .snapshot-range { font-size: 2.5rem; } }

.snapshot-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.25rem;
  margin-top: 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(22, 35, 46, 0.08);
}
@media (min-width: 480px) { .snapshot-grid { grid-template-columns: repeat(3, 1fr); } }

.snapshot-stat-label {
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: rgba(22, 35, 46, 0.4);
}
.snapshot-stat-value { margin-top: 0.25rem; font-weight: 600; color: var(--color-ink); }

/* ==========================================================================
   Dimension-line readiness meter (signature motif — a measured line with
   tick marks and a moving pointer, never a circular gauge)
   ========================================================================== */

.dimension-meter { width: 100%; }
.dimension-meter-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-family: var(--font-mono);
  font-size: 0.75rem;
  color: rgba(22, 35, 46, 0.6);
  margin-bottom: 0.5rem;
}
.dimension-meter svg { width: 100%; height: 24px; display: block; }
.dimension-meter-track { stroke: var(--color-chalk); stroke-width: 3; stroke-linecap: round; }
.dimension-meter-fill { stroke: var(--color-blueprint); stroke-width: 3; stroke-linecap: round; transition: stroke-dasharray var(--transition); }
.dimension-meter-tick { stroke: rgba(22, 35, 46, 0.3); stroke-width: 1.5; }
.dimension-meter-pointer { stroke: var(--color-brass); stroke-width: 2; }

.dimension-label {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  font-family: var(--font-mono);
  font-size: 0.75rem;
  letter-spacing: 0.02em;
  color: rgba(22, 35, 46, 0.5);
}

/* ==========================================================================
   Grid / step blocks (how it works, why-use, etc.)
   ========================================================================== */

.grid-3 { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 640px) { .grid-3 { grid-template-columns: repeat(3, 1fr); } }

.grid-2 { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 640px) { .grid-2 { grid-template-columns: repeat(2, 1fr); } }

.step-card { border: 1px solid rgba(22, 35, 46, 0.1); background: var(--color-white); border-radius: var(--radius-lg); padding: 1.5rem; }
.step-number { font-family: var(--font-mono); font-size: 0.75rem; color: var(--color-brass); }
.step-icon { width: 22px; height: 22px; color: var(--color-blueprint); margin-top: 0.75rem; }
.step-card h3 { font-size: 1.125rem; margin-top: 0.75rem; }
.step-card p { margin-top: 0.5rem; font-size: 0.875rem; color: rgba(22, 35, 46, 0.6); }

/* ==========================================================================
   FAQ
   ========================================================================== */

.faq-item + .faq-item { margin-top: 1.25rem; }
.faq-q { font-weight: 600; font-size: 0.9375rem; }
.faq-a { margin-top: 0.35rem; font-size: 0.9375rem; color: rgba(22, 35, 46, 0.6); }

/* ==========================================================================
   House selector ("Home Command Center")
   ========================================================================== */

.selector-wrap { width: 100%; }
.selector-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.75rem; margin-bottom: 1rem; }
.view-toggle { display: inline-flex; border-radius: var(--radius-full); border: 1px solid rgba(22, 35, 46, 0.15); background: var(--color-white); padding: 0.25rem; }
.view-toggle button {
  border: none; background: transparent; cursor: pointer;
  border-radius: var(--radius-full); padding: 0.375rem 0.75rem;
  font-size: 0.75rem; font-weight: 600; color: rgba(22, 35, 46, 0.6);
  transition: background-color var(--transition-fast), color var(--transition-fast);
}
.view-toggle button.active { background: var(--color-blueprint); color: var(--color-paper); }

.selector-stage {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 3;
  border: 1px solid rgba(22, 35, 46, 0.1);
  border-radius: var(--radius-lg);
  background: var(--color-white);
  overflow: visible;
}
.selector-stage svg.scene { position: absolute; inset: 0; width: 100%; height: 100%; }

.zone-shape { fill: none; stroke: rgba(22, 35, 46, 0.4); stroke-width: 1.5; transition: stroke var(--transition-fast), fill var(--transition-fast), stroke-width var(--transition-fast); }
.zone-shape.zone-active { stroke: var(--color-brass); fill: rgba(184, 134, 46, 0.15); stroke-width: 2.25; }

.zone-hit {
  position: absolute;
  background: transparent;
  border: none;
  padding: 0;
  cursor: pointer;
  border-radius: var(--radius-sm);
}
.zone-hit:focus-visible { outline: 2px solid var(--color-brass); outline-offset: 2px; }
.zone-hit-btn {
  position: relative;
  display: grid;
  place-items: center;
  color: var(--color-ink);
}
.zone-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: calc(100% - 0.5rem);
  padding: 0.3rem 0.55rem;
  border: 1px solid rgba(43, 76, 126, 0.22);
  border-radius: var(--radius-full);
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 4px 14px rgba(22, 35, 46, 0.14);
  color: var(--color-blueprint);
  font-size: clamp(0.5625rem, 1.7vw, 0.6875rem);
  font-weight: 700;
  line-height: 1.1;
  text-align: center;
  white-space: normal;
  pointer-events: none;
  transition: transform var(--transition-fast), background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);
}
.zone-label-room {
  padding: 0.45rem 0.8rem;
  border-color: rgba(184, 134, 46, 0.45);
  font-size: clamp(0.75rem, 2vw, 0.9375rem);
  letter-spacing: 0.02em;
}
.zone-hit:hover .zone-label,
.zone-hit-btn:focus-visible .zone-label {
  transform: translateY(-2px);
  border-color: var(--color-brass);
  background: var(--color-ink);
  color: var(--color-paper);
}

.zone-tip {
  position: absolute;
  left: 50%;
  top: 100%;
  transform: translateX(-50%);
  margin-top: 0.5rem;
  z-index: 30;
  width: max-content;
  max-width: 220px;
  background: var(--color-ink);
  border-radius: var(--radius);
  padding: 0.5rem 0.75rem;
  box-shadow: var(--shadow-lg);
  display: none;
}
.zone-tip.open { display: block; }
.zone-tip p { color: var(--color-paper); font-size: 0.75rem; font-weight: 600; }
.zone-tip-chips { margin-top: 0.375rem; display: flex; flex-wrap: wrap; gap: 0.375rem; }
.zone-tip-chips button {
  border: none; cursor: pointer; border-radius: var(--radius-full);
  background: rgba(243, 245, 244, 0.1); color: var(--color-paper);
  font-size: 0.6875rem; padding: 0.25rem 0.5rem;
}
.zone-tip-chips button:hover { background: var(--color-brass); color: var(--color-ink); }

.selector-fallback { margin-top: 1.5rem; }
.selector-fallback-label { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: rgba(22, 35, 46, 0.4); margin-bottom: 0.75rem; }
.category-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem; }
@media (min-width: 640px) { .category-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 900px) { .category-grid { grid-template-columns: repeat(6, 1fr); } }

.category-tile {
  display: flex; flex-direction: column; align-items: center; gap: 0.375rem;
  border: 1px solid rgba(22, 35, 46, 0.1); background: var(--color-white);
  border-radius: var(--radius-lg); padding: 0.75rem 0.5rem; text-align: center;
  cursor: pointer; transition: border-color var(--transition-fast), background-color var(--transition-fast);
}
.category-tile:hover, .category-tile:focus-visible { border-color: var(--color-blueprint); background: rgba(43, 76, 126, 0.05); }
.category-tile svg { width: 18px; height: 18px; color: var(--color-blueprint); }
.category-tile span { font-size: 0.6875rem; line-height: 1.25; color: rgba(22, 35, 46, 0.7); }

/* ==========================================================================
   Wizard (Project Price Snapshot builder)
   ========================================================================== */

.wizard-shell { max-width: 42rem; margin-inline: auto; }

.wizard-progress { margin-bottom: 1.5rem; }
.wizard-progress-head { display: flex; justify-content: space-between; font-family: var(--font-mono); font-size: 0.75rem; color: rgba(22, 35, 46, 0.6); margin-bottom: 0.5rem; }
.wizard-progress-track { height: 6px; border-radius: var(--radius-full); background: var(--color-chalk); overflow: hidden; }
.wizard-progress-fill { height: 100%; background: var(--color-blueprint); border-radius: var(--radius-full); transition: width var(--transition); }

/* Live-updating estimate panel — shown once enough answers exist to
   calculate a rough range, updates as the homeowner keeps answering
   questions. This is the "we're building your report as you go" moment. */
.live-panel { border: 1px solid rgba(22, 35, 46, 0.1); border-radius: var(--radius-lg); background: var(--color-white); padding: 1rem 1.25rem; margin-bottom: 1.5rem; display: none; }
.live-panel.visible { display: block; }
.live-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; flex-wrap: wrap; }
.live-panel-range { font-family: var(--font-mono); font-size: 1.375rem; color: var(--color-ink); margin-top: 0.25rem; }
.live-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--color-blueprint); display: inline-block; }

.wizard-card { background: var(--color-white); border: 1px solid rgba(22, 35, 46, 0.1); border-radius: var(--radius-lg); padding: 1.5rem; }
@media (min-width: 640px) { .wizard-card { padding: 2rem; } }

.wizard-step { display: none; }
.wizard-step.active { display: block; animation: fadeIn var(--transition); }

@keyframes fadeIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }

.field { margin-bottom: 1.25rem; }
.field label { display: block; margin-bottom: 0.375rem; font-size: 0.875rem; font-weight: 600; }
.field-hint { font-size: 0.75rem; color: rgba(22, 35, 46, 0.5); margin-top: 0.25rem; }
.field-error { font-size: 0.75rem; color: var(--color-signal); margin-top: 0.375rem; display: none; }
.field.has-error .field-error { display: block; }
.field.has-error input, .field.has-error select, .field.has-error textarea { border-color: var(--color-signal); }

.field-row { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 560px) { .field-row-2 { grid-template-columns: 1fr 1fr; } .field-row-3 { grid-template-columns: 2fr 1fr 1fr; } }

input[type="text"], input[type="tel"], input[type="email"], input[type="number"], select, textarea {
  width: 100%;
  border: 1px solid rgba(22, 35, 46, 0.2);
  background: var(--color-white);
  border-radius: var(--radius);
  padding: 0.65rem 0.75rem;
  font-size: 0.9375rem;
  color: var(--color-ink);
}
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--color-blueprint); }
textarea { resize: vertical; min-height: 5rem; }

.option-cards { display: grid; grid-template-columns: 1fr; gap: 0.5rem; }
.option-cards.cols-2 { grid-template-columns: repeat(2, 1fr); }
.option-cards.cols-3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 480px) { .option-cards.cols-3 { grid-template-columns: repeat(2, 1fr); } }

.option-card {
  display: flex; align-items: center; justify-content: space-between; gap: 0.5rem;
  border: 1px solid rgba(22, 35, 46, 0.15); border-radius: var(--radius);
  padding: 0.75rem 1rem; font-size: 0.875rem; text-align: left; cursor: pointer;
  background: var(--color-white); transition: border-color var(--transition-fast), background-color var(--transition-fast);
  font-weight: 400;
}
.option-card:hover { border-color: rgba(22, 35, 46, 0.3); }
.option-card.selected { border-color: var(--color-blueprint); background: rgba(43, 76, 126, 0.05); }
.option-card .hint { display: block; font-size: 0.75rem; color: rgba(22, 35, 46, 0.5); }
.option-card .check { width: 16px; height: 16px; color: var(--color-blueprint); flex-shrink: 0; visibility: hidden; }
.option-card.selected .check { visibility: visible; }

/* Real, form-native radio/checkbox backing every option card — visually
   hidden but still in the accessibility tree and still submitted with the
   form. The card look comes entirely from the adjacent <label>, styled via
   the :checked sibling selector, so selection state works correctly even
   if JavaScript never runs. */
.option-card-wrap { position: relative; }
.option-card-input {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.option-card-input:checked + .option-card { border-color: var(--color-blueprint); background: rgba(43, 76, 126, 0.05); }
.option-card-input:checked + .option-card .check { visibility: visible; }
.option-card-input:focus-visible + .option-card { outline: 2px solid var(--color-brass); outline-offset: 2px; }

.checkbox-row { display: flex; align-items: center; gap: 0.625rem; font-size: 0.875rem; cursor: pointer; }
.checkbox-row input { width: 1rem; height: 1rem; accent-color: var(--color-blueprint); }

.category-select-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem; }
@media (min-width: 560px) { .category-select-grid { grid-template-columns: repeat(3, 1fr); } }
.category-select-tile {
  display: flex; flex-direction: column; align-items: center; gap: 0.4rem;
  border: 1px solid rgba(22, 35, 46, 0.15); border-radius: var(--radius);
  padding: 0.85rem 0.5rem; cursor: pointer; text-align: center; background: var(--color-white);
}
.category-select-tile svg { width: 20px; height: 20px; color: var(--color-blueprint); }
.category-select-tile span { font-size: 0.75rem; color: rgba(22, 35, 46, 0.8); }
.category-select-input:checked + .category-select-tile { border-color: var(--color-blueprint); background: rgba(43, 76, 126, 0.05); }
.category-select-input:focus-visible + .category-select-tile { outline: 2px solid var(--color-brass); outline-offset: 2px; }

.wizard-nav { display: flex; align-items: center; justify-content: space-between; margin-top: 1.5rem; }

/* Progress / "building your report" transitional screen */
.building-report { text-align: center; padding: 2.5rem 1rem; }
.building-report .spinner {
  width: 40px; height: 40px; margin-inline: auto;
  border: 3px solid var(--color-chalk); border-top-color: var(--color-blueprint);
  border-radius: 50%; animation: spin 0.8s linear infinite;
}
@media (prefers-reduced-motion: reduce) { .building-report .spinner { animation-duration: 2.4s; } }
@keyframes spin { to { transform: rotate(360deg); } }
.building-report h2 { margin-top: 1.25rem; font-size: 1.25rem; }
.building-report-list { margin-top: 1.5rem; display: flex; flex-direction: column; gap: 0.625rem; text-align: left; max-width: 20rem; margin-inline: auto; }
.building-report-item { display: flex; align-items: center; gap: 0.625rem; font-size: 0.875rem; color: rgba(22, 35, 46, 0.4); transition: color var(--transition); }
.building-report-item .dot { width: 8px; height: 8px; border-radius: 50%; border: 1.5px solid rgba(22, 35, 46, 0.3); flex-shrink: 0; transition: all var(--transition); }
.building-report-item.done { color: var(--color-ink); }
.building-report-item.done .dot { background: var(--color-blueprint); border-color: var(--color-blueprint); }

/* Reveal screen */
.reveal-banner { text-align: center; margin-bottom: 1.5rem; }
.reveal-banner .badge { margin-bottom: 0.75rem; }
.missing-list, .questions-list { display: flex; flex-direction: column; gap: 0.5rem; margin-top: 0.75rem; }
.missing-list li, .questions-list li { font-size: 0.875rem; color: rgba(22, 35, 46, 0.7); display: flex; gap: 0.5rem; }
.missing-list li::before { content: '—'; color: var(--color-brass); flex-shrink: 0; }
.questions-list li::before { content: counter(qnum) '.'; counter-increment: qnum; font-family: var(--font-mono); color: var(--color-blueprint); flex-shrink: 0; }
.questions-list { counter-reset: qnum; }

.consent-box { border: 1px solid rgba(22, 35, 46, 0.15); border-radius: var(--radius); padding: 1rem; }
.consent-box + .consent-box { margin-top: 0.75rem; }
.consent-box label { display: flex; align-items: flex-start; gap: 0.75rem; font-size: 0.875rem; color: rgba(22, 35, 46, 0.8); cursor: pointer; font-weight: 400; margin: 0; }
.consent-box input { width: 1rem; height: 1rem; margin-top: 0.2rem; flex-shrink: 0; accent-color: var(--color-blueprint); }

/* Photo upload */
.photo-drop {
  display: flex; align-items: center; justify-content: center; gap: 0.5rem;
  border: 2px dashed rgba(22, 35, 46, 0.2); border-radius: var(--radius-lg);
  padding: 1.5rem 1rem; text-align: center; font-size: 0.875rem; color: rgba(22, 35, 46, 0.5);
  cursor: pointer; transition: border-color var(--transition-fast), color var(--transition-fast);
}
.photo-drop:hover { border-color: var(--color-blueprint); color: var(--color-blueprint); }
.photo-drop input { display: none; }
.photo-preview-grid { margin-top: 0.75rem; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem; }
@media (min-width: 480px) { .photo-preview-grid { grid-template-columns: repeat(6, 1fr); } }
.photo-preview { position: relative; aspect-ratio: 1; border-radius: var(--radius); overflow: hidden; border: 1px solid rgba(22, 35, 46, 0.1); }
.photo-preview img { width: 100%; height: 100%; object-fit: cover; }
.photo-preview button {
  position: absolute; top: 4px; right: 4px; width: 18px; height: 18px;
  border-radius: 50%; border: none; background: rgba(22, 35, 46, 0.75); color: var(--color-paper);
  display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 11px; line-height: 1;
}

/* ==========================================================================
   Calculators (roofing / concrete tools)
   ========================================================================== */

.calc-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 900px) { .calc-grid { grid-template-columns: 1fr 1fr; } }
.calc-result-row { display: flex; align-items: baseline; justify-content: space-between; padding-block: 0.65rem; }
.calc-result-row + .calc-result-row { border-top: 1px solid rgba(22, 35, 46, 0.06); }
.calc-result-value { font-family: var(--font-mono); font-size: 1.125rem; }

/* ==========================================================================
   Legal pages
   ========================================================================== */

.draft-banner {
  display: flex; align-items: flex-start; gap: 0.75rem;
  border: 1px solid rgba(178, 59, 46, 0.3); background: rgba(178, 59, 46, 0.05);
  border-radius: var(--radius); padding: 1rem;
}
.draft-banner svg { width: 18px; height: 18px; color: var(--color-signal); flex-shrink: 0; margin-top: 0.15rem; }
.draft-banner strong { color: var(--color-signal); }

.legal-section { margin-top: 2rem; }
.legal-section h2 { font-size: 1.125rem; }
.legal-section p { margin-top: 0.5rem; font-size: 0.9375rem; color: rgba(22, 35, 46, 0.7); line-height: 1.65; }
.legal-section p + p { margin-top: 0.75rem; }

/* ==========================================================================
   Error / 404 / thank-you pages
   ========================================================================== */

.status-page { text-align: center; padding-block: 5rem; }
.status-page .status-code { font-family: var(--font-mono); font-size: 0.875rem; color: var(--color-brass); }
.status-page h1 { margin-top: 0.75rem; font-size: 2rem; }
.status-page p { margin-top: 0.75rem; color: rgba(22, 35, 46, 0.6); max-width: 32rem; margin-inline: auto; }
.status-page .btn { margin-top: 2rem; }

.confirm-icon-wrap {
  width: 56px; height: 56px; border-radius: 50%;
  background: rgba(43, 76, 126, 0.1); display: flex; align-items: center; justify-content: center;
  margin-inline: auto;
}
.confirm-icon-wrap svg { width: 28px; height: 28px; color: var(--color-blueprint); }

.next-steps-list { margin-top: 1rem; display: flex; flex-direction: column; gap: 0.75rem; text-align: left; }
.next-steps-list li { font-size: 0.9375rem; color: rgba(22, 35, 46, 0.7); display: flex; gap: 0.75rem; }
.next-steps-list .num {
  font-family: var(--font-mono); font-size: 0.75rem; color: var(--color-brass);
  flex-shrink: 0; width: 1.25rem;
}

/* ==========================================================================
   Reduced motion — global fallback
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Prevent any accidental horizontal scroll from wide inline content */
img, table, pre { max-width: 100%; }
table { width: 100%; border-collapse: collapse; }
