/* ============================================================================
   PoolFisher — SHARED COMPONENTS (built once, used everywhere)
   Direction B "Field Ops" · P2-D
   Source: DESIGN/components.md

   Every colour / size / radius / spacing value is a token from tokens.css.
   Screen files may only lay these out and set widths — no one-off chrome here.
   ========================================================================= */

/* ---------- Reset / base chassis ---------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}

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

body.page-chassis {
  margin: 0;
  min-height: 100vh;
  font-family: var(--font-body);
  font-size: var(--fs-body);
  font-weight: var(--fw-body);
  line-height: var(--lh-body);
  color: var(--text);
  background: var(--page);
}

/* Condensed display utility */
.cond,
h1, h2, h3,
.sect-label,
.dash-title,
.terr-zip,
.listhead,
.lawline,
.rule-line,
.wordmark,
.tab,
.fchip,
.badge,
.chip,
.status-segment button,
.btn-primary,
.btn-secondary,
button.btn-primary,
button.btn-secondary,
.capnum,
.roi-label,
.roi-figure,
.roi-multiple,
.money-label,
.money-figure,
.kicker,
.pricing-card-label,
.pricing-card-amount,
.price-band-label,
.price-band-amount,
.faq-item summary,
.faq-row summary,
.zip-code,
.mcard .mv,
.mcard .ml,
.fun .fn,
.tour-card h2,
.lead-row-link .loc,
.census-sample .loc,
.empty-block strong,
.empty-state-block strong,
.empty-state h2 {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  text-transform: var(--case-display);
}

a {
  color: var(--orange);
}

.muted {
  color: var(--steel-2);
  font-size: var(--fs-body-2);
  line-height: var(--lh-body);
}

.mono-meta {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-4);
  color: var(--steel-2);
  line-height: var(--lh-mono);
  text-transform: uppercase;
  letter-spacing: var(--track-tight);
}

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

/* ---------- 1. Buttons ---------- */
.btn-primary,
.btn-secondary,
button.btn-primary,
button.btn-secondary,
a.btn-primary,
a.btn-secondary {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: var(--touch-button);
  padding: 0 var(--sp-13);
  border-radius: var(--radius-lg);
  border: 0;
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-action);
  letter-spacing: var(--track-badge);
  text-transform: var(--case-display);
  text-decoration: none;
  cursor: pointer;
  box-sizing: border-box;
  margin-bottom: var(--stack-control);
}

.btn-primary,
button.btn-primary,
a.btn-primary {
  background: var(--orange);
  color: var(--text-on-accent);
}

.btn-primary:active:not(:disabled),
button.btn-primary:active:not(:disabled) {
  filter: brightness(0.92);
}

.btn-secondary,
button.btn-secondary,
a.btn-secondary {
  background: var(--panel-3);
  color: var(--text);
  border: var(--bw-control) solid var(--steel);
}

.btn-secondary:active:not(:disabled),
button.btn-secondary:active:not(:disabled) {
  border-color: var(--steel-2);
}

.btn-disabled,
button.btn-disabled:disabled,
button:disabled.btn-primary,
button:disabled.btn-secondary,
.btn-primary:disabled,
.btn-secondary:disabled {
  background: var(--disabled-bg);
  color: var(--disabled-fg);
  border: var(--bw-control) solid var(--disabled-border);
  cursor: not-allowed;
  filter: none;
  opacity: 1;
}

/* Compact secondary in chrome (still ≥ touch floor when alone) */
.app-bar .btn-secondary,
.app-bar button.btn-secondary,
.help-tour-btn {
  width: auto;
  min-height: var(--touch-min);
  margin-bottom: 0;
  padding: 0 var(--sp-10);
  font-size: var(--fs-nav);
  letter-spacing: var(--track-nav);
}

/* ---------- 2. Verification badges ---------- */
.badge {
  display: inline-block;
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-badge);
  letter-spacing: var(--track-badge);
  padding: var(--sp-2) var(--sp-5);
  border-radius: var(--radius-sm);
  text-transform: var(--case-display);
  white-space: nowrap;
  border: var(--bw-hair) solid transparent;
  background: var(--badge-probable-bg);
  color: var(--badge-probable-fg);
  border-color: var(--badge-probable-border);
  margin: 0;
}

.badge.b-prob {
  background: var(--badge-probable-bg);
  color: var(--badge-probable-fg);
  border-color: var(--badge-probable-border);
}

.badge.b-ver {
  background: var(--badge-verified-bg);
  color: var(--badge-verified-fg);
  border-color: var(--badge-verified-border);
}

.badge.b-cert {
  background: var(--badge-certified-bg);
  color: var(--badge-certified-fg);
  border-color: var(--badge-certified-border);
}

/* ---------- 3. Status chips ---------- */
.chip,
.status-chip {
  display: inline-block;
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-badge);
  letter-spacing: var(--track-badge);
  padding: var(--sp-2) var(--sp-6);
  border-radius: var(--radius-pill);
  text-transform: var(--case-display);
  white-space: nowrap;
  border: var(--bw-hair) solid var(--chip-new-border);
  background: var(--chip-new-bg);
  color: var(--chip-new-fg);
}

.chip.c-new { background: var(--chip-new-bg); color: var(--chip-new-fg); border-color: var(--chip-new-border); }
.chip.c-res { background: var(--chip-researching-bg); color: var(--chip-researching-fg); border-color: var(--chip-researching-border); }
.chip.c-mail { background: var(--chip-mailed-bg); color: var(--chip-mailed-fg); border-color: var(--chip-mailed-border); }
.chip.c-con { background: var(--chip-contacted-bg); color: var(--chip-contacted-fg); border-color: var(--chip-contacted-border); }
.chip.c-won { background: var(--chip-won-bg); color: var(--chip-won-fg); border-color: var(--chip-won-border); }
.chip.c-dead { background: var(--chip-dead-bg); color: var(--chip-dead-fg); border-color: var(--chip-dead-border); }

/* Selectable status segment (lead detail) */
.status-segment {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gap-meta);
  margin: 0 0 var(--gutter-section-y);
  min-height: var(--touch-min);
  align-items: center;
}

.status-segment button {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-badge);
  letter-spacing: var(--track-badge);
  text-transform: var(--case-display);
  min-height: var(--touch-chip-status);
  padding: 0 var(--sp-9);
  border-radius: var(--radius-pill);
  border: var(--bw-hair) solid var(--steel);
  background: var(--panel-2);
  color: var(--steel-2);
  cursor: pointer;
  opacity: var(--opacity-inactive);
}

.status-segment button.current {
  opacity: 1;
  box-shadow: var(--focus-ring);
}

.status-segment button.allowed {
  opacity: 0.85;
  cursor: pointer;
}

.status-segment button.allowed:hover {
  opacity: 1;
}

.status-segment button:disabled:not(.current):not(.allowed) {
  cursor: default;
}

.status-segment button.chip-new.current,
.status-segment button.chip-new.allowed {
  background: var(--chip-new-bg);
  color: var(--chip-new-fg);
  border-color: var(--chip-new-border);
}
.status-segment button.chip-researching.current,
.status-segment button.chip-researching.allowed {
  background: var(--chip-researching-bg);
  color: var(--chip-researching-fg);
  border-color: var(--chip-researching-border);
}
.status-segment button.chip-mailed.current,
.status-segment button.chip-mailed.allowed {
  background: var(--chip-mailed-bg);
  color: var(--chip-mailed-fg);
  border-color: var(--chip-mailed-border);
}
.status-segment button.chip-contacted.current,
.status-segment button.chip-contacted.allowed {
  background: var(--chip-contacted-bg);
  color: var(--chip-contacted-fg);
  border-color: var(--chip-contacted-border);
}
.status-segment button.chip-won.current,
.status-segment button.chip-won.allowed {
  background: var(--chip-won-bg);
  color: var(--chip-won-fg);
  border-color: var(--chip-won-border);
}
.status-segment button.chip-dead.current,
.status-segment button.chip-dead.allowed {
  background: var(--chip-dead-bg);
  color: var(--chip-dead-fg);
  border-color: var(--chip-dead-border);
}

/* List-row quick status actions (same chip vocabulary) */
.lead-row-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  padding: 0 var(--gutter-screen) var(--sp-6);
}

.lead-row-actions button.qa {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-micro);
  letter-spacing: var(--track-chip);
  text-transform: var(--case-display);
  padding: var(--sp-2) var(--sp-4);
  min-height: var(--touch-chip-status);
  border-radius: var(--radius-pill);
  border: var(--bw-hair) solid var(--steel);
  background: var(--panel-2);
  color: var(--steel-2);
  cursor: pointer;
}

.lead-row-actions button.qa:hover {
  border-color: var(--orange);
  color: var(--orange);
}

.row-undo {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-nav);
  letter-spacing: var(--track-nav);
  text-transform: var(--case-display);
  color: var(--orange);
  background: none;
  border: 0;
  cursor: pointer;
  text-decoration: underline;
  padding: 0 var(--sp-2);
  min-height: var(--touch-min);
}

/* ---------- 4. List row ---------- */
.lead-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.lead-row {
  position: relative;
  background: var(--panel);
  border-bottom: var(--bw-hair) solid var(--panel-3);
  min-height: var(--touch-row);
}

.lead-row:first-child {
  border-top: 0;
}

