/*
 * AccessiBello — effetti globali.
 * Unico foglio caricato a livello di documento.
 *
 * Tutte le classi vivono su <html> (le imposta lo script di boot prima del
 * primo paint) mentre i selettori sono ancorati a `body`: il widget e la
 * modale sono figli diretti di <html>, quindi restano fuori da ogni effetto.
 *
 * Filtri e zoom NON sono qui: vengono iniettati in <style id="ab-dynamic-css">
 * solo quando un effetto è attivo, così a preferenze vuote il plugin non
 * scrive nulla su <html>/<body> e non interferisce col tema.
 */

/* Il widget resta nascosto finché il CSS dello shadow root non è caricato,
   altrimenti si vedrebbe un lampo di markup non stilizzato.
   `!important` è necessario: la regola `:host { all: initial !important }` di
   base.css rimetterebbe altrimenti la visibilità a `visible`. */
.ab-widget:not(.ab-ready),
.ab-modal-host:not(.ab-ready) {
    visibility: hidden !important;
}

/* Sottolinea i link */
html.ab-underline body a {
    text-decoration: underline !important;
}

/* Font per la dislessia */
html.ab-dyslexia body :where(p, li, span, div, a, h1, h2, h3, h4, h5, h6, td, th, label, button, input, select, textarea) {
    font-family: 'OpenDyslexic', sans-serif !important;
}

/* Evidenziazione del cursore.
   La classe la mette effects.js sul solo elemento più interno sotto il
   puntatore. Con `:hover` si accenderebbero anche tutti i suoi antenati,
   quindi passando su una voce di lista si illuminerebbe l'intera lista. */
html.ab-highlight-cursor .ab-cursor-target {
    background-color: rgba(255, 255, 0, .3) !important;
    outline: 1px solid rgba(255, 255, 0, .6) !important;
    outline-offset: 2px !important;
}

/* Cursore grande */
html.ab-big-cursor,
html.ab-big-cursor * {
    cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="38" height="51.53" viewBox="0 0 38 51.53"><path fill="%23ed8c00" stroke="%23633800" stroke-width="2.5" d="M5.73,50.03c-0.15,0-0.31-0.02-0.46-0.07-0.59-0.19-1-0.72-1.04-1.34L1.5,3.08c-0.04-0.62,0.31-1.2,0.88-1.46,0.19-0.09,0.4-0.13,0.61-0.13,0.39,0,0.78,0.16,1.07,0.45l32.02,32.51c0.43,0.43,0.55,1.09,0.31,1.65-0.24,0.55-0.78,0.9-1.37,0.9-0.01,0-17.62-0.6-17.62-0.6L10.5,50.3c-0.29,0.36-0.72,0.56-1.17,0.56Z"/></svg>') 4 4, auto !important;
}
html.ab-big-cursor :where(a, button, input, textarea, select),
html.ab-big-cursor :where(a, button, input, textarea, select) * {
    cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="39.7" height="52" viewBox="0 0 39.7 52"><path fill="%2300d4ea" stroke="%2303465b" stroke-width="2.5" d="M14.12,50.67c-0.49,0-0.93-0.26-1.18-0.68-0.06-0.09-5.46-9.47-9.08-16.38-2.23-4.25-2.88-6.57-2.29-8.26,0.53-1.53,1.94-2.17,2.98-2.63,0.31-0.14,0.65-0.21,1.01-0.21,0.49,0,1.81,0,4.48,2.64V5.35c0-2.32,1.95-4,4.63-4,2.22,0,4.03,1.79,4.03,4v8.54c0.77-0.41,1.64-0.63,2.55-0.63,1.46,0,2.83,0.57,3.87,1.6,0.54,0.54,0.89,1.22,1.01,1.95,0.52-0.21,1.08-0.32,1.66-0.32,1.18,0,2.3,0.46,3.14,1.3,0.88,0.88,1.37,2.05,1.37,3.3v0.08c0.49-0.17,1-0.26,1.53-0.26,1.24,0,2.4,0.48,3.29,1.36,0.79,0.79,1.22,1.84,1.22,2.95v13.33c0,2.02-0.47,4.04-1.38,5.84l-2.76,5.52c-0.23,0.46-0.7,0.75-1.22,0.75H14.12Z"/></svg>') 4 4, pointer !important;
}

/* Riduci animazioni */
html.ab-reduce-motion body *,
html.ab-reduce-motion body *::before,
html.ab-reduce-motion body *::after {
    animation-delay: -1ms !important;
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
    background-attachment: initial !important;
    scroll-behavior: auto !important;
    transition-delay: 0s !important;
    transition-duration: 0s !important;
}
/* Nasconde gli iframe che con ogni probabilità contengono animazioni */
html.ab-reduce-motion body iframe[src*="lottie"] {
    display: none !important;
}
/*
 * Solo i canvas dentro contenitori riconoscibilmente animati: nascondere
 * indiscriminatamente ogni <canvas> spegnerebbe anche grafici, mappe e
 * campi firma.
 */
html.ab-reduce-motion body :where([class*="lottie"], [id*="lottie"], [data-lottie-path], [data-animation], [class*="animation"]) canvas {
    visibility: hidden !important;
    pointer-events: none !important;
}

/* Rispetta la preferenza di sistema anche senza intervento dell'utente */
@media (prefers-reduced-motion: reduce) {
    body *,
    body *::before,
    body *::after {
        animation-duration: 1ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0s !important;
    }
}

/* Rimuovi immagini (loghi e icone restano, servono all'orientamento) */
html.ab-remove-images body :where(img, picture, svg, video):not(#CookiebotWidget *):not([class*="logo"]):not([id*="logo"]):not([class*="icon"]):not([id*="icon"]):not([class*="icona"]):not([id*="icona"]) {
    display: none !important;
}
html.ab-remove-images body [style*="background-image"]:not(#CookiebotWidget *):not([class*="logo"]):not([id*="logo"]):not([class*="icon"]):not([id*="icon"]):not([class*="icona"]):not([id*="icona"]) {
    background-image: none !important;
}

/* Blocco dello scroll quando la modale è aperta */
html.ab-modal-open,
html.ab-modal-open body {
    overflow: hidden !important;
    overscroll-behavior: none;
}
