/* Behavior-only styles for the Astro port. The visual theme comes from original.css. */
html, body { overflow-x: clip; }

/* Keep the homepage photograph rich and readable in light mode. The legacy
   bg-background/70 layer resolves to translucent white and washes the image out. */
html:not(.dark) .astro-home-hero-tint {
  background: rgba(3, 13, 27, .42) !important;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
html.dark .astro-home-hero-tint {
  background: rgba(2, 10, 24, .22) !important;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
html.dark .astro-home-hero-gradient {
  background-image: linear-gradient(to bottom, rgba(2, 10, 24, .12), rgba(2, 10, 24, .7)) !important;
}

.astro-home-services { padding: 5rem 1.5rem; background: hsl(var(--background)); }
.astro-home-services__inner { width: min(80rem, 100%); margin-inline: auto; }
.astro-home-services__intro { max-width: 44rem; margin: 0 auto 2.75rem; text-align: center; }
.astro-home-services__intro > p { color: hsl(var(--primary)); font-weight: 700; }
.astro-home-services__intro h2 { margin-top: .5rem; color: hsl(var(--foreground)); font-size: clamp(2rem, 4vw, 3rem); font-weight: 700; line-height: 1.08; letter-spacing: -.025em; }
.astro-home-services__intro > div { margin-top: 1rem; color: hsl(var(--muted-foreground)); font-size: 1.075rem; line-height: 1.7; }
.astro-service-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.astro-service-card { display: flex; min-width: 0; overflow: hidden; flex-direction: column; border: 1px solid hsl(var(--border)); border-radius: 1rem; background: hsl(var(--card)); box-shadow: 0 12px 30px hsl(var(--foreground) / .06); transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease; }
.astro-service-card:hover { transform: translateY(-4px); border-color: hsl(var(--primary) / .45); box-shadow: 0 18px 42px hsl(var(--foreground) / .11); }
.astro-service-card__media { position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: hsl(var(--muted)); }
.astro-service-card__media::after { position: absolute; inset: 0; content: ''; background: linear-gradient(to top, rgba(2, 10, 24, .18), transparent 45%); pointer-events: none; }
.astro-service-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease; }
.astro-service-card:hover .astro-service-card__media img { transform: scale(1.035); }
.astro-service-card__body { display: flex; flex: 1; flex-direction: column; padding: 1.5rem; }
.astro-service-card__body h3 { color: hsl(var(--foreground)); font-size: 1.25rem; font-weight: 700; line-height: 1.35; }
.astro-service-card__body p { margin-top: .75rem; color: hsl(var(--muted-foreground)); line-height: 1.65; }
.astro-service-card__actions { display: flex; align-items: center; gap: .75rem; margin-top: auto; padding-top: 1.5rem; }
.astro-service-card__book,
.astro-service-card__learn { display: inline-flex; min-height: 2.75rem; align-items: center; justify-content: center; border-radius: 9999px; padding: .65rem 1rem; font-size: .875rem; font-weight: 700; transition: opacity .2s ease, background-color .2s ease, border-color .2s ease; }
.astro-service-card__book { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }
.astro-service-card__book:hover { opacity: .88; }
.astro-service-card__learn { gap: .35rem; border: 1px solid hsl(var(--border)); color: hsl(var(--foreground)); }
.astro-service-card__learn:hover { border-color: hsl(var(--primary) / .45); background: hsl(var(--accent)); }
.astro-home-services__all { margin-top: 2.5rem; text-align: center; }
.astro-home-services__all a { display: inline-flex; align-items: center; gap: .45rem; color: hsl(var(--primary)); font-weight: 700; }
.astro-home-services__all a:hover { text-decoration: underline; text-underline-offset: .25rem; }

.astro-home-areas { padding: 5rem 1.5rem; border-block: 1px solid hsl(var(--border)); background: hsl(var(--muted) / .28); }
.astro-home-areas__inner { width: min(80rem, 100%); margin-inline: auto; }
.astro-home-areas__intro { margin-bottom: 2.5rem; }
.astro-home-areas__intro > div { max-width: 44rem; }
.astro-home-areas__intro > div > p { color: hsl(var(--primary)); font-weight: 700; }
.astro-home-areas__intro h2 { margin-top: .5rem; color: hsl(var(--foreground)); font-size: clamp(2rem, 4vw, 3rem); font-weight: 700; line-height: 1.08; letter-spacing: -.025em; }
.astro-home-areas__intro > p { max-width: 44rem; margin-top: 1rem; color: hsl(var(--muted-foreground)); font-size: 1.05rem; line-height: 1.7; }
.astro-area-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .9rem; }
.astro-area-card { display: flex; min-height: 4.75rem; align-items: center; gap: .85rem; padding: 1rem 1.1rem; border: 1px solid hsl(var(--border)); border-radius: .85rem; background: hsl(var(--card)); color: hsl(var(--foreground)); font-weight: 700; box-shadow: 0 7px 20px hsl(var(--foreground) / .04); transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease; }
.astro-area-card:hover { transform: translateY(-2px); border-color: hsl(var(--primary) / .5); box-shadow: 0 11px 24px hsl(var(--foreground) / .08); }
.astro-area-card__icon { display: inline-flex; width: 2rem; height: 2rem; flex: 0 0 2rem; align-items: center; justify-content: center; border-radius: 9999px; background: hsl(var(--primary) / .1); color: hsl(var(--primary)); }
.astro-area-card__icon svg { width: 1.15rem; height: 1.15rem; }
.astro-area-card__arrow { margin-left: auto; color: hsl(var(--primary)); transition: transform .2s ease; }
.astro-area-card:hover .astro-area-card__arrow { transform: translateX(3px); }
.astro-home-areas__quote { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; margin-top: 1.5rem; padding: 1.25rem 1.5rem; border-radius: 1rem; background: hsl(var(--foreground)); color: hsl(var(--background)); }
.astro-home-areas__quote > div { display: flex; flex-direction: column; gap: .25rem; }
.astro-home-areas__quote strong { font-size: 1.05rem; }
.astro-home-areas__quote span { color: hsl(var(--background) / .72); }
.astro-home-areas__quote > a { display: inline-flex; min-height: 2.75rem; flex: 0 0 auto; align-items: center; gap: .45rem; padding: .65rem 1rem; border-radius: 9999px; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); font-size: .9rem; font-weight: 700; }
.astro-home-areas__quote > a span { color: inherit; }

