/* ==========================================================================
   Valencia Car Wash & Oil Change — Global Styles
   ========================================================================== */

:root {
  --primary: #02537E;
  --primary-dark: #013A59;
  --primary-light: #E6F0F5;
  --white: #FFFFFF;
  --text: #1A1A1A;
  --muted: #6B7280;
  --gold: #F5C451;
}

/* Base
   -------------------------------------------------------------------------- */
html {
  scroll-behavior: smooth;
  /* offset anchor jumps so content isn't hidden under the sticky navbar */
  scroll-padding-top: 90px;
  /* NOTE: no `scrollbar-gutter: stable` here. Bootstrap already compensates for
     the scrollbar it removes when a modal or offcanvas opens; reserving a gutter
     as well left a blank strip down the right edge while the dialog was open. */
}

body {
  font-family: "Inter", system-ui, -apple-system, sans-serif;
  color: var(--text);
  margin: 0;
  /* Guard against sideways scroll from wide decorative glows/marquees.
     `clip` (not `hidden`) — `hidden` would make body a scroll container and
     break the sticky site header. */
  overflow-x: clip;
}

/* Bootstrap pads <body> by (window.innerWidth - documentElement.clientWidth)
   when a modal or offcanvas opens, to stand in for the scrollbar it hides. On
   mobile browsers those two numbers differ because of the visual-viewport
   scale, not a scrollbar — the birthday popup ended up pushing the page ~112px
   left and leaving a blank strip down the right. Phones and tablets use overlay
   scrollbars and never need the compensation, so drop it there. Desktop, where
   the scrollbar really does take space, keeps Bootstrap's behaviour. */
@media (max-width: 991.98px) {
  body {
    padding-right: 0 !important;
  }
}

/* Never let an image force the page wider than the viewport */
img {
  max-width: 100%;
}

h1, h2, h3, h4, h5, h6 {
  font-family: "Poppins", system-ui, sans-serif;
}

a {
  text-decoration: none;
}

/* Accessibility: disable scroll animations when reduced motion is requested */
@media (prefers-reduced-motion: reduce) {
  [data-aos] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  /* Also stop the partner marquee and the WhatsApp pulse ring */
  .clients-track,
  .whatsapp-float::before {
    animation: none !important;
  }
  html {
    scroll-behavior: auto;
  }
}

/* ==========================================================================
   HEADER
   ========================================================================== */

/* Top bar
   -------------------------------------------------------------------------- */
.top-bar {
  background-color: var(--primary-dark);
  color: var(--white);
  font-size: 0.875rem;
}

.top-bar .container {
  min-height: 42px;
  flex-wrap: wrap;
}

.top-bar-info {
  gap: 1.5rem;
}

.top-bar-item {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  color: var(--white);
}

.top-bar-item i {
  color: var(--gold);
}

.top-bar-item:hover {
  color: var(--primary-light);
}

.top-bar-social {
  gap: 1rem;
}

.top-bar-social a {
  color: var(--gold);
  font-size: 1rem;
  line-height: 1;
  transition: color 0.2s ease;
}

.top-bar-social a:hover {
  color: var(--primary-light);
}

/* Hide hours on small screens, keep phone + social */
@media (max-width: 575.98px) {
  .top-bar-hours {
    display: none !important;
  }
}

/* Wherever the burger shows, the top bar is redundant — the slide-in nav panel
   already carries the address, hours, phone and socials. Dropping it also gives
   the sticky header back ~42-70px of screen. */
@media (max-width: 1199.98px) {
  .top-bar {
    display: none;
  }
}

/* Main navbar
   -------------------------------------------------------------------------- */
/* Whole header sticks to top (navbar alone can't stick past the short header box) */
.site-header {
  position: sticky;
  top: 0;
  z-index: 1030;
}

.main-navbar {
  background-color: var(--white);
  padding-top: 0.65rem;
  padding-bottom: 0.65rem;
  transition: box-shadow 0.25s ease, padding 0.25s ease;
}

/* Subtle shadow + tighter padding once the user scrolls (toggled in JS) */
.main-navbar.scrolled {
  box-shadow: 0 2px 14px rgba(1, 58, 89, 0.12);
  padding-top: 0.4rem;
  padding-bottom: 0.4rem;
}

.brand-logo {
  height: 90px;
  width: auto;
  margin-right: 0.65rem;
}

.brand-name {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 1.15rem;
  color: var(--primary);
  line-height: 1.1;
}

.brand-name-sub {
  color: var(--muted);
  font-weight: 600;
}

.main-navbar .navbar-nav {
  gap: 1.5rem;
}

.main-navbar .nav-link {
  font-weight: 500;
  font-size: 17px;
  color: var(--text);
  padding: 0.5rem 1.35rem;
  position: relative;
}

.main-navbar .nav-link:hover,
.main-navbar .nav-link:focus {
  color: var(--primary);
}

/* Primary navbar CTA (Book Appointment)
   inline-flex so the icon is centred against the label instead of sitting on
   the text baseline, which is what made it look bolted on. */
.btn-call {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: var(--white);
  font-weight: 600;
  border: none;
  border-radius: 50px;
  padding: 0.62rem 1.5rem;
  white-space: nowrap;
  box-shadow: 0 8px 18px rgba(2, 83, 126, 0.25);
  transition: box-shadow 0.2s ease, transform 0.2s ease, filter 0.2s ease;
}

/* Icon in its own circle — reads as a button affordance at 16px, where a bare
   glyph just looks like stray punctuation. */
.btn-call i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.18);
  font-size: 0.82rem;
  line-height: 1;
  transition: background-color 0.2s ease, transform 0.2s ease;
}

.btn-call:hover,
.btn-call:focus {
  color: var(--white);
  filter: brightness(1.08);
  transform: translateY(-2px);
  box-shadow: 0 14px 26px rgba(2, 83, 126, 0.34);
}
.btn-call:hover i,
.btn-call:focus i { background: var(--gold); color: var(--primary-dark); transform: scale(1.06); }

.nav-cta {
  margin-left: 0.75rem;
}

@media (max-width: 1199.98px) {
  .nav-cta {
    margin-left: 0;
    margin-top: 0.5rem;
  }
  .btn-call {
    display: inline-block;
  }
}

/* Dropdown menus
   -------------------------------------------------------------------------- */
.main-navbar .dropdown-menu {
  border: none;
  border-radius: 0.5rem;
  box-shadow: 0 8px 24px rgba(1, 58, 89, 0.15);
  padding: 0.4rem 0;
  margin-top: 0.35rem;
}

.main-navbar .dropdown-item {
  font-weight: 500;
  color: var(--text);
  padding: 0.5rem 1.1rem;
}

.main-navbar .dropdown-item:hover,
.main-navbar .dropdown-item:focus {
  background-color: var(--primary-light);
  color: var(--primary);
}

.main-navbar .dropdown-toggle::after {
  margin-left: 0.35rem;
  vertical-align: middle;
}

/* Open dropdown on hover — desktop only (where the menu is not collapsed) */
@media (min-width: 1200px) {
  /* keep menu in the DOM so it can animate; hide via opacity, not display */
  .hover-dropdown > .dropdown-menu {
    display: block;
    margin-top: 0;
    top: 100%;
    opacity: 0;
    visibility: hidden;
    transform: translateY(10px);
    transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s;
    pointer-events: none;
  }

  .hover-dropdown:hover > .dropdown-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    pointer-events: auto;
  }

  /* stagger each item in on reveal */
  .hover-dropdown > .dropdown-menu .dropdown-item {
    opacity: 0;
    transform: translateY(6px);
    transition: opacity 0.25s ease, transform 0.25s ease;
  }

  .hover-dropdown:hover > .dropdown-menu .dropdown-item {
    opacity: 1;
    transform: translateY(0);
  }

  .hover-dropdown:hover > .dropdown-menu .dropdown-item {
    transition-delay: 0.06s;
  }
  .hover-dropdown:hover > .dropdown-menu li:nth-child(2) .dropdown-item { transition-delay: 0.10s; }
  .hover-dropdown:hover > .dropdown-menu li:nth-child(3) .dropdown-item { transition-delay: 0.14s; }
  .hover-dropdown:hover > .dropdown-menu li:nth-child(4) .dropdown-item { transition-delay: 0.18s; }
  .hover-dropdown:hover > .dropdown-menu li:nth-child(5) .dropdown-item { transition-delay: 0.22s; }

  /* subtle slide on the item itself when hovered */
  .main-navbar .dropdown-item {
    transition: background-color 0.2s ease, color 0.2s ease, padding-left 0.2s ease;
  }
  .main-navbar .dropdown-item:hover {
    padding-left: 1.4rem;
  }
}

/* Empty anchor targets for nav links — no height until filled in later phases */
.section-placeholder {
  min-height: 0;
}

/* ==========================================================================
   HERO SLIDER
   ========================================================================== */
.hero-slider {
  width: 100%;
  height: 85vh;
  min-height: 500px;
}

.hero-slide {
  position: relative;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  display: flex;
  align-items: center;
}

/* Dark blue gradient overlay for text readability */
.hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    rgba(1, 58, 89, 0.75) 0%,
    rgba(2, 83, 126, 0.55) 60%,
    rgba(2, 83, 126, 0.4) 100%
  );
  z-index: 1;
}

.hero-content {
  position: relative;
  z-index: 2;
  text-align: left; /* override Swiper's default centering */
  color: var(--white);
}

/* Animate hero text in on the active slide (stagger title → text → button) */
.hero-content > * {
  opacity: 0;
  transform: translateY(28px);
}

.swiper-slide-active .hero-content > * {
  animation: heroTextIn 0.8s ease-out forwards;
}

.swiper-slide-active .hero-content > .hero-title { animation-delay: 0.25s; }
.swiper-slide-active .hero-content > .hero-text  { animation-delay: 0.45s; }
.swiper-slide-active .hero-content > .btn-hero   { animation-delay: 0.65s; }

@keyframes heroTextIn {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero-content > * {
    opacity: 1;
    transform: none;
    animation: none;
  }
}

.hero-title {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: clamp(1.9rem, 5vw, 3.4rem);
  line-height: 1.1;
  margin-bottom: 1rem;
  max-width: 620px; /* constrain text, block stays left-aligned */
}

.hero-text {
  font-size: clamp(1rem, 1.6vw, 1.2rem);
  color: rgba(255, 255, 255, 0.85);
  margin-bottom: 1.75rem;
  max-width: 540px;
}

