:root {
  --teal: #09bcbb;
  --teal-bright: #19cfce;
  --teal-dark: #007f82;
  --teal-deep: #065a5e;
  --teal-wash: #ddf7f7;
  --ink: #201f1f;
  --ink-soft: #30383b;
  --paper: #ffffff;
  --canvas: #f3f6f6;
  --mist: #e8eeee;
  --line: #d7dfdf;
  --muted: #667174;
  --gold: #f3b62f;
  --coral: #e65d4c;
  --shadow: 0 22px 60px rgba(17, 19, 21, 0.12);
  --shadow-small: 0 8px 24px rgba(17, 19, 21, 0.08);
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  min-width: 320px;
  color: var(--ink);
  background: var(--canvas);
  font-family: Montserrat, "Avenir Next", Avenir, "Segoe UI", Helvetica, Arial, sans-serif;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.55;
  text-rendering: optimizeLegibility;
}
img { display: block; max-width: 100%; }
a { color: var(--teal-dark); text-decoration: none; }
a:hover { text-decoration: underline; }
button, input, select, textarea { font: inherit; }
.wrap { width: min(100% - 40px, 1280px); margin-inline: auto; }

a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
textarea:focus-visible, summary:focus-visible {
  outline: 3px solid var(--teal-dark);
  outline-offset: 3px;
}
.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;
}
.skip-link {
  position: fixed;
  z-index: 10000;
  left: 16px;
  top: 12px;
  transform: translateY(-160%);
  padding: 10px 15px;
  color: #fff;
  background: var(--ink);
}
.skip-link:focus { transform: translateY(0); }

/* Brand header */
.hdr {
  position: sticky;
  z-index: 100;
  top: 0;
  background: rgba(255, 255, 255, 0.97);
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(14px);
}
.hdr-in {
  min-height: 78px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
}
.brand {
  position: relative;
  flex: 0 0 325px;
  width: 325px;
  height: 69px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--ink);
  perspective: 560px;
}
.header-brand-pin {
  width: 52px;
  height: auto;
  flex: 0 0 auto;
  transform-origin: 50% 92%;
  transform-style: preserve-3d;
  backface-visibility: hidden;
  will-change: transform, opacity;
  animation: brand-pin-drop 1680ms 100ms cubic-bezier(0.18, 0.75, 0.2, 1) backwards;
  transition: transform 480ms cubic-bezier(0.18, 0.75, 0.2, 1), filter 480ms ease;
}
.header-wordmark {
  display: inline-flex;
  align-items: baseline;
  font-family: Montserrat, "Avenir Next", Avenir, sans-serif;
  font-size: 23px;
  font-weight: 700;
  letter-spacing: -0.055em;
  line-height: 1;
  white-space: nowrap;
}
.header-wordmark > span { position: relative; }
.header-wordmark > span::after {
  content: attr(data-shimmer);
  position: absolute;
  inset: 0;
  color: transparent;
  background: linear-gradient(108deg,
    transparent 31%,
    rgba(255, 255, 255, 0.96) 47%,
    rgba(173, 247, 247, 0.9) 53%,
    transparent 69%);
  background-size: 260% 100%;
  background-position: 130% 0;
  background-repeat: no-repeat;
  -webkit-background-clip: text;
  background-clip: text;
  pointer-events: none;
  opacity: 0;
  will-change: background-position, opacity;
  animation: brand-wordmark-shimmer 1380ms cubic-bezier(0.18, 0.7, 0.2, 1) both;
}
.header-wordmark-light::after { animation-delay: 720ms; }
.header-wordmark-teal::after { animation-delay: 920ms; }
.header-wordmark-domain::after { animation-delay: 1160ms; }
.header-wordmark-light, .header-wordmark-domain { color: var(--ink); }
.header-wordmark-teal { color: var(--teal); }
.header-wordmark-domain { font-size: 0.64em; letter-spacing: -0.04em; }
.brand:hover { text-decoration: none; }
.brand:hover .header-brand-pin {
  transform: translateY(-4px) rotateZ(-3deg) scale(1.025);
  filter: drop-shadow(0 7px 5px rgba(15, 21, 24, 0.16));
}
.footer-brand:hover .footer-brand-pin { transform: translateY(-3px) rotate(-2deg); }

@keyframes brand-pin-drop {
  0% {
    opacity: 0;
    transform: translate3d(0, -15px, 0) rotateY(-82deg) rotateZ(-3deg) scale(0.94);
  }
  32% { opacity: 1; }
  64% {
    transform: translate3d(0, 2px, 0) rotateY(360deg) rotateZ(0.9deg) scale(1.014);
  }
  79% {
    transform: translate3d(0, -1.5px, 0) rotateY(360deg) rotateZ(-0.55deg) scale(0.998);
  }
  91% {
    transform: translate3d(0, 0.5px, 0) rotateY(360deg) rotateZ(0.18deg) scale(1.003);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) rotateY(360deg) rotateZ(0) scale(1);
  }
}
@keyframes brand-wordmark-shimmer {
  0% { opacity: 0; background-position: 130% 0; }
  14% { opacity: 0.92; }
  82% { opacity: 0.92; }
  100% { opacity: 0; background-position: -35% 0; }
}
.hdr nav { display: flex; align-items: center; gap: clamp(18px, 2.5vw, 34px); }
.hdr nav a {
  position: relative;
  padding: 9px 0;
  color: var(--ink);
  font-size: 14px;
  font-weight: 600;
  white-space: nowrap;
}
.hdr nav a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: 3px;
  height: 3px;
  background: var(--teal);
  transition: right 160ms ease;
}
.hdr nav a:hover { text-decoration: none; }
.hdr nav a:hover::after { right: 0; }

