/* FiraGO — self-hosted, subset to Latin + Georgian (SIL OFL). The primary UI
   typeface; Noto Sans Georgian stays as the fallback for any missing glyphs. */
@font-face {
  font-family: "FiraGO";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("assets/fonts/firago-400.woff2") format("woff2");
}
@font-face {
  font-family: "FiraGO";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("assets/fonts/firago-500.woff2") format("woff2");
}
@font-face {
  font-family: "FiraGO";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("assets/fonts/firago-600.woff2") format("woff2");
}
@font-face {
  font-family: "FiraGO";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("assets/fonts/firago-700.woff2") format("woff2");
}

:root {
  /* Glass / soft-futurism system — see DESIGN.md. Legacy names kept as
     aliases so every existing usage picks up the new palette. */
  --ink: #161a15;
  --ink-elevated: #222921;
  --deep-green: var(--ink);
  --deep-green-hover: #2a332a;
  --panel-green: rgba(20, 27, 21, 0.62);
  --panel-green-soft: rgba(33, 41, 33, 0.55);
  --warm-ivory: #f2f6f1;
  --soft-beige: #e8eee6;
  /* Opaque. Translucent cards over a blur were glassmorphism used as the
     default surface: it dropped text contrast against whatever scrolled
     underneath and made 33 surfaces read as one soft haze. Glass is kept for
     sticky chrome (--material-thin), where content genuinely passes behind. */
  --card-white: #ffffff;
  --border: rgba(122, 138, 122, 0.22);
  --graphite: #161a15;
  --secondary: rgba(48, 58, 48, 0.76);
  /* Was rgba(48,58,48,0.66) — 4.05:1 on the page background, under the 4.5:1
     minimum for body text. Solid #5a6459 measures 5.65:1 and matches
     --market-muted, so the two muted greys are now one value. */
  --muted: #5a6459;
  /* Single calm action color — deep forest green. Kept under the old
     token names so every reference flips at once. No orange/copper. */
  --copper: #1e4d34;
  --copper-hover: #163a27;
  --accent-soft: rgba(30, 77, 52, 0.12);
  --soft-copper: rgba(30, 77, 52, 0.1);

  --material-thin: rgba(255, 255, 255, 0.55);
  --material-regular: rgba(255, 255, 255, 0.72);
  --material-thick: rgba(255, 255, 255, 0.88);
  --hairline: rgba(255, 255, 255, 0.6);
  --blur-chrome: blur(24px) saturate(180%);
  /* No-op: card surfaces are opaque now, so this only cost compositing. */
  --blur-card: none;

  --cash-add-bg: rgba(46, 119, 65, 0.12);   --cash-add-fg: #2E7741;
  --cash-ask-bg: rgba(178, 58, 46, 0.11);   --cash-ask-fg: #B23A2E;
  --cash-none-bg: rgba(58, 108, 143, 0.12); --cash-none-fg: #3A6C8F;
  --shadow-subtle: 0 2px 12px rgba(15, 20, 15, 0.05);
  --shadow-card: 0 8px 32px rgba(15, 20, 15, 0.08);
  --radius: 16px;
  --radius-sm: 12px;
  --container: 1280px;

  --font: "FiraGO", "Noto Sans Georgian", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  /* --font-display was byte-identical to --font: a "display" token that added
     a name but no contrast. Kept as an alias so existing usages resolve. */
  --font-display: var(--font);
  --font-serif: "Noto Serif Georgian", "Noto Sans Georgian", Georgia, serif;
  /* JetBrains Mono has no Georgian glyphs, so any label mixing Georgian with
     digits rendered in two different typefaces mid-word. It also read as a code
     font in a consumer marketplace. Numerals now align via font-variant-numeric
     rather than a second family. */
  --font-mono: var(--font);
}

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

html {
  scroll-behavior: smooth;
  scroll-padding-top: 80px;
}

body {
  margin: 0;
  color: var(--graphite);
  background:
    radial-gradient(1100px 520px at 12% -6%, rgba(168, 200, 172, 0.35), transparent 60%),
    radial-gradient(900px 480px at 88% 4%, rgba(214, 200, 188, 0.3), transparent 55%),
    linear-gradient(180deg, #e9efe7, var(--warm-ivory) 38%);
  background-attachment: fixed;
  font-family: var(--font);
  font-variant-numeric: tabular-nums;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img,
svg {
  display: block;
}

img {
  max-width: 100%;
  height: auto;
}

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

button,
input,
select {
  font: inherit;
}

button {
  border: 0;
  cursor: pointer;
}

a,
button,
input,
select,
textarea,
label {
  touch-action: manipulation;
}

svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.9;
}

:focus-visible {
  outline: 3px solid rgba(30, 77, 52, 0.55);
  outline-offset: 3px;
}


.site-footer :focus-visible {
  outline-color: rgba(243, 246, 241, 0.6);
}

.container {
  width: min(calc(100% - 48px), var(--container));
  margin-inline: auto;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 18px;
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  font-size: 14px;
  font-weight: 600;
  transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease;
}

.btn-primary {
  background: var(--copper);
  color: #fff;
}

.btn-primary:hover {
  background: var(--copper-hover);
}

.btn-accent {
  background: var(--copper);
  color: #fff;
}

.btn-accent:hover {
  background: var(--copper-hover);
}

/* Plain hover: no growing-dot trick, just a quiet fill + lift. */
.btn-interactive {
  gap: 8px;
  transition: background-color 180ms ease, color 180ms ease, border-color 180ms ease, transform 180ms ease;
}

.btn-light.btn-interactive:hover,
.btn-light.btn-interactive:focus-visible,
.btn-secondary.btn-interactive:hover,
.btn-secondary.btn-interactive:focus-visible {
  border-color: rgba(30, 77, 52, 0.4);
  color: var(--copper);
}

.btn-accent.listing-offer {
  background: transparent;
  border-color: var(--border);
  color: var(--copper);
}

.btn-accent.listing-offer:hover {
  background: var(--accent-soft);
  border-color: rgba(30, 77, 52, 0.4);
}

.btn-secondary,
.btn-light {
  background: var(--material-regular);
  color: var(--graphite);
  border-color: var(--border);
  backdrop-filter: var(--blur-card);
}

.btn-secondary:hover,
.btn-light:hover {
  background: var(--material-thick);
}

.section-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 22px;
}

.section-head h2,
.split-section h2 {
  margin: 0;
  color: var(--graphite);
  font-family: var(--font-display);
  font-size: clamp(28px, 3vw, 40px);
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -0.02em;
}

.section-head.compact {
  justify-content: center;
  text-align: center;
}

.home-main {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}


.text-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--deep-green);
  font-size: 14px;
  font-weight: 700;
}

.text-link svg {
  width: 16px;
  height: 16px;
}


.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--material-thin);
  border-bottom: 1px solid rgba(56, 64, 56, 0.1);
  backdrop-filter: var(--blur-chrome);
  -webkit-backdrop-filter: var(--blur-chrome);
}

.header-inner {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  min-height: 62px;
  gap: 28px;
}

.brand-cluster {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.brand {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  white-space: nowrap;
}


.brand {
  gap: 9px;
}

.brand-tile {
  display: grid;
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  place-items: center;
  border-radius: 7px;
  background: var(--deep-green);
  color: #fff;
}

.brand-tile svg {
  width: 15px;
  height: 15px;
  stroke-width: 2.2;
}


.brand-word {
  color: var(--deep-green);
  font-family: var(--font-display);
  font-size: 21px;
  font-weight: 700;
  letter-spacing: -0.015em;
  line-height: 1;
}

.brand-word b {
  color: var(--copper);
  font-weight: 700;
}

.lite-switch {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 30px;
  padding: 3px 4px 3px 9px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #fff;
  color: var(--secondary);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0;
  cursor: pointer;
  transition: border-color 180ms ease, color 180ms ease, background 180ms ease;
}

.lite-switch i {
  position: relative;
  display: block;
  width: 34px;
  height: 20px;
  border-radius: 999px;
  background: #d2d9d0;
  transition: background 180ms ease;
}

.lite-switch i::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 2px rgba(15, 20, 15, 0.22);
  transition: transform 180ms ease;
}

.lite-switch.is-on {
  border-color: rgba(30, 77, 52, 0.32);
  background: rgba(30, 77, 52, 0.08);
  color: var(--deep-green);
}

.lite-switch.is-on i {
  background: var(--deep-green);
}

.lite-switch.is-on i::after {
  transform: translateX(14px);
}

.site-nav {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: clamp(18px, 2vw, 28px);
}

.site-nav a {
  position: relative;
  display: inline-flex;
  align-items: center;
  min-height: 62px;
  color: var(--graphite);
  font-size: 14px;
  font-weight: 700;
  white-space: nowrap;
}

.site-nav a:hover {
  color: var(--deep-green);
}

.site-nav a.is-active::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 14px;
  height: 2px;
  border-radius: 2px;
  background: var(--copper);
}

.header-actions {
  display: inline-flex;
  align-items: center;
  justify-content: end;
  gap: clamp(14px, 2vw, 24px);
  min-width: 0;
}


.hero {
  position: relative;
  overflow: hidden;
  min-height: 645px;
  padding: 52px 0 34px;
  scroll-margin-top: 80px;
  border-bottom: 1px solid rgba(122, 138, 122, 0.7);
  isolation: isolate;
}

.hero-backdrop {
  position: absolute;
  inset: 0;
  z-index: -2;
  background-image:
    linear-gradient(180deg, rgba(243, 246, 241, 0.55), rgba(243, 246, 241, 0.3) 44%, rgba(243, 246, 241, 0.8) 100%),
    linear-gradient(90deg, rgba(243, 246, 241, 0.5), rgba(243, 246, 241, 0.14) 46%, rgba(243, 246, 241, 0.5)),
    url("assets/hero-road-bg.png");
  background-position: center;
  background-size: cover;
}

.hero::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  z-index: -1;
  height: 40%;
  background: linear-gradient(180deg, rgba(243, 246, 241, 0), rgba(243, 246, 241, 0.9));
  pointer-events: none;
}

.hero-inner {
  position: relative;
}

.hero .container {
  width: min(calc(100% - 64px), 1620px);
}

.hero-copy {
  max-width: 720px;
  margin: 0 auto 18px;
  text-align: center;
}

.hero-copy h1 {
  margin: 0;
  color: var(--graphite);
  font-family: var(--font-display);
  font-size: clamp(38px, 4.6vw, 64px);
  font-weight: 800;
  line-height: 1.08;
  letter-spacing: -0.025em;
}

.hero-copy p {
  max-width: 660px;
  margin: 14px auto 0;
  color: var(--secondary);
  font-size: 16px;
  font-weight: 600;
}

.swap-stage {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 128px minmax(0, 1fr);
  align-items: end;
  min-height: 335px;
  margin-top: 6px;
}

.swap-label {
  position: absolute;
  top: 20px;
  display: flex;
  align-items: center;
  color: var(--deep-green);
  font-size: 18px;
  font-weight: 800;
}

.swap-label::after {
  content: "";
  display: block;
  width: 64px;
  height: 1px;
  margin-left: 12px;
  background: rgba(30, 77, 52, 0.55);
}

.swap-label-left {
  left: 9%;
}

.swap-label-right {
  right: 10%;
}

.swap-label-right::after {
  order: -1;
  margin: 0 12px 0 0;
}

.hero-car {
  position: relative;
  display: grid;
  align-items: end;
  min-width: 0;
}

.hero-car::before {
  content: "";
  position: absolute;
  left: 13%;
  right: 13%;
  bottom: 54px;
  height: 34px;
  border-radius: 6px;
  background: rgba(15, 20, 15, 0.25);
  filter: blur(16px);
}

.hero-car img {
  position: relative;
  z-index: 1;
  width: min(100%, 610px);
  object-fit: contain;
  filter: saturate(1.02) contrast(1.02) drop-shadow(0 18px 26px rgba(15, 20, 15, 0.32));
}

.hero-car-left {
  grid-column: 1;
  justify-items: end;
}

.hero-car-left img {
  transform: translateX(26px);
}

.hero-car-right {
  grid-column: 3;
  justify-items: start;
}

.hero-car-right img {
  transform: translateX(-26px);
}

.swap-center {
  position: relative;
  z-index: 3;
  grid-column: 2;
  align-self: center;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 16px;
  color: var(--deep-green);
}

.swap-line {
  width: 100%;
  height: 1px;
  background-image: linear-gradient(90deg, transparent, rgba(15, 20, 15, 0.28), transparent);
}

.swap-icon {
  display: grid;
  width: 58px;
  height: 58px;
  place-items: center;
  border: 1px solid var(--hairline);
  border-radius: 50%;
  background: var(--material-regular);
  backdrop-filter: var(--blur-card);
  -webkit-backdrop-filter: var(--blur-card);
  color: var(--copper);
  box-shadow: 0 8px 24px rgba(15, 20, 15, 0.12);
}

.swap-icon svg {
  width: 27px;
  height: 27px;
  stroke-width: 2.1;
}


.hero-car-caption {
  position: relative;
  z-index: 2;
  justify-self: center;
  margin-top: -4px;
  padding: 8px 20px;
  text-align: center;
  border: 1px solid var(--hairline);
  border-radius: 12px;
  background: var(--material-regular);
  backdrop-filter: var(--blur-card);
  -webkit-backdrop-filter: var(--blur-card);
  box-shadow: var(--shadow-subtle);
}

.hero-car-caption strong {
  display: block;
  color: var(--graphite);
  font-size: 17px;
  font-weight: 800;
  line-height: 1.15;
}

.hero-car-caption small {
  display: block;
  margin-top: 2px;
  color: var(--secondary);
  font-size: 13px;
  font-weight: 700;
}


.sound-btn {
  position: absolute;
  z-index: 3;
  left: 50%;
  bottom: 64px;
  transform: translateX(-50%);
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border: 1px solid rgba(122, 138, 122, 0.9);
  border-radius: 50%;
  background: #fff;
  color: var(--deep-green);
  box-shadow: 0 1px 3px rgba(15, 20, 15, 0.18);
  cursor: pointer;
}

.sound-btn svg {
  width: 22px;
  height: 22px;
}

.sound-btn:hover {
  background: rgba(255, 255, 255, 0.92);
}

.sound-btn.is-playing {
  background: var(--deep-green);
  color: #fff;
}


.hero-car-left .sound-btn {
  left: calc(50% + 26px);
}

.hero-car-right .sound-btn {
  left: calc(50% - 26px);
}

@media (min-width: 1280px) {
  .hero-car-left .sound-btn {
    left: calc(50% + 34px);
  }

  .hero-car-right .sound-btn {
    left: calc(50% - 34px);
  }
}

@media (max-width: 1279px) {
  .hero-car-left .sound-btn,
  .hero-car-right .sound-btn {
    left: 50%;
  }
}


.search-bar {
  display: grid;
  grid-template-columns: minmax(250px, 1.35fr) repeat(3, minmax(140px, 1fr)) auto;
  gap: 8px;
  max-width: 1110px;
  margin: 14px auto 0;
  padding: 12px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 20px;
  background: var(--panel-green);
  backdrop-filter: var(--blur-chrome);
  -webkit-backdrop-filter: var(--blur-chrome);
  box-shadow: 0 16px 48px rgba(15, 20, 15, 0.22);
}

.swap-plan {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  padding: 4px 4px 10px;
  color: #fff;
}

.swap-plan-item {
  display: grid;
  gap: 2px;
  min-height: 52px;
  padding: 9px 12px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.13);
}

.swap-plan-item span {
  color: rgba(255, 255, 255, 0.82);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0;
}

.swap-plan-item strong {
  overflow: hidden;
  color: #fff;
  font-size: 15px;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.swap-plan-icon {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.16);
  color: #fff;
}

.swap-plan-icon svg {
  width: 22px;
  height: 22px;
}

.search-field {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  min-height: 48px;
  padding: 0 12px;
  border: 1px solid rgba(255, 255, 255, 0.3);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.13);
  color: rgba(255, 255, 255, 0.78);
}

.search-field svg {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
}

.field-label {
  color: rgba(255, 255, 255, 0.85);
  font-size: 12px;
  font-weight: 700;
  white-space: nowrap;
}

.search-field input,
.search-field select {
  width: 100%;
  min-width: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: #fff;
  font-size: 13px;
  font-weight: 600;
}

.search-field input::placeholder {
  color: rgba(255, 255, 255, 0.8);
}

.search-field select {
  appearance: none;
  cursor: pointer;
}

.search-field option {
  color: var(--graphite);
}

.search-submit {
  min-width: 142px;
  min-height: 48px;
}


.search-bar.swap-search {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  max-width: 1080px;
}

.swap-search-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 12px;
}

.swap-search-icon {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.16);
  color: #fff;
}

.swap-search-icon svg {
  width: 22px;
  height: 22px;
}

.swap-search-bottom {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.95fr) auto;
  align-items: center;
  gap: 12px;
}

.search-slider {
  display: grid;
  align-content: center;
  gap: 5px;
  min-height: 48px;
  padding: 6px 14px;
  border: 1px solid rgba(255, 255, 255, 0.3);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.13);
}

.slider-track {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 10px;
}

.slider-end {
  color: rgba(255, 255, 255, 0.9);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0;
  white-space: nowrap;
}

.cash-slider {
  width: 100%;
  accent-color: var(--copper);
  cursor: pointer;
}

.slider-value {
  text-align: center;
  color: #fff;
  font-size: 13px;
  font-weight: 800;
}

@media (max-width: 760px) {
  .swap-search-top,
  .swap-search-bottom {
    grid-template-columns: 1fr;
  }

  .swap-search-icon {
    justify-self: center;
    transform: rotate(90deg);
  }

  .search-submit {
    width: 100%;
  }
}

@media (min-width: 1280px) {
  .hero .container {
    width: min(calc(100% - 56px), 1680px);
  }

  .swap-label {
    display: none;
  }

  .swap-stage {
    grid-template-columns: minmax(0, 1fr) 88px minmax(0, 1fr);
    min-height: clamp(370px, 23vw, 450px);
    margin-top: 0;
  }

  .hero-car img {
    width: min(100%, 820px);
  }

  .hero-car-left img {
    transform: translateX(34px);
  }

  .hero-car-right img {
    transform: translateX(-34px);
  }

  .hero-car::before {
    bottom: 60px;
    height: 42px;
  }

  .hero-car-left .hero-car-card {
    margin-right: 18%;
  }

  .hero-car-right .hero-car-card {
    margin-left: 18%;
  }
}


@media (max-width: 1279px) {
  .swap-label {
    display: none;
  }

  .swap-stage {
    grid-template-columns: minmax(0, 1fr) 110px minmax(0, 1fr);
    min-height: auto;
    align-items: center;
    margin-top: 4px;
  }

  .hero-car::before {
    bottom: 40px;
  }

  .swap-center {
    grid-template-columns: auto;
    gap: 0;
    justify-self: center;
  }

  .swap-line {
    display: none;
  }

  .swap-icon {
    width: 56px;
    height: 56px;
  }

  .hero-car-card {
    width: min(300px, 90%);
  }

  .hero-car-left .hero-car-card {
    margin-right: 6%;
  }

  .hero-car-right .hero-car-card {
    margin-left: 6%;
  }
}


.listings-section {
  padding: 88px 0 72px;
}

.listing-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px;
}

.listing-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  border: 1px solid var(--hairline);
  border-radius: 18px;
  background: var(--material-thick);
  backdrop-filter: var(--blur-card);
  -webkit-backdrop-filter: var(--blur-card);
  box-shadow: var(--shadow-card);
  transition: transform 220ms ease, box-shadow 220ms ease;
}

.listing-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 44px rgba(15, 20, 15, 0.13);
}

.listing-media {
  position: relative;
  height: 180px;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), #e8eee6);
}

.listing-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.listing-badge {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 2;
  padding: 5px 10px;
  border-radius: 6px;
  background: var(--soft-copper);
  color: #5a6459;
  font-size: 11px;
  font-weight: 800;
}

.save-btn {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 2;
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border: 1px solid rgba(122, 138, 122, 0.9);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.76);
  color: var(--deep-green);
}

.save-btn svg {
  width: 18px;
  height: 18px;
}

.save-btn.is-saved {
  background: var(--deep-green);
  color: #fff;
}

.listing-body {
  display: grid;
  grid-template-rows: auto minmax(58px, auto) minmax(50px, auto) auto;
  flex: 1 1 auto;
  gap: 14px;
  padding: 14px 14px 16px;
}

.listing-body h3 {
  margin: 0;
  overflow: hidden;
  color: var(--graphite);
  font-size: 16px;
  line-height: 1.2;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.listing-body p {
  margin: 5px 0 0;
  color: var(--secondary);
  font-size: 13px;
  font-weight: 600;
}

.listing-city {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 7px;
  color: var(--secondary);
  font-size: 12px;
  font-weight: 700;
}

.listing-city svg {
  width: 14px;
  height: 14px;
  color: var(--copper);
}


.listing-wants {
  display: flex;
  align-items: center;
  gap: 9px;
  min-height: 58px;
  margin: 0;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(20, 26, 20, 0.05);
  color: var(--graphite);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.35;
}

.listing-wants span {
  flex: 0 0 auto;
  color: var(--copper);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0;
}

.listing-body > .trade-cash {
  min-height: 50px;
  margin: 0;
}


.wanted-line,
.car-row-wants {
  display: grid;
  gap: 9px;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #f2f6f1;
}

.wanted-label {
  color: var(--copper);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0;
}

.wanted-main {
  display: flex;
  align-items: center;
  gap: 11px;
}

.wanted-icon {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: 8px;
  background: var(--deep-green);
  color: #fff;
}

.wanted-icon svg {
  width: 20px;
  height: 20px;
}

.wanted-line strong,
.car-row-wants strong {
  color: var(--graphite);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.3;
}

.cash-line {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 11px 12px;
  border-radius: 9px;
  background: var(--soft-beige);
  color: var(--secondary);
}

.cash-line strong {
  font-size: 15px;
  font-weight: 800;
}


.cash-line.cash-none {
  background: var(--cash-none-bg);
  color: var(--cash-none-fg);
}


.cash-line.cash-add {
  background: var(--cash-add-bg);
  color: var(--cash-add-fg);
}


.cash-line.cash-ask {
  background: var(--cash-ask-bg);
  color: var(--cash-ask-fg);
}


.cash-line.cash-flexible {
  background: var(--soft-beige);
  color: #6f6256;
}

.listing-foot {
  display: flex;
  align-items: end;
}

.listing-foot .btn {
  width: 100%;
  min-height: 40px;
  padding: 0 14px;
  font-size: 13px;
}

.listings-more {
  display: flex;
  justify-content: center;
  margin-top: 28px;
}

.listings-more .btn {
  min-height: 44px;
  padding: 0 26px;
}

.quick-add {
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border-radius: 8px;
  background: var(--deep-green);
  color: #fff;
}

.quick-add:hover {
  background: var(--deep-green-hover);
}

.quick-add svg {
  width: 17px;
  height: 17px;
}

.empty-state {
  grid-column: 1 / -1;
  margin: 0;
  padding: 28px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: rgba(255, 255, 255, 0.92);
  color: var(--secondary);
  font-weight: 700;
  text-align: center;
}


.process-section {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  padding: 68px 0;
  border-block: 1px solid var(--border);
}


.process-section::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(720px 380px at 82% 30%, rgba(164, 186, 214, 0.24), transparent 60%),
    linear-gradient(180deg, rgba(236, 238, 243, 0.7), rgba(243, 246, 241, 0.4));
}

.split-section {
  display: grid;
  grid-template-columns: 0.85fr 1.4fr;
  gap: 44px;
  align-items: start;
}

.split-section > div:first-child {
  position: sticky;
  top: 90px;
}


.process-route {
  --route-gap: 28px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--route-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}

.process-step {
  position: relative;
  padding-top: 54px;
}


.process-step::before {
  content: "";
  position: absolute;
  top: 16px;
  left: 34px;
  right: calc(-1 * var(--route-gap));
  height: 2px;
  background: repeating-linear-gradient(90deg, rgba(20, 26, 20, 0.32) 0 14px, transparent 14px 26px);
}

.process-step:last-child::before {
  content: none;
}

.step-marker {
  position: absolute;
  top: 0;
  left: 0;
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 50%;
  background: var(--ink);
  color: #fff;
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 15px;
  font-weight: 600;
  box-shadow: 0 0 0 4px rgba(243, 246, 241, 0.85);
}

.process-step:last-child .step-marker {
  background: var(--copper);
}

.process-step h3,
.benefit-row h3 {
  margin: 0;
  color: var(--graphite);
  font-size: 16px;
  line-height: 1.25;
}

.process-step h3 {
  margin-bottom: 8px;
}

.process-step p,
.benefit-row p {
  margin: 0;
  color: var(--secondary);
  font-size: 13px;
  font-weight: 600;
}


.benefits-section {
  padding: 88px 0;
}

.benefits-ledger {
  max-width: 920px;
  margin-inline: auto;
  overflow: hidden;
  border: 1px solid var(--hairline);
  border-radius: 18px;
  background: var(--material-regular);
  backdrop-filter: var(--blur-card);
  -webkit-backdrop-filter: var(--blur-card);
  box-shadow: var(--shadow-card);
}

.benefit-row {
  display: grid;
  grid-template-columns: 24px minmax(200px, 0.55fr) 1fr;
  gap: 10px 22px;
  align-items: start;
  padding: 24px 28px;
}

.benefit-row + .benefit-row {
  border-top: 1px solid var(--border);
}

.benefit-row p {
  max-width: 58ch;
}

.benefit-glyph {
  color: var(--deep-green);
  margin-top: 1px;
}

.benefit-glyph svg {
  width: 20px;
  height: 20px;
  stroke-width: 1.7;
}


.cta-section {
  padding: 0 0 88px;
}

.cta-panel {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 32px;
  min-height: 180px;
  padding: 40px 44px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 24px;
  background:
    radial-gradient(620px 300px at 85% 0%, rgba(30, 77, 52, 0.28), transparent 60%),
    linear-gradient(100deg, rgba(15, 20, 15, 0.97), rgba(26, 30, 38, 0.92)),
    url("assets/hero-road-bg.png") center 63% / cover;
  color: #fff;
  box-shadow: 0 24px 64px rgba(15, 20, 15, 0.28);
}

.cta-panel h2 {
  max-width: 680px;
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(26px, 3vw, 38px);
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -0.02em;
}

.cta-panel p {
  max-width: 720px;
  margin: 10px 0 0;
  color: rgba(255, 255, 255, 0.78);
  font-size: 15px;
  font-weight: 600;
}

.cta-actions {
  display: flex;
  gap: 12px;
}

.cta-actions .btn {
  min-width: 170px;
}


.site-footer {
  background: var(--ink);
  color: rgba(243, 246, 241, 0.9);
}

.footer-grid {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 34px 0 26px;
}

.footer-brand {
  display: grid;
  gap: 8px;
}

.footer-brand .brand {
  min-height: 0;
}

.footer-brand .brand-word {
  font-size: 18px;
}

.footer-brand .brand-tile {
  width: 24px;
  height: 24px;
}

.site-footer .brand-tile {
  background: var(--warm-ivory);
  color: var(--deep-green);
}

.site-footer .brand-word {
  color: var(--warm-ivory);
}

.site-footer .brand-word b {
  color: #D8A878;
}

.footer-brand p {
  margin: 0;
  color: rgba(243, 246, 241, 0.68);
  font-family: var(--font-display);
  font-size: 13.5px;
  font-weight: 500;
}

.footer-nav {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(16px, 3vw, 34px);
}

.footer-nav a {
  color: rgba(243, 246, 241, 0.85);
  font-size: 13px;
  font-weight: 600;
}

.footer-nav a:hover {
  color: #fff;
  text-decoration: underline;
  text-decoration-color: rgba(216, 168, 120, 0.8);
  text-underline-offset: 4px;
}

.footer-base {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 52px;
  color: rgba(243, 246, 241, 0.55);
  font-size: 12px;
  font-weight: 500;
}


.footer-base::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: repeating-linear-gradient(90deg, rgba(243, 246, 241, 0.28) 0 14px, transparent 14px 26px);
}

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

@media (max-width: 1160px) {
  .site-nav {
    gap: 16px;
  }

  .search-bar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .swap-plan,
  .search-field-wide,
  .search-submit {
    grid-column: 1 / -1;
  }

  .listing-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .split-section {
    grid-template-columns: 1fr;
  }

  .split-section > div:first-child {
    position: static;
  }
}

@media (max-width: 900px) {
  .header-inner {
    grid-template-columns: auto 1fr;
    gap: 12px;
  }

  .site-nav {
    display: flex;
    gap: 14px;
  }

  .site-nav a {
    min-height: 62px;
    padding: 0;
    font-size: 13px;
  }

  .site-nav a.is-active::after {
    left: 0;
    right: 0;
    bottom: 13px;
    width: auto;
  }

  .header-actions {
    justify-self: end;
    gap: 14px;
  }

  .site-header--sell .header-cta {
    display: none;
  }

  .header-cta {
    min-width: 78px;
    padding-inline: 12px;
    font-size: 0;
  }

  .header-cta::after {
    content: "დამატება";
    font-size: 12px;
    font-weight: 800;
  }

  .hero {
    min-height: auto;
    padding-top: 34px;
  }

  .hero-copy {
    margin-bottom: 10px;
  }

  .listing-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .cta-panel {
    grid-template-columns: 1fr;
  }

  .cta-actions {
    flex-wrap: wrap;
  }
}

@media (max-width: 680px) {
  .container {
    width: min(calc(100% - 28px), var(--container));
  }

  .header-inner {
    min-height: 58px;
    gap: 8px;
  }

  .brand {
    gap: 7px;
    font-size: 16px;
  }

  .brand-word {
    font-size: 18px;
  }

  .brand-tile {
    width: 26px;
    height: 26px;
  }

  .header-actions {
    gap: 8px;
  }

  .site-nav {
    display: none;
  }

  .header-cta {
    min-width: 72px;
    min-height: 36px;
    padding-inline: 12px;
    border-radius: 8px;
  }

  .header-cta::after {
    content: "დამატება";
    font-size: 12px;
  }

  .hero {
    padding: 22px 0 28px;
  }

  .hero-backdrop {
    background-position: center top;
  }

  .hero-copy {
    max-width: 360px;
    margin-bottom: 0;
  }

  .hero-copy h1 {
    font-size: clamp(29px, 8.6vw, 36px);
    line-height: 1.08;
  }

  .hero-copy p {
    max-width: 33ch;
    margin-top: 9px;
    font-size: 13px;
    line-height: 1.45;
  }

  .swap-stage {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    align-items: end;
    min-height: auto;
    margin-top: 12px;
  }

  .hero-car-left,
  .hero-car-right {
    order: 0;
  }

  
  .hero-car-left {
    grid-column: 1;
    justify-items: start;
  }

  .hero-car-right {
    grid-column: 2;
    justify-items: end;
  }

  .hero-car-left img,
  .hero-car-right img {
    width: 100%;
    max-width: none;
    transform: none;
  }

  .hero-car::before {
    left: 4%;
    right: 4%;
    bottom: 6px;
    height: 20px;
    filter: blur(10px);
  }

  
  .hero-car-caption {
    margin-top: 2px;
    padding: 5px 12px;
  }

  .sound-btn {
    bottom: 48px;
    width: 38px;
    height: 38px;
  }

  .sound-btn svg {
    width: 18px;
    height: 18px;
  }

  .hero-car-caption strong {
    font-size: 13px;
    white-space: nowrap;
  }

  .hero-car-caption small {
    font-size: 11px;
    white-space: nowrap;
  }

  .swap-center {
    grid-column: 1 / -1;
    grid-row: 1;
    justify-self: center;
    align-self: center;
    grid-template-columns: auto;
    margin: 0;
    z-index: 4;
  }

  .swap-icon {
    width: 50px;
    height: 50px;
    border-color: rgba(20, 26, 20, 0.24);
    background: rgba(243, 246, 241, 0.95);
    box-shadow: 0 1px 2px rgba(20, 26, 20, 0.12);
  }

  .swap-icon svg {
    width: 18px;
    height: 18px;
    stroke-width: 2.15;
  }

  .search-bar {
    grid-template-columns: 1fr;
    gap: 8px;
    margin-top: 16px;
    padding: 8px;
    border-radius: 12px;
    box-shadow: 0 1px 2px rgba(20, 26, 20, 0.12);
  }

  .swap-plan {
    grid-template-columns: 1fr 36px 1fr;
    gap: 7px;
    padding: 0 0 2px;
  }

  .swap-plan-item {
    min-height: 48px;
    padding: 8px 9px;
  }

  .swap-plan-item span {
    font-size: 10px;
  }

  .swap-plan-item strong {
    font-size: 12px;
  }

  .swap-plan-icon {
    width: 30px;
    height: 30px;
    justify-self: center;
    align-self: center;
  }

  .swap-plan-icon svg {
    width: 16px;
    height: 16px;
  }

  .search-field {
    min-height: 44px;
    padding-inline: 11px;
  }

  .search-field input,
  .search-field select {
    font-size: 12px;
  }

  .swap-plan,
  .search-field-wide,
  .search-submit {
    grid-column: auto;
  }

  .search-submit {
    width: 100%;
    min-height: 46px;
  }

  .listing-grid {
    grid-template-columns: 1fr;
  }

  
  .process-route {
    --route-gap: 30px;
    grid-template-columns: 1fr;
    gap: var(--route-gap);
  }

  .process-step {
    padding: 0 0 0 52px;
  }

  .process-step::before {
    top: 40px;
    bottom: calc(-1 * var(--route-gap));
    left: 16px;
    right: auto;
    width: 2px;
    height: auto;
    background: repeating-linear-gradient(180deg, rgba(20, 26, 20, 0.32) 0 12px, transparent 12px 22px);
  }

  
  .benefit-row {
    grid-template-columns: 24px 1fr;
    padding: 20px;
  }

  .benefit-row p {
    grid-column: 2;
  }

  .section-head {
    align-items: start;
    flex-direction: column;
  }

  .listings-section,
  .process-section,
  .benefits-section {
    padding: 52px 0;
  }

  .listing-media {
    height: 190px;
  }

  .listing-foot {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .listing-foot .btn {
    width: 100%;
  }

  .cta-panel {
    padding: 26px 20px;
  }

  .cta-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .cta-actions .btn {
    width: 100%;
  }

  .footer-grid {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
  }

  .footer-base {
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    padding: 14px 0;
  }
}


.catalog-shell {
  background: var(--warm-ivory);
}


.catalog-hero,
.sell-hero {
  position: relative;
  padding: 20px 0 22px;
  background: var(--deep-green);
  color: var(--warm-ivory);
}

.catalog-hero-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px 30px;
}

.catalog-hero h1 {
  margin: 0;
  color: var(--warm-ivory);
  font-size: 23px;
  font-weight: 700;
  line-height: 1.2;
}

.catalog-hero-copy > p {
  margin: 4px 0 0;
  max-width: 56ch;
  color: rgba(243, 246, 241, 0.78);
  font-size: 12px;
  line-height: 1.5;
}

.catalog {
  display: grid;
  grid-template-columns: 300px minmax(0, 1fr);
  gap: 24px;
  align-items: start;
  padding: 22px 0 72px;
}


.filterbar {
  display: block;
  gap: 0;
  margin-bottom: 16px;
  padding: 14px 16px;
}

.filterbar-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 12px;
}

