/* ============================================================
   AlHaramRentCar — page-motion.css
   Shared layout + motion styles for the redesigned inner pages
   (About, Services, Contact).

   Two halves:
     1. MOTION STATES — the "before" state for every page-motion.js effect.
        All of them are nested under .ah-motion, a class the script adds to
        <html> only once GSAP is confirmed. If the CDN fails or the visitor
        prefers reduced motion the class never lands and the page renders
        fully visible — no blank sections, no flash.
     2. COMPONENTS — the premium section blocks the three templates share.

   Paints through the existing tokens in ah-theme.css (--ah-gold, --ah-black,
   --ah-container …) so it inherits the gold/black palette automatically.
   ============================================================ */

/* ============================================================
   1. MOTION STATES
   ============================================================ */

/* Word-mask headings — each word sits in an overflow-hidden span and is
   pushed below its own baseline until revealed. */
.ah-word { display: inline-block; overflow: hidden; vertical-align: bottom; padding-bottom: 0.08em; }
.ah-word__in { display: inline-block; will-change: transform; }
.ah-motion .ah-word__in { transform: translateY(110%); opacity: 0; }

.ah-motion [data-ah-reveal-img] { clip-path: inset(0% 0% 100% 0%); }
.ah-motion [data-ah-track] > *:not([data-ah-track-line]) { opacity: 0; transform: translateY(34px); }
.ah-motion [data-ah-track-dot] { opacity: 0; transform: scale(0.2); }
.ah-motion [data-ah-rise] > * { opacity: 0; transform: translateY(46px) scale(0.97); }
.ah-motion [data-ah-cascade] > * { opacity: 0; transform: translateY(22px); }

/* Alternating timeline entries slide in from their own side. */
.ah-motion [data-ah-track] > .ah-mile--left { transform: translateX(-46px); }
.ah-motion [data-ah-track] > .ah-mile--right { transform: translateX(46px); }

/* Cards that receive a cursor tilt need a perspective context. */
[data-ah-magnet] { transform-style: preserve-3d; will-change: transform; }

@media (prefers-reduced-motion: reduce) {
  .ah-word__in { transform: none !important; opacity: 1 !important; }
  [data-ah-reveal-img] { clip-path: none !important; }
  [data-ah-track] > *,
  [data-ah-rise] > *,
  [data-ah-cascade] > *,
  [data-ah-track-dot] { opacity: 1 !important; transform: none !important; }
}

/* ============================================================
   2. SHARED COMPONENTS
   ============================================================ */

/* ---- Cinematic page hero ------------------------------------ */

.ah-phero {
  position: relative;
  min-height: clamp(30rem, 78vh, 46rem);
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: var(--ah-black);
  isolation: isolate;
}
.ah-phero__bg {
  position: absolute;
  inset: -8% 0;
  width: 100%;
  height: 116%;
  object-fit: cover;
  z-index: 0;
  will-change: transform;
}
.ah-phero__scrim {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(180deg, rgba(11,11,11,0.75) 0%, rgba(11,11,11,0.25) 38%, rgba(11,11,11,0.92) 100%),
    radial-gradient(120% 80% at 15% 100%, rgba(var(--ah-gold-rgb), 0.20), transparent 60%);
}
/* NB: no `width` here — .ah-container sizes itself with
   `width: min(100% - 2rem, var(--ah-container))`, and setting width:100%
   alongside it kills the gutter, pinning copy to the viewport edge. */