/* Book Now button — white with blue text */
.btn-hero {
  display: inline-block;
  background-color: var(--white);
  color: var(--primary);
  font-weight: 600;
  border-radius: 50px;
  padding: 0.75rem 2rem;
  font-size: 1.05rem;
  transition: background-color 0.2s ease, color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.btn-hero:hover,
.btn-hero:focus {
  background-color: var(--primary);
  color: var(--white);
  transform: translateY(-2px);
  box-shadow: 0 0 24px rgba(2, 83, 126, 0.65);
}

/* Swiper arrows — branded */
.hero-slider .swiper-button-prev,
.hero-slider .swiper-button-next {
  color: var(--white);
  width: 48px;
  height: 48px;
  background-color: rgba(2, 83, 126, 0.55);
  border-radius: 50%;
  transition: background-color 0.2s ease;
}

.hero-slider .swiper-button-prev:hover,
.hero-slider .swiper-button-next:hover {
  background-color: var(--primary);
}

.hero-slider .swiper-button-prev::after,
.hero-slider .swiper-button-next::after {
  font-size: 1.25rem;
  font-weight: 700;
}

/* Swiper pagination dots — branded */
.hero-slider .swiper-pagination-bullet {
  background-color: var(--white);
  opacity: 0.6;
  width: 11px;
  height: 11px;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.hero-slider .swiper-pagination-bullet-active {
  background-color: var(--white);
  opacity: 1;
  transform: scale(1.25);
}

/* Responsive: shorter on mobile, hide arrows on small screens */
@media (max-width: 767.98px) {
  .hero-slider {
    height: 70vh;
    min-height: 420px;
  }
  .hero-slider .swiper-button-prev,
  .hero-slider .swiper-button-next {
    display: none;
  }
}

/* ==========================================================================
   SHARED SECTION HELPERS
   ========================================================================== */
.eyebrow {
  display: inline-block;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
  font-size: 0.8rem;
  color: var(--primary);
  margin-bottom: 0.75rem;
}

/* Pill eyebrow (dot + label) — used on every section header */
.eyebrow-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background-color: var(--primary-light);
  color: var(--primary);
  padding: 0.45rem 1.1rem 0.45rem 0.85rem;
  border-radius: 50px;
  margin-bottom: 1rem;
}

.eyebrow-pill i {
  margin-right: 0.35rem;
}

/* On sections whose background is already --primary-light (Services, AutoCare) */
.eyebrow-pill-inverse {
  background-color: var(--white);
  color: var(--primary);
}

/* On dark gradient sections (Location, Videos, Reviews) */
.eyebrow-pill-dark {
  background-color: rgba(255, 255, 255, 0.15);
  color: var(--white);
}

.eyebrow-pill-dot {
  width: 7px;
  height: 7px;
  flex: 0 0 auto;
  border-radius: 50%;
  background-color: var(--gold);
}

/* Two-tone heading accent — wrap the key term/phrase in this span */
.accent-gold {
  color: var(--gold);
}

.section-title {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: clamp(1.6rem, 3.5vw, 2.5rem);
  line-height: 1.15;
  color: #023D5D;
  margin-bottom: 1.1rem;
}

.section-text {
  color: var(--muted);
  font-size: 1.02rem;
  line-height: 1.7;
  margin-bottom: 1rem;
}

/* Solid brand-blue button */
.btn-primary-brand {
  display: inline-block;
  background-color: var(--primary);
  color: var(--white);
  font-weight: 600;
  border-radius: 50px;
  padding: 0.7rem 1.9rem;
  transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.btn-primary-brand:hover,
.btn-primary-brand:focus {
  background-color: var(--primary-dark);
  color: var(--white);
  transform: translateY(-2px);
  box-shadow: 0 0 24px rgba(2, 83, 126, 0.6);
}

/* ==========================================================================
   ABOUT US (light)
   ========================================================================== */
.about-section {
  background-color: var(--white);
  padding: 80px 0;
}

.about-image-wrap {
  position: relative;
}

.about-image {
  width: 100%;
  height: auto;
  border-radius: 16px;
  box-shadow: 0 18px 40px rgba(1, 58, 89, 0.18);
  display: block;
}

.about-badge {
  position: absolute;
  bottom: -18px;
  right: 22px;
  background-color: var(--primary);
  color: var(--white);
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  padding: 0.6rem 1.2rem;
  border-radius: 50px;
  box-shadow: 0 8px 20px rgba(1, 58, 89, 0.25);
}

.about-highlights {
  list-style: none;
  padding: 0;
  margin: 0 0 1.75rem;
}

.about-highlights li {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  font-weight: 500;
  color: var(--text);
  margin-bottom: 0.7rem;
}

.about-highlights li i {
  color: var(--primary);
  font-size: 1.15rem;
}

/* ==========================================================================
   SERVICES (dark) — Swiper cards
   ========================================================================== */
.services-section {
  background-color: var(--primary-light);
  padding: 90px 0;
}

.services-header {
  max-width: 640px;
  margin: 0 auto 2.5rem;
}

.services-subtitle {
  color: var(--muted);
  margin-bottom: 0;
}

.services-swiper {
  position: relative;
  padding: 10px 0 60px;
}

/* Slides stretch to the tallest card so every card in the row lines up. */
.services-swiper .swiper-slide {
  height: auto;
}

.service-card {
  background-color: var(--white);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 10px 26px rgba(0, 0, 0, 0.2);
  height: 100%;
  display: flex;
  flex-direction: column;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.service-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 18px 38px rgba(0, 0, 0, 0.3);
}

.service-img {
  height: 340px;
  background-size: 100% 100%;
  background-position: center;
  background-repeat: no-repeat;
  background-color: var(--primary-light);
}

.service-body {
  padding: 1.5rem;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
}

.service-title {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-size: 1.2rem;
  color: var(--text);
  margin-bottom: 0.5rem;
  /* Two lines max, so a long name can't push one card taller than the rest. */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Clamped to 3 lines and reserving that height, so short and long copy
   produce the same card and every "Learn More" sits on the same line. */
.service-desc {
  color: var(--muted);
  font-size: 0.95rem;
  line-height: 1.6;
  margin-bottom: 1rem;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: calc(0.95rem * 1.6 * 3);
}

.service-link {
  margin-top: auto;
  align-self: flex-start;
  font-weight: 600;
  color: var(--primary);
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  transition: gap 0.2s ease, color 0.2s ease;
}

.service-link:hover {
  color: var(--primary-dark);
  gap: 0.6rem;
}

/* Services Swiper controls — branded for light bg */
.services-swiper .swiper-button-prev,
.services-swiper .swiper-button-next {
  color: var(--primary);
  width: 44px;
  height: 44px;
  background-color: var(--white);
  border-radius: 50%;
  box-shadow: 0 4px 14px rgba(1, 58, 89, 0.15);
  top: 40%;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.services-swiper .swiper-button-prev:hover,
.services-swiper .swiper-button-next:hover {
  background-color: var(--primary);
  color: var(--white);
}

.services-swiper .swiper-button-prev::after,
.services-swiper .swiper-button-next::after {
  font-size: 1.1rem;
  font-weight: 700;
}

.services-swiper .swiper-pagination {
  bottom: 0;
}

.services-swiper .swiper-pagination-bullet {
  background-color: var(--primary);
  opacity: 0.4;
  width: 10px;
  height: 10px;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.services-swiper .swiper-pagination-bullet-active {
  opacity: 1;
  transform: scale(1.25);
}

@media (max-width: 767.98px) {
  .services-swiper .swiper-button-prev,
  .services-swiper .swiper-button-next {
    display: none;
  }
}

/* ==========================================================================
   TRUSTED CLIENTS — CSS marquee (two rows, square tiles)
   ========================================================================== */
.clients-section {
  background-color: var(--white);
  padding: 85px 0;
  overflow: hidden;
}

.clients-header {
  max-width: 640px;
  margin: 0 auto 2.5rem;
}

.clients-subtitle {
  margin-bottom: 0;
}

/* Row wrapper: clip + edge fade */
.clients-marquee {
  overflow: hidden;
  padding: 0.5rem 0;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.clients-marquee + .clients-marquee {
  margin-top: 1.25rem;
}

/* Track = two copies (200% wide) */
.clients-track {
  display: flex;
  width: max-content;
}

.clients-track-left {
  animation: clients-scroll-left 40s linear infinite;
}

.clients-track-right {
  animation: clients-scroll-right 40s linear infinite;
}

.clients-marquee:hover .clients-track {
  animation-play-state: paused;
}

@keyframes clients-scroll-left {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

@keyframes clients-scroll-right {
  from { transform: translateX(-50%); }
  to   { transform: translateX(0); }
}

/* Uniform tiles, grayscale logos that bloom to color on hover */
.client-tile {
  flex: 0 0 auto;
  width: 150px;
  height: 90px;
  margin: 0 10px;
  background-color: var(--white);
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  box-shadow: 0 4px 14px rgba(1, 58, 89, 0.06);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.client-tile:hover {
  transform: translateY(-4px);
  box-shadow: 0 10px 24px rgba(1, 58, 89, 0.16);
}

.client-tile img {
  max-width: 100%;
  max-height: 50px;
  object-fit: contain;
}

@media (max-width: 575.98px) {
  .client-tile {
    width: 110px;
    height: 70px;
    margin: 0 10px;
    padding: 12px;
  }

  .client-tile img {
    max-height: 38px;
  }
}

/* ==========================================================================
   CAR WASH NEAR ME — location + map + form
   ========================================================================== */
.location-section {
  background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: var(--white);
  padding: 90px 0;
}

/* dark-mode header text */
.location-section .section-title { color: var(--white); }
.location-section .location-subtitle { color: rgba(255, 255, 255, 0.82); }

.location-header {
  max-width: 640px;
  margin: 0 auto 2.5rem;
}

.location-subtitle {
  margin-bottom: 0;
}

.location-card {
  background-color: var(--white);
  border-radius: 16px;
  border-left: 5px solid var(--primary);
  padding: 2rem;
  height: 100%;
  box-shadow: 0 10px 28px rgba(1, 58, 89, 0.1);
  animation: card-glow 2.2s ease-in-out infinite;
}

/* Pulsing glow on the left border */
@keyframes card-glow {
  0%, 100% {
    box-shadow: 0 10px 28px rgba(1, 58, 89, 0.1),
                -6px 0 14px -4px rgba(2, 83, 126, 0.45);
  }
  50% {
    box-shadow: 0 10px 28px rgba(1, 58, 89, 0.1),
                -6px 0 24px 2px rgba(2, 83, 126, 0.85);
  }
}

.location-city {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 1.5rem;
  color: var(--primary);
  margin-bottom: 0.85rem;
}

.location-contact {
  list-style: none;
  padding: 0;
  margin: 1.25rem 0;
}

.location-contact li {
  display: flex;
  align-items: flex-start;
  gap: 0.7rem;
  margin-bottom: 0.85rem;
  color: var(--text);
}

.location-contact li i {
  color: var(--primary);
  font-size: 1.1rem;
  margin-top: 0.15rem;
}

.location-contact a {
  color: var(--text);
  transition: color 0.2s ease;
}

.location-contact a:hover {
  color: var(--primary);
}

.location-hours {
  background-color: var(--primary-light);
  border-radius: 12px;
  padding: 1.25rem 1.5rem;
  margin-bottom: 1.5rem;
}

.hours-title {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-size: 1.1rem;
  color: var(--primary-dark);
  margin-bottom: 0.85rem;
}

.hours-title i {
  margin-right: 0.4rem;
}

.hours-list {
  list-style: none;
  padding: 0;
  margin: 0 0 0.75rem;
}

.hours-list li {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.35rem 0;
  border-bottom: 1px dashed rgba(2, 83, 126, 0.15);
  font-size: 0.95rem;
  color: var(--text);
}

.hours-list li:last-child {
  border-bottom: none;
}

.hours-list li span:last-child {
  font-weight: 600;
  white-space: nowrap;
}

.hours-note {
  font-size: 0.88rem;
  color: var(--muted);
  margin: 0;
}

/* Map — fills full column height to match the info card */
.location-map {
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 10px 28px rgba(1, 58, 89, 0.1);
  height: 100%;
  min-height: 300px;
}

.location-map iframe {
  width: 100%;
  height: 100%;
  min-height: 300px;
  border: 0;
  display: block;
}

/* ==========================================================================
   BIRTHDAY WASH — ticket-style voucher
   ========================================================================== */
.birthday-section {
  position: relative;
  overflow: hidden;
  padding: 90px 0;
  background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: var(--white);
  /* backing color behind the ticket — drives the die-cut notch fill */
  --ticket-bg: var(--primary-dark);
}

.birthday-header {
  max-width: 640px;
  margin: 0 auto 2.75rem;
}

.birthday-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  background-color: rgba(245, 196, 81, 0.15);
  border: 1px solid rgba(245, 196, 81, 0.4);
  color: var(--gold);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.78rem;
  font-weight: 600;
  padding: 0.45rem 1.1rem;
  border-radius: 50px;
  margin-bottom: 1.25rem;
}

.birthday-subtitle {
  color: rgba(255, 255, 255, 0.82);
  margin: 0 auto;
  max-width: 620px;
}

/* Ticket sits directly on the dark section */
.ticket-stage {
  max-width: 900px;
  margin: 0 auto;
}

/* The ticket */
.birthday-ticket {
  position: relative;
  display: flex;
  align-items: stretch;
  border-radius: 16px;
  box-shadow: 0 10px 28px rgba(1, 58, 89, 0.18);
  overflow: hidden;
}

/* Left tab — vertical BIRTHDAY */
.ticket-tab {
  flex: 0 0 64px;
  background-color: var(--primary);
  display: flex;
  align-items: center;
  justify-content: center;
}

.ticket-tab span {
  transform: rotate(-90deg);
  white-space: nowrap;
  color: var(--white);
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  font-size: 0.95rem;
}

/* Perforation between tab and body */
.ticket-perf {
  position: relative;
  width: 0;
  border-left: 2px dashed rgba(2, 83, 126, 0.4);
  margin: 0;
  z-index: 3;
}

/* Die-cut punch holes (filled with backing color) */
.ticket-notch {
  position: absolute;
  left: -11px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background-color: var(--ticket-bg);
}
.ticket-notch-top { top: -10px; }
.ticket-notch-bottom { bottom: -10px; }

/* Body with halftone dots */
.ticket-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1.75rem;
  min-height: 340px;
  padding: 2.5rem 2.25rem;
  background-color: var(--white);
  background-image: radial-gradient(#02537E18 1.5px, transparent 1.5px);
  background-size: 13px 13px;
}

/* Top row: offer left, value right */
.ticket-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  flex-wrap: wrap;
}

/* Disclaimer sits on the ticket */
.ticket-disclaimer {
  margin: 0;
  padding-top: 1.25rem;
  border-top: 1px dashed rgba(2, 83, 126, 0.25);
  color: var(--muted);
  font-size: 0.78rem;
  line-height: 1.6;
}

.ticket-eyebrow {
  display: block;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--primary);
  margin-bottom: 0.4rem;
}

.ticket-free {
  display: block;
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: clamp(2rem, 5vw, 2.8rem);
  line-height: 1;
  color: var(--primary-dark);
  margin-bottom: 0.5rem;
}

.ticket-terms {
  color: var(--muted);
  font-size: 0.92rem;
  margin-bottom: 1.1rem;
}

/* Gold CTA */
.btn-ticket {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  background-color: var(--gold);
  color: var(--primary-dark);
  font-weight: 700;
  border-radius: 50px;
  padding: 0.7rem 1.75rem;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.btn-ticket:hover,
.btn-ticket:focus {
  color: var(--primary-dark);
  transform: translateY(-2px);
  box-shadow: 0 0 26px rgba(245, 196, 81, 0.75);
}

/* Right side of body */
.ticket-side {
  text-align: center;
}

.ticket-stars {
  color: var(--gold);
  font-size: 1.05rem;
  letter-spacing: 0.15rem;
  margin-bottom: 0.85rem;
}

.ticket-value {
  border: 1.5px dashed var(--primary);
  border-radius: 12px;
  padding: 0.85rem 1.5rem;
}

.value-label {
  display: block;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--muted);
}

.value-amount {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 2rem;
  color: var(--primary-dark);
}

.birthday-disclaimer {
  text-align: center;
  color: var(--muted);
  font-size: 0.8rem;
  line-height: 1.6;
  max-width: 760px;
  margin: 1.75rem auto 0;
}

/* Mobile: the side-by-side ticket falls apart on a phone — the rotated stub
   eats ~64px of an already narrow card, the CTA wraps onto two lines, and the
   stars/value block gets squeezed into a column. Below 576px the ticket becomes
   a top-to-bottom stub, so the body keeps the full width. */
@media (max-width: 575.98px) {
  .ticket-stage { padding: 0; }

  .birthday-ticket {
    flex-direction: column;
    border-radius: 18px;
  }

  /* Stub across the top instead of down the side */
  .ticket-tab {
    flex: 0 0 auto;
    padding: 0.6rem 1rem;
  }
  .ticket-tab span {
    transform: none;
    font-size: 0.75rem;
    letter-spacing: 0.24em;
  }

  /* Perforation runs horizontally, notches move to the left/right edges */
  .ticket-perf {
    width: auto;
    height: 0;
    border-left: 0;
    border-top: 2px dashed rgba(2, 83, 126, 0.4);
  }
  .ticket-notch { left: auto; top: -10px; }
  .ticket-notch-top { left: -11px; }
  .ticket-notch-bottom { right: -11px; bottom: auto; }

  .ticket-body {
    min-height: 0;
    gap: 1.25rem;
    padding: 1.6rem 1.25rem 1.4rem;
    text-align: center;
  }

  .ticket-top {
    flex-direction: column;
    align-items: stretch;
    gap: 1.25rem;
  }

  .ticket-free { font-size: 2.4rem; }
  .ticket-terms { margin-bottom: 1rem; }

  /* Full-width CTA so the label never wraps */
  .btn-ticket {
    display: flex;
    justify-content: center;
    width: 100%;
    padding: 0.85rem 1.25rem;
  }

  /* Stars and the value box side by side, not stacked */
  .ticket-side {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.9rem;
    text-align: center;
  }
  .ticket-stars { margin-bottom: 0; font-size: 0.95rem; letter-spacing: 0.1rem; }
  .ticket-value { padding: 0.6rem 1.1rem; }
  .value-amount { font-size: 1.6rem; }

  .ticket-disclaimer { font-size: 0.72rem; padding-top: 1rem; text-align: left; }
}

/* Modal */
.birthday-modal .modal-content {
  border: none;
  border-radius: 16px;
  overflow: hidden;
}

.birthday-modal .modal-header {
  background-color: var(--primary-light);
  border-bottom: none;
  align-items: flex-start;
  padding: 1.5rem;
}

.birthday-modal .modal-title {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 1.3rem;
  color: var(--primary);
  margin: 0;
}

.birthday-modal .modal-title i {
  margin-right: 0.4rem;
}

.birthday-modal .modal-sub {
  margin: 0.3rem 0 0;
  font-size: 0.9rem;
  color: var(--muted);
}

.birthday-modal .modal-body {
  padding: 1.5rem;
}

.birthday-modal .form-label {
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--text);
}

.birthday-modal .form-label i {
  color: var(--primary);
  margin-right: 0.3rem;
}

.birthday-modal .form-control {
  border-radius: 10px;
  border: 1px solid rgba(2, 83, 126, 0.2);
  padding: 0.65rem 0.9rem;
}

.birthday-modal .form-control:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 0.2rem rgba(2, 83, 126, 0.15);
}

.modal-disclaimer {
  font-size: 0.78rem;
  color: var(--muted);
  line-height: 1.6;
  margin: 1rem 0 0;
}

/* ==========================================================================
   AWARDS — clean row of award seals
   ========================================================================== */
.awards-section {
  background-color: var(--white);
  padding: 80px 0;
  border-bottom: 1px solid #e5e7eb; /* subtle divider */
}

.awards-header {
  max-width: 600px;
  margin: 0 auto 3rem;
}

/* Eyebrow with thin gold underline */
.awards-eyebrow {
  display: inline-block;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--primary);
  padding-bottom: 0.4rem;
  margin-bottom: 1rem;
  border-bottom: 2px solid var(--gold);
}

.awards-subtitle {
  margin-bottom: 0;
}

/* Plain seals row — no cards/boxes */
.awards-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 2.5rem 3.5rem;
}

.award-seal {
  max-height: 140px;
  width: auto;
  object-fit: contain;
  transition: transform 0.25s ease, filter 0.25s ease;
}

.award-seal:hover {
  transform: scale(1.06);
  filter: saturate(1.1);
}

@media (max-width: 991.98px) {
  .awards-row {
    gap: 2rem 3rem;
  }
  .award-seal {
    max-height: 120px;
  }
}

@media (max-width: 575.98px) {
  .awards-row {
    gap: 1.75rem 2rem;
  }
  .award-seal {
    max-height: 95px;
  }
}

/* ==========================================================================
   CAR WASH VIDEOS
   ========================================================================== */
.videos-section {
  padding: 90px 0;
  background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: var(--white);
}

.videos-header {
  max-width: 640px;
  margin: 0 auto 3rem;
}

.videos-subtitle {
  color: rgba(255, 255, 255, 0.82);
  margin-bottom: 0;
}

.video-frame {
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.18);
  box-shadow: 0 14px 36px rgba(0, 0, 0, 0.3);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.video-frame:hover {
  transform: translateY(-6px);
  box-shadow: 0 20px 44px rgba(0, 0, 0, 0.4);
}

.video-frame iframe {
  border: 0;
}

.video-title {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-size: 1.2rem;
  color: var(--white);
  margin: 1.1rem 0 0.2rem;
}

.video-caption {
  color: rgba(255, 255, 255, 0.7);
  font-size: 0.92rem;
  margin-bottom: 0;
}

.videos-swiper {
  padding: 0 0 60px;
}

/* White controls to suit dark bg */
.videos-swiper .swiper-button-prev,
.videos-swiper .swiper-button-next {
  color: var(--white);
  width: 44px;
  height: 44px;
  background-color: rgba(255, 255, 255, 0.15);
  border-radius: 50%;
  top: 38%;
  transition: background-color 0.2s ease;
}

.videos-swiper .swiper-button-prev:hover,
.videos-swiper .swiper-button-next:hover {
  background-color: var(--white);
  color: var(--primary);
}

.videos-swiper .swiper-button-prev::after,
.videos-swiper .swiper-button-next::after {
  font-size: 1.1rem;
  font-weight: 700;
}

.videos-swiper .swiper-pagination {
  bottom: 0;
}

.videos-swiper .swiper-pagination-bullet {
  background-color: var(--white);
  opacity: 0.55;
  width: 10px;
  height: 10px;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.videos-swiper .swiper-pagination-bullet-active {
  opacity: 1;
  transform: scale(1.25);
}

@media (max-width: 767.98px) {
  .videos-swiper .swiper-button-prev,
  .videos-swiper .swiper-button-next {
    display: none;
  }
}

/* White pill CTA (used by the videos section) */
.btn-birthday {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background-color: var(--white);
  color: var(--primary);
  font-weight: 700;
  border-radius: 50px;
  padding: 0.8rem 2.2rem;
  transition: transform 0.2s ease, box-shadow 0.2s ease, color 0.2s ease;
}

.btn-birthday:hover,
.btn-birthday:focus {
  color: var(--primary-dark);
  transform: translateY(-3px);
  box-shadow: 0 0 26px rgba(255, 255, 255, 0.75);
}

.videos-section .btn-birthday {
  margin-top: 1.5rem;
}

/* ==========================================================================
   VALENCIA AUTO CARE CENTER — asymmetric hub panels
   ========================================================================== */
.autocare-section {
  background-color: var(--primary-light);
  padding: 90px 0;
}

/* Left-aligned editorial header */
.autocare-header {
  max-width: 620px;
  margin-bottom: 3.5rem;
}

.autocare-subtitle {
  margin-bottom: 0;
}

/* Panel — grid so the media column keeps a fixed share of the row and the
   circle can sit centered inside it instead of hugging the text. */
.autocare-panel {
  position: relative;
  display: grid;
  grid-template-columns: 46% 1fr;
  align-items: center;
  gap: 2.5rem;
  margin-bottom: 3.5rem;
}

.autocare-panel:last-child {
  margin-bottom: 0;
}

/* Reverse panels: same source order, swapped columns. */
.autocare-reverse {
  grid-template-columns: 1fr 46%;
}

.autocare-reverse .autocare-media {
  grid-column: 2;
  grid-row: 1;
}

.autocare-reverse .autocare-content {
  grid-column: 1;
  grid-row: 1;
}

/* Big watermark number */
.autocare-num {
  position: absolute;
  top: -2.2rem;
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 7rem;
  line-height: 1;
  color: var(--primary);
  opacity: 0.08;
  z-index: 0;
  pointer-events: none;
}

.autocare-panel .autocare-num { left: 1rem; }
.autocare-reverse .autocare-num { left: auto; right: 1rem; }

/* Media — circular. Width and height come from the same clamp so the box stays
   a true square at every viewport; object-fit crops the photo into it. */
.autocare-media {
  justify-self: center;
  align-self: center;
  width: clamp(240px, 32vw, 360px);
  height: clamp(240px, 32vw, 360px);
  border-radius: 50%;
  overflow: hidden;
  box-shadow: 0 16px 38px rgba(1, 58, 89, 0.16);
  border: 6px solid var(--white);
}

.autocare-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}

.autocare-media:hover img {
  transform: scale(1.06);
}

/* Content */
.autocare-content {
  position: relative;
  z-index: 1;
  flex: 1;
}

.autocare-tag {
  display: inline-block;
  background-color: var(--primary);
  color: var(--white);
  font-size: 0.78rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0.35rem 0.9rem;
  border-radius: 50px;
  margin-bottom: 1rem;
}

.autocare-name {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 1.6rem;
  color: var(--text);
  margin-bottom: 0.85rem;
}

.autocare-name i {
  color: var(--primary);
  margin-right: 0.4rem;
}

.autocare-text {
  color: var(--muted);
  line-height: 1.7;
  margin-bottom: 1.5rem;
}

/* Mobile: stack image on top, content below */
@media (max-width: 767.98px) {
  .autocare-panel,
  .autocare-reverse {
    grid-template-columns: 1fr;
    gap: 1.5rem;
    margin-bottom: 2.75rem;
  }
  /* Single column — reset the desktop column swap so image stays on top. */
  .autocare-reverse .autocare-media,
  .autocare-reverse .autocare-content {
    grid-column: 1;
    grid-row: auto;
  }
  /* Circle stays a circle — centered, capped so it never fills the screen. */
  .autocare-media {
    width: min(72vw, 280px);
    height: min(72vw, 280px);
  }
  .autocare-num {
    font-size: 4.5rem;
    top: -1.4rem;
  }
}

/* ==========================================================================
   CAR WASH BLOG
   ========================================================================== */
.blog-section {
  background-color: var(--white);
  padding: 90px 0;
}

.blog-header {
  max-width: 620px;
  margin: 0 auto 3rem;
}

.blog-subtitle {
  margin-bottom: 0;
}

.blog-pill {
  display: inline-block;
  width: max-content;
  background-color: var(--primary);
  color: var(--white);
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 0.25rem 0.7rem;
  border-radius: 50px;
}

.blog-meta {
  color: var(--muted);
  font-size: 0.85rem;
  margin: 0;
}

.blog-meta i {
  margin-right: 0.3rem;
}

/* Featured card */
.blog-featured {
  height: 100%;
  background-color: var(--white);
  border: 1px solid #e5e7eb;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 8px 24px rgba(1, 58, 89, 0.08);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.blog-featured:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 34px rgba(1, 58, 89, 0.14);
}

.blog-featured-media {
  position: relative;
  display: block;
  overflow: hidden;
}

.blog-featured-media .blog-pill {
  position: absolute;
  top: 1rem;
  left: 1rem;
  z-index: 2;
}

.blog-featured-media img {
  width: 100%;
  height: 280px;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}

.blog-featured:hover .blog-featured-media img {
  transform: scale(1.05);
}

.blog-featured-body {
  padding: 1.5rem;
}

.blog-featured-body .blog-meta {
  margin-bottom: 0.6rem;
}

.blog-featured-title {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 1.4rem;
  line-height: 1.3;
  margin-bottom: 0.7rem;
}

.blog-featured-title a {
  color: var(--primary);
  transition: color 0.2s ease;
}

.blog-featured-title a:hover {
  color: var(--primary-dark);
}

.blog-excerpt {
  color: var(--muted);
  line-height: 1.7;
  margin-bottom: 1.1rem;
}

.blog-read {
  font-weight: 600;
  color: var(--primary);
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  transition: gap 0.2s ease;
}

.blog-read:hover {
  gap: 0.6rem;
  color: var(--primary-dark);
}

/* Mini list cards */
.blog-mini-list {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  height: 100%;
}

.blog-mini {
  display: flex;
  gap: 1rem;
  background-color: var(--white);
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  overflow: hidden;
  padding: 0.75rem;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.blog-mini:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 26px rgba(1, 58, 89, 0.12);
}

.blog-mini-thumb {
  flex: 0 0 120px;
  border-radius: 10px;
  overflow: hidden;
}

.blog-mini-thumb img {
  width: 120px;
  height: 100%;
  min-height: 110px;
  object-fit: cover;
  display: block;
}

.blog-mini-body {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0.35rem 0.5rem 0.35rem 0;
}

.blog-mini-title {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-size: 1.02rem;
  line-height: 1.35;
  margin: 0;
}

.blog-mini-title a {
  color: var(--primary);
  transition: color 0.2s ease;
}

.blog-mini-title a:hover {
  color: var(--primary-dark);
}

.blog-cta {
  margin-top: 3rem;
}

@media (max-width: 575.98px) {
  .blog-mini {
    flex-direction: column;
  }
  .blog-mini-thumb {
    flex-basis: auto;
    width: 100%;
  }
  .blog-mini-thumb img {
    width: 100%;
    height: 180px;
  }
}

/* ==========================================================================
   TESTIMONIALS — Google-style review slider
   ========================================================================== */
.reviews-section {
  background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: var(--white);
  padding: 90px 0;
}

/* dark-mode header text */
.reviews-section .section-title { color: var(--white); }

.reviews-header {
  max-width: 680px;
  margin: 0 auto 3rem;
}

/* Google rating summary pill */
.google-summary {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  background-color: var(--white);
  border-radius: 50px;
  padding: 0.6rem 1.5rem;
  margin-top: 1.25rem;
  box-shadow: 0 6px 18px rgba(1, 58, 89, 0.1);
}

.google-g i {
  font-size: 1.4rem;
  color: #4285F4;
}

.google-label {
  font-weight: 600;
  color: var(--text);
}

.google-score {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 1.5rem;
  color: var(--text);
}

.google-stars {
  color: #FBBC05;
  font-size: 1.05rem;
}

.google-count {
  color: var(--muted);
  font-size: 0.9rem;
}

/* Slider */
.reviews-swiper {
  position: relative;
  padding: 10px 0 60px;
}

/* Review card */
.review-card {
  position: relative;
  height: 100%;
  background-color: var(--white);
  border-radius: 16px;
  padding: 1.75rem;
  box-shadow: 0 8px 24px rgba(1, 58, 89, 0.08);
}

.review-g {
  position: absolute;
  top: 1.25rem;
  right: 1.25rem;
}

.review-g i {
  font-size: 1.3rem;
  color: #4285F4;
}

.review-top {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  margin-bottom: 0.85rem;
}

.review-avatar {
  flex: 0 0 48px;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--white);
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-size: 1.1rem;
}

.review-name {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-size: 1.05rem;
  color: var(--text);
  margin: 0;
}

.review-sub {
  color: var(--muted);
  font-size: 0.82rem;
  margin: 0;
}

.review-stars {
  color: #FBBC05;
  font-size: 1rem;
  margin-bottom: 0.75rem;
}

.review-text {
  color: var(--text);
  line-height: 1.7;
  margin-bottom: 1rem;
}

.review-date {
  color: var(--muted);
  font-size: 0.85rem;
  margin: 0;
}

