/* /opt/varelec/shared/a11y.css — Accessibility enhancements (v54)
   Chargé par les 3 apps via sync-shared.sh */

/* ── Focus visible (keyboard navigation WCAG 2.1 AA) ── */
:focus-visible {
  outline: 2px solid #2563eb;
  outline-offset: 2px;
  border-radius: 4px;
}

/* Don't double-outline when browser already provides its own */
button:focus:not(:focus-visible),
a:focus:not(:focus-visible),
input:focus:not(:focus-visible) {
  outline: none;
}

/* ── Skip-to-content link (first thing for screen readers/keyboards) ── */
.skip-link {
  position: absolute;
  top: -40px;
  left: 0;
  background: #2563eb;
  color: white;
  padding: 8px 16px;
  z-index: 10000;
  text-decoration: none;
  transition: top 0.2s;
}
.skip-link:focus {
  top: 0;
}

/* ── Screen reader only text ── */
.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;
}

/* ── Respect prefers-reduced-motion ── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ── Higher contrast focus on interactive chat buttons ── */
.nav-tab:focus-visible,
.cat-btn:focus-visible,
.btn-cart:focus-visible,
.cart-pay-btn:focus-visible,
.qa-btn:focus-visible,
.prod:focus-visible {
  outline: 3px solid #f59e0b;
  outline-offset: 3px;
}

/* ── Ensure minimum tap target 44×44px (mobile) per WCAG 2.5.5 ── */
@media (hover: none) and (pointer: coarse) {
  button, a, [role="button"], input[type="submit"] {
    min-height: 44px;
    min-width: 44px;
  }
}

/* ── Prod card image : maintain aspect-ratio on skeleton ── */
.prod-img {
  aspect-ratio: 1 / 1;
  background: linear-gradient(90deg, #f1f5f9 0%, #e2e8f0 50%, #f1f5f9 100%);
  background-size: 200% 100%;
}
[aria-busy="true"] .prod-img {
  animation: skeleton-pulse 1.2s ease-in-out infinite;
}
@keyframes skeleton-pulse {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ── aria-live region styling (when visible) ── */
[aria-live="polite"], [aria-live="assertive"] {
  /* Hidden visually but announced by SR */
}
[aria-live].visible {
  display: block;
}

/* ── Error / status messages ── */
[role="alert"] {
  background: #fee2e2;
  color: #991b1b;
  padding: 12px 16px;
  border-left: 4px solid #dc2626;
  border-radius: 4px;
  margin: 12px 0;
}
[role="status"] {
  background: #dbeafe;
  color: #1e40af;
  padding: 12px 16px;
  border-left: 4px solid #2563eb;
  border-radius: 4px;
  margin: 12px 0;
}

/* ── Link underlines (avoid color-only distinction) ── */
p a, .prose a {
  text-decoration: underline;
  text-underline-offset: 2px;
}