/* Separate the reservation card from the service-areas section above it. */
body[data-slug="index"] .astro-home-areas + .relative.isolate > .mx-auto > .relative.overflow-hidden {
  margin-top: 5rem;
}

.astro-home-faq { padding: 5rem 1.5rem; background: hsl(var(--background)); }
.astro-home-faq__inner { width: min(48rem, 100%); margin-inline: auto; }
.astro-home-faq__intro { margin-bottom: 2rem; text-align: center; }
.astro-home-faq__intro > p { color: hsl(var(--primary)); font-weight: 700; }
.astro-home-faq__intro h2 { margin-top: .5rem; color: hsl(var(--foreground)); font-size: clamp(2rem, 4vw, 2.6rem); font-weight: 700; line-height: 1.1; letter-spacing: -.025em; }
.astro-home-faq__intro > div { margin-top: .9rem; color: hsl(var(--muted-foreground)); font-size: 1.05rem; line-height: 1.65; }
.astro-home-faq__list { border-top: 1px solid hsl(var(--border)); }
.astro-home-faq__item { border-bottom: 1px solid hsl(var(--border)); }
.astro-home-faq__item > button { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 1.5rem; padding: 1.35rem .25rem; color: hsl(var(--foreground)); text-align: left; font-size: 1.05rem; font-weight: 700; line-height: 1.45; }
.astro-home-faq__item > button:hover { color: hsl(var(--primary)); }
.astro-home-faq__plus { display: inline-flex; width: 2rem; height: 2rem; flex: 0 0 2rem; align-items: center; justify-content: center; border-radius: 9999px; background: hsl(var(--primary) / .1); color: hsl(var(--primary)); font-size: 1.4rem; transition: transform .2s ease; }
.astro-home-faq__item > button[aria-expanded="true"] .astro-home-faq__plus { transform: rotate(45deg); }
.astro-home-faq__item > div { padding: 0 3.75rem 1.35rem .25rem; }
.astro-home-faq__item p { color: hsl(var(--muted-foreground)); line-height: 1.75; }
.astro-home-faq__item a { color: hsl(var(--primary)); font-weight: 650; text-decoration: underline; text-underline-offset: .2rem; }
.astro-home-faq__cta { display: flex; align-items: center; justify-content: center; gap: 1rem; margin-top: 2rem; color: hsl(var(--muted-foreground)); }
.astro-home-faq__cta a { display: inline-flex; align-items: center; gap: .4rem; color: hsl(var(--primary)); font-weight: 700; }

