:root {
  --ink: #10232f;
  --muted: #5a6871;
  --navy: #0a202d;
  --navy-2: #123847;
  --orange: #f36c2d;
  --orange-dark: #cc4f17;
  --cream: #f6f3ec;
  --paper: #fff;
  --line: #dce2e4;
  --green: #1d7254;
  --shadow: 0 16px 45px rgba(9, 31, 43, .08);
  /* "Inter" was listed first here with no @font-face/Google Fonts <link> anywhere in the codebase
     to actually load it -- every visitor was silently falling back to system-ui/-apple-system the
     whole time. Dropping it removes a misleading claim at zero cost; it does NOT change what
     anyone currently sees (nothing was loading Inter to begin with). If the brand look is meant to
     actually be Inter, that's a separate, deliberate follow-up (a Google Fonts <link> with
     font-display: swap, or a self-hosted woff2) -- worth doing intentionally rather than as a
     silent side effect of a performance pass. */
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--ink);
  background: var(--cream);
  font-synthesis: none;
}

* { box-sizing: border-box; }
body { margin: 0; line-height: 1.5; }
a { color: inherit; }
button, input, select { font: inherit; }
textarea { font: inherit; }
button, .button { min-height: 44px; }
.skip-link { position: fixed; left: 1rem; top: -5rem; z-index: 20; background: white; padding: .75rem 1rem; }
.skip-link:focus { top: 1rem; }
.site-header { height: 76px; display: flex; align-items: center; justify-content: space-between; padding: 0 clamp(1rem, 5vw, 5rem); background: var(--navy); color: white; }
.site-nav { display: flex; align-items: center; gap: 1.5rem; }
/* :not(.button) so this plain-link underline treatment doesn't also apply to the "Claim your
   business" CTA below, which reuses .button--accent (same orange pill as "Find dealers") and
   already has its own hover state (a darker background, not an underline). */