.ah-phero__inner {
  position: relative;
  z-index: 2;
  padding-block: clamp(3rem, 9vw, 6.5rem);
}
.ah-phero__grid { display: grid; gap: 2.5rem; align-items: end; }
@media (min-width: 1024px) {
  .ah-phero__grid { grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.9fr); gap: 4rem; }
}
.ah-phero__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  font-family: var(--ah-font-display);
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ah-gold-light);
  margin-bottom: 1.35rem;
}
.ah-phero__eyebrow::before {
  content: '';
  width: 2.5rem;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--ah-gold));
}
.ah-phero__title {
  font-family: var(--ah-font-display);
  font-weight: 800;
  font-size: var(--ah-fs-h1);
  line-height: 1.04;
  letter-spacing: -0.025em;
  color: #fff;
  margin: 0;
  text-wrap: balance;
}
/* Gold gradient headline word.
   The gradient is declared on BOTH the <em> and on the .ah-word__in spans that
   page-motion.js wraps each word in. That is not belt-and-braces, it is
   required: `background-clip: text` paints the gradient on the <em>'s own box
   and clips it to the glyphs, but after the word-split those glyphs sit inside
   `inline-block; overflow: hidden` wrappers that the em's clip no longer
   reaches — so the gradient painted nothing and, because the colour is
   transparent, the line rendered permanently invisible. The em rule covers the
   un-split case; the .ah-word__in rule covers the split one. */
.ah-phero__title em,
.ah-phero__title em .ah-word__in {
  font-style: normal;
  background: linear-gradient(120deg, var(--ah-gold-light), var(--ah-gold), var(--ah-gold-dark));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.ah-phero__sub {
  margin: 1.5rem 0 0;
  max-width: 46ch;
  font-size: clamp(1rem, 1.35vw, 1.14rem);
  line-height: 1.7;
  color: rgba(255,255,255,0.74);
}
.ah-phero__actions { display: flex; flex-wrap: wrap; gap: 0.9rem; margin-top: 2.25rem; }

/* Glass stat card sitting in the hero's lower-right */
.ah-phero__aside { display: flex; flex-direction: column; gap: 1rem; }
.ah-phero__stat {
  padding: 1.6rem 1.75rem;
  border-radius: var(--ah-radius);
  border: 1px solid rgba(var(--ah-gold-rgb), 0.32);
  background: rgba(255,255,255,0.055);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}
.ah-phero__stat strong {
  display: block;
  font-family: var(--ah-font-display);
  font-size: var(--ah-fs-stat);
  font-weight: 800;
  line-height: 1;
  color: var(--ah-gold-light);
}
.ah-phero__stat span {
  display: block;
  margin-top: 0.4rem;
  font-size: 0.82rem;
  letter-spacing: 0.06em;
  color: rgba(255,255,255,0.66);
}

.ah-phero__cue {
  position: absolute;
  left: 50%;
  bottom: 1.5rem;
  z-index: 3;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.68rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.55);
}
.ah-phero__cue-line {
  width: 1px;
  height: 2.75rem;
  background: linear-gradient(180deg, var(--ah-gold), transparent);
}
@media (max-width: 767px) { .ah-phero__cue { display: none; } }

/* ---- Gold marquee ribbon ------------------------------------ */

.ah-ribbon {
  position: relative;
  overflow: hidden;
  padding-block: 1.15rem;
  background: var(--ah-gold);
  border-block: 1px solid rgba(0,0,0,0.14);
}
.ah-ribbon--dark { background: var(--ah-black); border-color: rgba(var(--ah-gold-rgb), 0.28); }
.ah-ribbon__track { display: flex; width: max-content; will-change: transform; }
.ah-ribbon__item {
  display: inline-flex;
  align-items: center;
  gap: 1.25rem;
  padding-inline: 1.4rem;
  font-family: var(--ah-font-display);
  font-size: clamp(0.95rem, 1.5vw, 1.22rem);
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--ah-black);
}
.ah-ribbon--dark .ah-ribbon__item { color: var(--ah-gold-light); }
.ah-ribbon__item::after {
  content: '';
  width: 0.42rem;
  height: 0.42rem;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.5;
}

/* ---- Stat band ---------------------------------------------- */