.lead-row-link {
  display: flex;
  align-items: center;
  gap: var(--gap-row);
  min-height: var(--touch-row);
  padding: var(--gutter-row-y) var(--gutter-screen);
  color: inherit;
  text-decoration: none;
}

.lead-row-link:active,
.lead-row:active {
  background: var(--panel-2);
}

.lead-row-link .rt,
.lead-row-link .row-thumb {
  flex: 0 0 auto;
  width: var(--thumb-size);
  height: var(--thumb-size);
  border-radius: var(--radius-md);
  object-fit: cover;
  border: var(--bw-hair) solid var(--steel);
  filter: var(--img-thumb-filter);
  background: var(--map-bed);
}

.lead-row-link .rm {
  flex: 1 1 auto;
  min-width: 0;
}

.lead-row-link .loc {
  font-size: var(--fs-item);
  letter-spacing: var(--track-address);
  line-height: var(--lh-item);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--text);
}

.lead-row-link .meta {
  display: flex;
  align-items: center;
  gap: var(--gap-meta);
  margin-top: var(--sp-3);
  flex-wrap: wrap;
  font-size: inherit;
  color: inherit;
}

.lead-row-link .sc,
.sc {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-2);
  color: var(--steel-2);
}

.lead-row-link .sc b,
.sc b {
  color: var(--text-max);
  font-weight: var(--fw-body-strong);
}

.lead-row-link .chev {
  flex: 0 0 auto;
  color: var(--steel);
  font-size: var(--fs-display-1);
  font-weight: var(--fw-body-strong);
  line-height: 1;
}

/* Generic list anchors (auth/zip etc.) */
.lead-list a {
  color: inherit;
  text-decoration: none;
}

/* ---------- 5. Filter chips ---------- */
.filters {
  display: flex;
  gap: var(--gap-inline);
  overflow-x: auto;
  padding: var(--sp-9) var(--gutter-screen);
  background: var(--chassis);
  border-bottom: var(--bw-hair) solid var(--panel-3);
  -webkit-overflow-scrolling: touch;
  min-height: var(--touch-rail);
  scrollbar-width: none;
}

.filters::-webkit-scrollbar {
  display: none;
}

.fchip {
  flex: 0 0 auto;
  min-height: var(--touch-chip-filter);
  display: flex;
  align-items: center;
  gap: var(--gap-meta);
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--steel);
  color: var(--steel-2);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-chip);
  letter-spacing: var(--track-chip);
  padding: 0 var(--sp-10);
  border-radius: var(--radius-md);
  text-transform: var(--case-display);
  white-space: nowrap;
  cursor: pointer;
}

.fchip .n {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-3);
  color: var(--text-max);
  opacity: var(--opacity-count);
  font-weight: var(--fw-body);
  margin-left: 0;
}

.fchip.on {
  background: var(--orange);
  border-color: var(--orange);
  color: var(--text-on-accent);
}

.fchip.on .n {
  color: var(--text-on-accent);
  opacity: 0.8;
}

.fchip:active:not(.on) {
  border-color: var(--steel-2);
}

.fchip.is-zero,
.fchip[data-zero="1"] {
  opacity: var(--opacity-inactive);
  pointer-events: none;
}

.filter-sep {
  flex: 0 0 1px;
  width: 1px;
  background: var(--panel-3);
  margin: var(--sp-2) var(--sp-1);
  align-self: stretch;
}

/* ---------- 6. Map pin set / map bed ---------- */
#map,
.detail-map {
  width: 100%;
  height: var(--map-height);
  min-height: var(--map-height);
  background: var(--map-bed);
  border: 0;
  border-radius: 0;
}

.map-section {
  position: relative;
  background: var(--map-bed);
  border-bottom: var(--bw-hair) solid var(--panel-3);
}

/* Leaflet tiles under Field Ops scrim treatment */
.map-section .leaflet-container,
.detail-map.leaflet-container {
  background: var(--map-bed);
  font: inherit;
}

.map-section .leaflet-tile-pane {
  filter: var(--img-map-filter);
}

.map-legend {
  position: absolute;
  bottom: var(--sp-6);
  left: var(--sp-8);
  z-index: 450;
  display: flex;
  gap: var(--sp-8);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-micro);
  letter-spacing: var(--track-chip);
  text-transform: var(--case-display);
  background: var(--chassis);
  border: var(--bw-hair) solid var(--steel);
  padding: var(--sp-3) var(--sp-6);
  border-radius: var(--radius-sm);
  color: var(--steel-2);
  margin: 0;
}

.map-legend span {
  color: var(--steel-2);
}

.pin-swatch {
  display: inline-block;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  margin-right: var(--sp-2);
  vertical-align: middle;
  border: var(--pin-ring-width) solid var(--pin-ring);
  box-shadow: var(--shadow-pin);
}

.pin-certified { background: var(--pin-certified); width: 11px; height: 11px; border-width: var(--pin-ring-width-certified); }
.pin-verified { background: var(--pin-verified); }
.pin-probable { background: var(--pin-probable); }

/* Leaflet circle markers get colours from JS via CSS variables */
.pf-pin {
  border-radius: 50%;
  box-shadow: var(--shadow-pin);
}

.map-note {
  display: none; /* rule line carries R1; keep markup for tests if present */
}

.map-unavailable {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--map-bed);
  z-index: 500;
  pointer-events: none;
}

.map-unavailable[hidden] {
  display: none !important;
}

.map-unavailable .mono-meta {
  color: var(--steel-2);
  font-size: var(--fs-mono-4);
  letter-spacing: var(--track-item);
}

/* ---------- 7. Evidence card ---------- */
.evidence-card {
  margin: 0 0 var(--gutter-section-y);
  padding: var(--gutter-section-y) var(--gutter-screen);
  border: 0;
  border-bottom: var(--bw-hair) solid var(--panel-3);
  border-radius: 0;
  background: var(--panel);
}

.evidence-card h3 {
  margin: 0 0 var(--sp-7);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  color: var(--steel-2);
}

.evidence-frame {
  position: relative;
  display: block;
  max-width: 100%;
  background: var(--evidence-bed);
  border: var(--bw-hair) solid var(--steel);
  border-radius: var(--radius-md);
  overflow: hidden;
}

.evidence-frame img {
  display: block;
  max-width: 100%;
  width: 100%;
  height: auto;
  vertical-align: top;
}

.evidence-bbox {
  position: absolute;
  border: var(--bw-marker) solid var(--orange);
  border-radius: var(--radius-xs);
  box-shadow: var(--shadow-detection);
  pointer-events: none;
}

.evidence-empty {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-5);
  color: var(--steel-2);
  padding: var(--sp-15);
  text-align: center;
  text-transform: uppercase;
  background: var(--evidence-bed);
  border: var(--bw-hair) solid var(--steel);
  border-radius: var(--radius-md);
}

/* ---------- 8. Points ledger ---------- */
.points-ledger {
  margin: 0 0 var(--gutter-section-y);
  padding: var(--gutter-section-y) var(--gutter-screen);
  background: var(--chassis);
  border-bottom: var(--bw-hair) solid var(--panel-3);
}

.points-ledger h3 {
  margin: 0 0 var(--sp-7);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  color: var(--steel-2);
}

.points-ledger table {
  width: 100%;
  border-collapse: collapse;
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-md);
  overflow: hidden;
  font-size: var(--fs-item-tight);
}

.points-ledger th,
.points-ledger td {
  text-align: left;
  padding: var(--sp-8) var(--sp-9);
  border-bottom: var(--bw-hair) solid var(--panel-3);
  background: var(--panel-2);
  color: var(--text);
}

.points-ledger th {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  text-transform: var(--case-display);
  color: var(--steel-2);
  background: var(--panel-3);
}

.points-ledger td:nth-child(2) {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-title-1);
  color: var(--orange);
  text-align: right;
}

.points-ledger tr:last-child th,
.points-ledger tr:last-child td {
  border-bottom: 0;
}

/* ---------- 9. Multi-vintage strip (structure ready) ---------- */
.vintage-strip {
  display: grid;
  grid-template-columns: repeat(var(--vintage-columns), 1fr);
  gap: var(--gap-vintage);
}

.vintage-strip img {
  width: 100%;
  display: block;
  border: var(--bw-hair) solid var(--steel);
  border-radius: var(--radius-sm);
}

/* ---------- 10. Stat tile ---------- */
.metergrid {
  display: flex;
  gap: var(--gap-tile);
  flex-wrap: wrap;
}

.mcard {
  flex: 1 1 6rem;
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-md);
  padding: var(--sp-8);
}

.mcard .mv {
  font-size: var(--fs-display-1);
  line-height: var(--lh-display);
  color: var(--orange);
  letter-spacing: var(--track-tight);
}

.mcard .ml {
  font-size: var(--fs-micro);
  letter-spacing: var(--track-badge);
  color: var(--steel-2);
  margin-top: var(--sp-3);
  line-height: var(--lh-caption);
}

/* ---------- 11. Empty state ---------- */
.empty-block,
.empty-state-block,
.empty-state {
  border: var(--bw-strong) dashed var(--steel);
  border-radius: var(--radius-lg);
  padding: var(--sp-15) var(--sp-13);
  text-align: center;
  list-style: none;
  margin: var(--sp-6) 0;
  background: transparent;
}

.empty-block strong,
.empty-state-block strong,
.empty-state h2 {
  display: block;
  margin: 0 0 var(--sp-4);
  font-size: var(--fs-title-2);
  letter-spacing: var(--track-item);
  color: var(--steel-2);
}

