/* Accessibility layer (WCAG 2.2 AA), ring 1. One file, loaded on every page.
   Rule of thumb: brand gold #B79162 stays a FILL. Text sitting on gold becomes near-black (--cta-ink),
   gold used as TEXT on light backgrounds becomes bronze (--a11y-bronze). Decorative icons/stars are never recolored. */
:root {
  --cta-ink: #131313;          /* text on gold fills: 6.4:1 */
  --a11y-bronze: #8A6534;      /* gold-as-text on white / light grey: 5.3:1 / 4.9:1 */
  --a11y-gold-on-dark: #D4B88F;/* gold-as-text on dark cards: 9.8:1 */
  --a11y-link: #8A6534;        /* in-paragraph link colour */
  --a11y-body-ink: #1a1a1a;    /* body text in paragraphs that carry a link (needs >=3:1 against the link colour) */
}

/* ---- Skip link ---- */
.skip-link {
  position: fixed; left: 8px; top: -100px; z-index: 100000;
  background: #000; color: #fff; padding: 12px 18px; border-radius: 6px;
  font-weight: 700; font-size: 1rem; text-decoration: none;
}
.skip-link:focus, .skip-link:focus-visible { top: 8px; outline: 3px solid #fff; outline-offset: 2px; }
main:focus { outline: none; }

/* ---- Text on gold fills -> near-black ---- */
.pricing-bar-badge, .book-hero :is(h1, p, .book-eyebrow, .book-sub, span, strong):not(i, svg, [class*="star"]),
[style*="background:var(--primary)"] :is(h1, h2, h3, p, span, strong, a, div):not(i, svg, [class*="star"], [class*="fa-"]),
[style*="background: var(--primary)"] :is(h1, h2, h3, p, span, strong, a, div):not(i, svg, [class*="star"], [class*="fa-"]) {
  color: var(--cta-ink) !important;
}
section[style*="background:var(--primary)"], a[style*="background:var(--primary)"], a[style*="background:var(--cta)"],
div[style*="background:var(--primary)"] { color: var(--cta-ink) !important; }
a[style*="background:var(--primary)"], a[style*="background:var(--cta)"] { color: var(--cta-ink) !important; }
/* faq hero band: the rating line sits on gold too */
section[style*="background:var(--primary)"] .hero-rating-text, section[style*="background:var(--primary)"] strong { color: var(--cta-ink) !important; }

/* ---- Gold used as TEXT on light backgrounds -> bronze ---- */
.hiw-eyebrow:not(.cro-hiw-dark *, [data-section-band="dark"] *), .rev-card-footer :is(span, div, p, strong, cite),
.charity-partner, .text-primary:not([class*="dark"] *),
.bsb-card h3, .bsb-contact h3, .bsb-phone,
.pricing-crumb a, .pricing-bar-col--pop :is(.pricing-bar-price, .pricing-bar-label), .pbc-name,
.local-note-label, .neighborhoods-block .block-label, .nearby-all-link, .google-badge-score:not([class*="dark"] *),
main p.mb-3.text-center[style*="color:var(--primary)"] {
  color: var(--a11y-bronze) !important;
}
.pricing-crumb a { text-decoration: underline !important; }  /* breadcrumb is a nav link, not body copy */
.rev-card-footer :is(i, svg, [class*="star"]) { color: inherit; }

/* ---- Gold text on dark cards -> lighter gold ---- */
.t-card .t-service { color: var(--a11y-gold-on-dark) !important; }

/* ---- Faint greys -> readable greys ---- */
.cu-info-label, label[for="cu-message"] > span, .svc-areas-label, .svc-areas-label a { color: #595959 !important; }
main p.mt-2[style*="color:#999"], main p.mb-10.text-center, main .mb-10.text-center.text-jd-muted { color: #595959 !important; }
main p.mt-3[style*="rgba(255,255,255,0.4)"], main p.mt-3[style*="rgba(255,255,255,0.35)"], section p.mt-3[style*="rgba(255,255,255,0.35)"] { color: #B3B3B3 !important; }

/* ---- Footer ---- */
.footer-license-tagline { color: #FF8A80 !important; }
.footer-bottom-extra a[rel~="noopener"], .footer-siteby a, .footer-credits a { color: #9A9A9A !important; }
a[rel="noopener noreferrer"][target="_blank"][data-astro-cid-sz7xmlte] { color: #9A9A9A !important; }
.cc-btn-secondary, #cc-reject-btn, #cc-accept-btn-2 { color: #6F5027 !important; }

/* ---- Footer link row: wrap cleanly, no orphan dot ---- */
.footer-bottom-links { column-gap: 0.5rem; row-gap: 0.4rem; }
@media (max-width: 860px) {
  .footer-bottom-links .sep { display: none; }
  .footer-bottom-links { column-gap: 1.25rem; justify-content: center; }
  .footer-bottom-links a, .footer-bottom-links .cc-prefs-link { padding: 4px 0; }
}

/* ---- In-paragraph links (replaces "same colour as text", which fails WCAG 1.4.1) ----
   Colour differs from the text by >=3:1, >=4.5:1 on the background, no underline at rest,
   darker bronze on hover, focus ring on keyboard focus (no underline, Brett 2026-10-23). Buttons, nav, footer, and link-cards are untouched. */
main :is(p, li, td, dd):has(a):not(:is(.hero-actions, .city-hero-actions, [class*="btn"], [class*="cta"], [class*="dark"], .loc-md-section:nth-child(even)) *) { color: var(--a11y-body-ink) !important; }
main :is(p, li, td, dd) a:not([class*="btn"], [class*="button"], [class*="cta"], [class*="card"], [role="button"], .cu-info-value, .cmc-phone, .cmc-email, :has(img, svg)):not(:is(nav, header, footer, button, [class*="dark"], .t-card, .loc-md-section:nth-child(even)) *) {
  color: var(--a11y-link) !important;
  text-decoration: none;
}
main :is(p, li, td, dd) a:not([class*="btn"], [class*="button"], [class*="cta"], [class*="card"], [role="button"], .cu-info-value, .cmc-phone, .cmc-email, :has(img, svg)):not(:is(nav, header, footer, button, [class*="dark"], .t-card, .loc-md-section:nth-child(even)) *):is(:hover, :focus-visible) {
  /* Brett 2026-10-23: no underline at rest, hover or focus. Hover shifts to a darker bronze
     (#6F5027, 7.3:1 on white); keyboard focus keeps a visible ring. */
  text-decoration: none;
  color: #6F5027 !important;
}
main :is(p, li, td, dd) a:focus-visible { outline: 2px solid #6F5027; outline-offset: 2px; border-radius: 2px; }

/* Dark sections: light gold on the dark band. Light text and a light link cannot reach 3:1 apart, so these links keep an underline at rest (the one exception to the no-underline rule). */
.location-md .loc-md-section:nth-child(even) p a { color: var(--a11y-gold-on-dark) !important; text-decoration: underline; }

/* Footer: the "Licensed & Insured, Serving ..." note sits on its own line, so the dot before it is dropped (no dot ends a line). */
.footer-bottom-links > .sep:nth-last-child(2) { display: none; }
.footer-bottom-links > .sep:nth-last-child(2) + span { flex-basis: 100%; }

/* ---- Cookie banner links: same rule as body links (follow-up 2026-10-10) ----
   Sentence text #1a1a1a vs bronze link = 3.4:1, bronze on white = 5.3:1. No underline at rest,
   underline on hover and keyboard focus. Hit area padded to 24px without shifting layout.
   Selectors lead with #cc-wrap #cc-bar (two ids) so no later banner/page rule can out-rank them. */
#cc-wrap #cc-bar #cc-bar-text, #cc-wrap #cc-bar #cc-bar-text :not(a, .cc-link-btn, .cc-sep),
#cc-wrap #cc-bar #cc-gpc-notice, #cc-wrap #cc-bar #cc-gpc-notice :not(a) { color: var(--a11y-body-ink, #1a1a1a) !important; }
#cc-wrap #cc-bar #cc-bar-text a, #cc-wrap #cc-bar #cc-gpc-notice a, #cc-wrap #cc-bar #cc-bar-text #cc-manage-btn {
  color: var(--a11y-link, #8A6534) !important;
  text-decoration: none !important;
  display: inline-block; min-height: 24px; box-sizing: border-box;
  padding-block: 1px !important; margin-block: -1px !important; vertical-align: baseline;
}
#cc-wrap #cc-bar #cc-bar-text a:is(:hover, :focus, :focus-visible), #cc-wrap #cc-bar #cc-gpc-notice a:is(:hover, :focus, :focus-visible),
#cc-wrap #cc-bar #cc-bar-text #cc-manage-btn:is(:hover, :focus, :focus-visible) {
  text-decoration: none !important;
  color: #6F5027 !important;
}
#cc-wrap #cc-bar a:focus-visible, #cc-wrap #cc-bar #cc-manage-btn:focus-visible { outline: 2px solid #6F5027; outline-offset: 2px; }

/* ---- Breadcrumb link: 24px hit area, no layout shift ---- */
.pricing-crumb a { display: inline-block; min-height: 24px; box-sizing: border-box; padding-block: 1px; margin-block: -1px; }