.filterbar .filter-field {
  flex: 1 1 170px;
  min-width: 150px;
}

.filterbar-years {
  flex: 1 1 196px;
}

.filterbar-actions {
  flex: 0 0 auto;
  display: flex;
  align-items: flex-end;
  gap: 8px;
  margin-left: auto;
}

.filterbar-more {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 44px;
  padding: 0 14px;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--warm-ivory);
  color: var(--graphite);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  transition: border-color 140ms ease, background 140ms ease;
}

.filterbar-more svg {
  width: 16px;
  height: 16px;
  color: var(--muted);
}

.filterbar-more:hover {
  border-color: var(--panel-green);
}

.filterbar-more.is-open,
.filterbar-more[aria-expanded="true"] {
  border-color: var(--panel-green);
  background: #f0f5ee;
}

.filterbar .filters-reset {
  min-height: 44px;
  padding: 0 10px;
  white-space: nowrap;
}

.filterbar-advanced {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--border);
}

.filterbar-adv-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 12px;
}

.filterbar-adv-checks {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
  margin-top: 14px;
}

@media (max-width: 620px) {
  .filterbar-row .filter-field,
  .filterbar-years {
    flex-basis: 100%;
  }

  .filterbar-actions {
    width: 100%;
    margin-left: 0;
  }

  .filterbar-actions .filterbar-more {
    flex: 1 1 auto;
    justify-content: center;
  }
}


/* Two regions: the filter list scrolls, the apply footer is pinned. The
   panel itself no longer scrolls, so the footer can't drift out of view. */
.filters {
  position: sticky;
  top: 78px;
  align-self: start;
  display: flex;
  max-height: calc(100vh - 92px);
  overflow: hidden;
  overscroll-behavior: contain;
}

.filters-scroll {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  gap: 18px;
  align-content: start;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  /* Room for the scrollbar so it doesn't sit on top of the fields. */
  padding-right: 2px;
}

.filters-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
  width: 100%;
  min-height: 0;
  max-height: 100%;
  padding: 16px 16px 0;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--card-white);
}

/* Section heading — the sidebar was one undifferentiated stack of fields;
   these give the eye somewhere to land and make the lite/full toggle legible
   as "a whole group appeared" rather than "rows shuffled". */
.filter-group-head {
  margin: 0;
  color: var(--graphite);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: none;
}

.filters-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
}

.filters-title {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--graphite);
  font-size: 15px;
  font-weight: 800;
}

.filters-title svg {
  width: 18px;
  height: 18px;
  color: var(--secondary);
}

.filter-field {
  display: grid;
  gap: 5px;
}

.filter-label {
  color: var(--secondary);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0;
}

.filters-form select,
.filters-form input {
  width: 100%;
  min-width: 0;
  min-height: 40px;
  padding: 0 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--warm-ivory);
  color: var(--graphite);
  font-size: 14px;
  font-weight: 600;
  transition: border-color 140ms ease, box-shadow 140ms ease, background 140ms ease;
}


.filters-form select:hover,
.filter-search:hover {
  border-color: var(--panel-green);
}

.filters-form select {
  appearance: none;
  cursor: pointer;
  padding-right: 34px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23687064' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 16px;
}

.filters-form select:focus,
.filters-form input:focus {
  outline: 0;
  border-color: var(--panel-green);
  box-shadow: 0 0 0 3px rgba(30, 77, 52, 0.16);
}

.filter-search {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--warm-ivory);
  transition: border-color 140ms ease, box-shadow 140ms ease;
}


.filter-search:focus-within {
  border-color: var(--panel-green);
  box-shadow: 0 0 0 3px rgba(30, 77, 52, 0.16);
}

.filter-search input:focus {
  box-shadow: none;
}

.filter-search svg {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  color: var(--muted);
}

.filter-search input {
  min-height: 40px;
  padding: 0;
  border: 0;
  background: transparent;
}

/* Desktop runs dense so the whole filter set is visible without scrolling;
   touch gets the 44px target back. */
@media (pointer: coarse) {
  .filters-form select,
  .filters-form input:not([type="checkbox"]),
  .filter-search input {
    min-height: 44px;
  }
}


.combo {
  position: relative;
}

.combo-input {
  flex: 1 1 auto;
  min-width: 0;
}

.combo.is-disabled .combo-control {
  opacity: 0.58;
  filter: grayscale(0.25);
}

.combo.is-disabled .combo-input {
  cursor: not-allowed;
}

.combo-clear {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--muted);
  font-size: 19px;
  line-height: 1;
  cursor: pointer;
}

.combo-clear:hover {
  background: var(--soft-beige);
  color: var(--graphite);
}

/* Fixed, not absolute: as an absolute child it was clipped by the
   .filters-scroll overflow. Coordinates are set by positionComboList(). */
.combo-list {
  position: fixed;
  z-index: 120;
  max-height: 264px;
  margin: 0;
  padding: 4px;
  list-style: none;
  overflow-y: auto;
  /* Solid fill — a translucent dropdown let the filter labels behind it
     bleed through and made the list unreadable. */
  background: #ffffff;
  border: 1px solid rgba(30, 77, 52, 0.18);
  border-radius: var(--radius-sm);
  box-shadow: 0 16px 40px -12px rgba(16, 20, 15, 0.28);
}

.combo-option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 9px 11px;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 600;
  color: var(--graphite);
  cursor: pointer;
}

.combo-option-meta {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}

.combo-option--all-group {
  background: var(--soft-beige);
}

.combo-option:hover,
.combo-option.is-active {
  background: var(--soft-beige);
}

.combo-empty {
  padding: 10px 11px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
}

.filter-range {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 8px;
}

.filter-range-sep {
  color: var(--muted);
  font-weight: 800;
}

/* Pinned to the bottom of the scrolling sidebar — the advanced filter set is
   taller than the viewport, so a static button meant scrolling back down to
   apply. */
.filters-actions {
  flex: 0 0 auto;
  display: grid;
  gap: 8px;
  margin: 0 -16px;
  padding: 12px 16px;
  background: var(--card-white);
  border-top: 1px solid var(--border);
  border-radius: 0 0 11px 11px;
}

.filters-search-count {
  font-variant-numeric: tabular-nums;
  opacity: 0.72;
}

/* Vehicle search rows: make muted, model emphasised. Every row repeats the
   same make, so leading with it in full weight made the list hard to scan. */
.vehicle-option {
  display: flex;
  align-items: baseline;
  gap: 7px;
}

.vehicle-option .vs-make {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
}

.vehicle-option .vs-model {
  min-width: 0;
  color: var(--graphite);
  font-size: 14px;
  font-weight: 700;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Typed vehicle matched nothing in the catalog. */
.sell-shell--v3 .sell-section .field--unknown .field-control > input {
  border-color: #A33627;
  background: #fdf4f2;
}

.sell-shell--v3 .field--unknown > span::after {
  content: " — ვერ მოიძებნა კატალოგში";
  color: #A33627;
  font-weight: 600;
}

/* Photo upload: drop target + drag-to-reorder feedback */
.upload-zone.is-dropping {
  border-color: var(--copper);
  background: #eef4ee;
}

.upload-preview[draggable="true"] {
  cursor: grab;
  position: relative;
  transition: opacity 120ms ease, transform 120ms ease;
}

.upload-preview.is-dragging {
  opacity: 0.4;
  cursor: grabbing;
}

/* Insertion marker on the photo the drop would land on. */
.upload-preview.is-drop-target {
  outline: 2px solid var(--copper);
  outline-offset: 2px;
  transform: translateY(-2px);
}

/* Field flagged by validation: the border, the label and the placeholder all
   go red, so the eye lands on the field itself rather than only the message. */
.sell-shell--v3 .field--invalid > span {
  color: #A33627;
}

.sell-shell--v3 .sell-section .field--invalid .field-control > input,
.sell-shell--v3 .sell-section .field--invalid .field-control > select {
  border-color: #A33627;
  background: #fdf4f2;
}

.sell-shell--v3 .field--invalid .field-control > input::placeholder {
  color: #C06152;
  opacity: 1;
}

.sell-shell--v3 .field--invalid .field-control > svg {
  color: #A33627;
}

/* Swapped in when a listing photo fails to load. Contain, not cover, so the
   glyph is not cropped by the card's usual object-fit. */
.img-placeholder {
  object-fit: contain !important;
  background: #eceee9;
}

/* ---- Advanced filters button + modal ---------------------------------- */

.filters-adv-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  min-height: 42px;
  padding: 8px 14px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--card-white);
  font-size: 14px;
  font-weight: 700;
  color: var(--market-ink);
  font-family: inherit;
  cursor: pointer;
  text-align: left;
  transition: border-color 150ms, background 150ms;
}

.filters-adv-btn:hover {
  border-color: var(--copper);
}

.filters-adv-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  border-radius: 10px;
  background: var(--copper);
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  flex: 0 0 auto;
  line-height: 1;
}

body.adv-open {
  overflow: hidden;
}

/* Modal backdrop + centering */
.adv-modal {
  position: fixed;
  inset: 0;
  z-index: 1100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}

.adv-modal[hidden] {
  display: none;
}

.adv-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(20, 26, 20, 0.52);
  cursor: default;
}

.adv-modal-panel {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 520px;
  max-height: 90vh;
  background: #fff;
  border-radius: 16px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: 0 24px 64px -16px rgba(20, 26, 20, 0.4);
}

.adv-modal-head {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--border);
}

.adv-modal-head strong {
  font-size: 16px;
  font-weight: 800;
  color: var(--market-ink);
}

.adv-modal-close {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: none;
  font-size: 20px;
  color: var(--market-ink);
  cursor: pointer;
  line-height: 1;
  flex: 0 0 auto;
  font-family: inherit;
  transition: background 150ms, border-color 150ms;
}

.adv-modal-close:hover {
  background: var(--market-hover, #f5f5f0);
  border-color: rgba(20, 26, 20, 0.25);
}

.adv-modal-body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 22px;
  scrollbar-width: thin;
}

.adv-modal-foot {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 20px;
  border-top: 1px solid var(--border);
  background: #fff;
}

.adv-modal-foot .adv-apply-btn {
  flex: 1 1 auto;
}

.adv-modal-foot .adv-clear-btn {
  flex: 0 0 auto;
  white-space: nowrap;
}

/* Sections inside modal */
.adv-section {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.adv-section-head {
  margin: 0;
  font-size: 11.5px;
  font-weight: 700;
  color: var(--market-muted);
  letter-spacing: 0;
  text-transform: none;
}

/* Range row */
.adv-range {
  display: flex;
  align-items: center;
  gap: 8px;
}

.adv-range select,
.adv-range input[type="number"] {
  flex: 1;
  min-height: 40px;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 14px;
  font-family: inherit;
  color: var(--market-ink);
  background: #fff;
  min-width: 0;
}

.adv-range select:focus,
.adv-range input[type="number"]:focus {
  outline: 2px solid var(--copper);
  outline-offset: -1px;
  border-color: transparent;
}

.adv-range-sep {
  color: var(--market-muted);
  font-size: 14px;
  flex: 0 0 auto;
}

/* Chip group */
.adv-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.adv-chip {
  padding: 6px 14px;
  border: 1px solid var(--border);
  border-radius: 20px;
  background: #fff;
  font-size: 13px;
  font-weight: 600;
  color: var(--market-ink);
  cursor: pointer;
  white-space: nowrap;
  font-family: inherit;
  transition: border-color 140ms, background 140ms, color 140ms;
}

.adv-chip:hover {
  border-color: var(--copper);
  color: var(--copper);
}

.adv-chip.is-active {
  background: var(--copper);
  border-color: var(--copper);
  color: #fff;
}

/* Checkbox inside modal */
.adv-check {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  color: var(--market-ink);
}

.adv-check input[type="checkbox"] {
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
  cursor: pointer;
  accent-color: var(--copper);
}

/* Mobile: bottom sheet */
@media (max-width: 600px) {
  .adv-modal {
    align-items: flex-end;
    padding: 0;
  }
  .adv-modal-panel {
    max-width: 100%;
    max-height: 85vh;
    border-radius: 16px 16px 0 0;
  }
}

/* ---- Listing card: spec strip, good-price badge, listing age ---------- */

.spec-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.spec-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--secondary);
  font-size: 12.5px;
  font-weight: 600;
  white-space: nowrap;
}

.spec-chip svg {
  flex: 0 0 auto;
  width: 14px;
  height: 14px;
  color: var(--muted);
}

.good-price-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  align-self: start;
  padding: 3px 9px;
  border-radius: 999px;
  background: rgba(46, 119, 65, 0.12);
  color: var(--positive, #2e7741);
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: 0;
}

.good-price-badge svg {
  width: 12px;
  height: 12px;
}

.listing-meta {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
}

.listing-meta svg {
  width: 13px;
  height: 13px;
}

/* Inline currency flip beside a price. Quiet until hovered — it sits next to
   the number it converts, so it must not compete with it. */
.cur-flip {
  flex: 0 0 auto;
  display: inline-grid;
  place-items: center;
  width: 20px;
  height: 20px;
  margin-left: 6px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: transparent;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
  transition: color 140ms ease, border-color 140ms ease, background 140ms ease;
}

.cur-flip:hover {
  border-color: var(--panel-green);
  background: var(--soft-beige);
  color: var(--deep-green);
}

.cur-flip:focus-visible {
  outline: 2px solid var(--deep-green);
  outline-offset: 2px;
}

.filters-actions .btn {
  width: 100%;
  gap: 8px;
}

.btn-ghost {
  background: transparent;
  border-color: var(--border);
  color: var(--graphite);
}

.btn-ghost:hover {
  background: var(--soft-beige);
}


.results {
  display: grid;
  
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  min-width: 0;
}


.results-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-top: -2px;
}

.results-count {
  margin: 0;
  color: var(--secondary);
  font-size: 14px;
  font-weight: 700;
}

.results-count strong {
  color: var(--graphite);
  font-size: 18px;
  font-weight: 800;
}

.results-sort {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.results-sort select {
  min-height: 40px;
  padding: 0 34px 0 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--warm-ivory);
  color: var(--graphite);
  font-size: 13px;
  font-weight: 700;
  appearance: none;
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23687064' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 16px;
}


.filters-count {
  margin: 4px 0 0;
  color: var(--secondary);
  font-size: 13px;
  font-weight: 700;
  text-align: center;
}

.filters-count strong {
  color: var(--graphite);
}

.filters-reset {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  margin: 0 auto;
  padding: 4px;
  color: var(--secondary);
  font-size: 13px;
  font-weight: 700;
  background: transparent;
}

.filters-reset:hover {
  color: var(--deep-green);
}

.filters-reset svg {
  width: 15px;
  height: 15px;
}




.car-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--card-white);
  overflow: hidden;
  box-shadow: var(--shadow-card);
}

.car-row {
  display: grid;
  grid-template-columns: 268px minmax(0, 1fr) 264px;
  gap: 28px;
  padding: 20px 22px;
  border: 0;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  background: var(--card-white);
  transition: background 160ms ease;
}

.car-row:last-child {
  border-bottom: 0;
}

.car-row:hover {
  background: #f8fbf7;
}

.car-row-media {
  position: relative;
  height: 192px;
  overflow: hidden;
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), #e8eee6);
  box-shadow: inset 0 0 0 1px rgba(15, 20, 15, 0.06);
}

.car-row-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.car-badge {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 13px;
  border-radius: 6px;
  background: var(--soft-copper);
  color: #5a6459;
  font-size: 12px;
  font-weight: 800;
  box-shadow: 0 1px 2px rgba(15, 20, 15, 0.1);
}

.car-badge svg {
  width: 14px;
  height: 14px;
}

.car-badge--new {
  background: #e2f1e6;
  color: #2f7d44;
}


.car-row-body {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.car-row-title {
  margin: 0;
  color: var(--graphite);
  font-family: var(--font-display);
  font-size: 26px;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -0.01em;
}


.car-row-year {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 9px 3px;
  border: 1px solid var(--border);
  border-radius: 5px;
  background: var(--warm-ivory);
  color: var(--secondary);
  font-size: 13px;
  font-weight: 600;
  vertical-align: 4px;
}

.car-row-body .listing-city {
  margin-top: 8px;
}

.car-row-specs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 14px 0;
  padding: 0;
  list-style: none;
}

.car-spec {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 6px 10px;
  border: 1px solid var(--border);
  border-radius: 3px;
  background: var(--warm-ivory);
  color: var(--secondary);
  font-size: 13px;
  font-weight: 600;
}

.car-spec svg {
  width: 16px;
  height: 16px;
  color: var(--muted);
}



.car-row-wants {
  margin-top: auto;
}



.trade-deal {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: linear-gradient(180deg, #f8fbf7, #F4F6EE);
}

.trade-deal .car-row-offer {
  margin-top: 2px;
}

.deal-open {
  margin: 0;
  color: var(--graphite);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.4;
}

.car-row-cash {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-top: auto;
  padding: 12px 14px;
  border-radius: 3px;
  font-size: 15px;
  font-weight: 800;
  line-height: 1.2;
}

.car-row-cash svg {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
}

.car-row-cash--add {
  background: var(--cash-add-bg);
  color: var(--cash-add-fg);
}

.car-row-cash--ask {
  background: var(--cash-ask-bg);
  color: var(--cash-ask-fg);
}

.car-row-cash--none {
  background: var(--cash-none-bg);
  color: var(--cash-none-fg);
}

.car-row-cash--flexible {
  background: var(--soft-beige);
  color: #6f6256;
}

.car-row-offer {
  width: 100%;
  min-height: 48px;
}


.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 6px;
}

.page-btn {
  display: grid;
  place-items: center;
  min-width: 42px;
  height: 42px;
  padding: 0 6px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--card-white);
  color: var(--graphite);
  font-size: 14px;
  font-weight: 700;
}

.page-btn:hover:not(:disabled) {
  border-color: var(--panel-green);
}

.page-btn.is-active {
  background: var(--deep-green);
  border-color: var(--deep-green);
  color: #fff;
}

.page-btn--nav svg {
  width: 18px;
  height: 18px;
}

.page-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

@media (max-width: 980px) {
  
  .catalog {
    grid-template-columns: minmax(0, 1fr);
  }

  .filters {
    position: static;
  }

  .car-row {
    grid-template-columns: 210px minmax(0, 1fr);
  }

  .catalog-hero-inner {
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
  }

  .catalog-hero h1 {
    font-size: 20px;
  }
}

@media (max-width: 620px) {
  .car-row {
    grid-template-columns: minmax(0, 1fr);
  }

  .car-row-media {
    height: 210px;
  }
}




.listing-media-link,
.car-row-media-link {
  display: block;
  width: 100%;
  height: 100%;
}

.card-title-link {
  color: inherit;
}

.card-title-link:hover {
  color: var(--deep-green);
  text-decoration: underline;
  text-underline-offset: 2px;
}


body.modal-open {
  overflow: hidden;
}

.modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(15, 20, 15, 0.55);
  backdrop-filter: blur(3px);
}

.modal {
  position: relative;
  width: min(520px, 100%);
  max-height: 90vh;
  overflow: auto;
  overscroll-behavior: contain;
  padding: 26px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--card-white);
  box-shadow: var(--shadow-subtle);
}

.modal-close {
  position: absolute;
  top: 14px;
  right: 14px;
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--warm-ivory);
  color: var(--graphite);
}

.modal-close:hover {
  background: var(--soft-beige);
}

.modal-eyebrow {
  margin: 0 0 4px;
  color: var(--copper);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0;
}

.modal-title {
  margin: 0 0 18px;
  color: var(--graphite);
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 600;
}

.offer-form,
.sell-form {
  display: grid;
  gap: 14px;
}

.field {
  display: grid;
  gap: 6px;
}

.field > span {
  color: var(--secondary);
  font-size: 12px;
  font-weight: 800;
}

.field input,
.field select,
.field textarea {
  width: 100%;
  min-height: 46px;
  padding: 11px 13px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--warm-ivory);
  color: var(--graphite);
  font-size: 14px;
  font-weight: 600;
}

.field textarea {
  min-height: auto;
  resize: vertical;
}

.field input:focus,
.field select:focus,
.field textarea:focus {
  outline: 0;
  border-color: var(--panel-green);
}

.field-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.offer-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 4px;
}

.offer-success {
  display: grid;
  gap: 10px;
  padding: 8px 0;
  text-align: center;
}

.offer-success-icon {
  display: grid;
  place-items: center;
  width: 60px;
  height: 60px;
  margin: 0 auto;
  border-radius: 10px;
  background: var(--cash-add-bg);
  color: var(--cash-add-fg);
}

.offer-success-icon svg {
  width: 30px;
  height: 30px;
}

.offer-demo-note {
  color: var(--muted);
  font-size: 13px;
}


.detail-shell {
  background: var(--warm-ivory);
}

.detail {
  padding: 24px 0 64px;
}

.detail-back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 18px;
  color: var(--secondary);
  font-weight: 700;
}

.detail-back svg {
  width: 18px;
  height: 18px;
  transform: rotate(180deg);
}

.detail-back:hover {
  color: var(--deep-green);
}

.detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
  align-items: start;
  gap: 28px;
}

.detail-gallery {
  display: grid;
  gap: 12px;
}

.detail-main-media {
  position: relative;
  overflow: hidden;
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), #e8eee6);
  aspect-ratio: 16 / 10;
}

.detail-main-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.detail-main-media .car-badge {
  top: 14px;
  left: 14px;
}

.detail-thumbs {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}

.detail-thumb {
  height: 74px;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #fff;
}

.detail-thumb.is-active {
  border-color: var(--deep-green);
  box-shadow: 0 0 0 2px rgba(20, 26, 20, 0.15);
}

.detail-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.detail-panel {
  display: grid;
  gap: 14px;
  padding: 24px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--card-white);
  box-shadow: var(--shadow-card);
}

.detail-title {
  margin: 0;
  color: var(--graphite);
  font-size: 28px;
  font-weight: 800;
}

.detail-title span {
  color: var(--secondary);
  font-size: 20px;
  font-weight: 700;
}

.detail-specs {
  margin: 4px 0;
}

.detail-cash {
  width: fit-content;
}

.detail-actions {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 12px;
}

.detail-offer {
  min-height: 50px;
}

.detail-save {
  /* relative, not static: this button carries a ::after hit-area expander at
     inset -8px. Static made that pseudo-element resolve against a distant
     positioned ancestor, stretching it to 404x559 across the whole panel and
     swallowing every click on "შესთავაზე გაცვლა" beside it. */
  position: relative;
  width: 50px;
  height: 50px;
  background: var(--card-white);
  border: 1px solid var(--border);
}

.detail-save svg {
  width: 22px;
  height: 22px;
}

.detail-owner {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
  text-decoration: none;
}

.detail-owner--link {
  cursor: pointer;
}

.detail-owner--link:hover .owner-more {
  color: var(--copper-hover);
}

.owner-avatar {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: var(--deep-green);
  color: #fff;
  font-size: 18px;
  font-weight: 800;
}

.detail-owner strong {
  display: block;
  color: var(--graphite);
  font-size: 15px;
}

.detail-owner small {
  color: var(--secondary);
  font-size: 13px;
}

.detail-about {
  margin-top: 28px;
  padding: 24px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--card-white);
  box-shadow: var(--shadow-card);
}

.detail-about h2 {
  margin: 0 0 10px;
  color: var(--graphite);
  font-size: 18px;
}

.detail-about p {
  margin: 0;
  color: var(--secondary);
  font-weight: 500;
  line-height: 1.7;
}

.detail-missing {
  display: grid;
  place-items: center;
  padding: 60px 0 80px;
}

.detail-missing-card {
  display: grid;
  gap: 14px;
  justify-items: center;
  max-width: 460px;
  padding: 40px 28px;
  text-align: center;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--card-white);
  box-shadow: var(--shadow-card);
}

.detail-missing-icon {
  display: grid;
  place-items: center;
  width: 64px;
  height: 64px;
  border-radius: 10px;
  background: var(--soft-beige);
  color: var(--copper);
}

.detail-missing-icon svg {
  width: 30px;
  height: 30px;
}

.detail-missing-card h1 {
  margin: 0;
  color: var(--graphite);
  font-size: 24px;
}

.detail-missing-card p {
  margin: 0;
  color: var(--secondary);
}

.detail-missing-btn {
  margin-top: 6px;
}


.sell-shell {
  background: var(--warm-ivory);
}

.sell {
  max-width: 1180px;
  padding: 28px 0 64px;
}


.sell-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 318px;
  gap: 24px;
  align-items: start;
}


.sell-preview {
  position: sticky;
  top: 86px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--soft-beige);
}

.sell-preview-label {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 12px;
  color: var(--secondary);
  font-size: 12px;
  font-weight: 800;
}


.sell-preview-label::before {
  content: "";
  flex: 0 0 auto;
  width: 7px;
  height: 7px;
  background: var(--copper);
}


.sell-preview-card {
  border-radius: 4px;
  box-shadow: 3px 3px 0 rgba(15, 20, 15, 0.08);
}

.sell-preview-card .listing-offer.is-preview {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 40px;
  pointer-events: none;
}

.preview-photo-empty {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 6px;
  height: 100%;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.preview-photo-empty svg {
  width: 30px;
  height: 30px;
}

.preview-muted {
  color: var(--muted) !important;
}

@media (max-width: 980px) {
  .sell-layout {
    grid-template-columns: minmax(0, 1fr);
  }

  
  .sell-preview {
    position: static;
    max-width: 360px;
  }
}


.sell-hero {
  padding: 14px 0 24px;
}

.sell-hero::after {
  bottom: 8px;
}

.sell-head {
  text-align: left;
}

.sell-head h1 {
  margin: 0;
  color: var(--warm-ivory);
  font-size: 21px;
  font-weight: 600;
}

.sell-sub {
  max-width: 620px;
  margin: 4px 0 0;
  color: rgba(243, 246, 241, 0.8);
  font-size: 13px;
}


.sell-form {
  gap: 18px;
  counter-reset: sell-step;
}


.sell-section {
  padding: 22px;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--card-white);
}

.sell-section h2 {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin: 0 0 18px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
  color: var(--graphite);
  font-family: var(--font-display);
  font-size: 19px;
  font-weight: 600;
}


.sell-section h2::before {
  counter-increment: sell-step;
  content: counter(sell-step, decimal-leading-zero);
  flex: 0 0 auto;
  color: var(--copper);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 13px;
  font-weight: 600;
}


@media (min-width: 981px) {
  .sell {
    max-width: none;
    padding: 10px 0 44px;
  }

  
  .sell-hero {
    padding: 10px 0 18px;
  }

  .sell-hero::after {
    bottom: 7px;
  }

  .sell-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: flex-start;
    gap: 4px 14px;
  }

  .sell-head h1 {
    font-size: 19px;
  }

  .sell-sub {
    margin: 0;
    font-size: 12.5px;
  }

  .sell-layout {
    grid-template-columns: minmax(0, 1fr) 296px;
    gap: 16px;
  }

  .sell-form {
    grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr);
    grid-template-areas:
      "voice   voice"
      "car     terms"
      "car     details"
      "error   error"
      "actions actions";
    align-items: stretch;
    gap: 10px 14px;
  }

  .voice-fill {
    grid-area: voice;
  }

  .sell-section--car { grid-area: car; }
  .sell-section--terms { grid-area: terms; }
  .sell-section--details { grid-area: details; }

  #sell-error {
    grid-area: error;
    margin: 0;
  }

  #sell-error[hidden] {
    display: none;
  }

  .sell-actions {
    grid-area: actions;
  }

  .sell-section {
    padding: 14px 16px 16px;
  }

  .sell-section h2 {
    margin: 0 0 10px;
    padding-bottom: 8px;
    font-size: 16px;
  }

  .sell-section h2::before {
    font-size: 11.5px;
  }

  .sell-section .field {
    gap: 4px;
  }

  .sell-section .field > span {
    font-size: 11.5px;
  }

  .sell-section .field input,
  .sell-section .field select {
    min-height: 38px;
    padding: 7px 11px;
    font-size: 13.5px;
  }

  .sell-section .field textarea {
    min-height: 48px;
    padding: 8px 11px;
    font-size: 13.5px;
  }

  .sell-actions .btn {
    min-height: 42px;
  }

  .sell-preview {
    padding: 12px;
  }

  .sell-preview-label {
    margin-bottom: 10px;
  }
}

.sell-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.sell-section .field + .field {
  margin-top: 14px;
}

.sell-actions {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
}

.sell-actions .btn {
  border-radius: 4px;
}

.sell-success-page {
  display: grid;
  place-items: center;
  padding: 50px 0 80px;
}

.sell-success-card {
  display: grid;
  gap: 12px;
  justify-items: center;
  max-width: 520px;
  padding: 40px 30px;
  text-align: center;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--card-white);
  box-shadow: var(--shadow-card);
}

.sell-success-card h1 {
  margin: 0;
  color: var(--graphite);
  font-size: 26px;
}

.sell-success-card p {
  margin: 0;
  color: var(--secondary);
}

.sell-success-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  margin-top: 8px;
}

@media (max-width: 860px) {
  .detail-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 620px) {
  .sell-grid,
  .field-row {
    grid-template-columns: 1fr;
  }

  .detail-actions {
    grid-template-columns: 1fr auto;
  }
}


.car-row-cash,
.cash-line strong,
.results-count strong,
.filters-count strong,
.car-row-year,
.detail-title span,
.hero-car-caption small,
.slider-value,
.page-btn,
.make-chip span,
.car-spec span,
.listing-body p {
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-variant-numeric: tabular-nums;
}


.catalog-hero h1,
.sell-head h1,
.auth-card h1,
.account-body h1,
.detail-title,
.detail-missing-card h1,
.sell-success-card h1,
.detail-about h2 {
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: -0.005em;
}


.car-row-cash,
.cash-line strong,
.results-count strong,
.filters-count strong,
.slider-value,
.trade-cash,
.stat-cell strong,
.page-btn,
.filters-toggle-badge,
.want-chip--more,
.load-more span,
.mycar-copy small b {
  font-weight: 600;
}

::selection {
  background: rgba(30, 77, 52, 0.22);
}


body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 2000;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 160px 160px;
  opacity: 0.045;
  mix-blend-mode: multiply;
  pointer-events: none;
}


h1,
h2,
h3 {
  text-wrap: balance;
}

p {
  text-wrap: pretty;
}


.stat-row {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  margin: 4px 0;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--card-white);
  overflow: hidden;
}

.stat-cell {
  display: grid;
  gap: 3px;
  padding: 10px 12px;
}

.stat-cell + .stat-cell {
  border-left: 1px solid var(--border);
}

.stat-cell span {
  color: var(--graphite);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
}

.stat-cell strong {
  overflow: hidden;
  color: var(--graphite);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 13px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  text-overflow: ellipsis;
}


.detail-panel .stat-row {
  grid-auto-flow: row;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.detail-panel .stat-cell + .stat-cell {
  border-left: 0;
}

.detail-panel .stat-cell:nth-child(3n + 2),
.detail-panel .stat-cell:nth-child(3n) {
  border-left: 1px solid var(--border);
}

.detail-panel .stat-cell:nth-child(n + 4) {
  border-top: 1px solid var(--border);
}

.detail-panel .stat-cell strong {
  font-size: 12px;
}


.stat-row--card {
  margin: 14px 0 0;
  border-radius: 8px;
  background: var(--warm-ivory);
}

.stat-row--card .stat-cell {
  padding: 9px 12px;
}

.stat-row--card .stat-cell span {
  font-size: 9.5px;
}

.stat-row--card .stat-cell strong {
  font-size: 13.5px;
}


.listing-media img,
.car-row-media img,
.detail-main-media img {
  transition: transform 320ms ease;
}

.listing-card:hover .listing-media img,
.car-row:hover .car-row-media img {
  transform: scale(1.045);
}



.results-count strong {
  font-size: 20px;
}

@media (max-width: 620px) {
  .stat-row {
    grid-auto-flow: row;
    grid-template-columns: 1fr 1fr;
  }

  .stat-cell + .stat-cell {
    border-left: 0;
  }

  .stat-cell:nth-child(even) {
    border-left: 1px solid var(--border);
  }

  .stat-cell:nth-child(n + 3) {
    border-top: 1px solid var(--border);
  }
}




.mycar-panel {
  min-width: 0;
}

.mycar-cta,
.mycar-active {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 9px;
  padding: 9px 11px;
  border: 1px solid rgba(243, 246, 241, 0.22);
  border-radius: 4px;
  background: rgba(243, 246, 241, 0.07);
}

.mycar-icon {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 5px;
  background: var(--warm-ivory);
  color: var(--deep-green);
}

.mycar-icon svg {
  width: 16px;
  height: 16px;
}

.mycar-copy {
  flex: 1 1 160px;
  min-width: 0;
  display: grid;
  gap: 2px;
}

.mycar-copy strong {
  color: var(--warm-ivory);
  font-size: 12.5px;
  font-weight: 800;
}

.mycar-copy small {
  color: rgba(243, 246, 241, 0.7);
  font-size: 10.5px;
  font-weight: 600;
  line-height: 1.4;
}

.mycar-copy small b {
  color: var(--warm-ivory);
  font-family: var(--font); font-variant-numeric: tabular-nums;
}

.mycar-btn {
  flex: 0 0 auto;
  gap: 6px;
  min-height: 34px;
  padding: 0 13px;
  border-radius: 4px;
  font-size: 12.5px;
}

.mycar-btn svg {
  width: 15px;
  height: 15px;
}

.mycar-edit {
  flex: 0 0 auto;
  padding: 6px 10px;
  border-radius: 8px;
  background: transparent;
  color: rgba(243, 246, 241, 0.78);
  font-size: 13px;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.mycar-edit:hover {
  color: var(--warm-ivory);
}

.matches-toggle,
/* Was inline-flex with centre alignment, so a label that wrapped to three
   lines left the box floating in the middle of the text. Now a real row:
   fixed control column, text block beside it, hover bleeding to panel edge. */
.filter-check {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-height: 38px;
  margin: 0 -10px;
  padding: 6px 10px;
  border-radius: 9px;
  color: var(--graphite);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
  cursor: pointer;
  transition: background 140ms ease;
}

.filter-check:hover {
  background: var(--soft-beige);
}

.filter-check:focus-within {
  background: var(--soft-beige);
}

/* Fill the row instead of collapsing to min-content, which wrapped a
   two-word Georgian label onto three lines inside a 280px sidebar. */
.filter-check span {
  min-width: 0;
}

.matches-toggle input,
.filter-check input {
  flex: 0 0 auto;
  width: 14px;
  height: 14px;
  min-height: 0;
  margin: 0;
  accent-color: var(--deep-green);
  cursor: pointer;
}


.matches-toggle {
  flex: 0 0 auto;
  padding: 9px 14px;
  border: 1px solid rgba(243, 246, 241, 0.3);
  border-radius: 6px;
  background: transparent;
  color: var(--warm-ivory);
}

.matches-toggle input {
  accent-color: var(--copper);
}


.filter-group {
  display: grid;
  gap: 12px;
  margin: 0;
  padding: 0 0 14px;
  border: 0;
  border-bottom: 1px solid var(--border);
}

.filter-group:last-of-type {
  border-bottom: 0;
  padding-bottom: 4px;
}

.filter-group-title {
  padding: 0 0 2px;
  color: var(--graphite);
  font-size: 12.5px;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: none;
}

.more-filters {
  border-top: 1px dashed var(--border);
  padding-top: 8px;
}

.more-filters summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin: 0 -8px;
  padding: 9px 10px;
  border-radius: var(--radius-sm);
  color: var(--secondary);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  list-style: none;
  transition: background 140ms ease, color 140ms ease;
}

.more-filters summary::-webkit-details-marker {
  display: none;
}


.more-filters summary::after {
  content: "";
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  background: center / contain no-repeat
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23565E54' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  transition: transform 200ms ease;
}

.more-filters[open] summary::after {
  transform: rotate(180deg);
}

.more-filters summary:hover {
  background: var(--soft-beige);
  color: var(--deep-green);
}

.more-filters summary:focus-visible {
  outline: 0;
  box-shadow: 0 0 0 3px rgba(30, 77, 52, 0.16);
}

.more-filters-body {
  display: grid;
  gap: 12px;
  padding-top: 12px;
}

.filter-mycar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--warm-ivory);
  color: var(--graphite);
  font-size: 14px;
  font-weight: 700;
}