.empty-block p,
.empty-state-block p,
.empty-state .muted,
.empty-next {
  font-size: var(--fs-body-3);
  color: var(--steel-2);
  margin: var(--sp-4) 0 0;
}

.empty-state .btn-primary,
.empty-state .btn-secondary {
  margin-top: var(--sp-10);
}

/* ---------- 12. Loading skeleton ---------- */
@keyframes pf-skel-shimmer {
  0% { background-position: 120% 0; }
  100% { background-position: -120% 0; }
}

.skel-bar,
.skel-lines i,
.skel-thumb {
  background: var(--grad-skeleton);
  background-size: var(--motion-skeleton-travel) 100%;
  animation: pf-skel-shimmer var(--motion-skeleton-duration) var(--motion-skeleton-timing) infinite;
}

.skel-bar {
  display: block;
  height: 13px;
  border-radius: var(--radius-xs);
  margin: var(--sp-3) 0;
  max-width: 100%;
}

.skel-bar-sm { width: 40%; }
.skel-bar-md { width: 60%; }
.skel-bar-lg { width: 85%; height: 18px; }

.skel-block {
  padding: var(--sp-6) 0;
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-lg);
  padding: var(--sp-10);
  margin-bottom: var(--sp-6);
}

.lead-skeleton {
  display: flex;
  align-items: center;
  gap: var(--gap-row);
  padding: var(--gutter-row-y) var(--gutter-screen);
  border-bottom: var(--bw-hair) solid var(--panel-3);
  min-height: var(--touch-row);
  background: var(--panel);
  color: transparent !important;
  margin: 0;
  border-radius: 0;
}

.lead-skeleton:first-child {
  border-top: 0;
}

.skel-thumb {
  width: var(--thumb-size);
  height: var(--thumb-size);
  border-radius: var(--radius-md);
  flex-shrink: 0;
}

.skel-lines {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
}

.skel-lines i {
  display: block;
  height: 13px;
  border-radius: var(--radius-xs);
}

.skel-lines i:first-child { width: 70%; }
.skel-lines i:last-child { width: 45%; }

/* ---------- 13. Toast ---------- */
.undo-toast,
.toast {
  display: flex;
  align-items: center;
  gap: var(--sp-10);
  min-height: var(--touch-min);
  background: var(--panel);
  color: var(--text);
  border-left: var(--bw-callout) solid var(--orange);
  border-radius: var(--radius-xl);
  padding: var(--sp-12) var(--sp-13);
  margin: 0 0 var(--gutter-section-y);
  font-size: var(--fs-body-3);
}

.undo-toast.toast-warn,
.toast.toast-warn {
  border-left-color: var(--yellow);
}

.undo-toast button,
.toast button {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-chip);
  letter-spacing: var(--track-chip);
  text-transform: var(--case-display);
  background: var(--orange);
  color: var(--text-on-accent);
  border: 0;
  border-radius: var(--radius-lg);
  padding: var(--sp-4) var(--sp-8);
  min-height: var(--touch-min);
  cursor: pointer;
}

.undo-toast .muted {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-6);
  color: var(--steel-2);
}

/* ---------- 14. Dialog (tour overlay reuses dialog tokens) ---------- */
.tour-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding: var(--sp-13);
  /* Flat scrim using chassis (no free-floating rgba; see STATE quiet choices) */
  background: var(--map-bed);
}

.tour-overlay[hidden] {
  display: none !important;
}

@media (min-width: 640px) {
  .tour-overlay {
    align-items: center;
  }
}

.tour-card {
  width: min(28rem, 100%);
  max-height: min(90vh, 36rem);
  overflow: auto;
  background: var(--panel);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-2xl);
  padding: var(--sp-13);
  box-shadow: var(--shadow-none);
}

.tour-step-label {
  margin: 0 0 var(--sp-3);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  text-transform: var(--case-display);
  color: var(--steel-2);
}

.tour-card h2 {
  margin: 0 0 var(--sp-8);
  font-size: var(--fs-item-sub);
  letter-spacing: var(--track-item);
  color: var(--orange);
}

.tour-body p {
  margin: 0 0 var(--sp-6);
  font-size: var(--fs-body-3);
  color: var(--text);
  text-transform: none;
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  letter-spacing: normal;
}

.tour-badge-list {
  margin: 0 0 var(--sp-8);
  padding-left: var(--sp-13);
  color: var(--text);
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  text-transform: none;
}

.tour-badge-list li {
  margin: var(--sp-2) 0;
}

.tour-actions {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: var(--sp-10);
}

.tour-actions .btn-primary,
.tour-actions .btn-secondary {
  flex: none;
  width: 100%;
}

/* ---------- 15. Cap meter (R3 pacing) ---------- */
.capnum {
  font-size: var(--fs-display-4);
  letter-spacing: var(--track-address);
  margin-bottom: var(--sp-4);
  color: var(--text);
}

.capnum b {
  color: var(--orange);
}

.capbar {
  height: var(--cap-bar-height);
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--steel);
  border-radius: var(--radius-sm);
  overflow: hidden;
  display: flex;
}

.capbar i {
  display: block;
  height: 100%;
  background: var(--orange);
  min-width: 0;
  border-radius: var(--radius-xs);
}

.capbar u {
  display: block;
  height: 100%;
  flex: 1;
  background: var(--grad-cap-hatch);
  text-decoration: none;
}

.capsub {
  font-size: var(--fs-body-4);
  color: var(--steel-2);
  line-height: var(--lh-body-loose);
  margin: var(--sp-6) 0 0;
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  text-transform: none;
  letter-spacing: normal;
}

.cap-meter {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-nav);
  letter-spacing: var(--track-nav);
  text-transform: var(--case-display);
  color: var(--steel-2);
}

.cap-meter.exhausted {
  color: var(--orange);
}

.cap-panel {
  border: var(--bw-hair) solid var(--law-border);
  background: var(--law-bg);
  border-radius: var(--radius-lg);
  padding: var(--sp-13);
  margin: var(--sp-4) 0 var(--sp-10);
}

.cap-panel h2 {
  margin: 0 0 var(--sp-6);
  font-size: var(--fs-title-1);
  letter-spacing: var(--track-item);
  color: var(--orange);
}

.cap-panel p {
  margin: 0 0 var(--sp-8);
  color: var(--text);
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  text-transform: none;
  letter-spacing: normal;
}

/* ---------- Shared chrome ---------- */
.app-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-8);
  padding: var(--gutter-bar-y) var(--gutter-screen);
  background: var(--chassis);
  color: var(--text);
  border-bottom: var(--bw-strong) solid var(--orange);
  min-height: var(--touch-min);
}

.app-bar h1 {
  margin: 0;
  font-size: var(--fs-action);
  letter-spacing: var(--track-badge);
  line-height: 1;
}

.wordmark {
  color: var(--text);
  text-decoration: none;
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  letter-spacing: var(--track-badge);
  font-size: var(--fs-action);
  text-transform: var(--case-display);
}

.wordmark span {
  color: var(--orange);
}

/* Top nav kept for auth / secondary destinations; product tabs below */
.app-nav {
  display: flex;
  align-items: center;
  gap: var(--sp-8);
  flex-wrap: wrap;
}

.app-nav a {
  color: var(--steel-2);
  text-decoration: none;
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-nav);
  letter-spacing: var(--track-nav);
  text-transform: var(--case-display);
  min-height: var(--touch-min);
  display: inline-flex;
  align-items: center;
}

.app-nav a[aria-current="page"],
.app-nav a:hover {
  color: var(--orange);
}

.inline-form {
  display: inline;
  margin: 0;
}

/* Bottom tab bar */
.tab-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1000;
  display: flex;
  background: var(--chassis);
  border-top: var(--bw-strong) solid var(--panel-3);
}

.tab-bar .tab {
  flex: 1;
  min-height: var(--touch-tab);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--sp-2);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-badge);
  letter-spacing: var(--track-badge);
  color: var(--steel-2);
  text-transform: var(--case-display);
  text-decoration: none;
  background: transparent;
  border: 0;
  cursor: pointer;
  padding: var(--sp-2) var(--sp-1);
}

.tab-bar .tab .tab-icon {
  display: block;
  width: 20px;
  height: 20px;
  border: var(--bw-strong) solid var(--steel-2);
  border-radius: var(--radius-sm);
}

.tab-bar .tab.on,
.tab-bar .tab[aria-current="page"] {
  color: var(--orange);
}

.tab-bar .tab.on .tab-icon,
.tab-bar .tab[aria-current="page"] .tab-icon {
  border-color: var(--orange);
  background: var(--panel-3);
}

/* Body pad for fixed tab bar on product screens */
body.has-tab-bar {
  padding-bottom: calc(var(--touch-tab) + var(--sp-6));
}

/* Back bar */
.lead-back-bar,
.back-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-6);
  flex-wrap: wrap;
  min-height: var(--touch-min);
  padding: 0 var(--gutter-screen);
  background: var(--chassis);
  border-bottom: var(--bw-hair) solid var(--panel-3);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-nav);
  letter-spacing: var(--track-nav);
  text-transform: var(--case-display);
  color: var(--steel-2);
  margin: 0;
}

.lead-back-bar a,
.back-bar a,
.lead-back-bar #back-link {
  color: var(--orange);
  text-decoration: none;
  font-weight: var(--fw-display);
  min-height: var(--touch-min);
  display: inline-flex;
  align-items: center;
}