/* The desktop header uses three true flex columns. Equal flexible navigation
   groups keep the independent logo item centered without positional offsets. */
.astro-main-nav { display: flex; align-items: center; }
.astro-nav-logo img { height: 3rem; width: auto; }
.astro-footer-preferences {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: .75rem;
  margin: 0;
  padding: 0;
}
.astro-footer-preference-group,
.astro-footer-theme-button {
  display: flex;
  align-items: center;
  gap: .65rem;
}
.astro-footer-preference-label { color: hsl(var(--muted-foreground)); font-size: .875rem; font-weight: 600; }
.astro-footer-icon-button,
.astro-footer-theme-button {
  min-width: 2.75rem;
  min-height: 2.75rem;
  justify-content: center;
  border: 1px solid hsl(var(--border));
  border-radius: 9999px;
  color: hsl(var(--foreground));
  background: hsl(var(--background));
  transition: background-color .2s ease, border-color .2s ease;
}
.astro-footer-icon-button:hover,
.astro-footer-theme-button:hover { background: hsl(var(--accent)); border-color: hsl(var(--primary) / .35); }
.astro-footer-theme-button { padding-inline: 1rem; font-size: .875rem; font-weight: 600; }
.astro-theme-icon { display: inline-flex; width: 1.25rem; height: 1.25rem; }
.astro-theme-icon svg { display: block; width: 100%; height: 100%; }
.astro-footer-preference-divider { width: 1px; height: 2rem; background: hsl(var(--border)); }

@media (min-width: 1024px) {
  .astro-main-nav {
    min-height: 5.25rem;
    padding-top: .75rem;
    padding-bottom: .75rem;
    column-gap: clamp(1rem, 2vw, 2rem);
  }
  .astro-nav-logo {
    order: 2;
    z-index: 2;
    flex: 0 0 auto !important;
    justify-content: center;
  }
  .astro-nav-logo img { height: 3.35rem; }
  .astro-nav-links {
    width: auto;
    min-width: 0;
    flex: 1 1 0;
    align-items: center;
    column-gap: clamp(.8rem, 1.8vw, 2rem) !important;
  }
  .astro-nav-links--left { order: 1; justify-content: flex-end; }
  .astro-nav-links--right { order: 3; justify-content: flex-start; }
  .astro-nav-mobile { order: 4; }
}

@media (max-width: 1023px) {
  .astro-service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .astro-area-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 1023px) {
  .astro-main-nav { min-height: 4.75rem; justify-content: space-between; }
  .astro-main-nav::before { order: 1; width: 2.75rem; flex: 0 0 2.75rem; content: ''; }
  .astro-nav-logo { order: 2; flex: 0 0 auto !important; justify-content: center; }
  .astro-nav-logo img { height: 3.25rem; }
  .astro-nav-mobile { order: 3; width: 2.75rem; flex: 0 0 2.75rem; justify-content: flex-end; margin-left: 0; }
}