.filter-mycar svg {
  width: 17px;
  height: 17px;
  color: var(--deep-green);
}

.filter-mycar span {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.filter-mycar-edit {
  flex: 0 0 auto;
  padding: 2px 4px;
  background: transparent;
  color: var(--secondary);
  font-size: 12px;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.filter-mycar-edit:hover {
  color: var(--deep-green);
}

.filter-mycar-add {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  padding: 0 14px;
  border: 1px dashed var(--panel-green);
  border-radius: var(--radius-sm);
  background: #f0f5ee;
  color: var(--deep-green);
  font-size: 14px;
  font-weight: 700;
}

.filter-mycar-add:hover {
  background: #e7f0e6;
}

.filter-mycar-add svg {
  width: 16px;
  height: 16px;
}

.filter-mycar-hint {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
}

.filters-apply {
  display: none;
}

.filters-close {
  display: none;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--warm-ivory);
  color: var(--graphite);
  font-size: 20px;
  line-height: 1;
}


.combo-control.is-flash {
  animation: combo-flash 0.9s ease;
}

@keyframes combo-flash {
  0%, 100% { border-color: var(--border); box-shadow: none; }
  30% { border-color: var(--copper); box-shadow: 0 0 0 3px rgba(30, 77, 52, 0.22); }
}


.results-controls {
  display: inline-flex;
  align-items: center;
  gap: 12px;
}

.filters-toggle {
  display: none;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  padding: 0 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--warm-ivory);
  color: var(--graphite);
  font-size: 13px;
  font-weight: 700;
}

.filters-toggle svg {
  width: 16px;
  height: 16px;
  color: var(--copper);
}

.filters-toggle-badge[hidden] {
  display: none;
}

.filters-toggle-badge {
  display: grid;
  place-items: center;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  border-radius: 6px;
  background: var(--deep-green);
  color: #fff;
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 11px;
  font-weight: 700;
}


.trust-note {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  margin-top: 11px;
  padding-top: 10px;
  border-top: 1px solid rgba(243, 246, 241, 0.18);
}

.trust-note svg {
  flex: 0 0 auto;
  width: 15px;
  height: 15px;
  margin-top: 1px;
  color: rgba(243, 246, 241, 0.85);
}

.trust-note p {
  margin: 0;
  max-width: 62ch;
  color: rgba(243, 246, 241, 0.74);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
}


.trade-card {
  grid-template-columns: 240px minmax(0, 1fr) 224px;
  grid-template-areas:
    "media body deal"
    "trust trust deal";
  gap: 16px 22px;
}

.trade-card .car-row-media {
  grid-area: media;
}

.trade-card .car-row-body {
  grid-area: body;
  justify-content: center;
}

.trade-card .trade-deal {
  grid-area: deal;
}

.trade-card .car-row-offer {
  width: 100%;
  min-height: 44px;
  padding: 0 14px;
  gap: 8px;
  font-size: 13.5px;
  white-space: nowrap;
}

.trade-card .car-row-offer svg {
  width: 15px;
  height: 15px;
}


.trade-card.is-mutual {
  background: #f0f5ee;
}

.trade-card.is-mutual:hover {
  background: #ECF4EC;
}

.trade-card.is-reverse {
  background: #FBF6F1;
}

.trade-card.is-reverse:hover {
  background: #F8F1EA;
}

.fresh-tag {
  position: absolute;
  bottom: 10px;
  left: 10px;
  z-index: 2;
  padding: 4px 9px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.88);
  color: var(--secondary);
  font-size: 11px;
  font-weight: 800;
}

.trade-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.match-badge {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 11px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.match-badge svg {
  width: 14px;
  height: 14px;
}

.match-badge--mutual {
  background: var(--deep-green);
  color: #fff;
  box-shadow: 0 1px 2px rgba(20, 26, 20, 0.25);
}

.match-badge--reverse {
  background: rgba(30, 77, 52, 0.12);
  color: var(--copper);
}


.trade-wants {
  display: grid;
  gap: 8px;
}

.wants-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  min-width: 0;
}

.want-chip {
  display: inline-flex;
  align-items: center;
  padding: 5px 11px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--card-white);
  color: var(--graphite);
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
}

.want-chip.is-match {
  border-color: var(--deep-green);
  background: var(--deep-green);
  color: #fff;
}

.want-chip--more {
  color: var(--muted);
  font-family: var(--font); font-variant-numeric: tabular-nums;
}


.trade-cash {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 9px 11px;
  border-radius: 9px;
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 12.5px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  line-height: 1.3;
}

.trade-cash span {
  min-width: 0;
}


.trade-cash svg {
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  padding: 7px;
  border-radius: 8px;
  color: #fff;
}

.trade-cash--add { background: var(--cash-add-bg); color: var(--cash-add-fg); }
.trade-cash--add svg { background: var(--cash-add-fg); }
.trade-cash--ask { background: var(--cash-ask-bg); color: var(--cash-ask-fg); }
.trade-cash--ask svg { background: var(--cash-ask-fg); }
.trade-cash--none { background: var(--cash-none-bg); color: var(--cash-none-fg); }
.trade-cash--none svg { background: var(--cash-none-fg); }
.trade-cash--flexible { background: var(--soft-beige); color: #6f6256; }
.trade-cash--flexible svg { background: #6f6256; }


.trade-trust {
  grid-area: trust;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 16px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

.trust-owner {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--graphite);
  font-size: 13px;
  font-weight: 800;
}

.trust-avatar {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--deep-green);
  color: #fff;
  font-size: 12px;
  font-weight: 800;
}

.trust-item {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--secondary);
  font-size: 12px;
  font-weight: 700;
}

.trust-item svg {
  width: 14px;
  height: 14px;
}

.trust-item--ok {
  color: var(--cash-add-fg);
}

.trust-item--active::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--cash-add-fg);
}


.load-more-wrap {
  display: grid;
}

.load-more {
  justify-self: center;
  gap: 7px;
  min-width: 240px;
}

.load-more span {
  color: var(--muted);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-weight: 700;
}

.empty-state--actions {
  display: grid;
  gap: 14px;
  justify-items: center;
}

.empty-state--actions p {
  margin: 0;
}

.empty-state-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
}


.sticky-cta {
  display: none;
}


.offer-owner-line {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin: -10px 0 14px;
  color: var(--secondary);
  font-size: 13px;
  font-weight: 600;
}

.offer-owner-line strong {
  color: var(--graphite);
}

.trust-ok {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--cash-add-fg);
  font-weight: 700;
}

.trust-ok svg {
  width: 14px;
  height: 14px;
}

.offer-trade-summary {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
  padding: 13px 14px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #f2f6f1;
  text-align: center;
}

.offer-trade-side {
  min-width: 0;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0;
  line-height: 1.5;
}

.offer-trade-side strong {
  display: block;
  color: var(--graphite);
  font-size: 14px;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: none;
}

.offer-trade-icon {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 8px;
  background: var(--deep-green);
  color: #fff;
}

.offer-trade-icon svg {
  width: 18px;
  height: 18px;
}

.offer-steps {
  margin: 0;
  padding-left: 20px;
  display: grid;
  gap: 4px;
  color: var(--secondary);
  font-size: 13px;
  font-weight: 600;
}

.offer-gate-text {
  margin: 0 0 18px;
  color: var(--secondary);
  line-height: 1.6;
}

.mycar-note {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
}

.mycar-note a {
  color: var(--deep-green);
  text-decoration: underline;
  text-underline-offset: 2px;
}


.upload-zone {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 16px;
  border: 1px dashed #b5b5a7;
  border-radius: 4px;
  background: var(--warm-ivory);
  cursor: pointer;
  transition: border-color 160ms ease, background-color 160ms ease;
}

.upload-zone:hover,
.upload-zone:focus-within {
  border-color: var(--panel-green);
  background: #f0f5ee;
}


.field .upload-zone .upload-input {
  position: absolute;
  width: 1px;
  height: 1px;
  min-height: 0;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.upload-icon {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: 4px;
  background: var(--deep-green);
  color: #fff;
}

.upload-icon svg {
  width: 18px;
  height: 18px;
}

.upload-text {
  display: grid;
  gap: 2px;
}

.upload-text strong {
  color: var(--graphite);
  font-size: 14px;
  font-weight: 800;
}

.upload-text small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
}

.upload-previews {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(86px, 1fr));
  gap: 10px;
  margin-top: 12px;
}

.upload-preview {
  position: relative;
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 4px;
  aspect-ratio: 4 / 3;
  background: var(--card-white);
}

.upload-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.upload-preview figcaption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 3px 6px;
  background: rgba(20, 26, 20, 0.82);
  color: #fff;
  font-size: 10px;
  font-weight: 800;
  text-align: center;
}


@media (max-width: 980px) {
  .trade-card {
    grid-template-columns: 216px minmax(0, 1fr);
    grid-template-areas:
      "media body"
      "deal deal"
      "trust trust";
  }

  
  .trade-deal {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    padding: 14px;
  }

  .trade-deal .trade-wants {
    flex: 1 1 200px;
  }

  .trade-card .car-row-offer {
    width: auto;
    flex: 1 1 200px;
    margin-top: 0;
  }

  .filters-toggle {
    display: inline-flex;
  }

  .filters {
    display: none;
  }

  body.filters-open {
    overflow: hidden;
  }

  body.filters-open .filters {
    display: block;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 95;
    
    max-height: 86vh;
    max-height: 80dvh;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    border-radius: 10px 18px 0 0;
    background: var(--card-white);
    box-shadow: 0 -2px 10px rgba(15, 20, 15, 0.12);
  }

  body.filters-open .filters-form {
    border: 0;
    border-radius: 10px 18px 0 0;
    box-shadow: none;
    padding-bottom: 22px;
  }

  .filters-overlay:not([hidden]) {
    position: fixed;
    inset: 0;
    z-index: 90;
    background: rgba(15, 20, 15, 0.45);
  }

  .filters-close {
    display: grid;
    place-items: center;
  }

  .filters-apply {
    display: inline-flex;
    position: sticky;
    bottom: 0;
  }

  .filters-apply span {
    margin: 0 5px;
    font-family: var(--font); font-variant-numeric: tabular-nums;
  }

  .sticky-cta {
    position: fixed;
    bottom: 14px;
    left: 16px;
    right: 16px;
    z-index: 80;
    display: flex;
    gap: 8px;
  }

  .sticky-cta-btn {
    flex: 1 1 auto;
    box-shadow: var(--shadow-subtle);
  }

  .sticky-cta-close {
    flex: 0 0 auto;
    width: 46px;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    background: var(--card-white);
    color: var(--secondary);
    font-size: 20px;
    line-height: 1;
  }

  .catalog {
    padding-bottom: 96px; 
  }
}

@media (max-width: 620px) {
  .trade-card {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "media"
      "body"
      "deal"
      "trust";
  }

  .mycar-copy {
    flex: 1 1 180px;
  }

  .matches-toggle {
    flex: 1 1 auto;
    justify-content: center;
  }

  
  .trade-wants {
    overflow: hidden;
  }

  .wants-chips {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 2px;
    scrollbar-width: none;
  }

  .wants-chips::-webkit-scrollbar {
    display: none;
  }

  .results-head {
    flex-wrap: wrap;
  }

  .results-controls {
    flex: 1 1 100%;
    flex-wrap: wrap;
    justify-content: space-between;
  }

  .results-sort {
    flex: 1 1 auto;
    min-width: 0;
  }

  .results-sort select {
    flex: 1;
    width: 100%;
    min-width: 0;
  }

  
  .make-chips {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 2px;
    scrollbar-width: none;
  }

  .make-chips::-webkit-scrollbar {
    display: none;
  }

  .make-chip {
    flex: 0 0 auto;
  }

  .offer-trade-summary {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .offer-trade-icon {
    margin: 0 auto;
    transform: rotate(90deg);
  }
}


@media (max-width: 480px) {
  .hero-car-caption {
    display: none;
  }

  .sound-btn {
    bottom: 8px;
  }
}




.toast-host {
  position: fixed;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  gap: 8px;
  z-index: 220;
  pointer-events: none;
}

.toast {
  background: var(--deep-green);
  color: var(--warm-ivory);
  padding: 12px 20px;
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-subtle);
  font-size: 14px;
  font-weight: 600;
  max-width: min(92vw, 420px);
  animation: toast-in 0.25s ease;
}

.toast--error {
  background: #8e2f24;
}

.toast.is-out {
  opacity: 0;
  transition: opacity 0.4s ease;
}

@keyframes toast-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}


.auth-shell {
  min-height: 70vh;
  display: grid;
  place-items: center;
  padding: 48px 0;
}

.auth-card {
  background: var(--card-white);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
  padding: 36px;
  max-width: 440px;
  margin: 0 auto;
  text-align: center;
}


.auth-icon {
  display: inline-flex;
  width: 52px;
  height: 52px;
  border-radius: 12px;
  background: var(--deep-green);
  color: var(--warm-ivory);
  align-items: center;
  justify-content: center;
  margin-bottom: 14px;
}

.auth-icon svg { width: 24px; height: 24px; }

.auth-card h1 { margin: 0 0 8px; font-size: 26px; }

.auth-sub { color: var(--secondary); margin: 0 0 18px; font-size: 15px; }

.auth-form { display: grid; gap: 14px; text-align: left; }

.auth-submit { width: 100%; justify-content: center; }

.auth-error {
  background: var(--cash-ask-bg);
  color: var(--cash-ask-fg);
  border-radius: var(--radius-sm);
  padding: 10px 14px;
  font-size: 14px;
  margin: 0 0 14px;
}

.auth-note { color: var(--muted); font-size: 13px; margin: 16px 0 0; }

.auth-code-input {
  letter-spacing: 0.4em;
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 22px;
  text-align: center;
}

.auth-secondary {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-top: 18px;
}

.auth-link {
  background: none;
  color: var(--deep-green);
  font-size: 14px;
  font-weight: 600;
  text-decoration: underline;
  padding: 4px;
}

.auth-link:disabled { color: var(--muted); text-decoration: none; cursor: default; }


.account-shell { padding: 32px 0 64px; min-height: 70vh; }

.account {
  display: grid;
  grid-template-columns: 250px 1fr;
  gap: 28px;
  align-items: start;
}

.account-tabs {
  display: grid;
  gap: 4px;
  background: var(--card-white);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 10px;
  position: sticky;
  top: 90px;
}

.account-tab {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: var(--radius-sm);
  font-size: 14px;
  font-weight: 600;
  color: var(--secondary);
}

.account-tab svg { width: 17px; height: 17px; flex: none; }

.account-tab:hover { background: var(--soft-beige); color: var(--graphite); }

.account-tab.is-active { background: var(--deep-green); color: var(--warm-ivory); }

.account-body h1 { margin: 0 0 18px; font-size: 26px; }

.account-head-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 18px;
}

.account-head-row h1 { margin: 0; }

.account-list { display: grid; gap: 14px; }

.account-card {
  display: grid;
  grid-template-columns: 92px 1fr auto;
  gap: 16px;
  align-items: center;
  background: var(--card-white);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
}

.account-card-media {
  width: 92px;
  height: 68px;
  border-radius: var(--radius-sm);
  background: var(--soft-beige);
  overflow: hidden;
  display: grid;
  place-items: center;
  color: var(--muted);
}

.account-card-media img { width: 100%; height: 100%; object-fit: cover; }

.account-card-body h3 { margin: 0 0 4px; font-size: 16px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

.account-card-body h3 a:hover { text-decoration: underline; }

.account-card-specs { margin: 0 0 2px; font-size: 13px; color: var(--secondary); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

.account-card-meta { margin: 0; font-size: 12px; color: var(--muted); }

.account-card-actions { display: flex; flex-direction: column; gap: 6px; align-items: stretch; }

.btn-sm { padding: 7px 14px; font-size: 13px; border-radius: var(--radius-sm); }

.btn-danger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: var(--cash-ask-bg);
  color: var(--cash-ask-fg);
  border-radius: var(--radius-sm);
  padding: 10px 18px;
  font-weight: 700;
}

.btn-danger:hover { background: #efcfc9; }

.status-badge {
  display: inline-flex;
  padding: 2px 10px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 700;
  background: var(--soft-beige);
  color: var(--secondary);
}

.status-badge--active   { background: var(--cash-add-bg); color: var(--cash-add-fg); }
.status-badge--accepted { background: var(--cash-add-bg); color: var(--cash-add-fg); }
.status-badge--pending,
.status-badge--viewed   { background: var(--cash-none-bg); color: var(--cash-none-fg); }
.status-badge--declined,
.status-badge--cancelled,
.status-badge--expired  { background: var(--cash-ask-bg); color: var(--cash-ask-fg); }
.status-badge--completed { background: var(--soft-copper); color: var(--copper); }


.offer-pair {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}

.offer-side { display: grid; }

.offer-side small { color: var(--muted); font-size: 12px; }

.offer-side strong { font-size: 15px; }

.offer-arrow { color: var(--copper); }

/* Specificity, not just order: the later `.account-card` rule sets a 3-column
   template (110px media, body, actions). An offer card has no media, only body
   and actions, so those two landed in the 110px and 1fr tracks: the text was
   crushed into 110px while the button stretched across the rest. */
.account-card.offer-card {
  grid-template-columns: minmax(0, 1fr) auto;
}

.account-card.conversation-card {
  grid-template-columns: 56px minmax(0, 1fr) auto;
}

.account-card.offer-card .account-card-actions .btn {
  white-space: nowrap;
}

.offer-card-msg { margin: 4px 0; font-size: 13px; color: var(--secondary); font-style: italic; }


.conversation-card { grid-template-columns: 56px 1fr auto; }

.conversation-card .account-card-media { width: 56px; height: 56px; border-radius: 50%; }

.conversation-open { color: var(--muted); }

.conversation-card:hover { border-color: var(--deep-green); }

.msg-thread {
  background: var(--card-white);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  height: 52vh;
  overflow-y: auto;
  overscroll-behavior: contain;
  margin: 14px 0;
}

.msg-bubble {
  max-width: 78%;
  background: var(--soft-beige);
  border-radius: 10px 14px 14px 4px;
  padding: 10px 14px;
  align-self: flex-start;
}

.msg-bubble.is-mine {
  background: var(--deep-green);
  color: var(--warm-ivory);
  border-radius: 10px 14px 4px 14px;
  align-self: flex-end;
}

.msg-bubble p { margin: 0; font-size: 14px; white-space: pre-wrap; word-break: break-word; }

.msg-bubble small { display: block; margin-top: 4px; font-size: 11px; opacity: 0.65; text-align: right; }

.msg-empty { color: var(--muted); text-align: center; margin: auto; font-size: 14px; }

.msg-form { display: flex; gap: 10px; }

.msg-form input {
  flex: 1;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  background: var(--card-white);
}


.profile-grid {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: 24px;
  align-items: start;
}

.profile-form {
  background: var(--card-white);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px;
}

.profile-aside {
  background: var(--card-white);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px;
  display: grid;
  gap: 10px;
  font-size: 14px;
}

.profile-aside p { margin: 0; color: var(--secondary); }


.account-loading { display: grid; gap: 14px; }

.skeleton-row {
  height: 96px;
  border-radius: var(--radius);
  background: linear-gradient(100deg, var(--soft-beige) 40%, #f1f1ea 50%, var(--soft-beige) 60%);
  background-size: 200% 100%;
  animation: skeleton-shimmer 1.2s infinite linear;
}

@keyframes skeleton-shimmer {
  from { background-position: 130% 0; }
  to   { background-position: -30% 0; }
}


.upload-preview { position: relative; }

.upload-remove {
  position: absolute;
  top: 6px;
  right: 6px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: rgba(15, 20, 15, 0.75);
  color: #fff;
  font-size: 15px;
  line-height: 1;
  display: grid;
  place-items: center;
}

.upload-previews--existing { margin-bottom: 12px; }

@media (max-width: 860px) {
  .account { grid-template-columns: 1fr; }

  .account-tabs {
    position: static;
    display: flex;
    overflow-x: auto;
    padding: 8px;
  }

  .account-tab { white-space: nowrap; }

  .account-card { grid-template-columns: 72px 1fr; }

  .account-card-actions { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; }

  .profile-grid { grid-template-columns: 1fr; }
}


.header-auth {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

.header-login {
  min-height: 40px;
  padding: 0 16px;
  font-size: 13px;
}

.header-cta {
  gap: 7px;
}

.header-cta svg {
  width: 15px;
  height: 15px;
  flex: 0 0 auto;
}

.header-user {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 40px;
  padding: 4px 14px 4px 5px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--card-white);
  color: var(--deep-green);
  font-size: 13px;
  font-weight: 800;
  text-decoration: none;
}

a.header-user:hover {
  border-color: var(--copper);
}

.header-avatar {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--deep-green);
  color: #fff;
  font-size: 13px;
  font-weight: 800;
}

.header-avatar svg {
  width: 15px;
  height: 15px;
}

.header-user-name {
  max-width: 140px;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.header-logout {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 1px solid var(--border);
  border-radius: 50%;
  background: var(--card-white);
  color: var(--secondary);
  cursor: pointer;
}

.header-logout svg {
  width: 16px;
  height: 16px;
}

.header-logout:hover {
  color: var(--copper);
  border-color: var(--copper);
}

.auth-sub {
  margin: 12px 0 14px;
  color: var(--secondary);
  font-size: 14px;
  line-height: 1.45;
}

.auth-sub strong {
  color: var(--graphite);
}

.auth-error {
  margin: 10px 0 0;
  color: var(--cash-ask-fg);
  font-size: 13px;
  font-weight: 700;
}

.otp-input {
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 0.35em;
  text-align: center;
}


.auth-modal .modal-title {
  margin: 2px 0 12px;
  color: var(--deep-green);
}

.auth-modal .auth-note {
  text-align: center;
  font-size: 12px;
  margin-top: 14px;
}

.auth-link-btn {
  display: block;
  margin: 12px auto 0;
  padding: 4px 8px;
  border: 0;
  background: none;
  color: var(--secondary);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.auth-link-btn:hover {
  color: var(--copper);
}


.sell-locked {
  position: relative;
}

.sell-locked .sell-head,
.sell-locked .sell-form,
.sell-locked .sell-stepper-grid {
  opacity: 0.5;
  filter: grayscale(0.5);
  pointer-events: none;
  user-select: none;
}

.sell-locked-overlay {
  position: absolute;
  inset: 0;
  z-index: 5;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  pointer-events: none;
  /* Scrim so the locked form behind is muted instead of showing through. */
  background: rgba(242, 246, 241, 0.74);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
}

.sell-locked-card {
  pointer-events: auto;
  position: sticky;
  top: 120px;
  margin-top: 140px;
  max-width: 360px;
  padding: 24px 26px;
  border: 1px solid rgba(20, 26, 20, 0.16);
  border-radius: 14px;
  background: #ffffff;
  box-shadow: 0 24px 60px -26px rgba(16, 20, 15, 0.5);
  text-align: center;
}

.sell-locked-close {
  position: absolute;
  top: 10px;
  right: 10px;
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 50%;
  background: #f8faf6;
  color: var(--graphite);
}

.sell-locked-close:hover {
  background: #e8eee6;
}

.sell-locked-close svg {
  width: 18px;
  height: 18px;
}

.sell-locked-card h2 {
  margin: 0 0 6px;
  font-size: 19px;
  color: var(--deep-green);
}

.sell-locked-card p {
  margin: 0 0 14px;
  color: var(--secondary);
  font-size: 14px;
}

@media (max-width: 680px) {
  .header-auth {
    gap: 7px;
  }

  .header-login {
    min-height: 36px;
    padding: 0 11px;
    font-size: 12px;
  }

  .header-user-name {
    display: none;
  }

  
  .header-user {
    padding: 4px;
  }
}


.auth-providers {
  display: grid;
  gap: 9px;
  margin: 14px 0 0;
}

.btn-provider {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 44px;
  padding: 0 16px;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
}

.btn-provider svg {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
}

.btn-provider:disabled {
  opacity: 0.6;
  cursor: default;
}


.btn-google {
  border: 1px solid #d5cdbf;
  background: #fff;
  color: #1f1f1f;
}

.btn-google:hover {
  background: #faf8f4;
}

.auth-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 16px 0 2px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.auth-divider::before,
.auth-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--border);
}



.sell-section .field input,
.sell-section .field select,
.sell-section .field textarea {
  border-radius: 4px;
  background: #fff;
}

.sell-section .field input:focus,
.sell-section .field select:focus,
.sell-section .field textarea:focus {
  border-color: var(--panel-green);
  box-shadow: 0 0 0 3px rgba(30, 77, 52, 0.14);
}


.sell-grid > .field:last-child:nth-child(odd) {
  grid-column: 1 / -1;
}


.voice-fill[hidden] {
  display: none;
}

.voice-fill {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 12px 16px;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--soft-beige);
}

.voice-btn {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 4px;
  background: var(--deep-green);
  color: #fff;
}

.voice-btn:hover {
  background: var(--deep-green-hover);
}

.voice-btn svg {
  width: 22px;
  height: 22px;
}

.voice-btn.is-listening {
  background: #b23a2e;
  color: #fff;
  animation: voice-pulse 1.2s ease-out infinite;
}

@keyframes voice-pulse {
  0% { box-shadow: 0 0 0 0 rgba(178, 58, 46, 0.4); }
  100% { box-shadow: 0 0 0 16px rgba(178, 58, 46, 0); }
}

.voice-copy {
  min-width: 0;
}

.voice-copy strong {
  display: block;
  color: var(--graphite);
  font-size: 14px;
}

.voice-copy small {
  display: block;
  margin-top: 2px;
  color: var(--secondary);
  font-size: 12.5px;
  line-height: 1.45;
}


.field input.field-flash,
.field select.field-flash,
.field textarea.field-flash {
  border-color: var(--copper);
  background: #fff3e2;
  transition: background-color 1.4s ease, border-color 1.4s ease;
}

@media (prefers-reduced-motion: reduce) {
  .voice-btn.is-listening {
    animation: none;
  }
}


@media (min-width: 981px) {
  .voice-fill {
    padding: 9px 14px;
    gap: 12px;
  }

  .voice-btn {
    width: 38px;
    height: 38px;
  }

  .voice-btn svg {
    width: 17px;
    height: 17px;
  }

  
  .voice-copy {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 2px 10px;
  }

  .voice-copy strong {
    font-size: 13px;
  }

  .voice-copy small {
    margin-top: 0;
    font-size: 11.5px;
    line-height: 1.35;
  }

  .upload-zone {
    padding: 9px 12px;
    gap: 11px;
  }

  .upload-icon {
    width: 32px;
    height: 32px;
  }

  .upload-icon svg {
    width: 15px;
    height: 15px;
  }

  .upload-text strong {
    font-size: 13px;
  }

  .upload-text small {
    font-size: 11px;
  }

  .upload-previews {
    grid-template-columns: repeat(auto-fill, minmax(62px, 1fr));
    gap: 8px;
    margin-top: 10px;
  }
}


@media (min-width: 981px) {
  .sell-grid {
    gap: 10px;
  }

  .sell-section .field + .field {
    margin-top: 10px;
  }
}


@media (min-width: 981px) and (max-height: 740px) {
  .sell {
    padding: 8px 0 28px;
  }

  .sell-hero {
    padding: 8px 0 16px;
  }

  .sell-form {
    gap: 8px 14px;
  }

  .sell-section {
    padding: 11px 14px 12px;
  }

  .sell-grid {
    gap: 8px;
  }

  .sell-section .field + .field {
    margin-top: 8px;
  }

  .sell-section .field input,
  .sell-section .field select {
    min-height: 34px;
    padding: 5px 10px;
  }

  .sell-section .field textarea {
    min-height: 40px;
  }

  .sell-actions .btn {
    min-height: 40px;
  }
}




.catalog-hero-copy {
  flex: 1 1 240px;
  min-width: 0;
}

.catalog-hero-trust {
  display: flex;
  flex-wrap: wrap;
  flex: 2 1 460px;
  gap: 16px 24px;
}

.hero-trust-item {
  display: flex;
  align-items: center;
  gap: 11px;
  flex: 1 1 190px;
  min-width: 0;
}

.hero-trust-icon {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: rgba(243, 246, 241, 0.1);
  color: var(--warm-ivory);
}

.hero-trust-icon svg {
  width: 21px;
  height: 21px;
}

.hero-trust-copy {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.hero-trust-copy strong {
  color: var(--warm-ivory);
  font-size: 13px;
  font-weight: 800;
  line-height: 1.2;
}

.hero-trust-copy small {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  color: rgba(243, 246, 241, 0.64);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.35;
}

.catalog-hero-cta {
  flex: 0 0 auto;
  min-height: 46px;
  gap: 8px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
}


.mycar-rail {
  display: grid;
  gap: 8px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(45, 106, 79, 0.32);
}

.filter-separator {
  height: 0;
  margin: 0 0 4px;
  border-top: 1px solid rgba(45, 106, 79, 0.36);
  background: transparent;
}

.filter-checks {
  display: grid;
  gap: 11px;
  margin-top: 2px;
}

.filters-actions .filters-search {
  width: 100%;
  gap: 8px;
}


.view-toggle {
  display: inline-flex;
  flex: 0 0 auto;
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
  background: var(--card-white);
}

.view-btn {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  background: transparent;
  color: var(--muted);
  transition: background 140ms ease, color 140ms ease;
}

.view-btn + .view-btn {
  border-left: 1px solid var(--border);
}

.view-btn svg {
  width: 18px;
  height: 18px;
}

.view-btn:hover {
  background: var(--soft-beige);
  color: var(--graphite);
}

.view-btn.is-active {
  background: var(--deep-green);
  color: #fff;
}


.car-list {
  border: 0;
  border-radius: 0;
  background: transparent;
  overflow: visible;
  box-shadow: none;
}

.car-list.view-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.car-list.view-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
  gap: 16px;
}


.car-card {
  display: grid;
  grid-template-columns: 214px minmax(0, 1fr) 280px;
  gap: 0;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--card-white);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  transition: box-shadow 200ms ease, border-color 200ms ease, transform 200ms ease;
}

.car-card:hover {
  border-color: #c4ccc2;
  box-shadow: 0 8px 24px rgba(15, 20, 15, 0.09);
}

.car-card.is-mutual { background: #f0f5ee; }
.car-card.is-reverse { background: #FBF6F1; }

.car-card-media {
  position: relative;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), #e8eee6);
}

.car-card-media .car-row-media-link,
.car-card-media img {
  display: block;
  width: 100%;
  height: 100%;
}

.car-card-media img {
  min-height: 212px;
  object-fit: cover;
  transition: transform 320ms ease;
}

.car-card:hover .car-card-media img {
  transform: scale(1.045);
}


.car-card-body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 12px;
  min-width: 0;
  padding: 18px 20px;
  border-right: 1px solid var(--border);
}

.car-card-head {
  display: grid;
  gap: 7px;
}

.car-card-head .car-row-title {
  font-size: 23px;
}

.car-card-body .stat-row--card {
  margin: 2px 0 0;
}

.car-card-body .stat-row--card .stat-cell {
  padding: 8px 9px;
}

.car-card-body .stat-row--card .stat-cell strong {
  font-size: 12px;
}

.car-card-value {
  display: flex;
  align-items: baseline;
  gap: 9px;
  padding-top: 2px;
}

.car-card-value span {
  color: var(--muted);
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: 0;
}

.car-card-value strong {
  color: var(--graphite);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 18px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}


.car-card-aside {
  display: flex;
  flex-direction: column;
  gap: 13px;
  min-width: 0;
  padding: 18px 18px 18px 20px;
  background: linear-gradient(180deg, #f8fbf7, #F3F5EC);
}

.aside-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.aside-head .match-badge {
  order: -1;
}

.aside-owner {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  color: var(--secondary);
  font-size: 12px;
  font-weight: 700;
}

.aside-owner-name {
  overflow: hidden;
  color: var(--graphite);
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.aside-owner--anon {
  color: var(--muted);
}

.aside-owner--anon svg {
  width: 15px;
  height: 15px;
}

.aside-deal {
  display: grid;
  gap: 11px;
}

.aside-actions {
  display: grid;
  gap: 8px;
  margin-top: auto;
}

.aside-actions .car-row-offer {
  width: 100%;
  min-height: 46px;
}

.car-card-detail {
  width: 100%;
  min-height: 40px;
}


.car-list.view-grid .car-card {
  grid-template-columns: minmax(0, 1fr);
}

.car-list.view-grid .car-card-media {
  height: 200px;
}

.car-list.view-grid .car-card-media img {
  min-height: 0;
}

.car-list.view-grid .car-card-body {
  border-right: 0;
  border-bottom: 1px solid var(--border);
}


@media (max-width: 720px) {
  .car-card,
  .car-list.view-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .car-list.view-grid {
    display: flex;
    flex-direction: column;
  }

  .car-card-media {
    height: 210px;
  }

  .car-card-media img {
    min-height: 0;
  }

  .car-card-body {
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }
}


.sell-shell--stepper { background: var(--warm-ivory); }

.sell--stepper {
  max-width: 1240px;
  padding: 26px 0 72px;
}

.sell-back {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 14px;
  color: var(--secondary);
  font-size: 13px;
  font-weight: 700;
}

.sell-back:hover { color: var(--deep-green); }
.sell-back svg { width: 16px; height: 16px; transform: rotate(180deg); }

.sell-headline { margin-bottom: 22px; }

.sell-headline h1 {
  margin: 0;
  color: var(--graphite);
  font-family: var(--font-display);
  font-size: 32px;
  font-weight: 600;
  letter-spacing: -0.01em;
}

.sell-headline .sell-sub {
  max-width: 60ch;
  margin: 7px 0 0;
  color: var(--secondary);
  font-size: 14px;
}

.sell-stepper-grid {
  display: grid;
  grid-template-columns: 224px minmax(0, 1fr) 360px;
  gap: 24px;
  align-items: start;
}


.step-nav {
  position: sticky;
  top: 86px;
  display: grid;
  gap: 8px;
}

.step-nav-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--card-white);
  text-align: left;
  transition: border-color 160ms ease, background 160ms ease;
}

.step-nav-item:hover { border-color: var(--panel-green); }

.step-nav-icon {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 9px;
  background: var(--warm-ivory);
  color: var(--secondary);
}

.step-nav-icon svg { width: 18px; height: 18px; }

.step-nav-text { display: grid; gap: 1px; min-width: 0; }
.step-nav-text b { color: var(--muted); font-family: var(--font); font-variant-numeric: tabular-nums; font-size: 11px; font-weight: 600; }
.step-nav-text span { color: var(--graphite); font-size: 13px; font-weight: 700; }