/* Section label */
.sect-label {
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  color: var(--steel-2);
  margin: 0 0 var(--sp-7);
}

.sect-label .muted,
.sect-label span {
  color: var(--orange);
  font-size: inherit;
}

/* Rule / law line */
.lawline,
.rule-line {
  padding: var(--sp-7) var(--gutter-screen);
  background: var(--law-bg);
  border-top: var(--bw-hair) solid var(--law-border);
  border-bottom: var(--bw-hair) solid var(--panel-3);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-badge);
  letter-spacing: var(--track-badge);
  color: var(--law-fg);
  text-transform: var(--case-display);
  text-align: center;
  margin: 0;
  border-radius: 0;
}

.rule-line.error-block,
.error-block.rule-line {
  text-align: left;
  border: var(--bw-hair) solid var(--law-border);
  border-radius: var(--radius-lg);
  margin: var(--sp-6) var(--gutter-screen);
  padding: var(--sp-10) var(--sp-12);
}

.error-block {
  border: var(--bw-hair) solid var(--law-border);
  background: var(--law-bg);
  color: var(--law-fg);
  padding: var(--sp-10) var(--sp-12);
  border-radius: var(--radius-lg);
}

/* Money / ROI banner */
.roi-banner {
  background: var(--grad-money);
  border-top: var(--bw-strong) solid var(--money-border);
  border-bottom: var(--bw-strong) solid var(--money-border);
  padding: var(--gutter-screen);
  margin: 0 0 var(--sp-6);
  color: var(--text);
  border-radius: 0;
}

.roi-label {
  font-size: var(--fs-label);
  letter-spacing: var(--track-kicker);
  color: var(--money-label);
}

.roi-figure {
  font-size: var(--fs-hero);
  line-height: var(--lh-hero);
  color: var(--money-figure);
  margin: var(--sp-3) 0 var(--sp-1);
  letter-spacing: var(--track-tight);
}

.roi-sub {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-3);
  color: var(--money-sub);
  line-height: var(--lh-list);
  font-weight: var(--fw-body);
  text-transform: none;
  letter-spacing: normal;
}

.roi-empty {
  margin: var(--sp-4) 0 0;
  color: var(--money-sub);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  text-transform: none;
  letter-spacing: normal;
}

.roi-multiple {
  display: inline-block;
  margin-top: var(--sp-7);
  background: var(--yellow);
  color: var(--ink);
  font-size: var(--fs-item-sub);
  letter-spacing: var(--track-chip);
  padding: var(--sp-3) var(--sp-9);
  border-radius: var(--radius-sm);
}

/* Territory header */
.terr-header,
.terr {
  background: var(--panel);
  padding: var(--gutter-section-y) var(--gutter-screen);
  border-bottom: var(--bw-hair) solid var(--panel-3);
  margin: 0;
  border-radius: 0;
}

.terr-zip,
.terr .zip {
  font-size: var(--fs-display-2);
  letter-spacing: var(--track-address);
  line-height: var(--lh-hero);
  color: var(--text);
}

.terr-counts,
.terr .cnt {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-item);
  letter-spacing: var(--track-display);
  color: var(--orange);
  text-transform: var(--case-display);
  margin-top: var(--sp-2);
}

.terr-vintage,
.terr .vint {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-4);
  color: var(--steel-2);
  letter-spacing: var(--track-tight);
  margin-top: var(--sp-3);
  text-transform: uppercase;
  font-weight: var(--fw-body);
}

.bandchip {
  display: inline-block;
  margin-top: var(--sp-6);
  background: var(--panel-3);
  border: var(--bw-hair) solid var(--steel);
  color: var(--yellow);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-body-4);
  letter-spacing: var(--track-badge);
  padding: var(--sp-2) var(--sp-7);
  border-radius: var(--radius-sm);
  text-transform: var(--case-display);
}

/* Notes block */
.notes-block {
  margin: 0;
  padding: var(--gutter-section-y) var(--gutter-screen);
  background: var(--panel);
  border-bottom: var(--bw-hair) solid var(--panel-3);
}

.notes-block h3 {
  margin: 0 0 var(--sp-6);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  color: var(--steel-2);
}

.note-entry,
.notes-preview {
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--panel-3);
  border-left: var(--bw-marker) solid var(--steel);
  border-radius: var(--radius-sm);
  padding: var(--sp-8) var(--sp-9);
  margin: 0 0 var(--sp-4);
}

.note-entry .note-body {
  margin: 0;
  white-space: pre-wrap;
  font-size: var(--fs-body-3);
  color: var(--text);
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  text-transform: none;
  letter-spacing: normal;
  line-height: var(--lh-body);
}

.note-entry .note-meta,
.notes .nm {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-6);
  color: var(--steel-2);
  margin-top: var(--sp-5);
  text-transform: uppercase;
  letter-spacing: var(--track-tight);
}

.note-entry .note-actions {
  margin-top: var(--sp-3);
}

.note-entry .note-actions button {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-nav);
  letter-spacing: var(--track-nav);
  text-transform: var(--case-display);
  padding: var(--sp-4) var(--sp-6);
  min-height: var(--touch-min);
  border: var(--bw-control) solid var(--steel);
  background: var(--panel-3);
  color: var(--text);
  border-radius: var(--radius-lg);
  cursor: pointer;
}

.note-compose {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
  margin-top: var(--sp-6);
}

.note-compose textarea {
  font: inherit;
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  min-height: 4rem;
  padding: var(--sp-6) var(--sp-8);
  border: var(--bw-hair) solid var(--steel);
  border-radius: var(--radius-md);
  resize: vertical;
  background: var(--panel-2);
  color: var(--text);
}

/* Territory / dash table */
.dash-tbl,
.explainer-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-3);
}

.dash-tbl td,
.explainer-table th,
.explainer-table td {
  padding: var(--sp-4) 0;
  border-bottom: var(--bw-hair) solid var(--panel-3);
  color: var(--steel-2);
  text-align: left;
}

.dash-tbl td:last-child {
  text-align: right;
  color: var(--text-max);
  font-weight: var(--fw-body-strong);
}

.dash-tbl tr:last-child td {
  border-bottom: 0;
}

.explainer-table th {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  text-transform: var(--case-display);
}

/* Panel surface (generic content card) */
.panel {
  background: var(--panel);
  border: 0;
  border-bottom: var(--bw-hair) solid var(--panel-3);
  border-radius: 0;
  padding: var(--gutter-section-y) var(--gutter-screen);
}

.panel h2 {
  margin: 0 0 var(--sp-6);
  font-size: var(--fs-title-1);
  letter-spacing: var(--track-item);
  color: var(--text);
}

/* Auth forms */
.auth-form {
  display: flex;
  flex-direction: column;
  gap: var(--sp-8);
}

.auth-form label {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  text-transform: var(--case-display);
  color: var(--steel-2);
}

.auth-form input[type="text"],
.auth-form input[type="email"],
.auth-form input[type="password"] {
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  font-size: var(--fs-body);
  padding: var(--sp-8) var(--sp-8);
  min-height: var(--touch-min);
  border: var(--bw-hair) solid var(--steel);
  border-radius: var(--radius-md);
  background: var(--panel-2);
  color: var(--text);
  text-transform: none;
  letter-spacing: normal;
}

.auth-form input:focus {
  outline: none;
  box-shadow: var(--focus-ring);
  border-color: var(--orange);
}

.form-error {
  color: var(--law-fg);
  background: var(--law-bg);
  border: var(--bw-hair) solid var(--law-border);
  padding: var(--sp-6) var(--sp-8);
  border-radius: var(--radius-md);
  font-size: var(--fs-body-3);
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  text-transform: none;
  letter-spacing: normal;
}

.form-notice,
#session-expired-notice {
  color: var(--text);
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--steel);
  border-left: var(--bw-callout) solid var(--orange);
  padding: var(--sp-6) var(--sp-8);
  border-radius: var(--radius-xl);
  font-size: var(--fs-body-3);
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  text-transform: none;
  letter-spacing: normal;
}

/* List head / foot */
.listhead {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--sp-7) var(--gutter-screen);
  background: var(--chassis);
  border-bottom: var(--bw-hair) solid var(--panel-3);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  color: var(--steel-2);
  margin: 0;
}

.listfoot {
  padding: var(--sp-9) var(--gutter-screen);
  background: var(--chassis);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-label);
  letter-spacing: var(--track-nav);
  color: var(--steel-2);
  text-transform: var(--case-display);
  text-align: center;
  border-bottom: var(--bw-hair) solid var(--panel-3);
  margin: 0;
}

/* Funnel bars */
.fun {
  display: flex;
  align-items: center;
  gap: var(--sp-7);
  margin-bottom: var(--sp-6);
}

.fun .fn {
  flex: 0 0 5.5rem;
  font-size: var(--fs-nav);
  letter-spacing: var(--track-chip);
  text-align: right;
  color: var(--steel-2);
}

.fun .fb {
  flex: 1 1 auto;
  height: var(--bar-height);
  background: var(--bar-track);
  border-radius: var(--radius-xs);
  overflow: hidden;
}

.fun .fb i {
  display: block;
  height: 100%;
  background: var(--bar-fill);
  min-width: 2px;
  border-radius: var(--radius-xs);
}

.fun.fun-won .fb i {
  background: var(--bar-fill-won);
}

.fun.fun-dead .fb i {
  background: var(--bar-fill-dead);
}