.ah-statband {
  position: relative;
  background: var(--ah-black);
  color: #fff;
  padding-block: clamp(3rem, 6vw, 4.5rem);
  overflow: hidden;
}
.ah-statband::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(80% 120% at 50% 0%, rgba(var(--ah-gold-rgb), 0.16), transparent 65%);
  pointer-events: none;
}
.ah-statband__grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  background: rgba(255,255,255,0.09);
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: var(--ah-radius);
  overflow: hidden;
}
@media (min-width: 900px) { .ah-statband__grid { grid-template-columns: repeat(4, 1fr); } }
.ah-statband__item {
  background: var(--ah-black);
  padding: clamp(1.5rem, 3vw, 2.4rem) 1.25rem;
  text-align: center;
  transition: background 0.4s var(--ah-ease);
}
.ah-statband__item:hover { background: #131313; }
.ah-statband__item strong {
  display: block;
  font-family: var(--ah-font-display);
  font-size: var(--ah-fs-stat);
  font-weight: 800;
  line-height: 1;
  background: linear-gradient(140deg, var(--ah-gold-light), var(--ah-gold-dark));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.ah-statband__item span {
  display: block;
  margin-top: 0.6rem;
  font-size: 0.78rem;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.56);
}

/* ---- Section heading kit ------------------------------------ */

.ah-shead { max-width: 44rem; }
.ah-shead--center { margin-inline: auto; text-align: center; }
.ah-shead__label {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  font-family: var(--ah-font-display);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ah-gold-dark);
  margin-bottom: 1rem;
}
.ah-shead__label::before {
  content: '';
  width: 1.75rem;
  height: 1px;
  background: var(--ah-gold);
}
.ah-shead--center .ah-shead__label::after {
  content: '';
  width: 1.75rem;
  height: 1px;
  background: var(--ah-gold);
}
.ah-shead__title {
  font-family: var(--ah-font-display);
  font-weight: 800;
  font-size: var(--ah-fs-h2);
  line-height: 1.12;
  letter-spacing: -0.02em;
  color: var(--ah-black);
  margin: 0;
  text-wrap: balance;
}
.ah-shead__lead {
  margin: 1.15rem 0 0;
  font-size: 1.03rem;
  line-height: 1.75;
  color: var(--ah-muted);
}
.ah-shead--light .ah-shead__title { color: #fff; }
.ah-shead--light .ah-shead__label { color: var(--ah-gold-light); }
.ah-shead--light .ah-shead__lead { color: rgba(255,255,255,0.7); }

/* ---- Editorial split (story / intro) ------------------------- */

.ah-split { display: grid; gap: clamp(2.5rem, 5vw, 4.5rem); align-items: center; }
@media (min-width: 1024px) { .ah-split { grid-template-columns: 1fr 1fr; } }
.ah-split--wide-media { }
@media (min-width: 1024px) { .ah-split--wide-media { grid-template-columns: 0.95fr 1.05fr; } }

.ah-split__copy p {
  margin: 0 0 1.05rem;
  font-size: 1.02rem;
  line-height: 1.8;
  color: #4A4A4A;
}
.ah-split__copy p:last-child { margin-bottom: 0; }

.ah-split__media {
  position: relative;
  border-radius: var(--ah-radius-lg);
  overflow: hidden;
  aspect-ratio: 4 / 5;
  box-shadow: 0 30px 70px rgba(0,0,0,0.22);
}
@media (max-width: 1023px) { .ah-split__media { aspect-ratio: 4 / 3; } }
.ah-split__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  will-change: transform;
}
.ah-split__media-frame {
  position: absolute;
  inset: 0;
  border: 1px solid rgba(var(--ah-gold-rgb), 0.4);
  border-radius: var(--ah-radius-lg);
  pointer-events: none;
  z-index: 2;
}

/* Floating glass badge over the media */
.ah-split__badge {
  position: absolute;
  left: 1.25rem;
  bottom: 1.25rem;
  z-index: 3;
  display: flex;
  align-items: center;
  gap: 0.8rem;
  padding: 0.85rem 1.15rem;
  border-radius: 999px;
  background: rgba(11,11,11,0.72);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(var(--ah-gold-rgb), 0.4);
  color: #fff;
  font-size: 0.82rem;
  font-weight: 600;
}
.ah-split__badge i { color: var(--ah-gold-light); width: 18px; height: 18px; }