.step-nav-item.is-active {
  border-color: var(--deep-green);
  background: var(--deep-green);
}

.step-nav-item.is-active .step-nav-icon { background: rgba(255, 255, 255, 0.16); color: #fff; }
.step-nav-item.is-active .step-nav-text b { color: rgba(255, 255, 255, 0.7); }
.step-nav-item.is-active .step-nav-text span { color: #fff; }
.step-nav-item.is-done .step-nav-icon { background: var(--cash-add-bg); color: var(--cash-add-fg); }


.sell--stepper .sell-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.sell-step {
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--card-white);
  overflow: hidden;
  box-shadow: var(--shadow-card);
}

.sell-step.is-active { border-color: #c4ccc2; }

.sell-step-head {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 16px 20px;
  background: transparent;
  text-align: left;
}

.sell-step-badge {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--warm-ivory);
  color: var(--secondary);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 13px;
  font-weight: 600;
}

.sell-step.is-active .sell-step-badge,
.sell-step.is-done .sell-step-badge { background: var(--deep-green); color: #fff; }

.sell-step-icon { flex: 0 0 auto; display: grid; place-items: center; color: var(--secondary); }
.sell-step-icon svg { width: 19px; height: 19px; }

.sell-step-title {
  flex: 1 1 auto;
  color: var(--graphite);
  font-family: var(--font-display);
  font-size: 18px;
  font-weight: 600;
}

.sell-step-chevron { flex: 0 0 auto; color: var(--muted); transition: transform 200ms ease; }
.sell-step-chevron svg { width: 18px; height: 18px; }
.sell-step.is-active .sell-step-chevron { transform: rotate(90deg); }

.sell-step-body { display: none; padding: 0 20px 20px; }
.sell-step.is-active .sell-step-body { display: block; }

.sell-step-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}

.step-next { gap: 8px; }
.step-back { gap: 8px; }
.step-back svg { transform: rotate(180deg); }
.sell-review-note { margin: 0; color: var(--secondary); font-size: 14px; line-height: 1.6; }


.sell-subgroup + .sell-subgroup { margin-top: 18px; }

.sell-subgroup-title {
  margin: 0 0 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border);
  color: var(--secondary);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0;
}

.sell-step-error { margin: 16px 0 0; }


.sell-locked-lock {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  margin: 0 auto 12px;
  border-radius: 12px;
  background: #eef4ee;
  color: var(--deep-green);
}

.sell-locked-lock svg { width: 24px; height: 24px; }
.sell-locked-card .btn { width: 100%; }
.sell-locked-note {
  display: block;
  margin-top: 10px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
}


.sell--stepper .sell-preview {
  position: sticky;
  top: 86px;
  padding: 0;
  border: 0;
  background: transparent;
}

.sell--stepper .sell-preview-label { margin: 0 0 12px; }

.preview-panel {
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--card-white);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}

.preview-photo {
  position: relative;
  aspect-ratio: 16 / 10;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), #e8eee6);
}

.preview-photo img { width: 100%; height: 100%; object-fit: cover; }
.preview-photo .preview-photo-empty { height: 100%; }

.preview-photo-count {
  position: absolute;
  bottom: 10px;
  right: 10px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 9px;
  border-radius: 7px;
  background: rgba(15, 20, 15, 0.72);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
}

.preview-photo-count svg { width: 14px; height: 14px; }

.preview-panel-body { display: grid; gap: 12px; padding: 16px 18px 18px; }
.preview-panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }

.preview-panel-head h3 {
  margin: 0;
  color: var(--graphite);
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 600;
}

.preview-panel-head h3 span {
  margin-left: 4px;
  color: var(--secondary);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 15px;
}

.preview-swap-badge {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border-radius: 7px;
  background: var(--soft-copper);
  color: var(--secondary);
  font-size: 11px;
  font-weight: 800;
}

.preview-swap-badge svg { width: 14px; height: 14px; }

.preview-stats {
  grid-auto-flow: row;
  grid-template-columns: repeat(2, 1fr);
}

.preview-wants p, .preview-about p { margin: 4px 0 0; color: var(--graphite); font-size: 13px; line-height: 1.5; }
.preview-about p { color: var(--secondary); }

.preview-progress { display: flex; align-items: center; gap: 10px; }

.preview-progress-meter {
  flex: 1 1 auto;
  height: 8px;
  border-radius: 99px;
  background: var(--soft-beige);
  overflow: hidden;
}

.preview-progress-meter span {
  display: block;
  height: 100%;
  border-radius: 99px;
  background: var(--panel-green);
}

.preview-progress-num { flex: 0 0 auto; font-family: var(--font); font-variant-numeric: tabular-nums; font-size: 13px; font-weight: 600; color: var(--graphite); }
.preview-publish { width: 100%; min-height: 48px; gap: 8px; }


@media (max-width: 1080px) {
  .sell-stepper-grid { grid-template-columns: 196px minmax(0, 1fr) 320px; }
}

@media (max-width: 920px) {
  .sell-stepper-grid { grid-template-columns: minmax(0, 1fr); }

  .step-nav {
    position: static;
    grid-auto-flow: column;
    grid-auto-columns: minmax(150px, 1fr);
    gap: 8px;
    overflow-x: auto;
    scrollbar-width: none;
  }

  .step-nav-item { white-space: nowrap; }
  .sell--stepper .sell-preview { position: static; max-width: 460px; }
}


.sell-shell--v3 .sell-hero {
  position: relative;
  padding: 20px 0 22px;
  background: var(--deep-green);
  color: var(--warm-ivory);
}
.sell-shell--v3 .sell-hero::after { content: none; }

.sell-shell--v3 .sell-hero-inner {
  display: flex;
  align-items: center;
  gap: 16px;
}

.sell-shell--v3 .sell-hero-icon {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 12px;
  background: var(--warm-ivory);
  color: var(--deep-green);
}
.sell-shell--v3 .sell-hero-icon svg { width: 24px; height: 24px; }

.sell-shell--v3 .sell-head { flex: 1 1 auto; min-width: 0; text-align: left; }
.sell-shell--v3 .sell-head h1 {
  margin: 0;
  color: var(--warm-ivory);
  font-family: var(--font);
  font-size: 23px;
  font-weight: 800;
  letter-spacing: -0.01em;
}
.sell-shell--v3 .sell-sub {
  margin: 3px 0 0;
  max-width: 64ch;
  color: rgba(243, 246, 241, 0.82);
  font-size: 13.5px;
  line-height: 1.45;
}


.sell-shell--v3 .sell-steps {
  position: relative;
  display: flex;
  justify-content: space-between;
  gap: 34px;
  margin: 0 0 0 auto;
  padding: 0;
  list-style: none;
  min-width: 340px;
}
.sell-shell--v3 .sell-steps::before {
  content: "";
  position: absolute;
  top: 15px;
  left: 15px;
  right: 15px;
  height: 2px;
  background: rgba(243, 246, 241, 0.26);
}
.sell-shell--v3 .sell-step-pip {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
}
.sell-shell--v3 .sell-step-pip-num {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--deep-green);
  box-shadow: inset 0 0 0 1.5px rgba(243, 246, 241, 0.45);
  color: rgba(243, 246, 241, 0.78);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 12px;
  font-weight: 600;
}
.sell-shell--v3 .sell-step-pip-label {
  color: rgba(243, 246, 241, 0.72);
  font-size: 11px;
  font-weight: 700;
  white-space: nowrap;
}
.sell-shell--v3 .sell-step-pip.is-active .sell-step-pip-num {
  background: var(--warm-ivory);
  box-shadow: none;
  color: var(--deep-green);
}
.sell-shell--v3 .sell-step-pip.is-active .sell-step-pip-label { color: var(--warm-ivory); }


.sell-shell--v3 .sell { max-width: 1200px; padding: 22px 0 60px; }

.sell-mode-bar {
  display: flex;
  gap: 8px;
  margin: 0 0 14px;
  overflow-x: auto;
  scrollbar-width: none;
}

.sell-mode-bar::-webkit-scrollbar {
  display: none;
}

.sell-mode-chip {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 7px;
  min-height: 34px;
  padding: 0 12px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #fff;
  color: var(--graphite);
  font-size: 12.5px;
  font-weight: 800;
}

.sell-mode-chip span {
  color: var(--copper);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 11px;
  font-weight: 700;
}

.sell-mode-chip:hover {
  border-color: rgba(30, 77, 52, 0.38);
  background: #f0f5ee;
}

.sell-shell--v3 .sell-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 20px;
  align-items: start;
}
.sell-shell--v3 .sell-form { display: grid; gap: 16px; align-content: start; }


.sell-shell--v3 .voice-fill {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 16px;
  border: 1px solid #d6e2d7;
  border-radius: 14px;
  background: #eef4ef;
}
.sell-shell--v3 .voice-fill[hidden] { display: none; }
.sell-shell--v3 .voice-btn {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 12px;
  background: var(--deep-green);
  color: #fff;
}
.sell-shell--v3 .voice-btn:hover { background: var(--deep-green-hover); }
.sell-shell--v3 .voice-btn.is-listening { background: #b23a2e; }
.sell-shell--v3 .voice-btn svg { width: 20px; height: 20px; }
.sell-shell--v3 .voice-copy strong { display: block; color: var(--graphite); font-size: 14px; font-weight: 800; }
.sell-shell--v3 .voice-copy small { display: block; margin-top: 2px; color: var(--secondary); font-size: 12.5px; line-height: 1.45; }


.sell-shell--v3 .sell-section {
  padding: 20px 22px 22px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(15, 20, 15, 0.05), 0 16px 36px -24px rgba(15, 20, 15, 0.3);
}

/* Three identical white boxes gave the form no sense of place. Each section is
   tinted by what it means: green for the car you own, blue for the car you
   want (the same two sides the cash badges already use across the site), warm
   neutral for the optional details. Flat fills, not gradients: a tint fading
   to white down a card is decoration that says nothing about the content. */
.sell-shell--v3 .sell-section.sell-section--car {
  border-color: rgba(30, 77, 52, 0.22);
  background: #eef4ee;
}

.sell-shell--v3 .sell-section.sell-section--terms {
  border-color: rgba(46, 111, 149, 0.2);
  background: #ecf2f7;
}

.sell-shell--v3 .sell-section.sell-section--details {
  border-color: rgba(122, 110, 86, 0.2);
  background: #f5f3ea;
}

/* Badge picks up its own section's hue instead of one green for all three. */
.sell-shell--v3 .sell-section--car .sell-section-badge {
  background: #dfeade;
  border-color: rgba(30, 77, 52, 0.24);
  color: #1e4d34;
}

.sell-shell--v3 .sell-section--terms .sell-section-badge {
  background: #dceaf3;
  border-color: rgba(46, 111, 149, 0.24);
  color: #235c7d;
}

.sell-shell--v3 .sell-section--details .sell-section-badge {
  background: #efeadb;
  border-color: rgba(122, 110, 86, 0.26);
  color: #6b5f45;
}

/* Inputs stay white so they read as fields against the tint. */
.sell-shell--v3 .sell-section .field-control > input,
.sell-shell--v3 .sell-section .field-control > select,
.sell-shell--v3 .sell-section .field-control--area textarea {
  background: #fff;
}

/* The engine size is fixed at 0.0 for electric cars: show it as locked. */
.sell-shell--v3 .field--locked .field-control > input {
  background: rgba(20, 26, 20, 0.05);
  color: var(--muted);
  cursor: not-allowed;
}
.sell-shell--v3 .sell-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}
.sell-shell--v3 .sell-section h2 {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 0;
  border: 0;
  font-family: var(--font);
  font-size: 18px;
  font-weight: 800;
  color: var(--graphite);
}
.sell-shell--v3 .sell-section h2::before { content: none; }
.sell-shell--v3 .sell-section-num {
  color: var(--copper);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 14px;
  font-weight: 600;
}
.sell-shell--v3 .sell-section-badge {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: #e8f0e9;
  color: var(--panel-green);
}
.sell-shell--v3 .sell-section-badge svg { width: 23px; height: 23px; stroke-width: 2.1; }


.sell-shell--v3 .sell-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.sell-shell--v3 .sell-grid > .field:last-child:nth-child(odd) { grid-column: auto; }
.sell-shell--v3 .field--wide { grid-column: 1 / -1; }
.sell-shell--v3 .field--full { grid-column: 1 / -1; }
.sell-shell--v3 .field { display: grid; gap: 6px; }
.sell-shell--v3 .field[hidden] { display: none; }
.sell-shell--v3 .field > span { color: var(--secondary); font-size: 12.5px; font-weight: 700; }
/* Flex, not block: as a block the inline <input> sat on the text baseline and
   left ~7px of descender space under it, so an input field measured 55px tall
   against a select's 48px and the two columns did not line up. */
.sell-shell--v3 .field-control { position: relative; display: flex; }

.sell-shell--v3 .field-control > input,
.sell-shell--v3 .field-control > select {
  flex: 1 1 auto;
  min-width: 0;
}

/* Equal-height cells so labels of differing line counts still bottom-align. */
.sell-shell--v3 .sell-grid > .field {
  align-self: stretch;
}

.sell-shell--v3 .field--icon {
  display: flex;
  flex-direction: column;
}

.sell-shell--v3 .field--icon > .field-control {
  margin-top: auto;
}
.sell-shell--v3 .field--icon .field-control > svg {
  position: absolute;
  left: 13px;
  top: 50%;
  transform: translateY(-50%);
  width: 18px;
  height: 18px;
  color: var(--panel-green);
  pointer-events: none;
}
.sell-shell--v3 .field input,
.sell-shell--v3 .field select,
.sell-shell--v3 .field textarea {
  width: 100%;
  min-height: 46px;
  padding: 11px 13px;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: #fff;
  color: var(--graphite);
  font-size: 14px;
  font-weight: 600;
}
.sell-shell--v3 .field--icon input,
.sell-shell--v3 .field--icon select { padding-left: 40px; }
.sell-shell--v3 .field select {
  appearance: none;
  cursor: pointer;
  padding-right: 38px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23687064' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 16px;
}
.sell-shell--v3 .field textarea { min-height: auto; resize: vertical; line-height: 1.5; }
.sell-shell--v3 .field input:focus,
.sell-shell--v3 .field select:focus,
.sell-shell--v3 .field textarea:focus {
  outline: 0;
  border-color: var(--panel-green);
  box-shadow: 0 0 0 3px rgba(30, 77, 52, 0.14);
}


.sell-shell--v3 .field-control--area { position: relative; display: block; }
.sell-shell--v3 .field-control--area textarea { padding-bottom: 26px; }
.sell-shell--v3 .field-counter {
  position: absolute;
  right: 12px;
  bottom: 9px;
  color: var(--muted);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 11px;
  pointer-events: none;
}


.sell-shell--v3 .upload-zone {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 15px 16px;
  border: 1.5px dashed #b3ccb7;
  border-radius: 14px;
  background: #f0f5ee;
  cursor: pointer;
  transition: border-color 160ms ease, background-color 160ms ease;
}
.sell-shell--v3 .upload-zone:hover,
.sell-shell--v3 .upload-zone:focus-within { border-color: var(--panel-green); background: #e8f1e9; }
.sell-shell--v3 .upload-icon {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 11px;
  background: #e0ebe1;
  color: var(--panel-green);
}
.sell-shell--v3 .upload-icon svg { width: 20px; height: 20px; }
.sell-shell--v3 .upload-text strong { color: var(--graphite); font-size: 14px; font-weight: 800; }
.sell-shell--v3 .upload-text small { color: var(--muted); font-size: 12px; }
.sell-shell--v3 .upload-previews { margin-top: 12px; }


.sell-shell--v3 .sell-actions { display: flex; justify-content: flex-end; gap: 12px; margin-top: 2px; }
.sell-shell--v3 .sell-actions .btn { min-height: 46px; gap: 8px; padding: 0 22px; border-radius: 12px; }


.sell-shell--v3 .sell-preview {
  position: sticky;
  top: 86px;
  padding: 16px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(15, 20, 15, 0.05), 0 16px 36px -24px rgba(15, 20, 15, 0.3);
}
.sell-shell--v3 .sell-preview-label {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 12px;
  color: var(--secondary);
  font-size: 12.5px;
  font-weight: 800;
}
.sell-shell--v3 .sell-preview-label::before { content: none; }
.sell-shell--v3 .sell-preview-label svg { flex: 0 0 auto; width: 17px; height: 17px; color: var(--panel-green); }
.sell-shell--v3 .sell-preview-card { border-radius: 14px; box-shadow: none; }

.sell-shell--lite {
  background: transparent;
}

.sell-shell--lite .sell-hero {
  padding: 34px 0 20px;
  border-bottom: 0;
  background: transparent;
  color: var(--graphite);
}

.sell-shell--lite .sell-hero-inner {
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

.sell-shell--lite .sell-hero-icon,
.sell-shell--lite .sell-steps,
.sell-shell--lite .sell-preview {
  display: none;
}

/* Voice fill stays in the lite shell — it is the fastest way to fill the
   form, not decoration. */
.sell-shell--lite .voice-fill {
  margin-bottom: 4px;
  border: 1px solid rgba(30, 77, 52, 0.16);
  border-radius: 12px;
  background: #eef4ef;
}

.sell-shell--lite .sell-head {
  text-align: center;
}

.sell-shell--lite .sell-head h1 {
  color: var(--graphite);
  font-size: clamp(26px, 3vw, 34px);
  font-weight: 800;
  letter-spacing: -0.02em;
}

.sell-shell--lite .sell-sub {
  max-width: 54ch;
  margin: 8px auto 0;
  color: var(--secondary);
}

.sell-shell--lite .sell {
  max-width: 820px;
  padding-top: 6px;
}

/* Mode chips become a numbered stepper with connector lines. */
.sell-shell--lite .sell-mode-bar {
  justify-content: center;
  gap: 0;
  margin-bottom: 22px;
  padding: 0;
  background: transparent;
}

.sell-shell--lite .sell-mode-chip {
  position: relative;
  gap: 8px;
  padding: 8px 14px;
  border: 0;
  background: transparent;
  color: var(--secondary);
  font-weight: 700;
}

.sell-shell--lite .sell-mode-chip span {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border: 1px solid rgba(30, 77, 52, 0.35);
  border-radius: 50%;
  background: var(--material-thick);
  color: var(--copper);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 12px;
}

.sell-shell--lite .sell-mode-chip + .sell-mode-chip::before {
  content: "";
  width: 34px;
  height: 1px;
  margin-right: 8px;
  background: rgba(122, 138, 122, 0.4);
}

.sell-shell--lite .sell-layout {
  display: block;
}

/* Sections fuse into one continuous glass card. */
.sell-shell--lite .sell-form {
  gap: 0;
}

.sell-shell--lite .sell-section {
  padding: 26px 28px;
  border: 1px solid var(--hairline);
  border-radius: 0;
  background: var(--material-thick);
  backdrop-filter: var(--blur-card);
  -webkit-backdrop-filter: var(--blur-card);
  box-shadow: none;
}

.sell-shell--lite .sell-section--car {
  border-radius: 20px 20px 0 0;
  border-bottom: 0;
}

.sell-shell--lite .sell-section--terms {
  border-block: 1px solid rgba(122, 138, 122, 0.18);
}

.sell-shell--lite .sell-section--details {
  border-top: 0;
  border-radius: 0 0 20px 20px;
  box-shadow: var(--shadow-card);
}

.sell-shell--lite .sell-section-head {
  align-items: center;
  margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px dashed rgba(122, 138, 122, 0.3);
}

.sell-shell--lite .sell-section h2 {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 18px;
  font-weight: 800;
}

.sell-shell--lite .sell-section-num {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--copper);
  color: #fff;
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 13px;
}

.sell-shell--lite .sell-section-badge {
  width: 42px;
  height: 42px;
  border: 1px solid rgba(122, 138, 122, 0.25);
  border-radius: 10px;
  background: rgba(20, 26, 20, 0.04);
}

.sell-shell--lite .sell-section-badge svg {
  width: 23px;
  height: 23px;
  /* Was rendering hairline-thin at this size against a tinted disc. */
  stroke-width: 2.1;
}

.sell-shell--lite .sell-grid {
  gap: 14px;
}

.sell-shell--lite .field--lite-extra {
  display: none;
}

.sell-shell--lite .field > span {
  font-size: 12.5px;
  font-weight: 700;
}

.sell-shell--lite .field input,
.sell-shell--lite .field select,
.sell-shell--lite .field textarea {
  min-height: 48px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.85);
  font-size: 14.5px;
}

.sell-shell--lite .field input:focus,
.sell-shell--lite .field select:focus,
.sell-shell--lite .field textarea:focus {
  box-shadow: 0 0 0 4px var(--accent-soft);
}

.sell-shell--lite .upload-zone {
  padding: 22px;
  border: 1.5px dashed rgba(30, 77, 52, 0.4);
  border-radius: 14px;
  background: rgba(30, 77, 52, 0.04);
}

.sell-shell--lite .upload-zone:hover {
  background: var(--accent-soft);
}

.sell-shell--lite .upload-icon {
  width: 42px;
  height: 42px;
  border-radius: 12px;
  background: var(--copper);
  color: #fff;
}

.sell-shell--lite .upload-text small {
  display: block;
  margin-top: 2px;
  color: var(--muted);
}

/* Sticky glass action bar. */
.sell-shell--lite .sell-actions {
  position: sticky;
  bottom: 12px;
  z-index: 20;
  justify-content: space-between;
  margin-top: 14px;
  padding: 12px 16px;
  border: 1px solid var(--hairline);
  border-radius: 16px;
  background: var(--material-regular);
  backdrop-filter: var(--blur-chrome);
  -webkit-backdrop-filter: var(--blur-chrome);
  box-shadow: 0 12px 36px rgba(15, 20, 15, 0.14);
}

.sell-shell--lite .sell-actions .btn-primary {
  min-width: 240px;
  background: var(--copper);
}

.sell-shell--lite .sell-actions .btn-primary:hover {
  background: var(--copper-hover);
}

.sell-shell--full .sell-mode-bar {
  position: sticky;
  top: 70px;
  z-index: 6;
  padding: 8px 0;
  background: var(--warm-ivory);
}

@media (min-width: 981px) {
  .sell-shell--v3 .sell-layout { grid-template-columns: minmax(0, 1fr) 320px; }
  .sell-shell--v3 .sell-form {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    grid-template-areas:
      "voice   voice"
      "car     terms"
      "car     details"
      "error   error"
      "actions actions";
    gap: 16px;
  }
  .sell-shell--v3 .voice-fill { grid-area: voice; }
  .sell-shell--v3 .sell-section--car { grid-area: car; }
  .sell-shell--v3 .sell-section--terms { grid-area: terms; }
  .sell-shell--v3 .sell-section--details { grid-area: details; }
  .sell-shell--v3 #sell-error { grid-area: error; margin: 0; }
  .sell-shell--v3 #sell-error[hidden] { display: none; }
  .sell-shell--v3 .sell-actions { grid-area: actions; }

  .sell-shell--lite .sell-layout {
    grid-template-columns: minmax(0, 1fr);
  }

  .sell-shell--lite .sell-form {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: none;
    gap: 0;
    max-width: 880px;
    margin: 0 auto;
  }
  /* Reset the full-mode grid-area placements so every block stacks in the
     single lite column. Without this, .voice-fill's orphaned "voice" area
     spawns phantom columns and collapses each section to ~58px wide. */
  .sell-shell--lite .sell-form > * {
    grid-area: auto;
    grid-column: 1 / -1;
  }
}


@media (max-width: 1179px) {
  .sell-shell--v3 .sell-steps { display: none; }
}


@media (max-width: 980px) {
  .sell-shell--v3 .sell-preview { position: static; }
}
@media (max-width: 620px) {
  .sell-shell--v3 .sell-hero-inner { flex-wrap: wrap; gap: 12px; }
  .sell-shell--v3 .sell-grid { grid-template-columns: 1fr; }
  .sell-shell--v3 .sell-actions { flex-direction: column; }
  .sell-shell--v3 .sell-actions .btn { width: 100%; }

  .sell-shell--lite .sell-actions {
    bottom: 8px;
    margin-inline: 0;
  }

  .sell-shell--lite .sell-actions .btn-primary {
    min-width: 0;
  }

  /* Numbers-only stepper on small screens; full labels live in the
     section headers directly below. */
  .sell-shell--lite .sell-mode-chip {
    padding: 6px 8px;
    font-size: 0;
  }

  .sell-shell--lite .sell-mode-chip span {
    font-size: 12px;
  }

  .sell-shell--lite .sell-mode-chip + .sell-mode-chip::before {
    width: 26px;
    margin-right: 0;
  }

  .sell-shell--lite .sell-section {
    padding: 20px 18px;
  }
}

:root {
  --market-bg: #f2f6f1;
  --market-cream: #f8fbf7;
  --market-surface: #ffffff;
  --market-line: rgba(122, 138, 122, 0.24);
  --market-ink: #161a15;
  --market-muted: #5a6459;
  --market-green: #161a15;
  --market-green-2: #2a332a;
  --market-orange: #1e4d34;
  --market-orange-2: #163a27;
  --market-blue: #2E6F95;
  --market-red: #B64032;
  --market-radius: 14px;
  --market-shadow: 0 14px 34px -28px rgba(15, 20, 15, 0.4);
}

html {
  background: var(--market-bg);
}

body {
  color: var(--market-ink);
  background:
    radial-gradient(1100px 520px at 12% -6%, rgba(168, 200, 172, 0.35), transparent 60%),
    radial-gradient(900px 480px at 88% 4%, rgba(214, 200, 188, 0.3), transparent 55%),
    linear-gradient(180deg, #e9efe7, var(--market-bg) 38%);
  background-attachment: fixed;
}

.container {
  width: min(calc(100% - 40px), 1240px);
}

.site-header {
  border-top: 0;
  border-bottom: 1px solid var(--market-line);
  background: rgba(251, 251, 247, 0.96);
  box-shadow: 0 1px 0 rgba(24, 34, 27, 0.03);
}

.header-inner {
  min-height: 64px;
  gap: 22px;
}

.brand-word {
  font-family: var(--font);
  font-size: 22px;
  letter-spacing: 0;
}

.brand-word b {
  color: var(--market-orange);
}

.brand-tile {
  width: 31px;
  height: 31px;
  border-radius: 8px;
  background: var(--market-green);
}

.site-nav {
  gap: 24px;
}

.site-nav a {
  min-height: 64px;
  color: var(--market-ink);
}

.site-nav a.is-active::after {
  bottom: 0;
  height: 3px;
  background: var(--market-orange);
}

.btn,
.btn-sm,
.btn-danger,
.btn-provider,
.filterbar-more,
.account-tab,
.browse-pill,
.catalog-quickbar-pills a,
.sell-mode-chip {
  border-radius: var(--market-radius);
}

.btn-primary,
.btn-accent {
  background: var(--copper);
  color: #fff;
}

.btn-primary:hover,
.btn-accent:hover {
  background: var(--copper-hover);
}

.btn-ghost,
.btn-secondary,
.btn-light {
  background: var(--market-surface);
  border-color: var(--market-line);
  color: var(--market-ink);
}

.btn-ghost:hover,
.btn-secondary:hover,
.btn-light:hover {
  border-color: #c4ccc2;
  background: #e9efe7;
}

.header-cta {
  min-height: 44px;
  padding-inline: 17px;
}

.home-main {
  overflow: clip;
}

.hero {
  min-height: auto;
  padding: 26px 0 28px;
  border-bottom: 1px solid var(--market-line);
  background: var(--market-bg);
}

.hero-backdrop {
  background-image:
    linear-gradient(180deg, rgba(243, 246, 241, 0.58), rgba(243, 246, 241, 0.82)),
    url("assets/hero-road-bg.png");
  background-size: cover;
  background-position: center 62%;
}

.hero::after {
  height: 30%;
  background: linear-gradient(180deg, rgba(243, 246, 241, 0), var(--market-bg));
}

.hero .container {
  width: min(calc(100% - 44px), 1460px);
}

.hero-copy {
  max-width: 780px;
  margin-bottom: 4px;
}

.hero-copy h1 {
  color: var(--market-green);
  font-family: var(--font);
  font-size: clamp(32px, 4vw, 50px);
  font-weight: 800;
  line-height: 1.02;
  letter-spacing: 0;
}

.hero-copy p {
  max-width: 560px;
  margin-top: 8px;
  color: var(--market-muted);
  font-size: 15px;
  font-weight: 600;
}

.swap-stage {
  min-height: clamp(190px, 18vw, 260px);
  margin-top: 0;
  grid-template-columns: minmax(0, 1fr) 84px minmax(0, 1fr);
}

.hero-car img {
  width: min(100%, 540px);
  filter: saturate(1.03) contrast(1.03) drop-shadow(0 18px 24px rgba(24, 34, 27, 0.28));
}

.hero-car-caption {
  padding: 8px 18px;
  border: 1px solid rgba(217, 219, 208, 0.72);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.76);
}

.sound-btn {
  border-radius: 999px;
  border-color: rgba(217, 219, 208, 0.9);
  box-shadow: var(--market-shadow);
}

.swap-icon {
  width: 56px;
  height: 56px;
  border: 1px solid rgba(20, 26, 20, 0.2);
  background: rgba(255, 255, 255, 0.82);
  box-shadow: var(--market-shadow);
}

.search-bar.swap-search {
  max-width: 1120px;
  margin-top: -4px;
  padding: 10px;
  border: 1px solid rgba(255,255,255,0.2);
  border-radius: 10px;
  background: var(--market-green);
  box-shadow: 0 18px 42px -30px rgba(20, 26, 20, 0.72);
}

.search-field,
.search-slider,
.swap-search-icon {
  border-color: rgba(255,255,255,0.22);
  border-radius: 8px;
  background: rgba(255,255,255,0.12);
}

.search-field input,
.search-field select {
  font-size: 14px;
  font-weight: 700;
}

.search-submit {
  background: var(--market-orange-2);
}

.browse-strip {
  padding: 18px 0 8px;
  background: var(--market-bg);
}

.browse-strip-inner {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  padding: 12px;
  border: 1px solid var(--market-line);
  border-radius: 10px;
  background: var(--market-surface);
  box-shadow: var(--market-shadow);
}

.browse-strip-head {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 0 8px;
  color: var(--market-green);
  font-size: 14px;
}

.browse-strip-head svg {
  width: 18px;
  height: 18px;
}

.browse-pills {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(150px, 1fr);
  gap: 8px;
  min-width: 0;
  overflow-x: auto;
  scrollbar-width: none;
}

.browse-pills::-webkit-scrollbar {
  display: none;
}

.browse-pill {
  display: grid;
  gap: 2px;
  min-height: 54px;
  padding: 9px 12px;
  border: 1px solid var(--market-line);
  background: #FAFAF5;
}

.browse-pill:hover {
  border-color: rgba(20, 26, 20, 0.34);
  background: #F0F3EA;
}

.browse-pill span {
  color: var(--market-ink);
  font-weight: 800;
  line-height: 1.15;
}

.browse-pill small {
  color: var(--market-muted);
  font-size: 11.5px;
  font-weight: 700;
}

.listings-section {
  padding: 44px 0 58px;
  background: var(--market-bg);
}

.section-head h2,
.split-section h2 {
  color: var(--market-green);
  font-family: var(--font);
  font-size: clamp(24px, 2.5vw, 34px);
  font-weight: 800;
}

.listing-grid {
  gap: 16px;
}

.listing-card,
.catalog-hero,
.filters-form,
.car-card,
.detail-panel,
.detail-about,
.detail-missing-card,
.sell-shell--v3 .sell-section,
.sell-shell--v3 .sell-preview,
.auth-card,
.account-tabs,
.account-card,
.msg-thread,
.profile-aside,
.filter-mycar,
.empty-state,
.modal-card {
  border-color: var(--market-line);
  border-radius: 10px;
  box-shadow: var(--market-shadow);
}

.listing-card {
  background: var(--market-surface);
}

.listing-media {
  height: 186px;
  background: #e9efe7;
}

.listing-media img {
  object-fit: contain;
  padding: 6px 8px 0;
}

.listing-body {
  gap: 12px;
  grid-template-rows: auto minmax(50px, auto) minmax(48px, auto) auto;
}

.listing-wants,
.car-row-wants,
.trade-wants {
  background: #EEF2E9;
}

.trade-cash--add,
.car-row-cash--add {
  background: #E4F1E5;
  color: #267342;
}

.trade-cash--ask,
.car-row-cash--ask {
  background: #F7DFDA;
  /* --market-red (#B64032) measured 4.38:1 here, just under the 4.5 minimum;
     its add/none siblings both pass, so this darkens only the red. */
  color: #A33627;
}

.trade-cash--none,
.car-row-cash--none {
  background: #E5F0F6;
  color: var(--market-blue);
}

.catalog-shell,
.detail-shell,
.sell-shell,
.auth-shell,
.account-shell {
  background: var(--market-bg);
}

.catalog-hero,
.sell-shell--v3 .sell-hero {
  padding: 18px 0;
  border-bottom: 1px solid var(--market-line);
  background: var(--market-green);
}

.catalog-hero-inner {
  display: grid;
  grid-template-columns: minmax(220px, 0.8fr) minmax(0, 1.3fr) auto;
  align-items: center;
  gap: 18px;
}

.catalog-hero h1 {
  font-family: var(--font);
  font-size: 24px;
  font-weight: 800;
}

.catalog-hero-copy > p {
  max-width: 42ch;
  color: rgba(255,255,255,0.72);
  font-size: 13px;
}

.catalog-hero-trust {
  display: none;
}

.catalog-quickbar {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 12px;
  min-width: 0;
  padding: 8px;
  border: 1px solid rgba(255,255,255,0.2);
  border-radius: 10px;
  background: rgba(255,255,255,0.08);
}

.catalog-quickbar-count {
  display: grid;
  min-width: 96px;
  padding: 7px 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.12);
  color: #fff;
}

.catalog-quickbar-count strong {
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 18px;
  line-height: 1;
}

.catalog-quickbar-count span {
  color: rgba(255,255,255,0.7);
  font-size: 11px;
  font-weight: 700;
}

.catalog-quickbar-pills {
  display: flex;
  gap: 7px;
  min-width: 0;
  overflow-x: auto;
  scrollbar-width: none;
}

.catalog-quickbar-pills::-webkit-scrollbar {
  display: none;
}

/* These chips were styled for a dark quickbar (white text on a white 12%
   overlay). The bar is light, so every chip rendered white-on-white at 1.07:1,
   i.e. invisible. Light-bar styling, with the active chip as a solid fill. */
.catalog-quickbar-pills a {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 36px;
  padding: 8px 12px;
  border: 1px solid var(--market-line);
  background: #fff;
  color: var(--market-ink);
  font-size: 13px;
  font-weight: 700;
}

.catalog-quickbar-pills a:hover {
  border-color: var(--copper);
  background: #fff;
}

.catalog-quickbar-pills a.is-active {
  border-color: var(--copper);
  background: var(--copper);
  color: #fff;
}

.catalog-quickbar-pills a .quick-chip-count {
  color: inherit;
  opacity: 0.62;
  font-variant-numeric: tabular-nums;
}

.catalog {
  grid-template-columns: 306px minmax(0, 1fr);
  gap: 18px;
  padding-top: 18px;
}

.filters {
  top: 82px;
}