.fun .fv {
  flex: 0 0 1.75rem;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-1);
  color: var(--text-max);
  text-align: right;
  font-weight: var(--fw-body);
  text-transform: none;
  letter-spacing: normal;
}

/* Address block (lead detail — full address once) */
.address-block {
  background: var(--panel);
  border-left: var(--bw-callout) solid var(--yellow);
  padding: var(--gutter-section-y) var(--gutter-screen);
  margin: 0;
}

.address-block .full-address {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-address);
  letter-spacing: var(--track-address);
  text-transform: var(--case-display);
  line-height: var(--lh-hero);
  margin: 0 0 var(--sp-1);
  color: var(--text);
}

.address-block .city-line {
  margin: 0;
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-item-sub);
  letter-spacing: var(--track-item);
  text-transform: var(--case-display);
  color: var(--steel-2);
}

.address-block .mono-meta {
  margin: var(--sp-5) 0 0;
}

.stat-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-6);
  align-items: center;
  padding: var(--sp-9) var(--gutter-screen);
  background: var(--chassis);
  border-bottom: var(--bw-hair) solid var(--panel-3);
  margin: 0;
}

.stat-row .score-chip,
.stat-row .sc {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-display-5);
  letter-spacing: var(--track-display);
  color: var(--yellow);
  border: 0;
  background: transparent;
  padding: 0;
}

.open-trace {
  font-size: var(--fs-body-2);
  color: var(--steel-2);
  margin: 0;
  padding: var(--sp-6) var(--gutter-screen);
  background: var(--chassis);
  border-bottom: var(--bw-hair) solid var(--panel-3);
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  text-transform: none;
  letter-spacing: normal;
}

/* Zip picker */
.zip-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--gap-inline);
}

.zip-list li {
  margin: 0;
}

.zip-list a {
  display: inline-flex;
  align-items: center;
  min-height: var(--touch-min);
  padding: 0 var(--sp-8);
  border-radius: var(--radius-md);
  border: var(--bw-hair) solid var(--steel);
  text-decoration: none;
  color: var(--steel-2);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-chip);
  letter-spacing: var(--track-chip);
  text-transform: var(--case-display);
  background: var(--panel-2);
}

.zip-list a.active,
.zip-list a:hover {
  background: var(--orange);
  color: var(--text-on-accent);
  border-color: var(--orange);
}

.zip-list .zip-code {
  font-weight: var(--fw-display);
}

.zip-list .zip-vintage {
  opacity: var(--opacity-count);
  font-family: var(--font-mono);
  font-size: var(--fs-mono-3);
  font-weight: var(--fw-body);
}

/* System error / explainer helpers */
.error-state-panel {
  max-width: var(--reading-max);
}

.error-code {
  margin: 0 0 var(--sp-3);
}

.error-actions {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: var(--sp-10);
}

.explainer-sample {
  margin: var(--sp-10) 0;
  padding: 0;
}

.explainer-sample img {
  display: block;
  max-width: 100%;
  height: auto;
  border: var(--bw-hair) solid var(--steel);
  border-radius: var(--radius-md);
  background: var(--evidence-bed);
  filter: var(--img-thumb-filter);
}

.explainer-sample figcaption {
  margin-top: var(--sp-3);
  font-size: var(--fs-body-2);
  color: var(--steel-2);
}

.explainer-actions {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: var(--sp-10);
}

.help-tour-btn {
  background: transparent;
  color: var(--steel-2);
  border-color: var(--steel);
}

.help-tour-btn:hover {
  background: var(--panel-3);
  color: var(--text);
}

/* =========================================================================
   P3-D — Phase 3 money surfaces (built once, reused)
   Pricing card · FAQ row · kicker · census teaser · claim · billing
   ========================================================================= */

/* Kicker / eyebrow */
.kicker {
  margin: 0 0 var(--sp-6);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-label);
  letter-spacing: var(--track-kicker);
  text-transform: var(--case-display);
  color: var(--orange);
}

/* Landing lead paragraph (body voice under hero) */
.landing-hero .lead,
.landing-sales .lead {
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text);
  text-transform: none;
  letter-spacing: normal;
  margin: 0 0 var(--sp-12);
}

.landing-hero h2,
.landing-section h2 {
  font-size: var(--fs-display-1);
  letter-spacing: var(--track-display);
  line-height: var(--lh-display);
}

/* ---------- 16. Pricing card ---------- */
.pricing-card,
.price-band,
.zip-teaser,
.claim-price-card {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-8);
  padding: var(--sp-10) var(--sp-12);
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-2xl);
  min-height: var(--touch-min);
}

.pricing-card .pricing-card-label,
.price-band .price-band-label,
.zip-teaser .zip-code,
.claim-price-card .claim-price-amount {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-display-2);
  letter-spacing: var(--track-display);
  text-transform: var(--case-display);
  color: var(--text);
}

.pricing-card .pricing-card-amount,
.price-band .price-band-amount,
.claim-price-card .claim-price-amount strong,
.census-price strong {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-title-1);
  letter-spacing: var(--track-display);
  text-transform: var(--case-display);
  color: var(--orange);
}

.pricing-card .pricing-card-meta,
.price-band .price-band-meta,
.zip-teaser .zip-meta,
.claim-price-card .claim-price-meta {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-3);
  color: var(--steel-2);
  line-height: var(--lh-mono);
  text-transform: uppercase;
  letter-spacing: var(--track-tight);
}

.pricing-card.unclaimable,
.price-band.unclaimable,
.zip-teaser.unclaimable {
  opacity: var(--opacity-inactive);
}

.zip-teaser-main {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  min-width: 0;
}

.zip-teaser-action {
  flex: 0 0 auto;
}

.zip-teaser-action .btn-secondary {
  width: auto;
  min-width: 10rem;
  padding-left: var(--sp-10);
  padding-right: var(--sp-10);
}

/* Landing price-band list uses pricing-card geometry */
.price-band-list {
  list-style: none;
  margin: var(--sp-10) 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--sp-6);
}

.included-list,
.claim-included,
.claim-services,
.how-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.included-list li,
.claim-included li,
.claim-services li {
  padding: var(--sp-7) 0;
  border-bottom: var(--bw-hair) solid var(--panel-3);
  font-family: var(--font-body);
  font-size: var(--fs-body-3);
  color: var(--text);
  text-transform: none;
  letter-spacing: normal;
}

.how-list .how-step {
  padding: var(--sp-10) 0;
  border-bottom: var(--bw-hair) solid var(--panel-3);
}

.how-list .how-step h3 {
  margin: 0 0 var(--sp-4);
  font-size: var(--fs-item);
  letter-spacing: var(--track-item);
  color: var(--orange);
}

.how-list .how-step p {
  margin: 0;
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  font-size: var(--fs-body-3);
  color: var(--steel-2);
  text-transform: none;
  letter-spacing: normal;
  line-height: var(--lh-body);
}

/* ---------- 17. FAQ row ---------- */
.faq-item,
.faq-row {
  margin: 0;
  padding: 0;
  border-bottom: var(--bw-hair) solid var(--panel-3);
}

.faq-item summary,
.faq-row summary {
  list-style: none;
  cursor: pointer;
  min-height: var(--touch-min);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-8);
  padding: var(--sp-10) 0;
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-item);
  letter-spacing: var(--track-item);
  text-transform: var(--case-display);
  color: var(--text);
}

.faq-item summary::-webkit-details-marker,
.faq-row summary::-webkit-details-marker {
  display: none;
}

.faq-item summary::after,
.faq-row summary::after {
  content: '+';
  color: var(--orange);
  font-size: var(--fs-title-1);
  line-height: 1;
  flex: 0 0 auto;
}

.faq-item[open] summary::after,
.faq-row[open] summary::after {
  content: '–';
}

.faq-item p,
.faq-row p {
  margin: 0 0 var(--sp-10);
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  font-size: var(--fs-body-3);
  line-height: var(--lh-body);
  color: var(--steel-2);
  text-transform: none;
  letter-spacing: normal;
}

/* Money banner aliases (landing uses money-* ; dashboard uses roi-*) */
.money-banner,
.landing-section.money-banner,
#roi.money-banner {
  background: var(--grad-money);
  border-top: var(--bw-strong) solid var(--money-border);
  border-bottom: var(--bw-strong) solid var(--money-border);
  padding: var(--gutter-screen);
  margin: 0;
  color: var(--text);
  border-radius: 0;
}

.money-label {
  margin: 0;
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-label);
  letter-spacing: var(--track-kicker);
  text-transform: var(--case-display);
  color: var(--money-label);
}

.money-figure {
  margin: var(--sp-3) 0 var(--sp-1);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-hero);
  line-height: var(--lh-hero);
  letter-spacing: var(--track-tight);
  text-transform: var(--case-display);
  color: var(--money-figure);
}

.money-sub {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-3);
  color: var(--money-sub);
  line-height: var(--lh-list);
  font-weight: var(--fw-body);
  text-transform: none;
  letter-spacing: normal;
}

/* Census teaser (R8) — flagship sales surface */
.census-teaser h2 {
  font-size: var(--fs-display-1);
  letter-spacing: var(--track-display);
}

.census-counts {
  margin: var(--sp-8) 0;
}

.census-counts strong {
  color: var(--text-max);
  font-size: var(--fs-display-3);
}

