/* ============================================================
   West Penn Legacy Group — iteration 2, navy + gold.

   The palette is taken straight from the two references Julian sent
   (WhatsApp 2026-07-24): ThemeForest PowerLegal (navy #10172C, tan
   #AD9779, cream #F8F6F3) and the "Legal Edge" Pinterest pin (slate
   navy #232936, gold #C09E71). Neither carries any green — v1 at
   westpennlegacy.millend.eu keeps the green/charcoal brand instead.

   Accessibility shapes two choices the references get wrong:
   gold #AD9779 only scores 2.8:1 on white, so solid gold buttons take
   NAVY text (6.3:1, and it matches the Legal Edge pin), and gold used
   as text on a light background drops to --gold-deep (5.3:1). Full
   --gold stays for fills, rules, borders and dark-background text.

   :root token overrides UNLAYERED (they must beat @layer tokens);
   components in @layer custom; element resets in @layer base.
   ============================================================ */

:root {
  /* brand — navy */
  --navy: #1A243F;        /* elevated dark surfaces: cards, stat band */
  --navy-deep: #10172C;   /* PowerLegal base: hero, footer, drawer, topbar */
  --navy-bar: #0A1020;    /* footer bottom bar */

  /* brand — gold */
  --gold: #AD9779;        /* fills, rules, borders, icon squares */
  --gold-hover: #9E896D;
  --gold-bright: #C6A87C; /* gold as TEXT on navy */
  --gold-deep: #82673E;   /* gold as TEXT on white/cream (AA) */
  --gold-wash: #F5F0E8;   /* soft tint fill */

  /* neutrals */
  --ink: #1F2733;
  --text-mute: #5C6675;
  --line: #E4E0D8;        /* warm-tinted border, not a cool grey */
  --wash: #F8F6F3;        /* PowerLegal cream */

  /* remap millend-css semantic tokens */
  --primary: var(--gold);
  --primary-hover: var(--gold-hover);
  --accent: var(--gold);
  --accent-hover: var(--gold-hover);
  --base: var(--navy);
  --base-dark: var(--navy-deep);
  --base-ultra-dark: var(--navy-bar);
  --border: var(--line);

  /* type */
  --font-primary: "Nunito Sans", ui-sans-serif, system-ui, sans-serif;
  --font-secondary: "Cormorant Infant", "Times New Roman", serif;

  /* rhythm */
  --section-pad: clamp(4.5rem, 9vw, 7.5rem);
  --container: 75rem;

  /* shadow tint — navy, so shadows sit in the palette instead of going grey */
  --shadow-tint: 16, 23, 44;
}

@layer base {
  body {
    font-family: var(--font-primary);
    color: var(--ink);
    background: #fff;
    font-size: 1rem;
    line-height: 1.7;
  }
  h1, h2, h3, h4 { color: var(--navy-deep); font-weight: 700; }
  ::selection { background: var(--gold); color: var(--navy-deep); }
}

/* ---------- focus ring ----------
   globals.css ships `:where(:focus-visible) { outline: 2px solid var(--primary) }`.
   --primary is --gold here, and #AD9779 scores 2.81:1 on white — under the 3:1
   WCAG 2.2 floor for focus indicators (SC 1.4.11), so the ring had to be redefined
   rather than inherited. Navy on light (17.8:1), bright gold on the dark surfaces
   where navy would vanish (7.9:1). Unlayered so it beats globals' :where(). */
:focus-visible {
  outline: 2px solid var(--navy-deep);
  outline-offset: 2px;
}
.topbar :focus-visible,
.hero :focus-visible,
.feature-card :focus-visible,
.stat-band :focus-visible,
.cta-band :focus-visible,
.testimonials__intro :focus-visible,
.mobile-menu :focus-visible,
.mobile-menu:focus-visible,
.site-footer :focus-visible {
  outline-color: var(--gold-bright);
}

