/**
 * Acessibilidade compartilhada — WCAG 2.1 AA + eMAG.
 * Preferências: data-a11y-font no <html> e classe a11y-high-contrast.
 */

.a11y-skip-link {
    position: absolute;
    left: 0.75rem;
    top: -100px;
    z-index: 20000;
    padding: 0.65rem 1rem;
    background: #0f172a;
    color: #fff;
    font-weight: 700;
    border-radius: 0 0 8px 8px;
    text-decoration: none;
}

.a11y-skip-link:focus,
.a11y-skip-link:focus-visible {
    top: 0;
    color: #fff;
    outline: 3px solid #facc15;
    outline-offset: 2px;
}

.sr-only,
.visually-hidden {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

:focus-visible {
    outline: 3px solid #2563eb;
    outline-offset: 2px;
}

.app-navbar :focus-visible,
.a11y-header-btn:focus-visible {
    outline: 3px solid #facc15;
    outline-offset: 2px;
}

.btn:focus:not(:focus-visible),
.nav-link:focus:not(:focus-visible),
a:focus:not(:focus-visible) {
    outline: none;
}

html[data-a11y-font="lg"] {
    font-size: 112.5%;
}

html[data-a11y-font="xl"] {
    font-size: 125%;
}

.a11y-header-btn {
    min-width: 2.25rem;
    min-height: 2.25rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    border-radius: 8px;
}

.a11y-header-btn .fa-universal-access {
    font-size: 1.15rem;
}

.a11y-header-btn-standalone {
    position: fixed;
    top: 0.75rem;
    right: 0.75rem;
    z-index: 1080;
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.18);
}

.a11y-panel {
    min-width: 280px;
    max-width: 360px;
    white-space: normal;
}

.a11y-panel .a11y-panel-title {
    font-size: 1rem;
    font-weight: 700;
    color: #0f172a;
}

.a11y-panel .a11y-panel-help {
    font-size: 0.85rem;
    color: #334155;
}

.a11y-font-group .btn,
.a11y-contrast-btn {
    font-weight: 600;
}

html.a11y-high-contrast,
html.a11y-high-contrast body {
    background: #000 !important;
    color: #fff !important;
}

html.a11y-high-contrast a {
    color: #ffff00 !important;
}

html.a11y-high-contrast .app-navbar,
html.a11y-high-contrast .login-header,
html.a11y-high-contrast .card-header,
html.a11y-high-contrast .sidebar,
html.a11y-high-contrast .main-content,
html.a11y-high-contrast .card,
html.a11y-high-contrast .modal-content,
html.a11y-high-contrast .offcanvas,
html.a11y-high-contrast .dropdown-menu,
html.a11y-high-contrast .form-control,
html.a11y-high-contrast .form-select,
html.a11y-high-contrast .table,
html.a11y-high-contrast .alert {
    background: #000 !important;
    color: #fff !important;
    border-color: #fff !important;
}

html.a11y-high-contrast .text-muted,
html.a11y-high-contrast .form-label,
html.a11y-high-contrast .sidebar .nav-link,
html.a11y-high-contrast .dropdown-item {
    color: #fff !important;
}

html.a11y-high-contrast .btn,
html.a11y-high-contrast .badge,
html.a11y-high-contrast .nav-link.active,
html.a11y-high-contrast .sidebar .nav-link.active,
html.a11y-high-contrast .sidebar .nav-link:hover {
    background: #fff !important;
    color: #000 !important;
    border-color: #fff !important;
}

html.a11y-high-contrast :focus-visible {
    outline: 3px solid #ffff00 !important;
}

html.a11y-high-contrast img,
html.a11y-high-contrast .sidebar-brand-image,
html.a11y-high-contrast .login-logo {
    filter: grayscale(1) contrast(1.4);
}

.text-muted {
    color: #495057 !important;
}

.badge.bg-warning {
    color: #000 !important;
}

.badge.bg-info {
    color: #000 !important;
}

@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;
    }
}