.census-cluster {
  margin: var(--sp-10) 0;
  padding: 0;
  background: var(--map-bed);
  border: var(--bw-hair) solid var(--steel);
  border-radius: var(--radius-md);
  overflow: hidden;
}

.census-cluster img {
  width: 100%;
  height: auto;
  display: block;
  filter: var(--img-map-filter);
}

.census-cluster figcaption {
  padding: var(--sp-6) var(--sp-8);
  margin: 0;
  font-size: var(--fs-body-4);
  color: var(--steel-2);
  background: var(--chassis);
}

.census-samples {
  list-style: none;
  margin: 0 0 var(--sp-10);
  padding: 0;
}

.census-sample {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--gap-meta);
  padding: var(--gutter-row-y) 0;
  border-bottom: var(--bw-hair) solid var(--panel-3);
  min-height: var(--touch-row);
}

.census-sample .loc {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-item);
  letter-spacing: var(--track-address);
  text-transform: var(--case-display);
  color: var(--text);
}

.census-price {
  margin: var(--sp-10) 0;
  padding: var(--sp-10) var(--sp-12);
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-2xl);
}

.census-cta-wrap {
  margin: var(--sp-12) 0 0;
}

.census-cta-wrap .btn-primary {
  width: 100%;
}

/* Census form (landing) */
.census-form {
  display: flex;
  flex-direction: column;
  gap: var(--sp-8);
}

.census-form label {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  text-transform: var(--case-display);
  color: var(--steel-2);
}

.census-form input[type="text"],
.census-form input[type="email"] {
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  font-size: var(--fs-body);
  padding: var(--sp-8);
  min-height: var(--touch-min);
  border: var(--bw-hair) solid var(--steel);
  border-radius: var(--radius-md);
  background: var(--panel-2);
  color: var(--text);
  text-transform: none;
  letter-spacing: normal;
  width: 100%;
}

.census-form input:focus {
  outline: none;
  box-shadow: var(--focus-ring);
  border-color: var(--orange);
}

.census-form .btn-primary {
  width: 100%;
}

/* Claim summary price */
.claim-price,
.claim-price-card {
  margin: var(--sp-10) 0;
}

.claim-unclaimable {
  color: var(--steel-2);
  padding: var(--sp-10);
  border: var(--bw-strong) dashed var(--steel);
  border-radius: var(--radius-lg);
}

/* Subscription / billing cards */
.subscription-card {
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-2xl);
  padding: var(--sp-12);
  margin-bottom: var(--sp-10);
}

.subscription-card h4 {
  margin: 0 0 var(--sp-8);
  font-size: var(--fs-title-1);
  letter-spacing: var(--track-item);
  color: var(--orange);
}

.sub-meta {
  display: grid;
  gap: var(--sp-4);
  margin: var(--sp-8) 0;
}

.sub-meta div {
  display: grid;
  grid-template-columns: 8rem 1fr;
  gap: var(--sp-4);
  padding: var(--sp-4) 0;
  border-bottom: var(--bw-hair) solid var(--panel-3);
}

.sub-meta dt {
  margin: 0;
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  text-transform: var(--case-display);
  color: var(--steel-2);
}

.sub-meta dd {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-3);
  color: var(--text-max);
}

.cancel-confirm {
  margin-top: var(--sp-8);
  border: var(--bw-hair) solid var(--law-border);
  background: var(--law-bg);
  border-radius: var(--radius-2xl);
  padding: var(--sp-12);
}

.cancel-confirm h4 {
  color: var(--law-fg);
  margin: 0 0 var(--sp-6);
}

.cancel-confirm p {
  font-family: var(--font-body);
  font-weight: var(--fw-body);
  text-transform: none;
  letter-spacing: normal;
  color: var(--text);
  font-size: var(--fs-body-3);
  line-height: var(--lh-body);
}

.past-due-banner {
  color: var(--law-fg);
  background: var(--law-bg);
  border: var(--bw-hair) solid var(--law-border);
  border-left: var(--bw-callout) solid var(--orange);
  padding: var(--sp-6) var(--sp-8);
  margin: var(--sp-8) 0;
  border-radius: var(--radius-md);
  font-size: var(--fs-body-3);
  font-family: var(--font-body);
}

.past-due-banner ul {
  margin: var(--sp-4) 0;
  padding-left: var(--sp-8);
}

.billing-history-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-3);
  margin-top: var(--sp-4);
}

.billing-history-table th,
.billing-history-table td {
  text-align: left;
  padding: var(--sp-4);
  border-bottom: var(--bw-hair) solid var(--panel-3);
  color: var(--text-max);
}

.billing-history-table th {
  font-family: var(--font-cond);
  font-stretch: var(--font-stretch-cond);
  font-weight: var(--fw-display);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  text-transform: var(--case-display);
  color: var(--steel-2);
}

/* Census one-pager print flagship (token-only; not a lead-list export) */
.census-print .census-teaser {
  border: var(--bw-strong) solid var(--panel-3);
  border-radius: var(--radius-2xl);
  padding: var(--sp-14) var(--sp-13);
  background: var(--panel);
}

.census-print .app-bar {
  border-bottom-width: var(--bw-strong);
}

.cta-row {
  margin-top: var(--sp-12);
}

.cta-row .btn-primary,
.landing-section .btn-primary,
.landing-hero .btn-primary {
  width: 100%;
}

.zip-teaser-list {
  list-style: none;
  margin: var(--sp-10) 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--sp-6);
}

/* ---------- 19. Admin control room (P4-1 — dense desktop-first) ---------- */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.page-admin .main-content {
  max-width: 72rem;
}

.admin-nav {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-4);
  margin: 0 0 var(--sp-10);
  padding: 0 0 var(--sp-8);
  border-bottom: var(--bw-hair) solid var(--panel-3);
}

.admin-nav-link {
  font-family: var(--font-cond);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  text-transform: var(--case-display);
  color: var(--steel-2);
  text-decoration: none;
  min-height: var(--touch-min);
  display: inline-flex;
  align-items: center;
  padding: var(--sp-4) var(--sp-8);
  border: var(--bw-hair) solid transparent;
  border-radius: var(--radius-lg);
}

.admin-nav-link.on,
.admin-nav-link[aria-current="page"] {
  color: var(--orange);
  border-color: var(--panel-3);
  background: var(--panel-2);
}

.admin-section-title {
  margin: var(--sp-13) 0 var(--sp-8);
  font-size: var(--fs-item-sub);
  letter-spacing: var(--track-item);
  color: var(--text);
}

.admin-stat-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr));
  gap: var(--sp-6);
}

.admin-stat {
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-xl);
  padding: var(--sp-10) var(--sp-12);
}

.admin-stat a {
  color: inherit;
  text-decoration: none;
  display: block;
  min-height: var(--touch-min);
}

.admin-stat-value {
  display: block;
  font-family: var(--font-cond);
  font-size: var(--fs-display-2);
  letter-spacing: var(--track-display);
  color: var(--orange);
  margin-bottom: var(--sp-3);
}

.admin-stat-label {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-6);
  color: var(--steel-2);
  text-transform: none;
}

.admin-table-wrap {
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-xl);
  margin: 0 0 var(--sp-10);
}

.admin-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--fs-body-4);
}

.admin-table th,
.admin-table td {
  padding: var(--sp-6) var(--sp-8);
  text-align: left;
  border-bottom: var(--bw-hair) solid var(--panel-3);
  vertical-align: top;
}

.admin-table th {
  font-family: var(--font-cond);
  font-size: var(--fs-label);
  letter-spacing: var(--track-label);
  text-transform: var(--case-display);
  color: var(--steel-2);
  background: var(--panel-2);
  position: sticky;
  top: 0;
}

.admin-table a {
  color: var(--orange);
}

.admin-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-6);
  align-items: flex-end;
  margin: 0 0 var(--sp-10);
}

.admin-filter-bar .field {
  flex: 1 1 12rem;
  min-width: 10rem;
}

.admin-confirm {
  margin: var(--sp-6) 0;
}

.admin-confirm > summary {
  list-style: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  min-height: var(--touch-button);
  width: auto;
  max-width: 100%;
}

.admin-confirm > summary::-webkit-details-marker {
  display: none;
}

.admin-confirm-body {
  margin-top: var(--sp-6);
}

.admin-action-stack {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
  margin-top: var(--sp-8);
}

.admin-action-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-6);
  margin-top: var(--sp-8);
}

.admin-config-form .admin-config-input {
  width: 100%;
  max-width: 12rem;
  min-height: var(--touch-min);
  font-family: var(--font-mono);
  font-size: var(--fs-mono-3);
  background: var(--panel);
  color: var(--text);
  border: var(--bw-control) solid var(--steel);
  border-radius: var(--radius-lg);
  padding: var(--sp-4) var(--sp-8);
}

.admin-inline-form {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-4);
  align-items: center;
  margin-bottom: var(--sp-4);
}

.admin-inline-form input[type="text"] {
  flex: 1 1 10rem;
  min-height: var(--touch-min);
  font-family: var(--font-body);
  font-size: var(--fs-body-4);
  background: var(--panel);
  color: var(--text);
  border: var(--bw-control) solid var(--steel);
  border-radius: var(--radius-lg);
  padding: var(--sp-4) var(--sp-8);
}

.admin-sub-card {
  margin-bottom: var(--sp-10);
}

.badge-warn {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-6);
  color: var(--yellow);
}

/* P4-2 / P4-D — verification queue: thumbnail-dominant review card */
.vq-preview-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
}

