/* ══════════════════════════════════════════════════════════════════
   CRM ML — Accessibility fixes (WCAG 2.1 AA — FASE 1)
   ══════════════════════════════════════════════════════════════════
   File dedicato agli override accessibilità. Caricato SEMPRE in coda
   all'ordine CSS per vincere su regole precedenti (focus:outline:none
   su admin-modern.css:277 e admin-themes.css:312).

   Fix inclusi:
   1. Focus ring visibile globale (WCAG 2.4.7 — Focus Visible)
   2. prefers-reduced-motion esteso con wildcard (WCAG 2.3.3)
   3. Form validation ARIA — stile aria-invalid / aria-describedby
   4. Skip link per screen reader
   ══════════════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────────────────────────
   1. FOCUS RING globale — box-shadow visibile su qualsiasi elemento
   interattivo focusato da tastiera. :focus-visible evita che appaia
   al click mouse (UX più pulita).
   WCAG 2.4.7 Focus Visible (AA) — richiesto.
   ───────────────────────────────────────────────────────────── */
:focus-visible {
    outline: none !important;
    box-shadow: 0 0 0 3px var(--crml-color-focus, #3b82f6) !important;
    border-radius: 3px;
}

/* Override aggressivo per elementi con outline:none hardcoded */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible,
[role="button"]:focus-visible,
[role="link"]:focus-visible,
[role="tab"]:focus-visible,
[data-crml-click]:focus-visible {
    outline: none !important;
    box-shadow: 0 0 0 3px var(--crml-color-focus, #3b82f6),
                0 0 0 5px rgba(59, 130, 246, 0.25) !important;
    border-radius: 3px;
    z-index: 100;
}

/* Su tema Glass il focus ring deve essere più brillante */
body.crml-theme-glass :focus-visible,
body.crml-theme-vivid :focus-visible {
    box-shadow: 0 0 0 3px #ec4899,
                0 0 0 5px rgba(236, 72, 153, 0.3) !important;
}

/* ─────────────────────────────────────────────────────────────
   2. prefers-reduced-motion — esteso con wildcard su tutte
   transition/animation (WCAG 2.3.3)
   ───────────────────────────────────────────────────────────── */
@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;
    }
}

/* ─────────────────────────────────────────────────────────────
   3. Form validation ARIA — stile quando aria-invalid="true"
   ───────────────────────────────────────────────────────────── */
[aria-invalid="true"],
.crml-input[aria-invalid="true"],
input[aria-invalid="true"],
select[aria-invalid="true"],
textarea[aria-invalid="true"] {
    border-color: #dc2626 !important;
    background: #fee2e2 !important;
    color: #991b1b;
}
[aria-invalid="true"]:focus-visible {
    box-shadow: 0 0 0 3px #fca5a5,
                0 0 0 5px rgba(220, 38, 38, 0.2) !important;
}

/* Messaggio errore associato via aria-describedby */
.crml-field-error,
[role="alert"].crml-field-error {
    color: #dc2626;
    font-size: 12px;
    font-weight: 600;
    margin-top: 4px;
    display: flex;
    align-items: center;
    gap: 6px;
}
.crml-field-error::before {
    content: "⚠";
    font-size: 14px;
}

/* ─────────────────────────────────────────────────────────────
   4. Skip link (navigazione rapida screen reader)
   ───────────────────────────────────────────────────────────── */
.crml-skip-link {
    position: absolute;
    top: -40px;
    left: 0;
    background: #000;
    color: #fff;
    padding: 8px 16px;
    z-index: 9999;
    text-decoration: none;
    font-weight: 700;
}
.crml-skip-link:focus,
.crml-skip-link:focus-visible {
    top: 0;
    outline: 2px solid #fff !important;
    box-shadow: none !important;
}

/* ─────────────────────────────────────────────────────────────
   5. Badge stati con icona semantica — non solo colore
   Si aggiunge un pseudo-elemento ::before con icona a ogni badge.
   Override per badge stati registro/trial/prenotazioni.
   ───────────────────────────────────────────────────────────── */
.crml-badge[data-status="ASSENTE"]::before,
.crml-badge[data-status="ASSENZA_NR"]::before,
.crml-badge[data-status="ASSENZA_COMUNICATA"]::before,
.crml-badge[data-status="ASSENZA_MAESTRO"]::before {
    content: "✗ ";
    font-weight: 900;
}
.crml-badge[data-status="PRESENTE"]::before,
.crml-badge[data-status="RECUPERO"]::before,
.crml-badge[data-status="SUPPLENZA"]::before,
.crml-badge[data-status="completata"]::before,
.crml-badge[data-status="iscritto"]::before,
.crml-badge[data-status="concordata"]::before {
    content: "✓ ";
    font-weight: 900;
}
.crml-badge[data-status="DA_RECUPERARE"]::before,
.crml-badge[data-status="PROPOSTA_RECUPERO"]::before,
.crml-badge[data-status="PROPOSTA_RECUPERO_ALLIEVO"]::before,
.crml-badge[data-status="in_attesa_di_risposta"]::before,
.crml-badge[data-status="in_sospeso"]::before,
.crml-badge[data-status="da_concordare"]::before {
    content: "⏳ ";
    font-weight: 900;
}
.crml-badge[data-status="non_interessato"]::before,
.crml-badge[data-status="annullata"]::before {
    content: "— ";
    font-weight: 900;
}

/* Alternativa: classe .crml-badge-icon manuale */
.crml-badge-icon::before {
    content: attr(data-icon) " ";
    font-weight: 900;
    margin-right: 2px;
}
