/* ============================================================
   GENERAL FLARE — premium section system for the General Credibility sites.
   Namespaced .gf-*. All color via --bs-* / rgba(var(--bs-*-rgb)) so the site
   palette + theme customizer drive everything (no hardcoded brand colors).
   ============================================================ */

:root{
  --gf-ease: cubic-bezier(.22,1,.36,1);
  --gf-radius: 18px;
  --gf-shadow: 0 18px 50px -18px rgba(var(--bs-dark-rgb,15,23,42), .35);
  --gf-shadow-lg: 0 30px 70px -20px rgba(var(--bs-dark-rgb,15,23,42), .45);
}

/* Headings inside dark sections MUST be white — the child themes set h1–h3 to a
   dark brand color, which would otherwise render unreadable on dark backgrounds. */
.gf-hero-title,
.gf-niche h2, .gf-niche h3,
.gf-cta h2{ color:#fff !important; }

/* ---------- HERO CAROUSEL ---------- */
.gf-hero{ position:relative; }
.gf-hero-swiper{ width:100%; height:clamp(560px, 82vh, 860px); }
.gf-hero-slide{ position:relative; overflow:hidden; }
.gf-hero-slide .gf-hero-img{
  position:absolute; inset:0; background-size:cover; background-position:center;
  transform:scale(1.12); transition:transform 7s var(--gf-ease);
}
.swiper-slide-active .gf-hero-img{ transform:scale(1); }   /* Ken Burns */
.gf-hero-slide::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(105deg,
     rgba(var(--bs-dark-rgb,15,23,42),.86) 0%,
     rgba(var(--bs-dark-rgb,15,23,42),.62) 42%,
     rgba(var(--bs-primary-rgb),.30) 100%);
}
.gf-hero-content{
  position:absolute; inset:0; z-index:3; display:flex; align-items:center;
  color:#fff;
}
.gf-hero-content .container{ width:100%; }
.gf-hero-eyebrow{
  display:inline-flex; align-items:center; gap:.5rem;
  background:rgba(255,255,255,.12); backdrop-filter:blur(6px);
  border:1px solid rgba(255,255,255,.22);
  padding:.4rem 1rem; border-radius:100px; font-size:.8rem; font-weight:600;
  letter-spacing:.06em; text-transform:uppercase; margin-bottom:1.25rem;
}
.gf-hero-eyebrow .gf-dot{ width:8px;height:8px;border-radius:50%;background:var(--bs-warning);box-shadow:0 0 0 4px rgba(var(--bs-warning-rgb),.35); }
.gf-hero-title{ font-size:clamp(2.3rem, 5.2vw, 4.2rem); line-height:1.04; font-weight:800; max-width:16ch; margin:0 0 1.1rem; text-shadow:0 2px 30px rgba(0,0,0,.25); }
.gf-hero-title .gf-accent{ color:var(--bs-warning); }
.gf-hero-sub{ font-size:clamp(1.05rem,1.6vw,1.35rem); max-width:52ch; color:rgba(255,255,255,.92); margin-bottom:2rem; }
.gf-hero-cta{ display:flex; flex-wrap:wrap; gap:.9rem; }
/* Fixed overlay content reveals once on load (images rotate behind it). */
.gf-hero-content > .container > *{ opacity:0; transform:translateY(26px); animation:gfRise .9s var(--gf-ease) forwards; }
.gf-hero-content > .container > *:nth-child(1){ animation-delay:.20s; }
.gf-hero-content > .container > *:nth-child(2){ animation-delay:.35s; }
.gf-hero-content > .container > *:nth-child(3){ animation-delay:.50s; }
.gf-hero-content > .container > *:nth-child(4){ animation-delay:.65s; }
@keyframes gfRise{ to{ opacity:1; transform:none; } }