.vq-preview-card {
  display: flex;
  gap: var(--gap-row);
  align-items: center;
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-lg);
  padding: var(--sp-6) var(--sp-8);
  min-height: var(--touch-row);
}

.vq-thumb {
  width: var(--thumb-size);
  height: var(--thumb-size);
  object-fit: cover;
  border-radius: var(--radius-md);
  background: var(--evidence-bed);
  flex: 0 0 auto;
}

.vq-thumb-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-6);
  color: var(--steel-2);
  text-align: center;
}

.vq-session .vq-progress-bar {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--sp-6);
  margin-bottom: var(--sp-6);
}

.vq-progress {
  color: var(--orange);
  font-size: var(--fs-item-sub);
}

.vq-review-card {
  background: var(--panel-2);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-xl);
  padding: var(--sp-6);
  margin-bottom: var(--sp-6);
  display: flex;
  flex-direction: column;
  gap: var(--sp-6);
}

.vq-evidence-stack,
.vq-evidence-dominant {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-4);
  margin: 0;
  background: var(--evidence-bed);
  border-radius: var(--radius-lg);
  overflow: hidden;
  min-height: 18rem;
}

.vq-evidence-dominant .vq-evidence-frame,
.vq-evidence-frame {
  margin: 0;
}

.vq-evidence-frame img {
  width: 100%;
  height: auto;
  max-height: 70vh;
  object-fit: contain;
  object-position: center;
  display: block;
  background: var(--evidence-bed);
  filter: var(--img-thumb-filter);
}

.vq-review-meta {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
}

.vq-address {
  font-family: var(--font-cond);
  font-stretch: condensed;
  font-weight: var(--fw-display, 800);
  font-size: var(--fs-address);
  letter-spacing: var(--track-address, 0.04em);
  text-transform: uppercase;
  margin: 0;
  color: var(--text-max);
}

.vq-ledger-details {
  border-top: var(--bw-hair) solid var(--panel-3);
  padding-top: var(--sp-4);
}

.vq-ledger-details > summary {
  cursor: pointer;
  font-family: var(--font-cond);
  font-stretch: condensed;
  font-size: var(--fs-label);
  letter-spacing: var(--track-item);
  text-transform: uppercase;
  color: var(--steel-2);
  min-height: var(--touch-min);
  display: flex;
  align-items: center;
  list-style: none;
}

.vq-ledger-details > summary::-webkit-details-marker {
  display: none;
}

.vq-ledger-details .points-ledger {
  margin-top: var(--sp-4);
}

.vq-map-toggle-wrap {
  margin: 0;
}

.vq-key-teach {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-6);
  align-items: center;
  padding: var(--sp-6) var(--sp-8);
  margin: 0 0 var(--sp-4);
  background: var(--panel-3);
  border-radius: var(--radius-lg);
  border-left: var(--bw-callout) solid var(--yellow);
}

.vq-key-teach-item {
  font-family: var(--font-cond);
  font-stretch: condensed;
  font-size: var(--fs-nav);
  letter-spacing: var(--track-nav, 0.08em);
  text-transform: uppercase;
  color: var(--text);
  display: inline-flex;
  align-items: center;
  gap: var(--sp-4);
  min-height: var(--touch-min);
}

.vq-key-teach kbd,
.vq-verdict-bar kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.75rem;
  min-height: 1.75rem;
  padding: 0 var(--sp-4);
  font-family: var(--font-mono);
  font-size: var(--fs-mono-3);
  color: var(--ink);
  background: var(--yellow);
  border-radius: var(--radius-sm);
  border: none;
  opacity: 1;
  margin-left: 0;
}

.vq-verdict-bar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-6);
  align-items: center;
  margin-top: 0;
  position: sticky;
  bottom: 0;
  padding: var(--sp-6) 0;
  background: var(--chassis);
  z-index: 2;
}

.vq-verdict-form {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-4);
}

.vq-map {
  margin-top: var(--sp-4);
  min-height: 12rem;
}

/* Admin queue row + run status row (P4-D) — denser table chrome */
.admin-table tr.admin-queue-row td,
.admin-table tr.run-status-row td {
  padding: var(--sp-4) var(--sp-6);
  vertical-align: middle;
}

.run-status-chip {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-3);
}

.lead-flag-panel {
  margin: var(--sp-10) 0;
  padding: var(--sp-8);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-xl);
  background: var(--panel-2);
}

.lead-flag-panel > summary {
  cursor: pointer;
  list-style: none;
  display: inline-flex;
  align-items: center;
  min-height: var(--touch-min);
}

.lead-flag-panel > summary::-webkit-details-marker {
  display: none;
}

.lead-flag-body {
  margin-top: var(--sp-6);
}

.lead-flag-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-4);
}

/* —— P4-3 postcard campaigns —— */
.list-mail-bar {
  display: flex;
  align-items: center;
  gap: var(--sp-6);
  margin: var(--sp-6) 0;
  flex-wrap: wrap;
}

.lead-mail-actions {
  margin: var(--sp-10) 0;
}

.mail-main {
  max-width: 720px;
  margin: 0 auto;
  padding: var(--sp-10) var(--sp-8) calc(var(--tab-bar-height, 64px) + var(--sp-12));
  display: flex;
  flex-direction: column;
  gap: var(--sp-10);
}

.campaign-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--sp-6);
}

.campaign-row-link {
  display: flex;
  gap: var(--sp-8);
  align-items: center;
  text-decoration: none;
  color: inherit;
  padding: var(--sp-8);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-xl);
  background: var(--panel-2);
  min-height: var(--touch-min);
}

.campaign-top {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-4);
  align-items: center;
  margin-bottom: var(--sp-2);
}

.builder-steps {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-4);
  list-style: none;
  padding: 0;
  margin: 0 0 var(--sp-10);
}

.builder-steps li {
  font-family: var(--font-mono);
  font-size: var(--fs-mono-6);
  color: var(--steel-2);
  padding: var(--sp-2) var(--sp-6);
  border-radius: var(--radius-sm);
  border: var(--bw-hair) solid var(--panel-3);
}

.builder-steps li.on {
  color: var(--orange);
  border-color: var(--orange);
}

/* .template-grid / .template-card — see P4-D template picker block below */

.merge-fields {
  border: none;
  padding: 0;
  margin: 0 0 var(--sp-10);
  display: grid;
  gap: var(--sp-6);
}

.merge-fields label {
  display: grid;
  gap: var(--sp-2);
  font-size: var(--fs-body-4);
  color: var(--steel-2);
}

.merge-fields input {
  min-height: var(--touch-min);
  padding: var(--sp-4) var(--sp-6);
  border-radius: var(--radius-md);
  border: var(--bw-hair) solid var(--panel-3);
  background: var(--panel);
  color: var(--text);
}

.builder-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-6);
  margin-top: var(--sp-8);
}

.pc-thumb {
  width: var(--pc-thumb-w);
  height: var(--pc-thumb-h);
  border-radius: var(--radius-sm);
  flex-shrink: 0;
  border: var(--bw-hair) solid var(--panel-3);
  aspect-ratio: 6 / 4;
}

.pc-thumb-classic {
  background: var(--orange);
  box-shadow: inset 0 0 0 2px var(--panel);
}

.pc-thumb-bold {
  background: var(--orange);
  box-shadow: inset 0 0 0 6px var(--orange), inset 0 0 0 10px var(--ink);
}

.pc-thumb-navajo {
  background: var(--steel-2);
  box-shadow: inset 0 0 0 3px var(--panel-3);
}

/* Template picker (P4-D) — radio grid of stock designs */
.template-picker,
.template-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: var(--sp-6);
  margin-bottom: var(--sp-10);
}

.template-card {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
  text-align: left;
  padding: var(--sp-8);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-xl);
  background: var(--panel-2);
  color: var(--text);
  cursor: pointer;
  min-height: var(--touch-min);
}

.template-card.on {
  border-color: var(--orange);
  box-shadow: inset 0 0 0 var(--bw-callout) var(--orange);
}

.template-card strong {
  font-family: var(--font-cond);
  font-stretch: condensed;
  letter-spacing: var(--track-item);
  text-transform: uppercase;
  font-size: var(--fs-item-sub);
}

/* Print-quality postcard face — builder preview === print-package artwork */
.postcard-preview {
  position: relative;
  margin: var(--sp-8) 0;
  padding: var(--sp-10);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-2xl);
  background: var(--panel-2);
  overflow: auto;
}

.postcard-preview .postcard {
  width: min(100%, var(--pc-print-w));
  height: auto;
  aspect-ratio: 6 / 4;
  max-width: 100%;
}

.postcard {
  box-sizing: border-box;
  position: relative;
  width: var(--pc-print-w);
  height: var(--pc-print-h);
  overflow: hidden;
  border-radius: var(--radius-sm);
  background: var(--panel);
  border: var(--bw-hair) solid var(--panel-3);
  color: var(--text);
}

.pc-bleed {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  padding: var(--pc-bleed);
  overflow: hidden;
}

.pc-safe {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  padding: var(--pc-safe);
  display: flex;
  flex-direction: column;
  gap: var(--pc-zone-gap);
  overflow: hidden;
}