.site-nav a:not(.button) { color: white; font-weight: 700; text-decoration: none; text-underline-offset: 3px; }
.site-nav a:not(.button):hover { text-decoration: underline; }
.brand { display: flex; align-items: center; gap: .75rem; text-decoration: none; }
.brand-mark { display: grid; place-items: center; width: 38px; height: 38px; background: var(--orange); color: white; font-weight: 900; transform: skew(-8deg); }
.brand strong, .brand small { display: block; line-height: 1.1; }
.brand strong { font-size: 1.15rem; letter-spacing: .01em; }
.brand small { color: #b9cad1; font-size: .72rem; margin-top: .2rem; }
.hero { color: white; background: radial-gradient(circle at 85% 10%, #285362 0, transparent 35%), linear-gradient(135deg, var(--navy), var(--navy-2)); padding: clamp(3.5rem, 8vw, 6.5rem) clamp(1rem, 5vw, 5rem) 4rem; }
.hero__content, .results-shell, .detail-shell { max-width: 1180px; margin: 0 auto; }
.kicker { margin: 0 0 .5rem; color: var(--orange); font-size: .76rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.hero h1 { max-width: 780px; margin: 0; font-size: clamp(2.25rem, 6vw, 4.6rem); line-height: .98; letter-spacing: -.045em; }
.hero h1 + p { color: #cadae0; font-size: clamp(1rem, 2vw, 1.2rem); max-width: 650px; }
.search { display: grid; grid-template-columns: minmax(0, 1fr) 180px; gap: .85rem; width: 100%; max-width: 1180px; margin-top: 2rem; padding: 1rem; border: 1px solid rgba(190, 214, 222, .28); border-radius: 10px; background: rgba(3, 23, 32, .38); box-shadow: 0 18px 45px rgba(0, 0, 0, .16); }
.search__query { display: block; background: white; color: var(--ink); border: 2px solid transparent; border-radius: 6px; padding: .6rem 1rem; box-shadow: 0 2px 8px rgba(0, 0, 0, .14); }
.search__query:focus-within { border-color: #ff9a67; box-shadow: 0 0 0 3px rgba(243, 108, 45, .2); }
.search__query span, .filters label span { display: block; font-size: .7rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.search__query input { width: 100%; border: 0; outline: 0; padding: .25rem 0 .1rem; color: var(--ink); background: transparent; font-size: 1.02rem; }
.button { display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 4px; padding: .7rem 1rem; font-weight: 750; text-decoration: none; cursor: pointer; }
.button--accent { background: var(--orange); color: white; padding-inline: 1.5rem; box-shadow: 0 2px 0 rgba(82, 25, 0, .28); }
.button--accent:hover { background: var(--orange-dark); }
.button--primary { color: white; background: var(--navy); }
.button--secondary { color: var(--ink); background: #e8edef; }
.button--quiet { border: 1px solid var(--line); background: white; }
.filters-toggle { display: none; color: white; background: transparent; border: 1px solid #56727d; border-radius: 4px; }
/* One fluid row, not a fixed grid: every field grows/shrinks/wraps together as a single group, so
   when there isn't room for all of them the wrap happens mid-bar rather than as a separate,
   visually disconnected second block. There's no explicit "Apply" button here -- the "Find
   dealers" button above already submits this entire form, filters included, so a second submit
   button would just be the same action twice. Each field's flex-basis/min-width is sized for its
   longest realistic value (state names, "Within 250 miles", "Remanufactured parts", ...), not the
   empty "All" placeholder that looked fine until a real value was selected and truncated. */
.filters { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: flex-end; gap: 1rem; margin-top: .15rem; padding-top: 1rem; border-top: 1px solid rgba(190, 214, 222, .2); }
.filters label { color: #dbe6e9; }
.filter-field { flex: 1 1 170px; min-width: 170px; }
.filter-field--state { flex-basis: 130px; min-width: 130px; }
.filter-field--distance { flex-basis: 160px; min-width: 160px; }
.filter-field--classification, .filter-field--service { flex-basis: 180px; min-width: 180px; }
.filters select, .filter-input { width: 100%; min-height: 44px; border: 1px solid #64808b; border-radius: 5px; margin-top: .3rem; padding: 0 .7rem; background: #143744; color: white; }
.filters select:hover, .filter-input:hover { border-color: #9bb0b8; }
.filter-input::placeholder { color: #b9cbd2; }
.open-filter { flex: 0 0 auto; display: flex; min-height: 44px; align-items: center; gap: .45rem; padding: 0 .25rem; white-space: nowrap; }
/* Anchored to the end of whatever line it lands on, the way a "reset" action reads as deliberate
   rather than just the last thing that happened to wrap there. */
.filters-clear { flex: 0 0 auto; display: inline-flex; align-items: center; min-height: 44px; margin-left: auto; color: #cad9de; font-size: .9rem; }
.open-filter input { width: 18px; height: 18px; margin: 0; accent-color: var(--orange); }
.open-filter span { display: inline !important; }
.quick-search { display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin-top: 1rem; color: #a9c0c9; font-size: .85rem; }
.quick-search a { color: white; }
.results-shell { padding: 2.5rem clamp(1rem, 3vw, 2rem) 5rem; }
.results-heading { display: flex; justify-content: space-between; align-items: end; gap: 1rem; margin-bottom: 1.25rem; }
.results-heading h2 { margin: 0; font-size: 1.5rem; }
.result-note { color: var(--muted); font-size: .85rem; }
.results-tools { display: flex; align-items: center; gap: 1rem; }
.view-toggle { display: inline-flex; padding: 3px; border: 1px solid var(--line); border-radius: 6px; background: #e9edef; }
.view-toggle a { min-width: 58px; padding: .38rem .7rem; border-radius: 4px; text-align: center; text-decoration: none; font-size: .85rem; font-weight: 750; }
.view-toggle a[aria-current="page"] { color: white; background: var(--navy); }
.results { display: grid; gap: 1rem; }
.map-shell { padding: .75rem; border: 1px solid var(--line); border-radius: 8px; background: white; box-shadow: var(--shadow); }
.map-frame { position: relative; }
#results-map { width: 100%; height: min(65vh, 650px); min-height: 500px; border-radius: 5px; background: #e6ecee; }
.map-zoom-hint { position: absolute; z-index: 500; left: 50%; top: 50%; max-width: calc(100% - 2rem); padding: .7rem 1rem; border-radius: 5px; color: white; background: rgba(10, 32, 45, .9); font-size: .88rem; font-weight: 750; text-align: center; opacity: 0; pointer-events: none; transform: translate(-50%, -42%); transition: opacity .15s ease, transform .15s ease; }
.map-zoom-hint--visible { opacity: 1; transform: translate(-50%, -50%); }
.map-status { margin: .75rem .25rem 0; color: var(--ink); font-size: .9rem; font-weight: 700; }
.map-help { margin: .15rem .25rem 0; color: var(--muted); font-size: .8rem; }
.map-legend { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; margin: .6rem .25rem 0; padding: 0; list-style: none; color: var(--muted); font-size: .82rem; }
.map-legend li { display: flex; align-items: center; gap: .45rem; }
.map-legend__swatch { display: inline-block; width: 14px; height: 14px; border-radius: 50%; border: 2px solid white; box-shadow: 0 0 0 1px var(--line); background: var(--navy); }
.map-legend__swatch--cluster { width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; color: white; background: var(--navy); line-height: 1; font-size: .58rem; font-weight: 800; }
/* Right side, clear of Leaflet's default zoom control (+/-), which sits top-left. */
.map-locate-control { position: absolute; z-index: 500; right: .75rem; top: .75rem; border: 0; border-radius: 5px; padding: .5rem .85rem; color: white; background: var(--navy); font-size: .85rem; font-weight: 750; box-shadow: 0 4px 12px rgba(0, 0, 0, .18); cursor: pointer; }
.map-locate-control:hover { background: var(--navy-2); }
.map-locate-control:disabled { opacity: .7; cursor: default; }
/* leaflet.css loads after this stylesheet and sets `.leaflet-marker-icon { display: block }`,
   which every marker div carries regardless of its own className. Equal specificity + later
   source order meant that rule was silently beating this one's `display: flex`, so the count was
   never actually flex-centered — it was rendering in plain top-left block flow the whole time.
   Selecting on both classes together raises specificity so this wins regardless of load order. */
.leaflet-marker-icon.map-cluster { display: flex; align-items: center; justify-content: center; overflow: hidden; border: 2px solid white; border-radius: 50%; color: white; background: var(--navy); line-height: 1; font-weight: 800; font-variant-numeric: tabular-nums; box-shadow: 0 3px 8px rgba(9, 31, 43, .35); }
.map-cluster span { display: block; text-align: center; }
.map-cluster--sm { font-size: .72rem; }
.map-cluster--md { font-size: .78rem; }
.map-cluster--lg { font-size: .78rem; }
.map-you-label.leaflet-tooltip { border: 0; padding: .25rem .55rem; color: white; background: var(--navy); font-weight: 800; font-size: .72rem; box-shadow: 0 2px 8px rgba(0, 0, 0, .22); }
.map-you-label.leaflet-tooltip-top::before { border-top-color: var(--navy); }
.map-popup { min-width: 190px; }
.map-popup p { margin: .4rem 0 .7rem; color: var(--muted); }
.map-popup__name { color: #005ea8; font-size: 1rem; font-weight: 800; text-underline-offset: 2px; }
.map-visible-list { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.map-visible-list h3 { margin: 0 .25rem .2rem; font-size: 1.05rem; }
.map-visible-list__note { margin: 0 .25rem .75rem; color: var(--muted); font-size: .82rem; }
.map-visible-list__items { display: grid; gap: .6rem; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); margin: 0; padding: 0; list-style: none; }
.map-visible-list__item { border: 1px solid var(--line); border-radius: 6px; padding: .75rem .85rem; background: var(--paper); }
.map-visible-list__item p { margin: .3rem 0 0; color: var(--muted); font-size: .82rem; }
.map-visible-list__name { display: block; color: var(--ink); font-weight: 750; text-underline-offset: 2px; }
.map-visible-list__phone { display: inline-block; margin-top: .45rem; color: #005ea8; font-size: .82rem; font-weight: 700; }
.map-popup__actions { display: flex; flex-wrap: wrap; gap: .45rem .8rem; }
.map-popup__actions a { color: #005ea8; font-weight: 700; }
.dealer-card { display: grid; grid-template-columns: minmax(0, 1fr) 220px; gap: 2rem; background: var(--paper); border: 1px solid var(--line); border-radius: 7px; padding: clamp(1.25rem, 3vw, 2rem); box-shadow: 0 2px 0 rgba(13, 35, 47, .02); }
.dealer-card:hover { border-color: #b6c2c7; box-shadow: var(--shadow); }
.eyebrow { display: flex; flex-wrap: wrap; gap: .45rem; color: var(--muted); font-size: .72rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.eyebrow-link { text-decoration: underline; text-decoration-color: var(--line); text-underline-offset: 3px; }
.eyebrow-link:hover { text-decoration-color: currentColor; }
.verified { color: var(--green); background: #e9f5ef; border-radius: 999px; padding: .05rem .45rem; }
.claimed { color: #14507a; background: #e5f0f7; border-radius: 999px; padding: .05rem .45rem; }
.dealer-card h2 { margin: .45rem 0 .15rem; font-size: clamp(1.25rem, 3vw, 1.65rem); letter-spacing: -.02em; }
.dealer-card h2 a { text-decoration-thickness: 1px; text-underline-offset: 3px; }
.address, .description { margin: .35rem 0; }
.address { color: #21627c; font-size: .9rem; font-weight: 650; text-decoration-color: #8db6c5; text-underline-offset: 3px; }
.address:hover { color: #0c4056; text-decoration-color: currentColor; }
.external-icon { display: inline-block; margin-left: .28rem; font-size: .78em; line-height: 1; transform: translateY(-.08em); }
.distance { color: var(--muted); font-size: .82rem; text-align: center; }
.search-status { min-height: 1.25rem; margin: .5rem 0 0; color: rgba(255,255,255,.82); font-size: .85rem; }
.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; }
.description { max-width: 700px; }
.chips { display: flex; flex-wrap: wrap; gap: .45rem; padding: 0; margin: 1rem 0 0; list-style: none; }
.chips li { padding: .3rem .6rem; border: 1px solid var(--line); border-radius: 999px; color: #394d57; background: #f7f9f9; font-size: .78rem; }
.dealer-card__actions { display: flex; flex-direction: column; gap: .65rem; justify-content: center; }
.text-link { text-align: center; color: #365d6c; font-size: .85rem; }
.empty { text-align: center; border: 1px dashed #aebcc1; border-radius: 8px; padding: 4rem 1rem; background: rgba(255,255,255,.55); }
.pagination { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1.5rem; }
.pagination > a, .pagination span a { display: inline-flex; min-width: 44px; min-height: 44px; align-items: center; justify-content: center; border: 1px solid var(--line); border-radius: 4px; padding: .5rem .75rem; background: white; text-decoration: none; }
.pagination span { display: flex; gap: .35rem; }
.pagination a[aria-current="page"] { color: white; background: var(--navy); border-color: var(--navy); }
.standalone { max-width: 800px; margin: 10vh auto; }
.detail-shell { padding: 2rem clamp(1rem, 4vw, 3rem) 5rem; }
.breadcrumb { display: flex; gap: .6rem; color: var(--muted); font-size: .85rem; margin-bottom: 2rem; }
.detail-hero { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: clamp(2rem, 6vw, 5rem); align-items: start; }
.detail-hero h1 { font-size: clamp(2.2rem, 5vw, 4rem); line-height: 1; letter-spacing: -.04em; margin: .65rem 0 1rem; }
.detail-hero > div > p { font-size: 1.15rem; color: var(--muted); max-width: 700px; }
.detail-hero__aside { display: grid; gap: 1rem; }
.dealer-photo { width: 100%; height: 220px; object-fit: cover; border-radius: 7px; box-shadow: var(--shadow); background: var(--line); }
.contact-card, .detail-grid article { background: white; border: 1px solid var(--line); border-radius: 7px; padding: 1.5rem; }
.contact-card { display: grid; gap: .75rem; box-shadow: var(--shadow); }
.contact-card p { color: var(--muted); margin-bottom: 0; }
.detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 3rem; }
.detail-grid h2 { margin-top: 0; font-size: 1.15rem; }
.feature-list { padding-left: 1.1rem; }
.feature-list li { margin: .5rem 0; }
.chips--large li { font-size: .9rem; }
footer { color: #b9c8ce; background: var(--navy); padding: 2.25rem clamp(1rem, 5vw, 5rem) 1.5rem; font-size: .8rem; }
.footer-top { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 1.5rem 3rem; padding-bottom: 1.5rem; border-bottom: 1px solid rgba(255, 255, 255, .12); }
.footer-brand { display: flex; flex-direction: column; gap: .3rem; max-width: 30rem; }
.footer-brand strong { color: white; font-size: .95rem; letter-spacing: .02em; }
.footer-links { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; }
.footer-links a { color: white; text-underline-offset: 3px; }
.footer-bottom { display: flex; flex-wrap: wrap; gap: .3rem 1.5rem; margin-top: 1.25rem; color: #8fa3ab; }
.footer-bottom p { margin: 0; }
.footer-bottom a { color: inherit; text-underline-offset: 2px; }
.back-to-top { position: fixed; z-index: 900; right: clamp(1rem, 3vw, 2rem); bottom: clamp(1rem, 3vw, 2rem); display: grid; place-items: center; width: 50px; height: 50px; min-height: 50px; padding: 0; border: 2px solid white; border-radius: 50%; color: white; background: var(--orange); box-shadow: 0 8px 24px rgba(0, 0, 0, .24); cursor: pointer; }
.back-to-top:hover { background: var(--orange-dark); transform: translateY(-2px); }
.back-to-top svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
.back-to-top[hidden] { display: none; }

.consent-banner { position: fixed; z-index: 950; left: 0; right: 0; bottom: 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem clamp(1rem, 4vw, 2rem); background: var(--navy); color: white; box-shadow: 0 -8px 24px rgba(0, 0, 0, .18); }
.consent-banner[hidden] { display: none; }
.consent-banner p { margin: 0; max-width: 640px; font-size: .88rem; color: #cadae0; }
.consent-banner__actions { display: flex; gap: .6rem; flex-shrink: 0; }
.consent-banner .button--quiet { color: var(--ink); }

.landing-hero { color: white; background: linear-gradient(135deg, var(--navy), var(--navy-2)); padding: 3.5rem clamp(1rem, 5vw, 5rem); }
.landing-hero > div { max-width: 1180px; margin: 0 auto; }
.landing-hero h1 { max-width: 820px; margin: .5rem 0 1rem; font-size: clamp(2.2rem, 5vw, 4rem); line-height: 1.05; }
.landing-hero p:not(.kicker) { max-width: 700px; color: #cadae0; }
.landing-siblings { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin-top: 1.1rem; font-size: .85rem; color: #cadae0; }
.landing-siblings a { color: white; text-decoration: underline; text-decoration-color: rgba(255, 255, 255, .4); text-underline-offset: 3px; }
.landing-siblings a:hover { text-decoration-color: white; }
.hub-list { display: grid; gap: .6rem; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); margin: 0; padding: 0; list-style: none; }
.hub-list li { display: flex; align-items: center; justify-content: space-between; gap: .75rem; border: 1px solid var(--line); border-radius: 7px; padding: .9rem 1.1rem; background: var(--paper); }
.hub-list a { font-weight: 750; text-underline-offset: 2px; }
.hub-list span { flex: none; color: var(--muted); font-size: .82rem; }
.listing-feedback { scroll-margin-top: 1.5rem; margin-top: 2rem; padding: clamp(1.25rem, 3vw, 2rem); border: 1px solid var(--line); border-radius: 8px; background: white; box-shadow: 0 8px 28px rgba(9, 31, 43, .06); }
.listing-feedback__heading { margin-bottom: 1.35rem; padding: 0 0 1.25rem; border-bottom: 1px solid var(--line); }
.listing-feedback__heading h2 { margin: .15rem 0 .4rem; }
.listing-feedback__heading p:last-child { max-width: 760px; margin: 0; color: var(--muted); }
.feedback-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; padding: 0; }
.feedback-form label span, .admin-form label > span { display: block; margin-bottom: .35rem; font-size: .8rem; font-weight: 750; }
.feedback-form input, .feedback-form select, .feedback-form textarea, .admin-form input, .admin-form select, .admin-form textarea, .admin-search input, .admin-search select, .review-form input { width: 100%; min-height: 44px; border: 1px solid #aebbc1; border-radius: 5px; padding: .65rem .75rem; background: white; }
.feedback-form textarea, .admin-form textarea { min-height: 110px; resize: vertical; }
.feedback-form__wide, .admin-form__wide { grid-column: 1 / -1; }
.feedback-form__actions { grid-column: 1 / -1; display: flex; align-items: center; gap: 1rem; padding-top: .25rem; }
.feedback-form__actions .fine-print { margin: 0; }
.dealer-reviews { scroll-margin-top: 1.5rem; margin-top: 2rem; padding: clamp(1.25rem, 3vw, 2rem); border: 1px solid var(--line); border-radius: 8px; background: white; box-shadow: 0 8px 28px rgba(9, 31, 43, .06); }
.dealer-reviews__heading { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: 1.35rem; padding: 0 0 1.25rem; border-bottom: 1px solid var(--line); }
.dealer-reviews__heading h2 { margin: 0; }
.star-rating { color: var(--orange); letter-spacing: .05em; }
.review-summary { display: flex; align-items: center; gap: .5rem; margin: 0; color: var(--muted); font-size: .9rem; }
.review-summary strong { color: var(--ink); }
.review-list { display: grid; gap: 1rem; margin: 0 0 1.5rem; padding: 0; list-style: none; }
.review { border: 1px solid var(--line); border-radius: 6px; padding: 1rem 1.25rem; }
.review strong { margin: 0 .6rem; }
.review__date { color: var(--muted); font-size: .8rem; }
.review p { margin: .5rem 0 0; }
.review-empty { color: var(--muted); margin: 0 0 1.5rem; }
.review-submit-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; padding: 1.5rem 0 0; border-top: 1px solid var(--line); }
.review-submit-form input, .review-submit-form select, .review-submit-form textarea { width: 100%; min-height: 44px; border: 1px solid #aebbc1; border-radius: 5px; padding: .65rem .75rem; background: white; }
.review-submit-form label span { display: block; margin-bottom: .35rem; font-size: .8rem; font-weight: 750; }
.review-submit-form textarea { min-height: 110px; resize: vertical; }
.review-submit-form__wide { grid-column: 1 / -1; }
.review-submit-form__actions { grid-column: 1 / -1; display: flex; align-items: center; gap: 1rem; padding-top: .25rem; }
.review-submit-form__actions .fine-print { margin: 0; }
.fine-print { color: var(--muted); font-size: .82rem; }
.open-status { display: inline-block; border-radius: 999px; padding: .08rem .48rem; font-size: .74rem; font-weight: 800; letter-spacing: 0; text-transform: none; }
.open-status--open { color: #15573e; background: #e1f5eb; }
.open-status--closed { color: #7e2828; background: #fae5e5; }
.hours-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.hours-heading h2 { margin-bottom: 0; }
.hours-table { margin-top: .65rem; }
.hours-table th, .hours-table td { padding: .45rem 0; }
.hours-table th { width: 45%; color: var(--ink); font-size: .9rem; font-weight: 700; letter-spacing: 0; text-transform: none; }
.policy-shell { max-width: 760px; min-height: 65vh; margin: 0 auto; padding: clamp(2rem, 6vw, 4rem) clamp(1rem, 4vw, 2rem) clamp(3rem, 7vw, 5rem); }
.policy-header { margin: 1.25rem 0 1.75rem; padding-bottom: 1.5rem; border-bottom: 1px solid var(--line); }
.faq-list { display: grid; gap: .75rem; margin-bottom: 2rem; }
.faq-item { padding: 1rem 1.25rem; border: 1px solid var(--line); border-radius: 7px; background: white; }
.faq-item summary { font-weight: 750; cursor: pointer; }
.faq-item p { margin: .75rem 0 0; color: var(--muted); }
.faq-item[open] summary { margin-bottom: .25rem; }
.policy-header h1 { margin: .3rem 0 .5rem; font-size: clamp(2.1rem, 5vw, 3.4rem); letter-spacing: -.04em; }
.policy-updated { margin: 0; color: var(--muted); font-size: .9rem; }
.policy-jumplinks { display: flex; flex-wrap: wrap; gap: .5rem 1.1rem; margin: 0 0 1.75rem; padding: 1rem 1.25rem; border: 1px solid var(--line); border-radius: 8px; background: white; font-size: .85rem; }
.policy-jumplinks a { font-weight: 700; color: #21627c; text-underline-offset: 3px; }
.policy-callout { margin: 0 0 1.75rem; padding: 1rem 1.25rem; border-left: 4px solid var(--orange); border-radius: 4px; background: #fdf1ea; color: var(--ink); }
.policy-body section { margin: 0 0 1.1rem; padding: 1.5rem clamp(1.25rem, 4vw, 2rem); border: 1px solid var(--line); border-radius: 8px; background: white; scroll-margin-top: 1.25rem; }
.policy-body section:last-child { margin-bottom: 0; }
.policy-body h2 { margin: 0 0 .5rem; font-size: 1.2rem; }
.policy-body p { margin: .6rem 0; }
.policy-body p:first-child { margin-top: 0; }
.policy-crosslinks { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid var(--line); font-size: .9rem; }
.policy-crosslinks a { font-weight: 700; color: var(--ink); text-decoration-color: var(--line); text-underline-offset: 3px; }
.policy-crosslinks a[aria-current="page"] { color: var(--orange); text-decoration: none; }
.contact-form { display: grid; gap: 1rem; margin-top: 2rem; padding: clamp(1.25rem, 4vw, 2rem); border: 1px solid var(--line); border-radius: 8px; background: white; box-shadow: var(--shadow); }
.contact-form label span { display: block; margin-bottom: .35rem; font-size: .82rem; font-weight: 750; }
.contact-form input, .contact-form select, .contact-form textarea { width: 100%; min-height: 44px; border: 1px solid #aebbc1; border-radius: 5px; padding: .65rem .75rem; background: white; }
.contact-form textarea { min-height: 160px; resize: vertical; }
.contact-form .button { justify-self: start; }
.claim-search-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 1rem; margin: 1.75rem 0 1rem; padding: clamp(1.25rem, 4vw, 2rem); border: 1px solid var(--line); border-radius: 8px; background: white; box-shadow: var(--shadow); }
.claim-search-form label span { display: block; margin-bottom: .35rem; font-size: .82rem; font-weight: 750; }
.claim-search-form input { width: 100%; min-height: 44px; border: 1px solid #aebbc1; border-radius: 5px; padding: .65rem .75rem; background: white; }
.form-error { margin: 1.25rem 0; padding: 1rem; border-left: 4px solid #a53b32; border-radius: 4px; background: #fbeceb; }
.form-error h2, .form-error h3, .form-error p { margin: .1rem 0; }
.honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; }
.admin-body { min-height: 100vh; background: #eef1f2; }
.admin-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .9rem clamp(1rem, 4vw, 3rem); color: white; background: var(--navy); }
.admin-header nav { display: flex; align-items: center; flex-wrap: wrap; gap: .7rem 1.1rem; }
.admin-header nav a, .admin-header nav button, .admin-header > a { color: white; background: transparent; border: 0; font-weight: 700; }
.admin-header nav form { margin: 0; }
.admin-shell { max-width: 1180px; min-height: calc(100vh - 76px); margin: 0 auto; padding: 2.5rem clamp(1rem, 4vw, 3rem) 5rem; }
.admin-auth { max-width: 520px; margin: 7vh auto; padding: clamp(1.5rem, 4vw, 2.5rem); border: 1px solid var(--line); border-radius: 8px; background: white; box-shadow: var(--shadow); }
.admin-heading { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1.5rem; }
.admin-heading h1 { margin: 0; font-size: clamp(2rem, 4vw, 3.2rem); letter-spacing: -.035em; }
.admin-heading h2 { margin: .4rem 0 0; }
.admin-card { margin: 1rem 0; padding: 1.5rem; border: 1px solid var(--line); border-radius: 7px; background: white; }
.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin: 1.5rem 0; }
.stat-grid > * { display: flex; flex-direction: column; padding: 1.35rem; border: 1px solid var(--line); border-radius: 7px; color: inherit; background: white; text-decoration: none; }
.stat-grid strong { font-size: 2rem; }
.stat-grid span { color: var(--muted); }
.admin-form { display: grid; gap: 1rem; }
.admin-form--grid { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 1.5rem; border: 1px solid var(--line); border-radius: 7px; background: white; }
.admin-form small, table small { display: block; color: var(--muted); }
.check-label { display: flex; align-items: center; gap: .6rem; }
.check-label input { width: auto; min-height: auto; }
.admin-search { display: grid; grid-template-columns: 1fr auto; gap: .6rem; margin-bottom: 1rem; }
.admin-search--dealers { grid-template-columns: 1fr auto auto; }
.admin-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 7px; background: white; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: .8rem 1rem; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
th { color: var(--muted); font-size: .75rem; text-transform: uppercase; letter-spacing: .05em; }
.admin-two-column { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.admin-tabs { display: flex; gap: .35rem; }
.admin-tabs a { padding: .5rem .8rem; border-radius: 5px; text-decoration: none; }
.admin-tabs a[aria-current="page"] { color: white; background: var(--navy); }
.status { display: inline-block; padding: .2rem .5rem; border-radius: 999px; color: #71480b; background: #fff0cf; font-size: .75rem; font-weight: 800; text-transform: uppercase; }
.status--approved { color: #15573e; background: #e1f5eb; }
.status--rejected { color: #7e2828; background: #fae5e5; }
.status--automated { color: #21627c; background: #e6f0f4; }
.review-form { display: grid; grid-template-columns: 1fr auto auto; gap: .6rem; }
.admin-message { padding: .8rem 1rem; border-left: 4px solid var(--green); background: #e9f5ef; }
.admin-message--error { border-color: #a53b32; background: #fbeceb; }
.stat-grid > .stat-alert { border-color: #a53b32; background: #fbeceb; color: #7e2828; }
.error-stack { margin: .5rem 0 0; padding: .75rem; border-radius: 5px; background: #f6f3ec; font-size: .78rem; white-space: pre-wrap; word-break: break-word; overflow-x: auto; }
/* Same label/value rhythm as th/dt elsewhere in the admin (muted, uppercase, small) so a <dl> like
   the errors and submissions cards reads as aligned rows instead of the browser's default stacked
   dt-then-indented-dd layout. */
.admin-card dl { display: grid; grid-template-columns: max-content 1fr; gap: .4rem 1rem; margin: 0; }
.admin-card dt { color: var(--muted); font-size: .72rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; padding-top: .15rem; }
/* min-width: 0 lets the 1fr value column actually shrink below its content size -- a grid track
   defaults to min-width: auto (= content size), so without this a long unbroken value (e.g. a
   visitor-submitted correction with no spaces, or a long contact email) could force the row wider
   than the card instead of wrapping. overflow-wrap covers the same case for values this rule applies
   to that predate it, like adminSubmissionsView's free-text "Details" field. */
.admin-card dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
/* A left accent bar (same treatment as .admin-message--error) makes a page that's just a list of
   errors readable at a glance -- the red edge says "problem" before you read a word -- and gives
   .error-card something to differ from a plain .admin-card visually, not just semantically. */
.error-card { border-left: 4px solid #a53b32; }
.error-card summary { margin-top: .5rem; cursor: pointer; font-weight: 700; color: var(--navy-2); }
.error-card code { padding: .1rem .4rem; border-radius: 4px; background: #f6f3ec; font-size: .85em; }
.hours-editor { border: 1px solid var(--line); border-radius: 6px; padding: 1rem; }
.hours-editor > div { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem; margin: 1rem 0; }
.hours-editor legend { padding: 0 .4rem; font-weight: 800; }

:focus-visible { outline: 3px solid #ffad77; outline-offset: 3px; }

@media (max-width: 800px) {
  .search { grid-template-columns: 1fr auto; }
  .filters-toggle { display: block; grid-column: 1 / -1; }
  .filters { display: none; }
  .filters--open { display: flex; }
  .dealer-card, .detail-hero, .detail-grid { grid-template-columns: 1fr; }
  .dealer-card { gap: 1.25rem; }
  .dealer-card__actions { display: grid; grid-template-columns: 1fr 1fr; }
  .dealer-card__actions .text-link { grid-column: 1 / -1; }
  .result-note { display: none; }
  .results-heading { align-items: center; }
  #results-map { height: 58vh; min-height: 420px; }
  .feedback-form, .review-submit-form, .claim-search-form, .stat-grid, .admin-form--grid, .admin-two-column { grid-template-columns: 1fr; }
  .hours-editor > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .feedback-form__actions, .review-submit-form__actions { align-items: stretch; flex-direction: column; }
  .review-form { grid-template-columns: 1fr; }
  .admin-header { align-items: flex-start; }
  .admin-header nav { justify-content: flex-end; }
}

@media (max-width: 520px) {
  /* Three items (brand, "Browse by state", the "Claim your business" button) don't fit on one
     76px-tall row at phone widths without crushing all three together -- let the header wrap onto
     a second row instead, brand-only on the first, nav taking the full width of the second so
     "Browse by state" and the button each get real space rather than fighting for the same line. */
  .site-header { height: auto; flex-wrap: wrap; padding: .75rem 1.25rem; row-gap: .6rem; }
  .site-nav { width: 100%; justify-content: space-between; }
  .hero { padding-top: 3rem; }
  .search { grid-template-columns: 1fr; }
  .search > .button--accent { width: 100%; }
  .dealer-card__actions { grid-template-columns: 1fr; }
  .dealer-card__actions .text-link { grid-column: auto; }
  .results-heading { align-items: flex-start; }
  .results-tools { align-items: flex-end; }
  .hours-editor > div { grid-template-columns: 1fr; }
}

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