/* dc-a11y.css — accessibility basics shared by every page (loaded last).
   Skip link, clearly visible keyboard focus, respect for "reduce motion", and a minimum touch size for the small icon buttons. */
.dc-skip { position: absolute; left: 8px; top: -60px; z-index: 3000; background: #0f172a; color: #fff; padding: 10px 16px; border-radius: 0 0 8px 8px; font-weight: 600; text-decoration: none; transition: top .15s; }
.dc-skip:focus { top: 0; color: #fff; outline: 3px solid #fbbf24; outline-offset: 2px; }
main:focus { outline: none; }

a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
    outline: 3px solid #2563eb; outline-offset: 2px; box-shadow: none;
}
.btn:focus-visible, .form-control:focus-visible, .form-select:focus-visible, .form-check-input:focus-visible { outline: 3px solid #2563eb; outline-offset: 2px; }

/* Icon-only buttons are easy to miss with a thumb: at least 36 px square */
.btn-sm.btn-link, .btn-sm[aria-label] { min-width: 36px; min-height: 36px; }

/* Text that is only for screen readers */
.visually-hidden-focusable:not(:focus):not(:focus-within) { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
    .page-fade-in { animation: none !important; }
}
@media (forced-colors: active) {
    .badge, .dc-chip { border: 1px solid CanvasText; }
}