.pc-zone {
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

.pc-zone-brand {
  font-family: var(--font-cond);
  font-stretch: condensed;
  font-weight: var(--fw-display, 800);
  font-size: var(--pc-fs-brand);
  letter-spacing: var(--track-item);
  text-transform: uppercase;
  color: var(--orange);
  flex: 0 0 auto;
  white-space: nowrap;
}

.pc-wordmark {
  color: var(--orange);
}

.pc-biz {
  color: var(--text);
}

.pc-zone-offer {
  font-family: var(--font-cond);
  font-stretch: condensed;
  font-weight: var(--fw-display, 800);
  font-size: var(--pc-fs-offer);
  letter-spacing: var(--track-display, 0.02em);
  text-transform: uppercase;
  color: var(--text-max);
  line-height: 1.15;
  flex: 1 1 auto;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  overflow: hidden;
}

.pc-zone-phone {
  font-family: var(--font-cond);
  font-stretch: condensed;
  font-weight: var(--fw-display, 800);
  font-size: var(--pc-fs-phone);
  letter-spacing: var(--track-item);
  text-transform: uppercase;
  color: var(--orange);
  flex: 0 0 auto;
  white-space: nowrap;
}

.pc-zone-license {
  font-family: var(--font-mono);
  font-size: var(--pc-fs-meta);
  color: var(--steel-2);
  flex: 0 0 auto;
  white-space: nowrap;
}

.pc-zone-addr {
  font-family: var(--font-mono);
  font-size: var(--pc-fs-addr);
  color: var(--steel-2);
  flex: 0 0 auto;
  margin-top: auto;
  white-space: nowrap;
}

/* Stock layout: Classic — orange rail, balanced zones */
.postcard--classic {
  background: var(--panel);
  border-left: var(--bw-callout) solid var(--orange);
}

.postcard--classic .pc-zone-brand {
  border-bottom: var(--bw-hair) solid var(--panel-3);
  padding-bottom: var(--pc-zone-gap);
}

/* Stock layout: Bold — full-bleed offer dominance, phone-forward */
.postcard--bold {
  background: var(--chassis);
  border: none;
}

.postcard--bold .pc-bleed {
  background: var(--orange);
  color: var(--ink);
}

.postcard--bold .pc-zone-brand,
.postcard--bold .pc-wordmark,
.postcard--bold .pc-biz,
.postcard--bold .pc-zone-phone,
.postcard--bold .pc-zone-license,
.postcard--bold .pc-zone-addr {
  color: var(--ink);
}

.postcard--bold .pc-zone-offer {
  font-size: var(--pc-fs-offer-bold);
  color: var(--ink);
  -webkit-line-clamp: 4;
  line-clamp: 4;
  order: 1;
}

.postcard--bold .pc-zone-phone {
  order: 2;
  font-size: calc(var(--pc-fs-phone) + 2pt);
}

.postcard--bold .pc-zone-brand {
  order: 0;
}

.postcard--bold .pc-zone-license {
  order: 3;
}

.postcard--bold .pc-zone-addr {
  order: 4;
}

.postcard--bold .pc-safe {
  display: flex;
}

/* Stock layout: Navajo Service — quiet steel, license featured */
.postcard--navajo {
  background: var(--panel-2);
  border: var(--bw-strong) solid var(--steel);
}

.postcard--navajo .pc-zone-brand {
  color: var(--steel-2);
}

.postcard--navajo .pc-wordmark {
  color: var(--text);
}

.postcard--navajo .pc-zone-offer {
  font-size: var(--pc-fs-offer);
  color: var(--text);
  -webkit-line-clamp: 2;
  line-clamp: 2;
}

.postcard--navajo .pc-zone-license {
  order: 2;
  font-family: var(--font-cond);
  font-stretch: condensed;
  font-size: var(--pc-fs-phone);
  color: var(--text-max);
  text-transform: uppercase;
  letter-spacing: var(--track-item);
  border-top: var(--bw-hair) solid var(--steel);
  border-bottom: var(--bw-hair) solid var(--steel);
  padding: var(--pc-zone-gap) 0;
  white-space: normal;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
}

.postcard--navajo .pc-zone-phone {
  order: 3;
  color: var(--orange);
}

.postcard--navajo .pc-zone-addr {
  order: 4;
}

.pc-watermark {
  position: absolute;
  inset: 20% 0 auto;
  text-align: center;
  font-family: var(--font-cond);
  font-size: clamp(2rem, 8vw, 3.5rem);
  letter-spacing: 0.2em;
  color: var(--orange);
  opacity: 0.28;
  transform: rotate(-18deg);
  pointer-events: none;
  z-index: 2;
}

.preview-wm {
  margin-bottom: var(--sp-4);
}

.pf-dialog {
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-2xl);
  padding: var(--sp-13);
  background: var(--panel);
  color: var(--text);
  max-width: 420px;
}

.pf-dialog::backdrop {
  background: var(--map-bed);
}

.dialog-actions {
  display: flex;
  gap: var(--sp-6);
  justify-content: flex-end;
  margin-top: var(--sp-10);
}

.admin-action-form {
  margin: var(--sp-10) 0;
  padding: var(--sp-8);
  border: var(--bw-hair) solid var(--panel-3);
  border-radius: var(--radius-xl);
}

.admin-action-form label {
  display: grid;
  gap: var(--sp-2);
  margin-bottom: var(--sp-6);
}

.admin-action-form input[type='text'] {
  min-height: var(--touch-min);
  padding: var(--sp-4) var(--sp-6);
  border-radius: var(--radius-md);
  border: var(--bw-hair) solid var(--panel-3);
  background: var(--panel);
  color: var(--text);
}

.toast-inline {
  padding: var(--sp-6) var(--sp-8);
  border-radius: var(--radius-xl);
  border-left: var(--bw-callout) solid var(--orange);
  background: var(--panel-2);
  margin: var(--sp-6) 0;
}

.toast-inline.err {
  border-left-color: var(--yellow);
}

@media (max-width: 640px) {
  .admin-stat-grid {
    grid-template-columns: 1fr 1fr;
  }

  .admin-table th,
  .admin-table td {
    padding: var(--sp-4) var(--sp-6);
  }
}

/* —— P4-4 / P4-D contact research — credit meter —— */
.credits,
.credits-nav,
.credit-meter,
.credit-meter-nav {
  font-family: var(--font-cond);
  font-stretch: condensed;
  font-weight: var(--fw-display, 800);
  font-size: var(--fs-badge, 11px);
  letter-spacing: 0.1em;
  color: var(--steel-2);
  text-transform: uppercase;
}

.credit-meter {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  padding: var(--sp-8);
  border-radius: var(--radius-xl);
  border: var(--bw-hair) solid var(--panel-3);
  background: var(--panel-2);
  margin: var(--sp-6) 0;
}

.credit-meter-line {
  margin: 0;
  font-size: var(--fs-display-4);
  letter-spacing: var(--track-display, 0.02em);
  color: var(--text);
}

.credit-meter-n {
  color: var(--orange);
  font-variant-numeric: tabular-nums;
}

.credit-meter-sub {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--fs-mono-4);
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
}

.credits-nav,
.credit-meter-nav {
  text-decoration: none;
  white-space: nowrap;
}

.credits-nav:hover,
.credit-meter-nav:hover {
  color: var(--orange);
}

.credit-meter-nav .credit-meter-n {
  color: var(--orange);
}

.terr-credits {
  margin-top: var(--sp-4);
}

.lead-research-block {
  margin-top: var(--sp-8);
  display: flex;
  flex-direction: column;
  gap: var(--sp-6);
}

.lead-research-block .btn-secondary,
.lead-research-block .btn-disabled {
  align-self: flex-start;
}

.research-result {
  padding: var(--sp-8);
  border-radius: var(--radius-xl);
  border: var(--bw-hair) solid var(--panel-3);
  background: var(--panel-2);
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
}

.research-result h3 {
  margin: 0;
  font-family: var(--font-cond);
  font-stretch: condensed;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-size: var(--fs-label, 12px);
  color: var(--steel-2);
}

.research-field {
  margin: 0;
}

.research-pending {
  margin: 0;
  color: var(--chip-researching-fg);
  font-family: var(--font-cond);
  font-stretch: condensed;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.research-nomatch p {
  margin: 0;
}

.credit-pack-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-6);
  margin: var(--sp-8) 0;
}

.credit-pack-form {
  margin: 0;
}

.checkbox-row {
  display: flex !important;
  align-items: center;
  gap: var(--sp-4);
  grid-template-columns: none !important;
}

.research-admin-result {
  margin: var(--sp-8) 0;
}

/* —— P4-5 Data runs / factory observability —— */

.data-run-actions {
  display: flex;
  flex-direction: column;
  gap: var(--sp-6);
  margin: var(--sp-8) 0;
}

.data-run-live {
  margin: var(--sp-8) 0;
  padding: var(--sp-8);
  border: var(--bw-hair) solid var(--panel-3);
  background: var(--panel-2);
  border-radius: var(--radius-xl);
}

.long-job-estimate {
  font-family: var(--font-cond);
  font-stretch: condensed;
  letter-spacing: 0.04em;
  color: var(--orange);
  margin: 0 0 var(--sp-4);
}

.data-run-log {
  margin: 0;
  padding: var(--sp-8);
  max-height: 28rem;
  overflow: auto;
  background: var(--panel-3);
  border: var(--bw-hair) solid var(--steel);
  border-radius: var(--radius-lg);
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: var(--fs-meta, 12px);
  color: var(--text);
  white-space: pre-wrap;
  word-break: break-word;
}

#failed-data-runs-attention a {
  color: inherit;
  text-decoration: underline;
}
