/*
 * Accessibilità – assoservizi.net
 * Regole aggiuntive caricate DOPO il foglio di stile del tema.
 * Riferimenti: UNI CEI EN 301549:2022, WCAG 2.1 livello AA.
 * Proxevent – 19/10/2026
 */

/* -------------------------------------------------------------------------
 * Testo nascosto alla vista ma letto dagli screen reader
 * (già presente in Bootstrap 5: ridefinito per sicurezza)
 * ---------------------------------------------------------------------- */
.visually-hidden,
.visually-hidden-focusable:not(:focus):not(:focus-within) {
    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;
}

/* -------------------------------------------------------------------------
 * C.9.2.4.1 – Salto di blocchi (WCAG 2.4.1)
 * Collegamento "Vai al contenuto principale": invisibile finché non riceve
 * il focus da tastiera, poi compare in alto a sinistra.
 * ---------------------------------------------------------------------- */
.skip-link {
    position: absolute;
    top: -100px;
    left: 1rem;
    z-index: 100000;
    padding: .75rem 1.25rem;
    background: #fff;
    color: #19191c;
    font-weight: 700;
    text-decoration: underline;
    border: 3px solid #0b4f8a;
    border-radius: 0 0 .25rem .25rem;
}

.skip-link:focus {
    top: 0;
    outline: 3px solid #0b4f8a;
    outline-offset: 2px;
}

#contenuto:focus {
    outline: none;
}

/* -------------------------------------------------------------------------
 * C.9.2.4.7 – Focus visibile (WCAG 2.4.7)
 * Il tema azzera outline e box-shadow sul focus: qui si ripristina un
 * indicatore ben visibile, solo per la navigazione da tastiera.
 * Blu scuro (#0b4f8a): contrasto 8,2:1 su bianco.
 * ---------------------------------------------------------------------- */
:focus-visible {
    outline: 3px solid #0b4f8a !important;
    outline-offset: 2px !important;
}

/* Su sfondi scuri l'indicatore diventa bianco */
.bg-dark :focus-visible,
footer :focus-visible,
.navbar-dark :focus-visible,
.navbar-transparent :focus-visible,
.search-full :focus-visible,
.nav-hamburger-end :focus-visible,
#cookieAlert :focus-visible,
.bg-primary :focus-visible,
.bg-parallax :focus-visible,
.card-img-overlay :focus-visible {
    outline-color: #fff !important;
}

/* Campi dei moduli: il focus è sempre evidente (anche al clic) */
.form-control:focus,
.form-select:focus,
.form-check-input:focus {
    outline: 3px solid #0b4f8a !important;
    outline-offset: 1px !important;
}

.bg-dark .form-control:focus,
.bg-dark .form-select:focus,
.bg-primary .form-control:focus,
.search-full .form-control:focus,
.search-full .form-select:focus {
    outline-color: #fff !important;
}

/* Riquadri di scelta dello Sportello virtuale (servizio, tipo di appuntamento):
 * il pulsante di scelta è trasparente, quindi il focus si mostra sul riquadro */
.radio-button:focus-visible + .radio-tile {
    outline: 3px solid #0b4f8a;
    outline-offset: 3px;
}

/* -------------------------------------------------------------------------
 * C.9.1.4.1 – Uso del colore (WCAG 1.4.1)
 * ---------------------------------------------------------------------- */

/* I collegamenti all'interno dei testi si distinguono anche per la sottolineatura */
main p a:not(.btn),
main .alert a:not(.btn),
main td a:not(.btn),
.form-check-label a,
#cookieAlert p a {
    text-decoration: underline;
    text-underline-offset: .15em;
}

/* Orario scelto nello Sportello virtuale: segno di spunta oltre al colore */
.available-hour.selected-hour::before {
    content: "\2713\00a0";
    font-weight: 700;
}

.available-hour.selected-hour {
    font-weight: 700;
}

/* Passaggio corrente della prenotazione: anello oltre al colore */
.book-step.active-step {
    box-shadow: 0 0 0 3px #fff, 0 0 0 6px #0b4f8a;
}

/* Campi con errore: bordo più spesso oltre al colore rosso */
.form-control.is-invalid,
.form-select.is-invalid,
.form-check-input.is-invalid {
    border-width: 2px;
}

/* Etichette dei moduli aggiunte sopra i campi */
.a11y-label {
    display: block;
    margin-bottom: .25rem;
    font-weight: 500;
}

.bg-primary .a11y-label {
    color: #fff;
}

.a11y-required-note {
    font-size: .875rem;
    margin-bottom: 1rem;
}

/* Pulsante "Torna su" ora raggiungibile da tastiera */
.back-top[role="button"] {
    cursor: pointer;
}

/* -------------------------------------------------------------------------
 * C.9.1.4.3 – Contrasto minimo (WCAG 1.4.3)
 * Valori misurati sul tema: testo #a1a1a8 su bianco 2,6:1; blu #2c84cc con
 * testo bianco 4,0:1. Minimo richiesto 4,5:1.
 * ---------------------------------------------------------------------- */

/* Testo normale su sfondo chiaro: grigio più scuro (5,2:1 su bianco, 4,9:1 su #f7f8f9) */
body {
    color: #6c6c74;
}

.form-control::placeholder,
.form-select::placeholder {
    color: #6c6c74;
}

main .text-body {
    color: #6c6c74 !important;
}

/* Sugli sfondi scuri resta il grigio chiaro originale (6,8:1 su #19191c) */
.bg-dark,
footer,
[class*="bg-dark-overlay"],
.bg-parallax,
.search-full,
.nav-hamburger-end,
#cookieAlert,
.navbar-dark,
.navbar-transparent {
    color: #a1a1a8;
}

main .bg-dark .text-body,
main [class*="bg-dark-overlay"] .text-body,
.bg-dark .form-control::placeholder,
.search-full .form-control::placeholder {
    color: #a1a1a8 !important;
}

/* Blu: testi, collegamenti e pulsanti con un blu più scuro dello stesso tono
 * (#1f72b8: 5,1:1 con il bianco, sia come testo sia come sfondo) */
a {
    color: #1f72b8;
}

.text-primary {
    color: #1f72b8 !important;
}

.btn-primary,
.btn-check:checked + .btn-primary,
.btn-primary.active {
    background-color: #1f72b8;
    border-color: #1f72b8;
}

.btn-primary:hover,
.btn-primary:focus {
    color: #fff;
    background-color: #195f99;
    border-color: #195f99;
}

.bg-primary {
    background-color: #1f72b8 !important;
}

#book-appointment-wizard #header {
    background: #1f72b8;
}

/* Collegamenti senza colore proprio sugli sfondi scuri: azzurro chiaro (7,4:1) */
.bg-dark a:not(.btn):not([class*="text-"]):not(.nav-link):not(.dropdown-item),
footer a:not(.btn):not([class*="text-"]):not(.nav-link),
#cookieAlert a:not(.btn):not([class*="text-"]) {
    color: #6aaee6;
}

/* -------------------------------------------------------------------------
 * C.9.1.4.11 – Contrasto dei componenti (WCAG 1.4.11)
 * Bordi dei campi #dfe0e5 su bianco 1,3:1 → #86868e (3,6:1; minimo 3:1)
 * ---------------------------------------------------------------------- */
.form-control,
.form-select,
.form-check-input {
    border-color: #86868e;
}

/* -------------------------------------------------------------------------
 * Movimento ridotto: rispetta la preferenza del sistema operativo
 * ---------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
}
