/* modules/accessibilite/module.css - accessibilite visuelle (14/10/2026). Le panneau est sorti du <body> par module.js : il n'est pas agrandi. */
.ese-a11y { position: fixed; top: 45%; z-index: 2147483002; font-family: Arial, Helvetica, sans-serif; font-size: 16px; line-height: 1.4; color: #1f2933; zoom: 1; }
.ese-a11y-gauche { left: 0; }
.ese-a11y-droite { right: 0; }
.ese-a11y [hidden] { display: none !important; }
.ese-a11y-bouton { appearance: none; -webkit-appearance: none; cursor: pointer; display: flex; align-items: center; justify-content: center; width: 46px; height: 46px; margin: 0; padding: 0;
    border: 2px solid #fff; background: var(--a11y-fond, #1f4e9c); color: var(--a11y-icone, #fff); box-shadow: 0 2px 10px rgba(0,0,0,.35); }
.ese-a11y-gauche .ese-a11y-bouton { border-radius: 0 10px 10px 0; border-left: 0; }
.ese-a11y-droite .ese-a11y-bouton { border-radius: 10px 0 0 10px; border-right: 0; }
.ese-a11y-bouton:focus-visible, .ese-a11y button:focus-visible { outline: 3px solid #ffbf47; outline-offset: 2px; }
.ese-a11y-panneau { position: fixed; top: 10px; width: 300px; max-width: calc(100vw - 70px); max-height: calc(100vh - 20px); overflow: auto; background: #fff; color: #1f2933; border-radius: 10px; box-shadow: 0 8px 30px rgba(0,0,0,.35); border: 1px solid #cbd2d9; }
.ese-a11y-gauche .ese-a11y-panneau { left: 54px; }
.ese-a11y-droite .ese-a11y-panneau { right: 54px; }
.ese-a11y-entete { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px solid #e3e7eb; }
.ese-a11y-entete h2 { margin: 0; font-size: 1.05em; }
.ese-a11y .ese-a11y-fermer { appearance: none; cursor: pointer; background: transparent; border: 0; font-size: 26px; line-height: 1; width: 36px; height: 36px; color: #1f2933; padding: 0; margin: 0; }
.ese-a11y-corps { padding: 10px 14px 14px; }
.ese-a11y-ligne { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 8px 0; flex-wrap: wrap; }
.ese-a11y-etiquette { font-weight: 600; }
.ese-a11y-taille, .ese-a11y-groupe { display: inline-flex; align-items: center; gap: 6px; }
.ese-a11y-valeur { min-width: 46px; text-align: center; font-weight: 600; }
.ese-a11y button[data-a11y]:not(.ese-a11y-fermer) { appearance: none; cursor: pointer; font: inherit; min-height: 38px; padding: 6px 12px; margin: 0; width: auto;
    border: 2px solid #1f4e9c; border-radius: 6px; background: #fff; color: #1f4e9c; font-weight: 600; }
.ese-a11y button[aria-pressed="true"] { background: #1f4e9c; color: #fff; }
.ese-a11y .ese-a11y-bascule { width: 100%; text-align: left; }
.ese-a11y .ese-a11y-raz { width: 100%; border-color: #52606d; color: #52606d; }
.ese-a11y-note { margin: 10px 0 0; color: #52606d; font-size: .85em; }

/* Taille du texte : on agrandit la page (le panneau est hors <body>). */
html.ese-a11y-t1 body { zoom: 1.12; }
html.ese-a11y-t2 body { zoom: 1.25; }
html.ese-a11y-t3 body { zoom: 1.5; }
html.ese-a11y-t4 body { zoom: 1.75; }
html.ese-a11y-t5 body { zoom: 2; }

/* OpenDyslexic (licence SIL OFL) : les fichiers .otf se deposent dans modules/accessibilite/polices/ ; la police n'est telechargee que si le visiteur
   active l'option. Sans fichier, le navigateur passe a la police suivante de la liste. */
@font-face { font-family: "OpenDyslexic"; src: url("polices/OpenDyslexic-Regular.otf") format("opentype"); font-style: normal; font-weight: normal; font-display: swap; }
@font-face { font-family: "OpenDyslexic"; src: url("polices/OpenDyslexic-Italic.otf") format("opentype"); font-style: italic; font-weight: normal; font-display: swap; }
@font-face { font-family: "OpenDyslexic"; src: url("polices/OpenDyslexic-Bold.otf") format("opentype"); font-style: normal; font-weight: bold; font-display: swap; }
@font-face { font-family: "OpenDyslexic"; src: url("polices/OpenDyslexic-Bold-Italic.otf") format("opentype"); font-style: italic; font-weight: bold; font-display: swap; }

/* Police pour dyslexie et espacement. */
html.ese-a11y-on-dys body, html.ese-a11y-on-dys body p, html.ese-a11y-on-dys body li, html.ese-a11y-on-dys body td, html.ese-a11y-on-dys body th,
html.ese-a11y-on-dys body a, html.ese-a11y-on-dys body h1, html.ese-a11y-on-dys body h2, html.ese-a11y-on-dys body h3, html.ese-a11y-on-dys body h4,
html.ese-a11y-on-dys body label, html.ese-a11y-on-dys body input, html.ese-a11y-on-dys body textarea, html.ese-a11y-on-dys body select,
html.ese-a11y-on-dys body button, html.ese-a11y-on-dys body span:not([class*="fa"]):not([class*="icon"]), html.ese-a11y-on-dys body div,
html.ese-a11y-on-dys body blockquote, html.ese-a11y-on-dys body figcaption, html.ese-a11y-on-dys body dt, html.ese-a11y-on-dys body dd {
    font-family: "ESE Dyslexie", "OpenDyslexic", "Atkinson Hyperlegible", "Lexend", Verdana, "Trebuchet MS", sans-serif !important;
    text-align: left !important;
}
html.ese-a11y-on-dys body * { letter-spacing: .06em; word-spacing: .12em; }
html.ese-a11y-on-espace body, html.ese-a11y-on-espace body * { line-height: 1.8 !important; letter-spacing: .1em !important; word-spacing: .2em !important; }
html.ese-a11y-on-dys .ese-a11y *, html.ese-a11y-on-espace .ese-a11y * { font-family: Arial, Helvetica, sans-serif !important; letter-spacing: normal !important; word-spacing: normal !important; line-height: 1.4 !important; }

/* Liens soulignes, animations reduites. */
html.ese-a11y-on-liens body a { text-decoration: underline !important; text-underline-offset: 3px; font-weight: 700; }
html.ese-a11y-on-calme *, html.ese-a11y-on-calme *::before, html.ese-a11y-on-calme *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }

/* Contraste : fort (noir et jaune) ou inverse. Le panneau garde ses couleurs. */
html.ese-a11y-contraste-fort body, html.ese-a11y-contraste-fort body *:not(:where(img, svg, video, iframe, .ese-ck-fond)) {
    background-color: #000 !important; background-image: none !important; color: #fff !important; border-color: #fff !important; text-shadow: none !important; box-shadow: none !important;
}
html.ese-a11y-contraste-fort body a, html.ese-a11y-contraste-fort body a * { color: #ffd400 !important; }
html.ese-a11y-contraste-fort body button, html.ese-a11y-contraste-fort body input, html.ese-a11y-contraste-fort body select, html.ese-a11y-contraste-fort body textarea { border: 2px solid #fff !important; }
html.ese-a11y-contraste-inverse { filter: invert(1) hue-rotate(180deg); background: #fff; }
html.ese-a11y-contraste-inverse img, html.ese-a11y-contraste-inverse video, html.ese-a11y-contraste-inverse iframe, html.ese-a11y-contraste-inverse picture { filter: invert(1) hue-rotate(180deg); }
.ese-a11y-lien { cursor: pointer; }