.filters-form {
  gap: 13px;
  padding: 14px;
  background: var(--market-surface);
}

.filters-head {
  padding-bottom: 10px;
}

.filters-title {
  color: var(--market-ink);
}

.filter-label {
  color: var(--market-muted);
  letter-spacing: 0;
}

.filters-form select,
.filters-form input:not([type="checkbox"]),
.filter-search {
  min-height: 42px;
  border-color: var(--market-line);
  border-radius: 8px;
  background: var(--market-cream);
}

.filter-range {
  gap: 6px;
}

.filter-checks {
  gap: 8px;
}

.filters-actions .filters-search {
  min-height: 46px;
  background: var(--market-orange-2);
}

.filters-actions .filters-search span {
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 13px;
}

.results {
  gap: 12px;
}

.results-head {
  min-height: 44px;
  padding: 0 2px;
}

.results-count {
  color: var(--market-muted);
}

.results-count strong {
  color: var(--market-ink);
}

.results-controls {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

.results-sort select,
.view-toggle {
  background: var(--market-surface);
  border-color: var(--market-line);
}

.filters-toggle {
  background: var(--market-surface);
}

.car-list.view-list {
  gap: 12px;
}

.car-card {
  grid-template-columns: 238px minmax(0, 1fr) 276px;
  border-radius: 10px;
  background: var(--market-surface);
  box-shadow: none;
}

.car-card:hover {
  transform: none;
  border-color: #c4ccc2;
  box-shadow: var(--market-shadow);
}

.car-card-media {
  background: #e9efe7;
}

.car-card-media img {
  min-height: 218px;
  object-fit: contain;
  padding: 8px;
}

.car-card:hover .car-card-media img {
  transform: none;
}

.fresh-tag {
  border-radius: 7px;
  background: rgba(255,255,255,0.86);
}

.car-card-body {
  padding: 17px 18px;
  border-right-color: var(--market-line);
}

.car-card-head .car-row-title {
  font-family: var(--font);
  font-size: 21px;
  font-weight: 800;
  letter-spacing: 0;
}

.car-row-year {
  border-radius: 6px;
  background: var(--market-cream);
}

.stat-row,
.stat-row--card {
  border-radius: 8px;
  background: var(--market-cream);
}

.stat-cell {
  min-width: 0;
}

.car-card-aside {
  background: #F8F8F2;
}

.aside-actions .btn,
.car-card-detail {
  border-radius: 8px;
}

.detail {
  padding-top: 20px;
}

.detail-grid {
  grid-template-columns: minmax(0, 1.35fr) 390px;
  gap: 20px;
}

.detail-main-media,
.detail-thumb {
  border-radius: 10px;
  background: #e9efe7;
}

.detail-main-media img {
  object-fit: contain;
  padding: 12px;
}

.detail-panel {
  position: sticky;
  top: 82px;
  gap: 13px;
  padding: 20px;
}

.detail-title {
  font-family: var(--font);
  font-size: 29px;
}

.detail-actions .btn {
  border-radius: 8px;
}

.detail-about {
  margin-top: 18px;
  padding: 20px;
}

.sell-shell--v3 .sell {
  max-width: 1180px;
  padding-top: 18px;
}

.sell-shell--v3 .sell-hero-icon {
  border-radius: 10px;
}

.sell-shell--v3 .sell-head h1,
.sell-shell--lite .sell-head h1 {
  font-family: var(--font);
  letter-spacing: 0;
}

.sell-shell--v3 .sell-section,
.sell-shell--v3 .sell-preview {
  border-radius: 10px;
  box-shadow: var(--market-shadow);
}

.sell-shell--v3 .sell-grid {
  gap: 12px;
}

.sell-shell--v3 .field input,
.sell-shell--v3 .field select,
.sell-shell--v3 .field textarea,
.sell-shell--v3 .upload-zone {
  border-radius: 8px;
  background: var(--market-cream);
}

.sell-shell--v3 .sell-actions .btn {
  border-radius: 8px;
}

.sell-shell--lite .sell-hero {
  background: var(--market-green);
  color: #fff;
}

.sell-shell--lite .sell-head h1 {
  color: #fff;
}

.sell-shell--lite .sell-sub {
  color: rgba(255, 255, 255, 0.72);
}

.auth-shell {
  min-height: calc(100vh - 128px);
  place-items: start center;
  padding-top: 54px;
}

.auth-card {
  width: min(100%, 456px);
  padding: 28px;
  text-align: left;
}

.auth-icon {
  width: 44px;
  height: 44px;
  border-radius: 10px;
  background: var(--market-green);
}

.auth-card h1 {
  font-family: var(--font);
  font-size: 25px;
  font-weight: 800;
}

.auth-sub,
.auth-note {
  color: var(--market-muted);
}

.auth-form .field input,
.auth-form .field select {
  border-radius: 8px;
  background: var(--market-cream);
}

.account-shell {
  padding-top: 24px;
}

.account {
  grid-template-columns: 244px minmax(0, 1fr);
  gap: 18px;
}

.account-tabs {
  top: 82px;
  gap: 3px;
  padding: 8px;
  box-shadow: none;
}

.account-tab {
  min-height: 42px;
  font-weight: 800;
}

.account-tab.is-active {
  background: var(--market-green);
}

.account-body h1 {
  font-family: var(--font);
  font-size: 26px;
  font-weight: 800;
}

.account-card {
  grid-template-columns: 110px minmax(0, 1fr) auto;
  padding: 12px;
  box-shadow: none;
}

.account-card-media {
  width: 110px;
  height: 76px;
  border-radius: 8px;
  background: #e9efe7;
}

.account-card-actions .btn,
.account-card-actions .btn-danger {
  min-height: 36px;
}

.msg-thread {
  box-shadow: none;
}

.msg-form input {
  border-radius: 8px;
  background: var(--market-cream);
}

.site-footer {
  background: var(--market-green);
}

.footer-brand .brand-word,
.footer-brand p,
.footer-nav a,
.footer-base {
  color: rgba(255,255,255,0.82);
}

.footer-brand .brand-word b {
  color: #F1B28E;
}

@media (max-width: 1180px) {
  .catalog-hero-inner {
    grid-template-columns: minmax(0, 1fr);
  }

  .catalog-hero-cta {
    width: fit-content;
  }

  .catalog {
    grid-template-columns: minmax(0, 1fr);
  }

  .filters {
    position: static;
    max-height: none;
  }

  .car-card {
    grid-template-columns: 220px minmax(0, 1fr);
  }

  .car-card-aside {
    grid-column: 1 / -1;
    border-top: 1px solid var(--market-line);
  }

  .detail-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .detail-panel {
    position: static;
  }
}

@media (max-width: 900px) {
  .header-inner {
    grid-template-columns: minmax(0, 1fr);
    gap: 6px;
    padding: 8px 0;
  }

  .header-actions {
    justify-content: space-between;
    gap: 10px;
    overflow-x: auto;
    scrollbar-width: none;
  }

  .site-nav a {
    min-height: 38px;
  }

  .hero {
    padding-top: 26px;
  }

  .hero-copy h1 {
    font-size: clamp(30px, 9vw, 40px);
  }

  .swap-stage {
    grid-template-columns: 1fr 44px 1fr;
    gap: 4px;
  }

  .hero-car-caption {
    padding-inline: 10px;
  }

  .browse-strip-inner {
    grid-template-columns: minmax(0, 1fr);
  }

  .listing-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .account {
    grid-template-columns: minmax(0, 1fr);
  }

  .account-tabs {
    position: static;
    grid-auto-flow: column;
    grid-auto-columns: max-content;
    overflow-x: auto;
    scrollbar-width: none;
  }
}

@media (max-width: 680px) {
  .container,
  .hero .container {
    width: min(calc(100% - 28px), 1240px);
  }

  .header-cta span,
  .site-nav {
    font-size: 13px;
  }

  .hero-copy {
    text-align: left;
  }

  .hero-copy p {
    margin-left: 0;
  }

  .swap-stage {
    min-height: 142px;
  }

  .sound-btn {
    width: 36px;
    height: 36px;
    bottom: 42px;
  }

  .hero-car-caption strong {
    font-size: 13px;
  }

  .hero-car-caption small {
    font-size: 11px;
  }

  .search-bar.swap-search {
    margin-top: -4px;
  }

  .listing-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .catalog-quickbar {
    grid-template-columns: minmax(0, 1fr);
  }

  .results-head {
    align-items: flex-start;
    flex-direction: column;
  }

  .results-controls {
    width: 100%;
    flex-wrap: wrap;
  }

  .results-sort {
    flex: 1 1 190px;
  }

  .results-sort select {
    width: 100%;
  }

  .car-card,
  .car-list.view-grid .car-card {
    grid-template-columns: minmax(0, 1fr);
  }

  .car-card-media {
    height: 210px;
  }

  .car-card-body,
  .car-list.view-grid .car-card-body {
    border-right: 0;
    border-bottom: 1px solid var(--market-line);
  }

  .car-card-aside {
    grid-column: auto;
  }

  .detail-main-media {
    aspect-ratio: 4 / 3;
  }

  .detail-thumbs {
    grid-template-columns: repeat(3, 1fr);
  }

  .account-card,
  .conversation-card,
  .offer-card {
    grid-template-columns: minmax(0, 1fr);
  }

  .account-card-media {
    width: 100%;
    height: 150px;
  }

  .account-card-actions {
    flex-direction: row;
    flex-wrap: wrap;
  }
}

@media (max-width: 680px) {
  .catalog-quickbar {
    max-width: 100%;
    overflow: hidden;
  }

  .catalog-quickbar-pills {
    max-width: 100%;
    overflow-x: auto;
  }

  .results-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 10px;
  }

  .results-controls {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    width: 100%;
    min-width: 0;
    justify-content: stretch;
  }

  .results-sort {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 8px;
    width: 100%;
    min-width: 0;
  }

  .results-sort select {
    min-width: 0;
  }

  .view-toggle {
    justify-self: end;
  }
}

:root {
  --v4-paper: #f2f6f1;
  --v4-surface: rgba(255, 255, 255, 0.9);
  --v4-line: rgba(122, 138, 122, 0.24);
  --v4-ink: #161a15;
  --v4-muted: #5a6459;
  --v4-green: #161a15;
  --v4-green-soft: #e5eee3;
  --v4-orange: #1e4d34;
  --v4-orange-strong: #163a27;
  --v4-blue-soft: #E7F0F5;
  --v4-shadow: 0 18px 46px -36px rgba(15, 20, 15, 0.45);
}

body {
  background:
    radial-gradient(1100px 520px at 12% -6%, rgba(168, 200, 172, 0.35), transparent 60%),
    radial-gradient(900px 480px at 88% 4%, rgba(214, 200, 188, 0.3), transparent 55%),
    linear-gradient(180deg, #e9efe7, var(--v4-paper) 38%);
  background-attachment: fixed;
}

.site-header {
  background: var(--material-thin);
  backdrop-filter: var(--blur-chrome);
  -webkit-backdrop-filter: var(--blur-chrome);
}

.header-inner {
  min-height: 68px;
}

.brand-tile {
  border-radius: 10px;
}

.header-cta,
.header-login,
.catalog-hero-cta,
.search-submit,
.listing-offer,
.car-row-offer,
.filters-search,
.sell-actions .btn-primary {
  box-shadow: 0 12px 26px -22px rgba(181, 81, 34, 0.95);
}

.btn-interactive::before {
  opacity: 0.16;
}

.hero {
  padding: 32px 0 34px;
  background:
    linear-gradient(180deg, rgba(243, 246, 241, 0.42), rgba(243, 246, 241, 0.96)),
    var(--v4-paper);
}

.hero-backdrop {
  opacity: 0.74;
  background-image:
    linear-gradient(180deg, rgba(243, 246, 241, 0.42), rgba(243, 246, 241, 0.78) 56%, rgba(243, 246, 241, 0.98)),
    url("assets/hero-road-bg.png");
}

.hero-copy {
  max-width: 860px;
}

.hero-copy h1 {
  max-width: 820px;
  margin-inline: auto;
  color: var(--v4-green);
  font-size: clamp(30px, 4.1vw, 54px);
  line-height: 1.08;
}

.hero-copy p {
  max-width: 610px;
  color: var(--v4-muted);
}

.swap-stage {
  min-height: clamp(178px, 17vw, 255px);
}

.hero-car img {
  width: min(100%, 510px);
  filter: saturate(1.04) contrast(1.03) drop-shadow(0 16px 22px rgba(21, 31, 24, 0.24));
}

.hero-car-caption {
  background: rgba(255, 255, 255, 0.82);
  box-shadow: 0 12px 28px -24px rgba(21, 31, 24, 0.55);
}

.search-bar.swap-search {
  position: relative;
  z-index: 4;
  gap: 10px;
  max-width: 1040px;
  margin-top: 6px;
  padding: 12px;
  border: 1px solid rgba(216, 219, 207, 0.98);
  background: var(--v4-surface);
  color: var(--v4-ink);
  box-shadow: 0 24px 60px -38px rgba(20, 26, 20, 0.62);
  backdrop-filter: blur(18px) saturate(1.06);
}

.search-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 2px 4px 4px;
}

.search-panel-head > div {
  display: grid;
  gap: 1px;
}

.search-panel-head strong {
  color: var(--v4-ink);
  font-size: 14px;
  font-weight: 900;
  line-height: 1.2;
}

.search-panel-head span,
.search-panel-head a {
  color: var(--v4-muted);
  font-size: 12px;
  font-weight: 750;
}

.search-panel-head a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--v4-green);
  white-space: nowrap;
}

.search-panel-head a svg {
  width: 15px;
  height: 15px;
}

.search-field,
.search-slider,
.swap-search-icon {
  border-color: var(--v4-line);
  background: #fff;
  color: var(--v4-green);
}

.search-field input,
.search-field select {
  color: var(--v4-ink);
}

.search-field input::placeholder {
  color: #5a6459;
}

.search-slider {
  background: linear-gradient(180deg, #fff, #f8fbf7);
}

.slider-end,
.slider-value {
  color: var(--v4-ink);
}

.cash-slider {
  accent-color: var(--v4-orange-strong);
}

.swap-search-icon {
  background: var(--v4-green);
  color: #fff;
}

.search-submit {
  background: var(--v4-orange-strong);
}

.search-submit:hover {
  background: var(--v4-orange);
}

.browse-strip {
  padding: 22px 0 4px;
}

.browse-strip-inner,
.catalog-quickbar {
  border-radius: 12px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255,0.96), rgba(250,250,244,0.96));
  box-shadow: var(--v4-shadow);
}

.browse-strip-head {
  min-height: 44px;
  padding: 0 12px;
  border-radius: 10px;
  background: var(--v4-green-soft);
}

.browse-pill,
.catalog-quickbar-pills a {
  position: relative;
  overflow: hidden;
  border-radius: 10px;
}

.browse-pill::after,
.catalog-quickbar-pills a::after {
  content: "";
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 0;
  height: 2px;
  border-radius: 999px 999px 0 0;
  background: var(--v4-orange-strong);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 180ms ease;
}

.browse-pill:hover::after,
.catalog-quickbar-pills a:hover::after {
  transform: scaleX(1);
}

.listings-section {
  padding-top: 48px;
}

.listing-card {
  border-radius: 12px;
  transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}

.listing-card:hover {
  transform: translateY(-3px);
  border-color: #c4ccc2;
  box-shadow: 0 22px 44px -34px rgba(21, 31, 24, 0.6);
}

.listing-media {
  height: 176px;
  background:
    radial-gradient(circle at 50% 110%, rgba(20, 26, 20, 0.12), transparent 44%),
    #e9efe7;
}

.listing-body {
  padding: 15px;
}

.listing-body h3 {
  font-size: 18px;
}

.listing-wants,
.trade-wants,
.trade-cash {
  border-radius: 10px;
}

.catalog-hero {
  padding: 16px 0;
  background:
    radial-gradient(560px 260px at 88% 0%, rgba(30, 77, 52, 0.24), transparent 60%),
    linear-gradient(135deg, #101410, #191f18 62%, #222921);
}

.catalog-hero-inner {
  grid-template-columns: minmax(220px, 0.66fr) minmax(0, 1.3fr) auto;
}

.catalog-quickbar {
  background: rgba(255, 255, 255,0.1);
  box-shadow: none;
}

.catalog-quickbar-pills a {
  border: 1px solid var(--market-line);
}

.catalog {
  padding-top: 22px;
}

.filters-form {
  border-radius: 12px;
}

.filters-form select,
.filters-form input,
.filter-search {
  background: #fff;
}

.filters-title,
.results-count strong,
.car-card-head .car-row-title {
  color: var(--v4-ink);
}

.car-card {
  overflow: hidden;
  border-radius: 12px;
}

.car-card-media {
  background:
    radial-gradient(circle at 52% 104%, rgba(20, 26, 20, 0.11), transparent 45%),
    #e9efe7;
}

.car-card-body {
  background: #fff;
}

.car-card-aside {
  background: linear-gradient(180deg, #f8fbf7, #F5F6EF);
}

.stat-row,
.stat-row--card,
.car-row-year {
  background: #F6F7F1;
}

.detail-panel,
.detail-about,
.sell-shell--v3 .sell-section,
.sell-shell--v3 .sell-preview,
.auth-card,
.account-card,
.modal-card {
  border-radius: 12px;
}

@media (min-width: 1280px) {
  .hero .container {
    width: min(calc(100% - 56px), 1400px);
  }

  .hero-copy h1 {
    font-size: clamp(38px, 3.6vw, 56px);
  }

  .swap-stage {
    min-height: clamp(210px, 18vw, 285px);
  }
}

@media (min-width: 901px) {
  .hero {
    padding: 22px 0 22px;
  }

  .hero-copy h1 {
    font-size: clamp(34px, 3.5vw, 48px);
  }

  .hero-copy p {
    margin-top: 6px;
  }

  .swap-stage {
    min-height: clamp(112px, 10vw, 155px);
  }

  .hero-car img {
    width: min(100%, 410px);
  }

  .hero-car::before {
    bottom: 36px;
    height: 24px;
  }

  .search-bar.swap-search {
    margin-top: 2px;
  }

  .search-panel-head {
    padding-bottom: 0;
  }

  .search-field,
  .search-slider,
  .search-submit {
    min-height: 44px;
  }
}

@media (max-width: 900px) {
  .header-inner {
    grid-template-columns: minmax(0, 1fr) auto;
    min-height: 58px;
    gap: 10px;
    padding: 7px 0;
  }

  .brand-cluster {
    min-width: 0;
  }

  .header-actions {
    justify-content: end;
    gap: 8px;
    overflow: visible;
  }

  .site-nav {
    display: none;
  }

  .header-cta {
    width: auto;
    min-width: 0;
    padding: 0 14px;
  }

  .header-cta span {
    display: none;
  }

  .header-cta svg {
    margin: 0;
  }

  .header-login {
    min-height: 40px;
    padding-inline: 14px;
  }

  .hero-inner {
    display: grid;
  }

  .hero-copy {
    order: 1;
  }

  .search-bar.swap-search {
    order: 2;
  }

  .swap-stage {
    order: 3;
    margin-top: 16px;
  }

  .listing-grid {
    gap: 14px;
  }
}

@media (max-width: 680px) {
  .container,
  .hero .container {
    width: min(calc(100% - 24px), 1240px);
  }

  .brand-word {
    font-size: 20px;
  }

  .brand-tile {
    width: 30px;
    height: 30px;
  }

  .hero {
    padding: 18px 0 24px;
  }

  .hero-copy h1 {
    font-size: clamp(25px, 7.6vw, 34px);
    line-height: 1.12;
  }

  .hero-copy p {
    max-width: 32rem;
    font-size: 13.5px;
  }

  .search-bar.swap-search {
    margin-top: 14px;
    padding: 10px;
    border-radius: 12px;
  }

  .search-panel-head {
    align-items: flex-start;
  }

  .search-panel-head a {
    display: none;
  }

  .swap-search-top,
  .swap-search-bottom {
    gap: 9px;
  }

  .search-field,
  .search-slider,
  .search-submit {
    min-height: 46px;
    border-radius: 10px;
  }

  .swap-search-icon {
    width: 38px;
    height: 38px;
    border-radius: 10px;
  }

  .slider-track {
    gap: 8px;
  }

  .slider-end {
    font-size: 10px;
  }

  .swap-stage {
    min-height: 118px;
    grid-template-columns: minmax(0, 1fr) 38px minmax(0, 1fr);
  }

  .hero-car img {
    max-height: 116px;
  }

  .hero-car-caption {
    display: none;
  }

  .sound-btn {
    width: 32px;
    height: 32px;
    bottom: 26px;
  }

  .sound-btn svg {
    width: 17px;
    height: 17px;
  }

  .swap-icon {
    width: 38px;
    height: 38px;
  }

  .swap-icon svg {
    width: 19px;
    height: 19px;
  }

  .browse-strip {
    padding-top: 16px;
  }

  .browse-strip-inner {
    padding: 10px;
    border-radius: 12px;
  }

  .browse-strip-head {
    justify-content: flex-start;
  }

  .browse-pills {
    grid-auto-columns: minmax(128px, 72%);
  }

  .listings-section {
    padding-top: 34px;
  }

  .section-head {
    align-items: flex-start;
    gap: 10px;
  }

  .section-head h2 {
    font-size: 22px;
  }

  .text-link {
    font-size: 13px;
  }

  .listing-media {
    height: 170px;
  }

  .catalog-hero {
    padding: 14px 0;
  }

  .catalog-hero-inner {
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }

  .catalog-hero h1 {
    font-size: 21px;
    line-height: 1.18;
  }

  .catalog-hero-copy > p {
    font-size: 12.5px;
  }

  .catalog-quickbar {
    width: 100%;
    border-radius: 12px;
    overflow: hidden;
  }

  .catalog-quickbar-count {
    min-width: 0;
  }

  .catalog-hero-cta {
    width: 100%;
  }

  .catalog {
    padding-top: 14px;
  }

  .filters-form {
    padding: 12px;
  }

  .car-card-media {
    height: 190px;
  }

  .car-card-body {
    padding: 14px;
  }

  .car-card-head .car-row-title {
    font-size: 19px;
  }

  .car-card-aside {
    padding: 14px;
  }

  .sticky-cta {
    display: none;
  }
}

.search-bar.swap-search {
  border-color: rgba(20, 26, 20, 0.22);
  background:
    linear-gradient(180deg, rgba(246, 251, 244, 0.98), rgba(255, 255, 255, 0.98));
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,0.72),
    0 24px 60px -36px rgba(20, 26, 20, 0.7);
}

.search-bar.swap-search::before {
  content: "";
  position: absolute;
  inset: 12px auto 12px 12px;
  width: 4px;
  border-radius: 999px;
  background: var(--v4-green);
}

.search-panel-head {
  margin-left: 8px;
  padding: 9px 12px;
  border: 1px solid rgba(20, 26, 20, 0.14);
  border-radius: 10px;
  background: linear-gradient(135deg, #e5eee3, #f0f5ee);
}

.search-panel-head strong {
  color: var(--v4-green);
}

.search-field,
.search-slider {
  border-color: rgba(20, 26, 20, 0.2);
  background: #fff;
}

.search-field:focus-within,
.search-slider:focus-within {
  border-color: rgba(20, 26, 20, 0.48);
  box-shadow: 0 0 0 3px rgba(20, 26, 20, 0.08);
}

.search-slider {
  background: linear-gradient(180deg, #f8fbf7, #FFFFFF);
}

.slider-track .slider-end {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 0 8px;
  border-radius: 999px;
  letter-spacing: 0;
}

.slider-track .slider-end:first-child {
  background: #e5eee3;
  color: var(--v4-green);
}

.slider-track .slider-end:last-child {
  background: #F7E7DD;
  color: var(--v4-orange);
}

.slider-value {
  color: var(--v4-green);
}

@media (min-width: 901px) {
  .hero {
    padding: 26px 0 30px;
  }

  .swap-stage {
    min-height: clamp(230px, 20vw, 360px);
    margin-top: 2px;
  }

  .hero-car {
    width: 100%;
  }

  .hero-car img {
    width: min(100%, 680px);
  }

  .hero-car-left img {
    transform: translateX(44px);
  }

  .hero-car-right img {
    transform: translateX(-44px);
  }

  .hero-car::before {
    bottom: 56px;
    height: 38px;
  }

  .search-bar.swap-search {
    margin-top: -6px;
  }
}

@media (min-width: 1500px) {
  .swap-stage {
    min-height: clamp(300px, 20vw, 430px);
  }

  .hero-car img {
    width: min(100%, 820px);
  }
}

.filters-title-row {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}


.car-card {
  grid-template-columns: minmax(300px, 0.92fr) minmax(300px, 1fr) 278px;
  min-height: 286px;
  border-color: rgba(20, 26, 20, 0.17);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 20px 42px -36px rgba(20, 26, 20, 0.55);
}

.car-card:hover {
  border-color: rgba(20, 26, 20, 0.34);
  box-shadow: 0 24px 48px -34px rgba(20, 26, 20, 0.58);
}

.car-card-media {
  min-height: 286px;
  background: #e9efe7;
}

.car-card-media .car-row-media-link {
  height: 100%;
}

.car-card-media img,
.car-list.view-grid .car-card-media img {
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: 0;
  object-fit: cover;
}

.car-card:hover .car-card-media img {
  transform: scale(1.025);
}

.fresh-tag {
  left: 12px;
  bottom: 12px;
  top: auto;
  background: rgba(255,255,255,0.9);
}

.car-card-body {
  justify-content: center;
  gap: 16px;
  padding: 22px;
}

.car-card-value {
  display: none;
}

.aside-head--deal {
  justify-content: flex-start;
}

.deal-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 30px;
  padding: 0 10px;
  border-radius: 999px;
  color: var(--v4-green);
  background: #E5F0E4;
  font-size: 12px;
  font-weight: 900;
}

.deal-status svg {
  width: 15px;
  height: 15px;
}

.deal-status--ask {
  color: #A43C2D;
  background: #F7E1DB;
}

.deal-status--none {
  color: #24698E;
  background: #E4F0F6;
}

.deal-status--flexible {
  color: #6F5524;
  background: #F3ECD7;
}

.car-card-aside {
  background:
    linear-gradient(180deg, rgba(232, 240, 231, 0.8), rgba(255, 255, 255,0.96));
}

.trade-wants {
  border: 1px solid rgba(20, 26, 20, 0.08);
}

.want-chip {
  border-color: rgba(20, 26, 20, 0.12);
  background: #fff;
}

.trade-cash {
  border: 1px solid rgba(20, 26, 20, 0.08);
}

@media (max-width: 1180px) {
  .car-card {
    grid-template-columns: minmax(260px, 0.9fr) minmax(0, 1fr);
  }

  .car-card-media {
    min-height: 250px;
  }
}

@media (max-width: 680px) {
  .search-bar.swap-search::before {
    inset: 10px auto 10px 10px;
  }

  .search-panel-head {
    margin-left: 8px;
  }

  .hero-car {
    width: 100%;
  }

  .hero-car-left {
    grid-column: 1;
  }

  .swap-center {
    grid-column: 2;
  }

  .hero-car-right {
    grid-column: 3;
  }

  .hero-car img {
    width: min(100%, 185px);
    max-height: none;
  }

  .hero-car-left img,
  .hero-car-right img {
    transform: none;
  }

  .car-card,
  .car-list.view-grid .car-card {
    grid-template-columns: minmax(0, 1fr);
    min-height: 0;
  }

  .car-card-media {
    min-height: 230px;
    height: 230px;
  }

  .filters-head {
    gap: 10px;
  }

  .filters-title-row {
    width: 100%;
    justify-content: space-between;
  }
}

/* The catalog sidebar returns at >1180px, but the 3-column car card needs
   ~880px on its own. Between 1181px and 1280px the sidebar leaves the list
   column too narrow, so the third column used to overflow and the aside
   spilled past the card edge. Keep the stacked-aside layout until all three
   columns genuinely fit. */
@media (min-width: 1181px) and (max-width: 1280px) {
  .car-card {
    grid-template-columns: minmax(260px, 0.9fr) minmax(0, 1fr);
  }

  .car-card-aside {
    grid-column: 1 / -1;
    border-top: 1px solid var(--market-line);
  }
}

html,
body {
  max-width: 100%;
  overflow-x: hidden;
}

.home-main {
  background:
    linear-gradient(180deg, rgba(243, 246, 241, 0.96), rgba(243, 246, 241, 0.98)),
    var(--v4-paper);
}

.hero--garage {
  position: relative;
  /* Above the browse strip / listings so the search dropdown that hangs
     below the hero paints over them, not under. */
  z-index: 20;
  min-height: auto;
  padding: 8px 0 0;
  /* Clip only sideways (the hero cars bleed 126% wide); vertical must stay
     visible so the search dropdown can extend below the hero. */
  overflow-x: clip;
  overflow-y: visible;
  border-bottom: 0;
  background: #f2f6f1;
}

.hero--garage .hero-backdrop {
  opacity: 0.78;
  background-image:
    linear-gradient(180deg, rgba(243, 246, 241, 0.52), rgba(243, 246, 241, 0.74) 58%, rgba(243, 246, 241, 0.98)),
    url("assets/hero-road-bg.png");
  background-position: center 68%;
  background-size: cover;
}

.hero--garage::after {
  height: 48%;
  background: linear-gradient(180deg, rgba(243, 246, 241, 0), #f2f6f1 78%);
}

.hero--garage .container {
  width: min(calc(100% - 40px), 1580px);
}

.hero--garage .hero-copy {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.hero--garage .swap-stage {
  order: 1;
  grid-template-columns: minmax(0, 1fr) 88px minmax(0, 1fr);
  min-height: clamp(350px, 31vw, 540px);
  margin-top: 0;
  align-items: end;
}

.hero--garage .hero-car img {
  width: min(112%, 850px);
  filter: saturate(1.04) contrast(1.04) drop-shadow(0 26px 32px rgba(21, 31, 24, 0.28));
}

.hero--garage .hero-car-left img {
  transform: translateX(42px);
}

.hero--garage .hero-car-right img {
  transform: translateX(-42px);
}

.hero--garage .hero-car::before {
  left: 8%;
  right: 8%;
  bottom: 64px;
  height: 48px;
  background: rgba(21, 31, 24, 0.22);
  filter: blur(18px);
}

.hero--garage .swap-center {
  align-self: center;
  gap: 10px;
}

.hero--garage .swap-line {
  display: none;
}

.hero--garage .swap-icon {
  width: 60px;
  height: 60px;
  border-color: rgba(20, 26, 20, 0.2);
  background: rgba(255, 255, 255, 0.9);
  color: var(--v4-green);
  backdrop-filter: blur(12px);
}

.hero--garage .hero-car-caption {
  display: none;
}

.hero--garage .sound-btn {
  bottom: 76px;
  border-color: rgba(20, 26, 20, 0.14);
}

.garage-search {
  order: 2;
  position: relative;
  z-index: 6;
  display: grid;
  gap: 10px;
  width: min(100%, 1160px);
  margin: -52px auto 0;
  padding: 12px;
  /* Crisp white panel with a defined green edge so it clearly floats above
     the sage background instead of blending into it. The accent stays
     reserved for actions, so no decorative bar here. */
  border: 1px solid rgba(30, 77, 52, 0.22);
  border-radius: 16px;
  background: #ffffff;
  box-shadow: 0 22px 50px -28px rgba(20, 26, 20, 0.45);
}

.garage-search .swap-search-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 48px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
}

.garage-search .swap-search-bottom {
  display: grid;
  grid-template-columns: minmax(160px, 0.74fr) minmax(220px, 1fr) auto auto;
  align-items: center;
  gap: 10px;
}

.garage-search .search-field,
.garage-search .swap-search-icon {
  min-height: 52px;
  border-color: rgba(30, 77, 52, 0.16);
  border-radius: 10px;
  background: #f2f6f1;
  color: var(--secondary);
}

.garage-search .search-field:focus-within {
  border-color: rgba(30, 77, 52, 0.45);
  box-shadow: 0 0 0 3px var(--accent-soft);
}

.garage-search .search-field svg {
  color: var(--copper);
}

.garage-search .search-field input,
.garage-search .search-field select {
  color: var(--graphite);
  font-family: var(--font);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0;
}

.garage-search .search-field input::placeholder {
  /* ≥4.5:1 on the sage field — 0.6 alpha sat at ~3.5:1 */
  color: rgba(48, 58, 48, 0.78);
}

.garage-search .search-field option {
  color: var(--v4-ink);
}

.garage-search .swap-search-icon {
  width: 48px;
  height: 52px;
  color: var(--copper);
  background: rgba(255, 255, 255, 0.86);
}

.garage-cash-slider {
  width: 100%;
  accent-color: var(--copper);
}

.garage-slider-value {
  min-width: 126px;
  color: var(--graphite);
  font-family: var(--font);
  font-size: 12px;
  font-weight: 900;
  text-align: center;
  white-space: nowrap;
}

.garage-search .search-submit,
.filters-actions .filters-search,
.filters-search {
  min-height: 52px;
  border-color: var(--copper) !important;
  background: var(--copper) !important;
  color: #fff !important;
  box-shadow: 0 14px 28px -22px rgba(30, 77, 52, 0.88) !important;
}

.garage-search .search-submit:hover,
.filters-actions .filters-search:hover,
.filters-search:hover {
  background: var(--copper-hover) !important;
}

.garage-search .search-submit svg,
.filters-search svg {
  width: 18px;
  height: 18px;
}

.browse-strip--garage {
  padding: 18px 0 36px;
  background: #f2f6f1;
}

.browse-strip--garage .browse-strip-inner {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) 34px;
  align-items: center;
  gap: 8px;
  padding: 9px;
  border: 1px solid var(--v4-line);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.88);
  box-shadow: 0 18px 40px -34px rgba(20, 26, 20, 0.56);
  backdrop-filter: blur(14px);
}

.browse-strip--garage .browse-strip-head {
  min-height: 52px;
  padding: 0 16px;
  border: 1px solid rgba(20, 26, 20, 0.1);
  border-radius: 11px;
  background: #e5eee3;
  color: var(--v4-green);
  white-space: nowrap;
}

.rail-arrow {
  display: grid;
  place-items: center;
  width: 34px;
  height: 52px;
  border: 1px solid var(--v4-line);
  border-radius: 10px;
  background: #fff;
  color: var(--v4-green);
  cursor: pointer;
}

.rail-arrow:hover {
  border-color: rgba(20, 26, 20, 0.28);
  background: #EDF3EC;
}

.rail-arrow svg {
  width: 17px;
  height: 17px;
}

.rail-arrow--prev svg {
  transform: rotate(180deg);
}

.browse-pills,
.catalog-quickbar-pills {
  display: flex;
  min-width: 0;
  overflow-x: auto;
  overflow-y: hidden;
  gap: 8px;
  scrollbar-width: none;
  cursor: grab;
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch;
}

.browse-pills::-webkit-scrollbar,
.catalog-quickbar-pills::-webkit-scrollbar {
  display: none;
}

.browse-pills.is-dragging,
.catalog-quickbar-pills.is-dragging {
  cursor: grabbing;
  user-select: none;
}

.browse-pill {
  flex: 0 0 clamp(150px, 16vw, 196px);
  min-height: 52px;
  scroll-snap-align: start;
  border-radius: 10px;
  background: #fff;
}

.browse-pill:hover {
  transform: translateY(-1px);
}

.listing-media {
  height: 218px;
  background: #e9efe7;
}

.listing-media img {
  width: 100%;
  height: 100%;
  padding: 0;
  object-fit: cover;
}

.listing-card:hover .listing-media img {
  transform: scale(1.025);
}

.listing-wants {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.wanted-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  width: max-content;
  color: var(--v4-green);
  font-family: var(--font);
  font-size: 11.5px;
  font-weight: 900;
  line-height: 1;
  letter-spacing: 0;
}

.wanted-label b {
  font: inherit;
}

.wanted-label svg {
  width: 15px;
  height: 15px;
  stroke-width: 2.4;
}

.trade-wants {
  display: grid;
  gap: 8px;
}

.catalog-quickbar {
  display: grid;
  /* Three children (prev arrow, pill strip, next arrow), so three tracks. The
     leading `auto` was left from a version that had a heading here; with four
     tracks the pill strip landed in the 34px arrow column and collapsed to two
     Georgian letters, while the 1fr track sat empty. */
  grid-template-columns: 34px minmax(0, 1fr) 34px;
  align-items: center;
  gap: 8px;
  min-width: 0;
  overflow: hidden;
  padding: 8px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.1);
}