/* Controls */
.reviews-swiper .swiper-button-prev,
.reviews-swiper .swiper-button-next {
  color: var(--primary);
  width: 44px;
  height: 44px;
  background-color: var(--white);
  border-radius: 50%;
  box-shadow: 0 4px 14px rgba(1, 58, 89, 0.15);
  top: 42%;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.reviews-swiper .swiper-button-prev:hover,
.reviews-swiper .swiper-button-next:hover {
  background-color: var(--primary);
  color: var(--white);
}

.reviews-swiper .swiper-button-prev::after,
.reviews-swiper .swiper-button-next::after {
  font-size: 1.1rem;
  font-weight: 700;
}

.reviews-swiper .swiper-pagination {
  bottom: 0;
}

.reviews-swiper .swiper-pagination-bullet {
  background-color: var(--white);
  opacity: 0.5;
  width: 10px;
  height: 10px;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.reviews-swiper .swiper-pagination-bullet-active {
  opacity: 1;
  transform: scale(1.25);
}

.reviews-cta {
  margin-top: 2.5rem;
}

.reviews-cta i {
  margin-right: 0.4rem;
}

@media (max-width: 767.98px) {
  .reviews-swiper .swiper-button-prev,
  .reviews-swiper .swiper-button-next {
    display: none;
  }
}

/* ==========================================================================
   FOOTER
   ========================================================================== */
.site-footer {
  position: relative;
  overflow: hidden;
  background-color: var(--primary-dark);
  color: rgba(255, 255, 255, 0.85);
  padding: 64px 0 32px;
  border-top: 3px solid var(--gold);
}

/* Decorative glow, purely visual */
.footer-glow {
  position: absolute;
  top: -70px;
  left: -70px;
  width: 280px;
  height: 280px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.08);
  filter: blur(60px);
  pointer-events: none;
}

.footer-brand {
  gap: 0.6rem;
  margin-bottom: 1rem;
}

.footer-logo {
  height: 112px;
  width: auto;
}

.footer-heading {
  font-family: "Poppins", sans-serif;
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--white);
  margin-bottom: 1rem;
}

.footer-about {
  color: rgba(255, 255, 255, 0.75);
  font-size: 0.95rem;
  line-height: 1.6;
  margin-bottom: 1.25rem;
}

/* Newsletter (column 1) */
.footer-newsletter-group {
  position: relative;
  display: flex;
  align-items: center;
}

.footer-newsletter-input {
  width: 100%;
  padding: 0.7rem 3.2rem 0.7rem 1rem;
  border-radius: 50px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  background-color: rgba(255, 255, 255, 0.08);
  color: var(--white);
  font-size: 0.92rem;
}

.footer-newsletter-input::placeholder {
  color: rgba(255, 255, 255, 0.55);
}

.footer-newsletter-input:focus {
  outline: none;
  border-color: var(--gold);
  background-color: rgba(255, 255, 255, 0.12);
  color: var(--white);
}

.footer-newsletter-btn {
  position: absolute;
  right: 4px;
  top: 50%;
  transform: translateY(-50%);
  width: 36px;
  height: 36px;
  border: none;
  border-radius: 50%;
  background-color: var(--gold);
  color: var(--primary-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.footer-newsletter-btn:hover {
  background-color: var(--white);
  transform: translateY(-50%) scale(1.06);
  box-shadow: 0 0 18px rgba(245, 196, 81, 0.7);
}

/* Quick links (column 2) */
.footer-links {
  list-style: none;
  padding: 0;
  margin: 0;
}

.footer-links li {
  margin-bottom: 0.6rem;
}

.footer-links a {
  color: rgba(255, 255, 255, 0.75);
  font-size: 0.95rem;
  transition: color 0.2s ease;
  /* Roomy enough to tap on a phone — the bare text line was only ~19px tall. */
  display: inline-flex;
  align-items: center;
  min-height: 40px;
}

.footer-links a:hover {
  color: var(--gold);
}

/* Contact (column 3) */
.footer-contact {
  list-style: none;
  padding: 0;
  margin: 0;
}

.footer-contact li {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  margin-bottom: 0.85rem;
  color: rgba(255, 255, 255, 0.75);
  font-size: 0.95rem;
}

.footer-contact li i {
  margin-top: 0.15rem;
  color: var(--gold);
}

.footer-contact a {
  color: rgba(255, 255, 255, 0.75);
  transition: color 0.2s ease;
}

.footer-contact a:hover {
  color: var(--gold);
}

/* Follow us (column 4) */
.footer-social {
  display: flex;
  gap: 0.75rem;
  margin-bottom: 1.25rem;
}

.footer-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.3);
  color: var(--white);
  font-size: 1.1rem;
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.footer-social a:hover {
  background-color: var(--gold);
  border-color: var(--gold);
  color: var(--primary-dark);
  transform: translateY(-3px);
  box-shadow: 0 0 18px rgba(245, 196, 81, 0.7);
}

.footer-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--gold);
  border: 1px solid rgba(245, 196, 81, 0.4);
  border-radius: 50px;
  padding: 0.4rem 0.9rem;
}

/* Bottom bar */
.footer-bottom {
  position: relative;
  margin-top: 2.5rem;
  border-top: 1px solid rgba(255, 255, 255, 0.15);
  padding: 1.1rem 0;
}

/* The floating WhatsApp button (58px tall, 24px from each edge) sat on top of
   the legal links. Below xl the bottom row centres and gains clearance; from xl
   up the container is wide enough that the links never reach that corner. */
@media (max-width: 1199.98px) {
  .footer-bottom { padding-bottom: 6.5rem; }
  .footer-bottom-inner {
    flex-direction: column;
    text-align: center;
  }
}
/* At xl the row stays side by side; reserve the button's column so the last
   legal link is not sitting under it on ~1440px screens. Scoped to
   .footer-bottom because the base .footer-legal rule below resets padding. */
@media (min-width: 1200px) {
  .footer-bottom .footer-legal { padding-right: 4.5rem; }
}

.footer-bottom-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}

.footer-copy {
  margin: 0;
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.65);
}

.footer-legal {
  list-style: none;
  display: flex;
  gap: 1.25rem;
  margin: 0;
  padding: 0;
}

.footer-legal a {
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.65);
  transition: color 0.2s ease;
}

.footer-legal a:hover {
  color: var(--gold);
}

@media (max-width: 767.98px) {
  .footer-bottom-inner {
    flex-direction: column;
    text-align: center;
  }
}

/* ---- Footer on phones -----------------------------------------------------
   Long values (the email especially) used to run past the column edge, the
   two half-width columns squeezed the contact lines into 3-4 word wraps, and
   the whole block ran ~1150px tall. */
@media (max-width: 575.98px) {
  .site-footer {
    padding: 44px 0 24px;
    text-align: center;
  }

  /* Quick Links and Contact stop sharing a row — full width each, so nothing
     wraps mid-address. */
  .site-footer .row > [class*="col-"] {
    flex: 0 0 100%;
    max-width: 100%;
  }

  /* Stacked columns would otherwise run ~1200px tall — tighten the rhythm. */
  .site-footer .row.gy-5 { --bs-gutter-y: 2rem; }

  .footer-logo { height: 78px; }
  .footer-heading { margin-top: 0.25rem; margin-bottom: 0.75rem; font-size: 1rem; }
  .footer-about { margin-left: auto; margin-right: auto; margin-bottom: 1rem; }

  /* Links read as a centred two-column list instead of one long ladder. */
  .footer-links {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0 1rem;
    text-align: left;
    max-width: 320px;
    margin-inline: auto;
  }
  .footer-links a { min-height: 38px; }

  .footer-contact {
    max-width: 320px;
    margin-inline: auto;
    text-align: left;
  }
  .footer-contact li { margin-bottom: 0.6rem; }
  .footer-social { margin-bottom: 0.9rem; }
  /* Emails and long URLs break instead of overflowing the column. */
  .footer-contact li,
  .footer-contact a {
    overflow-wrap: anywhere;
    word-break: break-word;
  }

  .footer-newsletter { max-width: 340px; margin-inline: auto; }
  .footer-social { justify-content: center; }
  .footer-badge { display: inline-flex; }

  .footer-legal { flex-wrap: wrap; justify-content: center; }
}

/* ==========================================================================
   FLOATING WHATSAPP BUTTON (site-wide)
   ========================================================================== */
.whatsapp-float {
  position: fixed;
  bottom: 24px;
  right: 24px;
  z-index: 1040;
  width: 58px;
  height: 58px;
  border-radius: 50%;
  background-color: #25D366;
  color: var(--white);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.7rem;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.whatsapp-float:hover,
.whatsapp-float:focus {
  color: var(--white);
  transform: translateY(-3px);
  box-shadow: 0 10px 26px rgba(0, 0, 0, 0.3);
}

/* Pulsing ring, purely decorative */
.whatsapp-float::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background-color: rgba(37, 211, 102, 0.55);
  z-index: -1;
  animation: whatsapp-pulse 2.4s ease-out infinite;
}

@keyframes whatsapp-pulse {
  0% { transform: scale(1); opacity: 0.55; }
  70% { transform: scale(1.7); opacity: 0; }
  100% { transform: scale(1.7); opacity: 0; }
}

.whatsapp-float-tooltip {
  position: absolute;
  right: calc(100% + 12px);
  top: 50%;
  transform: translateY(-50%);
  background-color: var(--primary-dark);
  color: var(--white);
  font-size: 0.85rem;
  font-weight: 600;
  padding: 0.4rem 0.8rem;
  border-radius: 6px;
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.whatsapp-float-tooltip::after {
  content: "";
  position: absolute;
  left: 100%;
  top: 50%;
  transform: translateY(-50%);
  border: 6px solid transparent;
  border-left-color: var(--primary-dark);
}

.whatsapp-float:hover .whatsapp-float-tooltip {
  opacity: 1;
  visibility: visible;
}

@media (max-width: 575.98px) {
  .whatsapp-float {
    width: 52px;
    height: 52px;
    font-size: 1.5rem;
    bottom: 18px;
    right: 18px;
  }

  .whatsapp-float-tooltip {
    display: none;
  }
}

/* ==========================================================================
   PAGE BANNER (reusable inner-page hero) — page-banner.php
   ========================================================================== */
.page-banner {
  position: relative;
  overflow: hidden;
  min-height: 300px;
  display: flex;
  align-items: center;
  background:
    radial-gradient(120% 140% at 85% 0%, rgba(2, 83, 126, 0.55) 0%, rgba(1, 24, 38, 0) 55%),
    linear-gradient(150deg, #06222F 0%, #041722 55%, #010E16 100%);
  color: var(--white);
  text-align: left;
  padding: 3.2rem 0;
}

/* Soft ambient glow bottom-left, echoing the premium hero look */
.page-banner-glow {
  position: absolute;
  left: -8%;
  bottom: -60%;
  width: 55%;
  height: 160%;
  background: radial-gradient(circle, rgba(2, 83, 126, 0.35) 0%, rgba(2, 83, 126, 0) 68%);
  pointer-events: none;
}

.page-banner .container {
  width: 100%;
  position: relative;
  z-index: 1;
}

/* Eyebrow pill on the dark banner: translucent gold-outlined chip */
.page-banner-eyebrow {
  background: rgba(245, 196, 81, 0.1);
  color: var(--gold);
  border: 1px solid rgba(245, 196, 81, 0.4);
  margin-bottom: 1.1rem;
}
.page-banner-eyebrow .eyebrow-pill-dot {
  background: var(--gold);
}

.page-banner-title {
  color: var(--white);
  font-family: "Poppins", sans-serif;
  font-size: clamp(2rem, 5vw, 3.25rem);
  font-weight: 700;
  line-height: 1.12;
  margin: 0 0 1rem;
}

.page-banner-crumb {
  font-size: 0.95rem;
  color: rgba(255, 255, 255, 0.7);
}

.page-banner-crumb a {
  color: rgba(255, 255, 255, 0.85);
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.page-banner-crumb a:hover {
  color: var(--gold);
}

.page-banner-crumb .sep {
  margin: 0 0.5rem;
  opacity: 0.5;
}

.page-banner-crumb .current {
  color: var(--gold);
  font-weight: 500;
}

/* Standard inner-page section spacing helper */
.section-pad {
  padding: 4rem 0;
}

@media (max-width: 575.98px) {
  .page-banner {
    min-height: 220px;
    padding: 2.4rem 0;
  }
  .section-pad {
    padding: 2.5rem 0;
  }
}

/* ==========================================================================
   APPOINTMENTS PAGE — appointments.php
   ========================================================================== */
.booking-section {
  background-color: var(--primary-light);
}

/* Booking form card */
.booking-card {
  background: var(--white);
  border-radius: 16px;
  box-shadow: 0 12px 40px rgba(1, 58, 89, 0.10);
  padding: 2.5rem;
}

.booking-card .eyebrow {
  display: inline-block;
  color: var(--primary);
  font-weight: 600;
  font-size: 0.8rem;
  letter-spacing: 0.12em;
  margin-bottom: 0.4rem;
}

.booking-title {
  color: var(--primary-dark);
  font-weight: 700;
  margin-bottom: 1.5rem;
}

.booking-form .form-label {
  font-weight: 500;
  font-size: 0.9rem;
  color: var(--text);
  margin-bottom: 0.35rem;
}

.booking-form .form-label i {
  color: var(--primary);
  margin-right: 0.25rem;
}

.booking-form .form-control,
.booking-form .form-select {
  border-radius: 10px;
  padding: 0.6rem 0.85rem;
  border-color: #d9e2e8;
}

.booking-form .form-control:focus,
.booking-form .form-select:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 0.2rem rgba(2, 83, 126, 0.15);
}

/* Submit button */
.btn-book {
  background-color: var(--primary);
  border: none;
  color: var(--white);
  font-weight: 600;
  padding: 0.85rem 1rem;
  border-radius: 50px;
  transition: background-color 0.2s ease, transform 0.1s ease;
}

.btn-book:hover {
  background-color: var(--primary-dark);
  color: var(--white);
  transform: translateY(-1px);
}

.booking-alt-contact {
  margin-top: 1.25rem;
  margin-bottom: 0;
  font-size: 0.95rem;
  color: var(--muted);
}

.booking-alt-contact a {
  color: var(--primary);
  font-weight: 500;
}

.booking-alt-contact .sep {
  margin: 0 0.5rem;
  opacity: 0.5;
}

/* Info sidebar — sticky on desktop */
.info-stack {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  position: sticky;
  top: 100px;
}

@media (max-width: 991.98px) {
  .info-stack {
    position: static;
    top: auto;
  }
}

.info-card {
  background: var(--white);
  border-radius: 14px;
  padding: 1.5rem;
  box-shadow: 0 6px 24px rgba(1, 58, 89, 0.07);
}

.info-card-icon {
  width: 46px;
  height: 46px;
  border-radius: 12px;
  background: var(--primary-light);
  color: var(--primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.35rem;
  margin-bottom: 0.9rem;
}

.info-card-title {
  color: var(--primary-dark);
  font-size: 1.1rem;
  font-weight: 600;
  margin-bottom: 0.75rem;
}

.info-card-text {
  color: var(--text);
  margin-bottom: 1rem;
}

.info-card-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.info-card-list li {
  padding: 0.2rem 0;
  color: var(--text);
  font-size: 0.95rem;
}

.info-card-list li.muted {
  color: var(--muted);
  font-size: 0.875rem;
  margin-top: 0.4rem;
}

.btn-directions {
  background: var(--primary-light);
  color: var(--primary);
  font-weight: 600;
  border-radius: 50px;
  padding: 0.5rem 1.15rem;
}

.btn-directions:hover {
  background: var(--primary);
  color: var(--white);
}

.info-card-checks {
  list-style: none;
  padding: 0;
  margin: 0;
}

.info-card-checks li {
  padding: 0.3rem 0;
  color: var(--text);
  font-size: 0.95rem;
}

.info-card-checks i {
  color: #2e9e5b;
  margin-right: 0.5rem;
}

/* Trust strip */
.trust-strip {
  background: var(--primary-dark);
  color: var(--white);
  padding: 1rem 0;
}

.trust-strip-text {
  margin: 0;
  text-align: center;
  font-size: 0.95rem;
  font-weight: 500;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.5rem 0.75rem;
}

.trust-strip-text i {
  color: var(--gold);
  margin-right: 0.3rem;
}

.trust-strip-text .sep {
  opacity: 0.5;
}

/* ==========================================================================
   FAQ PAGE — faq.php
   ========================================================================== */
.faq-section {
  background-color: var(--primary-light);
}

/* Search bar */
.faq-search {
  position: relative;
  margin-bottom: 1.25rem;
}

.faq-search i {
  position: absolute;
  left: 1.1rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--primary);
  font-size: 1.1rem;
}

.faq-search-input {
  width: 100%;
  border: 1px solid #d9e2e8;
  border-radius: 12px;
  padding: 0.85rem 1rem 0.85rem 2.8rem;
  font-size: 1rem;
  background: var(--white);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.faq-search-input:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 0.2rem rgba(2, 83, 126, 0.15);
}

/* Category pills */
.faq-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 1.5rem;
}

.faq-pill {
  border: 1.5px solid var(--primary);
  background: transparent;
  color: var(--primary);
  font-weight: 500;
  font-size: 0.9rem;
  padding: 0.4rem 1rem;
  border-radius: 999px;
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.faq-pill:hover {
  background: rgba(2, 83, 126, 0.08);
}

.faq-pill.active {
  background: var(--primary);
  color: var(--white);
}

/* Accordion — premium restyle */
.faq-accordion .accordion-item {
  background: var(--white);
  border: 1px solid #e3ebef;
  border-radius: 14px !important;
  margin-bottom: 0.9rem;
  overflow: hidden;
  box-shadow: 0 4px 18px rgba(1, 58, 89, 0.05);
}

.faq-accordion .accordion-header {
  margin: 0;
}

.faq-accordion .accordion-button {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 1.15rem 1.35rem;
  font-family: "Poppins", system-ui, sans-serif;
  font-weight: 600;
  font-size: 1.02rem;
  color: var(--text);
  background: var(--white);
  border-left: 3px solid transparent;
  box-shadow: none !important;
}

.faq-accordion .accordion-button:focus {
  box-shadow: none !important;
}

/* Open state — brand accent + left border */
.faq-accordion .accordion-button:not(.collapsed) {
  color: var(--primary);
  background: var(--primary-light);
  border-left-color: var(--primary);
}

/* Hide default Bootstrap caret */
.faq-accordion .accordion-button::after {
  display: none;
}

/* Small category pill inside the header */
.faq-cat-pill {
  flex: 0 0 auto;
  font-family: "Inter", sans-serif;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--primary);
  background: var(--primary-light);
  border: 1px solid rgba(2, 83, 126, 0.2);
  border-radius: 999px;
  padding: 0.2rem 0.6rem;
  white-space: nowrap;
}

.faq-accordion .accordion-button:not(.collapsed) .faq-cat-pill {
  background: var(--white);
}

.faq-q {
  flex: 1 1 auto;
}

/* Custom +/− icon that rotates on open */
.faq-icon {
  flex: 0 0 auto;
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--primary-light);
  color: var(--primary);
  transition: transform 0.3s ease, background-color 0.2s ease;
}

.faq-accordion .accordion-button:not(.collapsed) .faq-icon {
  background: var(--primary);
  color: var(--white);
  transform: rotate(135deg); /* + turns into × */
}

.faq-accordion .accordion-body {
  padding: 0 1.35rem 1.3rem;
  color: var(--muted);
  line-height: 1.65;
}

/* No results */
.faq-no-results {
  background: var(--white);
  border: 1px dashed #c7d5dd;
  border-radius: 12px;
  padding: 1.5rem;
  text-align: center;
  color: var(--muted);
}

.faq-no-results i {
  color: var(--primary);
  margin-right: 0.35rem;
}

/* Sidebar */
.faq-sidebar {
  position: sticky;
  top: 100px;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.faq-help-card {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: var(--white);
  border-radius: 16px;
  padding: 1.75rem;
}

.faq-help-title {
  color: var(--white);
  font-size: 1.25rem;
  font-weight: 700;
  margin-bottom: 0.4rem;
}

.faq-help-text {
  color: rgba(255, 255, 255, 0.85);
  margin-bottom: 1.25rem;
  font-size: 0.95rem;
}

.faq-help-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  width: 100%;
  background: var(--white);
  color: var(--primary);
  font-weight: 600;
  border-radius: 10px;
  padding: 0.65rem;
  margin-bottom: 0.6rem;
}

.faq-help-btn:hover {
  background: var(--gold);
  color: var(--primary-dark);
}

.faq-help-email {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  color: var(--white);
  font-weight: 500;
  font-size: 0.95rem;
  margin-top: 0.25rem;
}

.faq-help-email:hover {
  color: var(--gold);
}

/* Hours mini-card */
.faq-mini-card {
  background: var(--white);
  border-radius: 14px;
  padding: 1.25rem;
  display: flex;
  align-items: flex-start;
  gap: 0.9rem;
  box-shadow: 0 6px 24px rgba(1, 58, 89, 0.06);
}

.faq-mini-icon {
  flex: 0 0 auto;
  width: 42px;
  height: 42px;
  border-radius: 11px;
  background: var(--primary-light);
  color: var(--primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
}

.faq-mini-title {
  color: var(--primary-dark);
  font-size: 1rem;
  font-weight: 600;
  margin: 0 0 0.25rem;
}

.faq-mini-text {
  margin: 0;
  color: var(--muted);
  font-size: 0.9rem;
}

.faq-book-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  background: var(--gold);
  color: var(--primary-dark);
  font-weight: 700;
  border-radius: 12px;
  padding: 0.85rem;
}

.faq-book-btn:hover {
  background: var(--primary);
  color: var(--white);
}

/* Mobile: sidebar drops below, un-stick */
@media (max-width: 991.98px) {
  .faq-sidebar {
    position: static;
    top: auto;
  }
}

/* ==========================================================================
   GIFT STORE PAGE — gift-store.php
   ========================================================================== */