/* Bullet list with gold ticks */
.ah-ticks { list-style: none; margin: 1.75rem 0 0; padding: 0; display: grid; gap: 0.85rem; }
.ah-ticks li {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  font-size: 0.97rem;
  line-height: 1.55;
  color: #3A3A3A;
}
.ah-ticks i { color: var(--ah-gold-dark); width: 20px; height: 20px; flex-shrink: 0; margin-top: 0.12rem; }

/* ---- Milestone timeline ------------------------------------- */

.ah-timeline { position: relative; display: grid; gap: clamp(1.75rem, 3vw, 2.75rem); }
.ah-timeline__line {
  position: absolute;
  left: 1.4rem;
  top: 0.5rem;
  bottom: 0.5rem;
  width: 2px;
  background: linear-gradient(180deg, var(--ah-gold), var(--ah-gold-dark));
  transform-origin: top center;
  border-radius: 2px;
}
@media (min-width: 900px) { .ah-timeline__line { left: 50%; transform: translateX(-50%); } }

.ah-mile { position: relative; padding-left: 4.25rem; }
@media (min-width: 900px) {
  .ah-mile { width: calc(50% - 2.75rem); padding-left: 0; }
  .ah-mile--left { grid-column: 1; text-align: right; }
  .ah-mile--right { grid-column: 1; margin-left: calc(50% + 2.75rem); }
  .ah-timeline { grid-template-columns: 1fr; }
}

.ah-mile__dot {
  position: absolute;
  left: 0;
  top: 0.15rem;
  width: 2.85rem;
  height: 2.85rem;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-family: var(--ah-font-display);
  font-weight: 800;
  font-size: 0.86rem;
  color: var(--ah-black);
  background: linear-gradient(140deg, var(--ah-gold-light), var(--ah-gold-dark));
  box-shadow: 0 0 0 6px rgba(var(--ah-gold-rgb), 0.14);
}
@media (min-width: 900px) {
  .ah-mile__dot { left: auto; right: -4.15rem; }
  .ah-mile--right .ah-mile__dot { right: auto; left: -4.15rem; }
}

.ah-mile__body {
  padding: 1.5rem 1.65rem;
  border-radius: var(--ah-radius);
  background: #fff;
  border: 1px solid rgba(0,0,0,0.07);
  box-shadow: 0 12px 30px rgba(0,0,0,0.06);
  transition: transform 0.4s var(--ah-ease), box-shadow 0.4s var(--ah-ease), border-color 0.4s var(--ah-ease);
}
.ah-mile__body:hover {
  transform: translateY(-4px);
  border-color: rgba(var(--ah-gold-rgb), 0.45);
  box-shadow: 0 20px 44px rgba(0,0,0,0.11);
}
.ah-mile__body h3 {
  margin: 0 0 0.5rem;
  font-family: var(--ah-font-display);
  font-size: 1.12rem;
  font-weight: 700;
  color: var(--ah-black);
}
.ah-mile__body p { margin: 0; font-size: 0.95rem; line-height: 1.7; color: var(--ah-muted); }

/* ---- Pinned "drive past" fleet rail -------------------------- */