.catalog-quickbar-count {
  min-height: 52px;
  padding: 8px 12px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
}

.catalog-quickbar-count strong,
.catalog-quickbar-count span {
  color: #fff;
}

.catalog-quickbar .rail-arrow {
  border-color: rgba(255, 255, 255, 0.16);
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
}

.catalog-quickbar .rail-arrow:hover {
  background: rgba(255, 255, 255, 0.18);
}

/* Light-bar styling. The white text + white-overlay values here were left over
   from a dark quickbar and rendered every chip at 1.07:1 against the light bar,
   i.e. invisible. This rule is last in the cascade, so it owns the colors. */
.catalog-quickbar-pills a {
  flex: 0 0 auto;
  min-height: 52px;
  padding: 0 18px;
  scroll-snap-align: start;
  border-color: var(--market-line);
  background: #fff;
  color: var(--market-ink);
  white-space: nowrap;
}

.catalog-quickbar-pills a:hover {
  border-color: var(--copper);
  background: #fff;
}

.catalog-quickbar-pills a.is-active {
  border-color: var(--copper);
  background: var(--copper);
  color: #fff;
}

.filters,
.filters-form,
.filter-field,
.filter-search,
.combo,
.combo-control,
.filter-range,
.results,
.catalog {
  min-width: 0;
  max-width: 100%;
}

.filters,
.filters-form {
  overflow-x: hidden;
}

.filters-form {
  grid-template-columns: minmax(0, 1fr) !important;
}

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

.filters-form select,
.filters-form input,
.filter-search input,
.combo-input {
  width: 100%;
  min-width: 0;
}

.filter-range {
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
}

.filter-range select,
.filter-range input {
  min-width: 0;
}

.filter-search,
.combo-control {
  overflow: hidden;
}

.combo-clear {
  flex: 0 0 auto;
}

.filters-head {
  grid-template-columns: minmax(0, 1fr) auto;
}

.filters-title-row,
.filters-title {
  min-width: 0;
}

.filters-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.filters-reset {
  width: 34px;
  min-width: 34px;
  padding: 0;
  gap: 0;
  font-size: 0;
}

.filters-reset svg {
  width: 16px;
  height: 16px;
}

.stat-cell,
.stat-cell strong {
  min-width: 0;
}

.stat-cell strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 980px) {
  .hero--garage .container {
    width: min(calc(100% - 28px), 100%);
  }

  .hero--garage .swap-stage {
    min-height: 310px;
    grid-template-columns: minmax(0, 1fr) 56px minmax(0, 1fr);
  }

  .hero--garage .hero-car img {
    width: min(126%, 560px);
  }

  .hero--garage .hero-car-left img,
  .hero--garage .hero-car-right img {
    transform: none;
  }

  .garage-search {
    margin-top: -32px;
  }

  .garage-search .swap-search-top,
  .garage-search .swap-search-bottom {
    grid-template-columns: 1fr;
  }

  .garage-search .swap-search-icon {
    justify-self: center;
    transform: rotate(90deg);
  }

  .garage-slider-value {
    justify-self: center;
  }

  .browse-strip--garage .browse-strip-inner,
  .catalog-quickbar {
    grid-template-columns: auto minmax(0, 1fr) 34px;
  }

  .browse-strip--garage .rail-arrow--prev,
  .catalog-quickbar .rail-arrow--prev {
    display: none;
  }
}

@media (min-width: 1281px) {
  .car-card {
    grid-template-columns: minmax(350px, 0.95fr) minmax(250px, 1fr) 278px;
  }
}

@media (max-width: 680px) {
  .header-cta {
    width: auto;
    min-width: 0;
    padding: 0 14px;
    gap: 6px;
    font-size: 0;
  }

  .header-cta svg {
    width: 18px;
    height: 18px;
  }

  .header-cta span {
    display: none;
  }

  .hero--garage {
    padding-top: 0;
  }

  .hero--garage .swap-stage {
    min-height: clamp(200px, 42vw, 300px);
    grid-template-columns: minmax(0, 1fr) 44px minmax(0, 1fr);
  }

  /* Anchor each car to the centre gap (like desktop) instead of letting a
     legacy ≤680 rule flip them so they bleed into each other and overlap. */
  .hero--garage .hero-car-left {
    justify-items: end;
  }

  .hero--garage .hero-car-right {
    justify-items: start;
  }

  .hero--garage .hero-car img {
    width: min(122%, 320px);
  }

  .hero--garage .swap-icon {
    width: 46px;
    height: 46px;
  }

  .hero--garage .hero-car-caption {
    min-width: 126px;
    padding: 7px 10px;
  }

  .hero--garage .hero-car-caption strong {
    font-size: 13px;
  }

  .hero--garage .hero-car-caption small {
    font-size: 10.5px;
  }

  .hero--garage .sound-btn {
    bottom: auto;
    top: 42%;
    width: 36px;
    height: 36px;
  }

  /* Cars are justified toward the centre gap, so their visible bodies sit
     off the column centre. Nudge each sound button onto its own car. */
  .hero--garage .hero-car-left .sound-btn {
    left: 42%;
    transform: translate(-50%, -50%);
  }

  .hero--garage .hero-car-right .sound-btn {
    left: 58%;
    transform: translate(-50%, -50%);
  }

  .garage-search {
    margin-top: -24px;
    padding: 8px;
    border-radius: 12px;
    gap: 8px;
  }

  .garage-search .search-field,
  .garage-search .swap-search-icon,
  .garage-search .search-submit {
    min-height: 46px;
  }

  .garage-search .swap-search-icon {
    display: none;
  }

  .garage-cash-slider {
    height: 24px;
  }

  .garage-slider-value {
    font-size: 11px;
  }

  .browse-strip--garage .browse-strip-inner {
    grid-template-columns: minmax(0, 1fr) 34px;
  }

  .browse-strip--garage .browse-strip-head {
    display: none;
  }

  .browse-pill {
    flex-basis: 148px;
  }

  .listing-media {
    height: 210px;
  }

  .catalog-quickbar {
    grid-template-columns: minmax(0, 1fr) 34px;
  }

  .catalog-quickbar-count {
    display: none;
  }
}


/* Landing: featured swap + trio (asymmetric listings layout). */
.featured-swap {
  display: grid;
  grid-template-columns: minmax(280px, 1.05fr) minmax(0, 1fr) 236px;
  gap: 22px;
  margin-bottom: 18px;
  padding: 14px;
  border: 1px solid var(--hairline);
  border-radius: 18px;
  background: var(--material-thick);
  backdrop-filter: var(--blur-card);
  -webkit-backdrop-filter: var(--blur-card);
  box-shadow: var(--shadow-card);
}

.featured-media {
  position: relative;
  display: block;
  overflow: hidden;
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), #e9efe7);
}

.featured-media img {
  width: 100%;
  height: 100%;
  min-height: 220px;
  object-fit: cover;
}

.featured-flag {
  position: absolute;
  top: 12px;
  left: 12px;
  padding: 5px 11px;
  border-radius: 7px;
  background: var(--copper);
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.02em;
}

.featured-body {
  display: grid;
  align-content: center;
  gap: 9px;
  min-width: 0;
  padding-block: 8px;
}

.featured-body h3 {
  margin: 0;
  font-size: 24px;
  font-weight: 800;
  letter-spacing: -0.015em;
  line-height: 1.15;
}

.featured-meta {
  margin: 0;
  color: var(--secondary);
  font-size: 14px;
  font-weight: 600;
}

.featured-wants {
  margin: 2px 0 0;
  color: var(--graphite);
  font-size: 14.5px;
  line-height: 1.4;
}

.featured-wants b {
  color: var(--copper);
  font-weight: 800;
}

.featured-swap .trade-cash {
  justify-self: start;
}

.featured-aside {
  display: grid;
  gap: 10px;
  align-content: center;
  padding-right: 6px;
}

.featured-aside .btn {
  min-height: 48px;
}

.listing-grid--trio {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (max-width: 980px) {
  .featured-swap {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .featured-media img {
    min-height: 190px;
  }

  .featured-aside {
    grid-template-columns: 1fr 1fr;
    padding-right: 0;
  }

  .listing-grid--trio {
    grid-template-columns: 1fr;
  }
}

/* Landing: quiet closing line. */
.closing-strip {
  padding: 26px 0 84px;
}

.closing-strip-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 16px 26px;
  text-align: center;
}

.closing-strip-inner p {
  margin: 0;
  color: var(--graphite);
  font-size: clamp(17px, 2vw, 21px);
  font-weight: 700;
  letter-spacing: -0.01em;
}

.closing-strip .btn {
  min-height: 48px;
  padding-inline: 24px;
}


/* ─── Buttons: plain, solid, readable ─────────────────────────────
   Deep-green fill, white text, a quiet lift on hover. No animation,
   no gradient tricks. The label is the point. */
.btn-liquid {
  border: 0;
  color: #fff;
  background: #1e4d34;
}

.btn-liquid:hover {
  background: #163a27;
  box-shadow: 0 10px 22px -14px rgba(30, 77, 52, 0.8);
}

.btn-liquid:active {
  transform: translateY(1px);
}

.garage-search .search-submit.btn-liquid,
.garage-search .search-submit.btn-liquid:hover {
  background: #1e4d34 !important;
}


/* ─── Brand chips (browse by make, logo + count → search) ───────── */
.brand-chip {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 11px;
  min-height: 54px;
  padding: 8px 15px 8px 11px;
  scroll-snap-align: start;
  border: 1px solid var(--market-line);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.9);
  color: var(--market-muted);
  transition: transform 180ms ease, border-color 180ms ease, background 180ms ease, color 180ms ease;
}

.brand-chip:hover {
  transform: translateY(-1px);
  border-color: rgba(30, 77, 52, 0.4);
  background: #fff;
  color: var(--copper);
}

.brand-chip--all {
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 1px;
  min-height: 52px;
  padding: 0 18px;
  border-radius: 11px;
  background: #e5eee3;
  color: var(--v4-green);
  white-space: nowrap;
}

.brand-chip--all strong {
  font-size: 15px;
  font-weight: 800;
}

.brand-chip--all small {
  font-size: 11.5px;
  font-weight: 700;
  color: var(--market-muted);
}

.brand-mark {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: #fff;
  border: 1px solid rgba(20, 26, 20, 0.08);
  color: var(--graphite);
  transition: border-color 180ms ease, box-shadow 180ms ease;
}

.brand-chip:hover .brand-mark {
  border-color: rgba(30, 77, 52, 0.28);
  box-shadow: 0 4px 12px -6px rgba(20, 26, 20, 0.3);
}

/* Real brand logos: contained, full color on a white tile. */
.brand-mark .brand-logo-img,
.brand-mark .brand-logo {
  width: 32px;
  height: 32px;
  object-fit: contain;
}

/* Quick-filter brand logos (cars sidebar) */
.quick-chip-brand-logo {
  width: 26px;
  height: 26px;
  object-fit: contain;
  margin-right: 6px;
}

/* Fallback icon for makes without a bundled logo. */
.brand-mark svg {
  width: 24px;
  height: 24px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.brand-chip-text {
  display: grid;
  gap: 1px;
  line-height: 1.1;
}

.brand-chip-text strong {
  color: var(--market-ink);
  font-size: 14px;
  font-weight: 800;
}

.brand-chip:hover .brand-chip-text strong {
  color: var(--copper);
}

.brand-chip-text small {
  font-size: 11.5px;
  font-weight: 700;
  color: var(--market-muted);
}

.brand-chip-sep {
  flex: 0 0 1px;
  align-self: center;
  width: 1px;
  height: 34px;
  margin: 0 4px;
  background: var(--market-line);
}


/* ─── Catalog: light, readable header (replaces dark hero + quickbar) ── */
.catalog-topbar {
  padding: 32px 0 6px;
}

.catalog-topbar-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px 20px;
}

.catalog-topbar-copy h1 {
  margin: 0;
  font-size: clamp(26px, 3vw, 36px);
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--graphite);
}

.catalog-topbar-copy p {
  margin: 7px 0 0;
  color: var(--secondary);
  font-size: 15px;
  font-weight: 600;
}

.catalog-topbar-copy strong {
  color: var(--copper);
  font-family: var(--font); font-variant-numeric: tabular-nums;
}

.catalog-topbar-cta {
  flex: 0 0 auto;
  min-height: 48px;
}

/* ─── Catalog card: simplified, readable ─────────────────────────── */
.car-card-specs {
  margin: 0;
  color: var(--secondary);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}

/* "· 23 დღის წინ" next to the city — quiet, secondary. */
.listing-age {
  margin-left: 4px;
  color: var(--muted);
  font-weight: 600;
}

.car-card-wants {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 8px;
  margin: 5px 0 0;
  color: var(--graphite);
  font-size: 14.5px;
  font-weight: 600;
  line-height: 1.4;
}

.car-card-wants span {
  color: var(--copper);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0;
}

.car-card-body {
  gap: 8px;
  padding: 14px 18px;
}

.car-card-aside {
  justify-content: flex-start;
  gap: 8px;
  padding: 14px 16px;
}

/* Cash difference stays visible but reads as a footnote next to the wanted
   car headline below — smaller pill, quieter icon. */
.car-card-aside .trade-cash {
  margin: 0;
  padding: 6px 9px;
  border-radius: 8px;
  font-size: 11.5px;
}

.car-card-aside .trade-cash svg {
  width: 22px;
  height: 22px;
  padding: 5px;
}

.car-card-aside .car-row-offer {
  width: 100%;
  min-height: 46px;
  margin-top: auto;
}

.car-card-aside .car-card-detail {
  width: 100%;
  min-height: 40px;
}

/* "ეძებს" gets its own tinted panel so the swap target reads before anything
   else in the aside — it's the question this whole product answers. It grows
   to fill the column's free height so the sought car sits centered instead
   of leaving dead space above the cash line and buttons. */
.aside-wants {
  display: flex;
  flex: 1;
  flex-direction: column;
  justify-content: center;
  min-height: 0;
  gap: 6px;
  padding: 12px 14px;
  border-radius: 10px;
  background: var(--accent-soft);
}

.aside-wants .wanted-label {
  color: var(--copper);
}

/* The headline: make + model (and year, when the owner set one — it's
   already baked into the label text) at near-title weight so the sought
   car reads at a glance, not as an afterthought next to the cash pill. */
.wants-primary {
  margin: 0;
  color: var(--graphite);
  font-size: 18px;
  font-weight: 800;
  line-height: 1.25;
  letter-spacing: -0.01em;
}

.wants-primary.is-match {
  color: var(--deep-green);
}

.aside-wants .wants-chips {
  gap: 6px;
}

.aside-wants .want-chip {
  padding: 3px 8px;
  border-color: transparent;
  background: var(--card-white);
  color: var(--secondary);
  font-size: 11px;
  font-weight: 700;
}

.aside-wants .car-card-wants--open {
  margin: 0;
  color: var(--secondary);
  font-size: 13px;
  font-weight: 700;
}


/* ─── Legal / long-form content pages (terms, privacy) ───────────── */
.legal-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--material-thin);
  backdrop-filter: var(--blur-chrome);
  -webkit-backdrop-filter: var(--blur-chrome);
  border-bottom: 1px solid rgba(60, 64, 56, 0.1);
}

.legal-header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 62px;
}

.legal-header .brand-word {
  font-size: 21px;
  font-weight: 800;
  letter-spacing: -0.015em;
  color: var(--graphite);
}

.legal-header .brand-word b { color: var(--copper); }

.legal-header a { color: var(--graphite); font-weight: 700; }

.legal-main {
  padding: 48px 0 72px;
}

.legal-doc {
  max-width: 720px;
  margin-inline: auto;
}

.legal-doc h1 {
  margin: 0 0 6px;
  font-size: clamp(28px, 4vw, 40px);
  font-weight: 800;
  letter-spacing: -0.02em;
}

.legal-updated {
  margin: 0 0 32px;
  color: var(--muted);
  font-size: 14px;
  font-weight: 600;
}

.legal-doc h2 {
  margin: 34px 0 10px;
  font-size: 20px;
  font-weight: 800;
  color: var(--graphite);
}

.legal-doc p,
.legal-doc li {
  color: var(--secondary);
  font-size: 16px;
  line-height: 1.7;
}

.legal-doc ul {
  margin: 0 0 8px;
  padding-left: 20px;
}

.legal-doc li { margin-bottom: 6px; }

.legal-doc a { color: var(--copper); font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }


/* ─── UX review polish pass ──────────────────────────────────────── */

/* (C) card year + featured meta in the mono data font */
.car-row-year,
.featured-meta {
  font-family: var(--font); font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}

/* (#1) tighten the hero → listings whitespace */
.browse-strip--garage { padding-bottom: 18px; }
.listings-section { padding-top: 22px; }

/* (#2) filter chips must never clip text mid-word */
.browse-pill {
  flex: 0 0 auto;
  min-width: 0;
  white-space: nowrap;
}
.browse-pill span,
.browse-pill small { white-space: nowrap; }

/* Offer CTA: give the swap glyph clear breathing room from the label. */
.featured-aside .btn-accent,
.car-row-offer,
.detail-offer {
  gap: 12px;
}

.featured-aside .btn-accent svg,
.car-row-offer svg,
.detail-offer svg {
  margin-right: 4px;
}
.featured-swap {
  border: 3px solid #2d6a4f;
  outline: 4px solid rgba(45, 106, 79, 0.12);
  outline-offset: 0;
  box-shadow:
    0 3px 8px -6px rgba(45, 106, 79, 0.75),
    inset 0 0 0 1px rgba(255, 255, 255, 0.86);
}

/* Sell page: active step is unmistakably filled and labeled. */
.sell-shell--v3 .sell-step-pip-num {
  border: 1px solid rgba(20, 26, 20, 0.22);
  background: #f8faf6;
  color: rgba(20, 26, 20, 0.58);
}

.sell-shell--v3 .sell-step-pip-label {
  color: rgba(20, 26, 20, 0.6);
  font-weight: 700;
}

.sell-shell--v3 .sell-step-pip.is-active .sell-step-pip-num {
  border-color: var(--deep-green);
  background: var(--deep-green);
  color: #fff;
  font-weight: 800;
}

.sell-shell--v3 .sell-step-pip.is-active .sell-step-pip-label {
  color: var(--graphite);
  font-weight: 900;
}

.sell-mode-chip.is-active {
  color: var(--graphite);
  font-weight: 900;
}

.sell-mode-chip.is-active span {
  background: var(--deep-green);
  color: #fff;
}

/* Vehicle detail: keep the footer tight to the content on short pages. */
#app:has(.detail-shell) {
  min-height: 0;
  display: block;
}

#app:has(.detail-shell) .detail-shell {
  flex: none;
}

#app:has(.detail-shell) .detail {
  padding-bottom: 16px;
}

/* (#8) photo-count pill on the detail hero image */
.detail-main-media { position: relative; }
.detail-photo-count {
  position: absolute;
  left: 12px;
  bottom: 12px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 11px;
  border-radius: 999px;
  background: rgba(16, 20, 15, 0.62);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.detail-photo-count svg { width: 14px; height: 14px; }

/* (#9) owner "სხვა განცხადებები" link */
.detail-owner { flex-wrap: wrap; }
.detail-owner-info { flex: 1 1 auto; min-width: 0; }
.owner-more {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 2px;
  color: var(--copper);
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
}
.owner-more svg { width: 15px; height: 15px; }
.owner-more:hover { text-decoration: underline; text-underline-offset: 3px; }

/* Modal/filter readability pass: solid surfaces + cleaner Georgian type. */
.modal {
  border-color: rgba(20, 26, 20, 0.16);
  background: #fff;
  box-shadow: 0 18px 44px -28px rgba(16, 20, 15, 0.55);
}

.modal-title {
  color: var(--graphite);
  /* Was the only --font-serif usage in the app: one serif heading among all-sans
     headings is an orphan, not a type system, and it cost a whole webfont. */
  font-family: var(--font);
  font-size: 23px;
  font-weight: 700;
  line-height: 1.28;
  letter-spacing: 0;
  text-wrap: balance;
}

.modal-eyebrow {
  color: rgba(30, 77, 52, 0.9);
  letter-spacing: 0;
  text-transform: none;
}

.offer-gate-text,
.mycar-note {
  color: rgba(22, 26, 21, 0.74);
}

.filters-form {
  border-color: rgba(20, 26, 20, 0.15);
  background: #fff;
  box-shadow: 0 18px 40px -36px rgba(20, 26, 20, 0.52);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.filters-form select,
.filters-form input,
.filter-search,
.filter-mycar,
.field input,
.field select,
.field textarea {
  background: #f8faf6;
}

.filters-form input::placeholder,
.filter-search input::placeholder,
.field input::placeholder,
.field textarea::placeholder {
  color: rgba(48, 58, 48, 0.72);
  opacity: 1;
}

.combo.is-disabled .combo-control {
  opacity: 1;
  filter: none;
  background: #eef3ec;
  color: rgba(48, 58, 48, 0.78);
}

.filter-label,
.filter-mycar-hint {
  color: rgba(48, 58, 48, 0.78);
}

.car-card-specs {
  color: rgba(22, 26, 21, 0.76);
  font-family: var(--font);
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: 0;
}

.car-row-year {
  border-color: rgba(20, 26, 20, 0.14);
  background: #eef3ec;
  color: var(--graphite);
  font-family: var(--font);
  font-weight: 800;
  letter-spacing: 0;
}

.listing-city,
.listing-age {
  color: rgba(22, 26, 21, 0.74);
  font-family: var(--font);
  font-weight: 700;
}

/* Car cards: requested visible font change across the full listing card. */
.car-card {
  background: #fff;
}

.car-card,
.car-card .car-row-title,
.car-card .card-title-link,
.car-card .car-row-year,
.car-card .listing-city,
.car-card .listing-age,
.car-card .car-card-specs,
.car-card .car-card-wants,
.car-card .wants-primary,
.car-card .trade-cash,
.car-card .trade-cash span,
.car-card .btn {
  font-family: var(--font);
  letter-spacing: 0;
}

.car-card .car-row-title {
  font-size: 22px;
  font-weight: 700;
  line-height: 1.2;
}

.car-card .car-row-year {
  font-size: 13px;
  font-weight: 700;
}

.car-card .listing-city,
.car-card .listing-age,
.car-card .car-card-specs,
.car-card .car-card-wants {
  font-size: 14px;
  font-weight: 600;
}

.car-card .car-card-wants span,
.car-card .trade-cash,
.car-card .btn {
  font-weight: 700;
}

/* Homepage search: searchable brand picker with auto-selection. */
.garage-search .search-brand-field {
  position: relative;
  overflow: visible;
  padding-right: 44px;
  z-index: 30;
}

.brand-picker-selected-logo {
  display: grid;
  flex: 0 0 auto;
  place-items: center;
  width: 30px;
  height: 30px;
  border: 1px solid rgba(20, 26, 20, 0.14);
  border-radius: 8px;
  background: #fff;
}

.brand-picker-selected-logo[hidden] {
  display: none;
}

.brand-picker-selected-logo .brand-logo-img {
  width: 20px;
  height: 20px;
  object-fit: contain;
}

.brand-picker-selected-logo svg {
  width: 18px;
  height: 18px;
  color: var(--copper);
}
.garage-search .have-search-field.has-selection,
.garage-search .search-brand-field.has-selection {
  border-color: rgba(30, 77, 52, 0.5);
  background: #fff;
}

/* Have field: mirror the brand picker so both open the same custom dropdown */
.garage-search .have-search-field {
  position: relative;
  overflow: visible;
  z-index: 29;
}

.garage-search .have-search-field.is-open,
.garage-search .search-brand-field.is-open {
  z-index: 60;
}

/* Keep the slider/city row behind an open panel so the dropdown doesn't
   visually collide with those controls. */
.garage-search .swap-search-bottom {
  position: relative;
  z-index: 10;
}

.garage-search .have-search-field input {
  min-width: 0;
  flex: 1 1 auto;
  background: transparent;
  border: 0;
  outline: none;
}

.garage-search .search-brand-field input[type="search"]::-webkit-search-cancel-button {
  display: none;
  appearance: none;
}

.brand-picker-clear {
  position: absolute;
  right: 10px;
  top: 50%;
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: transparent;
  color: rgba(22, 26, 21, 0.72);
  font-size: 20px;
  font-weight: 800;
  line-height: 1;
}

.brand-picker-clear:hover {
  background: rgba(30, 77, 52, 0.1);
  color: var(--graphite);
}

.brand-picker-clear:not([hidden]) {
  transform: translateY(-50%);
}

/* display:grid above would otherwise defeat the hidden attribute */
.brand-picker-clear[hidden] {
  display: none;
}

.brand-picker-panel {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  right: 0;
  z-index: 50;
  padding: 10px;
  border: 1px solid rgba(20, 26, 20, 0.14);
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 18px 34px -22px rgba(20, 26, 20, 0.45);
}

.brand-picker-panel[hidden] {
  display: none;
}

.brand-picker-list {
  display: grid;
  gap: 4px;
  max-height: 260px;
  overflow: auto;
  padding-right: 2px;
}

.brand-picker-option {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-height: 46px;
  width: 100%;
  padding: 5px 8px;
  border-radius: 9px;
  background: transparent;
  color: var(--graphite);
  text-align: left;
}

.brand-picker-option:hover,
.brand-picker-option:focus-visible,
.brand-picker-option.is-active {
  background: #f2f6f1;
}

/* Unfeatured makes carry no logo cell at all, so the label sits flush instead
   of indenting past an empty square. */
.brand-picker-option.is-textonly {
  grid-template-columns: minmax(0, 1fr);
  min-height: 40px;
  padding-left: 12px;
}

/* Featured marks pinned above the list */
.brand-featured {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 6px;
  padding: 4px 4px 10px;
  margin-bottom: 4px;
  border-bottom: 1px solid var(--market-line);
}

.brand-featured-tile {
  display: grid;
  place-items: center;
  aspect-ratio: 1;
  padding: 4px;
  border: 1px solid rgba(20, 26, 20, 0.14);
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
  transition: border-color 140ms ease, background 140ms ease;
}

.brand-featured-tile:hover,
.brand-featured-tile:focus-visible {
  border-color: var(--copper);
  background: #f2f6f1;
}

.brand-featured-tile .brand-logo-img {
  width: 100%;
  height: 100%;
  max-width: 38px;
  max-height: 38px;
  object-fit: contain;
}

/* "მარკები" / "მოდელები" section headers inside the suggestion list */
.brand-picker-group {
  padding: 8px 8px 3px;
  color: var(--graphite);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
}

.brand-picker-name {
  overflow: hidden;
  color: var(--graphite);
  font-size: 14px;
  font-weight: 700;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.brand-picker-panel.is-empty .brand-picker-list {
  display: none;
}

.brand-picker-panel.is-empty::before {
  content: "ვერ მოიძებნა";
  display: block;
  padding: 12px 8px 14px;
  color: rgba(48, 58, 48, 0.72);
  font-size: 13px;
  font-weight: 700;
}

/* Desktop: drop DOWN like a normal combobox (myauto-style); the field's
   z-index keeps the panel above the city/slider row below it. */

@media (max-width: 680px) {
  /* Mobile: the two search fields stack, so let the dropdown float above
     the field below with a strong shadow instead of pushing it away. Outside
     tap dismisses the panel. */
  .garage-search .have-search-field,
  .garage-search .search-brand-field {
    position: relative;
    overflow: visible;
  }

  .garage-search .have-search-field.is-open,
  .garage-search .search-brand-field.is-open {
    z-index: 40;
  }

  .garage-search .brand-picker-panel {
    box-shadow: 0 24px 44px -18px rgba(20, 26, 20, 0.55);
  }

  .brand-picker-list {
    max-height: 224px;
  }
}

/* ─── Browse strip v2: no "all" chip, no counts — bold CTA-style pills ── */
.browse-strip--garage .browse-strip-inner {
  grid-template-columns: 34px minmax(0, 1fr) 34px;
}

.brand-chip {
  gap: 10px;
  min-height: 48px;
  padding: 5px 20px 5px 7px;
  border-radius: var(--radius-sm);
  background: #fff;
}

.brand-mark {
  width: 36px;
  height: 36px;
}

.brand-chip-text strong {
  font-size: 15px;
  font-weight: 800;
  letter-spacing: 0.01em;
}

.browse-pill {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  min-height: 48px;
  padding: 0 20px;
  border: 1px solid var(--market-line);
  border-radius: var(--radius-sm);
  background: #fff;
}

.browse-pill span {
  font-size: 15px;
  font-weight: 800;
  letter-spacing: 0.01em;
}

/* Quiet hover: no lift, no fill animation — just a clear green border. */
.brand-chip:hover,
.brand-chip:focus-visible,
.browse-pill:hover,
.browse-pill:focus-visible {
  transform: none;
  border-color: var(--copper);
  background: #fff;
}

.brand-chip:hover .brand-chip-text strong,
.brand-chip:focus-visible .brand-chip-text strong,
.browse-pill:hover span,
.browse-pill:focus-visible span {
  color: var(--copper);
}

@media (max-width: 980px) {
  .browse-strip--garage .browse-strip-inner {
    grid-template-columns: minmax(0, 1fr) 34px;
  }
}

/* When chips all fit, drop the arrows and shrink the card to content width. */
.browse-strip--garage .browse-strip-inner.rail-no-overflow {
  grid-template-columns: minmax(0, 1fr);
  width: max-content;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.rail-no-overflow .rail-arrow {
  display: none;
}

/* ─── Styled select popup (replaces the OS dropdown on fine pointers) ── */
/* Layer: above modals (220), below toasts (2000). */
.aselect-panel {
  position: fixed;
  z-index: 1500;
  display: grid;
  gap: 2px;
  padding: 6px;
  overflow: auto;
  overscroll-behavior: contain;
  border: 1px solid rgba(20, 26, 20, 0.14);
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 18px 34px -18px rgba(20, 26, 20, 0.45);
}

.aselect-option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  min-height: 40px;
  padding: 6px 10px;
  border-radius: 8px;
  background: transparent;
  color: var(--graphite);
  font-family: var(--font);
  font-size: 13.5px;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
}

.aselect-option:hover,
.aselect-option.is-active {
  background: #f2f6f1;
}

.aselect-option.is-selected {
  color: var(--copper);
  font-weight: 800;
}

.aselect-option svg {
  flex: 0 0 auto;
  width: 15px;
  height: 15px;
}

.aselect-option[disabled] {
  opacity: 0.45;
  cursor: default;
}

/* The trigger keeps native styling; just make the open state visible. */
select[data-aselect][aria-expanded="true"] {
  border-color: rgba(30, 77, 52, 0.45);
}

/* ─── Touch comfort: extend small controls' hit areas, keep visuals ── */
.sound-btn::after,
.save-btn::after,
.brand-picker-clear::after {
  content: "";
  position: absolute;
  inset: -8px;
}

.combo-clear {
  position: relative;
}

.combo-clear::after {
  content: "";
  position: absolute;
  inset: -8px;
}

.text-link {
  padding-block: 10px;
  margin-block: -10px;
}

/* Sell form: anchor for the vehicle-search suggestion dropdown */
.field--vehicle-search {
  position: relative;
}

/* Even heading rag in Georgian, which wraps long compound words */
h1, h2, h3 {
  text-wrap: balance;
}

/* ─── Home: liquidity proof line + how-it-works sequence ── */
.hero-proof {
  order: 3; /* .hero-inner is ordered flex; keep the proof under the search */
  margin: 12px auto 0;
  width: min(100%, 1160px);
  color: var(--market-muted);
  font-size: 13px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.hero-proof:empty {
  display: none;
}

.how-strip {
  padding: 48px 0 26px;
  background: var(--market-bg);
}

.how-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(20px, 4vw, 48px);
  margin: 22px 0 0;
  padding: 0;
  list-style: none;
}

.how-step {
  display: flex;
  gap: 14px;
  align-items: flex-start;
}

.how-num {
  display: grid;
  flex: 0 0 auto;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--accent-soft);
  color: var(--copper);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 16px;
  font-weight: 700;
}

.how-copy strong {
  display: block;
  margin-bottom: 4px;
  color: var(--market-ink);
  font-size: 16px;
  font-weight: 800;
}

.how-copy p {
  margin: 0;
  max-width: 34ch;
  color: var(--market-muted);
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.55;
}

@media (max-width: 760px) {
  .how-steps {
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
  }

  .how-strip {
    padding: 34px 0 14px;
  }
}

/* ─── Header tools: unmistakable active nav, currency, notifications ── */
.site-nav a {
  padding: 8px 14px;
  border-radius: 999px;
  transition: background 160ms ease, color 160ms ease;
}

.site-nav a.is-active {
  background: #e5eee3;
  color: var(--market-ink);
  font-weight: 800;
}

.site-nav a.is-active::after {
  display: none; /* the pill replaces the old underline */
}

.currency-switch {
  display: inline-flex;
  flex: 0 0 auto;
  padding: 3px;
  border: 1px solid var(--market-line);
  border-radius: 999px;
  background: #fff;
}

.currency-switch button {
  display: grid;
  place-items: center;
  min-width: 34px;
  height: 30px;
  border-radius: 999px;
  background: transparent;
  color: var(--market-muted);
  font-size: 14px;
  font-weight: 800;
  cursor: pointer;
  transition: background 160ms ease, color 160ms ease;
}

.currency-switch button.is-active {
  background: var(--copper);
  color: #fff;
}

.notify-wrap {
  position: relative;
  flex: 0 0 auto;
}

.notify-btn {
  position: relative;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 1px solid var(--market-line);
  border-radius: 999px;
  background: #fff;
  color: var(--market-ink);
  cursor: pointer;
}

.notify-btn:hover {
  border-color: rgba(30, 77, 52, 0.4);
}

.notify-btn svg {
  width: 19px;
  height: 19px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.notify-badge {
  position: absolute;
  top: -3px;
  right: -3px;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--copper);
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  line-height: 18px;
  text-align: center;
}

.notify-panel {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  z-index: 120; /* above the sticky header, below select popups */
  width: min(340px, calc(100vw - 28px));
  padding: 6px;
  border: 1px solid rgba(20, 26, 20, 0.14);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 22px 44px -22px rgba(20, 26, 20, 0.5);
}

.notify-head {
  padding: 10px 12px 8px;
  color: var(--market-ink);
  font-size: 14px;
  font-weight: 800;
}

.notify-empty {
  margin: 0;
  padding: 4px 12px 12px;
  color: var(--market-muted);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.55;
}

.notify-cta {
  width: calc(100% - 24px);
  margin: 0 12px 12px;
}

.notify-item {
  display: grid;
  gap: 2px;
  padding: 10px 12px;
  border-radius: 10px;
}

.notify-item:hover {
  background: #f2f6f1;
}

.notify-item-title {
  color: var(--market-ink);
  font-size: 13.5px;
  font-weight: 700;
}

.notify-item-meta {
  color: var(--market-muted);
  font-size: 12.5px;
  font-weight: 600;
}

.notify-all {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 4px;
  padding: 10px;
  border-top: 1px solid var(--market-line);
  color: var(--copper);
  font-size: 13px;
  font-weight: 800;
}

.notify-all svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

@media (max-width: 680px) {
  /* Free header space: the add-CTA collapses to its "+" glyph, which is the
     standard marketplace pattern, so the currency switch stays available. */
  .header-cta span {
    display: none;
  }

  .header-cta {
    min-width: 44px;
    padding-inline: 12px;
  }

  .currency-switch {
    padding: 2px;
  }

  .currency-switch button {
    min-width: 30px;
    height: 28px;
    font-size: 13px;
  }
}

@media (max-width: 520px) {
  /* Anchored dropdown would run off the left edge on phones — pin the panel
     to the viewport just below the header instead. */
  .notify-panel {
    position: fixed;
    top: 66px;
    right: 14px;
    left: 14px;
    width: auto;
    max-height: min(70vh, 420px);
    overflow: auto;
  }
}

/* Demo account entry in the auth modal — quiet text button, not a CTA */
.auth-demo-btn {
  display: block;
  width: 100%;
  margin-top: 10px;
  padding: 10px;
  border-radius: 9px;
  background: transparent;
  color: var(--market-muted);
  font-size: 13px;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

.auth-demo-btn:hover {
  color: var(--copper);
  background: #f2f6f1;
}

@media (max-width: 480px) {
  /* With currency + bell in the row the wordmark no longer fits — keep the
     brand tile, drop the word, make the CTA icon-only, and never let the
     tile get flex-squeezed. */
  .site-header .brand {
    flex: 0 0 auto;
  }

  .site-header .brand-word {
    display: none;
  }

  .header-cta::after {
    content: none;
  }

  .header-cta {
    min-width: 44px;
    padding-inline: 0;
  }
}

/* ─── Filters: count beside the heading, plain action button ── */
.filters-count {
  display: inline-grid;
  place-items: center;
  min-width: 24px;
  height: 22px;
  margin-left: 8px;
  padding: 0 7px;
  border-radius: 999px;
  background: var(--accent-soft);
  color: var(--copper);
  font-size: 12.5px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.car-card-wants--open {
  color: var(--market-muted);
  font-weight: 700;
}

/* ─── About page ── */
.about-hero {
  padding: 56px 0 20px;
  background: var(--market-bg);
}

.about-hero h1 {
  max-width: 22ch;
  font-size: clamp(28px, 4.4vw, 44px);
  font-weight: 800;
  letter-spacing: -0.02em;
}

.about-hero p {
  max-width: 58ch;
  margin-top: 12px;
  color: var(--market-muted);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.6;
}

.about-body {
  display: grid;
  gap: 34px;
  padding: 26px 0 56px;
}

.about-block h2 {
  margin-bottom: 8px;
  font-size: 20px;
  font-weight: 800;
}

.about-block p {
  max-width: 68ch;
  color: var(--market-muted);
  font-size: 14.5px;
  font-weight: 600;
  line-height: 1.65;
}

.about-mail {
  color: var(--copper);
  font-weight: 800;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Keyboard focus must be visible on every form control (accent halo,
   per the design system's input focus treatment). */
select[data-aselect]:focus-visible,
.filters-form select:focus-visible,
.filters-form input:focus-visible,
.field select:focus-visible,
.field input:focus-visible,
.field textarea:focus-visible,
.results-sort select:focus-visible {
  outline: none;
  border-color: rgba(30, 77, 52, 0.45);
  box-shadow: 0 0 0 3px var(--accent-soft);
}


/* ─── Batch: slider, filter logos, cash-amount, how-it-works icons ── */

/* Bigger, numbered hero cash slider (on the white search panel) */
.hero-cash-slider {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}
.hero-cash-slider .slider-edge {
  flex: 0 0 auto;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0;
  color: var(--secondary);
  white-space: nowrap;
}
.hero-cash-slider .cash-slider {
  flex: 1 1 auto;
  min-width: 120px;
  height: 10px;
  -webkit-appearance: none;
  appearance: none;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(178,58,46,0.28), rgba(30,77,52,0.14) 50%, rgba(46,119,65,0.32));
  outline-offset: 4px;
}
.hero-cash-slider .cash-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--copper);
  border: 4px solid #fff;
  box-shadow: 0 3px 10px rgba(16,20,15,0.3);
  cursor: pointer;
}
.hero-cash-slider .cash-slider::-moz-range-thumb {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--copper);
  border: 4px solid #fff;
  box-shadow: 0 3px 10px rgba(16,20,15,0.3);
  cursor: pointer;
}
.hero-cash-slider .slider-value {
  flex: 0 0 auto;
  min-width: 132px;
  text-align: center;
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-size: 14px;
  font-weight: 700;
  color: var(--graphite);
}

/* Brand logos in the make filter dropdown */
.combo-option-label {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
}
/* Featured marks: one row pinned to the top of the make dropdown. Logos appear
   here only; every row in the list below is text, these five included. */
.combo-featured {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 5px;
  margin: 0 0 5px;
  padding: 2px 2px 8px;
  border-bottom: 1px solid var(--market-line);
  list-style: none;
}

.combo-featured-tile {
  display: grid;
  place-items: center;
  aspect-ratio: 1;
  /* Tight: the mark should fill the tile, not float in a white field. */
  padding: 3px;
  border: 1px solid rgba(20, 26, 20, 0.12);
  border-radius: 8px;
  background: #fff;
  cursor: pointer;
  transition: border-color 140ms ease, background 140ms ease;
}

.combo-featured-tile:hover,
.combo-featured-tile:focus-visible {
  border-color: var(--copper);
  background: #f2f6f1;
}

.combo-featured-tile img {
  width: 100%;
  height: 100%;
  max-width: 34px;
  max-height: 34px;
  object-fit: contain;
}

/* Cash-amount filter field + currency tag */
.filter-cash-amount[hidden] { display: none; }
.cash-cur-tag {
  display: inline-block;
  margin-left: 4px;
  color: var(--copper);
  font-family: var(--font); font-variant-numeric: tabular-nums;
  font-weight: 700;
}

/* How-it-works step icons (replaced the 1/2/3 numbers) */
.how-icon {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 46px;
  height: 46px;
  border-radius: 12px;
  background: var(--accent-soft);
  color: var(--copper);
}
.how-icon svg { width: 22px; height: 22px; }

/* ─── Vehicle detail: breadcrumb, gallery tools, price position, sticky CTA ── */

.crumbs {
  margin: 0 0 14px;
  font-size: 12.5px;
}

.crumbs ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.crumbs li + li::before {
  content: "/";
  margin-right: 6px;
  color: var(--muted);
  opacity: 0.6;
}

.crumbs a {
  color: var(--secondary);
  font-weight: 600;
  text-decoration: none;
}

.crumbs a:hover {
  color: var(--deep-green);
  text-decoration: underline;
}

.crumbs [aria-current="page"] {
  color: var(--graphite);
  font-weight: 700;
}

/* Floating gallery toolbar */
.gallery-tools {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 3;
  display: grid;
  gap: 8px;
}

.gallery-tool,
.gallery-tools .save-btn {
  position: relative;
  top: auto;
  right: auto;
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  padding: 0;
  border: 1px solid rgba(122, 138, 122, 0.55);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.9);
  color: var(--deep-green);
  cursor: pointer;
  transition: background 140ms ease, transform 140ms ease;
}

@supports (backdrop-filter: blur(10px)) {
  .gallery-tool,
  .gallery-tools .save-btn {
    background: rgba(255, 255, 255, 0.72);
    backdrop-filter: blur(10px) saturate(150%);
  }
}

.gallery-tool:hover,
.gallery-tools .save-btn:hover {
  background: #ffffff;
  transform: translateY(-1px);
}

.gallery-tool svg {
  width: 17px;
  height: 17px;
}

.gallery-tool:focus-visible,
.gallery-tools .save-btn:focus-visible {
  outline: 2px solid var(--deep-green);
  outline-offset: 2px;
}

/* Price position bar */
.price-pos {
  display: grid;
  gap: 7px;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--warm-ivory);
}

