/* ──────────────────────────────────────────────────────────────────────────
   Accessibility (Phase 6D). Skip-link + :focus-visible are ALWAYS active. The
   reduced-motion block is an additive accommodation — the default (no-preference)
   render is byte-for-byte unchanged (R1, sanctioned by docs/06). Enqueued LAST so
   it wins the cascade.
   ────────────────────────────────────────────────────────────────────────── */

/* ── Skip to content ── */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100000;
  background: var(--color-text);
  color: #fff;
  padding: 12px 20px;
  border-radius: 0 0 8px 0;
  font-family: var(--font-body);
  font-size: 13px;
  letter-spacing: 1px;
  text-transform: uppercase;
  text-decoration: none;
}
.skip-link:focus { left: 0; }

/* ── Keyboard focus ring (on-brand; mouse users keep the clean look) ── */
:focus-visible {
  outline: 2px solid var(--color-text);
  outline-offset: 3px;
  border-radius: 2px;
}
.primary-btn:focus-visible,
.secondary-btn:focus-visible,
.wa-btn:focus-visible,
.search-toggle:focus-visible,
.burger:focus-visible { outline-offset: 4px; }
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 2px solid var(--color-text);
  outline-offset: 1px;
}
:focus:not(:focus-visible) { outline: none; }

/* ── Custom cursor OFF site-wide (client request 2026-06-03) ──
   Remove the prototype's circular custom cursor and restore the native pointer
   everywhere. hero.js still adds .has-custom-cursor on the home page (which base.css
   maps to cursor:none) — these always-on rules hide the circle element and, via
   `revert`, restore each element's NATIVE UA cursor (hand on links, text on inputs,
   default elsewhere), overriding base.css. a11y.css is enqueued last so it wins. */
.cursor,
#custom-cursor { display: none !important; }
.has-custom-cursor,
.has-custom-cursor * { cursor: revert !important; }

/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  /* Custom cursor off, native pointer back. */
  .cursor,
  #custom-cursor { display: none !important; }
  .has-custom-cursor,
  .has-custom-cursor * { cursor: auto !important; }
  /* Stop the named infinite loops explicitly. */
  .pv2-scroll-cue,
  .pv2-scroll-dots,
  .ab-hero-scroll,
  [class*="pulse"],
  [class*="fc-"] { animation: none !important; }
  /* Reveal targets whose HIDDEN state is a CSS default (not applied by JS) would
     stay invisible when the GSAP reveal is skipped under reduced motion — force
     them visible (Phase 6 audit M1: the home collection carousel + a few labels). */
  .card,
  .cat-panel .cta,
  .b2b-service-link,
  .b2b-why-img {
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
  }
}