.ah-drive {
  position: relative;
  background: var(--ah-black);
  color: #fff;
  overflow: hidden;
}
.ah-drive__head { padding: clamp(3rem, 6vw, 5rem) 0 2rem; }
.ah-drive__viewport { padding-bottom: clamp(3rem, 6vw, 5rem); }
.ah-drive__track {
  display: flex;
  gap: 1.5rem;
  padding-inline: max(1.25rem, calc((100vw - var(--ah-container)) / 2));
  will-change: transform;
}
/* Touch / narrow: no pinning — a normal swipeable rail. */
@media (max-width: 1023px) {
  .ah-drive__track {
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .ah-drive__track::-webkit-scrollbar { display: none; }
  .ah-drive__card { scroll-snap-align: center; }
}

.ah-drive__card {
  position: relative;
  flex: 0 0 clamp(17rem, 30vw, 24rem);
  border-radius: var(--ah-radius-lg);
  overflow: hidden;
  background: #131313;
  border: 1px solid rgba(255,255,255,0.09);
  transform-style: preserve-3d;
}
.ah-drive__media { position: relative; aspect-ratio: 16 / 11; overflow: hidden; background: #0E0E0E; }
.ah-drive__media img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform 0.7s var(--ah-ease);
}
.ah-drive__card:hover .ah-drive__media img { transform: scale(1.06); }
.ah-drive__tag {
  position: absolute;
  top: 0.9rem;
  left: 0.9rem;
  padding: 0.35rem 0.8rem;
  border-radius: 999px;
  background: rgba(var(--ah-gold-rgb), 0.92);
  color: var(--ah-black);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.ah-drive__body { padding: 1.25rem 1.4rem 1.5rem; }
.ah-drive__body h3 {
  margin: 0 0 0.5rem;
  font-family: var(--ah-font-display);
  font-size: 1.16rem;
  font-weight: 700;
  color: #fff;
}
.ah-drive__specs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  font-size: 0.82rem;
  color: rgba(255,255,255,0.6);
}
.ah-drive__specs span { display: inline-flex; align-items: center; gap: 0.4rem; }
.ah-drive__specs i { width: 15px; height: 15px; color: var(--ah-gold); }

/* ---- Feature / value cards ---------------------------------- */

.ah-cards { display: grid; gap: 1.5rem; }
@media (min-width: 640px) { .ah-cards--2 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 768px) { .ah-cards--3 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .ah-cards--3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 768px) { .ah-cards--4 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1100px) { .ah-cards--4 { grid-template-columns: repeat(4, 1fr); } }

.ah-card {
  position: relative;
  padding: 2rem 1.75rem;
  border-radius: var(--ah-radius-lg);
  background: #fff;
  border: 1px solid rgba(0,0,0,0.07);
  overflow: hidden;
  transition: transform 0.45s var(--ah-ease), box-shadow 0.45s var(--ah-ease), border-color 0.45s var(--ah-ease);
}
.ah-card::before {
  content: '';
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--ah-gold-light), var(--ah-gold-dark));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.5s var(--ah-ease);
}
.ah-card:hover { box-shadow: 0 24px 55px rgba(0,0,0,0.12); border-color: rgba(var(--ah-gold-rgb), 0.4); }
.ah-card:hover::before { transform: scaleX(1); }
.ah-card__icon {
  width: 3.4rem;
  height: 3.4rem;
  border-radius: 14px;
  display: grid;
  place-items: center;
  margin-bottom: 1.25rem;
  color: var(--ah-gold-dark);
  background: rgba(var(--ah-gold-rgb), 0.11);
  border: 1px solid rgba(var(--ah-gold-rgb), 0.22);
  transition: transform 0.45s var(--ah-ease), background 0.45s var(--ah-ease);
}
.ah-card:hover .ah-card__icon { transform: translateY(-3px) rotate(-6deg); background: rgba(var(--ah-gold-rgb), 0.18); }
.ah-card h3 {
  margin: 0 0 0.6rem;
  font-family: var(--ah-font-display);
  font-size: 1.12rem;
  font-weight: 700;
  color: var(--ah-black);
}
.ah-card p { margin: 0; font-size: 0.95rem; line-height: 1.7; color: var(--ah-muted); }
.ah-card__note {
  display: inline-block;
  margin-top: 1rem;
  padding: 0.3rem 0.7rem;
  border-radius: 999px;
  font-size: 0.74rem;
  font-weight: 600;
  color: var(--ah-gold-dark);
  background: rgba(var(--ah-gold-rgb), 0.12);
}