/* 1) Intro */
.gift-intro {
  background-color: var(--white);
}
.gift-intro-title {
  color: var(--primary-dark);
  font-weight: 700;
  margin: 0.5rem 0 1rem;
}
.gift-intro-text {
  color: var(--muted);
  font-size: 1.05rem;
  line-height: 1.7;
}

/* 2) Gift card band */
.gift-card-band {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: var(--white);
  padding: 4.5rem 0;
}
.gift-card-title {
  color: var(--white);
  font-weight: 700;
  font-size: clamp(1.6rem, 3vw, 2.25rem);
  margin-bottom: 1rem;
}
.gift-card-text {
  color: rgba(255, 255, 255, 0.88);
  font-size: 1.05rem;
  line-height: 1.7;
  margin-bottom: 1rem;
}
.gift-card-note {
  color: var(--gold);
  font-weight: 600;
  margin-bottom: 1.5rem;
}
.gift-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}
.gift-btn-light {
  background: var(--white);
  color: var(--primary);
  font-weight: 600;
  border-radius: 50px;
  padding: 0.7rem 1.6rem;
}
.gift-btn-light:hover {
  background: var(--gold);
  color: var(--primary-dark);
}
.gift-btn-outline {
  border: 2px solid rgba(255, 255, 255, 0.7);
  color: var(--white);
  font-weight: 600;
  border-radius: 50px;
  padding: 0.7rem 1.6rem;
}
.gift-btn-outline:hover {
  background: var(--white);
  color: var(--primary);
}

/* Gift card visual */
.gift-card-visual {
  position: relative;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.35);
}
.gift-card-img {
  width: 100%;
  height: 300px;
  object-fit: cover;
  display: block;
}
.gift-card-bow {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 54px;
  height: 54px;
  border-radius: 50%;
  background: var(--gold);
  color: var(--primary-dark);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.25);
}

/* 3) Product grid */
.gift-products {
  background-color: var(--primary-light);
}
.gift-products-title {
  color: var(--primary-dark);
  font-weight: 700;
  margin-top: 0.4rem;
}
.gift-product {
  background: var(--white);
  border-radius: 14px;
  overflow: hidden;
  height: 100%;
  display: flex;
  flex-direction: column;
  box-shadow: 0 6px 22px rgba(1, 58, 89, 0.06);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.gift-product:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 40px rgba(1, 58, 89, 0.14);
}
.gift-product-media {
  position: relative;
  border: none;
  padding: 0;
  cursor: pointer;
  background: var(--primary-light);
  display: block;
  overflow: hidden;
  aspect-ratio: 4 / 3;
}
.gift-product-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.gift-product-media img.gift-img-fallback {
  object-fit: contain;
  padding: 1.5rem;
  opacity: 0.6;
}
.gift-product:hover .gift-product-media img {
  transform: scale(1.07);
}
.gift-product-zoom {
  position: absolute;
  bottom: 10px;
  right: 10px;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(2, 83, 126, 0.9);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 0.25s ease, transform 0.25s ease;
}
.gift-product:hover .gift-product-zoom {
  opacity: 1;
  transform: translateY(0);
}
.gift-product-body {
  padding: 1.2rem;
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
}
.gift-tag {
  align-self: flex-start;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--primary);
  background: var(--primary-light);
  border: 1px solid rgba(2, 83, 126, 0.2);
  border-radius: 999px;
  padding: 0.2rem 0.6rem;
  margin-bottom: 0.6rem;
}
.gift-product-name {
  color: var(--primary-dark);
  font-size: 1.1rem;
  font-weight: 600;
  margin-bottom: 0.4rem;
}
.gift-product-desc {
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.55;
  margin-bottom: 0.9rem;
  flex: 1 1 auto;
}
.gift-available {
  font-size: 0.82rem;
  color: #2e9e5b;
  font-weight: 600;
}
.gift-available i {
  margin-right: 0.3rem;
}

/* 4) Experience strip */
.gift-strip {
  background: var(--primary-dark);
  color: var(--white);
  padding: 1rem 0;
}
.gift-strip-text {
  margin: 0;
  text-align: center;
  font-size: 0.95rem;
  font-weight: 500;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.5rem 0.75rem;
}
.gift-strip-text i {
  color: var(--gold);
  margin-right: 0.3rem;
}
.gift-strip-text .sep {
  opacity: 0.5;
}

/* 5) Visit CTA */
.gift-visit {
  background-color: var(--white);
}
.gift-visit-card {
  max-width: 640px;
  margin: 0 auto;
  text-align: center;
  background: var(--primary-light);
  border-radius: 18px;
  padding: 3rem 2rem;
}
.gift-visit-icon {
  width: 58px;
  height: 58px;
  margin: 0 auto 1rem;
  border-radius: 14px;
  background: var(--primary);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.6rem;
}
.gift-visit-title {
  color: var(--primary-dark);
  font-weight: 700;
  margin-bottom: 0.6rem;
}
.gift-visit-address {
  color: var(--text);
  font-size: 1.05rem;
  margin-bottom: 0.35rem;
}
.gift-visit-hours {
  color: var(--muted);
  margin-bottom: 1.5rem;
}
.gift-visit-hours i {
  color: var(--primary);
  margin-right: 0.3rem;
}
.gift-visit-btn {
  background: var(--primary);
  color: var(--white);
  font-weight: 600;
  border-radius: 50px;
  padding: 0.75rem 1.75rem;
}
.gift-visit-btn:hover {
  background: var(--primary-dark);
  color: var(--white);
}

/* Lightbox */
.gift-lightbox {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
}
.gift-lightbox[hidden] {
  display: none;
}
.gift-lightbox-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(1, 20, 33, 0.9);
}
.gift-lightbox-figure {
  position: relative;
  z-index: 1;
  margin: 0;
  max-width: 800px;
  width: 100%;
  text-align: center;
}
.gift-lightbox-img {
  max-width: 100%;
  max-height: 78vh;
  border-radius: 12px;
  object-fit: contain;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
}
.gift-lightbox-caption {
  color: var(--white);
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-size: 1.15rem;
  margin-top: 1rem;
}
.gift-lightbox-btn {
  position: absolute;
  z-index: 2;
  border: none;
  background: rgba(255, 255, 255, 0.15);
  color: var(--white);
  width: 48px;
  height: 48px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  cursor: pointer;
  transition: background-color 0.2s ease;
}
.gift-lightbox-btn:hover {
  background: var(--primary);
}
.gift-lightbox-close {
  top: 1.25rem;
  right: 1.25rem;
}
.gift-lightbox-prev {
  left: 1.25rem;
  top: 50%;
  transform: translateY(-50%);
}
.gift-lightbox-next {
  right: 1.25rem;
  top: 50%;
  transform: translateY(-50%);
}

@media (max-width: 575.98px) {
  .gift-lightbox-prev { left: 0.5rem; }
  .gift-lightbox-next { right: 0.5rem; }
  .gift-lightbox-btn { width: 42px; height: 42px; font-size: 1.1rem; }
  .gift-card-img { height: 220px; }
}

/* ==========================================================================
   FUNDRAISING PAGE — fundraising.php
   ========================================================================== */

/* 1) Hero */
.fund-hero {
  background-color: var(--white);
}
.fund-hero-title {
  color: var(--primary-dark);
  font-weight: 700;
  font-size: clamp(1.75rem, 3.5vw, 2.6rem);
  margin: 0.5rem 0 1rem;
}
.fund-hero-lead {
  color: var(--muted);
  font-size: 1.05rem;
  line-height: 1.75;
  margin-bottom: 1.75rem;
}
.fund-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}
.fund-btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: var(--white);
  font-weight: 700;
  border: none;
  border-radius: 50px;
  padding: 0.85rem 1.65rem;
  box-shadow: 0 10px 24px rgba(2, 83, 126, 0.28);
  transition: transform 0.2s ease, box-shadow 0.2s ease, filter 0.2s ease;
}
.fund-btn-primary i { transition: transform 0.2s ease; }
.fund-btn-primary:hover,
.fund-btn-primary:focus {
  color: var(--white);
  filter: brightness(1.08);
  transform: translateY(-2px);
  box-shadow: 0 16px 34px rgba(2, 83, 126, 0.34);
}
.fund-btn-primary:hover i { transform: translateX(3px); }
.fund-btn-primary:disabled { opacity: 0.7; transform: none; box-shadow: none; }
.fund-btn-outline {
  border: 2px solid var(--primary);
  color: var(--primary);
  font-weight: 600;
  border-radius: 50px;
  padding: 0.75rem 1.65rem;
}
.fund-btn-outline:hover {
  background: var(--primary);
  color: var(--white);
}
.fund-hero-visual {
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 16px 44px rgba(1, 58, 89, 0.15);
}
.fund-hero-img {
  width: 100%;
  object-fit: cover;
  display: block;
}
.fund-img-fallback {
  object-fit: contain !important;
  padding: 2rem;
  background: var(--primary-light);
  opacity: 0.6;
}

/* Shared section title */
.fund-section-title {
  color: var(--primary-dark);
  font-weight: 700;
  margin-top: 0.4rem;
}

/* 2) Steps */
.fund-steps {
  background-color: var(--primary-light);
}
.fund-step {
  position: relative;
  background: var(--white);
  border-radius: 14px;
  padding: 2rem 1.5rem 1.5rem;
  height: 100%;
  text-align: center;
  box-shadow: 0 6px 22px rgba(1, 58, 89, 0.06);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.fund-step:hover {
  transform: translateY(-5px);
  box-shadow: 0 14px 36px rgba(1, 58, 89, 0.13);
}
.fund-step-num {
  position: absolute;
  top: -16px;
  left: 50%;
  transform: translateX(-50%);
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--gold);
  color: var(--primary-dark);
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}
.fund-step-icon {
  width: 60px;
  height: 60px;
  margin: 0.5rem auto 1rem;
  border-radius: 15px;
  background: var(--primary-light);
  color: var(--primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.7rem;
}
.fund-step-title {
  color: var(--primary-dark);
  font-size: 1.1rem;
  font-weight: 600;
  margin-bottom: 0.5rem;
}
.fund-step-text {
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.6;
  margin: 0;
}

/* 3) Stat band */
.fund-stat-band {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: var(--white);
  padding: 3.5rem 0;
}
.fund-stat-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 1.5rem;
  text-align: center;
}
.fund-stat-num {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: clamp(3.5rem, 9vw, 6rem);
  line-height: 1;
  color: var(--gold);
}
.fund-stat-copy {
  text-align: left;
  max-width: 420px;
}
.fund-stat-lead {
  font-size: 1.35rem;
  font-weight: 600;
  margin-bottom: 0.35rem;
}
.fund-stat-sub {
  color: rgba(255, 255, 255, 0.82);
  margin: 0;
}

/* 4) Inquiry form */
.fund-inquiry {
  background-color: var(--white);
}
.fund-form-card {
  position: relative;
  background: var(--white);
  border: 1px solid #e3ebef;
  border-radius: 22px;
  overflow: hidden;                 /* keeps the tinted head inside the radius */
  box-shadow: 0 18px 50px rgba(1, 58, 89, 0.12);
}
/* Gold hairline across the very top of the card */
.fund-form-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 4px;
  background: linear-gradient(90deg, var(--gold), #ffe6a3, var(--gold));
}

/* Tinted header band so the heading reads as part of the form, not floating */
.fund-form-head {
  background: linear-gradient(160deg, var(--primary-light) 0%, #f6fafc 100%);
  border-bottom: 1px solid #e3ebef;
  padding: 2.2rem 2.5rem 1.6rem;
}
.fund-form-title {
  color: var(--primary-dark);
  font-weight: 700;
  margin-bottom: 0.35rem;
}
.fund-form-sub {
  color: var(--muted);
  margin-bottom: 0;
}
/* Three quick reassurance chips under the heading */
.fund-form-perks {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding: 0;
  margin: 1.1rem 0 0;
}
.fund-form-perks li {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  background: var(--white);
  border: 1px solid rgba(2, 83, 126, 0.14);
  border-radius: 50px;
  padding: 0.35rem 0.85rem;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--primary);
}
.fund-form-perks i { color: var(--gold); font-size: 0.95rem; }

.fund-form { padding: 1.8rem 2.5rem 2.2rem; }

.fund-form .form-label {
  font-weight: 600;
  font-size: 0.86rem;
  color: #023d5d;
  margin-bottom: 0.4rem;
}
.fund-form .form-label i {
  color: var(--primary);
  margin-right: 0.25rem;
}
.fund-form .form-label .text-muted { font-weight: 500; }