/* Type and shared controls */
h1, h2, h3 {
  color: var(--ink);
  font-family: Montserrat, "Avenir Next", Avenir, sans-serif;
  font-weight: 700;
  letter-spacing: -0.045em;
}
h1 { font-size: clamp(40px, 5vw, 72px); line-height: 0.98; }
h2 { font-size: clamp(31px, 3.3vw, 48px); line-height: 1.03; }
h3 { font-size: 21px; line-height: 1.15; }
.eyebrow, .kicker {
  color: var(--teal-dark);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.14em;
  line-height: 1.2;
  text-transform: uppercase;
}
.muted { color: var(--muted); }
.small { font-size: 13px; }
.lede { max-width: 780px; color: var(--ink-soft); font-size: clamp(17px, 2vw, 20px); }
.text-link { color: var(--ink); font-size: 14px; font-weight: 800; border-bottom: 3px solid var(--teal); }
.text-link:hover { color: var(--teal-dark); text-decoration: none; }
.crumbs { margin: 24px 0 10px; color: var(--muted); font-size: 13px; }
.crumbs a { color: var(--ink-soft); }
.btn {
  display: inline-flex;
  min-height: 48px;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 11px 22px;
  color: #fff;
  background: var(--ink);
  border: 2px solid var(--ink);
  border-radius: 5px;
  font-size: 14px;
  font-weight: 800;
  cursor: pointer;
  transition: transform 150ms ease, background 150ms ease;
}
.btn:hover { color: #fff; background: var(--teal-dark); border-color: var(--teal-dark); text-decoration: none; transform: translateY(-1px); }
.btn-small { min-height: 42px; padding: 8px 17px; }
.btn-light, .cta-band .btn { color: var(--ink); background: #fff; border-color: #fff; }
.btn-light:hover, .cta-band .btn:hover { color: #fff; background: var(--ink); border-color: var(--ink); }
.btn-secondary { color: var(--ink); background: #fff; border-color: var(--ink); }

/* Search */
.site-search { width: min(100%, 740px); margin-top: 30px; }
.site-search label { display: block; margin-bottom: 9px; color: var(--ink); font-size: 13px; font-weight: 800; }
.search-row {
  display: flex;
  gap: 8px;
  padding: 7px;
  background: #fff;
  border: 2px solid var(--ink);
  border-radius: 6px;
  box-shadow: 7px 7px 0 var(--teal);
}
.search-row input {
  min-width: 0;
  flex: 1;
  padding: 11px 13px;
  color: var(--ink);
  background: #fff;
  border: 0;
  outline: 0;
  font-size: 16px;
}
.location-search {
  min-height: 46px;
  padding: 8px 13px;
  color: var(--teal-deep);
  background: var(--teal-wash);
  border: 0;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}
.nearby-status { min-height: 20px; margin-top: 9px; color: var(--muted); font-size: 12px; }
.site-search.compact { margin: 24px 0 34px; }
.site-search.compact .search-row { box-shadow: 5px 5px 0 var(--teal-wash); border-color: var(--ink-soft); }

/* Home hero */
.home-main { padding: 0; }
.hero { overflow: hidden; padding: clamp(36px, 5vw, 72px) 0 64px; background: #fff; }
.hero-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(430px, 0.92fr); align-items: center; gap: clamp(36px, 6vw, 86px); }
.hero-copy { position: relative; z-index: 2; }
.hero h1 { max-width: 720px; margin: 15px 0 20px; font-size: clamp(55px, 6.3vw, 94px); }
.hero h1 em { color: var(--teal-dark); font-style: normal; }
.hero-lede { max-width: 680px; color: var(--ink-soft); font-size: clamp(18px, 2vw, 22px); }
.hero-media {
  position: relative;
  min-height: 550px;
  overflow: hidden;
  background: var(--teal-wash);
  clip-path: polygon(0 0, 100% 0, 100% 92%, 90% 100%, 0 100%);
  box-shadow: var(--shadow);
}
.hero-media::before { content: ""; position: absolute; z-index: 2; inset: 0; border: 9px solid rgba(0, 181, 183, 0.2); pointer-events: none; }
.hero-media > img { width: 100%; height: 550px; object-fit: cover; }
.inspection-tag {
  position: absolute;
  z-index: 3;
  right: 0;
  bottom: 0;
  min-width: 245px;
  padding: 22px 26px 20px 39px;
  color: #fff;
  background: var(--ink);
  clip-path: polygon(22px 0, 100% 0, 100% 100%, 0 100%, 0 22px);
}
.inspection-tag span, .inspection-tag small { display: block; color: #b9c5c5; font-size: 11px; letter-spacing: 0.09em; text-transform: uppercase; }
.inspection-tag strong { display: block; margin: 2px 0; color: var(--teal-bright); font-size: 28px; }
.hero-proof { display: flex; flex-wrap: wrap; gap: 18px 30px; margin-top: 28px; }
.hero-proof span { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.07em; }
.hero-proof strong { display: block; color: var(--ink); font-size: 17px; letter-spacing: 0; text-transform: none; }
.coverage-strip { color: #fff; background: var(--ink); }
.coverage-strip .wrap { min-height: 68px; display: flex; align-items: center; gap: 22px; }
.coverage-strip strong { color: var(--teal-bright); }
.coverage-strip span { flex: 1; color: #cdd5d5; font-size: 14px; }
.coverage-strip a { color: #fff; font-size: 13px; font-weight: 800; border-bottom: 2px solid var(--teal); }
.section-block { padding-block: 76px; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 28px; margin-bottom: 28px; }
.section-heading .eyebrow { margin-bottom: 10px; }
.market-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.market-card { min-height: 270px; display: grid; grid-template-rows: 168px 1fr; color: var(--ink); background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow-small); overflow: hidden; transition: transform 160ms ease, box-shadow 160ms ease; }
.market-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); text-decoration: none; }
.market-photo { background-position: center; background-size: cover; filter: saturate(0.75); transition: filter 160ms ease, transform 260ms ease; }
.market-card:hover .market-photo { filter: saturate(1); transform: scale(1.025); }
.market-copy { position: relative; display: flex; flex-direction: column; padding: 15px 18px 18px; border-top: 5px solid var(--teal); }
.market-copy::after { content: "→"; position: absolute; right: 18px; top: 20px; font-size: 22px; font-weight: 800; }
.market-copy strong { padding-right: 32px; font-size: 21px; line-height: 1.2; }
.market-copy > span:last-child { margin-top: 4px; color: var(--muted); font-size: 13px; }
.market-state { color: var(--teal-dark); font-size: 10px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.care-story { padding-block: 82px; color: #fff; background: var(--ink); }
.care-grid { display: grid; grid-template-columns: 0.75fr 1.25fr 0.65fr; align-items: center; gap: clamp(24px, 4vw, 58px); }
.care-copy h2 { margin: 12px 0 18px; color: #fff; }
.care-copy > p:not(.eyebrow) { max-width: 620px; color: #c8d2d2; font-size: 18px; }
.care-copy .eyebrow { color: var(--teal-bright); }
.care-photo { overflow: hidden; border: 1px solid #384144; }
.care-photo img { width: 100%; height: 100%; object-fit: cover; }
.care-photo-main { height: 500px; transform: translateY(-22px); }
.care-photo-small { height: 380px; transform: translateY(28px); }
.service-checks { display: flex; flex-wrap: wrap; gap: 9px; margin: 26px 0 30px; }
.service-checks span { padding: 7px 11px; color: #fff; border: 1px solid #526064; font-size: 12px; font-weight: 700; }
.service-checks span::before { content: "+"; margin-right: 7px; color: var(--teal-bright); font-weight: 900; }
.steps { display: grid; grid-template-columns: repeat(3, 1fr); border-block: 1px solid var(--line); }
.step { min-height: 230px; padding: 28px 32px; background: #fff; border-right: 1px solid var(--line); }
.step:last-child { border-right: 0; }
.step .n { display: block; margin-bottom: 28px; color: var(--teal-dark); font: 800 13px/1 "SFMono-Regular", Consolas, monospace; }
.step h3 { margin-bottom: 8px; font-size: 23px; }
.step p { color: var(--muted); font-size: 14px; }
.cta-band { margin-top: 62px; padding: 36px 40px; display: flex; align-items: center; justify-content: space-between; gap: 32px; color: #fff; background: var(--teal-dark); }
.cta-band h2 { margin: 5px 0 7px; color: #fff; }
.cta-band p:not(.eyebrow) { max-width: 750px; color: #dffafa; }
.cta-band .eyebrow { color: #fff; }

/* National locations and state page */
.locations-page, .state-page, .search-page, .prose, .detail-page, .town-page { padding-bottom: 76px; }
.page-intro { max-width: 900px; padding: 28px 0 6px; }
.page-intro h1 { margin: 12px 0 18px; }
.coverage-key { display: flex; gap: 22px; margin: 2px 0 20px; color: var(--muted); font-size: 12px; font-weight: 700; }
.coverage-key span { display: inline-flex; align-items: center; gap: 7px; }
.dot { width: 10px; height: 10px; display: inline-block; border-radius: 50%; }
.dot.live { background: var(--teal); }
.dot.queued { background: #c5cece; }
.state-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.state-card { min-height: 86px; display: grid; grid-template-columns: 48px 1fr auto; align-items: center; gap: 13px; padding: 14px 17px; color: var(--ink); background: #fff; border: 1px solid var(--line); }
.state-card.live { border-left: 5px solid var(--teal); box-shadow: var(--shadow-small); }
.state-card.live:hover { border-color: var(--teal); text-decoration: none; }
.state-card.queued { color: #6e787a; background: #eef2f2; }
.state-abbr { font: 800 15px/1 "SFMono-Regular", Consolas, monospace; color: var(--teal-dark); }
.state-card.queued .state-abbr { color: #8a9496; }
.state-card strong, .state-card small { display: block; }
.state-card small { margin-top: 2px; color: var(--muted); font-size: 11px; }
.state-card b { color: var(--teal-dark); font-size: 12px; }
.state-intro { max-width: none; display: grid; grid-template-columns: 1fr 400px; align-items: center; gap: 50px; }
.state-intro img { width: 100%; height: 260px; object-fit: cover; box-shadow: 10px 10px 0 var(--teal); }
.town-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.town-card { min-height: 88px; display: grid; grid-template-columns: 42px 1fr auto; align-items: center; gap: 15px; padding: 15px 18px; color: var(--ink); background: #fff; border: 1px solid var(--line); }
.town-card:hover { border-color: var(--teal); box-shadow: var(--shadow-small); text-decoration: none; }
.town-card strong, .town-card small { display: block; }
.town-card strong { font-size: 18px; }
.town-card small { margin-top: 2px; color: var(--muted); font-size: 12px; }
.town-card b { color: var(--teal-dark); font-size: 11px; text-transform: uppercase; }
.map-pin-mini, .pin-mark {
  position: relative;
  width: 28px;
  height: 36px;
  display: inline-block;
  background: var(--teal);
  border: 2px solid #fff;
  border-radius: 55% 55% 55% 0;
  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.16);
  transform: rotate(-45deg);
}
.map-pin-mini::after, .pin-mark::after { content: ""; position: absolute; width: 9px; height: 9px; left: 8px; top: 8px; background: #fff; border-radius: 50%; }

/* Town listings and map */
.town-intro { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 32px; padding: 22px 0 4px; }
.town-intro h1 { margin: 9px 0 14px; }
.town-intro p:not(.eyebrow) { max-width: 820px; color: var(--muted); font-size: 17px; }
.town-stat { min-width: 190px; padding: 18px 22px; color: #fff; background: var(--ink); border-top: 6px solid var(--teal); }
.town-stat strong, .town-stat span, .town-stat small { display: block; }
.town-stat strong { color: var(--teal-bright); font-size: 38px; line-height: 1; }
.town-stat span { font-size: 13px; font-weight: 800; }
.town-stat small { margin-top: 4px; color: #aeb9ba; font-size: 11px; }
.filters { display: flex; align-items: end; flex-wrap: wrap; gap: 11px; margin: 28px 0 8px; padding: 15px; background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow-small); }
.filters > div { display: flex; flex-direction: column; gap: 4px; }
.filters label { color: var(--ink); font-size: 11px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; }
.filters select { min-width: 190px; padding: 10px 36px 10px 11px; color: var(--ink); background: #fff; border: 1px solid #bfc9ca; border-radius: 3px; }
.filters select:disabled { color: #899294; background: #edf1f1; cursor: not-allowed; }
.clear-filter { align-self: center; padding: 8px 4px; font-size: 13px; font-weight: 800; }
.listing-tools { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.compare-check { display: inline-flex; align-items: center; gap: 6px; color: var(--ink-soft); font-size: 11px; font-weight: 700; cursor: pointer; }
.compare-check input { width: 16px; height: 16px; accent-color: var(--teal-dark); }
.save-cleaner, .text-button, .compare-clear, .listing-correction button, .status-alert button {
  padding: 0;
  color: var(--teal-deep);
  background: transparent;
  border: 0;
  border-bottom: 1px solid currentColor;
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
}
.listing-website { color: var(--teal-deep); font-size: 11px; font-weight: 800; white-space: nowrap; border-bottom: 1px solid currentColor; }
.listing-website:hover { color: var(--ink); text-decoration: none; }
.save-cleaner.is-saved, [data-save-profile].is-saved { color: var(--ink); background: var(--teal-wash); }
.open-badge { margin-left: auto; padding: 4px 7px; font-size: 9px; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; }
.open-badge.open { color: #075f3c; background: #daf5e8; }
.open-badge.closed { color: #7a3030; background: #f8e3e0; }
.distance-badge { margin-left: 10px; padding: 3px 6px; color: var(--teal-deep); background: var(--teal-wash); font-size: 10px; font-weight: 800; white-space: nowrap; }
.best-for { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 10px; }
.best-for strong { color: var(--muted); font-size: 9px; letter-spacing: 0.08em; text-transform: uppercase; }
.best-for span { padding: 4px 7px; color: var(--ink); background: #fff6d8; border: 1px solid #f0d68a; font-size: 9px; font-weight: 700; }
.inactive-list { margin: 26px 0; padding: 17px 19px; background: #fff; border: 1px solid var(--line); }
.inactive-list summary { color: var(--muted); font-size: 12px; font-weight: 800; cursor: pointer; }
.inactive-list ul { margin: 13px 0 0 18px; }
.inactive-list li { margin: 7px 0; color: var(--muted); font-size: 11px; }
.inactive-list li span { display: block; }
.town-action-band {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  margin: 42px 0 0;
  padding: 30px 34px;
  color: #fff;
  background: var(--teal-deep);
  border-left: 9px solid var(--teal-bright);
}
.town-action-band h2 { margin: 5px 0; color: #fff; font-size: clamp(27px, 3vw, 42px); }
.town-action-band p:not(.eyebrow) { max-width: 720px; color: #d7eeee; }
.town-action-band .eyebrow { color: var(--teal-bright); }
.compare-dock { position: fixed; z-index: 130; right: 24px; bottom: 24px; display: flex; align-items: center; gap: 13px; padding: 12px 14px; color: #fff; background: var(--ink); box-shadow: var(--shadow); }
.compare-dock[hidden] { display: none; }
.compare-dock > span { font-size: 11px; }
.compare-dock .compare-clear { color: #fff; }

.site-dialog { width: min(100% - 30px, 820px); max-height: min(90vh, 900px); margin: auto; padding: 0; color: var(--ink); background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow); overflow: auto; }
.site-dialog::backdrop { background: rgba(17, 19, 21, 0.7); backdrop-filter: blur(4px); }
.dialog-close { position: absolute; z-index: 2; top: 14px; right: 16px; width: 40px; height: 40px; color: var(--ink); background: var(--teal-wash); border: 0; font-size: 25px; cursor: pointer; }
.tool-form, .compare-shell { position: relative; display: flex; flex-direction: column; gap: 15px; padding: clamp(25px, 5vw, 48px); }
.tool-form h2, .compare-shell h2 { max-width: 680px; margin-top: -5px; }
.dialog-lede { max-width: 680px; color: var(--muted); font-size: 13px; }
.tool-form label, .tool-form legend { color: var(--ink); font-size: 11px; font-weight: 750; }
.tool-form label { display: flex; flex-direction: column; gap: 5px; }
.tool-form input[type="text"], .tool-form input[type="email"], .tool-form input[type="tel"], .tool-form input[type="date"], .tool-form input[type="file"], .tool-form select, .tool-form textarea {
  width: 100%; padding: 10px 11px; color: var(--ink); background: #fff; border: 1px solid #b8c3c4; border-radius: 2px;
}
.tool-form fieldset { padding: 0; border: 0; }
.tool-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.garment-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 7px; margin-top: 7px; }
.garment-grid label { position: relative; cursor: pointer; }
.garment-grid input { position: absolute; opacity: 0; }
.garment-grid span { min-height: 50px; display: flex; align-items: center; justify-content: center; padding: 8px; text-align: center; background: var(--canvas); border: 1px solid var(--line); }
.garment-grid input:checked + span { color: var(--teal-deep); background: var(--teal-wash); border-color: var(--teal-dark); }
.form-status { min-height: 20px; color: var(--teal-deep); font-size: 12px; font-weight: 750; }
.compact-dialog { max-width: 620px; }
.compare-dialog { width: min(100% - 30px, 1100px); }
.compare-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.compare-table th, .compare-table td { min-width: 150px; padding: 13px; text-align: left; vertical-align: top; border: 1px solid var(--line); }
.compare-table th { min-width: 120px; color: var(--muted); background: var(--canvas); font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; }
.compare-table tr:first-child td { color: var(--ink); background: var(--teal-wash); font-weight: 800; }

.status-alert { display: flex; align-items: center; gap: 16px; margin: 25px 0 14px; padding: 16px 18px; color: #612c26; background: #fff0ed; border-left: 6px solid var(--coral); }
.status-alert strong { white-space: nowrap; }
.status-alert span { color: #75534f; font-size: 12px; }
.status-alert button { margin-left: auto; color: #612c26; white-space: nowrap; }
.listing-correction { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 34px; padding: 14px 17px; background: var(--mist); font-size: 11px; }
.price-builder-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; margin-top: 17px; }
.price-builder-grid label { display: grid; grid-template-columns: 1fr auto 62px; align-items: center; gap: 9px; padding: 11px; background: #fff; border: 1px solid var(--line); }
.price-builder-grid label span { font-size: 10px; }
.price-builder-grid label strong { font-size: 11px; }
.price-builder-grid input { width: 62px; padding: 8px; border: 1px solid #b8c3c4; }
.price-total { display: flex; justify-content: flex-end; align-items: baseline; gap: 14px; margin-top: 14px; padding: 17px; color: #fff; background: var(--ink); }
.price-total span { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; }
.price-total strong { color: var(--teal-bright); font-size: 29px; }
.saved-page { padding-bottom: 80px; }
.saved-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 13px; margin-top: 30px; }
.saved-card { padding: 23px; background: #fff; border: 1px solid var(--line); border-top: 5px solid var(--teal); }
.saved-card h2 { margin-bottom: 8px; font-size: 24px; }
.saved-card .text-button { margin-top: 16px; }
.owner-tools { margin: 46px 0; padding: 32px; background: var(--ink); }
.owner-tools h2 { margin: 8px 0 20px; color: #fff; }
.owner-tools .eyebrow { color: var(--teal-bright); }
.owner-tools > p:last-child { margin-top: 18px; color: #bec8c9; }
.owner-tool-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.owner-tool-grid article { padding: 18px; background: #2b2d2e; border-left: 4px solid var(--teal); }
.owner-tool-grid strong, .owner-tool-grid span { display: block; }
.owner-tool-grid strong { color: #fff; font-size: 14px; }
.owner-tool-grid span { margin-top: 5px; color: #c8d0d1; font-size: 11px; }
.results-count { margin: 12px 0; color: var(--muted); font-size: 12px; }
.town-results-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(390px, 0.64fr); align-items: start; gap: 22px; }
.listing-column { min-width: 0; }
.card { margin-bottom: 13px; background: #fff; border: 1px solid var(--line); }
.listing-card { display: grid; grid-template-columns: 150px 1fr; min-height: 205px; transition: border 140ms ease, box-shadow 140ms ease; }
.listing-card:hover, .listing-card:focus-within { border-color: var(--teal); box-shadow: var(--shadow-small); }
.listing-card.featured { border: 2px solid var(--gold); }
.listing-visual { position: relative; min-height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--ink); background: #fff; border-right: 1px solid var(--line); overflow: hidden; }
.listing-visual.has-business-media img { width: 100%; height: 100%; padding: 14px; object-fit: contain; }
.listing-visual.has-business-media.photo img { padding: 0; object-fit: cover; }
.listing-visual.media-fallback { color: var(--teal-deep); background: var(--teal-wash); }
.listing-visual.media-fallback::before { content: ""; position: absolute; width: 120px; height: 120px; right: -66px; bottom: -70px; background: var(--teal); transform: rotate(45deg); opacity: 0.28; }
.listing-initials { position: relative; z-index: 1; font-size: 36px; font-weight: 600; letter-spacing: -0.05em; }
.listing-rank-chip, .business-media-label { position: absolute; z-index: 2; padding: 5px 7px; color: #fff; background: rgba(32, 31, 31, 0.9); font-size: 8px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }
.listing-rank-chip { left: 7px; top: 7px; }
.business-media-label { right: 7px; bottom: 7px; }
.business-media-label a, .profile-media-label a { color: #fff; text-decoration: underline; }
.rank-label { margin-bottom: 4px; color: #aeb8ba; font-size: 8px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; }
.rank { position: relative; z-index: 1; color: #fff; font: 700 38px/1 Montserrat, "Avenir Next", sans-serif; }
.listing-visual .pin-mark { position: absolute; right: 10px; bottom: 9px; width: 16px; height: 21px; border-width: 1px; }
.listing-visual .pin-mark::after { width: 5px; height: 5px; left: 4px; top: 4px; }
.card-body { min-width: 0; padding: 18px 20px 17px; }
.listing-title { display: flex; justify-content: space-between; gap: 18px; }
.listing-title h2 { margin: 0 0 2px; font-size: 25px; line-height: 1.05; }
.listing-title h2 a { color: var(--ink); }
.profile-arrow { align-self: start; white-space: nowrap; color: var(--teal-dark); font-size: 11px; font-weight: 800; text-transform: uppercase; border-bottom: 2px solid var(--teal); }
.profile-arrow:hover { text-decoration: none; }
.card p { margin: 6px 0; font-size: 14px; }
.card .addr { color: var(--muted); font-size: 12px; }
.location-dot { width: 7px; height: 7px; display: inline-block; margin: 0 7px 1px 1px; background: var(--teal); border-radius: 50%; }
.listing-summary { color: var(--ink-soft); }
.card.slim { padding: 16px 20px; }
.card.slim h3 a { color: var(--ink); }
.feat-tag { display: inline-block; margin-left: 8px; padding: 3px 8px; vertical-align: middle; color: var(--ink); background: var(--gold); border-radius: 2px; font: 800 9px/1.2 Montserrat, "Avenir Next", sans-serif; letter-spacing: 0.08em; text-transform: uppercase; }
.stars { color: var(--gold); letter-spacing: 1px; }
.rating { margin: 5px 0; font-size: 14px; }
.rating strong { color: var(--ink); }
.rating .muted { font-size: 12px; }
.chips { display: flex; flex-wrap: wrap; gap: 5px; margin: 9px 0; }
.chips span { padding: 3px 8px; color: #275052; background: var(--teal-wash); border: 1px solid #c2ecec; font-size: 10px; font-weight: 700; text-transform: capitalize; }
.price-note { padding: 11px 13px; color: #244445; background: #edfafa; border-left: 3px solid var(--teal); font-size: 13px; }
.map-rail { position: sticky; top: 98px; }
.map-card { overflow: hidden; background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow-small); }
.map-card-head { min-height: 78px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 14px 17px; background: #fff; border-bottom: 1px solid var(--line); }
.map-card-head .eyebrow, .map-card-head strong { display: block; }
.map-card-head .eyebrow { margin-bottom: 3px; font-size: 9px; }
.map-card-head strong { font-size: 17px; }
.map-card-head a { white-space: nowrap; font-size: 11px; font-weight: 800; }
.google-map { width: 100%; height: 660px; background: #dfe8e8; }
.map-note { padding: 9px 14px; color: var(--muted); background: #fff; font-size: 10px; }
.map-unavailable { min-height: 240px; padding: 34px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; background: #fff; border: 1px solid var(--line); }
.map-unavailable .pin-mark { margin-bottom: 16px; }
.map-unavailable p { max-width: 380px; margin: 5px 0 18px; color: var(--muted); font-size: 13px; }
.map-popover { min-width: 190px; max-width: 260px; display: flex; flex-direction: column; gap: 3px; padding: 5px 2px; color: var(--ink); font-family: Montserrat, "Avenir Next", sans-serif; }
.map-popover-rank { color: var(--teal-dark); font-size: 9px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.map-popover strong { font-size: 15px; }
.map-popover span:not(.map-popover-rank) { color: var(--muted); font-size: 11px; }
.map-popover a { margin-top: 5px; font-size: 11px; font-weight: 800; }

/* Business profile */
.profile-hero { position: relative; display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(480px, 1.1fr); gap: 46px; align-items: center; padding: 26px 0 56px; }
.profile-copy { position: relative; min-width: 0; padding-top: 0; }
.profile-copy h1 { max-width: 710px; margin: 11px 0 13px; font-size: clamp(45px, 5.4vw, 73px); }
.profile-business-identity { position: relative; width: min(360px, 100%); height: 132px; margin-bottom: 25px; display: flex; align-items: center; justify-content: center; background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow-small); overflow: hidden; }
.profile-business-identity img { width: 100%; height: 100%; padding: 14px 18px; object-fit: contain; }
.profile-business-identity.photo img { padding: 0; object-fit: cover; }
.profile-media-label { position: absolute; z-index: 2; top: 8px; right: 8px; max-width: calc(100% - 16px); padding: 5px 8px; color: #fff; background: rgba(32, 31, 31, 0.92); font-size: 8px; font-weight: 600; line-height: 1.35; text-align: right; }
.profile-rank-chip { position: absolute; left: 8px; bottom: 8px; padding: 5px 8px; color: #fff; background: rgba(32, 31, 31, 0.92); font-size: 9px; font-weight: 600; text-transform: uppercase; }
.profile-rank-compact { width: fit-content; margin-bottom: 25px; display: flex; align-items: center; gap: 10px; padding: 8px 12px; color: var(--ink-soft); background: #fff; border: 1px solid var(--line); border-left: 5px solid var(--teal); }
.profile-rank-compact strong { color: var(--teal-dark); font-size: 24px; line-height: 1; }
.profile-rank-compact span { font-size: 10px; font-weight: 600; text-transform: uppercase; }
.profile-address { max-width: 620px; margin-top: 9px; color: var(--ink-soft); font-size: 16px; }
.hours-line { margin-top: 5px; color: var(--muted); font-size: 13px; }
.profile-website-line,
.profile-email-line { max-width: 620px; margin-top: 5px; color: var(--muted); font-size: 12px; }
.profile-website-line a,
.profile-email-line a { overflow-wrap: anywhere; color: var(--teal-dark); font-weight: 700; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.profile-media { position: relative; height: 510px; display: grid; grid-template-columns: 1.45fr 0.65fr; gap: 8px; overflow: hidden; background: var(--ink); box-shadow: var(--shadow); }
.profile-media img { width: 100%; height: 100%; object-fit: cover; }
.profile-media-side { filter: saturate(0.75); }
.editorial-label { position: absolute; right: 0; bottom: 0; padding: 9px 12px; color: #fff; background: rgba(17, 19, 21, 0.9); font-size: 9px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.action-bar { display: flex; flex-wrap: wrap; gap: 7px; margin: 18px 0 10px; }
.action { min-height: 42px; display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; color: var(--ink); background: #fff; border: 1px solid #aebbbc; border-radius: 3px; font-size: 12px; font-weight: 800; }
.action:hover { color: var(--teal-dark); border-color: var(--teal); text-decoration: none; }
.action.primary { color: #fff; background: var(--teal-dark); border-color: var(--teal-dark); }
.verified-strip { display: flex; align-items: center; justify-content: space-between; gap: 14px; max-width: 640px; padding: 9px 1px; color: var(--muted); border-top: 1px solid var(--line); font-size: 11px; }
.verified-strip a { white-space: nowrap; font-weight: 800; }
.profile-section { padding: 62px 0; border-top: 1px solid var(--line); }
.profile-section .section-heading { margin-bottom: 24px; }
.our-review-meta { max-width: 360px; text-align: right; }
.our-review-meta strong, .our-review-meta span { display: block; }
.our-review-meta strong { color: var(--teal-dark); font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; }
.our-review-meta span { margin-top: 4px; color: var(--muted); font-size: 10px; }
.our-review-shell { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(290px, 0.65fr); gap: 14px; }
.our-review-verdict { min-width: 0; padding: 34px 38px; color: #fff; background: var(--ink); border-left: 7px solid var(--teal); }
.review-kicker { display: block; margin-bottom: 13px; color: var(--teal-bright); font-size: 10px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.our-review-verdict > p { max-width: 850px; color: #e2e8e8; font-size: 16px; line-height: 1.72; }
.our-review-verdict > p.limited-review { color: #c8d1d1; }
.review-best-for { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 25px; padding-top: 19px; border-top: 1px solid rgba(255, 255, 255, 0.16); }
.review-best-for strong { margin-right: 4px; color: #fff; font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; }
.review-best-for span { padding: 6px 9px; color: #d8ffff; background: rgba(19, 190, 194, 0.15); border: 1px solid rgba(36, 198, 202, 0.48); font-size: 10px; font-weight: 700; }
.our-review-evidence { display: grid; grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 14px; }
.review-evidence-card { padding: 22px 24px; background: #fff; border: 1px solid var(--line); }
.review-evidence-card.positive { border-top: 5px solid var(--teal); }
.review-evidence-card.caution { border-top: 5px solid var(--coral); }
.review-evidence-card h3 { margin-bottom: 11px; font-size: 17px; }
.review-evidence-card ul { list-style: none; }
.review-evidence-card li { position: relative; padding: 4px 0 4px 18px; color: var(--ink-soft); font-size: 11px; }
.review-evidence-card.positive li::before { content: "+"; position: absolute; left: 0; color: var(--teal-dark); font-weight: 900; }
.review-evidence-card.caution li::before { content: "–"; position: absolute; left: 0; color: var(--coral); font-weight: 900; }
.review-evidence-card p { color: var(--muted); font-size: 11px; }
.our-review-disclosure { margin-top: 11px; color: var(--muted); font-size: 9px; }
.location-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.location-panel { overflow: hidden; background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow-small); }
.panel-label { min-height: 68px; display: grid; grid-template-columns: 35px 1fr; align-items: center; column-gap: 11px; padding: 10px 14px; border-bottom: 1px solid var(--line); }
.panel-label .pin-mark { grid-row: span 2; width: 21px; height: 27px; box-shadow: none; }
.panel-label .pin-mark::after { width: 6px; height: 6px; left: 6px; top: 6px; }
.panel-label strong, .panel-label small { display: block; }
.panel-label small { color: var(--muted); font-size: 10px; }
.street-icon { grid-row: span 2; width: 30px; height: 30px; display: inline-block; background: var(--teal); border: 5px solid var(--teal-wash); border-radius: 50%; box-shadow: 0 0 0 1px var(--teal); }
.detail-map, .street-view { height: 420px; }
.street-fallback { min-height: 420px; padding: 30px; flex-direction: column; align-items: center; justify-content: center; text-align: center; background: var(--teal-wash); }
.street-fallback:not([hidden]) { display: flex; }
.street-fallback p { margin: 5px 0 12px; color: var(--muted); font-size: 13px; }
.google-photo-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 10px; }
.google-photo-grid figure { min-width: 0; background: #fff; border: 1px solid var(--line); }
.google-photo-grid img { width: 100%; height: 330px; object-fit: cover; }
.google-photo-grid figcaption { min-height: 36px; padding: 8px 10px; color: var(--muted); font-size: 9px; }
.google-photo-grid figcaption a { color: var(--muted); text-decoration: underline; }
.source-badge { padding: 6px 9px; color: var(--ink); background: #fff; border: 1px solid var(--line); font-size: 10px; font-weight: 800; }
.review-source-bar { display: grid; grid-template-columns: 100px 1fr auto; align-items: center; gap: 20px; padding: 20px 22px; background: #fff; border: 1px solid var(--line); border-left: 6px solid var(--teal); }
.review-source-logo { font-size: 22px; font-weight: 800; letter-spacing: -0.04em; }
.google-wordmark { color: #4285f4; }
.review-source-bar strong, .review-source-bar span { display: block; }
.review-source-bar span { margin-top: 2px; color: var(--muted); font-size: 11px; }
.review-source-bar > a { font-size: 12px; font-weight: 800; }
.review-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 11px; margin-top: 14px; }
.review-quote { display: flex; min-width: 0; padding: 17px; flex-direction: column; background: #fff; border: 1px solid var(--line); }
.review-head { display: flex; justify-content: space-between; gap: 10px; }
.review-head strong, .review-head a { color: var(--ink); font-size: 13px; font-weight: 700; }
.review-head > span { flex: 0 0 auto; color: var(--muted); font-size: 9px; }
.review-author { display: flex; min-width: 0; align-items: center; gap: 8px; }
.review-author a, .review-author strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.review-avatar { width: 27px; height: 27px; flex: 0 0 27px; object-fit: cover; border-radius: 50%; }
.review-stars { margin: 5px 0; color: var(--gold); letter-spacing: 1px; }
.review-text { color: var(--ink-soft); font-size: 12px; white-space: pre-line; }
.review-source-link { margin-top: auto; padding-top: 10px; font-size: 10px; font-weight: 800; }
.review-loading { margin: 14px 0 0; padding: 14px 16px; color: var(--muted); background: #fff; border: 1px solid var(--line); font-size: 12px; }
.review-loading[hidden] { display: none; }
.review-loading.review-error { border-left: 4px solid var(--gold); }
.google-attribution { margin-top: 8px; color: var(--muted); font-size: 9px; }
.other-review-links { display: flex; align-items: center; gap: 14px; margin-top: 11px; padding: 10px 14px; background: #edf1f1; font-size: 11px; }
.other-review-links span { color: var(--muted); font-weight: 800; text-transform: uppercase; letter-spacing: 0.07em; }
.other-review-links a { font-weight: 800; }
.community-score { min-width: 145px; padding: 12px 16px; color: #fff; background: var(--ink); border-top: 5px solid var(--teal); }
.community-score strong, .community-score span { display: block; }
.community-score strong { color: var(--teal-bright); font-size: 28px; line-height: 1; }
.community-score span { margin-top: 4px; color: #c9d2d2; font-size: 10px; }
.community-review-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-bottom: 22px; }
.community-review { padding: 20px; background: #fff; border: 1px solid var(--line); border-top: 4px solid var(--teal); }
.community-review-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 15px; }
.community-review-head strong, .community-review-head span { display: block; }
.community-review-head strong { font-size: 14px; }
.community-review-head span { color: var(--muted); font-size: 9px; }
.community-rating { text-align: right; white-space: nowrap; }
.community-rating .stars { display: block; font-size: 11px; }
.community-rating b { font-size: 11px; }
.community-review h3 { margin-top: 13px; font-size: 18px; letter-spacing: -0.02em; }
.community-review > p { margin-top: 5px; color: var(--ink-soft); font-size: 13px; }
.community-review > small { display: block; margin-top: 14px; color: var(--muted); font-size: 9px; }
.native-source-badge { display: inline-flex; padding: 3px 6px; color: var(--teal-deep); background: var(--teal-wash); border: 1px solid #afe6e6; font-weight: 800; letter-spacing: 0.03em; text-transform: uppercase; }
.source-separation-note { max-width: 620px; margin-top: 6px; color: var(--muted); font-size: 11px; }
.business-response { margin-top: 15px; padding: 13px; background: var(--canvas); border-left: 4px solid var(--teal); }
.business-response strong { font-size: 10px; text-transform: uppercase; letter-spacing: 0.05em; }
.business-response p { margin-top: 4px; color: var(--ink-soft); font-size: 11px; }
.profile-label-row { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; margin-top: 2px; }
.profile-label-row .eyebrow { margin: 0; }
.ownership-badge { display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px; color: var(--muted); background: #f1f3f3; border: 1px solid #b8c3c4; font-size: 8px; font-weight: 800; line-height: 1; letter-spacing: 0.07em; text-transform: uppercase; white-space: nowrap; }
.ownership-badge::before { content: ""; width: 7px; height: 7px; flex: 0 0 7px; background: transparent; border: 1px solid #8c999a; border-radius: 50%; }
.ownership-badge.verified { color: var(--teal-deep); background: var(--teal-wash); border-color: var(--teal); }
.ownership-badge.verified::before { background: var(--teal); border-color: var(--teal-dark); box-shadow: inset 0 0 0 2px var(--teal-wash); }
.ownership-badge.compact { padding: 4px 7px; font-size: 7px; }
.listing-ownership { min-height: 19px; margin: 4px 0 1px; }
.offer-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.offer-grid article { padding: 19px; background: #fff; border: 1px solid var(--line); border-top: 4px solid var(--gold); }
.offer-grid strong, .offer-grid small { display: block; }
.offer-grid p { margin-top: 6px; color: var(--ink-soft); font-size: 11px; }
.offer-grid small { margin-top: 11px; color: var(--muted); font-size: 9px; }
.community-empty { margin-bottom: 18px; padding: 18px 20px; background: var(--teal-wash); border-left: 5px solid var(--teal); }
.community-empty strong, .community-empty span { display: block; }
.community-empty span { margin-top: 2px; color: var(--muted); font-size: 12px; }
.review-form-shell { display: grid; grid-template-columns: 0.8fr 1.2fr; gap: 36px; padding: 32px; background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow-small); }
.review-form-intro h3 { margin: 8px 0 11px; font-size: 29px; }
.review-form-intro > p:not(.eyebrow) { color: var(--muted); font-size: 13px; }
.review-form-intro ul { margin: 18px 0 0 18px; color: var(--ink-soft); font-size: 11px; }
.review-form-intro li { margin-bottom: 6px; }
.review-form { display: flex; flex-direction: column; gap: 12px; }
.review-form fieldset { padding: 0; border: 0; }
.review-form legend, .review-form > label, .review-form-row label { color: var(--ink); font-size: 11px; font-weight: 700; }
.review-form legend { margin-bottom: 6px; }
.review-form label small { color: var(--muted); font-size: 8px; font-weight: 500; }
.review-rating-input { display: flex; flex-direction: row-reverse; justify-content: flex-end; gap: 6px; }
.review-rating-input label { cursor: pointer; }
.review-rating-input input { position: absolute; opacity: 0; pointer-events: none; }
.review-rating-input span { min-width: 48px; display: inline-flex; align-items: center; justify-content: center; gap: 3px; padding: 8px 9px; color: var(--ink-soft); background: var(--canvas); border: 1px solid var(--line); font-size: 11px; }
.review-rating-input input:checked + span, .review-rating-input label:hover span { color: var(--ink); background: #fff3cb; border-color: var(--gold); }
.review-rating-input input:focus-visible + span { outline: 3px solid var(--teal-dark); outline-offset: 2px; }
.review-rating-input b { color: var(--gold); }
.review-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }
.review-form label { display: flex; flex-direction: column; gap: 4px; }
.review-form input[type="text"], .review-form input[type="email"], .review-form input[type="month"], .review-form textarea, .review-form select {
  width: 100%; padding: 10px 11px; color: var(--ink); background: #fff; border: 1px solid #b8c3c4; border-radius: 2px;
}
.review-private-evidence { padding: 15px; background: #f1f5f5; border: 1px solid var(--line); border-left: 5px solid var(--ink); }
.review-private-evidence > div:first-child { display: flex; flex-direction: column; gap: 3px; margin-bottom: 10px; }
.review-private-evidence strong { font-size: 12px; }
.review-private-evidence small { color: var(--muted); font-size: 9px; }
.review-certify { display: grid !important; grid-template-columns: 18px 1fr; align-items: start; gap: 8px !important; color: var(--ink-soft) !important; font-size: 10px !important; font-weight: 500 !important; }
.review-certify input { width: 16px; height: 16px; accent-color: var(--teal-dark); }
.review-form .btn { align-self: flex-start; }
.review-form-status { min-height: 19px; color: var(--teal-deep); font-size: 11px; font-weight: 700; }
.pc-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.pc { padding: 22px 24px; background: #fff; border: 1px solid var(--line); }
.pc.pros { border-top: 5px solid var(--teal); }
.pc.cons { border-top: 5px solid var(--coral); }
.pc h3 { margin-bottom: 12px; }
.pc ul { list-style: none; }
.pc li { position: relative; padding: 4px 0 4px 20px; color: var(--ink-soft); font-size: 13px; }
.pros li::before { content: "+"; position: absolute; left: 0; color: var(--teal-dark); font-weight: 900; }
.cons li::before { content: "–"; position: absolute; left: 0; color: var(--coral); font-weight: 900; }
.subheading { margin: 30px 0 10px; font-size: 23px; }
.rundown { max-width: 900px; margin-top: 24px; background: #fff; border: 1px solid var(--line); }
.rundown summary { padding: 15px 18px; color: var(--ink); font-weight: 800; cursor: pointer; }
.rundown .synopsis { max-width: 820px; padding: 0 18px 20px; color: var(--ink-soft); font-size: 14px; }
.claim { margin-top: 46px; padding: 34px 38px; background: #fff; border: 1px solid var(--line); border-top: 7px solid var(--teal); box-shadow: var(--shadow-small); }
.claim h2 { margin: 7px 0 10px; }
.claim > p { max-width: 760px; }
.claim form { max-width: 580px; display: flex; flex-direction: column; gap: 10px; margin-top: 17px; }
.claim label { display: flex; flex-direction: column; gap: 4px; color: var(--ink); font-size: 12px; font-weight: 750; }
.claim input, .claim textarea, .claim select, .mini-form input { width: 100%; padding: 10px 11px; color: var(--ink); background: #fff; border: 1px solid #b8c3c4; border-radius: 2px; }
.claim-verified { border-top-color: var(--teal-dark); background: linear-gradient(100deg, #fff 0%, var(--teal-wash) 100%); }
.hp { position: absolute; left: -6000px; width: 1px; height: 1px; opacity: 0; }
#claim-msg { min-height: 18px; color: var(--teal-dark); font-size: 13px; font-weight: 800; }
.profile-footnote { margin-top: 18px; }

/* Editorial and utility pages */
.prose { max-width: 1000px; }
.prose > h1 { margin: 12px 0 18px; }
.prose > h2 { margin: 38px 0 12px; font-size: 34px; }
.prose > p, .prose > ul { max-width: 800px; margin-bottom: 16px; }
.prose > ul { padding-left: 22px; }
.prose > ul li { margin-bottom: 8px; }
.formula { max-width: 800px; display: flex; flex-direction: column; gap: 6px; padding: 22px 24px; color: #fff; background: var(--ink); border-left: 8px solid var(--teal); }
.formula span { color: var(--teal-bright); font-size: 10px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; }
.formula strong { font-size: 18px; }
.business-options { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin: 26px 0; }
.business-options section { padding: 25px; background: #fff; border: 1px solid var(--line); }
.business-options h2 { margin: 10px 0; font-size: 30px; }
.business-options p { margin-bottom: 18px; }
.option-label { display: inline-block; padding: 4px 8px; color: var(--teal-deep); background: var(--teal-wash); font-size: 9px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.option-label.paid { color: #644b00; background: #fff1bd; }
.mini-form { display: flex; flex-direction: column; gap: 9px; }
.mini-form label { display: flex; flex-direction: column; gap: 4px; font-size: 11px; font-weight: 750; }
.search-results { display: grid; gap: 9px; }
.search-result { display: flex; justify-content: space-between; gap: 18px; padding: 17px 19px; background: #fff; border: 1px solid var(--line); }
.search-result h3 { font-size: 18px; }
.search-result p { font-size: 12px; }
.search-rating { display: flex; flex-direction: column; align-items: end; white-space: nowrap; }
.search-rating strong { font-size: 21px; }
.search-rating span { color: var(--muted); font-size: 10px; }
.empty-state { margin: 22px 0; padding: 38px; text-align: center; background: #fff; border: 1px solid var(--line); }
.empty-state h2 { margin-bottom: 7px; }
.empty-state p { max-width: 620px; margin: 0 auto 18px; color: var(--muted); }
.more-list { list-style: none; margin: 7px 0 22px; }
.more-list li { padding: 9px 1px; border-bottom: 1px solid var(--line); font-size: 13px; }

/* Editorial trust pages */
.editorial-page { max-width: 1120px; }
.editorial-intro { max-width: 930px; padding-bottom: 28px; border-bottom: 1px solid var(--line); }
.editorial-intro h1 { max-width: 900px; margin: 12px 0 16px; }
.editorial-intro .lede { max-width: 880px; }
.editorial-ledger { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin: 34px 0; background: var(--line); border: 1px solid var(--line); }
.editorial-ledger article { min-height: 230px; padding: 28px; background: #fff; }
.editorial-ledger article > span { color: var(--teal-dark); font-size: 9px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.editorial-ledger h2 { margin: 18px 0 10px; font-size: 27px; }
.editorial-ledger p { color: var(--ink-soft); font-size: 13px; }
.editorial-next { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; margin-top: 38px; background: var(--line); border: 1px solid var(--line); }
.editorial-next a, .contact-route a { display: flex; flex-direction: column; gap: 6px; padding: 20px; color: var(--ink); background: #fff; text-decoration: none; }
.editorial-next a:hover, .contact-route a:hover { background: var(--teal-wash); }
.editorial-next strong, .contact-route strong { font-size: 13px; }
.editorial-next span, .contact-route span { color: var(--muted); font-size: 10px; }
.standards-index { position: sticky; top: 0; z-index: 2; display: flex; gap: 2px; margin: 26px 0 38px; overflow-x: auto; background: var(--paper); border-bottom: 1px solid var(--line); }
.standards-index a { flex: 0 0 auto; padding: 11px 13px; color: var(--ink); background: #fff; font-size: 10px; font-weight: 750; text-decoration: none; }
.standards-index a:hover { color: var(--teal-deep); }
.editorial-page > section[id] { max-width: 900px; margin-top: 46px; scroll-margin-top: 70px; }
.editorial-page > section[id] h2 { margin: 9px 0 13px; font-size: 30px; }
.editorial-version { margin-top: 50px; padding: 16px 19px; background: #fff; border-left: 5px solid var(--teal); }
.correction-steps { display: grid; gap: 1px; margin: 32px 0; background: var(--line); border: 1px solid var(--line); }
.correction-steps article { display: grid; grid-template-columns: 58px 1fr; gap: 18px; padding: 24px; background: #fff; }
.correction-steps article > span { display: grid; place-items: center; width: 42px; height: 42px; color: #fff; background: var(--ink); font-size: 16px; font-weight: 800; }
.correction-steps h2 { margin: 0 0 7px; font-size: 24px; }
.correction-steps p { max-width: 760px; color: var(--ink-soft); font-size: 13px; }
.correction-actions { display: flex; align-items: center; gap: 19px; margin: 22px 0 42px; }
.contact-route { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; margin: 30px 0; background: var(--line); border: 1px solid var(--line); }
.editorial-contact-form { max-width: 820px; margin: 28px 0; background: #fff; border: 1px solid var(--line); border-top: 6px solid var(--teal); }
.form-success { max-width: 820px !important; padding: 15px 18px; color: #075f55; background: #dff8f1; border-left: 5px solid #0a9d83; font-weight: 700; }
.form-error { max-width: 820px !important; padding: 15px 18px; color: #7a241b; background: #fff0ed; border-left: 5px solid var(--coral); font-weight: 700; }
.research-chart { margin: 28px 0 34px; }
.research-chart img { display: block; width: 100%; height: auto; border: 1px solid var(--line); }
.research-chart figcaption { padding: 9px 1px; color: var(--muted); font-size: 10px; }
.research-download { max-width: none !important; margin: 44px 0 !important; padding: clamp(24px, 4vw, 40px); background: #fff; border: 1px solid var(--line); border-top: 7px solid var(--teal); }
.research-download h2 { margin: 9px 0 13px !important; }
.research-download dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin: 24px 0; background: var(--line); border: 1px solid var(--line); }
.research-download dl > div { padding: 14px; background: #f8fafa; }
.research-download dt { color: var(--muted); font-size: 9px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.research-download dd { margin: 5px 0 0; font-size: 12px; font-weight: 700; }

/* Trust, price comparison, accounts and request workflows */
.confidence-line { display: flex; align-items: center; gap: 8px; margin-top: 10px; color: var(--muted); font-size: 10px; }
.confidence-meter { width: 58px; height: 6px; overflow: hidden; background: #dfe7e7; }
.confidence-meter i { display: block; height: 100%; background: var(--teal); }
.matched-price { display: inline-flex; gap: 6px; margin: 10px 0 0; padding: 7px 10px; background: #e7fafa; border-left: 3px solid var(--teal); font-size: 12px; }
.recommendation-reasons { margin-top: 8px; color: var(--muted); font-size: 10px; }
.results-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.map-toggle { display: none; }
.map-close { display: none; padding: 6px 9px; color: #fff; background: var(--ink); border: 0; font-size: 11px; font-weight: 800; }
.price-comparison { margin: 14px 0 26px; padding: 23px; background: #fff; border: 1px solid var(--line); box-shadow: 5px 5px 0 #dff6f6; }
.price-comparison h2 { font-size: 25px; }
.price-comparison-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; margin: 16px 0 11px; background: var(--line); border: 1px solid var(--line); }
.price-comparison-row a { display: flex; flex-direction: column; gap: 4px; min-height: 74px; padding: 13px; color: var(--ink); background: #fff; text-decoration: none; }
.price-comparison-row a:hover { background: #effcfc; }
.price-comparison-row strong { font-size: 12px; }
.price-comparison-row span { color: var(--teal-dark); font-size: 16px; font-weight: 800; }
.confidence-card { padding: 34px; background: #fff; border: 1px solid var(--line); }
.confidence-score { color: var(--teal-dark); font-size: 42px; }
.confidence-fields { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--line); }
.confidence-fields > div { display: flex; flex-direction: column; gap: 3px; padding: 14px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.confidence-fields > div.complete { border-top: 3px solid var(--teal); }
.confidence-fields > div.missing { border-top: 3px solid #aab4b5; background: #f3f5f5; }
.confidence-fields span, .confidence-fields small { color: var(--muted); font-size: 10px; }
.confidence-fields strong { font-size: 12px; }
.review-user-photo { width: min(100%, 440px); max-height: 320px; margin: 12px 0; object-fit: cover; border: 1px solid var(--line); }
.helpful-button { margin-top: 12px; padding: 7px 10px; border: 1px solid var(--line); color: var(--ink); background: #fff; font: inherit; font-size: 10px; font-weight: 800; cursor: pointer; }
.helpful-button:hover { border-color: var(--teal); }
.account-page, .request-page { padding-block: 28px 70px; }
.account-auth-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; max-width: 960px; }
.account-form, .account-panel { padding: 28px; background: #fff; border: 1px solid var(--line); box-shadow: 6px 6px 0 #e3eeee; }
.account-form { display: flex; flex-direction: column; gap: 13px; }
.account-form label, .owner-response-form { display: flex; flex-direction: column; gap: 5px; font-size: 11px; font-weight: 750; }
.account-form input, .owner-response-form textarea { width: 100%; padding: 12px; border: 1px solid #adb8b9; font: inherit; }
.account-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 22px; margin: 18px 0 28px; }
.account-heading > div:last-child { display: flex; align-items: center; gap: 14px; }
.account-panel { margin: 20px 0; }
.account-list, .owner-status-list, .owner-request-list { display: grid; gap: 9px; margin-top: 14px; }
.account-list > a, .account-list > div, .owner-status-list article, .owner-request-list article { display: flex; flex-direction: column; gap: 4px; padding: 15px; color: var(--ink); background: #f5f8f8; border-left: 4px solid var(--teal); text-decoration: none; }
.account-list span, .owner-request-list span { color: var(--muted); font-size: 11px; }
.status-pill { display: inline-flex; align-self: flex-start; padding: 4px 7px; font-size: 9px; font-weight: 800; text-transform: uppercase; background: #e7eded; }
.status-pill.verified { color: #086a52; background: #d9f7eb; }
.status-pill.pending_verification, .status-pill.pending_review, .status-pill.pending_moderation, .status-pill.under_review { color: #705300; background: #fff0b8; }
.status-pill.rejected, .status-pill.revoked, .status-pill.flagged { color: #8d2f27; background: #ffe1df; }
.owner-request-status { display: flex; align-items: center; gap: 8px; margin-top: 9px; }
.owner-request-status select { min-height: 42px; padding: 7px 10px; border: 1px solid var(--line); background: #fff; }
.owner-profile-form { display: flex; flex-direction: column; gap: 11px; padding: 18px; background: #f5f8f8; border-left: 4px solid var(--teal); }
.owner-profile-form label { display: flex; flex-direction: column; gap: 4px; font-size: 10px; font-weight: 800; }
.owner-profile-form input, .owner-profile-form textarea, .owner-profile-form select { padding: 10px; border: 1px solid var(--line); background: #fff; font: inherit; }
.owner-form-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding-bottom: 11px; border-bottom: 1px solid var(--line); }
.owner-form-heading span { color: var(--muted); font-size: 10px; }
.owner-service-picker { padding: 13px; border: 1px solid var(--line); }
.owner-service-picker legend { padding-inline: 5px; font-size: 10px; font-weight: 800; }
.owner-service-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
.owner-service-grid label { display: grid; grid-template-columns: 16px 1fr; align-items: center; gap: 6px; padding: 8px; background: #fff; border: 1px solid var(--line); }
.owner-service-grid input { width: 15px; height: 15px; padding: 0; accent-color: var(--teal-dark); }
.owner-submission-history { margin-top: 21px; padding-top: 18px; border-top: 1px solid var(--line); }
.owner-submission-history h3 { margin-bottom: 9px; font-size: 18px; }
.owner-submission-history p { display: grid; grid-template-columns: minmax(180px, 1fr) auto auto; align-items: center; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); }
.owner-submission-history small { color: var(--muted); font-size: 9px; }
.owner-qr-card { display: grid !important; grid-template-columns: 170px 1fr; align-items: center; gap: 18px !important; }
.owner-qr-card img { width: 170px; height: 170px; background: #fff; border: 1px solid var(--line); }
.owner-qr-card p { margin-top: 7px; }
.review-invite-page { padding-block: 28px 75px; }
.review-invite-card { display: grid; grid-template-columns: minmax(0, 1fr) 420px; align-items: center; gap: 55px; margin-top: 24px; padding: 50px; background: #fff; border: 1px solid var(--line); border-top: 8px solid var(--teal); box-shadow: 10px 10px 0 #e3eeee; }
.review-invite-copy h1 { margin: 8px 0 15px; }
.review-invite-copy > p { max-width: 700px; }
.review-invite-copy ul { margin: 19px 0 25px 20px; color: var(--ink-soft); }
.review-invite-copy .btn { margin: 0 8px 10px 0; }
.review-invite-qr { display: flex; align-items: center; flex-direction: column; text-align: center; }
.review-invite-qr img { width: min(100%, 420px); height: auto; }
.review-invite-qr strong { margin-top: 8px; font-size: 20px; }
.review-invite-qr span { max-width: 100%; margin-top: 4px; overflow-wrap: anywhere; color: var(--muted); font-size: 9px; }
.policy-page ol { max-width: 800px; padding-left: 22px; }
.policy-page ol li { margin-bottom: 8px; }
.request-status-track { display: grid; grid-template-columns: repeat(4, 1fr); margin: 24px 0; border: 1px solid var(--line); }
.request-status-track div { display: flex; align-items: center; gap: 9px; padding: 17px; color: var(--muted); background: #fff; border-right: 1px solid var(--line); }
.request-status-track span { display: grid; place-items: center; width: 27px; height: 27px; border-radius: 50%; color: #fff; background: #aab4b5; }
.request-status-track .done { color: var(--ink); }
.request-status-track .done span { background: var(--teal-dark); }
.request-details { display: grid; grid-template-columns: 140px 1fr; gap: 8px 18px; }
.request-details dt { color: var(--muted); font-size: 11px; font-weight: 800; text-transform: uppercase; }
.request-details dd { margin: 0; }

/* Footer */
.ftr { margin-top: 20px; padding: 48px 0; color: #bac4c5; background: var(--ink); }
.footer-grid { display: grid; grid-template-columns: minmax(0, 1fr) 190px 190px; gap: clamp(28px, 5vw, 70px); }
.footer-grid p { max-width: 850px; font-size: 11px; }
.footer-brand {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  gap: 8px;
  color: #fff;
  text-decoration: none;
}
.footer-brand:hover { text-decoration: none; }
.footer-brand-pin { width: 56px; height: auto; flex: 0 0 auto; transform-origin: 50% 92%; transition: transform 180ms ease; }
.footer-wordmark {
  display: inline-flex;
  align-items: baseline;
  color: #fff;
  font-family: Montserrat, "Avenir Next", Avenir, sans-serif;
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -0.055em;
  line-height: 1;
  white-space: nowrap;
}
.footer-wordmark-light, .footer-wordmark-domain { color: #fff; }
.footer-wordmark-teal { color: var(--teal); }
.footer-wordmark-domain { font-size: 0.64em; letter-spacing: -0.04em; }
.footer-links { display: flex; flex-direction: column; align-items: flex-start; gap: 7px; font-size: 11px; }
.footer-links strong { color: #fff; margin-bottom: 4px; font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; }
.footer-links a { color: #d2dddd; }
.footer-links span { margin-top: 8px; color: #849092; }

@media (max-width: 1080px) {
  .hero-grid { grid-template-columns: 1fr 0.85fr; gap: 38px; }
  .hero-media, .hero-media > img { height: 470px; min-height: 470px; }
  .market-grid { grid-template-columns: repeat(2, 1fr); }
  .care-grid { grid-template-columns: 0.75fr 1.25fr; }
  .care-photo-small { display: none; }
  .town-results-layout { grid-template-columns: minmax(0, 1fr) 370px; }
  .profile-hero { grid-template-columns: 1fr; }
  .profile-media { height: 480px; }
}

@media (max-width: 820px) {
  .wrap { width: min(100% - 28px, 1280px); }
  .hdr-in { min-height: 70px; gap: 15px; }
  .brand { flex-basis: 255px; width: 255px; height: 58px; }
  .header-brand-pin { width: 47px; }
  .header-wordmark { font-size: 19px; }
  .hdr nav { min-width: 0; gap: clamp(10px, 1.8vw, 17px); overflow-x: auto; scrollbar-width: none; }
  .hdr nav::-webkit-scrollbar { display: none; }
  .hdr nav a { flex: 0 0 auto; font-size: 11px; }
  .hero-grid { grid-template-columns: 1fr; }
  .hero-copy { padding-bottom: 6px; }
  .hero-media, .hero-media > img { height: 430px; min-height: 430px; }
  .state-grid { grid-template-columns: repeat(2, 1fr); }
  .state-intro { grid-template-columns: 1fr; }
  .state-intro img { height: 230px; }
  .town-grid { grid-template-columns: 1fr; }
  .town-results-layout { display: flex; flex-direction: column; }
  .map-rail { position: static; order: -1; width: 100%; }
  .google-map { height: 430px; }
  .listing-column { width: 100%; }
  .location-grid { grid-template-columns: 1fr; }
  .detail-map, .street-view { height: 390px; }
  .google-photo-grid { grid-template-columns: 1fr 1fr; }
  .google-photo-grid figure:first-child { grid-column: span 2; }
  .review-grid { grid-template-columns: 1fr; }
  .review-form-shell { grid-template-columns: 1fr; }
  .review-source-bar { grid-template-columns: 90px 1fr; }
  .review-source-bar > a { grid-column: 2; }
  .garment-grid { grid-template-columns: repeat(3, 1fr); }
  .price-builder-grid { grid-template-columns: 1fr 1fr; }
  .saved-grid { grid-template-columns: 1fr; }
  .offer-grid { grid-template-columns: 1fr 1fr; }
  .price-comparison-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .confidence-fields { grid-template-columns: repeat(2, 1fr); }
  .review-invite-card { grid-template-columns: 1fr; gap: 32px; padding: 36px; }
  .review-invite-qr img { width: min(100%, 360px); }
  .owner-service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  .hdr { position: static; }
  .hdr-in { padding: 8px 0 10px; flex-wrap: wrap; }
  .brand { flex-basis: 250px; width: 250px; height: 55px; }
  .header-brand-pin { width: 44px; }
  .header-wordmark { font-size: 18px; }
  .hdr nav { width: 100%; justify-content: flex-start; gap: 18px; padding-top: 7px; border-top: 1px solid var(--line); overflow-x: auto; }
  .hdr nav a { font-size: 11px; }
  .hero { padding-top: 36px; }
  .hero h1 { font-size: clamp(50px, 16vw, 70px); }
  .hero-media, .hero-media > img { height: 350px; min-height: 350px; }
  .inspection-tag { min-width: 205px; padding: 17px 19px 16px 33px; }
  .inspection-tag strong { font-size: 23px; }
  .search-row { flex-direction: column; box-shadow: 5px 5px 0 var(--teal); }
  .search-row .btn { width: 100%; }
  .location-search { width: 100%; }
  .coverage-strip .wrap { padding-block: 15px; flex-wrap: wrap; gap: 5px 14px; }
  .coverage-strip span { flex-basis: 100%; }
  .section-block { padding-block: 54px; }
  .section-heading { align-items: flex-start; flex-direction: column; gap: 12px; }
  .market-grid { grid-template-columns: 1fr; }
  .market-card { min-height: 240px; grid-template-rows: 145px 1fr; }
  .care-grid { grid-template-columns: 1fr; }
  .care-photo-main { height: 310px; transform: none; }
  .steps { grid-template-columns: 1fr; }
  .step { min-height: 185px; border-right: 0; border-bottom: 1px solid var(--line); }
  .step:last-child { border-bottom: 0; }
  .cta-band { align-items: flex-start; flex-direction: column; padding: 28px 24px; }
  .state-grid { grid-template-columns: 1fr; }
  .state-card { min-height: 76px; }
  .state-intro img { height: 190px; }
  .town-intro { grid-template-columns: 1fr; }
  .town-stat { min-width: 0; width: 100%; display: grid; grid-template-columns: auto 1fr; column-gap: 12px; align-items: center; }
  .town-stat strong { grid-row: span 2; }
  .filters > div, .filters select, .filters .btn { width: 100%; }
  .town-action-band { align-items: flex-start; flex-direction: column; padding: 25px 22px; }
  .compare-dock { right: 10px; bottom: 10px; left: 10px; justify-content: space-between; }
  .listing-card { grid-template-columns: 1fr; }
  .listing-visual { width: 100%; min-height: 0; height: 170px; border-right: 0; border-bottom: 1px solid var(--line); }
  .listing-visual.has-business-media img { padding: 12px; }
  .business-media-label { display: none; }
  .listing-rank-chip { left: 5px; top: 5px; padding: 4px 5px; font-size: 7px; }
  .listing-initials { font-size: 27px; }
  .card-body { padding: 15px 14px; }
  .listing-title { flex-direction: column; gap: 5px; }
  .listing-title h2 { font-size: 22px; }
  .profile-arrow { align-self: flex-start; }
  .listing-summary { display: none; }
  .google-map { height: 360px; }
  .map-toggle { display: inline-flex; }
  .map-rail { display: none; }
  .map-rail.mobile-map-open { position: fixed; z-index: 1000; inset: 0; display: block; width: 100%; padding: 12px; background: rgba(15, 18, 19, 0.72); }
  .map-rail.mobile-map-open .map-card { height: calc(100vh - 24px); background: #fff; }
  .map-rail.mobile-map-open .google-map { height: calc(100vh - 132px); }
  .map-rail.mobile-map-open .map-close { display: inline-flex; }
  body.map-overlay-open { overflow: hidden; }
  .map-card-head { align-items: flex-start; flex-direction: column; gap: 6px; }
  .profile-hero { gap: 24px; padding-bottom: 42px; }
  .profile-hero > *, .profile-copy, .profile-media { min-width: 0; width: 100%; }
  .profile-media { height: 330px; grid-template-columns: 1fr 0.55fr; }
  .profile-copy { padding-top: 0; }
  .profile-business-identity { height: 116px; }
  .profile-copy h1 { font-size: clamp(43px, 13vw, 61px); }
  .action-bar { position: sticky; z-index: 40; bottom: 8px; padding: 7px; background: #fff; border: 1px solid var(--line); box-shadow: var(--shadow); flex-wrap: nowrap; overflow-x: auto; }
  .action { flex: 1 0 auto; padding-inline: 12px; }
  .profile-section { padding: 46px 0; }
  .our-review-meta { text-align: left; }
  .our-review-shell { grid-template-columns: 1fr; }
  .our-review-verdict { padding: 27px 22px; }
  .our-review-verdict > p { font-size: 14px; }
  .detail-map, .street-view { height: 340px; }
  .google-photo-grid { grid-template-columns: 1fr; }
  .google-photo-grid figure:first-child { grid-column: auto; }
  .google-photo-grid img { height: 280px; }
  .review-source-bar { grid-template-columns: 1fr; gap: 7px; }
  .review-source-bar > a { grid-column: auto; }
  .pc-grid { grid-template-columns: 1fr; }
  .community-review-grid, .review-form-row { grid-template-columns: 1fr; }
  .review-rating-input { flex-wrap: wrap; }
  .claim { padding: 27px 20px; }
  .tool-form, .compare-shell { padding: 27px 19px; }
  .tool-form-row { grid-template-columns: 1fr; }
  .garment-grid { grid-template-columns: 1fr 1fr; }
  .price-builder-grid { grid-template-columns: 1fr; }
  .price-builder-grid label { grid-template-columns: 1fr auto 58px; }
  .status-alert { align-items: flex-start; flex-direction: column; }
  .status-alert button { margin-left: 0; }
  .listing-correction { align-items: flex-start; flex-direction: column; }
  .owner-tool-grid { grid-template-columns: 1fr; }
  .offer-grid { grid-template-columns: 1fr; }
  .compare-shell { overflow-x: auto; }
  .business-options { grid-template-columns: 1fr; }
  .editorial-ledger, .editorial-next, .contact-route, .research-download dl { grid-template-columns: 1fr; }
  .editorial-ledger article { min-height: 0; padding: 23px 20px; }
  .correction-steps article { grid-template-columns: 42px 1fr; gap: 12px; padding: 20px 16px; }
  .correction-actions { align-items: flex-start; flex-direction: column; }
  .standards-index { margin-inline: -14px; padding-inline: 14px; }
  .price-comparison { padding: 17px; }
  .price-comparison-row, .confidence-fields, .account-auth-grid, .request-status-track { grid-template-columns: 1fr; }
  .account-heading { align-items: flex-start; flex-direction: column; }
  .account-heading > div:last-child { align-items: flex-start; flex-wrap: wrap; }
  .request-status-track div { border-right: 0; border-bottom: 1px solid var(--line); }
  .request-details { grid-template-columns: 1fr; }
  .owner-service-grid, .owner-qr-card { grid-template-columns: 1fr; }
  .owner-qr-card img { width: min(170px, 100%); height: auto; }
  .owner-submission-history p { grid-template-columns: 1fr; gap: 5px; }
  .review-invite-card { gap: 24px; padding: 26px 20px; box-shadow: 6px 6px 0 #e3eeee; }
  .footer-grid { grid-template-columns: 1fr; gap: 26px; }
  .footer-brand-pin { width: 50px; }
  .footer-wordmark { font-size: 21px; }
}

@media print {
  .hdr, .ftr, .review-invite-page .crumbs, .review-invite-copy .btn, .print-review-card { display: none !important; }
  body { color: #111; background: #fff; }
  .wrap { width: 100%; max-width: none; }
  .review-invite-page { padding: 0; }
  .review-invite-card { grid-template-columns: 1fr 360px; gap: 32px; margin: 0; padding: 28px; border: 2px solid #111; border-top: 8px solid var(--teal); box-shadow: none; break-inside: avoid; }
  .review-invite-qr img { width: 340px; }
  a { color: inherit; text-decoration: none; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