/* Dark variant used on black sections */
.ah-card--dark {
  background: rgba(255,255,255,0.045);
  border-color: rgba(255,255,255,0.1);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.ah-card--dark h3 { color: #fff; }
.ah-card--dark p { color: rgba(255,255,255,0.66); }
.ah-card--dark .ah-card__icon { color: var(--ah-gold-light); background: rgba(var(--ah-gold-rgb), 0.16); }
.ah-card--dark:hover { border-color: rgba(var(--ah-gold-rgb), 0.45); }

/* ---- Dark feature band -------------------------------------- */

.ah-band {
  position: relative;
  background: var(--ah-black);
  color: #fff;
  overflow: hidden;
}
.ah-band::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(70% 100% at 100% 0%, rgba(var(--ah-gold-rgb), 0.15), transparent 60%);
  pointer-events: none;
}
.ah-band__grid { position: relative; display: grid; gap: clamp(2.5rem, 4vw, 3.5rem); align-items: center; }
@media (min-width: 1024px) { .ah-band__grid { grid-template-columns: 0.9fr 1.1fr; } }
.ah-band__copy p { margin: 1.15rem 0 0; font-size: 1.02rem; line-height: 1.8; color: rgba(255,255,255,0.72); }
.ah-band__actions { margin-top: 2rem; display: flex; flex-wrap: wrap; gap: 0.85rem; }

/* ---- Contact layout ----------------------------------------- */

.ah-contact-layout { display: grid; gap: clamp(2rem, 4vw, 3rem); align-items: start; }
@media (min-width: 1024px) { .ah-contact-layout { grid-template-columns: 1.15fr 0.85fr; } }

.ah-formcard {
  position: relative;
  padding: clamp(1.75rem, 3.5vw, 2.75rem);
  border-radius: var(--ah-radius-lg);
  background: #fff;
  border: 1px solid rgba(0,0,0,0.07);
  box-shadow: 0 24px 60px rgba(0,0,0,0.08);
}
.ah-formcard__form { display: grid; gap: 1.1rem; margin-top: 1.75rem; }
.ah-formcard__row { display: grid; gap: 1.1rem; }
@media (min-width: 640px) { .ah-formcard__row { grid-template-columns: 1fr 1fr; } }
.ah-formcard label {
  display: block;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--ah-black);
}
.ah-formcard input,
.ah-formcard textarea {
  width: 100%;
  margin-top: 0.5rem;
  padding: 0.85rem 1rem;
  border-radius: 12px;
  border: 1px solid rgba(0,0,0,0.13);
  background: var(--ah-cream);
  font-family: var(--ah-font-body);
  font-size: 0.95rem;
  color: var(--ah-black);
  transition: border-color 0.3s var(--ah-ease), box-shadow 0.3s var(--ah-ease), background 0.3s var(--ah-ease);
}
.ah-formcard input:focus,
.ah-formcard textarea:focus {
  outline: none;
  background: #fff;
  border-color: var(--ah-gold);
  box-shadow: 0 0 0 4px rgba(var(--ah-gold-rgb), 0.16);
}
.ah-formcard textarea { resize: vertical; min-height: 8rem; }

.ah-infocard {
  position: relative;
  padding: clamp(1.75rem, 3.5vw, 2.5rem);
  border-radius: var(--ah-radius-lg);
  background: var(--ah-black);
  color: #fff;
  overflow: hidden;
}
.ah-infocard::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(90% 70% at 100% 0%, rgba(var(--ah-gold-rgb), 0.22), transparent 62%);
  pointer-events: none;
}
.ah-infocard > * { position: relative; }
.ah-infocard h3 {
  margin: 0 0 1.5rem;
  font-family: var(--ah-font-display);
  font-size: 1.3rem;
  font-weight: 700;
  color: #fff;
}
.ah-infolist { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.15rem; }
.ah-infolist li { display: flex; gap: 1rem; align-items: flex-start; }
.ah-infolist i { color: var(--ah-gold-light); width: 20px; height: 20px; flex-shrink: 0; margin-top: 0.2rem; }
.ah-infolist strong {
  display: block;
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.5);
  margin-bottom: 0.25rem;
}
.ah-infolist span,
.ah-infolist a { display: block; font-size: 0.95rem; color: rgba(255,255,255,0.88); text-decoration: none; }
.ah-infolist a:hover { color: var(--ah-gold-light); }
.ah-infocard__actions { margin-top: 1.85rem; display: grid; gap: 0.7rem; }