@layer custom {

/* ---------- primitives ---------- */

.wpl-container {
  width: min(100% - 2.5rem, var(--container));
  margin-inline: auto;
}

.skip-link {
  position: absolute; left: -200vw; top: 0; z-index: 200;
  background: var(--navy-deep); color: #fff; padding: .6rem 1.2rem;
}
.skip-link:focus { left: 0; }

.icon { display: inline-block; vertical-align: middle; flex: none; }

/* eyebrow — uppercase kicker with leading rule.
   max-width:none escapes globals' `p { max-width: 65ch }` prose measure — at this font
   size that capped the flex box at 499px, so --center centred inside 499px, not the row. */
.eyebrow {
  display: flex; align-items: center; gap: .75rem; max-width: none;
  font-size: .8rem; font-weight: 800; letter-spacing: .28em;
  text-transform: uppercase; color: var(--gold-deep); margin: 0 0 1rem;
}
.eyebrow::before { content: ""; width: 2.25rem; height: 1px; background: var(--gold); flex: none; }
.eyebrow--light { color: var(--gold-bright); }
.eyebrow--light::before { background: var(--gold-bright); }
.eyebrow--center { justify-content: center; }
/* -.28em cancels the trailing letter-space the last glyph carries, else the right-hand
   rule sits one letter-space further out than the left one */
.eyebrow--center::after { content: ""; width: 2.25rem; height: 1px; background: var(--gold); flex: none; margin-left: -.28em; }

.section-title {
  font-family: var(--font-secondary);
  font-size: clamp(1.9rem, 3.4vw, 2.75rem);
  line-height: 1.12; margin: 0 0 1.25rem; max-width: 24ch;
}
.section-title em { font-style: italic; color: var(--gold-deep); }
.section-title--center { margin-inline: auto; text-align: center; }

.section-head { margin-bottom: clamp(2.25rem, 5vw, 3.5rem); }
.section-head__text { max-width: 44rem; margin: 0 auto; text-align: center; color: var(--text-mute); }

/* buttons — square, uppercase, tracked (PowerLegal signature).
   Solid takes navy-on-gold: white on this tan is 2.8:1, navy is 6.3:1,
   and the Legal Edge reference does exactly this. */
.button-solid, .button-ghost {
  display: inline-flex; align-items: center; gap: .6rem;
  padding: .95rem 2.1rem; border-radius: 0;
  font-size: .82rem; font-weight: 800; letter-spacing: .14em;
  text-transform: uppercase; text-decoration: none; line-height: 1.2;
  transition: background .18s ease, color .18s ease, border-color .18s ease;
}
.button-solid { background: var(--gold); color: var(--navy-deep) !important; border: 1px solid var(--gold); }
.button-solid:hover { background: var(--gold-hover); border-color: var(--gold-hover); }
.button-ghost { background: transparent; color: #fff !important; border: 1px solid rgba(255,255,255,.45); }
.button-ghost:hover { border-color: var(--gold-bright); color: var(--gold-bright) !important; }
.button__arrow { font-family: var(--font-primary); }

/* text link — small caps arrow link */
.text-link {
  display: inline-flex; align-items: center; gap: .45rem;
  font-size: .78rem; font-weight: 800; letter-spacing: .16em;
  text-transform: uppercase; color: var(--gold-deep); text-decoration: none;
}
.text-link:hover { color: var(--navy-deep); }
.text-link__arrow { transition: translate .18s ease; }
.text-link:hover .text-link__arrow { translate: 4px 0; }
.text-link--light { color: var(--gold-bright); }
.text-link--light:hover { color: #fff; }

/* phone box — bordered number with gold icon square */
.phone-box {
  display: inline-flex; align-items: stretch; text-decoration: none;
  border: 1px solid var(--line);
}
.phone-box__icon {
  display: grid; place-items: center; width: 3.1rem;
  background: var(--gold); color: var(--navy-deep);
}
.phone-box__icon .icon { width: 1.2rem; height: 1.2rem; }
.phone-box__number {
  display: grid; place-items: center; padding: .55rem 1.1rem;
  font-family: var(--font-secondary); font-size: 1.35rem; font-weight: 700;
  color: var(--navy-deep); letter-spacing: .02em; white-space: nowrap;
}
.phone-box:hover .phone-box__number { color: var(--gold-deep); }

/* ---------- topbar ---------- */

.topbar { background: var(--navy-deep); color: rgba(255,255,255,.72); font-size: .8rem; }
.topbar__inner { display: flex; justify-content: space-between; align-items: center; gap: 1rem; min-height: 2.9rem; }
.topbar__group { display: flex; align-items: center; gap: 1.4rem; }
.topbar__item { display: inline-flex; align-items: center; gap: .45rem; color: inherit; text-decoration: none; }
.topbar__item .icon { width: .95rem; height: .95rem; color: var(--gold-bright); }
a.topbar__item:hover { color: #fff; }
/* the glyph stays 1.05rem; padding lifts the hit area to the 24px WCAG 2.2 floor */
.topbar__social { padding: .35rem; margin: -.35rem; }
.topbar__social .icon { width: 1.05rem; height: 1.05rem; }
/* phone lives up here, quiet — the header row keeps the one loud element (the CTA) */
.topbar__item--phone { color: #fff; font-weight: 700; white-space: nowrap; }
a.topbar__item--phone:hover { color: var(--gold-bright); }

/* ---------- header ---------- */

.site-header {
  position: sticky; top: 0; z-index: 100;
  background: #fff; border-bottom: 1px solid var(--line);
  transition: box-shadow .25s ease;
}
.site-header.is-stuck { box-shadow: 0 10px 30px rgba(var(--shadow-tint), .1); }
.site-header__inner { display: flex; align-items: center; gap: clamp(1rem, 2vw, 2rem); min-height: 6rem; }
.site-header__brand { flex: none; display: block; }
.site-header__brand img { display: block; width: auto; height: 3.4rem; }

.site-nav { margin-inline: auto; }
.site-nav ul { display: flex; gap: clamp(1.1rem, 1.7vw, 2rem); list-style: none; margin: 0; padding: 0; }
.site-nav a {
  font-family: var(--font-secondary); font-size: clamp(1rem, 1.15vw, 1.15rem); font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase;
  color: var(--navy-deep); text-decoration: none; white-space: nowrap;
  padding-block: .4rem; border-bottom: 2px solid transparent;
  transition: color .15s ease, border-color .15s ease;
}
.site-nav a:hover { color: var(--gold-deep); border-color: var(--gold); }

.site-header__contact { display: flex; align-items: center; gap: 1.1rem; flex: none; }

.burger { display: none; }

/* ---------- mobile drawer ---------- */

/* drawer + backdrop sit ABOVE the sticky header (z 100) so nothing shows through */
.menu-overlay {
  position: fixed; inset: 0; z-index: 150;
  background: rgba(var(--shadow-tint), .6);
  opacity: 0; transition: opacity .3s ease;
}
.menu-overlay.is-open { opacity: 1; }

.mobile-menu {
  position: fixed; inset: 0 0 0 auto; width: min(23rem, 88vw); z-index: 160;
  background: var(--navy-deep); padding: 1.4rem clamp(1.2rem, 5vw, 1.9rem) 2.4rem;
  display: flex; flex-direction: column; gap: 1.6rem;
  overflow-y: auto; overscroll-behavior: contain;
  box-shadow: -24px 0 60px rgba(var(--shadow-tint), .45);
  translate: 100% 0; visibility: hidden;
  transition: translate .32s cubic-bezier(.32, .72, .28, 1), visibility 0s linear .32s;
}
.mobile-menu.is-open {
  translate: 0 0; visibility: visible;
  transition: translate .32s cubic-bezier(.32, .72, .28, 1), visibility 0s;
}
.mobile-menu__head {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding-bottom: 1.3rem; border-bottom: 1px solid rgba(255,255,255,.14);
}
.mobile-menu__logo img { display: block; width: auto; height: 2.5rem; }
.mobile-menu__close {
  flex: none; display: grid; place-items: center; width: 2.7rem; height: 2.7rem;
  padding: 0; background: transparent; color: #fff; cursor: pointer;
  border: 1px solid rgba(255,255,255,.3);
  transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.mobile-menu__close:hover { background: var(--gold); border-color: var(--gold); color: var(--navy-deep); }
.mobile-menu__close .icon { width: 1.15rem; height: 1.15rem; }
.mobile-menu ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .1rem; }
.mobile-menu a:not(.button-solid) { color: #fff; text-decoration: none; }
.mobile-menu ul a {
  font-family: var(--font-secondary); font-size: 1.3rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .06em; display: block; padding: .55rem 0;
  transition: color .15s ease;
}
.mobile-menu ul a:hover { color: var(--gold-bright); }
.mobile-menu__actions { padding-top: 1.3rem; display: grid; gap: .75rem; }
.mobile-menu__actions .button-solid { justify-content: center; }
.phone-box--mobile { border-color: rgba(255,255,255,.25); }
.phone-box--mobile .phone-box__number { color: #fff; font-size: 1.2rem; padding-inline: .85rem; }
.phone-box--mobile:hover .phone-box__number { color: var(--gold-bright); }

body.menu-open { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
  .mobile-menu, .menu-overlay { transition-duration: .01ms; }
}

/* ---------- hero ---------- */

.hero { position: relative; isolation: isolate; overflow: hidden; }
.hero__bg, .hero__bg img { position: absolute; inset: 0; width: 100%; height: 100%; }
/* The hero photo was picked for the green brand — the paddler's mint jacket is the
   loudest colour on the page and fights the gold. A light warm grade pulls it back
   into the palette without flattening the shot; the stat band and CTA band already
   grade their photography, so this is the theme's existing language. */
.hero__bg img { object-fit: cover; object-position: 62% 40%; filter: saturate(.62) sepia(.14); }
.hero__bg::after {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(100deg, rgba(16,23,44,.95) 8%, rgba(16,23,44,.84) 42%, rgba(16,23,44,.40) 100%);
}
.hero__inner {
  position: relative; z-index: 2;
  padding-block: clamp(6rem, 13vw, 10.5rem) clamp(9rem, 16vw, 13rem);
  max-width: none;
}
.hero__title {
  font-family: var(--font-secondary); color: #fff;
  font-size: clamp(2.5rem, 5.6vw, 4.3rem); line-height: 1.08;
  margin: 0 0 1.4rem; max-width: 17ch; text-wrap: balance;
}
.hero__title em { font-style: italic; color: var(--gold-bright); }
.hero__sub { color: rgba(255,255,255,.82); max-width: 34rem; font-size: 1.06rem; margin: 0 0 2.2rem; }
.hero__actions { display: flex; gap: 1rem; flex-wrap: wrap; }

/* ---------- feature trio (overlaps hero) ---------- */

.feature-band { position: relative; z-index: 3; }
.feature-band__grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px;
  margin-top: clamp(-7rem, -9vw, -4.5rem);
  background: rgba(255,255,255,.08);
  box-shadow: 0 30px 60px rgba(var(--shadow-tint), .28);
}
.feature-card {
  background: var(--navy); padding: 2.4rem 2.2rem 2.2rem;
  border-top: 3px solid var(--gold);
}
.feature-card__heading {
  font-family: var(--font-secondary); color: #fff;
  font-size: 1.55rem; line-height: 1.15; margin: 0 0 .8rem;
}
.feature-card__text { color: rgba(255,255,255,.68); font-size: .95rem; margin: 0 0 1.4rem; }

/* ---------- about ---------- */

.about { padding-block: var(--section-pad); }
.about__grid {
  display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(2.5rem, 6vw, 5.5rem); align-items: center;
}
.about__portrait { position: relative; margin: 0; max-width: 26rem; }
.about__portrait img { display: block; width: 100%; height: auto; }
.about__portrait::before {
  content: ""; position: absolute; inset: 1.4rem -1.4rem -1.4rem 1.4rem;
  border: 2px solid var(--gold); z-index: -1;
}
.about__text { color: var(--text-mute); margin: 0 0 1.6rem; }
.about__contact { display: flex; align-items: center; gap: .9rem; flex-wrap: wrap; margin: 0 0 2rem; font-weight: 700; color: var(--navy-deep); }
.about__phone {
  font-family: var(--font-secondary); font-size: 1.5rem; font-weight: 700;
  color: var(--gold-deep); text-decoration: none;
}
.about__phone:hover { color: var(--navy-deep); }
/* --line is a border colour; as a glyph it was invisible (1.3:1). Decorative, so gold */
.about__contact-sep { color: var(--gold); }
.about__signature { display: flex; align-items: center; gap: 1.4rem; }
.about__signature img { width: auto; height: 3.4rem; }
.about__sig-name {
  font-family: var(--font-secondary); font-size: 1.25rem; font-weight: 700;
  color: var(--navy-deep); margin: 0; line-height: 1.2;
}
.about__sig-name span { display: block; font-family: var(--font-primary); font-size: .78rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--text-mute); margin-top: .3rem; }

/* ---------- services ---------- */

.services { background: var(--wash); padding-block: var(--section-pad); }
.services__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.service-card {
  background: #fff; border: 1px solid var(--line); padding: 2.4rem 2rem 2.1rem;
  display: flex; flex-direction: column; align-items: flex-start; gap: .9rem;
  transition: border-color .2s ease, translate .2s ease, box-shadow .2s ease;
}
.service-card:hover { border-color: var(--gold); translate: 0 -4px; box-shadow: 0 18px 40px rgba(var(--shadow-tint), .1); }
.service-card__icon {
  display: grid; place-items: center; width: 4.4rem; height: 4.4rem;
  border: 1px solid var(--line); color: var(--gold-deep); background: var(--gold-wash);
}
.service-card__heading { font-family: var(--font-secondary); font-size: 1.5rem; margin: 0; }
.service-card__text { color: var(--text-mute); font-size: .95rem; margin: 0 0 .4rem; }

/* ---------- stat band ---------- */

.stat-band { display: grid; grid-template-columns: 1fr 1fr; background: var(--navy); }
.stat-band__half { display: grid; grid-template-columns: 1fr 1fr; min-height: 15rem; }
.stat-band__media { overflow: hidden; }
.stat-band__media img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) brightness(.85); display: block; }
.stat-band__body { display: grid; place-content: center; text-align: center; padding: 2.5rem 1.5rem; gap: .4rem; }
.stat-band__num { font-family: var(--font-secondary); font-size: clamp(2.8rem, 4.5vw, 3.9rem); font-weight: 700; color: var(--gold-bright); line-height: 1; }
.stat-band__label { color: rgba(255,255,255,.75); font-size: .85rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; max-width: 16rem; margin-inline: auto; }

/* ---------- process ---------- */

.process { padding-block: var(--section-pad); }
.process__grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem;
  list-style: none; margin: 0; padding: 0; counter-reset: step;
}
.step-card { position: relative; border: 1px solid var(--line); padding: 2.2rem 1.8rem 2rem; background: #fff; }
/* --gold-deep, not --gold: a 1px outline of #AD9779 on white is 2.8:1 and the numerals
   read as barely-there smudges at this size. Decorative (aria-hidden, the list is an ol),
   but they still have to be seen. */
.step-card__num {
  font-family: var(--font-secondary); font-size: 3.4rem; font-weight: 700;
  line-height: 1; color: transparent;
  -webkit-text-stroke: 1px var(--gold-deep); display: block; margin-bottom: 1rem;
}
.step-card__heading { font-family: var(--font-secondary); font-size: 1.4rem; margin: 0 0 .6rem; }
.step-card__text { color: var(--text-mute); font-size: .92rem; margin: 0; }

/* ---------- why us ---------- */

.why-us { background: var(--wash); padding-block: var(--section-pad); }
.why-us__grid {
  display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr);
  gap: clamp(2.5rem, 6vw, 5rem); align-items: center;
}
.why-us__media { position: relative; }
.why-us__media img { display: block; width: 100%; height: auto; aspect-ratio: 5 / 4; object-fit: cover; }
.why-us__media::after {
  content: ""; position: absolute; inset: -1.2rem auto auto -1.2rem;
  width: 45%; height: 45%; border: 2px solid var(--gold); z-index: -1;
}
.why-us__text { color: var(--text-mute); margin: 0 0 1.8rem; }
.why-us__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .9rem; }
.why-us__list li { display: flex; align-items: center; gap: .8rem; font-weight: 700; color: var(--navy-deep); }
.why-us__list .icon { color: var(--gold-deep); }

/* ---------- CTA band ---------- */

.cta-band { position: relative; isolation: isolate; background: var(--navy-deep); overflow: hidden; }
.cta-band::before {
  content: ""; position: absolute; inset: 0;
  background: url('/uploads/wpl/hero.webp') center 30% / cover no-repeat;
  opacity: .14; filter: grayscale(1);
}
.cta-band__inner { position: relative; text-align: center; padding-block: clamp(4rem, 8vw, 6.5rem); display: grid; justify-items: center; }
.cta-band__title { font-family: var(--font-secondary); color: #fff; font-size: clamp(2rem, 4vw, 3.1rem); margin: 0 0 1rem; }
.cta-band__text { color: rgba(255,255,255,.75); max-width: 40rem; margin: 0 0 2.2rem; }
.cta-band__actions { display: flex; gap: 1rem; flex-wrap: wrap; justify-content: center; }
.cta-band .eyebrow { justify-content: center; }
.cta-band .eyebrow::after { content: ""; width: 2.25rem; height: 1px; background: var(--gold-bright); flex: none; margin-left: -.28em; }

/* ---------- testimonials ---------- */

.testimonials { padding-block: var(--section-pad); }
.testimonials__grid {
  display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(2rem, 5vw, 4rem); align-items: stretch;
}
.testimonials__intro { background: var(--navy); padding: clamp(2.2rem, 4vw, 3.4rem); display: flex; flex-direction: column; gap: 1.1rem; }
.testimonials__mark { color: var(--gold-bright); }
.testimonials__heading { font-family: var(--font-secondary); color: #fff; font-size: clamp(1.8rem, 3vw, 2.4rem); line-height: 1.15; margin: 0; }
.testimonials__text { color: rgba(255,255,255,.68); font-size: .95rem; margin: 0; }

.testimonials__stage { position: relative; border: 1px solid var(--line); padding: clamp(2rem, 4vw, 3.2rem); display: grid; }
.quote-card { grid-area: 1 / 1; margin: 0; opacity: 0; visibility: hidden; transition: opacity .45s ease; display: flex; flex-direction: column; gap: 1.2rem; }
.quote-card.is-active { opacity: 1; visibility: visible; }
/* --gold-deep, not --gold: the stars carry the rating, and #AD9779 on white
   is 2.8:1 — under the 3:1 floor for meaningful non-text marks. */
.quote-card__stars { display: flex; gap: .2rem; color: var(--gold-deep); }
.quote-card__stars .icon { fill: currentColor; }
.quote-card__text { font-family: var(--font-secondary); font-size: clamp(1.25rem, 2vw, 1.6rem); font-weight: 500; line-height: 1.45; color: var(--navy-deep); margin: 0; }
.quote-card__author { display: flex; align-items: center; gap: 1rem; margin-top: auto; }
.quote-card__author img { border-radius: 50%; width: 3.5rem; height: 3.5rem; object-fit: cover; }
.quote-card__name { font-style: normal; font-weight: 800; color: var(--navy-deep); display: block; }
.quote-card__role { color: var(--text-mute); font-size: .85rem; }

/* negative margin keeps the dots visually where they were while each button's real
   hit area reaches 24px (WCAG 2.2 SC 2.5.8) — a 10px tap target is unusable on touch */
.testimonials__dots { position: absolute; right: clamp(2rem, 4vw, 3.2rem); bottom: clamp(2rem, 4vw, 3.2rem); display: flex; gap: .1rem; margin: -.45rem; }
.testimonials__dots button {
  width: 1.55rem; height: 1.55rem; padding: .45rem; box-sizing: border-box;
  border: none; background: transparent; cursor: pointer;
  display: grid; place-items: center;
}
.testimonials__dots button::before {
  content: ""; width: .65rem; height: .65rem; border-radius: 50%;
  border: 1px solid var(--gold-deep); background: transparent; transition: background .2s ease;
}
.testimonials__dots button.is-active::before,
.testimonials__dots button:hover::before { background: var(--gold-deep); }

/* ---------- carriers ---------- */

.carriers { background: var(--wash); padding-block: var(--section-pad); }
/* Hairlines are drawn by the CELLS, not by a coloured container showing through
   1px gaps. 23 carriers over 7 columns leaves 5 empty slots in the last row —
   with the gap technique those render as a bare block of --line, which reads as
   a broken panel now that the border colour is warm. */
.carriers__grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
  gap: 0; border-top: 1px solid var(--line); border-left: 1px solid var(--line);
}
.carriers__cell {
  background: #fff; display: grid; place-items: center; padding: 1.6rem 1.4rem; min-height: 6rem;
  border-right: 1px solid var(--line); border-bottom: 1px solid var(--line);
}
.carriers__cell img {
  max-width: 100%; height: 2.6rem; width: auto; object-fit: contain;
  filter: grayscale(1); opacity: .55; transition: filter .25s ease, opacity .25s ease;
}
.carriers__cell:hover img { filter: none; opacity: 1; }

/* ---------- footer ---------- */

.site-footer { background: var(--navy-deep); color: rgba(255,255,255,.7); }
.site-footer__grid {
  display: grid; grid-template-columns: 1.35fr 1fr 1fr 1.15fr;
  gap: clamp(2rem, 4vw, 3.5rem); padding-block: clamp(3.5rem, 7vw, 5.5rem);
}
.site-footer__brand img { width: auto; max-height: 4.6rem; }
.site-footer__text { font-size: .92rem; margin: 1.4rem 0; }
.site-footer__text b { color: #fff; }
.site-footer__social { display: flex; gap: .7rem; }
.site-footer__social a {
  display: grid; place-items: center; width: 2.5rem; height: 2.5rem;
  border: 1px solid rgba(255,255,255,.25); color: #fff;
  transition: background .2s ease, border-color .2s ease, color .2s ease;
}
.site-footer__social a:hover { background: var(--gold); border-color: var(--gold); color: var(--navy-deep); }

.site-footer__heading {
  font-family: var(--font-secondary); color: #fff; font-size: 1.5rem; font-weight: 700;
  margin: 0 0 1.1rem; padding-bottom: .8rem; position: relative;
}
.site-footer__heading::after { content: ""; position: absolute; left: 0; bottom: 0; width: 2.8rem; height: 2px; background: var(--gold); }

.site-footer__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; font-size: .95rem; }
.site-footer__list a { color: inherit; text-decoration: none; transition: color .15s ease; }
.site-footer__list a:hover { color: var(--gold-bright); }
.site-footer__list--arrows a::before { content: "→ "; color: var(--gold-bright); }

.phone-box--footer { border-color: rgba(255,255,255,.25); margin-bottom: 1.1rem; }
.phone-box--footer .phone-box__number { color: #fff; }
.phone-box--footer:hover .phone-box__number { color: var(--gold-bright); }
.site-footer .text-link { color: var(--gold-bright); }
.site-footer .text-link:hover { color: #fff; }

.site-footer__bar { background: var(--navy-bar); font-size: .82rem; }
.site-footer__bar-inner { display: flex; justify-content: space-between; align-items: center; gap: 1rem; min-height: 3.4rem; flex-wrap: wrap; }
.site-footer__legal { display: flex; gap: 1.6rem; }
.site-footer__legal a { color: inherit; text-decoration: none; }
.site-footer__legal a:hover { color: var(--gold-bright); }

/* ---------- error page ---------- */

.error-page { padding-block: var(--section-pad); text-align: center; }
.error-page__code { font-family: var(--font-secondary); font-size: clamp(5rem, 12vw, 9rem); font-weight: 700; color: var(--gold); line-height: 1; margin: 0; }
.error-page__text { color: var(--text-mute); margin: 1rem auto 2rem; }
.error-page__actions { display: flex; justify-content: center; }

/* ---------- page (generic) ---------- */

.page__inner { padding-block: var(--section-pad); }
.prose { max-width: 46rem; color: var(--text-mute); }

/* ---------- reveal animations ---------- */

.js [data-reveal] { opacity: 0; translate: 0 1.6rem; }
.js .is-revealed[data-reveal] {
  opacity: 1; translate: 0 0;
  transition: opacity .7s ease var(--reveal-delay, 0ms), translate .7s cubic-bezier(.2,.65,.3,1) var(--reveal-delay, 0ms);
}
@media (prefers-reduced-motion: reduce) {
  .js [data-reveal] { opacity: 1; translate: none; transition: none; }
}

/* ---------- responsive ---------- */

@media (max-width: 68rem) {
  .site-nav { display: none; }
  .burger {
    display: inline-flex; flex-direction: column; justify-content: center; gap: 5px;
    width: 2.9rem; height: 2.9rem; padding: .6rem;
    background: transparent; border: 1px solid var(--line); cursor: pointer;
    transition: background .15s ease, border-color .15s ease;
  }
  .burger span { display: block; height: 2px; background: var(--navy-deep); transition: background .15s ease; }
  .burger:hover { background: var(--gold); border-color: var(--gold); }
  .burger:hover span { background: var(--navy-deep); }
  .site-header__contact { margin-left: auto; }
  .site-header__inner { gap: 1rem; }
  .site-header__brand img { height: 3.1rem; }

  .feature-band__grid { grid-template-columns: 1fr; margin-top: -2.5rem; }
  .about__grid, .why-us__grid, .testimonials__grid { grid-template-columns: 1fr; }
  .about__portrait { max-width: 22rem; }
  .services__grid { grid-template-columns: repeat(2, 1fr); }
  .process__grid { grid-template-columns: repeat(2, 1fr); }
  .stat-band { grid-template-columns: 1fr; }
  .site-footer__grid { grid-template-columns: repeat(2, 1fr); }
}

/* address no longer fits beside phone + email without wrapping the topbar to two rows */
@media (max-width: 56rem) {
  .topbar__group:first-child { display: none; }
  .topbar__inner { justify-content: flex-end; }
}

@media (max-width: 44rem) {
  /* topbar keeps the tap-to-call number and Facebook; email drops too */
  .topbar__item--mail { display: none; }
  .topbar__inner { justify-content: center; }
  .site-header__cta { display: none; }
  .services__grid, .process__grid { grid-template-columns: 1fr; }
  .stat-band__half { grid-template-columns: 1fr; }
  .stat-band__media { max-height: 14rem; }
  .site-footer__grid { grid-template-columns: 1fr; }
  .hero__actions .button-solid, .hero__actions .button-ghost { width: 100%; justify-content: center; }
  .cta-band__actions { width: 100%; }
  .cta-band__actions .button-solid, .cta-band__actions .button-ghost { width: 100%; justify-content: center; }
}

} /* /@layer custom */