.price-pos-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}

.price-pos-label {
  font-size: 13.5px;
  font-weight: 800;
}

.price-pos--low .price-pos-label { color: var(--positive, #2e7741); }
.price-pos--high .price-pos-label { color: var(--negative, #b23a2e); }

.price-pos-note {
  color: var(--muted);
  font-size: 11.5px;
  font-weight: 600;
}

.price-pos-track {
  position: relative;
  height: 6px;
  border-radius: 999px;
  background: linear-gradient(90deg, #2e7741 0%, #c9a227 52%, #b23a2e 100%);
  opacity: 0.85;
}

.price-pos-marker {
  position: absolute;
  top: 50%;
  width: 12px;
  height: 12px;
  border: 2.5px solid #ffffff;
  border-radius: 50%;
  background: var(--graphite);
  box-shadow: 0 1px 4px rgba(16, 20, 15, 0.4);
  transform: translate(-50%, -50%);
}

.price-pos-scale {
  display: flex;
  justify-content: space-between;
  color: var(--muted);
  font-size: 10.5px;
  font-weight: 700;
}

/* Sticky CTA bar — appears once the gallery scrolls away */
.detail-stickybar {
  position: fixed;
  top: 64px;
  left: 0;
  right: 0;
  z-index: 95;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 10px 30px -24px rgba(16, 20, 15, 0.55);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-8px);
  transition: opacity 200ms ease, transform 200ms ease, visibility 200ms;
}

@supports (backdrop-filter: blur(18px)) {
  .detail-stickybar {
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(18px) saturate(160%);
  }
}

.detail-stickybar.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.detail-stickybar-inner {
  display: flex;
  align-items: center;
  gap: 14px;
}

.detail-stickybar-thumb {
  flex: 0 0 auto;
  width: 46px;
  height: 34px;
  border-radius: 7px;
  object-fit: cover;
}

.detail-stickybar-copy {
  display: grid;
  gap: 1px;
  min-width: 0;
}

.detail-stickybar-copy strong {
  font-size: 14px;
  font-weight: 800;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.detail-stickybar-copy strong span {
  color: var(--secondary);
  font-weight: 600;
}

.detail-stickybar-copy small {
  color: var(--secondary);
  font-size: 11.5px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.detail-stickybar-cash {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-left: auto;
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
}

.detail-stickybar-cash svg {
  width: 15px;
  height: 15px;
}

.detail-stickybar-cta {
  flex: 0 0 auto;
  gap: 8px;
  min-height: 40px;
  padding: 0 18px;
}

@media (max-width: 720px) {
  .detail-stickybar-copy small,
  .detail-stickybar-cash {
    display: none;
  }
  .detail-stickybar-cta {
    margin-left: auto;
  }
}

/* Image lightbox */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: grid;
  place-items: center;
  padding: 32px;
  background: rgba(12, 16, 12, 0.86);
}

.lightbox img {
  max-width: min(1100px, 100%);
  max-height: 100%;
  border-radius: 12px;
  object-fit: contain;
}

.lightbox-close {
  position: absolute;
  top: 20px;
  right: 24px;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.16);
  color: #ffffff;
  font-size: 26px;
  line-height: 1;
  cursor: pointer;
}

.lightbox-close:hover {
  background: rgba(255, 255, 255, 0.28);
}

@media (prefers-reduced-motion: reduce) {
  .detail-stickybar {
    transition: opacity 120ms ease, visibility 120ms;
    transform: none;
  }
  .gallery-tool:hover,
  .gallery-tools .save-btn:hover {
    transform: none;
  }
}

/* ─── Label normalization ───────────────────────────────────────────────
   A tiny uppercase, wide-tracked, muted-gray label was used as default
   scaffolding across the app. Georgian script has no uppercase, so
   text-transform did nothing to the words themselves while the tracking
   loosened them and the muted grey pushed contrast down — noise with no
   hierarchy gained. Normal case, no tracking, readable ink. */
.stat-cell span,
.brand-picker-group,
.filter-group-head,
.listing-wants span,
.wanted-label,
.car-card-wants span,
.car-card-value span,
.offer-trade-side,
.sell-subgroup-title,
.swap-plan-item span,
.offer-side small {
  letter-spacing: 0;
  text-transform: none;
}

.listing-wants span,
.wanted-label,
.car-card-wants span,
.car-card-value span,
.offer-trade-side,
.offer-side small {
  color: var(--secondary);
  font-size: 11.5px;
}

.sell-subgroup-title {
  color: var(--graphite);
  font-size: 13px;
}

/* Label stays black as requested, but must not compete with its own value.
   Hierarchy now comes from weight and size rather than from greying the
   label out. */
.stat-cell span {
  font-weight: 600;
}

.stat-cell strong {
  font-size: 13.5px;
  font-weight: 800;
  color: var(--graphite);
}

/* .detail-panel .stat-cell strong (0,3,0) outranks the bare element rule, so
   the detail page needs the matching specificity to pick up the value size. */
.detail-panel .stat-cell strong {
  font-size: 13px;
  font-weight: 800;
}


/* ═══════════════════════════════════════════════════════════════════════
   MOBILE APP SHELL
   A phone should not get the desktop layout scaled down. Below 768px the
   site takes on app conventions: a fixed bottom tab bar for the primary
   destinations, thumb-sized targets, and compact rows instead of the tall
   desktop cards. Everything here is scoped to the breakpoint, so the
   desktop layout is untouched.
   ═══════════════════════════════════════════════════════════════════════ */

/* Tab bar is phone-only; the header nav covers larger screens. */
.tabbar { display: none; }

@media (max-width: 1023px) {
  :root {
    /* Height of the bar plus the home-indicator inset, so page content and
       any sticky element can reserve exactly the right amount of space. */
    --tabbar-h: calc(58px + env(safe-area-inset-bottom, 0px));
  }

  /* Liquid glass: a genuinely translucent layer that refracts the content
     scrolling under it, rather than a near-opaque bar with a token blur.
     Heavy saturation + brightness is what gives the frosted-glass look
     colour instead of grey, and the hairline highlight on top is the
     "edge of the pane" that sells it as a physical surface. */
  .tabbar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 90;
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    align-items: center;
    height: var(--tabbar-h);
    padding-bottom: env(safe-area-inset-bottom, 0px);
    background: rgba(255, 255, 255, 0.62);
    backdrop-filter: blur(28px) saturate(190%) brightness(1.06);
    -webkit-backdrop-filter: blur(28px) saturate(190%) brightness(1.06);
    border-top: 1px solid rgba(255, 255, 255, 0.7);
    box-shadow:
      inset 0 1px 0 rgba(255, 255, 255, 0.85),
      0 -8px 24px -18px rgba(15, 20, 15, 0.5);
  }

  /* Without backdrop-filter the 0.62 alpha would let text show through, so
     fall back to a solid bar. */
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    .tabbar { background: rgba(255, 255, 255, 0.97); }
  }

  /* Fixed row heights so every icon sits on one baseline and every label on
     another. With auto rows the raised primary tab dragged its own label out
     of line with the other four. */
  .tabbar-item {
    display: grid;
    grid-template-rows: 26px 12px;
    justify-items: center;
    align-content: center;
    gap: 4px;
    height: 100%;
    min-height: 44px;
    color: var(--market-muted);
    text-decoration: none;
    -webkit-tap-highlight-color: transparent;
  }

  .tabbar-icon {
    display: grid;
    place-items: center;
  }

  .tabbar-icon svg {
    width: 21px;
    height: 21px;
    stroke-width: 1.9;
  }

  .tabbar-label {
    font-size: 10px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0;
  }

  .tabbar-item.is-active { color: var(--copper); }
  .tabbar-item.is-active .tabbar-icon svg { stroke-width: 2.3; }
  .tabbar-item:active { background: rgba(30, 77, 52, 0.06); }

  /* The "add listing" tab is the conversion action: a filled disc, the one
     element in the bar that reads as a button rather than a destination. */
  /* Raised disc, centred on the icon row rather than nudged with a negative
     margin: translate keeps it out of layout, so the label below stays on the
     same baseline as its neighbours. */
  .tabbar-item--primary .tabbar-icon {
    width: 46px;
    height: 46px;
    border-radius: 50%;
    background: var(--copper);
    color: #fff;
    transform: translateY(-9px);
    box-shadow:
      0 8px 18px -6px rgba(30, 77, 52, 0.55),
      inset 0 1px 0 rgba(255, 255, 255, 0.25);
  }

  /* Ring of bar colour around the disc so it reads as sitting on top of the
     glass rather than punched through it. */
  .tabbar-item--primary .tabbar-icon::before {
    content: "";
    position: absolute;
    inset: -4px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.55);
    z-index: -1;
  }

  .tabbar-item--primary { position: relative; }
  .tabbar-item--primary .tabbar-icon { position: relative; }
  .tabbar-item--primary .tabbar-label { color: var(--copper); }
  .tabbar-item--primary:active .tabbar-icon { transform: translateY(-9px) scale(0.94); }

  .tabbar-item--primary .tabbar-icon svg { width: 20px; height: 20px; stroke-width: 2.4; }
  .tabbar-item--primary.is-active .tabbar-icon { background: var(--copper-hover); }

  /* Clear the bar so nothing sits under it. */
  body { padding-bottom: var(--tabbar-h); }
  .site-footer { margin-bottom: 0; }

  /* Sticky page furniture has to sit above the bar, not behind it. These need
     the shell-scoped selectors: .sell-shell--lite .sell-actions pins itself at
     bottom:8px with higher specificity, which would park the publish button
     underneath the tab bar. .detail-stickybar is deliberately absent: it is a
     top bar (top:64px), and giving it a bottom too stretched it to 682px. */
  .sticky-cta,
  .filters-actions,
  .sell-shell--v3 .sell-actions,
  .sell-shell--lite .sell-actions,
  .sell--stepper .sell-actions {
    bottom: calc(var(--tabbar-h) + 8px);
  }

  /* The header keeps the brand and the account control only: the nav and the
     "add car" CTA are both in the tab bar now, so repeating them crowds a
     375px header for nothing. */
  .header-cta { display: none; }
  .site-header .header-inner { gap: 10px; }

  /* Cards: 618px on a 812px screen meant one listing filled the viewport.
     A horizontal row shows three to four at a glance, which is what a
     marketplace app does. */
  .car-list.view-list .car-card,
  .car-list.view-grid .car-card {
    grid-template-columns: 132px minmax(0, 1fr);
    align-items: stretch;
    min-height: 0;
    gap: 0;
  }

  .car-card-media {
    height: 100%;
    min-height: 118px;
    border-radius: 12px 0 0 12px;
  }

  .car-card-body { padding: 10px 12px; gap: 5px; justify-content: center; }

  /* Long names ("BENTLEY ARMOURED ARNAGE") wrapped to three lines. The class
     here is .car-row-title, not .car-card-title, which is why an earlier clamp
     had no effect. Keep the year on the first line with the name. */
  .car-card .car-row-title {
    display: flex;
    /* nowrap: with wrap, a long name pushed the year badge onto a third line
       and the title block grew to 67px. The name truncates instead. */
    flex-wrap: nowrap;
    align-items: flex-start;
    gap: 6px;
    font-size: 15px;
    line-height: 1.25;
  }

  .car-card .card-title-link {
    flex: 1 1 auto;
    min-width: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  .car-card .car-row-year { flex: 0 0 auto; }

  /* One line of specs, not a wrapping block. */
  .car-card .spec-strip {
    flex-wrap: nowrap;
    overflow: hidden;
    gap: 10px;
  }

  .car-card .spec-chip { white-space: nowrap; }

  /* The desktop card's third column becomes a footer strip under the body. */
  .car-card-aside {
    grid-column: 1 / -1;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 12px;
    border-top: 1px solid var(--market-line);
    border-left: 0;
  }

  /* Secondary detail is noise at this width; the row must stay scannable.
     The spec strip goes entirely: fuel, gearbox and mileage are things you
     check once you are interested, and they cost a whole line on every row. */
  .car-card .listing-meta,
  .car-card .spec-strip,
  .car-card .listing-age,
  .car-card-owner { display: none; }

  /* A list row navigates; the offer and save actions live on the detail
     screen. Repeating two buttons on every row cost ~95px each and pushed
     the next listing off the fold. */
  .car-card .aside-actions { display: none; }

  /* One line: what they want, and who pays the difference. Those are the two
     facts a swap listing turns on, so they stay; stacking them cost ~40px on
     every row for no added information. */
  .car-card-aside {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 8px 12px;
  }

  .car-card-aside .aside-wants { flex: 1 1 auto; min-width: 0; }
  .car-card-aside .trade-cash { flex: 0 1 auto; min-width: 0; white-space: nowrap; }

  /* The alternate wants ("mercedes benz", "bmw 528", "+2") were each squeezed
     to 18px and unreadable. On a phone the row states the primary want; the
     rest is on the detail screen. */
  .car-card .wants-chips { display: none; }

  .car-card .wanted-label { flex: 0 0 auto; }
  .car-card .wanted-label svg { width: 13px; height: 13px; }

  /* One truncated line instead of a 37px-wide column wrapping to 45px. */
  .car-card .wants-primary {
    margin: 0;
    min-width: 0;
    font-size: 13.5px;
    line-height: 1.3;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* Wanted car on one truncated line, so it states the swap without wrapping
     to three lines the way the desktop stacked layout does. */
  .car-card-aside .aside-wants {
    flex-direction: row;
    align-items: baseline;
    gap: 6px;
    min-width: 0;
  }

  .car-card-aside .aside-wants strong,
  .car-card-aside .aside-wants span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  /* The heart sits on the photo; 36px is under the tap floor. */
  .car-card .save-btn {
    width: 44px;
    height: 44px;
  }

  /* Thumb-sized controls. 44px is the floor, not the target. */
  .btn,
  .filters-toggle,
  .view-btn,
  .results-sort select,
  .quick-chip,
  .catalog-quickbar-pills a { min-height: 44px; }

  .site-header .currency-switch button { min-height: 36px; min-width: 40px; }

  /* Modals become bottom sheets: full width, rounded top, thumb-reachable
     actions. A centred dialog on a phone wastes the edges and puts the
     buttons mid-screen. */
  .modal-overlay { align-items: flex-end; padding: 0; }

  .modal-card,
  .offer-modal {
    width: 100%;
    max-width: 100%;
    max-height: 92vh;
    border-radius: 18px 18px 0 0;
    padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
  }

  /* Grab handle, the affordance that says "this sheet came from the bottom". */
  .modal-card::before {
    content: "";
    display: block;
    width: 36px;
    height: 4px;
    margin: 0 auto 12px;
    border-radius: 2px;
    background: rgba(20, 26, 20, 0.18);
  }

  /* Full-bleed sections read as app screens rather than cards on a page. */
  .catalog-quickbar { border-radius: 0; border-left: 0; border-right: 0; }

  /* ---- Hero ----
     Cars were set to 122% of their column for a deliberate bleed. On a 375px
     phone that column is 147px, so each car ran ~18px past the screen edge and
     the pair read as cropped rather than staged. Contain them. */
  .hero--garage .hero-car img,
  .hero-car img {
    width: 100%;
    max-width: 100%;
  }

  /* The car container is exactly the image height, so an absolutely-positioned
     button inside it could only ever sit on the bodywork. Park it just below,
     centred under its own car. */
  .hero-car { overflow: visible; }

  /* .hero--garage .sound-btn pins top:42% at (0,2,0), so a bare .sound-btn
     rule loses no matter where it sits in the file. Match the specificity. */
  /* Specificity ladder on this element is steep: .hero--garage
     .hero-car-left .sound-btn (0,3,0) inside a 680px query centres it on the
     bodywork. Match that depth, for both sides, or the button stays put.

     Below the car does not fit: there are only ~22px between the car and the
     search card, so a 34px button was cut in half by the card. The upper outer
     corner of each car photo is empty sky, so it is the one spot that is
     neither on the bodywork nor under the card. */
  .hero--garage .hero-car-left .sound-btn,
  .hero--garage .hero-car-right .sound-btn,
  .hero--garage .sound-btn,
  .sound-btn {
    width: 32px;
    height: 32px;
    top: -4px;
    bottom: auto;
    transform: none;
  }

  .hero--garage .hero-car-left .sound-btn,
  .hero-car-left .sound-btn { left: 2px; right: auto; }

  .hero--garage .hero-car-right .sound-btn,
  .hero-car-right .sound-btn { left: auto; right: 2px; }

  /* Clearance so the cars sit above the search card instead of being
     clipped by its top edge. */
  .hero--garage .swap-stage { padding-bottom: 30px; }

  /* Drop the whole block down the page. The cars and the search card were
     pinned just under the header with the photo squeezed into a sliver above
     them; this gives the landscape room to read before the content starts. */
  .hero--garage { padding-top: 118px; }

  .hero--garage .sound-btn svg,
  .sound-btn svg { width: 15px; height: 15px; }

  /* Room for the buttons now that they hang below the cars. */

  /* The road photo was being washed out to nothing by an overlay running up to
     0.98 alpha, so the hero read as flat paint. Let it through. */
  /* The photo is a wide landscape: hazy near-white sky on top, mountains and
     treeline through the middle, asphalt below. With `cover` on a 403px box the
     whole height fits, so the only band left visible above the search card was
     that pale sky, which is almost exactly the page colour. Hence "the
     background is not loading" when it was loading fine.
     Scale past the frame and pan to the mountains so the visible strip carries
     the part of the photo you can actually recognise. */
  .hero--garage .hero-backdrop,
  .hero-backdrop {
    opacity: 1;
    background-image:
      linear-gradient(180deg, rgba(243, 246, 241, 0) 0%, rgba(243, 246, 241, 0.06) 42%, rgba(243, 246, 241, 0.72) 78%, rgba(243, 246, 241, 0.96) 100%),
      url("assets/hero-road-bg.png");
    background-size: auto 205%, auto 205%;
    /* 68% puts the visible 176px strip over 35-52% of the photo: the
       mountain range and treeline. At 34% it showed 17-35%, which is the
       hazy near-white sky and reads as no image at all. */
    background-position: 50% 68%, 50% 68%;
    background-repeat: no-repeat, no-repeat;
  }

  /* The hero's own bottom fade stacked on top of the backdrop wash, doubling it. */
  .hero--garage::after { height: 22%; }

  /* The cash slider is the hero's one interactive control and on a phone it
     was a 10px hairline with the value crammed beside it. Give it the full
     width, a thicker track and a bigger thumb: it is dragged with a thumb,
     not a mouse. */
  .hero-cash-slider {
    flex-wrap: wrap;
    row-gap: 6px;
    column-gap: 10px;
  }

  .hero-cash-slider .cash-slider {
    order: 3;
    flex: 1 0 100%;
    height: 16px;
  }

  .hero-cash-slider .cash-slider::-webkit-slider-thumb {
    width: 34px;
    height: 34px;
    border-width: 5px;
  }

  .hero-cash-slider .cash-slider::-moz-range-thumb {
    width: 34px;
    height: 34px;
    border-width: 5px;
  }

  /* Labels above the track, value on the right where the eye lands last. */
  .hero-cash-slider .slider-edge { order: 1; font-size: 12px; }
  .hero-cash-slider .slider-edge + .slider-edge { order: 2; }
  .hero-cash-slider .slider-value {
    order: 2;
    min-width: 0;
    margin-left: auto;
    font-size: 15px;
    font-weight: 800;
  }
}

/* Very small phones: the five-up tab bar still has to fit. */
@media (max-width: 359px) {
  .tabbar-label { font-size: 9px; }
  .tabbar-icon svg { width: 19px; height: 19px; }
}

/* Coarse pointers have no hover; leaving hover styling on makes a tapped
   element keep its hover look until the next tap elsewhere. */
@media (hover: none) {
  .car-card:hover,
  .quick-chip:hover,
  .brand-chip:hover,
  .browse-pill:hover { transform: none; }
}

/* ─── Filters panel header: brand green, desktop and mobile ─────────────
   The panel title was the same ink as every other heading, so the filter
   drawer opened with nothing signalling what it was. */
.filters-title {
  color: var(--copper);
}

.filters-title svg {
  color: var(--copper);
  stroke-width: 2.2;
}

.filters-head {
  border-bottom-color: rgba(30, 77, 52, 0.18);
}

/* The advanced-filters sheet gets the same treatment so the two read as one
   family. */
.adv-modal-head strong {
  color: var(--copper);
}

/* ─── Brand logo on the selected (green) quick chip ─────────────────────
   The marks are dark or silver on transparency. Dropped straight onto the
   solid green active chip, the Mercedes star lost its fill and read as a
   bare outline. A white disc keeps every mark on the background it was
   drawn for, selected or not. */
.catalog-quickbar-pills a .quick-chip-brand-logo,
.quick-chip .quick-chip-brand-logo {
  box-sizing: content-box;
  padding: 3px;
  border-radius: 50%;
  background: #fff;
}

/* ═══════════════════════════════════════════════════════════════════════
   PHONE HERO — geometry pass
   ─────────────────────────────────────────────────────────────────────
   The garage hero had accumulated ~9 waves of overrides for the same
   selectors, and the survivors contradicted each other. Measured at 375px
   before this block:

     · stage row 170px tall + 30px padding, cars only 74px  → 96px of dead
       space above two cars that looked dropped at random
     · .swap-center align-self:center centred on the ROW, cars align-items:
       end sat at its bottom → the swap badge floated 48px above the cars'
       centreline
     · .hero--garage .hero-car::before (0,2,0, unmediated) beat the phone
       rule (0,1,0) → the "ground" shadow rendered bottom:64px + 48px tall,
       i.e. entirely ABOVE a 74px car
     · .hero--garage .container used 100%-28px while every other section
       uses 100%-24px → the whole hero sat 2px off the page gutter
     · sound buttons pinned top:-4px, hanging off the cars into the void
     · the cash slider's two polarity labels stacked next to each other on
       the left instead of marking the ends of the track they describe

   Everything below is one block so the phone hero has a single owner.
   ═══════════════════════════════════════════════════════════════════════ */

@media (max-width: 680px) {

  /* Gutter parity: header, cards, headings and footer all use 100% - 24px.
     The hero was the only section on 100% - 28px. */
  .hero--garage .container { width: min(100% - 24px, 1240px); }

  /* ── Stage ────────────────────────────────────────────────────────────
     One row, height driven by the cars themselves. No fixed row, no
     bottom padding, nothing to leave a gap the cars don't fill. */
  .hero--garage .swap-stage {
    display: grid;
    /* The desktop composition this is matched to has the two cars nearly
       touching with the badge laid over the seam — not a 44px column
       wedged between them eating width. Dropping the middle column and
       letting the cars split the whole gutter takes the BMW from 142px to
       ~175px drawn.

       The columns themselves carry the real length ratio (4936mm 530i :
       4391mm 718 Spyder), so each car just fills its own column, both
       outer edges land on the page gutter, and the size difference costs
       no symmetry anywhere. */
    grid-template-columns: 4936fr 4391fr;
    column-gap: 10px;
    row-gap: 0;
    /* end, not center. The columns are different widths now, so the two
       image boxes are different heights, and centring them floats the
       narrower Porsche box 4.75px above the BMW's ground line. Sharing a
       bottom edge is what puts both cars on one floor. */
    align-items: end;
    min-height: 0;
    height: auto;
    padding: 0;
    margin: 10px 0 0;
  }

  .hero--garage .hero-car {
    grid-row: 1;
    align-self: end;
    justify-items: stretch;
    width: 100%;
    min-width: 0;
    margin: 0;
    overflow: visible;
  }

  .hero--garage .hero-car-left  { grid-column: 1; }
  .hero--garage .hero-car-right { grid-column: 2; }

  .hero--garage .hero-car img {
    display: block;
    width: 100%;
    max-width: none;
    max-height: none;
    height: auto;
  }

  /* ── Matching the two photographs to each other ───────────────────────
     The source PNGs are not interchangeable, so equal boxes do not give
     equal cars. Measured from the alpha channel:

       hero-bmw-530i.png       791x396   car spans x 5-769, y 13-387
       hero-porsche-aligned    1672x837  car spans x 0-1671, y 102-804

     Do NOT measure these with a plain alpha bounding box. The Porsche is
     a hard-edged cutout (its alpha is binary — identical bounds at every
     threshold from 16 to 254) and it carries stray opaque pixels at the
     extreme left and right edges. A bounding box therefore reports its
     width as a full 1.0 of the frame, when the car body is really 0.971.
     Scaling to that phantom 1.0 shrank the Porsche ~2.5% too far and it
     read as the smaller car — the first version of this block did exactly
     that and looked wrong on the page while measuring as "perfect".

     Measure by column coverage instead: the fraction of a column that is
     opaque, thresholded so edge strays drop out. At >5% coverage:

       BMW      body spans 0.0076-0.9722 of frame  (width 0.9646)
       Porsche  body spans 0.0233-0.9946 of frame  (width 0.9713)

     0.9646 / 0.9713 = 0.9931 would draw the two cars the SAME length —
     and that is wrong. A 530i is 4936mm; a 718 Spyder is 4391mm. Drawn
     equal, the Porsche reads as an inflated car parked next to the BMW,
     which is what made the pair look off even when every gap measured
     perfectly. Scale by the real length ratio on top of the fill-ratio
     correction:

       4391/4936 x 0.9646/0.9713 = 0.88959 x 0.99310 = 0.88345

     The 4936:4391 grid columns above now carry that length ratio, so the
     only thing left for the transform is the fill-ratio difference
     between the two photographs — 0.9646/0.9713 = 0.9931 — plus the drop
     that puts both cars on one ground line:

     The vertical anchor matters more than it looks. Aligning the bottom
     of each image's opaque content lines up the SHADOWS, not the cars —
     and the two shadows are drawn differently. The BMW's fades out to a
     soft edge 10px below its tyres (alpha bottom 0.9773 vs darkest-pixel
     bottom 0.9520); the Porsche's stops hard (0.9618 vs 0.9534). Matching
     shadow edges therefore left the Porsche's wheels ~1.6px high.

     Anchor on the darkest pixels instead (lum<40 — tyre rubber and core
     shadow, the closest thing to a contact patch either image offers):

       BMW      darkest bottom 0.9520 of frame
       Porsche  darkest bottom 0.9534 of frame

     Horizontally nothing is needed: once the columns are proportional the
     Porsche's own right gap lands within 0.04px of the BMW's left gap.

     --porsche-baseline is the one number to touch if it still reads high
     or low by eye: more negative lifts it, more positive drops it. Every
     figure here is box-relative, so it holds at every phone width. */
  .hero--garage .swap-stage {
    /* -0.774% was calibrated against the 4936/4391 proportional columns.
       Equal columns changed the Porsche's box height, which put its tyre
       line 0.52px high; +0.589% of its own box height corrects it. */
    --porsche-baseline: -0.185%;
  }

  .hero--garage .hero-car-right img {
    transform: scale(0.9931) translateY(var(--porsche-baseline));
    transform-origin: 50% 100%;
  }

  /* ── Swap badge ───────────────────────────────────────────────────────
     Its own column again (an earlier wave spanned it 1/-1 as an overlay),
     centred on the row. Both car boxes are the same height, so the row
     centre is the cars' centre to within half a pixel. */
  .hero--garage .swap-center {
    grid-row: 1;
    grid-column: 1;
    align-self: center;
    /* Anchored to the seam between the two columns rather than the page
       centre: with unequal columns those are different points, and the
       badge belongs where the two cars meet. justify-self pins its right
       edge to the seam, the 50% pulls its centre onto it, the +5px is
       half the column gap. */
    justify-self: end;
    transform: translateX(calc(50% + 5px));
    margin: 0;
    z-index: 4;
  }

  /* 46px on a 375px screen is 12% of the viewport — proportionally about
     twice the reference. Smaller badge, less of the cars' noses hidden. */
  .hero--garage .swap-icon {
    width: 40px;
    height: 40px;
  }

  /* ── Ground shadow ────────────────────────────────────────────────────
     Under the wheels, not floating above the roof. The cars' contact
     point is ~1.5% of the box height off the bottom edge. */
  .hero--garage .hero-car::before {
    /* Matched to desktop proportionally rather than invented. Desktop is
       bottom:64px / height:48px on a 242.3px car box = 26.4% / 19.8%, at
       8% inset and rgba(21,31,24,0.22). Expressed as percentages it lands
       in the same place on the car at any width. Blur scales with the car
       (18px x 180/484 car width ratio = 7px) — a fixed 18px blur on a
       phone-sized car would smear across the whole body. */
    left: 8%;
    right: 8%;
    bottom: 26.4%;
    height: 19.8%;
    border-radius: 6px;
    background: rgba(21, 31, 24, 0.22);
    filter: blur(7px);
  }

  /* ── Sound buttons ────────────────────────────────────────────────────
     On the car, at its outer edge, centred on the same axis as the badge
     — not hanging off the top corner. */
  .hero--garage .hero-car .sound-btn {
    top: auto;
    width: 36px;
    height: 36px;
    transform: none;
    /* Anchored up from the shared ground line, not centred on each car's
       own box — those boxes are different heights now, so centring put
       the two buttons 5px out of level with each other.

       Percentages resolve against each button's own containing block, so
       the same number would still land in different places. The Porsche's
       box is 0.88953 of the BMW's height (0.445325Cb / 0.500632Cb), so
       its percentage is scaled by the reciprocal to land level. */
    bottom: 20%;
  }

  .hero--garage .hero-car-right .sound-btn {
    bottom: 22.484%;
  }

  .hero--garage .hero-car-left .sound-btn  { left: 0;    right: auto; }
  .hero--garage .hero-car-right .sound-btn { left: auto; right: 0; }

  /* ── Search card ──────────────────────────────────────────────────────
     The card carried margin-top:-24px so it tucked into the stage. That
     only worked because the stage was 200px tall holding 74px of car —
     the card was overlapping dead space. With the stage sized to the cars
     the same -24px eats their wheels and the ground shadow instead
     (elementFromPoint over the BMW's rear wheel returned the search
     input, not the car). The tuck has nothing left to tuck into, so it
     becomes an ordinary gap, wide enough to clear the blurred shadow. */
  .hero--garage .garage-search {
    /* The cars must NOT float. On desktop the search card is pulled up
       over the bottom of the cars (margin-top:-52px on a 242.3px car box
       = 21.5% of car height) so their wheels run behind the card and they
       read as planted on the page. I had removed that pull on phones
       early on, thinking it was "covering the wheels" — covering the
       wheels is the entire effect.

       Percentage margins resolve against the containing block's WIDTH, so
       this has to be expressed in container-width terms:

         car box height = (W - 10px gap) x 0.52922 / 1.99747 = 0.264945
         overlap        = 0.215 x that                        = 0.056963
         as % of W (at W=351)                                 = 5.53%

       Same 21.5% bite out of the cars as desktop, at every phone width. */
    margin-top: -5.53%;
  }

  /* ── Search fields ────────────────────────────────────────────────────
     The inputs were 23px tall inside 46px shells, and the two brand
     fields are divs, not labels — so only the 23px strip was tappable.
     Stretching the control to the shell makes the whole field the target.
     16px also stops iOS zooming the page on focus. */
  .hero--garage .garage-search .search-field {
    min-height: 48px;
  }

  .hero--garage .garage-search .search-field > input,
  .hero--garage .garage-search .search-field > select {
    align-self: stretch;
    height: auto;
    min-height: 0;
    padding-block: 0;
    font-size: 16px;
  }

  /* ── Cash slider ──────────────────────────────────────────────────────
     "ვითხოვ" and "ვამატებ" name the two ENDS of the track; flex-wrap had
     parked them side by side on the left with the readout floated away,
     so neither label pointed at anything. Grid puts each one over the end
     it describes, the readout between them, the track underneath. */
  .hero--garage .hero-cash-slider {
    display: grid;
    /* 1fr auto 1fr, not auto 1fr auto: the two labels are different widths
       ("ვითხოვ" / "ვამატებ"), so auto side columns would push the readout
       ~1px off the track's centre. Equal fr columns centre it exactly. */
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center;
    column-gap: 8px;
    row-gap: 7px;
  }

  .hero--garage .hero-cash-slider .slider-edge { grid-row: 1; }
  .hero--garage .hero-cash-slider .slider-edge:first-of-type {
    grid-column: 1;
    justify-self: start;
  }
  .hero--garage .hero-cash-slider .slider-edge:last-of-type {
    grid-column: 3;
    justify-self: end;
  }

  .hero--garage .hero-cash-slider .slider-value {
    grid-row: 1;
    grid-column: 2;
    justify-self: center;
    text-align: center;
    min-width: 0;
    margin: 0;
  }

  /* Track on its own row, full width, and no longer 2px wider than the
     form it sits in. */
  .hero--garage .hero-cash-slider .cash-slider {
    grid-row: 2;
    grid-column: 1 / -1;
    width: 100%;
    margin: 0;
    /* The 34px thumb was riding a 16px input, so 9px of it top and bottom
       was outside the hit area. Give the input the thumb's height and move
       the visible track to the pseudo-element so it stays a hairline. */
    height: 34px;
    background: none;
    border-radius: 0;
  }

  .hero--garage .hero-cash-slider .cash-slider::-webkit-slider-runnable-track {
    height: 14px;
    border-radius: 999px;
    background: linear-gradient(90deg, rgba(178,58,46,0.28), rgba(30,77,52,0.14) 50%, rgba(46,119,65,0.32));
  }

  .hero--garage .hero-cash-slider .cash-slider::-moz-range-track {
    height: 14px;
    border-radius: 999px;
    background: linear-gradient(90deg, rgba(178,58,46,0.28), rgba(30,77,52,0.14) 50%, rgba(46,119,65,0.32));
  }

  /* Centre the thumb on the 14px track it now sits on. */
  .hero--garage .hero-cash-slider .cash-slider::-webkit-slider-thumb {
    margin-top: -10px;
  }
}

/* ═══════════════════════════════════════════════════════════════════════
   TAB BAR — the raised "+" disc was sitting on its own label
   ─────────────────────────────────────────────────────────────────────
   .tabbar-item is grid-template-rows: 26px 12px, and the primary disc is
   height:46px. A grid item with a definite height cannot stretch, so it
   resolved to start-alignment: the 46px disc hung 20px past the bottom of
   its 26px row, straight into the 12px label row. translateY(-9px) took
   back 9 of those 20, leaving 7px of disc covering the top of the word
   "დამატება" — measured, disc bottom 799.5 vs label top 792.5.

   The existing comment claims the disc is "centred on the icon row"; it
   was not, and that is why the -9px looked like enough. Centre it for
   real, then raise it clear of the label including its 4px ring.
   ═══════════════════════════════════════════════════════════════════════ */

@media (max-width: 1023px) {
  .tabbar-item--primary .tabbar-icon {
    align-self: center;
    transform: translateY(-12px);
  }

  .tabbar-item--primary:active .tabbar-icon {
    transform: translateY(-12px) scale(0.94);
  }
}

/* ═══════════════════════════════════════════════════════════════════════
   HERO BACKDROP — one treatment at every width
   ─────────────────────────────────────────────────────────────────────
   The backdrop changed character at the 1023px breakpoint, so dragging
   the devtools responsive handle across it made the hero visibly jump.
   FOUR properties switched at once:

                      <=1023px                    >1023px
     opacity          1                           0.78
     background-size  auto 205%                   cover
     gradient         0 -> .06@42 -> .72@78 -> .96   .52 -> .74@58 -> .98
     ::after fade     22% of hero                 48% of hero

   The opacity was the least of it. `auto 205%` keys the photo off the
   HERO'S HEIGHT, so the 1672x941 source rendered ~1967px wide and a
   375px viewport saw 19% of its width — a 5.2x magnified centre crop,
   which is what read as washed out. Desktop's `cover` showed 100%.
   Worse, keying off hero height meant any layout change silently
   re-cropped the background.

   Unified on the desktop values, with no media query at all, so the
   backdrop now changes continuously with the viewport instead of
   snapping. Note this reverts a deliberate earlier fix: `auto 205%` +
   68% existed to pan past the pale sky on short heroes. Consistency was
   the explicit ask, so that pan is gone — with `cover` on a narrow
   viewport the image is height-driven and has no vertical overflow, so
   background-position has nothing to pan and the sky band returns at the
   top. If that reads too empty, the fix is the hero's proportions, not
   another breakpoint here. */

.hero--garage .hero-backdrop,
.hero-backdrop {
  opacity: 0.78;
  background-image:
    linear-gradient(180deg, rgba(243, 246, 241, 0.52), rgba(243, 246, 241, 0.74) 58%, rgba(243, 246, 241, 0.98)),
    url("assets/hero-road-bg.png");
  background-size: cover, cover;
  background-position: 50% 68%, 50% 68%;
  background-repeat: no-repeat, no-repeat;
}

.hero--garage::after,
.hero::after {
  height: 48%;
}

/* ═══════════════════════════════════════════════════════════════════════
   HERO: cut the dead space above the cars, make the photo actually show
   ─────────────────────────────────────────────────────────────────────
   Two separate causes of empty space, one per size range:
     <=1023px  .hero--garage { padding-top: 118px }  (line 13081)
     >1023px   .swap-stage min-height ~350px with the cars bottom-aligned
               inside it, leaving ~108px reserved above them
   Both are removed here so the band above the cars is the same modest
   gap at every width and the stage is sized by the cars themselves.

   And the photo was washed to nothing: opacity 0.78 under a gradient
   already starting at 0.52 alpha left only 0.78 x 0.48 = 37% of the
   image coming through, on top of a 48% bottom fade. Opacity back to 1
   and the overlay starts at 0.10, so the photo reads at ~90% where the
   mountains are and still fades to page colour under the search card.

   Framing: background-size is keyed to the hero's HEIGHT (205%), which
   is what makes the vertical crop identical at every width — cover
   cannot do that, because on a phone it is height-driven, has no
   vertical overflow, and therefore always shows the pale sky band.
   The max(...,56.3vw) is the coverage guard cover used to provide:
   205% of hero height renders the photo 3.64x the hero height wide, so
   a very wide viewport with a short hero would otherwise not be filled.

   Position 95% puts the visible window over photo rows ~48-97%: treeline
   at the top of the hero, asphalt under the cars, no sky at all. */

.hero.hero--garage {
  padding-top: 28px;
}

.hero--garage .swap-stage {
  min-height: 0;
  /* 30px of bottom padding survived from the base rule above 680px, so the
     stage floor sat 30px below the cars and the search card's pull was
     spent on padding instead of on the cars — 47px of margin bought only
     17px of actual overlap. */
  padding: 0;
}

.hero--garage .hero-backdrop,
.hero-backdrop {
  opacity: 1;
  background-image:
    linear-gradient(180deg,
      rgba(243, 246, 241, 0.10) 0%,
      rgba(243, 246, 241, 0.20) 46%,
      rgba(243, 246, 241, 0.74) 84%,
      rgba(243, 246, 241, 0.97) 100%),
    url("assets/hero-road-bg.png");
  background-size: auto max(205%, 56.3vw), auto max(205%, 56.3vw);
  background-position: 50% 95%, 50% 95%;
  background-repeat: no-repeat, no-repeat;
}

.hero--garage::after,
.hero::after {
  height: 24%;
}

/* ─── Hero photo: pan up off the asphalt ────────────────────────────────
   At 95% the visible window sat on photo rows 49-97%, which is mostly
   road — "just გზა". Moving it to 78% shifts the window to rows 40-89%,
   so the top half is treeline and distant mountains and the bottom half
   is asphalt, with the cars straddling the verge.

   The window is 48.8% of the photo tall (hero height x 205%), so the
   maths is: top row = 0.512 x --hero-photo-y, bottom row = top + 0.488.
   Lower the number to climb further up the image; 65% is about the limit
   before the pale sky band (photo rows 0-30%) starts entering frame. */

.hero {
  --hero-photo-y: 78%;
}

.hero--garage .hero-backdrop,
.hero-backdrop {
  background-position: 50% var(--hero-photo-y), 50% var(--hero-photo-y);
}

/* ─── Stop the header jumping between pages ─────────────────────────────
   Navigating გაცვლები <-> ჩვენ შესახებ shifted the whole header 7.5px.
   Nothing page-specific about it: cars.html is long enough to scroll and
   about.html is not, so one page has a 15px scrollbar and the other does
   not. Every centred .container then centres inside a viewport that is
   1385px on one page and 1400px on the other, so everything moves by half
   the scrollbar width.

   Reserving the gutter permanently makes the layout width identical
   whether or not the page scrolls. */
html {
  scrollbar-gutter: stable;
}

/* ─── Search card overlap above 680px ───────────────────────────────────
   The card used a flat margin-top:-52px while the car box height changes
   with the viewport, so the bite it took out of the cars swung wildly:

     994px  -> 22px over a 216.8px car =  10.1%  (cars barely held down)
     1031px -> 52px over a 226.0px car =  23.0%  (cutting the bumper)

   Phones already use a proportional value (-5.53% of container width) for
   a steady 21.5%. Same idea here, adjusted for the three-column stage:

     car box height = (W - 88px middle col) / 2 / 1.99747 = (W-M) x 0.25032
     overlap        = 0.215 x that                        = (W-M) x 0.05382
     as % of W, across W = 900..1240 with M = 88          = 4.86%..5.00%

   Near enough constant to use one number. */
@media (min-width: 681px) {
  .hero--garage .garage-search {
    margin-top: -4.95%;
  }
}

/* ─── Header must not jump between pages ────────────────────────────────
   The ₾/$ switch is opt-in (only the catalog passes currency:true, since
   on a page with no prices it would be a control that does nothing). But
   .header-actions is right-anchored, so adding it pushed everything to
   its left over by its own width — the nav sat at x=631 on about.html
   and x=523 on cars.html, a 108px jump when you click between them.

   Pages without the switch now render the same component as a ghost:
   identical markup, so it reserves a pixel-identical slot at every
   breakpoint (the real one is 76px base, 88px in the header — a
   hardcoded placeholder width would have drifted). visibility:hidden
   keeps it out of the accessibility tree as well as off the screen. */
.currency-switch--ghost {
  visibility: hidden;
  pointer-events: none;
}

/* ═══════════════════════════════════════════════════════════════════════
   MOBILE FILTERS SHEET — the apply button was off the bottom of the screen
   ─────────────────────────────────────────────────────────────────────
   Measured at 375x812 with the sheet open:

     .filters         fixed, y 82 -> 731.6   (stops 80px short of bottom)
     .filters-scroll  y 154 -> 812.5         (658px tall inside a 649px box)
     .filters-actions y 825.5 -> 902.5       (entirely below the viewport)

   Three faults compounding:

   1. .filters keeps `top: 82px` from the desktop sticky rail while ALSO
      being a `bottom: 0` fixed bottom-sheet, so the panel never reaches
      the bottom of the screen.
   2. Both .filters and .filters-scroll scroll. Two nested scroll
      containers means the form runs past the panel instead of the inner
      list scrolling within it.
   3. .filters-actions is handed `bottom: calc(var(--tabbar-h) + 8px)` at
      <=1023px but its position is `static`, so that offset does nothing
      and the footer simply flows off the end of the document.

   Result: you scroll the sheet, the last thing you can reach is
   "დამატებითი ფილტრები", and the search button is unreachable.

   Fixed as a proper three-part sheet — fixed head, one scrolling body,
   sticky footer — which is what the advanced-filters modal already does
   and what this was clearly meant to be. */

@media (max-width: 980px) {
  body.filters-open .filters {
    /* Anchored to the bottom of the screen, not 82px down from the top. */
    top: auto;
    display: flex;
    flex-direction: column;
    /* The panel itself must not scroll — .filters-scroll is the scroller. */
    overflow: hidden;
  }

  body.filters-open .filters-form {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
    overflow: hidden;
    padding-bottom: 0;
  }

  body.filters-open .filters-scroll {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
  }

  /* The footer the search button lives in. Sticky to the panel floor, and
     `bottom: 0` not `tabbar-h + 8px`: the sheet is z-index 95 over a
     z-index 90 tab bar, so it already covers it — offsetting by the tab
     bar height would leave a dead 58px strip under the buttons. */
  body.filters-open .filters-actions {
    position: sticky;
    bottom: 0;
    flex: 0 0 auto;
    z-index: 2;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 10px;
    padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
  }
}

/* ─── "ეძებს" label vs the value under it ───────────────────────────────
   .wanted-label is a flex row of [icon][ეძებს] with gap:6px, so its text
   started 21px in (15px icon + 6px gap) while .wants-primary below it sat
   flush at the block's left edge — the label was indented past the word
   it labels. Indent the value to the same text column so the icon reads
   as a gutter marker for the pair and both lines share a left edge. */
.wanted-label + .wants-primary {
  padding-left: calc(15px + 6px);
}

/* ═══════════════════════════════════════════════════════════════════════
   HERO — bring back what the Jul 3 build did better
   ─────────────────────────────────────────────────────────────────────
   Comparing the live site against this one at the same width, the older
   hero won on three counts: it said what the product is, the cars had
   real presence, and the search panel was a brand surface rather than a
   white box. Those are ported here onto the corrected geometry — the
   ground line, true car scale, badge centring and card overlap all stay
   as fixed.

   The captions are deliberately NOT restored; asked for, not selected. */

/* ── 1. The headline ──────────────────────────────────────────────────
   .hero--garage .hero-copy was sr-only, so the hero opened with two
   unlabelled cars and no statement of what the site does. */
.hero--garage .hero-copy {
  position: static;
  width: auto;
  height: auto;
  overflow: visible;
  clip-path: none;
  white-space: normal;
  max-width: 820px;
  margin: 0 auto 18px;
  text-align: center;
}

.hero--garage .hero-copy h1 {
  margin: 0 0 10px;
  color: var(--v4-green);
  font-size: clamp(28px, 4.2vw, 52px);
  font-weight: 800;
  line-height: 1.06;
  letter-spacing: -0.02em;
  text-wrap: balance;
}

.hero--garage .hero-copy p {
  margin: 0;
  color: var(--text-secondary, rgba(48, 58, 48, 0.76));
  font-size: clamp(14px, 1.4vw, 17px);
  line-height: 1.45;
  text-wrap: balance;
}

@media (max-width: 680px) {
  .hero--garage .hero-copy {
    max-width: 100%;
    margin-bottom: 12px;
  }
  .hero--garage .hero-copy h1 { font-size: clamp(24px, 7.2vw, 34px); }
  .hero--garage .hero-copy p  { font-size: 14px; }
}

/* ── 2. Bigger cars ───────────────────────────────────────────────────
   The stage is sized by the cars, so widening the stage is what grows
   them. The proportional 4936fr/4391fr columns and the ground-line
   transform are untouched, so true relative scale still holds. */
.hero--garage .swap-stage {
  width: min(100%, 1320px);
  margin-inline: auto;
}

@media (max-width: 680px) {
  /* Phones were already near the edge; the gain here comes from the
     middle gap, not the gutter, so the cars keep the page margin. */
  .hero--garage .swap-stage {
    column-gap: 6px;
  }
}

/* ── 3. Green panel, copper CTA ───────────────────────────────────────
   NOTE: --copper is a false friend. DESIGN.md §2 replaced copper with
   deep green but kept the token name, so `var(--copper)` resolves to
   #1e4d34. Redefining it would turn every accent on the site orange, so
   the real copper is scoped to this one button. This is a deliberate
   departure from the documented green-only accent rule. */
.hero--garage .garage-search {
  --hero-copper: #b8541f;
  --hero-copper-hover: #a1471a;
  border-color: rgba(16, 34, 24, 0.28);
  background: linear-gradient(180deg, #3f6b4f 0%, #365e45 100%);
  box-shadow: 0 24px 54px -26px rgba(16, 30, 20, 0.62);
}

/* The fields stay light so they read as inputs against the green. */
.hero--garage .garage-search .search-field {
  border-color: rgba(255, 255, 255, 0.22);
  background: rgba(255, 255, 255, 0.96);
}

.hero--garage .garage-search .slider-edge,
.hero--garage .garage-search .slider-value {
  color: rgba(255, 255, 255, 0.92);
}

/* .btn-liquid pins this button green with !important
   (.garage-search .search-submit.btn-liquid), which is the same
   specificity as a plain .hero--garage descendant selector — so matching
   the !important and adding .btn-liquid is what it takes to win. */
.hero--garage .garage-search .search-submit,
.hero--garage .garage-search .search-submit.btn-liquid {
  background: var(--hero-copper) !important;
  border-color: transparent !important;
  color: #fff;
}

.hero--garage .garage-search .search-submit:hover,
.hero--garage .garage-search .search-submit.btn-liquid:hover {
  background: var(--hero-copper-hover) !important;
}

/* Proof line sits under the panel on the page background, not the green. */
.hero--garage .hero-proof {
  color: var(--text-secondary, rgba(48, 58, 48, 0.76));
}

/* ─── Cash slider: extend the phone fix up through tablets ──────────────
   The polarity labels ("ვითხოვ" / "ვამატებ") name the two ENDS of the
   track, but flex-wrap parked them side by side on the left with the
   readout floated away — neither pointed at anything. That was fixed at
   <=680px only, so every width from 681 to 1023 still showed it. Same
   grid treatment here.

   Also: the track's red->green gradient was designed for a white panel.
   On the green search panel its green half vanishes, so the control
   reads as a floating thumb on nothing. Neutral track, copper thumb to
   match the CTA. */
@media (max-width: 1023px) {
  .hero--garage .hero-cash-slider {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center;
    column-gap: 8px;
    row-gap: 7px;
  }

  .hero--garage .hero-cash-slider .slider-edge { grid-row: 1; }
  .hero--garage .hero-cash-slider .slider-edge:first-of-type {
    grid-column: 1;
    justify-self: start;
  }
  .hero--garage .hero-cash-slider .slider-edge:last-of-type {
    grid-column: 3;
    justify-self: end;
  }

  .hero--garage .hero-cash-slider .slider-value {
    grid-row: 1;
    grid-column: 2;
    justify-self: center;
    text-align: center;
    min-width: 0;
    margin: 0;
  }

  .hero--garage .hero-cash-slider .cash-slider {
    grid-row: 2;
    grid-column: 1 / -1;
    width: 100%;
    margin: 0;
    height: 34px;
    background: none;
    border-radius: 0;
  }
}

/* Track + thumb legibility on the green panel, every width. */
.hero--garage .hero-cash-slider .cash-slider::-webkit-slider-runnable-track {
  height: 14px;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0.34), rgba(255, 255, 255, 0.58));
}

.hero--garage .hero-cash-slider .cash-slider::-moz-range-track {
  height: 14px;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0.34), rgba(255, 255, 255, 0.58));
}