.ah-mapframe {
  margin-top: clamp(2rem, 4vw, 3rem);
  border-radius: var(--ah-radius-lg);
  overflow: hidden;
  border: 1px solid rgba(0,0,0,0.08);
  box-shadow: 0 24px 60px rgba(0,0,0,0.1);
  aspect-ratio: 21 / 8;
  min-height: 20rem;
}
.ah-mapframe iframe { width: 100%; height: 100%; border: 0; display: block; }

.ah-alert {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  padding: 0.9rem 1.1rem;
  border-radius: 12px;
  font-size: 0.92rem;
  margin-top: 1.5rem;
}
.ah-alert--success { background: rgba(37,211,102,0.12); color: #1B7F42; border: 1px solid rgba(37,211,102,0.35); }
.ah-alert--error { background: rgba(220,38,38,0.09); color: #B03030; border: 1px solid rgba(220,38,38,0.3); }

/* ---- Coverage columns --------------------------------------- */

/* The .ah-coverage* rules that lived here were deleted with the services
   coverage band (page-services.php). No markup emits those class names any
   more; restore from git history if the section ever comes back. */

/* ---- Closing CTA -------------------------------------------- */

/* ---- Closing CTA band -------------------------------------- */
/* Full-bleed: this is now its own <section>, no longer a rounded card boxed
   inside .ah-container, so it spans edge to edge and reads as a deliberate
   full-width closing statement (matching the homepage .ah-cta-band). The inner
   wrapper does the width limiting — no 100vw/margin hacks, so it cannot cause a
   horizontal scrollbar. */
.ah-closer {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding-block: clamp(4rem, 9vw, 7rem);
  text-align: center;
  background: linear-gradient(160deg, #151515 0%, #0B0B0B 55%, #121212 100%);
  /* Gold hairlines top and bottom seam it to whatever sits either side. */
  border-top: 1px solid rgba(var(--ah-gold-rgb), 0.28);
  border-bottom: 1px solid rgba(var(--ah-gold-rgb), 0.28);
}
/* Gold glow from the top edge. */
.ah-closer::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: radial-gradient(70% 100% at 50% 0%, rgba(var(--ah-gold-rgb), 0.22), transparent 68%);
  pointer-events: none;
}
/* Very soft diagonal sheen so the flat black has some depth across the width. */
.ah-closer::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(115deg, transparent 35%, rgba(255, 255, 255, 0.035) 50%, transparent 65%);
  pointer-events: none;
}
.ah-closer__inner {
  position: relative;
  width: min(100% - 2rem, 46rem);
  margin-inline: auto;
}
.ah-closer__title {
  font-family: var(--ah-font-display);
  font-weight: 800;
  font-size: var(--ah-fs-h2);
  line-height: 1.1;
  letter-spacing: -0.02em;
  color: #fff;
  margin: 0;
  text-wrap: balance;
}
/* Short gold rule under the heading, centred. */
.ah-closer__title::after {
  content: '';
  display: block;
  width: 3.5rem;
  height: 2px;
  margin: 1.25rem auto 0;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--ah-gold-dark), var(--ah-gold-light), var(--ah-gold-dark));
}
.ah-closer p {
  margin: 1.25rem auto 0;
  max-width: 46ch;
  font-size: 1.05rem;
  line-height: 1.8;
  color: rgba(255,255,255,0.72);
}
.ah-closer__actions {
  margin-top: 2.25rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.9rem;
  justify-content: center;
}
@media (max-width: 520px) {
  .ah-closer__actions .ah-btn { width: 100%; justify-content: center; }
}

/* ---- Section rhythm helpers --------------------------------- */

.ah-sec { padding-block: clamp(3.5rem, 8vw, 7rem); }
.ah-sec--tight { padding-block: clamp(2.5rem, 5vw, 4.5rem); }
.ah-sec--cream { background: var(--ah-cream); }
.ah-sec--dark { background: var(--ah-black); color: #fff; }
.ah-sec__head-gap { margin-bottom: clamp(2.25rem, 4vw, 3.5rem); }