/* Inputs sit on a soft tint and lift to white on focus */
.fund-form .form-control {
  border-radius: 12px;
  padding: 0.72rem 0.95rem;
  border: 1.5px solid #dfe8ee;
  background: #f7fafc;
  transition: border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease;
}
.fund-form .form-control::placeholder { color: #9fb0bb; }
.fund-form .form-control:hover { border-color: #c3d5e0; }
.fund-form .form-control:focus {
  border-color: var(--primary);
  background: var(--white);
  box-shadow: 0 0 0 4px rgba(2, 83, 126, 0.12);
}
.fund-form textarea.form-control { min-height: 120px; resize: vertical; }

/* Privacy / response-time line under the submit button */
.fund-form-note {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  margin: 0.9rem 0 0;
  color: #8a97a1;
  font-size: 0.8rem;
  line-height: 1.55;
}
.fund-form-note i { color: var(--primary); margin-top: 0.15rem; }

@media (max-width: 575.98px) {
  .fund-form-head { padding: 1.6rem 1.3rem 1.3rem; }
  .fund-form { padding: 1.4rem 1.3rem 1.8rem; }
  .fund-form-perks li { font-size: 0.76rem; padding: 0.3rem 0.7rem; }
}

/* Sidebar */
.fund-sidebar {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.fund-info-card {
  background: var(--primary-light);
  border-radius: 14px;
  padding: 1.5rem;
}
.fund-info-icon {
  width: 46px;
  height: 46px;
  border-radius: 12px;
  background: var(--primary);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.35rem;
  margin-bottom: 0.9rem;
}
.fund-info-title {
  color: var(--primary-dark);
  font-size: 1.15rem;
  font-weight: 600;
  margin-bottom: 0.6rem;
}
.fund-info-text {
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.65;
  margin: 0;
}
.fund-checks {
  list-style: none;
  padding: 0;
  margin: 0;
  columns: 2;
}
.fund-checks li {
  padding: 0.25rem 0;
  font-size: 0.92rem;
  color: var(--text);
  break-inside: avoid;
}
.fund-checks i {
  color: #2e9e5b;
  margin-right: 0.4rem;
}
.fund-info-contact {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.fund-mini-title {
  color: var(--primary-dark);
  font-size: 0.95rem;
  font-weight: 600;
  margin-bottom: 0.25rem;
}
.fund-mini-title i {
  color: var(--primary);
  margin-right: 0.3rem;
}
.fund-mini-text {
  color: var(--muted);
  font-size: 0.9rem;
  margin: 0 0 0.6rem;
}
.fund-btn-directions {
  background: var(--white);
  color: var(--primary);
  border: 1px solid var(--primary);
  font-weight: 600;
  border-radius: 50px;
  padding: 0.5rem 1.15rem;
  font-size: 0.9rem;
}
.fund-btn-directions:hover {
  background: var(--primary);
  color: var(--white);
}

/* 5) Download band */
.fund-download-band {
  background: var(--primary-dark);
  color: var(--white);
  padding: 3rem 0;
}
.fund-download-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
}
.fund-download-title {
  color: var(--white);
  font-weight: 700;
  font-size: 1.5rem;
  margin-bottom: 0.35rem;
}
.fund-download-text {
  color: rgba(255, 255, 255, 0.82);
  margin: 0;
  max-width: 620px;
}
.fund-download-btn {
  background: var(--gold);
  color: var(--primary-dark);
  font-weight: 700;
  border-radius: 50px;
  padding: 0.85rem 1.9rem;
  white-space: nowrap;
}
.fund-download-btn:hover {
  background: var(--white);
  color: var(--primary-dark);
}

/* 6) Causes */
.fund-causes {
  background-color: var(--primary-light);
}
.fund-cause {
  display: block;
  background: var(--white);
  border-radius: 14px;
  overflow: hidden;
  height: 100%;
  color: inherit;
  text-decoration: none;
  box-shadow: 0 6px 22px rgba(1, 58, 89, 0.06);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.fund-cause:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 40px rgba(1, 58, 89, 0.14);
  color: inherit;
}
.fund-cause-media {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--primary-light);
}
.fund-cause-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.fund-cause:hover .fund-cause-media img {
  transform: scale(1.06);
}
.fund-cause-body {
  padding: 1.35rem;
}
.fund-cause-title {
  color: var(--primary-dark);
  font-size: 1.1rem;
  font-weight: 600;
  margin-bottom: 0.5rem;
}
.fund-cause-title i {
  font-size: 0.8rem;
  color: var(--primary);
}
.fund-cause-text {
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.6;
  margin: 0;
}

@media (max-width: 575.98px) {
  .fund-stat-copy { text-align: center; }
  .fund-download-btn { width: 100%; text-align: center; }
}

/* ==========================================================================
   APPOINTMENTS — service showcase grid + filter tabs
   ========================================================================== */
.appt-services {
  background-color: var(--white);
}
.appt-lead {
  color: var(--muted);
  font-size: 1.05rem;
  margin-bottom: 0;
}

/* Filter tabs */
.appt-tabs {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.6rem;
  margin: 1.75rem 0 2.5rem;
}

/* On phones the pills wrapped onto three ragged rows (~150px of chrome before
   any service showed). Below md they become one swipeable row instead. */
@media (max-width: 767.98px) {
  .appt-tabs {
    flex-wrap: nowrap;
    justify-content: flex-start;
    overflow-x: auto;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;              /* Firefox */
    margin: 1.25rem 0 1.75rem;
    /* Bleed to the screen edges so the strip reads as scrollable, and pad the
       ends back so the first/last pill are not glued to the edge. */
    margin-left: calc(var(--bs-gutter-x, 1.5rem) * -0.5);
    margin-right: calc(var(--bs-gutter-x, 1.5rem) * -0.5);
    padding: 0.25rem calc(var(--bs-gutter-x, 1.5rem) * 0.5);
  }
  .appt-tabs::-webkit-scrollbar { display: none; }  /* Safari / Chrome */

  .appt-tab {
    flex: 0 0 auto;
    scroll-snap-align: start;
    font-size: 0.86rem;
    padding: 0.5rem 1.1rem;
  }
}
.appt-tab {
  border: 1.5px solid var(--primary);
  background: transparent;
  color: var(--primary);
  font-weight: 600;
  font-size: 0.92rem;
  padding: 0.5rem 1.4rem;
  border-radius: 50px;
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease;
}
.appt-tab:hover {
  background: rgba(2, 83, 126, 0.08);
}
.appt-tab.active {
  background: var(--primary);
  color: var(--white);
}

/* Service card */
.appt-card {
  background: var(--white);
  border: 1px solid #e3ebef;
  border-radius: 16px;
  overflow: hidden;
  height: 100%;
  display: flex;
  flex-direction: column;
  box-shadow: 0 6px 22px rgba(1, 58, 89, 0.06);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.appt-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 18px 42px rgba(1, 58, 89, 0.15);
}
.appt-card-media {
  position: relative;
  overflow: hidden;
  background: var(--primary-light);
}
.appt-card-media img {
  width: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.appt-card-media img.appt-img-fallback {
  object-fit: contain;
  padding: 1.75rem;
  opacity: 0.6;
}
.appt-card:hover .appt-card-media img:not(.appt-img-fallback) {
  transform: scale(1.06);
}
.appt-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  background: var(--gold);
  color: var(--primary-dark);
  font-weight: 700;
  font-size: 0.75rem;
  letter-spacing: 0.02em;
  padding: 0.3rem 0.7rem;
  border-radius: 50px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.appt-card-body {
  padding: 1.25rem 1.35rem 1.5rem;
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
}
.appt-card-name {
  color: var(--primary-dark);
  font-size: 1.15rem;
  font-weight: 600;
  margin-bottom: 0.5rem;
}
.appt-card-meta {
  color: var(--muted);
  font-size: 0.9rem;
  margin-bottom: 0.4rem;
}
.appt-card-meta i {
  color: var(--primary);
  margin-right: 0.25rem;
}
.appt-card-price {
  margin-bottom: 1.1rem;
}
.appt-card-price .price-now {
  color: var(--primary);
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 1.35rem;
}
.appt-card-price .price-was {
  color: var(--muted);
  text-decoration: line-through;
  font-size: 0.95rem;
  margin-left: 0.4rem;
}
.appt-card-body .btn-book {
  margin-top: auto;
}

/* ==========================================================================
   MOBILE TAP TARGETS — keep interactive pills/tabs/icons at ~44px on phones.
   Padding/colors untouched; only a minimum height is enforced.
   ========================================================================== */
@media (max-width: 575.98px) {
  .faq-pill,
  .appt-tab {
    min-height: 44px;
  }

  .gift-lightbox-btn {
    width: 44px;
    height: 44px;
  }

  .footer-newsletter-btn,
  .footer-social a,
  .top-bar-social a {
    min-width: 44px;
    min-height: 44px;
  }
}

/* ==========================================================================
   SMOG PROS PAGE — moved out of the page's inline <style> block (no rule changes)
   ========================================================================== */
/* Buttons */
.smog-btn-outline {
  display: inline-flex; align-items: center; gap: .5rem;
  border: 2px solid var(--primary);
  color: var(--primary);
  font-weight: 600;
  border-radius: 50px;
  padding: 0.62rem 1.7rem;
  transition: background-color .2s ease, color .2s ease, transform .2s ease;
}
.smog-btn-outline:hover, .smog-btn-outline:focus {
  background-color: var(--primary); color: #fff; transform: translateY(-2px);
}
.smog-btn-light {
  display: inline-flex; align-items: center; gap: .5rem;
  background: #fff; color: var(--primary); font-weight: 600;
  border-radius: 50px; padding: 0.62rem 1.7rem;
  transition: transform .2s ease, box-shadow .2s ease;
}
.smog-btn-light:hover, .smog-btn-light:focus {
  color: var(--primary-dark); transform: translateY(-2px);
  box-shadow: 0 0 24px rgba(255,255,255,.35);
}
.smog-btn-ghost {
  display: inline-flex; align-items: center; gap: .5rem;
  border: 2px solid rgba(255,255,255,.7); color: #fff; font-weight: 600;
  border-radius: 50px; padding: 0.62rem 1.7rem;
  transition: background-color .2s ease, color .2s ease, transform .2s ease;
}
.smog-btn-ghost:hover, .smog-btn-ghost:focus {
  background: #fff; color: var(--primary); transform: translateY(-2px);
}
.smog-actions { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 1.6rem; }

/* Hero */
.smog-hero { background: #fff; }
.smog-hero-lead { color: var(--muted, #5b6b76); font-size: 1.05rem; line-height: 1.75; margin-bottom: 1rem; }
.smog-checks { list-style: none; padding: 0; margin: 1.3rem 0 0; display: grid; grid-template-columns: 1fr 1fr; gap: .6rem 1.2rem; }
.smog-checks li { display: flex; align-items: center; gap: .55rem; font-weight: 500; color: #023D5D; }
.smog-checks li i { color: var(--primary); font-size: 1.15rem; }
@media (max-width: 575.98px) { .smog-checks { grid-template-columns: 1fr; } }

.smog-hero-visual { position: relative; }
.smog-hero-img {
  width: 100%; height: 460px; object-fit: cover;
  border-radius: 22px; box-shadow: 0 24px 60px rgba(2,83,126,.22);
}
.smog-img-fallback { object-fit: contain; background: var(--primary-light); padding: 2rem; }
.smog-badge {
  position: absolute; left: 18px; bottom: 18px;
  display: inline-flex; align-items: center; gap: .5rem;
  background: rgba(255,255,255,.95); color: var(--primary);
  font-weight: 600; padding: .6rem 1.1rem; border-radius: 50px;
  box-shadow: 0 8px 22px rgba(2,83,126,.25);
}
.smog-badge i { color: var(--gold); font-size: 1.25rem; }

/* Feature cards */
/* Page rhythm: sections alternate dark band / light band all the way down —
   hero(L) features(D) pricing(L) info+map(D) near-me(L) reviews(D) cta(L). */
.smog-features { background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%); color: #fff; }
.smog-features .section-title { color: #fff; }
.smog-card {
  height: 100%; background: #fff; border-radius: 18px; padding: 2rem 1.6rem;
  box-shadow: 0 10px 30px rgba(2,83,126,.08);
  transition: transform .25s ease, box-shadow .25s ease;
}
.smog-card:hover { transform: translateY(-6px); box-shadow: 0 18px 44px rgba(2,83,126,.16); }
.smog-card-icon {
  width: 62px; height: 62px; border-radius: 16px;
  display: grid; place-items: center; margin-bottom: 1.1rem;
  background: var(--primary-light); color: var(--primary); font-size: 1.7rem;
}
.smog-card-title { font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1.18rem; color: #023D5D; margin-bottom: .5rem; }
.smog-card-text { color: var(--muted, #5b6b76); line-height: 1.65; margin: 0; }

/* Pricing */
.smog-pricing { background: #fff; }
.smog-price-card {
  height: 100%; background: #fff; border: 1px solid rgba(2,83,126,.12);
  border-radius: 20px; padding: 2.4rem 2rem; text-align: center;
  box-shadow: 0 10px 30px rgba(2,83,126,.07);
  transition: transform .25s ease, box-shadow .25s ease;
}
.smog-price-card:hover { transform: translateY(-6px); box-shadow: 0 18px 44px rgba(2,83,126,.16); }
.smog-price-featured {
  background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: #fff; border: none; position: relative;
}
.smog-price-featured .smog-price-name,
.smog-price-featured .smog-price-desc { color: #fff; }
.smog-price-tag {
  position: absolute; top: -14px; left: 50%; transform: translateX(-50%);
  background: var(--gold); color: var(--primary-dark); font-weight: 600;
  font-size: .78rem; letter-spacing: .04em; text-transform: uppercase;
  padding: .35rem 1rem; border-radius: 50px;
}
.smog-price-name { font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1.3rem; color: #023D5D; margin-bottom: .8rem; }
.smog-price-amount { font-family: "Poppins", sans-serif; font-weight: 700; font-size: 3.2rem; line-height: 1; margin-bottom: .9rem; color: var(--primary); }
.smog-price-featured .smog-price-amount { color: var(--gold); }
.smog-price-desc { color: var(--muted, #5b6b76); line-height: 1.65; margin-bottom: 1.4rem; }
.smog-price-note { display: inline-flex; align-items: center; gap: .45rem; color: var(--primary); font-weight: 600; }

/* Info strip (dark band) */
.smog-info-band { background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%); color: #fff; }
/* Section heading sits on the dark band — keep it white (gold span unaffected) */
.smog-info-band .section-title { color: #fff; }
/* Location/hours/credential cards sit beside the map, so they read left-aligned
   in a stack rather than as three centered columns. */
.smog-info-stack { display: flex; flex-direction: column; gap: 1rem; height: 100%; }
.smog-info-col {
  text-align: left; padding: 1.4rem 1.5rem;
  background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.15);
  border-radius: 18px;
  transition: background-color .25s ease, border-color .25s ease, transform .25s ease;
}
.smog-info-col:hover { background: rgba(255,255,255,.13); border-color: rgba(255,193,7,.45); transform: translateX(4px); }
.smog-info-icon { font-size: 2rem; color: var(--gold); margin-bottom: .7rem; }
.smog-info-title { font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1.15rem; color: #fff; margin-bottom: .6rem; }
.smog-info-text { color: rgba(255,255,255,.85); line-height: 1.65; margin-bottom: 1rem; }
.smog-info-text a { color: #fff; }
.smog-info-links { display: flex; flex-wrap: wrap; gap: .55rem; }
.smog-chip {
  display: inline-flex; align-items: center; gap: .4rem;
  background: rgba(255,255,255,.12); color: #fff; font-weight: 500;
  padding: .45rem 1rem; border-radius: 50px; font-size: .9rem;
  transition: background-color .2s ease;
}
.smog-chip:hover, .smog-chip:focus { background: rgba(255,255,255,.25); color: #fff; }

/* Map (sits beside the location cards in the info band) */
.smog-map-frame {
  position: relative; height: 100%; min-height: 460px;
  border-radius: 22px; overflow: hidden; line-height: 0;
  border: 1px solid rgba(255,255,255,.18);
  box-shadow: 0 20px 50px rgba(0,0,0,.28);
}
.smog-map-frame iframe { width: 100%; height: 100%; min-height: 460px; border: 0; display: block; }
.smog-map-badge {
  position: absolute; left: 16px; bottom: 16px;
  display: inline-flex; align-items: center; gap: .45rem;
  background: rgba(255,255,255,.95); color: var(--primary);
  font-weight: 600; font-size: .85rem; line-height: 1.2;
  padding: .5rem 1rem; border-radius: 50px;
  box-shadow: 0 8px 22px rgba(0,0,0,.2); pointer-events: none;
}
.smog-map-badge i { color: var(--gold); }
@media (max-width: 991.98px) {
  .smog-map-frame, .smog-map-frame iframe { min-height: 340px; }
}
@media (max-width: 575.98px) {
  .smog-map-frame, .smog-map-frame iframe { min-height: 260px; }
  .smog-info-col:hover { transform: none; }
}

/* Near Me info grid */
.smog-nearme { background: var(--primary-light); }
.smog-nm-card {
  height: 100%; background: #fff; border: 1px solid rgba(2,83,126,.08); border-radius: 20px;
  overflow: hidden; display: flex; flex-direction: column;
  box-shadow: 0 12px 34px rgba(2,83,126,.08);
  transition: transform .3s cubic-bezier(.2,.7,.3,1), box-shadow .3s ease, border-color .3s ease;
}
.smog-nm-card:hover { transform: translateY(-8px); box-shadow: 0 26px 56px rgba(2,83,126,.2); border-color: rgba(2,83,126,.18); }

/* media header — image or gradient band */
.smog-nm-media {
  position: relative; aspect-ratio: 16 / 10;
}
/* inner wrapper clips the image/zoom; media itself stays overflow-visible so badge shows */
.smog-nm-media-inner {
  position: absolute; inset: 0; overflow: hidden; border-radius: 20px 20px 0 0;
  background: linear-gradient(150deg, var(--primary) 0%, var(--primary-dark) 100%);
}
.smog-nm-img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform .5s ease;
}
.smog-nm-card:hover .smog-nm-img { transform: scale(1.06); }
.smog-nm-media-inner::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(2,61,93,0) 45%, rgba(2,61,93,.55) 100%);
}
/* icon badge floats over the media, bottom-left */
.smog-nm-icon {
  position: absolute; left: 1.2rem; bottom: -26px; z-index: 3;
  width: 56px; height: 56px; border-radius: 15px;
  display: grid; place-items: center; font-size: 1.5rem; color: #fff;
  background: linear-gradient(150deg, var(--primary) 0%, var(--primary-dark) 100%);
  box-shadow: 0 10px 22px rgba(2,83,126,.35); border: 3px solid #fff;
  transition: transform .3s ease;
}
.smog-nm-card:hover .smog-nm-icon { transform: translateY(-3px) rotate(-4deg); }
/* when no image, center the icon in the gradient band */
.smog-nm-media.no-img .smog-nm-icon {
  left: 50%; top: 50%; bottom: auto; transform: translate(-50%, -50%);
  width: 68px; height: 68px; font-size: 1.9rem;
}
.smog-nm-media.no-img:hover .smog-nm-icon,
.smog-nm-card:hover .smog-nm-media.no-img .smog-nm-icon { transform: translate(-50%, -50%) rotate(-4deg); }
.smog-nm-media.no-img .smog-nm-media-inner::after { display: none; }

.smog-nm-body { padding: 2.2rem 1.5rem 1.7rem; text-align: left; flex: 1; }
.smog-nm-title { font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1.1rem; color: #023D5D; margin-bottom: .5rem; }
.smog-nm-text { color: var(--muted, #5b6b76); font-size: .92rem; line-height: 1.65; margin: 0; }
.smog-nm-text a { color: var(--primary); font-weight: 600; }

/* Reviews */
.smog-reviews { background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%); color: #fff; }
.smog-reviews .section-title { color: #fff; }
.smog-rating { text-align: center; margin-bottom: 2.6rem; }
.smog-rating-num { font-family: "Poppins", sans-serif; font-weight: 700; font-size: 3rem; line-height: 1; color: #fff; }
.smog-rating-stars { color: var(--gold); font-size: 1.25rem; margin: .35rem 0; }
.smog-rating-count { color: rgba(255,255,255,.8); font-size: .95rem; }
.smog-review-card {
  position: relative; height: 100%; background: #fff; border-radius: 20px; padding: 2.6rem 1.7rem 1.7rem;
  box-shadow: 0 12px 32px rgba(2,83,126,.09); transition: transform .25s ease, box-shadow .25s ease;
}
.smog-review-card:hover { transform: translateY(-6px); box-shadow: 0 20px 46px rgba(2,83,126,.16); }
.smog-review-card::before {
  content: "\201C"; position: absolute; top: .4rem; left: 1.3rem;
  font-family: Georgia, serif; font-size: 4.2rem; line-height: 1; color: rgba(2,83,126,.13);
}
.smog-review-stars { color: var(--gold); font-size: .95rem; margin-bottom: .55rem; }
.smog-review-title { font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1.08rem; color: #023D5D; margin-bottom: .5rem; }
.smog-review-text { color: #3d4a52; font-size: .95rem; line-height: 1.75; margin-bottom: 1.3rem; }
.smog-review-head { display: flex; align-items: center; gap: .7rem; border-top: 1px solid rgba(2,83,126,.09); padding-top: 1rem; }
.smog-review-avatar { width: 44px; height: 44px; border-radius: 50%; background: var(--primary); color: #fff; display: grid; place-items: center; font-weight: 600; flex-shrink: 0; }
.smog-review-name { font-weight: 600; color: #023D5D; margin: 0; font-size: .92rem; }
.smog-review-date { color: #8a97a1; font-size: .8rem; display: inline-flex; align-items: center; gap: .3rem; }
.smog-review-src { margin-left: auto; color: #8a97a1; font-size: 1.15rem; }

/* Bottom CTA */
/* Light band, dark card — keeps the CTA punchy without two dark bands in a row */
.smog-cta-band { background: #fff; }
.smog-cta-card {
  background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: #fff; border-radius: 24px; padding: 3rem 2rem;
  box-shadow: 0 24px 60px rgba(2,83,126,.22);
}
.smog-cta-title { color: #fff; }
.smog-cta-text { color: rgba(255,255,255,.88); font-size: 1.08rem; line-height: 1.7; max-width: 620px; margin: 0 auto 1.6rem; }

/* ==========================================================================
   CERAMIC COATING PAGE — moved out of the page's inline <style> block (no rule changes)
   ========================================================================== */
/* Buttons */
.cer-btn-outline {
  display: inline-flex; align-items: center; gap: .5rem;
  border: 2px solid var(--primary); color: var(--primary); font-weight: 600;
  border-radius: 50px; padding: 0.62rem 1.7rem;
  transition: background-color .2s ease, color .2s ease, transform .2s ease;
}
.cer-btn-outline:hover, .cer-btn-outline:focus { background: var(--primary); color: #fff; transform: translateY(-2px); }
.cer-btn-light {
  display: inline-flex; align-items: center; gap: .5rem;
  background: #fff; color: var(--primary); font-weight: 600;
  border-radius: 50px; padding: 0.62rem 1.7rem;
  transition: transform .2s ease, box-shadow .2s ease;
}
.cer-btn-light:hover, .cer-btn-light:focus { color: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 0 24px rgba(255,255,255,.35); }
.cer-btn-ghost {
  display: inline-flex; align-items: center; gap: .5rem;
  border: 2px solid rgba(255,255,255,.7); color: #fff; font-weight: 600;
  border-radius: 50px; padding: 0.62rem 1.7rem;
  transition: background-color .2s ease, color .2s ease, transform .2s ease;
}
.cer-btn-ghost:hover, .cer-btn-ghost:focus { background: #fff; color: var(--primary); transform: translateY(-2px); }
.cer-actions { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 1.6rem; }

/* Hero */
.cer-hero { background: #fff; }
.cer-hero-lead { color: var(--muted, #5b6b76); font-size: 1.05rem; line-height: 1.75; margin-bottom: 1rem; }
.cer-checks { list-style: none; padding: 0; margin: 1.3rem 0 0; display: grid; grid-template-columns: 1fr 1fr; gap: .6rem 1.2rem; }
.cer-checks li { display: flex; align-items: center; gap: .55rem; font-weight: 500; color: #023D5D; }
.cer-checks li i { color: var(--primary); font-size: 1.15rem; }
@media (max-width: 575.98px) { .cer-checks { grid-template-columns: 1fr; } }

.cer-hero-visual { position: relative; }
.cer-hero-img { width: 100%; object-fit: cover; border-radius: 22px; box-shadow: 0 24px 60px rgba(2,83,126,.22); }
.cer-img-fallback { object-fit: contain; background: var(--primary-light); padding: 2rem; }
.cer-badge {
  position: absolute; left: 18px; bottom: 18px;
  display: inline-flex; align-items: center; gap: .5rem;
  background: rgba(255,255,255,.95); color: var(--primary); font-weight: 600;
  padding: .6rem 1.1rem; border-radius: 50px; box-shadow: 0 8px 22px rgba(2,83,126,.25);
}
.cer-badge i { color: var(--gold); font-size: 1.25rem; }

/* Feature cards */
/* Page rhythm: bands alternate dark / light top to bottom — hero(L)
   features(D) pricing(L) faq(D) location+map(L) awards(D) reviews(L) cta(D). */
.cer-features { background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%); color: #fff; }
.cer-features .section-title { color: #fff; }
.cer-card {
  height: 100%; background: #fff; border-radius: 18px; padding: 2rem 1.7rem;
  box-shadow: 0 10px 30px rgba(2,83,126,.08);
  transition: transform .25s ease, box-shadow .25s ease;
}
.cer-card:hover { transform: translateY(-6px); box-shadow: 0 18px 44px rgba(2,83,126,.16); }
.cer-card-icon { width: 62px; height: 62px; border-radius: 16px; display: grid; place-items: center; margin-bottom: 1.1rem; background: var(--primary-light); color: var(--primary); font-size: 1.7rem; }
.cer-card-title { font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1.18rem; color: #023D5D; margin-bottom: .5rem; }
.cer-card-text { color: var(--muted, #5b6b76); line-height: 1.65; margin: 0; }

/* Pricing */
.cer-pricing { background: #fff; }
.cer-price-intro { color: var(--muted, #5b6b76); font-size: .98rem; max-width: 620px; margin: 0 auto; }
.cer-price-card {
  height: 100%; background: #fff; border: 1px solid rgba(2,83,126,.12);
  border-radius: 20px; padding: 1.8rem 1.5rem; position: relative;
  box-shadow: 0 10px 30px rgba(2,83,126,.07);
  transition: transform .25s ease, box-shadow .25s ease;
  display: flex; flex-direction: column;
}
.cer-price-card:hover { transform: translateY(-6px); box-shadow: 0 18px 44px rgba(2,83,126,.16); }
.cer-price-featured { background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%); color: #fff; border: none; }
.cer-price-featured .cer-price-name, .cer-price-featured .cer-price-inc li { color: #fff; }
.cer-price-featured .cer-price-inc li i { color: var(--gold); }
.cer-best-tag {
  position: absolute; top: -14px; left: 50%; transform: translateX(-50%);
  background: var(--gold); color: var(--primary-dark); font-weight: 600;
  font-size: .78rem; letter-spacing: .04em; text-transform: uppercase;
  padding: .35rem 1rem; border-radius: 50px; white-space: nowrap;
}
.cer-price-name { font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1.12rem; color: #023D5D; margin-bottom: .25rem; }
.cer-price-amount { font-family: "Poppins", sans-serif; font-weight: 700; font-size: 1.9rem; line-height: 1; color: var(--primary); }
.cer-price-featured .cer-price-amount { color: var(--gold); }
.cer-save { display: inline-block; background: var(--primary-light); color: var(--primary); font-weight: 600; font-size: .75rem; padding: .24rem .7rem; border-radius: 50px; margin: .55rem 0 .9rem; }
.cer-price-featured .cer-save { background: rgba(245,196,81,.2); color: var(--gold); }
.cer-price-inc { list-style: none; padding: 0; margin: 0 0 1.1rem; flex: 1 1 auto; }
.cer-price-inc li { display: flex; gap: .5rem; color: #3d4a52; font-size: .88rem; line-height: 1.5; margin-bottom: .55rem; }
.cer-price-inc li i { color: var(--primary); font-size: .95rem; margin-top: .15rem; flex-shrink: 0; }
/* Rich (CKEditor) ceramic includes: check-styled list. */
.cer-inc-rich { margin: 0 0 1.1rem; flex: 1 1 auto; }
.cer-inc-rich ul, .cer-inc-rich ol { list-style: none; padding: 0; margin: 0; }
.cer-inc-rich li { position: relative; padding-left: 1.45rem; color: #3d4a52; font-size: .88rem; line-height: 1.5; margin-bottom: .55rem; }
.cer-inc-rich li strong { color: #023D5D; }
.cer-price-featured .cer-inc-rich li strong { color: var(--gold); }
.cer-inc-rich li::before { content: "\2713"; font-weight: 700; position: absolute; left: 0; top: 0; color: var(--primary); font-size: .95rem; }
.cer-price-featured .cer-inc-rich li { color: #fff; }
.cer-price-featured .cer-inc-rich li::before { color: var(--gold); }
.cer-disclaimer {
  margin: 2rem auto 0; max-width: 900px;
  background: var(--primary-light); border-left: 3px solid var(--primary);
  border-radius: 10px; padding: .85rem 1.1rem; color: #5b6b76; font-size: .82rem; line-height: 1.55;
}

/* FAQ accordion */
.cer-faq { background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%); color: #fff; }
.cer-faq .section-title { color: #fff; }
.cer-accordion { max-width: 820px; margin: 0 auto; }
.cer-accordion .accordion-item { border: none; border-radius: 14px !important; overflow: hidden; margin-bottom: .9rem; box-shadow: 0 8px 24px rgba(2,83,126,.08); }
.cer-accordion .accordion-button {
  font-family: "Poppins", sans-serif; font-weight: 600; color: #023D5D;
  background: #fff; padding: 1.15rem 1.4rem; box-shadow: none;
}
.cer-accordion .accordion-button:not(.collapsed) { background: var(--primary); color: #fff; }
.cer-accordion .accordion-button::after {
  background-image: none; content: "\F282"; font-family: "bootstrap-icons";
  font-size: 1.1rem; width: auto; height: auto; transition: transform .25s ease;
}
.cer-accordion .accordion-button:not(.collapsed)::after { transform: rotate(180deg); color: var(--gold); }
.cer-accordion .accordion-button:focus { box-shadow: none; }
.cer-accordion .accordion-body { color: var(--muted, #5b6b76); line-height: 1.7; background: #fff; padding: 0 1.4rem 1.3rem; }

/* Location + map (light band) */
.cer-loc-band { background: #fff; }
.cer-loc-card {
  height: 100%; display: flex; flex-direction: column;
  background: var(--primary-light); border: 1px solid rgba(2,83,126,.1);
  border-radius: 20px; padding: 2rem 1.8rem;
  box-shadow: 0 10px 30px rgba(2,83,126,.08);
}
.cer-loc-title { font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1.3rem; color: #023D5D; margin-bottom: .8rem; }
.cer-loc-text { color: var(--muted, #5b6b76); line-height: 1.7; margin-bottom: 1.2rem; }
.cer-loc-list { list-style: none; padding: 0; margin: 0 0 1.4rem; }
.cer-loc-list li { display: flex; align-items: center; gap: .6rem; color: #023D5D; font-weight: 500; margin-bottom: .6rem; }
.cer-loc-list li i { color: var(--primary); font-size: 1.2rem; }
.cer-loc-list a { color: var(--primary); font-weight: 600; }
.cer-loc-card .cer-btn-outline { align-self: flex-start; margin-top: auto; }

/* Pricing card media image (photo on top, gradient+icon fallback always visible) */
.cer-price-media {
  /* No fixed height — the photo sets it. min-height keeps the gradient+icon
     fallback visible when a card has no image. */
  position: relative; min-height: 150px; border-radius: 14px; overflow: hidden; margin-bottom: 1.1rem;
  background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%);
  display: grid; place-items: center;
}
.cer-price-media > i { position: absolute; font-size: 3.2rem; color: rgba(255,255,255,.9); }
.cer-price-media img { position: relative; width: 100%; display: block; }
.cer-price-featured .cer-price-media { box-shadow: 0 8px 22px rgba(0,0,0,.25); }
.cer-price-limited { display: block; font-size: .76rem; font-weight: 600; color: var(--primary); margin: -.2rem 0 .9rem; }
.cer-price-featured .cer-price-limited { color: var(--gold); }

/* About cards circular media */
.cer-card-media {
  position: relative; width: 92px; height: 92px; border-radius: 50%; overflow: hidden; margin-bottom: 1.1rem;
  background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%);
  display: grid; place-items: center;
}
.cer-card-media > i { font-size: 2rem; color: rgba(255,255,255,.92); }
.cer-card-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

/* Map (sits beside the location card) */
.cer-map-frame {
  position: relative; height: 100%; min-height: 420px;
  border-radius: 22px; overflow: hidden; line-height: 0;
  box-shadow: 0 18px 44px rgba(2,83,126,.16);
}
.cer-map-frame iframe { width: 100%; height: 100%; min-height: 420px; border: 0; display: block; }
.cer-map-badge {
  position: absolute; left: 16px; bottom: 16px;
  display: inline-flex; align-items: center; gap: .45rem;
  background: rgba(255,255,255,.95); color: var(--primary);
  font-weight: 600; font-size: .85rem; line-height: 1.2;
  padding: .5rem 1rem; border-radius: 50px;
  box-shadow: 0 8px 22px rgba(0,0,0,.2); pointer-events: none;
}
.cer-map-badge i { color: var(--gold); }
@media (max-width: 991.98px) { .cer-map-frame, .cer-map-frame iframe { min-height: 320px; } }
@media (max-width: 575.98px) { .cer-map-frame, .cer-map-frame iframe { min-height: 260px; } }

/* Awards */
.cer-awards { background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%); color: #fff; }
.cer-awards .section-title { color: #fff; }
.cer-award { text-align: center; padding: 1rem; }
.cer-award-icon { font-size: 2.2rem; color: var(--gold); margin-bottom: .6rem; }
.cer-award-title { font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1rem; color: #fff; margin-bottom: .25rem; }
.cer-award-text { color: rgba(255,255,255,.8); font-size: .86rem; margin: 0; }

/* Reviews */
.cer-reviews { background: #fff; }
.cer-rating { text-align: center; margin-bottom: 2.5rem; }
.cer-stars { color: var(--gold); font-size: 1.3rem; margin: .4rem 0; }
.cer-rating-count { color: var(--muted, #5b6b76); font-size: .95rem; }
.cer-review-card { height: 100%; background: #fff; border: 1px solid rgba(2,83,126,.1); border-radius: 18px; padding: 1.6rem; box-shadow: 0 10px 30px rgba(2,83,126,.08); }
.cer-review-head { display: flex; align-items: center; gap: .8rem; margin-bottom: .8rem; }
.cer-review-avatar { width: 46px; height: 46px; border-radius: 50%; background: var(--primary-light); color: var(--primary); display: grid; place-items: center; font-weight: 600; font-size: 1.1rem; flex-shrink: 0; }
.cer-review-name { font-weight: 600; color: #023D5D; margin: 0; font-size: .95rem; }
.cer-review-stars { color: var(--gold); font-size: .85rem; }
.cer-review-text { color: var(--muted, #5b6b76); font-size: .93rem; line-height: 1.65; margin: 0; }

/* Bottom CTA */
.cer-cta-band { background: linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%); color: #fff; }
.cer-cta-title { color: #fff; }
.cer-cta-text { color: rgba(255,255,255,.88); font-size: 1.08rem; line-height: 1.7; max-width: 620px; margin: 0 auto 1.6rem; }

/* ==========================================================================
   BOOKING PAGE (appointment-book.php) — calendar, slots, summary card.
   Uses the existing brand variables; scoped to .bookpage / .book-* so nothing
   else on the site is affected.
   ========================================================================== */
.bookpage { background: #fff; }

.book-tz {
  color: var(--muted, #5b6b76);
  font-size: .92rem;
  margin-bottom: 1.6rem;
  display: flex; align-items: center; gap: .45rem;
}
.book-tz i { color: var(--primary); }

.book-card {
  background: #fff;
  border: 1px solid rgba(2, 83, 126, .1);
  border-radius: 18px;
  padding: 1.5rem;
  box-shadow: 0 10px 30px rgba(2, 83, 126, .06);
}
.book-card-title {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-size: 1.08rem;
  color: #023D5D;
  margin-bottom: 1.1rem;
  display: flex; align-items: center; gap: .5rem;
}
.book-card-title i { color: var(--primary); }
.book-hint { color: var(--muted, #5b6b76); font-size: .95rem; margin: 0; padding: 1rem 0; }

/* ---- Calendar ------------------------------------------------------------
   Reads as one solid object: a brand gradient header carrying the month and
   the arrows, then a light grid below it. Cells are borderless by default so
   only the states that matter (today, selected, closed) carry any weight. */
.book-cal {
  width: 100%;                            /* fills the card it sits in */
  background: #fff;
  border: 1px solid #e3ebef;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 10px 30px rgba(2, 83, 126, .09);
}

.book-cal-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: .5rem;
  margin-bottom: 0;
  padding: .85rem 1rem;
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
}
.book-cal-month {
  font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1.02rem;
  color: #fff; letter-spacing: .01em;
}
.book-cal-nav {
  width: 34px; height: 34px; border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, .3);
  background: rgba(255, 255, 255, .12); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background-color .2s ease, transform .2s ease, opacity .2s ease;
}
.book-cal-nav:hover:not(:disabled) { background: #fff; color: var(--primary); transform: scale(1.06); }
.book-cal-nav:disabled { opacity: .3; cursor: not-allowed; }

.book-cal-dow, .book-cal-grid {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px;
}
.book-cal-dow {
  margin: 0;
  padding: .7rem .75rem .45rem;
  background: var(--primary-light, #eef4f8);
  border-bottom: 1px solid #e3ebef;
  text-align: center; font-size: .7rem; font-weight: 700;
  color: var(--primary); text-transform: uppercase; letter-spacing: .08em;
}
.book-cal-grid { padding: .75rem; }

.book-cal-cell {
  /* Square cells on phones; on a full-width calendar a square would be ~110px
     tall, so the height is capped once there is room. */
  aspect-ratio: 1 / 1;
  border: 1px solid transparent;          /* only states show a border */
  border-radius: 12px;
  background: transparent; color: #3d4a52;
  font-size: .95rem; font-weight: 600;
  font-variant-numeric: tabular-nums;
  display: inline-flex; align-items: center; justify-content: center;
  position: relative;
  transition: background-color .18s ease, color .18s ease,
              border-color .18s ease, transform .18s ease, box-shadow .18s ease;
}
.book-cal-cell.is-empty { border: none; background: transparent; }
.book-cal-cell:hover:not(:disabled):not(.is-empty) {
  background: var(--primary-light, #eef4f8);
  color: var(--primary);
  transform: translateY(-1px);
}

/* Today: gold ring plus a dot, so it still reads once a date is selected. */
.book-cal-cell.is-today { color: var(--primary); border-color: var(--gold); }
.book-cal-cell.is-today::after {
  content: ""; position: absolute; bottom: 6px; left: 50%; transform: translateX(-50%);
  width: 4px; height: 4px; border-radius: 50%; background: var(--gold);
}

.book-cal-cell.is-selected {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  border-color: transparent; color: #fff; font-weight: 700;
  box-shadow: 0 6px 16px rgba(2, 83, 126, .3);
  transform: translateY(-1px);
}
.book-cal-cell.is-selected::after { background: var(--gold); }

/* Closed / past days: struck through so "unavailable" is visible, not just pale. */
.book-cal-cell.is-disabled {
  color: #bcc7cf; background: transparent; border-color: transparent;
  cursor: not-allowed; font-weight: 500; text-decoration: line-through;
  text-decoration-color: #dbe3e8;
}
.book-cal-cell.is-disabled:hover { transform: none; background: transparent; }

@media (min-width: 576px) {
  .book-cal-grid { padding: 1rem; gap: 6px; }
  .book-cal-dow { padding: .85rem 1rem .55rem; font-size: .74rem; }
  .book-cal-head { padding: 1rem 1.25rem; }
  .book-cal-month { font-size: 1.1rem; }
  .book-cal-cell {
    aspect-ratio: auto;
    min-height: 54px;
    font-size: 1rem;
  }
}

@media (max-width: 575.98px) {
  .book-cal-grid { padding: .5rem; gap: 3px; }
  .book-cal-cell { border-radius: 10px; font-size: .88rem; }
  .book-cal-dow { font-size: .64rem; letter-spacing: .05em; padding: .6rem .5rem .4rem; }
}

/* Slots */
.book-loading { color: var(--muted, #5b6b76); font-size: .95rem; padding: 1rem 0; display: flex; align-items: center; gap: .5rem; }
.book-slot-group + .book-slot-group { margin-top: 1.3rem; }
.book-slot-title {
  font-size: .82rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--muted, #7a8894); margin-bottom: .7rem;
}
/* Slots sit on a grid rather than wrapping ragged — times line up in columns,
   which makes a long list far quicker to scan. */
.book-slots {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(104px, 1fr));
  gap: .5rem;
}
.book-slot {
  border: 1.5px solid rgba(2, 83, 126, .18);
  background: #fff; color: var(--primary);
  font-size: .9rem; font-weight: 600;
  font-variant-numeric: tabular-nums;
  padding: .6rem .5rem; border-radius: 12px;
  text-align: center;
  transition: background-color .18s ease, color .18s ease,
              border-color .18s ease, transform .18s ease, box-shadow .18s ease;
}
.book-slot.is-available:hover {
  background: var(--primary-light, #eef4f8); border-color: var(--primary);
  transform: translateY(-2px); box-shadow: 0 6px 14px rgba(2, 83, 126, .14);
}
.book-slot.is-selected {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  border-color: transparent; color: #fff;
  box-shadow: 0 8px 18px rgba(2, 83, 126, .3);
}
.book-slot.is-booked {
  background: #fdecec; border-color: #f3c9c9; color: #b23b3b;
  cursor: not-allowed; text-decoration: line-through;
}
.book-slot.is-unavailable {
  background: #f4f7f9; border-color: #e6ecf0; color: #a5b1b9; cursor: not-allowed;
}
.book-slot:disabled:hover { transform: none; box-shadow: none; }

@media (max-width: 575.98px) {
  .book-slots { grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: .45rem; }
  .book-slot { font-size: .84rem; padding: .55rem .35rem; }
}

.book-legend {
  display: flex; flex-wrap: wrap; gap: 1.2rem;
  margin-top: 1.4rem; padding-top: 1rem; border-top: 1px solid #eef3f6;
  font-size: .85rem; color: var(--muted, #5b6b76);
}
.book-legend span { display: inline-flex; align-items: center; gap: .4rem; }
.book-swatch { width: 14px; height: 14px; border-radius: 4px; display: inline-block; border: 1.5px solid; }
.book-swatch-available   { background: #fff;    border-color: rgba(2, 83, 126, .35); }
.book-swatch-booked      { background: #fdecec; border-color: #f3c9c9; }
.book-swatch-unavailable { background: #f2f5f7; border-color: #e2e8ec; }

/* Hours card */
.book-hours { list-style: none; padding: 0; margin: 0; }
.book-hours li {
  display: flex; justify-content: space-between; gap: 1rem;
  padding: .55rem 0; border-bottom: 1px solid #eef3f6;
  font-size: .93rem; color: #3d4a52;
}
.book-hours li:last-child { border-bottom: none; }
.book-hours li span:last-child { font-weight: 600; color: #023D5D; }
.book-hours-note { margin: .9rem 0 0; font-size: .86rem; color: var(--muted, #7a8894); }

/* Sticky summary */
.book-summary {
  position: sticky; top: 100px;
  background: #fff;
  border: 1px solid rgba(2, 83, 126, .1);
  border-radius: 18px; overflow: hidden;
  box-shadow: 0 12px 34px rgba(2, 83, 126, .1);
}
.book-summary-media { position: relative; aspect-ratio: 16 / 10; background: var(--primary-light, #eef4f8); }
.book-summary-media img { width: 100%; object-fit: cover; }
.book-summary-badge {
  position: absolute; top: 12px; left: 12px;
  background: var(--gold); color: var(--primary-dark);
  font-size: .74rem; font-weight: 700; padding: .3rem .75rem; border-radius: 50px;
}
.book-summary-body { padding: 1.35rem 1.45rem 1.5rem; }
.book-summary-cat {
  display: inline-block; font-size: .72rem; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase;
  color: var(--primary); background: rgba(2, 83, 126, .08);
  padding: .22rem .7rem; border-radius: 50px; margin-bottom: .55rem;
}
.book-summary-name {
  font-family: "Poppins", sans-serif; font-weight: 600;
  font-size: 1.25rem; color: #023D5D; margin-bottom: .5rem;
}
.book-summary-meta { color: var(--muted, #7a8894); font-size: .9rem; margin-bottom: .5rem; }
.book-summary-meta i { color: var(--primary); margin-right: .25rem; }
.book-summary-price { margin-bottom: .8rem; }
.book-summary-price .price-now {
  color: var(--primary); font-family: "Poppins", sans-serif; font-weight: 700; font-size: 1.4rem;
}
.book-summary-price .price-was {
  color: var(--muted, #7a8894); text-decoration: line-through; font-size: .95rem; margin-left: .4rem;
}
.book-summary-promo { color: #1a7f4b; font-size: .88rem; font-weight: 600; margin-bottom: .7rem; }
.book-summary-desc { color: var(--muted, #5b6b76); font-size: .92rem; line-height: 1.6; margin-bottom: 1rem; }
.book-summary-sub {
  font-size: .8rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--muted, #7a8894); margin-bottom: .6rem;
}
.book-summary-list { list-style: none; padding: 0; margin: 0 0 1.1rem; }
.book-summary-list li {
  display: flex; gap: .5rem; align-items: flex-start;
  font-size: .9rem; color: #3d4a52; margin-bottom: .4rem;
}
.book-summary-list i { color: var(--primary); margin-top: .15rem; }

/* Rich (editor-authored) service includes — the markup arrives as a <ul>, so
   the tick has to come from a pseudo-element rather than an <i>. */
.book-summary-rich ul, .book-summary-rich ol { list-style: none; padding: 0; margin: 0; }
.book-summary-rich li {
  position: relative; padding-left: 1.5rem;
  font-size: .9rem; line-height: 1.55; color: #3d4a52; margin-bottom: .45rem;
}
.book-summary-rich li::before {
  content: "\F26B";                       /* bi-check-circle-fill */
  font-family: "bootstrap-icons";
  position: absolute; left: 0; top: 0;
  color: var(--primary); font-size: .85rem;
}
.book-summary-rich strong { color: #023D5D; }
.book-summary-rich p { font-size: .9rem; color: #3d4a52; margin: 0 0 .5rem; }

.book-summary-picks {
  border-top: 1px solid #eef3f6; border-bottom: 1px solid #eef3f6;
  padding: .9rem 0; margin-bottom: 1rem;
}
.book-summary-picks > div {
  display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .28rem 0;
}
.book-summary-picks span { color: var(--muted, #7a8894); font-size: .9rem; }
.book-summary-picks strong { color: #023D5D; font-size: .95rem; }

.book-summary-pay {
  font-size: .86rem; color: #1a7f4b; font-weight: 600;
  margin-bottom: 1rem; display: flex; align-items: center; gap: .4rem;
}

.book-proceed {
  width: 100%; background: var(--primary); color: #fff; font-weight: 600;
  border-radius: 50px; padding: .72rem 1.5rem; border: 0;
  display: inline-flex; align-items: center; justify-content: center; gap: .45rem;
  transition: background-color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.book-proceed:hover:not(:disabled) {
  background: var(--primary-dark); color: #fff;
  transform: translateY(-2px); box-shadow: 0 10px 24px rgba(1, 58, 89, .25);
}
.book-proceed:disabled { background: #b8c6cf; cursor: not-allowed; }

/* Confirmation modal */
/* ---- Confirmation modal --------------------------------------------------
   Same language as the contact and fundraising cards: gold top rule, gradient
   heading band, soft-tint inputs that lift to white on focus. */
.book-modal { border-radius: 20px; border: none; overflow: hidden; }
.book-modal::before {
  content: ""; display: block; height: 4px;
  background: linear-gradient(90deg, var(--gold), #ffe6a3, var(--gold));
}
.book-modal .modal-header {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: #fff; border: none; border-radius: 0;
  align-items: flex-start; padding: 1.15rem 1.4rem;
}
.book-modal .modal-title {
  font-family: "Poppins", sans-serif; font-weight: 700; font-size: 1.2rem; color: #fff;
}
.book-modal-sub { margin: .2rem 0 0; font-size: .85rem; color: rgba(255, 255, 255, .8); }
.book-modal .modal-header .btn-close { filter: invert(1) grayscale(100%) brightness(200%); opacity: .8; }
.book-modal .modal-body { padding: 1.4rem; }

/* Booking summary: the service headlines it, the four facts sit in a grid. */
.book-modal-summary {
  background: var(--primary-light, #eef4f8);
  border: 1px solid rgba(2, 83, 126, .1);
  border-radius: 14px; padding: .9rem 1.1rem;
}
.book-modal-summary .bms-row {
  display: flex; justify-content: space-between; align-items: baseline; gap: 1rem;
  font-size: .9rem; padding: .3rem 0;
}
.book-modal-summary span {
  color: var(--muted, #5b6b76);
  display: inline-flex; align-items: center; gap: .4rem; white-space: nowrap;
}
.book-modal-summary span i { color: var(--primary); font-size: .95rem; }
.book-modal-summary strong { color: #023D5D; text-align: right; }
.book-modal-summary .bms-service {
  border-bottom: 1px dashed rgba(2, 83, 126, .2);
  margin-bottom: .35rem; padding-bottom: .55rem;
}
.book-modal-summary .bms-service strong { font-size: 1.05rem; font-weight: 700; }
.book-modal-summary .bms-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1.5rem;
}
.book-modal-summary .bms-price strong { color: var(--primary); font-weight: 700; }

/* Small group heading between field sets */
.book-modal-group {
  font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  color: var(--muted, #7a8894); margin: 1.5rem 0 .1rem;
}
.book-modal-group span {
  display: block; text-transform: none; letter-spacing: 0;
  font-size: .78rem; font-weight: 500; color: #9fabb4; margin-top: .15rem;
}

.book-modal .form-label { font-size: .86rem; color: #023D5D; margin-bottom: .4rem; }
.book-modal .form-control {
  border: 1.5px solid #dfe8ee;
  background: #f7fafc;
  border-radius: 12px;
  padding: .7rem .95rem;
  font-size: .95rem;
  transition: border-color .2s ease, background-color .2s ease, box-shadow .2s ease;
}
.book-modal .form-control::placeholder { color: #9fb0bb; }
.book-modal .form-control:hover { border-color: #c3d5e0; }
.book-modal .form-control:focus {
  border-color: var(--primary); background: #fff;
  box-shadow: 0 0 0 4px rgba(2, 83, 126, .12);
}
/* Restated because the rule above outranks Bootstrap's .is-invalid. */
.book-modal .form-control.is-invalid { border-color: #dc3545; background: #fff6f6; }
.book-modal .form-control.is-invalid:focus { box-shadow: 0 0 0 4px rgba(220, 53, 69, .14); }

.book-modal-pay {
  margin: 1.3rem 0 0; font-size: .86rem; color: #1a7f4b; font-weight: 600;
  display: flex; align-items: center; gap: .5rem;
  background: #eaf6f0; border: 1px solid #cfe9dc;
  border-radius: 12px; padding: .7rem .9rem;
}
.book-modal-pay i { font-size: 1.05rem; }

.book-modal .modal-footer { border-top: 1px solid #eef3f6; padding: 1rem 1.4rem; gap: .5rem; }

.book-btn-primary {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: #fff; font-weight: 700;
  border-radius: 50px; padding: .72rem 1.7rem; border: 0;
  display: inline-flex; align-items: center; gap: .45rem;
  box-shadow: 0 10px 22px rgba(2, 83, 126, .26);
  transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}
.book-btn-primary:hover:not(:disabled) {
  color: #fff; filter: brightness(1.08); transform: translateY(-2px);
  box-shadow: 0 15px 30px rgba(2, 83, 126, .32);
}
.book-btn-primary:disabled { opacity: .7; transform: none; box-shadow: none; }
.book-btn-ghost {
  border: 1.5px solid rgba(2, 83, 126, .25); color: var(--primary);
  font-weight: 600; border-radius: 50px; padding: .68rem 1.4rem; background: #fff;
  transition: background-color .2s ease, color .2s ease;
}
.book-btn-ghost:hover { background: var(--primary-light, #eef4f8); color: var(--primary-dark); }

@media (max-width: 575.98px) {
  .book-modal .modal-body { padding: 1.1rem; }
  .book-modal-summary .bms-grid { grid-template-columns: 1fr; gap: 0; }
  .book-modal .modal-footer { flex-direction: column-reverse; }
  .book-modal .modal-footer .btn { width: 100%; justify-content: center; }
}

@media (max-width: 991.98px) {
  .book-summary { position: static; }
  .book-cal { max-width: 100%; }
}

/* ==========================================================================
   CONTACT FORM (home-map.php) — sits under the map in the location section
   ========================================================================== */
/* Matches the fundraising enquiry card: gold top rule, tinted heading band,
   soft-tint inputs that lift to white on focus. */
.contact-card {
  position: relative;
  background: #fff;
  border: 1px solid #e3ebef;
  border-radius: 22px;
  overflow: hidden;
  margin-top: 1.5rem;
  box-shadow: 0 18px 50px rgba(1, 58, 89, .12);
}
.contact-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 4px;
  background: linear-gradient(90deg, var(--gold), #ffe6a3, var(--gold));
}
.contact-card-head {
  background: linear-gradient(160deg, var(--primary-light) 0%, #f6fafc 100%);
  border-bottom: 1px solid #e3ebef;
  padding: 1.8rem 2rem 1.4rem;
}
.contact-card-title {
  font-family: "Poppins", sans-serif; font-weight: 700; font-size: 1.35rem;
  color: #023D5D; margin-bottom: .4rem;
  display: flex; align-items: center; gap: .5rem;
}
.contact-card-title i { color: var(--primary); }
.contact-card-sub { color: var(--muted, #5b6b76); font-size: .92rem; margin-bottom: 0; }

.contact-card-perks {
  list-style: none; display: flex; flex-wrap: wrap; gap: .5rem;
  padding: 0; margin: 1rem 0 0;
}
.contact-card-perks li {
  display: inline-flex; align-items: center; gap: .4rem;
  background: #fff; border: 1px solid rgba(2, 83, 126, .14);
  border-radius: 50px; padding: .35rem .85rem;
  font-size: .82rem; font-weight: 600; color: var(--primary);
}
.contact-card-perks i { color: var(--gold); font-size: .95rem; }

.contact-form { padding: 1.6rem 2rem 2rem; }

.contact-card .form-label { font-size: .86rem; font-weight: 600; color: #023D5D; margin-bottom: .4rem; }
.contact-card .form-label .req { color: #d33; }
.contact-card .form-control {
  border: 1.5px solid #dfe8ee;
  background: #f7fafc;
  border-radius: 12px;
  padding: .72rem .95rem;
  font-size: .95rem;
  transition: border-color .2s ease, background-color .2s ease, box-shadow .2s ease;
}
.contact-card .form-control::placeholder { color: #9fb0bb; }
.contact-card .form-control:hover { border-color: #c3d5e0; }
.contact-card .form-control:focus {
  border-color: var(--primary);
  background: #fff;
  box-shadow: 0 0 0 4px rgba(2, 83, 126, .12);
}
.contact-card textarea.form-control { min-height: 140px; resize: vertical; }
/* Our .contact-card .form-control rule outranks Bootstrap's .is-invalid, so the
   error state has to be restated here or the red border never shows. */
.contact-card .form-control.is-invalid {
  border-color: #dc3545;
  background: #fff6f6;
}
.contact-card .form-control.is-invalid:focus {
  border-color: #dc3545;
  box-shadow: 0 0 0 4px rgba(220, 53, 69, .14);
}

.contact-submit {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  width: 100%; margin-top: 1.3rem;
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: #fff; font-weight: 700; border: none;
  border-radius: 50px; padding: .85rem 1.65rem;
  box-shadow: 0 10px 24px rgba(2, 83, 126, .28);
  transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}
.contact-submit i { transition: transform .2s ease; }
.contact-submit:hover, .contact-submit:focus {
  color: #fff; filter: brightness(1.08); transform: translateY(-2px);
  box-shadow: 0 16px 34px rgba(2, 83, 126, .34);
}
.contact-submit:hover i { transform: translateX(3px); }
.contact-submit:disabled { opacity: .7; transform: none; box-shadow: none; }

.contact-form-note {
  display: flex; align-items: flex-start; gap: .45rem;
  margin: .9rem 0 0; color: #8a97a1; font-size: .8rem; line-height: 1.55;
}
.contact-form-note i { color: var(--primary); margin-top: .15rem; }

@media (max-width: 575.98px) {
  .contact-card-head { padding: 1.5rem 1.25rem 1.2rem; }
  .contact-form { padding: 1.3rem 1.25rem 1.6rem; }
  .contact-card-title { font-size: 1.15rem; }
  .contact-card-perks li { font-size: .76rem; padding: .3rem .7rem; }
}
/* Honeypot — off-screen, never focusable, invisible to people. */
.contact-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* ==========================================================================
   AWARDS & CERTIFICATIONS (home-awards.php)
   ========================================================================== */
.awards-section { background: var(--primary-light, #eef4f8); }
.awards-subtitle { max-width: 680px; margin: 0 auto; }

.award-card {
  display: flex; flex-direction: column; align-items: center; text-align: center;
  height: 100%; background: #fff;
  border: 1px solid rgba(2, 83, 126, .1); border-radius: 18px;
  padding: 1.6rem 1.3rem;
  box-shadow: 0 10px 30px rgba(2, 83, 126, .07);
  text-decoration: none;
  transition: transform .25s ease, box-shadow .25s ease;
}
a.award-card:hover { transform: translateY(-6px); box-shadow: 0 18px 44px rgba(2, 83, 126, .16); }
.award-media {
  width: 92px; height: 92px; margin-bottom: 1rem;
  display: flex; align-items: center; justify-content: center;
  background: var(--primary-light, #eef4f8); border-radius: 50%;
}
.award-media img { max-width: 62px; max-height: 62px; object-fit: contain; }
.award-title {
  font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1.02rem;
  color: #023D5D; margin-bottom: .3rem; line-height: 1.35;
}
.award-issuer {
  font-size: .8rem; font-weight: 600; letter-spacing: .03em; text-transform: uppercase;
  color: var(--primary); margin-bottom: .6rem;
}
.award-text { color: var(--muted, #5b6b76); font-size: .88rem; line-height: 1.6; margin-bottom: .9rem; }
.award-year {
  margin-top: auto; display: inline-flex; align-items: center; gap: .35rem;
  background: rgba(245, 196, 81, .18); color: #a37714;
  border: 1px solid rgba(245, 196, 81, .45);
  font-size: .78rem; font-weight: 700; padding: .25rem .8rem; border-radius: 50px;
}

/* --------------------------------------------------------------------------
   LOCATION SECTION — the map is the right column's only child again, so
   .location-map's height:100% works as originally intended and matches the
   info card beside it. (The overrides here existed only for the contact form
   that used to sit under the map; that form now lives on contact.php.)
   -------------------------------------------------------------------------- */
@media (max-width: 991.98px) {
  .location-map,
  .location-map iframe { height: 300px; min-height: 300px; }
}

/* --------------------------------------------------------------------------
   BIRTHDAY MODAL — consent checkbox
   -------------------------------------------------------------------------- */
.bd-consent {
  background: rgba(2, 83, 126, .05);
  border: 1px solid rgba(2, 83, 126, .14);
  border-radius: 12px;
  padding: .8rem .9rem .8rem 2.4rem;
  text-align: left;
}
.bd-consent .form-check-input {
  margin-left: -1.6rem;
  margin-top: .15rem;
  width: 1.15rem;
  height: 1.15rem;
  border-color: rgba(2, 83, 126, .45);
  cursor: pointer;
}
.bd-consent .form-check-input:checked { background-color: var(--primary); border-color: var(--primary); }
.bd-consent .form-check-input:focus { box-shadow: 0 0 0 .2rem rgba(2, 83, 126, .18); border-color: var(--primary); }
.bd-consent .form-check-label {
  font-size: .88rem; line-height: 1.55; color: #3d4a52; cursor: pointer;
}
/* Bootstrap hides .invalid-feedback unless the control is :invalid + validated */
.bd-consent .invalid-feedback { font-size: .82rem; margin-top: .4rem; }
.was-validated .bd-consent .form-check-input:invalid { border-color: #dc3545; }
.was-validated .bd-consent .form-check-input:invalid ~ .form-check-label { color: #b02a37; }

/* Birth month + day, side by side */
.bd-dob { display: grid; grid-template-columns: 1.4fr 1fr; gap: .6rem; }
.bd-dob .form-select {
  border: 1.5px solid #dfe8ee; background-color: #f7fafc; border-radius: 12px;
  padding: .7rem .9rem; font-size: .95rem;
  transition: border-color .2s ease, background-color .2s ease, box-shadow .2s ease;
}
.bd-dob .form-select:focus {
  border-color: var(--primary); background-color: #fff;
  box-shadow: 0 0 0 4px rgba(2, 83, 126, .12);
}
.was-validated .bd-dob .form-select:invalid { border-color: #dc3545; background-color: #fff6f6; }

/* Carrier-required SMS disclosure — long legal copy, so it is set smaller and
   quieter than the offer consent above it. */
.bd-consent-sms .form-check-label { font-size: .8rem; color: #5b6b76; }
.bd-sms-help {
  display: block; margin-top: .4rem; font-size: .76rem; color: #7a8894;
}
.bd-sms-help a { color: var(--primary); text-decoration: underline; }

/* ==========================================================================
   MOBILE LEGIBILITY — a few uppercase micro-labels dropped under 11px on
   phones, which is below comfortable reading size. Nudge them up; desktop
   sizing is unchanged.
   ========================================================================== */
@media (max-width: 575.98px) {
  .gift-tag,
  .faq-cat-pill {
    font-size: 0.76rem;
  }
  /* Scoped past the page-level <style> block in coupons.php, which loads after
     this file and would otherwise win on equal specificity. */
  .cpn-ticket .cpn-head-brand {
    font-size: 0.76rem;
  }
}

/* ==========================================================================
   MOBILE NAV — right-hand slide-in panel (Bootstrap responsive offcanvas).
   Below xl the menu is a panel; at xl and up Bootstrap renders the same
   markup inline, so every rule here is scoped to the collapsed range.
   ========================================================================== */

/* ---- Burger: three bars that morph into an X ---- */
.nav-burger {
  border: 1px solid rgba(2, 83, 126, 0.18);
  border-radius: 12px;
  width: 46px;
  height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  background: var(--white);
  box-shadow: 0 4px 14px rgba(2, 83, 126, 0.1);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
.nav-burger:focus { box-shadow: 0 0 0 3px rgba(2, 83, 126, 0.18); }
.nav-burger:hover { border-color: var(--primary); transform: translateY(-1px); }

.nav-burger-box {
  position: relative;
  width: 22px;
  height: 16px;
  display: block;
}
/* One real bar; the other two are its pseudo-elements. */
.nav-burger-bar,
.nav-burger-bar::before,
.nav-burger-bar::after {
  position: absolute;
  left: 0;
  width: 100%;
  height: 2px;
  border-radius: 2px;
  background: var(--primary);
  transition: transform 0.3s cubic-bezier(0.2, 0.7, 0.3, 1), opacity 0.2s ease, top 0.3s ease;
}
.nav-burger-bar { top: 7px; }
.nav-burger-bar::before { content: ""; top: -7px; }
.nav-burger-bar::after  { content: ""; top: 7px; }

/* Bootstrap drops aria-expanded="true" on the button while the panel is open. */
.nav-burger[aria-expanded="true"] .nav-burger-bar { background: transparent; }
.nav-burger[aria-expanded="true"] .nav-burger-bar::before { top: 0; transform: rotate(45deg); }
.nav-burger[aria-expanded="true"] .nav-burger-bar::after  { top: 0; transform: rotate(-45deg); }

@media (max-width: 1199.98px) {
  /* ---- The panel itself ---- */
  .nav-panel {
    width: min(340px, 88vw);
    background: linear-gradient(165deg, var(--primary) 0%, var(--primary-dark) 100%);
    color: #fff;
    border-left: 1px solid rgba(255, 255, 255, 0.12);
    box-shadow: -18px 0 50px rgba(0, 0, 0, 0.35);
  }
  .offcanvas-backdrop.show { opacity: 0.55; }

  .nav-panel-head {
    align-items: center;
    padding: 1rem 1.15rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
  }
  .nav-panel-brand img {
    height: 58px;
    width: auto;
    /* The logo is dark-on-light; a white plate keeps it legible on the panel. */
    background: #fff;
    border-radius: 12px;
    padding: 4px 8px;
  }
  .nav-panel-close {
    margin-left: auto;
    width: 38px;
    height: 38px;
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background-color 0.2s ease, transform 0.2s ease;
  }
  .nav-panel-close:hover { background: rgba(255, 255, 255, 0.2); transform: rotate(90deg); }

  .nav-panel-body {
    padding: 1.1rem 1.15rem 1.6rem;
    display: flex;
    flex-direction: column;
  }

  /* ---- Links ---- */
  .main-navbar .nav-panel .navbar-nav {
    gap: 0.15rem;
    width: 100%;
    margin: 0 0 0.4rem;
  }
  .main-navbar .nav-panel .nav-link {
    color: rgba(255, 255, 255, 0.88);
    font-size: 1rem;
    font-weight: 500;
    padding: 0.72rem 0.9rem;
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 0.6rem;
    transition: background-color 0.2s ease, color 0.2s ease, padding-left 0.2s ease;
  }
  .main-navbar .nav-panel .nav-link:hover,
  .main-navbar .nav-panel .nav-link:focus {
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    padding-left: 1.15rem;
  }
  /* Current page: gold rail down the left edge. */
  .main-navbar .nav-panel .nav-link.active {
    background: rgba(255, 255, 255, 0.14);
    color: #fff;
    font-weight: 600;
    box-shadow: inset 3px 0 0 var(--gold);
  }
  /* The desktop underline animation would look wrong inside the panel. */
  .main-navbar .nav-panel .nav-link::after { display: none; }

  /* ---- "More" group: flattened into a labelled section, no dropdown ---- */
  .main-navbar .nav-panel .hover-dropdown > .dropdown-toggle {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.5);
    padding: 1.2rem 0.9rem 0.4rem;
    pointer-events: none;
  }
  .main-navbar .nav-panel .hover-dropdown > .dropdown-toggle::after { display: none; }
  .main-navbar .nav-panel .dropdown-menu {
    display: block;
    position: static;
    float: none;
    width: 100%;
    background: transparent;
    border: 0;
    box-shadow: none;
    padding: 0;
    margin: 0;
  }
  .main-navbar .nav-panel .dropdown-item {
    color: rgba(255, 255, 255, 0.82);
    font-size: 0.95rem;
    padding: 0.6rem 0.9rem;
    border-radius: 12px;
    transition: background-color 0.2s ease, color 0.2s ease, padding-left 0.2s ease;
  }
  .main-navbar .nav-panel .dropdown-item:hover,
  .main-navbar .nav-panel .dropdown-item:focus {
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    padding-left: 1.15rem;
  }
  .main-navbar .nav-panel .dropdown-item.active {
    background: rgba(255, 255, 255, 0.14);
    color: #fff;
    font-weight: 600;
    box-shadow: inset 3px 0 0 var(--gold);
  }

  /* ---- Call button + footer block ---- */
  .nav-panel .nav-cta { margin: 1.2rem 0 0; }
  .nav-panel .btn-call {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    background: var(--gold);
    color: var(--primary-dark);
    font-weight: 700;
    padding: 0.75rem 1.25rem;
  }
  /* On the gold panel button the white icon disc all but disappears — flip it
     to the dark brand colour so the glyph keeps its contrast. */
  .nav-panel .btn-call i {
    background: rgba(2, 61, 93, 0.16);
    color: var(--primary-dark);
  }
  .nav-panel .btn-call:hover,
  .nav-panel .btn-call:focus {
    background: #ffd76a;
    color: var(--primary-dark);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.25);
  }
  .nav-panel .btn-call:hover i,
  .nav-panel .btn-call:focus i {
    background: var(--primary-dark);
    color: var(--gold);
  }

  .nav-panel-foot {
    margin-top: 1rem;
    padding-top: 1.1rem;
    border-top: 1px solid rgba(255, 255, 255, 0.14);
  }
  .nav-panel-cta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    border: 2px solid rgba(255, 255, 255, 0.55);
    color: #fff;
    font-weight: 600;
    border-radius: 50px;
    padding: 0.62rem 1.2rem;
    text-decoration: none;
    transition: background-color 0.2s ease, color 0.2s ease;
  }
  .nav-panel-cta:hover,
  .nav-panel-cta:focus { background: #fff; color: var(--primary); }

  .nav-panel-info {
    list-style: none;
    padding: 0;
    margin: 1.1rem 0 0;
  }
  .nav-panel-info li {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    color: rgba(255, 255, 255, 0.8);
    font-size: 0.88rem;
    line-height: 1.5;
    margin-bottom: 0.7rem;
  }
  .nav-panel-info i { color: var(--gold); margin-top: 0.15rem; flex-shrink: 0; }
  .nav-panel-info a { color: rgba(255, 255, 255, 0.9); text-decoration: none; }
  .nav-panel-info a:hover { color: var(--gold); }

  .nav-panel-social { display: flex; gap: 0.55rem; margin-top: 0.9rem; }
  .nav-panel-social a {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    font-size: 1rem;
    transition: background-color 0.2s ease, transform 0.2s ease;
  }
  .nav-panel-social a:hover { background: var(--gold); color: var(--primary-dark); transform: translateY(-2px); }
}

/* At xl the panel is inline navbar again — none of the panel chrome applies. */
@media (min-width: 1200px) {
  .nav-panel-head,
  .nav-panel-foot { display: none !important; }
  .nav-panel-body { padding: 0; }
}

/* Awards carousel — slides need equal height so the cards line up, and the
   pagination sits below with room to breathe. */
.awards-swiper { padding-bottom: 3rem; }
.awards-swiper .swiper-slide { height: auto; display: flex; }
.awards-swiper .swiper-slide > .award-card { width: 100%; }
.awards-swiper .swiper-pagination { bottom: 6px; }
.awards-swiper .swiper-pagination-bullet { background: var(--primary); opacity: 0.3; }
.awards-swiper .swiper-pagination-bullet-active { opacity: 1; }

/* ==========================================================================
   MAP PLACEHOLDER (click to load)
   A Google Maps embed costs ~400 KB of JavaScript. This tile stands in for it
   until someone actually wants the map, and inherits the size of whatever
   map frame it sits inside.
   ========================================================================== */
.map-facade {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 320px;
  background:
    radial-gradient(circle at 30% 25%, rgba(255, 255, 255, .1) 0 2px, transparent 3px) 0 0/48px 48px,
    linear-gradient(160deg, var(--primary) 0%, var(--primary-dark) 100%);
}
/* The flat map picture. It fills the box and is dimmed slightly so the white
   "view map" label stays readable over the pale streets. */
.map-facade-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.map-facade-btn {
  position: absolute;
  inset: 0;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  border: 0;
  background: linear-gradient(180deg, rgba(2, 61, 93, .18) 0%, rgba(2, 61, 93, .5) 100%);
  color: #fff;
  cursor: pointer;
  text-shadow: 0 1px 6px rgba(0, 0, 0, .45);
  transition: background-color .2s ease;
}
.map-facade-btn:hover { background: linear-gradient(180deg, rgba(2, 61, 93, .1) 0%, rgba(2, 61, 93, .42) 100%); }
/* OpenStreetMap's licence requires this credit to stay visible. */
.map-facade-credit {
  position: absolute;
  right: 6px;
  bottom: 4px;
  font-size: .62rem;
  color: rgba(255, 255, 255, .9);
  background: rgba(2, 61, 93, .55);
  padding: 1px 6px;
  border-radius: 6px;
  pointer-events: none;
}
.map-facade-pin {
  width: 54px;
  height: 54px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: rgba(255, 255, 255, .14);
  border: 1px solid rgba(255, 255, 255, .3);
  font-size: 1.5rem;
  color: var(--gold);
  transition: transform .2s ease, background-color .2s ease;
}
.map-facade-label { font-family: "Poppins", sans-serif; font-weight: 600; font-size: 1rem; }
.map-facade-note { font-size: .76rem; color: rgba(255, 255, 255, .65); }
.map-facade-btn:hover .map-facade-pin,
.map-facade-btn:focus-visible .map-facade-pin {
  transform: scale(1.08);
  background: rgba(255, 255, 255, .24);
}
.map-facade iframe { width: 100%; height: 100%; min-height: inherit; border: 0; display: block; }
.map-facade.is-loaded .map-facade-img,
.map-facade.is-loaded .map-facade-credit { display: none; }

/* ==========================================================================
   PRINTABLE COUPON VOUCHER (coupons.php + oil-change.php)
   Drawn entirely in CSS: crisp at any zoom, real text for search engines,
   and no image bytes. Sized in container units so it scales with its card.
   ========================================================================== */
/* ---- Printable voucher, drawn in CSS ------------------------------------
   Everything on it is real text: crisp at any zoom, translatable, readable
   by search engines, and ~0 KB. Type is sized in container units so the
   voucher scales with the card instead of the viewport. */
.cpn-art {
  container-type: inline-size;
  background: #fff; border-radius: 14px; padding: 1.1rem;
  box-shadow: 0 12px 30px rgba(2,83,126,.1);
  margin-bottom: 1.25rem;
  transition: transform .25s ease, box-shadow .25s ease;
}
.cpn-art:hover { transform: translateY(-4px); box-shadow: 0 20px 44px rgba(2,83,126,.18); }

.cpn-art-draw {
  box-sizing: border-box;          /* dashed border must not add to the square */
  position: relative; overflow: hidden;
  aspect-ratio: 1 / 1;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; gap: .06rem;
  padding: 4.2% 5.5%;
  background: #cfe0ea;
  border: 3px dashed #d33; border-radius: 14px;
  color: #14232b; line-height: 1.15;
}
/* faint bubbles, like the printed artwork */
.cpn-art-draw::before, .cpn-art-draw::after {
  content: ""; position: absolute; border-radius: 50%;
  border: 10px solid rgba(255,255,255,.35); pointer-events: none;
}
.cpn-art-draw::before { width: 46%; height: 46%; left: -16%; top: 22%; }
.cpn-art-draw::after  { width: 30%; height: 30%; right: -8%; bottom: 8%; }

.cad-brand {
  position: relative; z-index: 1;
  background: var(--primary); color: #fff;
  font-family: "Poppins", sans-serif; font-weight: 700;
  font-size: 5.4cqw; letter-spacing: .01em; text-transform: uppercase;
  padding: .18em .7em; white-space: nowrap;
}
.cad-off {
  position: relative; z-index: 1;
  align-self: stretch; margin: .22em -5.5% .2em;
  background: var(--primary); color: #fff;
  font-family: "Poppins", sans-serif; font-weight: 700;
  font-size: 12.5cqw; line-height: 1.12; padding: .1em 0;
}
.cad-name {
  position: relative; z-index: 1;
  font-family: "Poppins", sans-serif; font-weight: 700;
  font-size: 9.2cqw; line-height: 1.03; color: #14232b;
}
.cad-name small { display: block; font-size: .62em; font-weight: 700; }
.cad-inc  { position: relative; z-index: 1; font-size: 4.5cqw; line-height: 1.25; margin-top: .35em; }
.cad-reg  { position: relative; z-index: 1; color: #d33; font-weight: 700; font-size: 6.2cqw; margin-top: .15em; }
.cad-redeem { position: relative; z-index: 1; font-size: 4.5cqw; }
.cad-fine   { position: relative; z-index: 1; font-size: 3.7cqw; line-height: 1.22; }

/* Browsers without container queries: fixed sizes tuned for the card width. */
@supports not (container-type: inline-size) {
  .cad-brand { font-size: .82rem; }
  .cad-off   { font-size: 2rem; }
  .cad-name  { font-size: 1.5rem; }
  .cad-inc, .cad-redeem { font-size: .8rem; }
  .cad-reg   { font-size: 1.05rem; }
  .cad-fine  { font-size: .7rem; }
}

/* Voucher art inside the oil-change coupon cards. The card keeps its dashed
   border, so the art sits flush against the padding and loses its own shadow. */
.oc-coupon .cpn-art { margin: -.4rem 0 1.1rem; box-shadow: none; }
.oc-coupon .cpn-art:hover { transform: none; box-shadow: none; }

/* ==========================================================================
   MEMBERSHIP SIGNUP MODAL (members.php)
   Plan buttons open this instead of jumping to the booking page, so a visitor
   who is ready to join never leaves the pricing they just read.
   ========================================================================== */
.mem-modal .modal-content {
  border: 0;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 30px 80px rgba(2, 61, 93, .28);
}
.mem-modal-head {
  position: relative;
  padding: 1.8rem 1.8rem 1.5rem;
  background: linear-gradient(135deg, var(--primary) 0%, #023D5D 100%);
  color: #fff;
  text-align: center;
}
.mem-modal-head .btn-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  opacity: .8;
}
.mem-modal-title {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 1.6rem;
  margin: 0 0 .35rem;
}
.mem-modal-sub { margin: 0; font-size: .92rem; color: rgba(255, 255, 255, .82); }
.mem-modal .modal-body { padding: 1.6rem 1.8rem 1.9rem; }

/* Plan chips — a faster way to pick than opening the select. */
.mem-modal-plans {
  display: flex;
  flex-wrap: wrap;
  gap: .7rem;
  margin-bottom: 1.4rem;
}
.mem-plan-chip {
  flex: 1 1 150px;
  display: flex;
  flex-direction: column;
  gap: .15rem;
  padding: .75rem .9rem;
  border: 2px solid #dbe6ee;
  border-radius: 14px;
  background: #fff;
  text-align: left;
  cursor: pointer;
  transition: border-color .18s ease, background .18s ease, transform .18s ease;
}
.mem-plan-chip:hover { border-color: var(--primary); transform: translateY(-2px); }
.mem-plan-chip.is-active { border-color: var(--primary); background: var(--primary-light); }
.mem-plan-chip-name {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-size: .92rem;
  color: #023D5D;
}
.mem-plan-chip-price { font-weight: 700; color: var(--primary); font-size: 1.05rem; }
.mem-plan-chip-price small { font-size: .72rem; font-weight: 500; color: #7d8b95; margin-left: .15rem; }

.mem-form .form-label {
  font-size: .85rem;
  font-weight: 600;
  color: #3d4a52;
  margin-bottom: .3rem;
}
.mem-form .req { color: #c0392b; }
.mem-form .opt { color: #9aa6ae; font-weight: 400; }
.mem-form .form-control,
.mem-form .form-select {
  border: 1.5px solid #dbe6ee;
  border-radius: 12px;
  padding: .65rem .85rem;
  font-size: .93rem;
}
.mem-form .form-control:focus,
.mem-form .form-select:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 .2rem rgba(2, 83, 126, .12);
}
/* Restated so these outrank the border rules above, which are more specific
   than Bootstrap's own .is-invalid styling. */
.mem-form .form-control.is-invalid,
.mem-form .form-select.is-invalid { border-color: #dc3545; }
.mem-form .form-control.is-invalid:focus,
.mem-form .form-select.is-invalid:focus { box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .18); }

.mem-form-submit { margin-top: 1.4rem; padding: .8rem 1rem; font-weight: 600; }
.mem-form-note {
  margin: .8rem 0 0;
  text-align: center;
  font-size: .78rem;
  color: #9aa6ae;
}
/* Honeypot: off-screen rather than display:none, which some bots skip. */
.mem-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

@media (max-width: 575.98px) {
  .mem-modal-head { padding: 1.4rem 1.2rem 1.2rem; }
  .mem-modal-title { font-size: 1.3rem; }
  .mem-modal .modal-body { padding: 1.2rem 1.2rem 1.5rem; }
  .mem-plan-chip { flex: 1 1 100%; }
}

/* ==========================================================================
   AWARD BADGES (awards-badges.php)
   The real badge artwork, shown under every awards section. The badges are
   PNG-style cutouts on white, so they sit on the page rather than in a card.
   ========================================================================== */
.aw-badges {
  list-style: none;
  margin: 2.4rem 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 1.4rem;
  align-items: end;
}
.aw-badge {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .6rem;
  text-align: center;
}
.aw-badge img {
  width: 100%;
  max-width: 132px;
  height: auto;
  /* Badge artwork ships on a white ground; mix-blend-mode drops that ground on
     the tinted bands so the badges never sit in a white box. */
  mix-blend-mode: multiply;
  transition: transform .25s ease;
}
.aw-badge:hover img { transform: translateY(-5px) scale(1.04); }
.aw-badge-label {
  font-size: .74rem;
  line-height: 1.35;
  font-weight: 600;
  color: var(--muted, #5b6b76);
  max-width: 150px;
}

/* On the dark bands the white artwork ground must stay, so it gets a light
   plate of its own instead of blending into the navy. */
.aw-badges-on-dark .aw-badge img {
  mix-blend-mode: normal;
  background: #fff;
  border-radius: 14px;
  padding: .5rem;
}
.aw-badges-on-dark .aw-badge-label { color: rgba(255, 255, 255, .82); }

@media (max-width: 991.98px) {
  .aw-badges { grid-template-columns: repeat(3, 1fr); gap: 1.6rem 1rem; }
}
@media (max-width: 575.98px) {
  .aw-badges { grid-template-columns: repeat(2, 1fr); margin-top: 1.8rem; }
  .aw-badge img { max-width: 108px; }
  .aw-badge-label { font-size: .7rem; }
}

/* ==========================================================================
   VIDEO FACADE (home-video.php)
   The poster frame is served from our own assets, so YouTube's ~500 KB player
   is only fetched when someone actually presses play.
   ========================================================================== */
.vid-facade {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #0b2b3f;
}
.vid-facade-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.vid-facade-btn {
  position: absolute;
  inset: 0;
  width: 100%;
  display: grid;
  place-items: center;
  border: 0;
  background: rgba(2, 61, 93, .28);
  cursor: pointer;
  transition: background-color .2s ease;
}
.vid-facade-btn:hover,
.vid-facade-btn:focus-visible { background: rgba(2, 61, 93, .12); }
.vid-facade-play {
  width: 68px;
  height: 68px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: rgba(255, 255, 255, .92);
  color: var(--primary);
  font-size: 2rem;
  box-shadow: 0 10px 30px rgba(0, 0, 0, .35);
  transition: transform .2s ease;
}
.vid-facade-btn:hover .vid-facade-play,
.vid-facade-btn:focus-visible .vid-facade-play { transform: scale(1.09); }
.vid-facade iframe { width: 100%; height: 100%; border: 0; display: block; }

/* ==========================================================================
   SITEMAP PAGE (sitemap-page.php, served at /sitemap)
   ========================================================================== */
.sm-card {
  height: 100%;
  background: #fff;
  border: 1px solid rgba(2, 83, 126, .1);
  border-radius: 16px;
  padding: 1.5rem 1.6rem;
  box-shadow: 0 10px 30px rgba(2, 83, 126, .06);
}
.sm-title {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-size: 1.05rem;
  color: #023D5D;
  margin: 0 0 1rem;
  padding-bottom: .7rem;
  border-bottom: 1px solid rgba(2, 83, 126, .1);
}
.sm-title i { color: var(--gold); margin-right: .4rem; }
.sm-list { list-style: none; margin: 0; padding: 0; }
.sm-list li + li { margin-top: .55rem; }
.sm-list a {
  color: #3d4a52;
  text-decoration: none;
  font-size: .94rem;
  display: inline-flex;
  align-items: baseline;
  gap: .45rem;
  transition: color .18s ease, transform .18s ease;
}
.sm-list a::before { content: "›"; color: var(--primary); font-weight: 700; }
.sm-list a:hover { color: var(--primary); transform: translateX(3px); }

/* ==========================================================================
   THANK YOU PAGE (thank-you.php)
   The moment a booking or enquiry lands, so it is worth a bit of celebration:
   a check that draws itself, a short confetti burst, and the booking details
   presented as a ticket. Every animation is switched off for visitors who ask
   for reduced motion.
   ========================================================================== */
.ty-section {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(900px 420px at 50% -140px, rgba(2, 83, 126, .13), transparent 70%),
    linear-gradient(180deg, var(--primary-light, #eef4f8) 0%, #fff 55%);
}

.ty-card {
  position: relative;
  max-width: 740px;
  margin: 0 auto;
  background: #fff;
  border: 1px solid rgba(2, 83, 126, .09);
  border-radius: 26px;
  padding: 3.2rem 2.2rem 2.6rem;
  text-align: center;
  box-shadow: 0 30px 70px rgba(2, 83, 126, .16);
  overflow: hidden;
  animation: tyCardIn .5s cubic-bezier(.22, .9, .3, 1) both;
}
/* Gold cap, the same accent the banners and buttons use. */
.ty-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 5px;
  background: linear-gradient(90deg, var(--gold) 0%, #ffdf9a 50%, var(--gold) 100%);
}
@keyframes tyCardIn {
  from { opacity: 0; transform: translateY(22px); }
  to   { opacity: 1; transform: none; }
}

/* ---- the check ---------------------------------------------------------- */
.ty-tick {
  position: relative;
  width: 104px;
  height: 104px;
  margin: 0 auto 1.5rem;
  display: grid;
  place-items: center;
}
.ty-tick-svg { width: 104px; height: 104px; overflow: visible; }
.ty-tick-circle {
  fill: rgba(26, 127, 75, .10);
  stroke: #1a7f4b;
  stroke-width: 2.5;
  stroke-dasharray: 151;
  stroke-dashoffset: 151;
  animation: tyDraw .6s cubic-bezier(.65, 0, .45, 1) .15s forwards;
}
.ty-tick-check {
  fill: none;
  stroke: #1a7f4b;
  stroke-width: 4.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 40;
  stroke-dashoffset: 40;
  animation: tyDraw .35s cubic-bezier(.65, 0, .45, 1) .65s forwards;
}
@keyframes tyDraw { to { stroke-dashoffset: 0; } }

/* Two rings breathing outwards behind it. */
.ty-tick-ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 2px solid rgba(26, 127, 75, .45);
  animation: tyRing 2.4s ease-out .8s infinite;
}
.ty-tick-ring:nth-child(2) { animation-delay: 1.6s; }
@keyframes tyRing {
  0%   { transform: scale(.85); opacity: .7; }
  70%  { transform: scale(1.45); opacity: 0; }
  100% { transform: scale(1.45); opacity: 0; }
}

/* ---- confetti ----------------------------------------------------------- */
.ty-confetti {
  position: absolute;
  inset: 0 0 auto;
  height: 260px;
  pointer-events: none;
}
.ty-confetti span {
  position: absolute;
  top: -18px;
  width: 9px;
  height: 14px;
  border-radius: 2px;
  opacity: 0;
  animation: tyFall 2.6s ease-in forwards;
}
.ty-confetti span:nth-child(odd)  { background: var(--gold); }
.ty-confetti span:nth-child(3n)   { background: var(--primary); }
.ty-confetti span:nth-child(3n+1) { background: #1a7f4b; border-radius: 50%; width: 8px; height: 8px; }
.ty-confetti span:nth-child(1)  { left: 6%;  animation-delay: .05s; }
.ty-confetti span:nth-child(2)  { left: 14%; animation-delay: .35s; }
.ty-confetti span:nth-child(3)  { left: 22%; animation-delay: .15s; }
.ty-confetti span:nth-child(4)  { left: 30%; animation-delay: .55s; }
.ty-confetti span:nth-child(5)  { left: 38%; animation-delay: .25s; }
.ty-confetti span:nth-child(6)  { left: 46%; animation-delay: .65s; }
.ty-confetti span:nth-child(7)  { left: 54%; animation-delay: .10s; }
.ty-confetti span:nth-child(8)  { left: 62%; animation-delay: .45s; }
.ty-confetti span:nth-child(9)  { left: 70%; animation-delay: .20s; }
.ty-confetti span:nth-child(10) { left: 78%; animation-delay: .60s; }
.ty-confetti span:nth-child(11) { left: 86%; animation-delay: .30s; }
.ty-confetti span:nth-child(12) { left: 94%; animation-delay: .50s; }
.ty-confetti span:nth-child(13) { left: 10%; animation-delay: .75s; }
.ty-confetti span:nth-child(14) { left: 90%; animation-delay: .80s; }
@keyframes tyFall {
  0%   { opacity: 0; transform: translateY(0) rotate(0deg); }
  10%  { opacity: 1; }
  100% { opacity: 0; transform: translateY(250px) rotate(540deg); }
}

/* ---- copy --------------------------------------------------------------- */
.ty-title {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: clamp(1.75rem, 4.4vw, 2.5rem);
  color: #023D5D;
  margin-bottom: .7rem;
  letter-spacing: -.01em;
}
.ty-lead {
  color: var(--muted, #5b6b76);
  font-size: 1.06rem;
  line-height: 1.75;
  margin: 0 auto 1.8rem;
  max-width: 52ch;
}

/* ---- reference, as a torn ticket stub ----------------------------------- */
.ty-ref {
  position: relative;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: .15rem;
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  border-radius: 16px;
  padding: .95rem 2.4rem;
  margin-bottom: 1.9rem;
  box-shadow: 0 14px 30px rgba(1, 58, 89, .25);
}
/* The two notches that make it read as a ticket. */
.ty-ref::before,
.ty-ref::after {
  content: "";
  position: absolute;
  top: 50%;
  width: 18px;
  height: 18px;
  background: #fff;
  border-radius: 50%;
  transform: translateY(-50%);
}
.ty-ref::before { left: -9px; }
.ty-ref::after  { right: -9px; }
.ty-ref-label {
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gold);
}
.ty-ref-code {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: 1.5rem;
  color: #fff;
  letter-spacing: .06em;
}

/* ---- booking details ---------------------------------------------------- */
.ty-details {
  text-align: left;
  background: var(--primary-light, #eef4f8);
  border-radius: 18px;
  padding: 1.2rem 1.4rem;
  margin-bottom: 1.6rem;
}
.ty-row {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: .68rem 0;
  border-bottom: 1px dashed rgba(2, 83, 126, .16);
}
.ty-row:last-child { border-bottom: none; }
.ty-row span { color: var(--muted, #7a8894); font-size: .92rem; }
.ty-row strong { color: #023D5D; font-size: .98rem; text-align: right; }
.ty-row strong.is-accent { color: var(--primary); }

.ty-note {
  background: rgba(245, 196, 81, .14);
  border: 1px solid rgba(245, 196, 81, .45);
  border-radius: 16px;
  padding: 1rem 1.2rem;
  margin-bottom: 1.6rem;
  color: #8a6510;
  font-size: .93rem;
  line-height: 1.65;
  text-align: left;
  display: flex;
  gap: .7rem;
}
.ty-note i { font-size: 1.15rem; margin-top: .1rem; }

/* ---- next steps --------------------------------------------------------- */
.ty-steps { text-align: left; margin: 0 0 1.9rem; padding: 0; list-style: none; }
.ty-steps li {
  display: flex;
  gap: .75rem;
  align-items: flex-start;
  padding: .7rem .95rem;
  margin-bottom: .5rem;
  background: #f7fafc;
  border: 1px solid rgba(2, 83, 126, .07);
  border-radius: 12px;
  color: #3d4a52;
  font-size: .95rem;
  line-height: 1.6;
  transition: transform .18s ease, border-color .18s ease;
}
.ty-steps li:hover { transform: translateX(3px); border-color: rgba(2, 83, 126, .2); }
.ty-steps i { color: #1a7f4b; font-size: 1.05rem; margin-top: .1rem; flex-shrink: 0; }

/* ---- buttons ------------------------------------------------------------ */
.ty-actions { display: flex; flex-wrap: wrap; gap: .7rem; justify-content: center; }
.ty-btn {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  border-radius: 50px;
  padding: .78rem 1.7rem;
  font-weight: 600;
  transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease, color .2s ease;
}
.ty-btn:hover { transform: translateY(-2px); }
.ty-btn-solid {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: #fff;
  box-shadow: 0 10px 24px rgba(1, 58, 89, .22);
}
.ty-btn-solid:hover { color: #fff; box-shadow: 0 16px 32px rgba(1, 58, 89, .32); }
.ty-btn-outline { border: 2px solid rgba(2, 83, 126, .22); color: var(--primary); }
.ty-btn-outline:hover { background: var(--primary-light, #eef4f8); color: var(--primary-dark); }
.ty-btn-green { border: 2px solid #25D366; color: #1a9c4c; }
.ty-btn-green:hover { background: #25D366; color: #fff; }

.ty-help { margin-top: 2rem; color: var(--muted, #7a8894); font-size: .93rem; }
.ty-help a { color: var(--primary); font-weight: 600; }

@media (max-width: 575.98px) {
  .ty-card { padding: 2.4rem 1.2rem 2rem; border-radius: 20px; }
  .ty-ref { padding: .9rem 1.6rem; }
  .ty-btn { width: 100%; justify-content: center; }
}

/* Motion is decoration here — the page reads the same without it. */
@media (prefers-reduced-motion: reduce) {
  .ty-confetti { display: none; }
  .ty-card,
  .ty-tick-ring,
  .ty-tick-circle,
  .ty-tick-check { animation: none; }
  .ty-tick-circle,
  .ty-tick-check { stroke-dashoffset: 0; }
}

@media print {
  .site-header, .site-footer, .page-banner, .ty-actions,
  .whatsapp-float, .ty-confetti, .ty-tick-ring { display: none !important; }
  .ty-section { background: #fff; }
  .ty-card { box-shadow: none; border: 1px solid #ccc; animation: none; }
}