.hero--garage .hero-cash-slider .cash-slider::-webkit-slider-thumb {
  background: #b8541f;
  border-color: #fff;
  margin-top: -10px;
}

.hero--garage .hero-cash-slider .cash-slider::-moz-range-thumb {
  background: #b8541f;
  border-color: #fff;
}

/* ═══════════════════════════════════════════════════════════════════════
   HERO — feedback pass
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Porsche was reading too small ────────────────────────────────────
   The columns carried the true length ratio (4936mm 530i : 4391mm 718),
   which is accurate but made the Porsche look undersized next to the
   sedan. Equal columns instead, so it fills the same width as the BMW.
   --hero-car-ratio is the knob: 1 = equal, 0.89 = physically true. */
.hero--garage .swap-stage {
  --hero-car-ratio: 1;
  grid-template-columns: 1fr calc(1fr * var(--hero-car-ratio));
}

@media (min-width: 681px) {
  .hero--garage .swap-stage {
    grid-template-columns: 1fr 84px 1fr;
  }
}

/* ── Panel: lighter green ─────────────────────────────────────────────── */
.hero--garage .garage-search {
  background: linear-gradient(180deg, #52846333 0%, #4a7a5b 0%, #427050 100%);
  background: linear-gradient(180deg, #4f8160 0%, #457356 100%);
}

/* ── Slider: lighter text, visible track ──────────────────────────────
   The track was set only on ::-webkit-slider-runnable-track, so anywhere
   that rule lost — or in a browser that ignores it — the bar vanished
   entirely and left a thumb floating on nothing. The input now carries a
   visible background itself, so there is always a line. */
.hero--garage .hero-cash-slider .slider-edge {
  font-weight: 500;
  opacity: 0.92;
}

.hero--garage .hero-cash-slider .slider-value {
  font-weight: 600;
}

.hero--garage .hero-cash-slider .cash-slider {
  -webkit-appearance: none;
  appearance: none;
  height: 34px;
  border-radius: 999px;
  background: linear-gradient(
    to bottom,
    transparent calc(50% - 6px),
    rgba(255, 255, 255, 0.55) calc(50% - 6px),
    rgba(255, 255, 255, 0.55) calc(50% + 6px),
    transparent calc(50% + 6px)
  );
}

.hero--garage .hero-cash-slider .cash-slider::-webkit-slider-runnable-track {
  height: 12px;
  border-radius: 999px;
  background: transparent;
}

.hero--garage .hero-cash-slider .cash-slider::-moz-range-track {
  height: 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.55);
}

.hero--garage .hero-cash-slider .cash-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: #b8541f;
  border: 3px solid #fff;
  box-shadow: 0 2px 6px rgba(16, 20, 15, 0.35);
  margin-top: -7px;
}

.hero--garage .hero-cash-slider .cash-slider::-moz-range-thumb {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: #b8541f;
  border: 3px solid #fff;
  box-shadow: 0 2px 6px rgba(16, 20, 15, 0.35);
}

/* ─── Search row: two fields, not three columns ─────────────────────────
   .swap-search-top was `533px 48px 533px` — a column for the ⇄ icon that
   used to sit between the fields. Removing that icon left the second
   field to fall into the 48px middle column, where it collapsed to 58px
   and rendered as a bare magnifier square. It also made the whole panel
   lopsided, which is what read as "text is not centred". */
@media (min-width: 681px) {
  .hero--garage .swap-search-top {
    grid-template-columns: 1fr 1fr;
  }
}

/* ─── Slider track: rounded, not squared ────────────────────────────────
   Painting the bar as a linear-gradient on the input gives hard square
   ends — a gradient stop cannot be rounded. Put it back on the track
   pseudo-element, which takes border-radius properly. */
.hero--garage .hero-cash-slider .cash-slider {
  background: transparent;
}

.hero--garage .hero-cash-slider .cash-slider::-webkit-slider-runnable-track {
  height: 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.55);
}

.hero--garage .hero-cash-slider .cash-slider::-moz-range-track {
  height: 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.55);
}

.hero--garage .hero-cash-slider .cash-slider::-webkit-slider-thumb {
  margin-top: -7px;
}

/* ─── Footer must reach the bottom of the screen on phones ──────────────
   body carries padding-bottom: var(--tabbar-h) so content clears the
   fixed tab bar. That padding sits OUTSIDE the footer, so below the
   near-black footer (#161a15) there was a 58px band of light page
   background — visible through the tab bar, which is only 62% opaque.
   Measured: document 3777px, footer bottom 3719.2px.

   Pull the footer down over that band and pad its own content back up by
   the same amount. The body padding still reserves the space (pages with
   no footer keep their clearance), but the strip is now footer-coloured. */
@media (max-width: 1023px) {
  .site-footer {
    margin-bottom: calc(-1 * var(--tabbar-h, 58px));
    padding-bottom: calc(var(--tabbar-h, 58px) + env(safe-area-inset-bottom, 0px));
  }
}

/* ═══════════════════════════════════════════════════════════════════════
   TAP TARGETS AND FIELD SIZING — audit pass
   ─────────────────────────────────────────────────────────────────────
   Measured across index and cars at 375px and 1359px. Recurring defects:

     footer links          20px tall   (every page)
     card title links      19-28px     (every card)
     hero search inputs    23px tall, 14px font  — fixed on phones only,
                           so desktop and tablet still had it
     city select           21px tall, 14px font
     sort select           13px font
     currency toggle       34x30

   The padding/negative-margin pairs grow the hit area without moving
   anything: the box gets bigger, the layout position does not change.
   Font sizes go to 16px because anything smaller makes iOS zoom the page
   on focus, which then leaves the user scrolled sideways. */

/* Footer links: 20px -> 44px hit area, same visual position. */
.site-footer a {
  padding-block: 12px;
  margin-block: -12px;
}

/* Card titles: same treatment, and they are the primary card action. */
.card-title-link {
  padding-block: 8px;
  margin-block: -8px;
}

/* Hero search controls at every width, not just phones. */
.hero--garage .garage-search .search-field {
  min-height: 48px;
}

.hero--garage .garage-search .search-field > input,
.hero--garage .garage-search .search-field > select {
  align-self: stretch;
  height: auto;
  min-height: 0;
  padding-block: 0;
  font-size: 16px;
}

/* Catalog sort control. */
#sort-select {
  font-size: 16px;
  min-height: 40px;
}

/* Currency toggle was 34x30. */
.currency-switch button {
  min-width: 40px;
  min-height: 36px;
}

/* ═══════════════════════════════════════════════════════════════════════
   LISTING CARDS AND FOOTER — readability pass
   ═══════════════════════════════════════════════════════════════════════ */

/* ── "შესთავაზე გაცვლა" button ────────────────────────────────────────
   height:48px fixed with padding:0 18px and line-height:21px. Two wrapped
   lines measure 42px, leaving 3px total clearance — enough to look
   cramped and to clip outright once a font renders slightly taller.
   Tighter leading, and min-height so the box can grow instead of
   trapping the text. */
.btn-accent,
.car-row-offer,
.detail-offer,
.listing-offer {
  height: auto;
  min-height: 48px;
  padding-block: 8px;
  line-height: 1.25;
}

.btn-accent > span,
.car-row-offer > span {
  line-height: 1.25;
}

/* ── "ეძებს <model>" on one line ──────────────────────────────────────
   This undoes my own earlier fix. The 21px padding-left was added when
   the label and value were stacked on two lines; on the card they sit in
   the same flex row, where it read as a 27px hole between "ეძებს" and
   the model. Measured: label ends at x=94.1, value text started at 121. */
.wanted-label + .wants-primary {
  padding-left: 0;
}

.aside-wants {
  align-items: center;
  gap: 8px;
}

.wanted-label {
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
}

/* "ეძებს" is the label and should outrank the model name it introduces,
   so it keeps the heavier weight while the value drops to 600. */
.wanted-label b {
  font-weight: 800;
}

.wants-primary,
.car-card-wants {
  font-weight: 600;
}

/* Landing-page card: label and value are inline in one <p>, so the gap
   comes from the label's own trailing margin. */
.listing-wants .wanted-label {
  margin-right: 8px;
}

/* ── Footer links: bullet separators ──────────────────────────────────
   The six links ran together as one block of Georgian text with nothing
   between them. A middot plus real spacing makes each one readable as a
   separate destination. pointer-events:none so the separator is not part
   of the click target of the link it follows. */
.footer-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}

.footer-nav a + a::before {
  content: "•";
  display: inline-block;
  margin: 0 10px;
  color: rgba(255, 255, 255, 0.4);
  font-weight: 400;
  pointer-events: none;
}

/* ═══════════════════════════════════════════════════════════════════════
   LIST-VIEW CARD: pills and save button
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Right pill: text was being cut off ───────────────────────────────
   .trade-cash is white-space:nowrap in a 129px box, and "სხვაობა
   შეთანხმებით" needs 170px — measured scrollWidth 170 vs clientWidth
   127, so 43px ran off the right edge. Let it wrap onto a second line
   and grow instead of clipping; tighter leading keeps two lines compact.
   min-height keeps single-line pills the same height as before. */
.trade-cash {
  white-space: normal;
  height: auto;
  min-height: 36px;
  line-height: 1.25;
  align-items: center;
  overflow-wrap: anywhere;
}

/* ── Left pill: breathing room after "ეძებს" ──────────────────────────
   6px put the value hard against the label. The extra margin lifts the
   real separation to 10px without touching the icon-to-word spacing
   inside the label itself. */
.aside-wants .wanted-label {
  margin-right: 4px;
}

.aside-wants .wants-primary,
.aside-wants .car-card-wants {
  line-height: 1.3;
}

/* ── Save button: smaller disc, same touch target ─────────────────────
   44x44 is right for a finger but far too big as a graphic on a small
   thumbnail — it covered a third of the car. The visible disc drops to
   30px while ::after restores a 44px hit area, so it is easier to see
   past and no harder to press. */
.save-btn {
  width: 30px;
  height: 30px;
  padding: 0;
  display: grid;
  place-items: center;
}

.save-btn svg {
  width: 15px;
  height: 15px;
}

.save-btn::after {
  content: "";
  position: absolute;
  inset: -7px;
  border-radius: 50%;
}

/* Both of the above lost to more specific rules scoped at <=1023px:
   `.car-card .save-btn { width:44px }` and
   `.car-card-aside .trade-cash { white-space:nowrap }`, each 0,2,0
   against a plain 0,1,0 class selector. Matched here so order decides.
   The inner <span> inherits nowrap, so it has to be reset as well —
   resetting only the flex parent leaves the text unwrappable. */
.car-card .save-btn {
  width: 30px;
  height: 30px;
}

.car-card-aside .trade-cash,
.car-card-aside .trade-cash span {
  white-space: normal;
  overflow-wrap: anywhere;
}

.car-card-aside .trade-cash span {
  min-width: 0;
  flex: 1 1 auto;
}

/* Correction to the above: the ::after hit-area trick did not hold —
   elementFromPoint 3px outside the disc still returned the <img>, so the
   touch target really was 30px, not the 44px I intended. Rebuilt without
   relying on pseudo-element hit-testing: the BUTTON keeps its full 44px
   box (so the finger target is unchanged) and the visible disc is drawn
   on the icon itself. Same look, target verified by hit-test instead of
   assumed. */
.car-card .save-btn,
.save-btn {
  width: 44px;
  height: 44px;
  background: none;
  border: 0;
  box-shadow: none;
}

.save-btn::after {
  content: none;
}

.car-card .save-btn svg,
.save-btn svg {
  box-sizing: content-box;
  width: 15px;
  height: 15px;
  padding: 7px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.88);
  box-shadow: 0 1px 4px rgba(16, 20, 15, 0.2);
}