@media (max-width: 520px) {
  .astro-footer-preferences { flex-wrap: wrap; gap: .6rem; }
  .astro-footer-preference-divider { display: none; }
  .astro-home-services { padding: 3.75rem 1rem; }
  .astro-service-grid { grid-template-columns: 1fr; gap: 1.25rem; }
  .astro-service-card__actions { align-items: stretch; flex-direction: column; }
  .astro-home-areas, .astro-home-faq { padding: 3.75rem 1rem; }
  body[data-slug="index"] .astro-home-areas + .relative.isolate > .mx-auto > .relative.overflow-hidden { margin-top: 3.75rem; }
  .astro-area-grid { grid-template-columns: 1fr; }
  .astro-home-areas__quote { align-items: stretch; flex-direction: column; }
  .astro-home-areas__quote > a { justify-content: center; }
  .astro-home-faq__item > div { padding-right: .25rem; }
  .astro-home-faq__cta { align-items: stretch; flex-direction: column; text-align: center; }
  .astro-home-faq__cta a { justify-content: center; }
}
.astro-mobile-menu[hidden], .astro-lightbox[hidden], .astro-form-success[hidden] { display: none !important; }
.astro-mobile-menu { position: fixed; inset: 0; z-index: 100; }
.astro-mobile-menu__backdrop { position: fixed; inset: 0; background: hsl(var(--background)/.8); backdrop-filter: blur(4px); }
.astro-mobile-menu__panel { position: fixed; inset-block: 0; right: 0; z-index: 1; width: 100%; overflow-y: auto; padding: 1.5rem; background: hsl(var(--background)); }
@media (min-width: 640px) { .astro-mobile-menu__panel { max-width: 24rem; box-shadow: 0 0 0 1px hsl(var(--border)); } }
.astro-lightbox { position: fixed; inset: 0; z-index: 120; display: grid; place-items: center; padding: 1.5rem; background: rgba(0,0,0,.95); }
.astro-lightbox img { max-width: min(1200px, 92vw); max-height: 85vh; object-fit: contain; }
.astro-lightbox button { position: absolute; top: 1rem; right: 1rem; width: 3rem; height: 3rem; border-radius: 9999px; background: white; color: #111827; font-size: 1.75rem; }
.astro-form-error { margin-top: .75rem; color: #dc2626; font-size: .875rem; font-weight: 600; }
.astro-form-success { padding: 2rem; border: 1px solid hsl(var(--border)); border-radius: .5rem; text-align: center; }
.astro-form-success h3 { margin-bottom: .75rem; font-size: 1.5rem; font-weight: 700; }

/* vue3-google-map supplied this rule at runtime on the Nuxt site. */
.mapdiv { width: 100%; height: 100%; min-height: 500px; }
.astro-map-fallback { height: 100%; min-height: 500px; border: 1px solid hsl(var(--border)); background: hsl(var(--muted)); }
.astro-map-fallback iframe { display: block; width: 100%; height: 500px; border: 0; }

/* Server-rendered, page-specific FAQs inserted before each inner-page footer. */
.astro-page-faq { padding: clamp(4rem, 7vw, 6rem) 1.5rem; border-top: 1px solid hsl(var(--border)); background: hsl(var(--muted) / .25); }
.astro-page-faq__inner { display: grid; width: min(76rem, 100%); margin-inline: auto; grid-template-columns: minmax(16rem, .72fr) minmax(0, 1.28fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; }
.astro-page-faq__heading { position: sticky; top: 7rem; }
.astro-page-faq__heading > p { color: hsl(var(--primary)); font-size: .8rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.astro-page-faq__heading h2 { margin-top: .55rem; color: hsl(var(--foreground)); font-size: clamp(2rem, 4vw, 3rem); font-weight: 750; line-height: 1.08; letter-spacing: -.03em; }
.astro-page-faq__heading > div { margin-top: 1rem; color: hsl(var(--muted-foreground)); font-size: 1.025rem; line-height: 1.7; }
.astro-page-faq__list { border-top: 1px solid hsl(var(--border)); }
.astro-page-faq__item { border-bottom: 1px solid hsl(var(--border)); }
.astro-page-faq__item summary { display: flex; cursor: pointer; list-style: none; align-items: center; justify-content: space-between; gap: 1.5rem; padding: 1.35rem .15rem; color: hsl(var(--foreground)); font-size: 1.025rem; font-weight: 725; line-height: 1.45; }
.astro-page-faq__item summary::-webkit-details-marker { display: none; }
.astro-page-faq__item summary:hover { color: hsl(var(--primary)); }
.astro-page-faq__item summary > span:last-child { display: grid; width: 2rem; height: 2rem; flex: 0 0 2rem; place-items: center; border-radius: 9999px; background: hsl(var(--primary) / .1); color: hsl(var(--primary)); font-size: 1.35rem; font-weight: 500; transition: transform .2s ease; }
.astro-page-faq__item[open] summary > span:last-child { transform: rotate(45deg); }
.astro-page-faq__item > div { padding: 0 3.65rem 1.4rem .15rem; }
.astro-page-faq__item p { color: hsl(var(--muted-foreground)); line-height: 1.75; }

@media (max-width: 760px) {
  .astro-page-faq { padding-inline: 1rem; }
  .astro-page-faq__inner { grid-template-columns: 1fr; gap: 2rem; }
  .astro-page-faq__heading { position: static; }
  .astro-page-faq__item > div { padding-right: .15rem; }
}

/* Full-width quote and reservation flow. */
.quote-flow-shell { width: 100%; padding: clamp(3rem, 6vw, 6rem) clamp(1rem, 4vw, 4rem); background: radial-gradient(circle at 10% 0%, hsl(var(--primary) / .1), transparent 28rem), hsl(var(--background)); }
.quote-flow { width: min(90rem, 100%); margin-inline: auto; }
.quote-step-heading { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 2rem; }
.quote-step-heading > div { max-width: 52rem; }
.quote-step-heading p { color: hsl(var(--primary)); font-size: .8rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.quote-step-heading h2 { margin-top: .55rem; color: hsl(var(--foreground)); font-size: clamp(2rem, 4vw, 3.35rem); font-weight: 750; line-height: 1.05; letter-spacing: -.035em; outline: none; }
.quote-step-heading h2 + div { margin-top: 1rem; color: hsl(var(--muted-foreground)); font-size: 1.075rem; line-height: 1.7; }
.quote-change-type { flex: 0 0 auto; border-bottom: 1px solid hsl(var(--primary) / .45); color: hsl(var(--primary)); font-size: .9rem; font-weight: 750; }
.quote-change-type:hover { border-color: hsl(var(--primary)); }

.quote-progress { display: flex; margin-bottom: 3rem; overflow: hidden; border: 1px solid hsl(var(--border)); border-radius: 1rem; background: hsl(var(--card)); }
.quote-progress__item { position: relative; display: flex; min-width: 0; flex: 1; align-items: center; gap: .65rem; padding: .9rem 1rem; color: hsl(var(--muted-foreground)); }
.quote-progress__item:not(:last-child)::after { position: absolute; top: 50%; right: -.3rem; z-index: 1; width: .6rem; height: .6rem; border-top: 1px solid hsl(var(--border)); border-right: 1px solid hsl(var(--border)); background: hsl(var(--card)); content: ''; transform: translateY(-50%) rotate(45deg); }
.quote-progress__item > span { display: grid; width: 1.75rem; height: 1.75rem; flex: 0 0 1.75rem; place-items: center; border-radius: 9999px; background: hsl(var(--muted)); color: hsl(var(--muted-foreground)); font-size: .75rem; font-weight: 800; }
.quote-progress__item svg { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; }
.quote-progress__item small { overflow: hidden; font-size: .78rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.quote-progress__item.is-complete, .quote-progress__item.is-current { color: hsl(var(--foreground)); }
.quote-progress__item.is-complete > span, .quote-progress__item.is-current > span { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }

.quote-type-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(1.25rem, 3vw, 2rem); }
.quote-type-card { min-width: 0; overflow: hidden; border: 1px solid hsl(var(--border)); border-radius: 1.25rem; background: hsl(var(--card)); box-shadow: 0 24px 65px hsl(var(--foreground) / .08); transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease; }
.quote-type-card:hover { transform: translateY(-5px); border-color: hsl(var(--primary) / .55); box-shadow: 0 30px 75px hsl(var(--foreground) / .13); }
.quote-type-card__media { position: relative; display: block; aspect-ratio: 3 / 1.65; overflow: hidden; background: hsl(var(--muted)); }
.quote-type-card__media::after { position: absolute; inset: 35% 0 0; content: ''; background: linear-gradient(to top, rgba(2, 8, 20, .5), transparent); }
.quote-type-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.quote-type-card:hover .quote-type-card__media img { transform: scale(1.035); }
.quote-type-card__media > span { position: absolute; right: 1rem; bottom: 1rem; z-index: 1; padding: .45rem .7rem; border: 1px solid rgba(255,255,255,.3); border-radius: 9999px; background: rgba(2,8,20,.72); color: white; font-size: .75rem; font-weight: 750; backdrop-filter: blur(8px); }
.quote-type-card__body { position: relative; display: flex; min-height: 19rem; flex-direction: column; align-items: flex-start; padding: clamp(1.4rem, 3vw, 2.25rem); }
.quote-type-card__icon { display: grid; width: 2.75rem; height: 2.75rem; place-items: center; border-radius: .8rem; background: hsl(var(--primary) / .12); color: hsl(var(--primary)); }
.quote-type-card__icon svg { width: 1.45rem; height: 1.45rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }
.quote-type-card h3 { margin-top: 1.25rem; color: hsl(var(--foreground)); font-size: 1.65rem; font-weight: 750; letter-spacing: -.025em; }
.quote-type-card p { margin: .7rem 0 1.5rem; color: hsl(var(--muted-foreground)); line-height: 1.7; }
.quote-type-card .quote-button { width: 100%; margin-top: auto; }

.quote-panel, .quote-review-card, .quote-map-card { border: 1px solid hsl(var(--border)); background: hsl(var(--card)); box-shadow: 0 18px 50px hsl(var(--foreground) / .06); }
.quote-panel { padding: clamp(1.25rem, 4vw, 3rem); border-radius: 1.25rem; }
.quote-fields { display: grid; gap: 1.4rem; }
.quote-fields--two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.quote-fields--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.quote-field { display: flex; min-width: 0; flex-direction: column; gap: .55rem; color: hsl(var(--foreground)); font-size: .875rem; font-weight: 700; }
.quote-field > span small { color: hsl(var(--muted-foreground)); font-weight: 550; }
.quote-field input, .quote-field select, .quote-stop-row input { width: 100%; min-height: 3.25rem; border: 1px solid hsl(var(--border)); border-radius: .7rem; padding: .75rem .9rem; outline: none; background: hsl(var(--background)); color: hsl(var(--foreground)); font-size: 1rem; font-weight: 450; transition: border-color .2s ease, box-shadow .2s ease; }
.quote-field input::placeholder, .quote-stop-row input::placeholder { color: hsl(var(--muted-foreground) / .72); }
.quote-field input:focus, .quote-field select:focus, .quote-stop-row input:focus { border-color: hsl(var(--primary)); box-shadow: 0 0 0 3px hsl(var(--primary) / .14); }
[data-conditional-field]:empty { display: none; }
[data-conditional-field] .quote-field { height: 100%; }

.quote-extras { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem; margin-top: 2.5rem; padding-top: 2rem; border-top: 1px solid hsl(var(--border)); }
.quote-extras h3, .quote-client h3 { margin-bottom: 1rem; color: hsl(var(--foreground)); font-size: 1.05rem; font-weight: 750; }
.quote-check { display: flex; align-items: center; gap: .7rem; margin: .75rem 0; color: hsl(var(--muted-foreground)); font-size: .9rem; }
.quote-check input { width: 1.05rem; height: 1.05rem; accent-color: hsl(var(--primary)); }
.quote-extras .quote-field { margin-top: 1rem; }
.quote-stops { display: flex; flex-direction: column; gap: .65rem; }
.quote-stop-row { display: flex; align-items: center; gap: .6rem; }
.quote-stop-row button { display: grid; width: 2.75rem; height: 2.75rem; flex: 0 0 2.75rem; place-items: center; border-radius: 9999px; color: #dc2626; font-size: 1.4rem; }
.quote-stop-row button:hover { background: rgba(220,38,38,.1); }
.quote-add-stop { margin-top: .8rem; color: hsl(var(--primary)); font-size: .875rem; font-weight: 750; }
.quote-client { margin-top: 2.5rem; padding-top: 2rem; border-top: 1px solid hsl(var(--border)); }
.quote-client > p { margin: -.5rem 0 1.4rem; color: hsl(var(--muted-foreground)); }

.quote-actions { display: flex; align-items: center; justify-content: flex-end; gap: .8rem; margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid hsl(var(--border)); }
.quote-button { display: inline-flex; min-height: 3rem; align-items: center; justify-content: center; gap: .45rem; border: 1px solid transparent; border-radius: 9999px; padding: .72rem 1.25rem; font-size: .9rem; font-weight: 750; transition: transform .2s ease, opacity .2s ease, background-color .2s ease, border-color .2s ease; }
.quote-button svg { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; }
.quote-button:hover { transform: translateY(-1px); }
.quote-button:disabled { cursor: wait; opacity: .6; transform: none; }
.quote-button--primary { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }
.quote-button--primary:hover { opacity: .88; }
.quote-button--secondary { border-color: hsl(var(--border)); background: hsl(var(--background)); color: hsl(var(--foreground)); }
.quote-button--secondary:hover { border-color: hsl(var(--primary) / .45); background: hsl(var(--accent)); }
.quote-error { grid-column: 1 / -1; margin-bottom: 1rem; padding: .75rem 1rem; border: 1px solid rgba(220,38,38,.3); border-radius: .65rem; background: rgba(220,38,38,.08); color: #dc2626; font-size: .875rem; font-weight: 650; }

.quote-vehicle-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.quote-vehicle-card { position: relative; display: grid; min-width: 0; cursor: pointer; grid-template-columns: 11rem minmax(0, 1fr); overflow: hidden; border: 1px solid hsl(var(--border)); border-radius: 1rem; background: hsl(var(--background)); transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.quote-vehicle-card:hover { transform: translateY(-2px); border-color: hsl(var(--primary) / .45); }
.quote-vehicle-card.is-selected { border-color: hsl(var(--primary)); box-shadow: 0 0 0 3px hsl(var(--primary) / .12); }
.quote-vehicle-card > input { position: absolute; opacity: 0; pointer-events: none; }
.quote-vehicle-card__media { min-height: 12rem; overflow: hidden; background: hsl(var(--muted)); }
.quote-vehicle-card__media img { width: 100%; height: 100%; object-fit: cover; }
.quote-vehicle-card__body { display: flex; min-width: 0; flex-direction: column; padding: 1.4rem; }
.quote-vehicle-card__body strong { color: hsl(var(--foreground)); font-size: 1.15rem; }
.quote-vehicle-card__body > span { margin-top: .55rem; color: hsl(var(--muted-foreground)); font-size: .875rem; line-height: 1.55; }
.quote-vehicle-card__body small { margin-top: auto; padding-top: 1rem; color: hsl(var(--muted-foreground)); }
.quote-vehicle-card__check { position: absolute; top: .75rem; right: .75rem; display: none; width: 1.8rem; height: 1.8rem; place-items: center; border-radius: 9999px; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }
.quote-vehicle-card.is-selected .quote-vehicle-card__check { display: grid; }
.quote-vehicle-card__check svg { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.2; }

.quote-review-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.quote-review-card { border-radius: 1rem; padding: 1.35rem; }
.quote-review-card > div { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-bottom: .9rem; border-bottom: 1px solid hsl(var(--border)); }
.quote-review-card h3 { color: hsl(var(--foreground)); font-weight: 750; }
.quote-review-card button { color: hsl(var(--primary)); font-size: .8rem; font-weight: 750; }
.quote-review-card dl { display: flex; flex-direction: column; }
.quote-review-row { display: grid; grid-template-columns: minmax(7rem, .38fr) minmax(0, 1fr); gap: 1rem; padding-top: .9rem; }
.quote-review-row dt { color: hsl(var(--muted-foreground)); font-size: .8rem; font-weight: 650; }
.quote-review-row dd { overflow-wrap: anywhere; color: hsl(var(--foreground)); font-size: .9rem; font-weight: 600; }
.quote-map-card { overflow: hidden; margin-top: 1rem; border-radius: 1rem; }
.quote-map-card > div:first-child { padding: 1.1rem 1.35rem; border-bottom: 1px solid hsl(var(--border)); }
.quote-map-card > div:first-child p { color: hsl(var(--foreground)); font-weight: 750; }
.quote-map-card > div:first-child span { display: block; margin-top: .3rem; overflow: hidden; color: hsl(var(--muted-foreground)); font-size: .82rem; text-overflow: ellipsis; white-space: nowrap; }
.quote-review-map { height: clamp(20rem, 42vw, 30rem); background: hsl(var(--muted)); }
.quote-review-map iframe { display: block; width: 100%; height: 100%; border: 0; }
.quote-review-actions > .quote-actions { margin-top: 1rem; padding: 1.25rem; border: 1px solid hsl(var(--border)); border-radius: 1rem; background: hsl(var(--card)); }
.quote-error--submit { margin: 1rem 0 0; }
.quote-success { max-width: 42rem; margin-inline: auto; padding: clamp(3rem, 7vw, 6rem) 1.5rem; text-align: center; }
.quote-success > span { display: grid; width: 4.25rem; height: 4.25rem; margin: 0 auto 1.5rem; place-items: center; border-radius: 9999px; background: hsl(var(--primary) / .12); color: hsl(var(--primary)); }
.quote-success > span svg { width: 2.25rem; height: 2.25rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; }
.quote-success > p { color: hsl(var(--primary)); font-size: .8rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.quote-success h2 { margin-top: .6rem; color: hsl(var(--foreground)); font-size: clamp(2rem, 4vw, 3rem); font-weight: 750; }
.quote-success > div { margin-top: 1rem; color: hsl(var(--muted-foreground)); font-size: 1.05rem; line-height: 1.7; }
.quote-success > a { display: inline-flex; margin-top: 1.75rem; color: hsl(var(--primary)); font-weight: 750; }

@media (max-width: 900px) {
  .quote-fields--three { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .quote-vehicle-card { grid-template-columns: 8rem minmax(0, 1fr); }
}
@media (max-width: 700px) {
  .quote-flow-shell { padding-block: 3rem; }
  .quote-step-heading { align-items: flex-start; flex-direction: column; gap: 1rem; }
  .quote-type-grid, .quote-fields--two, .quote-fields--three, .quote-extras, .quote-vehicle-grid, .quote-review-grid { grid-template-columns: 1fr; }
  .quote-progress { margin-bottom: 2rem; overflow-x: auto; }
  .quote-progress__item { min-width: 4rem; justify-content: center; padding-inline: .65rem; }
  .quote-progress__item small { display: none; }
  .quote-type-card__body { min-height: 0; }
  .quote-field-spacer { display: none; }
  .quote-actions { align-items: stretch; flex-direction: column-reverse; }
  .quote-actions .quote-button { width: 100%; }
}
@media (max-width: 460px) {
  .quote-vehicle-card { grid-template-columns: 1fr; }
  .quote-vehicle-card__media { min-height: 10rem; }
  .quote-review-row { grid-template-columns: 1fr; gap: .25rem; }
}
