/* ==========================================================================
   Burns Landscaping — Accessibility & shared-chrome overrides
   Loaded LAST on every page (after shared.css / inline page styles).
   Covers: WCAG 2.1 AA colour contrast, visible focus, skip link, motion
   pause control, reduced-motion, mobile nav (also for index.html which
   does not load shared.css), form status messages, legal page prose.
   ========================================================================== */

:root {
  --stone-text: #5E4F38;              /* stone, darkened for text on cream/parch (>6:1) */
  --gold-text:  #7E5F3B;              /* gold, darkened for text on cream (5.2:1) */
  --dim-text:   rgba(250,250,248,0.62); /* muted text on dark (≈7:1) */
  --dim-text-2: rgba(250,250,248,0.56);
  --focus:      #D9B27E;
}

/* --------------------------------------------------------------------------
   Skip link
   -------------------------------------------------------------------------- */
.skip-link {
  position: absolute; left: 1rem; top: -100px; z-index: 10000;
  background: var(--gold, #B8966E); color: #090F09;
  font-family: 'Outfit', system-ui, sans-serif; font-size: 0.85rem; font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase; text-decoration: none;
  padding: 0.8rem 1.2rem; border-radius: 2px;
  transition: top 0.2s ease;
}
.skip-link:focus, .skip-link:focus-visible { top: 1rem; outline: 3px solid #090F09; outline-offset: 2px; }

/* --------------------------------------------------------------------------
   Visible keyboard focus (mouse clicks keep the original quiet look)
   -------------------------------------------------------------------------- */
a:focus-visible, button:focus-visible, [tabindex]:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible {
  outline: 2px solid var(--focus) !important;
  outline-offset: 3px;
  box-shadow: 0 0 0 5px rgba(9,15,9,0.85);
  border-radius: 2px;
}
.fi:focus-visible, .fta:focus-visible, .fsel:focus-visible {
  outline-offset: 0;
  box-shadow: 0 0 0 4px rgba(217,178,126,0.25) !important;
}
.btn-gold:focus-visible, .fsub:focus-visible, .mobile-cta-btn:focus-visible {
  outline-color: #FAFAF8 !important;
}
main:focus { outline: none; }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* --------------------------------------------------------------------------
   Colour contrast fixes (AA, 4.5:1 for body text)
   -------------------------------------------------------------------------- */
/* Footer */
.f-tagline            { color: var(--dim-text-2) !important; }
.f-links a            { color: var(--dim-text) !important; }
.f-links a:hover,
.f-links a:focus-visible { color: #FAFAF8 !important; }
.f-soc                { color: var(--dim-text) !important; }
.f-copy               { color: var(--dim-text-2) !important; }
.f-card               { color: var(--dim-text) !important; }
.taskgrid-credit      { color: var(--dim-text-2) !important; }
.taskgrid-credit a    { color: var(--dim-text) !important; text-decoration: underline; text-underline-offset: 3px; }
.f-legal              { display: flex; flex-wrap: wrap; gap: 0.4rem 1.4rem; margin-top: 1.1rem; }
.f-legal a            { font-size: 0.78rem; font-weight: 300; color: var(--dim-text); text-decoration: none; letter-spacing: 0.02em; }
.f-legal a:hover, .f-legal a:focus-visible { color: #FAFAF8; text-decoration: underline; text-underline-offset: 3px; }
.f-col h3             { font-size: 0.66rem; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; color: var(--gold, #B8966E); margin-bottom: 1.4rem; font-family: 'Outfit', system-ui, sans-serif; }
.f-links span         { font-size: 0.875rem; font-weight: 300; color: var(--dim-text-2); }

/* Eyebrows / small stone text on cream */
.eyebrow                  { color: var(--stone-text) !important; }
.eyebrow--gold            { color: var(--gold, #B8966E) !important; }   /* only used on dark sections */
.eyebrow--gold::before    { background: var(--gold, #B8966E) !important; }
.bb-intro-zero small,
.scol h3, .comp-type, .value-title { color: var(--stone-text) !important; }
.comp-type--bb            { color: var(--gold, #B8966E) !important; }
.spot--ba .spot-eyebrow   { color: var(--gold-text) !important; }
.spot--ba .spot-eyebrow::before { background: var(--gold-text) !important; }
.pillar-num               { color: rgba(250,250,248,0.5) !important; }   /* 64px display numbers, ≥3:1 */
.how-step-n               { color: var(--stone, #8C7B5E) !important; }
.comp-bar-label           { color: #5A5A54 !important; }
.comp-bar-label--bb       { color: rgba(250,250,248,0.72) !important; }
.svc-sel-label            { color: rgba(250,250,248,0.62) !important; font-size: 0.6rem; font-weight: 500; letter-spacing: 0.2em; text-transform: uppercase; }

/* Marquee (index) — darker band so light text passes */
.marquee              { background: #6F6049 !important; }
.mq-item              { color: rgba(250,250,248,0.94) !important; }

/* Form labels & placeholders */
.fl                   { color: rgba(250,250,248,0.72) !important; }
.fi::placeholder, .fta::placeholder { color: rgba(250,250,248,0.5) !important; }
.fsel option          { color: #1A1A18; background: #FAFAF8; }

/* Portfolio filter + captions */
.f-btn                { color: rgba(250,250,248,0.66) !important; border-color: rgba(250,250,248,0.18) !important; }
.f-btn:hover, .f-btn.active, .f-btn[aria-pressed="true"] { color: var(--gold, #B8966E) !important; border-color: var(--gold, #B8966E) !important; }
.chapter-cta-text     { color: var(--dim-text) !important; }

/* Placeholder content boxes (About / Contact until real copy is supplied) */
.ph-label             { color: rgba(217,178,126,0.9) !important; }
.ph-label--dark       { color: rgba(26,26,24,0.85) !important; }

/* About page (July 2026 content with inline colours) */
.pillar p             { color: rgba(250,250,248,0.66) !important; }
.about-area-map span  { color: var(--stone-text) !important; }

/* Home stat caption (mobile contrast) */
.billing-n small        { color: rgba(217,178,126,0.95) !important; }

/* Balanced-billing service toggles */
.svc-toggle-name      { color: rgba(250,250,248,0.72) !important; }

/* Images never stay invisible if a JS 'loaded' hook is missing */
img[loading]          { opacity: 1 !important; }

/* Text in links/buttons must not rely on colour alone inside prose */
.legal a, .cd-value a,
main a:not([class]) { text-decoration: underline; text-underline-offset: 3px; }

/* --------------------------------------------------------------------------
   Motion pause control (WCAG 2.2.2 Pause, Stop, Hide)
   -------------------------------------------------------------------------- */
#motion-toggle {
  position: fixed; left: 1rem; bottom: 1rem; z-index: 9990;
  display: inline-flex; align-items: center; gap: 0.5rem;
  background: rgba(9,15,9,0.82); color: rgba(250,250,248,0.9);
  border: 1px solid rgba(250,250,248,0.25); border-radius: 999px;
  padding: 0.55rem 0.95rem; cursor: pointer;
  font-family: 'Outfit', system-ui, sans-serif; font-size: 0.72rem; font-weight: 500;
  letter-spacing: 0.08em; text-transform: uppercase;
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  transition: background 0.3s, border-color 0.3s;
}
#motion-toggle:hover { border-color: var(--gold, #B8966E); background: rgba(9,15,9,0.95); }
#motion-toggle svg { flex-shrink: 0; }
@media (max-width: 600px) {
  #motion-toggle { padding: 0.55rem 0.7rem; font-size: 0.66rem; }
}
@media print { #motion-toggle, .skip-link, #scroll-progress, #page-overlay, .nav-toggle { display: none !important; } }

/* When motion is paused (via the toggle or the OS reduced-motion setting),
   every CSS animation halts and reveal transitions become instant. */
.motion-paused *, .motion-paused *::before, .motion-paused *::after {
  animation-play-state: paused !important;
  transition-duration: 0.01ms !important;
  transition-delay: 0ms !important;
  scroll-behavior: auto !important;
}
.motion-paused .li, .motion-paused .rf, .motion-paused .rs, .motion-paused .rsc,
.motion-paused .img-reveal, .motion-paused .rotate-in, .motion-paused .stagger-child {
  opacity: 1 !important; transform: none !important;
}
.motion-paused #mouse-glow, .motion-paused .hero-canvas, .motion-paused canvas.particles { display: none !important; }
.motion-paused .marquee-track { animation: none !important; transform: none !important; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    transition-delay: 0ms !important;
  }
  .li, .rf, .rs, .rsc, .img-reveal, .rotate-in, .stagger-child { opacity: 1 !important; transform: none !important; }
  .marquee-track { animation: none !important; }
  #mouse-glow, .hero-canvas { display: none !important; }
}

/* --------------------------------------------------------------------------
   Form status messages (shared handler in site.js)
   -------------------------------------------------------------------------- */
.form-error {
  background: rgba(220,80,80,0.12); border: 1px solid rgba(220,80,80,0.35); color: #F0A0A0;
  padding: 0.8rem 1rem; border-radius: 4px; font-size: 0.85rem; line-height: 1.5;
  font-family: 'Outfit', system-ui, sans-serif; margin-bottom: 0.25rem;
}
.form-error:focus { outline: 2px solid #F0A0A0; outline-offset: 2px; }
.form-success {
  background: rgba(91,168,122,0.12); border: 1px solid rgba(91,168,122,0.35); color: #9ADBB4;
  padding: 1.25rem 1.5rem; border-radius: 4px; font-size: 0.92rem; line-height: 1.6;
  font-family: 'Outfit', system-ui, sans-serif;
}
.form-success strong { display: block; margin-bottom: 0.25rem; color: #FAFAF8; }
.form-success:focus { outline: 2px solid #9ADBB4; outline-offset: 2px; }
.req { color: #D9B27E; margin-left: 0.2rem; }
.fconsent { margin: 0.35rem 0 0.9rem; line-height: 1.6; color: rgba(250,250,248,0.7); }
.fconsent a { color: #D9B27E; text-decoration: underline; text-underline-offset: 3px; }
.fhint { font-size: 0.72rem; color: var(--dim-text-2); margin-top: -0.4rem; margin-bottom: 0.5rem; font-family: 'Outfit', system-ui, sans-serif; }

/* --------------------------------------------------------------------------
   Mobile navigation — a11y additions over the CSS checkbox menu in shared.css
   (#nav-cb:checked drives the slide-in; site.js upgrades the labels to buttons)
   -------------------------------------------------------------------------- */
.nav-toggle, .mobile-nav-close { min-width: 44px; min-height: 44px; }
.nav-toggle { border-color: rgba(255,255,255,0.22) !important; }
.mobile-nav-close { border-color: rgba(255,255,255,0.18) !important; color: #FAFAF8; }
.mobile-nav {
  visibility: hidden;
  transition: transform 0.48s cubic-bezier(0.16,1,0.3,1), visibility 0s linear 0.48s !important;
}
#nav-cb:checked ~ .mobile-nav, .mobile-nav.open { visibility: visible; transition-delay: 0s !important; }
.mobile-nav-links li a { color: rgba(250,250,248,0.78) !important; }
.mobile-nav-links li a[aria-current="page"] { color: var(--gold, #B8966E) !important; }
.mobile-nav nav { flex: 1; }
/* Inner <nav> elements must not inherit the fixed site-header styling */
main nav:not(.legal-toc), .mobile-nav nav {
  position: static !important; inset: auto !important; display: block !important;
  padding: 0; border: 0 !important; background: transparent !important;
  z-index: auto !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
  transition: none !important; box-shadow: none !important;
}
.mobile-nav nav { flex: 1; }

/* --------------------------------------------------------------------------
   Legal / policy pages
   -------------------------------------------------------------------------- */
.legal { background: #F5F2ED; color: #1A1A18; padding: 5rem 0 6rem; }
.legal .container { max-width: 820px; }
.legal-meta { font-family: 'Outfit', system-ui, sans-serif; font-size: 0.78rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--stone-text); margin-bottom: 2.5rem; }
.legal h2 { font-family: 'Cormorant Garamond', Georgia, serif; font-size: clamp(1.7rem, 2.6vw, 2.3rem); font-weight: 400; line-height: 1.15; margin: 3rem 0 1rem; color: #1A1A18; }
.legal h2:first-of-type { margin-top: 0; }
.legal h3 { font-family: 'Outfit', system-ui, sans-serif; font-size: 1rem; font-weight: 600; margin: 1.75rem 0 0.6rem; color: #2C4A2C; }
.legal p, .legal li { font-family: 'Outfit', system-ui, sans-serif; font-size: 1rem; font-weight: 300; line-height: 1.8; color: #2A2A27; }
.legal p { margin-bottom: 1.1rem; }
.legal ul { padding-left: 1.4rem; margin-bottom: 1.25rem; }
.legal li { margin-bottom: 0.45rem; }
.legal a { color: #2C4A2C; font-weight: 400; }
.legal a:hover, .legal a:focus-visible { color: #4A7459; }
.legal .legal-toc { position: static; display: block; z-index: auto; background: #EAE6DF; border-left: 3px solid var(--gold, #B8966E); padding: 1.25rem 1.5rem; margin-bottom: 2.5rem; border-radius: 0 4px 4px 0; }
.legal .legal-toc ul { list-style: none; padding: 0; margin: 0; columns: 2; column-gap: 2rem; }
.legal .legal-toc li { margin: 0.25rem 0; break-inside: avoid; }
.legal .legal-toc a { text-decoration: none; }
.legal .legal-toc a:hover { text-decoration: underline; }
.legal .legal-box { background: #fff; border: 1px solid #D9D3C7; border-radius: 4px; padding: 1.25rem 1.5rem; margin: 1.25rem 0 1.75rem; }
.legal .legal-box p:last-child { margin-bottom: 0; }
@media (max-width: 600px) {
  .legal { padding: 3.5rem 0 4rem; }
  .legal .legal-toc ul { columns: 1; }
}

/* --------------------------------------------------------------------------
   FAQ sections (services, balanced-billing) — native <details>, keyboard-ready
   -------------------------------------------------------------------------- */
.faq { background: #EAE6DF; color: #1A1A18; padding: 7rem 0; }
.faq .container { max-width: 900px; }
.faq .sec-h { font-size: clamp(2rem, 3.2vw, 3.2rem); }
.faq-list { margin-top: 2.5rem; border-top: 1px solid rgba(26,26,24,0.14); }
.faq details { border-bottom: 1px solid rgba(26,26,24,0.14); }
.faq summary {
  cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 1.5rem;
  padding: 1.3rem 0.25rem; font-family: 'Cormorant Garamond', Georgia, serif; font-size: 1.35rem; font-weight: 500; line-height: 1.3; color: #1A1A18;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: '+'; flex-shrink: 0; width: 30px; height: 30px; border: 1px solid rgba(26,26,24,0.25); border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center; font-family: 'Outfit', system-ui, sans-serif; font-size: 1.1rem; color: #5E4F38;
  transition: transform 0.25s ease, background 0.25s ease;
}
.faq details[open] summary::after { content: '−'; background: #5E4F38; color: #FAFAF8; border-color: #5E4F38; }
.faq summary:hover { color: #2C4A2C; }
.faq details p { font-family: 'Outfit', system-ui, sans-serif; font-size: 1rem; font-weight: 300; line-height: 1.8; color: #2A2A27; padding: 0 0.25rem 1.6rem; max-width: 780px; margin: 0; }
@media (max-width: 600px) { .faq { padding: 4.5rem 0; } .faq summary { font-size: 1.15rem; } }

/* --------------------------------------------------------------------------
   In-content links between pages (service cards, FAQ answers, body copy)
   -------------------------------------------------------------------------- */
.tlink { color: var(--gold, #B8966E); text-decoration: underline; text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
.tlink:hover, .tlink:focus-visible { color: #FAFAF8; }
.tlink--dk, .faq details p a { color: var(--gold-text); text-decoration: underline; text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
.tlink--dk:hover, .tlink--dk:focus-visible, .faq details p a:hover, .faq details p a:focus-visible { color: #2C4A2C; }
.hlink { color: inherit; text-decoration: none; }
.hlink:hover, .hlink:focus-visible { text-decoration: underline; text-underline-offset: 0.18em; text-decoration-thickness: 1px; }
.sec-more { margin-top: 2.5rem; text-align: center; font-size: 0.95rem; font-weight: 300; }
.sfam-block[id], .slist-section[id] { scroll-margin-top: 80px; }

/* Seasonal callout under the homepage hero */
.season-band { background: #0E1A0E; border-top: 1px solid rgba(184,150,110,0.28); border-bottom: 1px solid rgba(184,150,110,0.28); padding: 1.15rem 0; }
.season-band-in { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 1.75rem; }
.season-band-tag { font-size: 0.68rem; font-weight: 500; letter-spacing: 0.2em; text-transform: uppercase; color: var(--gold, #B8966E); }
.season-band p { flex: 1 1 320px; margin: 0; font-size: 0.95rem; font-weight: 300; line-height: 1.6; color: rgba(250,250,248,0.82); }
.season-band a { font-size: 0.92rem; font-weight: 400; white-space: nowrap; }

/* Service-area strip on the homepage */
.areas-strip { background: #0E1A0E; padding: 6rem 0; }
.areas-h { font-family: 'Cormorant Garamond', Georgia, serif; font-size: clamp(2rem, 3.2vw, 3.2rem); font-weight: 300; line-height: 1.08; letter-spacing: -0.02em; color: #FAFAF8; margin-bottom: 1rem; }
.areas-h em { font-style: italic; color: var(--gold, #B8966E); }
.areas-sub { font-size: 0.97rem; font-weight: 300; line-height: 1.75; color: rgba(250,250,248,0.7); max-width: 560px; margin-bottom: 2.25rem; }
.areas-links { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.areas-links a { font-size: 0.9rem; font-weight: 300; color: rgba(250,250,248,0.86); text-decoration: none; padding: 0.55rem 1.05rem; border: 1px solid rgba(184,150,110,0.32); border-radius: 2px; transition: background 0.3s, color 0.3s, border-color 0.3s; }
.areas-links a:hover, .areas-links a:focus-visible { background: var(--gold, #B8966E); border-color: var(--gold, #B8966E); color: #0A0F0A; }
.areas-links a.areas-all { color: var(--gold, #B8966E); }
@media (max-width: 600px) { .areas-strip { padding: 4rem 0; } }