.gf-hero .swiper-pagination{ bottom:26px !important; }
.gf-hero .swiper-pagination-bullet{ width:34px;height:4px;border-radius:4px;background:#fff;opacity:.45;transition:opacity .3s; }
.gf-hero .swiper-pagination-bullet-active{ opacity:1;background:var(--bs-warning); }
.gf-hero .swiper-button-next,.gf-hero .swiper-button-prev{
  width:52px;height:52px;border-radius:50%;background:rgba(255,255,255,.14);
  backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.25);color:#fff;transition:background .3s,transform .3s;
}
.gf-hero .swiper-button-next:hover,.gf-hero .swiper-button-prev:hover{ background:var(--bs-warning);transform:scale(1.06); }
.gf-hero .swiper-button-next::after,.gf-hero .swiper-button-prev::after{ font-size:1.1rem;font-weight:700; }
/* Static scroll cue (infinite bounce removed — a forever-looping element competes
   with the scroll-linked parallax and draws the eye off the headline). A single
   soft settle plays once on load via [data-aos], not a loop. */
.gf-hero-scroll{ position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:4;color:#fff;opacity:.6; }

/* ---------- BUTTONS (flare) ---------- */
.gf-btn{ display:inline-flex;align-items:center;gap:.55rem;font-weight:800;font-size:1.05rem;padding:.95rem 2rem;border-radius:100px;text-decoration:none;transition:transform .25s var(--gf-ease),box-shadow .25s,background .25s;position:relative;overflow:hidden; }
/* Accent buttons carry NEAR-BLACK text on a slightly deepened accent so contrast
   passes WCAG AA across every palette (amber/gold/orange/coral). */
.gf-btn-primary{ background:var(--bs-warning);color:#141414;box-shadow:0 12px 30px -8px rgba(var(--bs-warning-rgb),.55); }
.gf-btn-primary:hover{ transform:translateY(-3px);box-shadow:0 18px 40px -8px rgba(var(--bs-warning-rgb),.72);color:#141414;filter:brightness(1.06); }
.gf-btn-ghost{ background:rgba(255,255,255,.12);color:#fff;border:1.5px solid rgba(255,255,255,.65);backdrop-filter:blur(4px); }
.gf-btn-ghost:hover{ background:#fff;color:#141414;transform:translateY(-3px); }
.gf-btn:focus-visible{ outline:3px solid #fff;outline-offset:3px;box-shadow:0 0 0 6px rgba(0,0,0,.35); }
/* (Shimmer sweep removed — the motion signature is the scroll parallax + Ken Burns;
   a per-hover glare competed with it and read gimmicky.) */

/* ---------- SECTION SCAFFOLD ---------- */
.gf-section{ padding:clamp(3.5rem,7vw,6.5rem) 0; }
.gf-section-head{ max-width:720px;margin:0 auto 3rem;text-align:center; }
/* Deepened brand tint so the small uppercase label clears AAA (7:1) on white —
   mid-tone --bs-primary alone only reaches ~4.7:1. */
.gf-eyebrow{ display:inline-block;color:color-mix(in srgb,var(--bs-primary) 66%,#000);font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:.82rem;margin-bottom:.75rem; }
.gf-section-title{ font-size:clamp(1.9rem,3.6vw,2.9rem);font-weight:800;line-height:1.1;margin:0 0 1rem; }
.gf-section-lead{ font-size:1.12rem;color:#414b57;line-height:1.65; }

/* ---------- SERVICES GRID ---------- */
/* Flex (not grid) so a partial last row centers instead of sitting left-sparse —
   a full 3-across row (e.g. 6 cards) is visually identical to the old grid. */
.gf-services-grid{ display:flex;flex-wrap:wrap;justify-content:center;gap:1.6rem; }
.gf-services-grid > *{ flex:1 1 300px;max-width:calc(33.333% - 1.07rem); }
.gf-service-card{
  background:var(--bs-body-bg,#fff);border:1px solid rgba(var(--bs-dark-rgb,15,23,42),.06);
  border-radius:20px;padding:2.4rem 2.1rem;position:relative;overflow:hidden;
  box-shadow:0 6px 24px -14px rgba(var(--bs-dark-rgb,15,23,42),.22);
  transition:transform .35s var(--gf-ease),box-shadow .35s,border-color .35s;
}
.gf-service-card::before{ content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,var(--bs-primary),var(--bs-warning));transform:scaleX(0);transform-origin:left;transition:transform .45s var(--gf-ease); }
.gf-service-card:hover{ transform:translateY(-10px);box-shadow:0 34px 60px -26px rgba(var(--bs-dark-rgb,15,23,42),.5);border-color:transparent; }
.gf-service-card:hover::before{ transform:scaleX(1); }
.gf-service-icon{
  width:68px;height:68px;border-radius:18px;display:flex;align-items:center;justify-content:center;
  font-size:1.85rem;color:var(--bs-primary);margin-bottom:1.5rem;
  /* Deepened resting tint (+ stronger inset ring) so the icon reads as a solid,
     intentional chip at rest instead of a faint ghost. */
  background:linear-gradient(140deg,rgba(var(--bs-primary-rgb),.22),rgba(var(--bs-warning-rgb),.26));
  box-shadow:inset 0 0 0 1px rgba(var(--bs-primary-rgb),.18);
  transition:transform .4s var(--gf-ease),background .4s,color .4s,box-shadow .4s;
}
.gf-service-card:hover .gf-service-icon{ transform:rotate(-6deg) scale(1.08);background:linear-gradient(140deg,var(--bs-primary),color-mix(in srgb,var(--bs-primary) 65%,var(--bs-warning)));color:#fff;box-shadow:0 10px 22px -8px rgba(var(--bs-primary-rgb),.5); }
.gf-service-card h3{ font-size:1.3rem;font-weight:700;margin:0 0 .7rem;letter-spacing:-.01em; }
.gf-service-card p{ color:#4a5563;margin:0 0 1rem;line-height:1.62;font-size:.98rem; }
.gf-service-link{ color:color-mix(in srgb,var(--bs-primary) 66%,#000);font-weight:700;text-decoration:none;display:inline-flex;align-items:center;gap:.35rem;transition:gap .25s; }
.gf-service-card:hover .gf-service-link{ gap:.7rem; }

/* ---------- NICHE FOCUS BAND ---------- */
.gf-niche{ position:relative;overflow:hidden;color:#fff;background:linear-gradient(120deg,var(--bs-dark) 0%,var(--bs-primary) 120%); }
.gf-niche::before{ content:"";position:absolute;inset:0;background:radial-gradient(circle at 82% 18%,rgba(var(--bs-warning-rgb),.28),transparent 45%); }
.gf-niche .container{ position:relative;z-index:2; }
.gf-niche-badge{ display:inline-flex;align-items:center;gap:.5rem;background:rgba(var(--bs-warning-rgb),.18);border:1px solid rgba(var(--bs-warning-rgb),.4);color:var(--bs-warning);padding:.4rem 1rem;border-radius:100px;font-weight:700;font-size:.8rem;letter-spacing:.05em;text-transform:uppercase;margin-bottom:1.25rem; }
.gf-niche h2{ font-size:clamp(1.9rem,3.6vw,2.8rem);font-weight:800;line-height:1.12;margin:0 0 1rem; }
.gf-niche p{ color:rgba(255,255,255,.9);font-size:1.1rem;line-height:1.65;max-width:56ch; }
.gf-niche-list{ list-style:none;padding:0;margin:1.5rem 0 0;display:grid;gap:.75rem; }
/* Force light text — the child themes set list-item color to #333, which the
   inherited .gf-niche{color:#fff} can't beat, leaving gray text on dark navy. */
.gf-niche-list li{ display:flex;gap:.7rem;align-items:flex-start;color:rgba(255,255,255,.94) !important; }
.gf-niche-list i{ color:var(--bs-warning) !important;margin-top:3px; }

/* ---------- STATS COUNTERS ---------- */
.gf-stats{ display:grid;grid-template-columns:repeat(4,1fr);gap:0;text-align:center;
  background:linear-gradient(135deg,rgba(var(--bs-primary-rgb),.055),rgba(var(--bs-warning-rgb),.06));
  border:1px solid rgba(var(--bs-primary-rgb),.10);border-radius:22px;padding:2.9rem 1.5rem; }
.gf-stats > div{ position:relative;padding:0 1rem; }
.gf-stats > div + div::before{ content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);height:58px;width:1px;background:rgba(var(--bs-primary-rgb),.16); }
.gf-stat-num{ font-size:clamp(2.3rem,4vw,3.3rem);font-weight:800;line-height:1;color:var(--bs-primary);letter-spacing:-.02em; }
.gf-stat-label{ margin-top:.5rem;font-size:.92rem;font-weight:600;color:#454f5c;text-transform:uppercase;letter-spacing:.04em; }

/* ---------- FEATURE ROWS (buying / selling) ---------- */
.gf-feature{ display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center; }
.gf-feature-media{ position:relative;border-radius:var(--gf-radius);overflow:hidden;box-shadow:var(--gf-shadow);aspect-ratio:4/3; }
.gf-feature-media img{ width:100%;height:100%;object-fit:cover;transition:transform .6s var(--gf-ease); }
.gf-feature:hover .gf-feature-media img{ transform:scale(1.05); }
.gf-feature-media .gf-feature-tag{ position:absolute;left:1rem;bottom:1rem;background:rgba(var(--bs-warning-rgb),.95);color:var(--bs-dark);font-weight:700;padding:.45rem 1rem;border-radius:100px;font-size:.85rem; }

/* ---------- FUNNEL CTA ---------- */
.gf-cta{ position:relative;overflow:hidden;background:linear-gradient(120deg,var(--bs-primary),var(--bs-dark));color:#fff;border-radius:var(--gf-radius);padding:clamp(2.5rem,5vw,4rem);text-align:center; }
.gf-cta::before,.gf-cta::after{ content:"";position:absolute;border-radius:50%;background:rgba(var(--bs-warning-rgb),.16); }
.gf-cta::before{ width:320px;height:320px;top:-120px;right:-80px; }
.gf-cta::after{ width:220px;height:220px;bottom:-110px;left:-40px;background:rgba(255,255,255,.08); }
.gf-cta > *{ position:relative;z-index:2; }
.gf-cta h2{ font-size:clamp(1.8rem,3.4vw,2.7rem);font-weight:800;margin:0 0 .8rem; }
.gf-cta p{ color:rgba(255,255,255,.9);font-size:1.12rem;max-width:52ch;margin:0 auto 1.8rem; }

/* ---------- REVEAL default (AOS supplements) ---------- */
[data-aos]{ transition-timing-function:var(--gf-ease); }
/* ROBUST FALLBACK: if AOS never initializes an element (JS off, CDN blocked,
   reduced-motion), keep its content fully visible. Once AOS adds .aos-init this
   stops applying and AOS controls the reveal normally. */
[data-aos]:not(.aos-init){ opacity:1 !important; transform:none !important; }
/* FLAT mode (?flat=1) — show everything with no motion (verification/QA + a
   safety net). */
html.gf-flat [data-aos]{ opacity:1 !important; transform:none !important; transition:none !important; }
html.gf-flat .gf-hero-content > .container > *{ opacity:1 !important; transform:none !important; animation:none !important; }

/* ---------- INNER-PAGE HERO ---------- */
.gf-page-hero{ position:relative;overflow:hidden;color:#fff;background:linear-gradient(120deg,var(--bs-dark),var(--bs-primary));padding:clamp(4rem,8vw,6.5rem) 0 clamp(3.25rem,5.5vw,4.75rem); }
/* Two layered glows (accent top-right + brand lower-right) give the otherwise
   empty right half depth so it reads intentional, not dead. Purely decorative,
   sits behind .container (z-index:2) — no text-contrast impact. */
.gf-page-hero::before{ content:"";position:absolute;inset:0;background:
   radial-gradient(circle at 86% 12%,rgba(var(--bs-warning-rgb),.22),transparent 44%),
   radial-gradient(circle at 74% 92%,rgba(var(--bs-primary-rgb),.40),transparent 46%); }
.gf-page-hero .container{ position:relative;z-index:2; }
.gf-crumbs{ font-size:.85rem;color:rgba(255,255,255,.7);margin-bottom:1rem; }
.gf-crumbs a{ color:rgba(255,255,255,.7);text-decoration:none; }
.gf-crumbs a:hover{ color:var(--bs-warning); }
.gf-page-hero h1{ color:#fff !important;font-size:clamp(2rem,4.4vw,3.2rem);font-weight:800;line-height:1.08;margin:0 0 .9rem;max-width:20ch; }
.gf-page-hero p{ color:rgba(255,255,255,.9);font-size:1.15rem;max-width:56ch;margin:0; }

/* ---------- CHECKLIST ---------- */
.gf-checklist{ list-style:none;padding:0;margin:1.25rem 0 0;display:grid;gap:.85rem; }
.gf-checklist li{ display:flex;gap:.75rem;align-items:flex-start;font-size:1.02rem; }
.gf-checklist i{ color:var(--bs-primary);font-size:1.2rem;margin-top:2px;flex-shrink:0; }

/* ---------- PROCESS STEPS ---------- */
.gf-steps{ display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;counter-reset:step; }
.gf-step{ position:relative;padding:2rem 1.4rem;border-radius:var(--gf-radius);background:var(--bs-body-bg,#fff);border:1px solid rgba(var(--bs-dark-rgb,15,23,42),.08);transition:transform .3s var(--gf-ease),box-shadow .3s; }
.gf-step:hover{ transform:translateY(-6px);box-shadow:var(--gf-shadow); }
.gf-step::before{ counter-increment:step;content:counter(step);position:absolute;top:-18px;left:1.4rem;width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--bs-primary),var(--bs-warning));color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:1.15rem; }
.gf-step h3{ font-size:1.12rem;font-weight:700;margin:1.1rem 0 .5rem; }
.gf-step p{ color:#4a5563;margin:0;font-size:.96rem;line-height:1.58; }

/* ---------- SPLIT (text + media) ---------- */
.gf-split{ display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center; }
.gf-split-media{ border-radius:var(--gf-radius);overflow:hidden;box-shadow:var(--gf-shadow);aspect-ratio:4/3;background:rgba(var(--bs-primary-rgb),.06); }
.gf-split-media img{ width:100%;height:100%;object-fit:cover;transition:transform .6s var(--gf-ease); }
.gf-split:hover .gf-split-media img{ transform:scale(1.04); }
.gf-bg-soft{ background:rgba(var(--bs-primary-rgb),.045); }

/* subtle placeholder tint so media never flashes stark white while loading */
.gf-feature-media{ background:rgba(var(--bs-primary-rgb),.06); }

/* ---------- RESPONSIVE ---------- */
@media (max-width:991.98px){
  .gf-services-grid > *{ max-width:calc(50% - .8rem); }
  .gf-stats{ grid-template-columns:repeat(2,1fr);gap:2.5rem 1rem;padding:2.25rem 1rem; }
  .gf-stats > div + div::before{ display:none; }
  .gf-feature,.gf-split{ grid-template-columns:1fr; }
  .gf-feature.gf-feature-rev .gf-feature-media{ order:-1; }
  .gf-steps{ grid-template-columns:repeat(2,1fr);row-gap:2.5rem; }
}
@media (max-width:575.98px){
  .gf-services-grid > *{ max-width:100%; }
  .gf-steps{ grid-template-columns:1fr;row-gap:2.5rem; }
  .gf-hero-swiper{ height:clamp(500px,88vh,620px); }
  .gf-hero .swiper-button-next,.gf-hero .swiper-button-prev{ display:none; }
}
@media (prefers-reduced-motion:reduce){
  .gf-hero-slide .gf-hero-img{ transition:none;transform:none; }
  .swiper-slide-active .gf-hero-content > .container > *{ animation:none;opacity:1;transform:none; }
  .gf-hero-scroll{ animation:none; }
}

/* ===== Testimonials slider (second Swiper — social proof + wow) ===== */
.gf-testimonials{ background:linear-gradient(180deg,rgba(var(--bs-primary-rgb),.04),rgba(var(--bs-primary-rgb),.09)); overflow:hidden; }
.gf-testi-swiper{ padding:1.25rem 0 3.75rem; overflow:visible; }
/* Focus the active slide via SCALE + shadow (not opacity — dimming text would
   fail contrast on the peek cards). All testimonial text stays fully readable. */
.gf-testi-swiper .swiper-slide{ width:min(520px,86vw); height:auto; transform:scale(.9); transition:transform .55s var(--gf-ease); }
.gf-testi-swiper .swiper-slide-active{ transform:scale(1); }
.gf-testi-card{ background:#fff; border-radius:var(--gf-radius); box-shadow:0 10px 26px -14px rgba(15,23,42,.35); padding:2.4rem 2.2rem; height:100%; display:flex; flex-direction:column; gap:1.05rem; position:relative; overflow:hidden; transition:box-shadow .55s var(--gf-ease); }
.gf-testi-swiper .swiper-slide-active .gf-testi-card{ box-shadow:var(--gf-shadow-lg); }
.gf-testi-card::before{ content:"\201C"; position:absolute; top:.1rem; right:1.5rem; font-family:Georgia,"Times New Roman",serif; font-size:5.5rem; line-height:1; color:rgba(var(--bs-primary-rgb),.12); pointer-events:none; }
.gf-testi-stars{ color:var(--bs-warning); font-size:1rem; letter-spacing:3px; }
.gf-testi-quote{ font-size:1.1rem; line-height:1.68; color:#2f3945; font-weight:500; flex:1 1 auto; position:relative; z-index:1; }
.gf-testi-author{ display:flex; align-items:center; gap:.9rem; margin-top:.3rem; }
.gf-testi-avatar{ width:54px; height:54px; border-radius:50%; background:linear-gradient(135deg,var(--bs-primary),color-mix(in srgb,var(--bs-primary) 62%,#000)); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:1.05rem; flex:0 0 auto; box-shadow:0 5px 14px rgba(var(--bs-primary-rgb),.38); }
.gf-testi-name{ font-weight:700; color:#1f2937; line-height:1.2; }
.gf-testi-role{ font-size:.85rem; color:#454e5a; }   /* AAA 7:1 on white */
.gf-testi-swiper .swiper-pagination{ bottom:.6rem; position:relative; margin-top:1rem; }
.gf-testi-swiper .swiper-pagination-bullet{ background:var(--bs-primary); opacity:.35; }
.gf-testi-swiper .swiper-pagination-bullet-active{ opacity:1; width:22px; border-radius:5px; }
@media (prefers-reduced-motion:reduce){ .gf-testi-swiper .swiper-slide{ transition:none; } }

/* ============================================================
   ACCESSIBILITY + POLISH PASS — WCAG AA contrast, focus, spacing.
   ============================================================ */
/* Nav links: Bootstrap navbar-dark's muted default (rgba 255/.55) fails AA on
   mid-tone brand colors. Force near-white + bump touch target to >=44px. */
/* Deepen the navbar so white nav text clears AAA (7:1) — a mid-tone --bs-primary
   navbar only gives ~5:1 with white. A deeper bar also reads more premium. */
#lc-header.navbar,#lc-header{ background-color:color-mix(in srgb,var(--bs-primary) 74%,#000) !important; }
#lc-header .navbar-nav .nav-link,
#lc-header .navbar-nav .dropdown-toggle{ color:#fff !important; padding-top:.7rem !important; padding-bottom:.7rem !important; }
#lc-header .navbar-nav .nav-link:hover,
#lc-header .navbar-nav .nav-link:focus-visible,
#lc-header .navbar-nav .dropdown-toggle:hover{ color:#fff !important; }
/* Header CTA: white pill + dark text — bulletproof contrast on any navbar color.
   Higher specificity (a.nav-cta.nav-link) so it beats the partial's inline rule. */
#lc-header .nav-cta,#lc-header a.nav-cta.nav-link{ background:#fff !important; color:#17222f !important; border-color:#fff !important; box-shadow:0 4px 14px rgba(0,0,0,.18); }
#lc-header .nav-cta:hover,#lc-header a.nav-cta.nav-link:hover{ background:#eef2f7 !important; color:#17222f !important; transform:translateY(-2px); }
/* Accent utility buttons (footer etc.): dark text on the RAW accent (amber/gold
   read best with near-black text — never white). Higher specificity so a theme
   .btn-warning{color:#fff} can't win (that caused a 2.53:1 white-on-orange fail). */
.btn-warning,.btn.btn-warning,#lc-footer .btn.btn-warning{ color:#141414 !important; }
/* Saturated-color CTA buttons can't reach AAA 7:1 at small text without muddying
   the accent — so render them as LARGE text (>=18.66px bold), where the AAA
   large-text threshold (4.5:1) applies and every button clears it. */
.gf-btn,.btn-warning,.btn-rose,.btn-amber,.btn-main,.cta-button,#lc-footer .btn,
.forminator-button,.forminator-button-submit,.lt-footer a[style*="lt-terra"],
.forminator-ui .forminator-button,.forminator-ui button.forminator-button-submit{ font-size:1.17rem !important; font-weight:700 !important; }
/* Forminator sets the submit to weight 600 with high specificity — force bold so
   the 18.7px label qualifies as AAA large text (4.5:1). */
.forminator-ui.forminator-custom-form button.forminator-button-submit,
.forminator-ui.forminator-custom-form button.forminator-button{ font-weight:700 !important; }
/* Brand-align Bootstrap's compiled default button colors (were blue #0d6efd) to
   the site's runtime primary so buttons match each brand instead of stock blue. */
.btn-primary{ background:var(--bs-primary) !important; border-color:var(--bs-primary) !important; color:#fff !important; }

/* Testimonials slider: fade the peek-card edges instead of a hard vertical cut. */
.gf-testi-swiper{ -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%); mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%); }
#lc-header .dropdown-menu .dropdown-item{ color:#26303c; }
#lc-header .navbar-nav .nav-link:focus-visible,#lc-header .nav-cta:focus-visible{ outline:3px solid #fff; outline-offset:2px; }

/* Keyboard focus visibility on flare links/controls. */
.gf-service-link:focus-visible,.gf-crumbs a:focus-visible,.gf-hero-scroll:focus-visible{ outline:3px solid var(--bs-primary); outline-offset:3px; border-radius:4px; }
.gf-testi-swiper .swiper-pagination-bullet:focus-visible,.gf-hero .swiper-pagination-bullet:focus-visible,
.gf-hero .swiper-button-next:focus-visible,.gf-hero .swiper-button-prev:focus-visible{ outline:3px solid #fff; outline-offset:2px; }

/* Dark-section muted inline text must stay legible on the dark gradient. */
.gf-niche small,.gf-niche strong,.gf-niche em,.gf-niche .fst-italic,
.gf-cta small,.gf-cta strong,.gf-cta em,.gf-cta .fst-italic,
.gf-page-hero small,.gf-page-hero strong{ color:rgba(255,255,255,.92) !important; }
/* Dark footers (#lc-footer LC partial + <footer>): small print / links must clear AA.
   The disclaimer uses Bootstrap opacity utilities that dim white text below AA. */
#lc-footer .opacity-50,#lc-footer .opacity-75{ opacity:1 !important; }
/* Footer reading text + links → white (AAA on the dark footer). EXCLUDE buttons —
   an <a class="btn …"> must keep its own button text color, not be forced white. */
#lc-footer p,#lc-footer li,#lc-footer small,#lc-footer .small,#lc-footer .text-light,
#lc-footer .fst-italic,#lc-footer strong,
#lc-footer a:not(.btn):not([class*="btn-"]){ color:#fff !important; }
#lc-footer a:not(.btn):hover{ text-decoration:underline !important; }
footer small,footer .fst-italic,footer em i,footer .text-muted,
.site-footer small,.site-footer .fst-italic,
footer strong,footer .small{ color:rgba(255,255,255,.85) !important; }
/* Theme CTA button classes that ship white text on a mid-tone accent → deepen the
   accent so white text clears AA (palette-adaptive). */
.btn-main{ background:color-mix(in srgb,var(--bs-warning) 74%,#000) !important; color:#fff !important; border-color:transparent !important; }
/* Inline-styled theme footer CTA (mid terracotta + white, ~3.7:1) → deepen bg. */
.lt-footer a[style*="lt-terra"]{ background:#9e4e2a !important; color:#fff !important; }
/* Forminator form labels — some form designs ship a too-light gray (~4:1) on a
   tinted form card. Force a dark label that clears AA on any light form bg. */
.forminator-ui label,.forminator-ui .forminator-label,.forminator-label{ color:#393934 !important; }
/* Late-mortgage contact eyebrow: sage on white → deep sage for AAA (7:1). */
.lm-eyebrow{ color:#2c5540 !important; }

/* ---- Legacy (pre-build) content pages: their own button/text tokens miss AA ---- */
.btn-amber{ background:#9a5f1f !important; color:#fff !important; border-color:transparent !important; }
.btn-rose{ background:#9c5347 !important; color:#fff !important; border-color:transparent !important; }
.btn-outline-sage{ color:#3f6b5c !important; border-color:#3f6b5c !important; }
.cta-button{ background:#9e4e2a !important; }
.cta-button,.cta-button span{ color:#fff !important; }
.pi-disclaimer{ color:#565e66 !important; }
/* Probate contact uses var(--probate-text-muted) (defined in head as #6c757d,
   ~4.7:1) — redefine darker for AAA. Harmless on the other sites. */
:root{ --probate-text-muted:#495159; }
/* btn-amber is a DEEP amber (#9a5f1f) → white text (5.2:1). Beat the co-applied
   .btn-warning dark-text rule (which would make it dark-on-dark, 3.5:1). */
#lc-footer .btn.btn-amber,.btn.btn-amber{ color:#fff !important; }
.text-secondary.fw-semibold{ color:#2c5540 !important; } /* legacy sage eyebrow → AAA on white */
.frame-inner > span{ color:#465562 !important; }         /* legacy muted tagline on cream */

/* Breathing + typographic polish (lift from "average"). */
.gf-section-head{ margin-bottom:3.25rem; }
.gf-section-title{ letter-spacing:-.015em; }
.gf-service-card{ padding:2.15rem 1.95rem; }
.gf-service-card h3{ letter-spacing:-.01em; }
.gf-hero-content{ padding-block:clamp(1.5rem,4vh,3rem); }

/* Touch targets — primary interactive elements >=44px tap area (WCAG 2.5.5 AAA). */
.gf-btn,.btn-main,.cta-button,.btn-rose,.btn-amber,#lc-footer .btn{ min-height:48px; display:inline-flex; align-items:center; justify-content:center; }
.forminator-button-submit{ min-height:48px; }
#lc-header .nav-cta,#lc-header a.nav-cta.nav-link{ min-height:44px; display:inline-flex; align-items:center; }
#lc-header .navbar-nav .nav-link,#lc-header .navbar-nav .dropdown-toggle{ min-height:44px; display:flex; align-items:center; }
#lc-header .dropdown-menu .dropdown-item{ min-height:40px; display:flex; align-items:center; }
.gf-service-link{ min-height:40px; display:inline-flex; align-items:center; padding:.35rem 0; }
.gf-hero .swiper-pagination-bullet,.gf-testi-swiper .swiper-pagination-bullet{ margin:0 6px !important; }
.gf-hero-scroll{ padding:8px; }
