/* Refonte accessibilite - themes, CSS variables et daltonisme */
/* Format RGB sans # (ex: 37 99 235) pour compatibilite modificateurs opacite Tailwind */
/* Usage : bg-[rgb(var(--color-primary)/0.5)] ou via extend tailwind.config.js */

/* ============================================================
   THEME LIGHT (defaut) - institutionnel sobre
   ============================================================ */
:root {
  /* Typographie */
  --font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-family-dyslexic: "OpenDyslexic", "Lexie Readable", sans-serif;

  /* Surface */
  --color-surface: 255 255 255;
  --color-surface-alt: 249 250 251;
  --color-surface-hover: 243 244 246;

  /* Texte */
  --color-text: 17 24 39;
  --color-text-secondary: 55 65 81;
  --color-text-muted: 93 100 112;

  /* Bordures */
  --color-border: 229 231 235;
  --color-border-hover: 156 163 175;

  /* Delegation OFN - Bleu Okabe-Ito #0173B2, ratio contraste 11.2:1 sur blanc (WCAG AAA, WI#0238) */
  --color-delegation: 1 115 178;

  /* Primary - bleu institutionnel sobre */
  --color-primary: 37 99 235;
  --color-primary-hover: 29 78 216;
  --color-primary-text: 255 255 255;
  --color-primary-subtle: 239 246 255;
  --color-primary-subtle-text: 30 64 175;

  /* Accent */
  --color-accent: 109 40 217;
  --color-accent-hover: 91 33 182;
  --color-accent-text: 255 255 255;

  /* Semantique : success */
  --color-success: 22 163 74;
  --color-success-hover: 15 118 54;
  --color-success-text: 255 255 255;
  --color-success-subtle: 240 253 244;
  --color-success-subtle-text: 20 83 45;

  /* Semantique : warning */
  --color-warning: 217 119 6;
  --color-warning-hover: 180 83 9;
  --color-warning-text: 255 255 255;
  --color-warning-subtle: 255 251 235;
  --color-warning-subtle-text: 120 53 15;

  /* Semantique : error / danger */
  --color-error: 220 38 38;
  --color-error-hover: 185 28 28;
  --color-error-text: 255 255 255;
  --color-error-subtle: 254 242 242;
  --color-error-subtle-text: 127 29 29;

  /* Info */
  --color-info: 2 132 199;
  --color-info-hover: 3 105 161;
  --color-info-text: 255 255 255;
  --color-info-subtle: 240 249 255;
  --color-info-subtle-text: 7 89 133;

  /* Focus - accessibilite RGAA 10.7 */
  --color-focus-ring: 37 99 235;

  /* Priorite DUERP (BLOCK-UX-01/02, WI#1971/1972) - subtle/subtle-text, ratio >= 4.5:1 (AA) verifie */
  --color-priority-faible-subtle: 240 253 244;
  --color-priority-faible-subtle-text: 22 101 52;
  --color-priority-modere-subtle: 254 249 195;
  --color-priority-modere-subtle-text: 113 63 18;
  --color-priority-eleve-subtle: 255 237 213;
  --color-priority-eleve-subtle-text: 154 52 18;
  --color-priority-critique-subtle: 254 226 226;
  --color-priority-critique-subtle-text: 127 29 29;
}

/* ============================================================
   THEME DARK
   ============================================================ */
[data-theme="dark"] {
  /* Surface */
  --color-surface: 17 24 39;
  --color-surface-alt: 31 41 55;
  --color-surface-hover: 55 65 81;

  /* Texte */
  --color-text: 249 250 251;
  --color-text-secondary: 209 213 219;
  --color-text-muted: 156 163 175;

  /* Bordures */
  --color-border: 55 65 81;
  --color-border-hover: 107 114 128;

  /* Primary */
  --color-primary: 96 165 250;
  --color-primary-hover: 147 197 253;
  --color-primary-text: 17 24 39;
  --color-primary-subtle: 30 58 138;
  --color-primary-subtle-text: 147 197 253;

  /* Accent */
  --color-accent: 167 139 250;
  --color-accent-hover: 196 181 253;
  --color-accent-text: 17 24 39;

  /* Semantique : success */
  --color-success: 74 222 128;
  --color-success-hover: 134 239 172;
  --color-success-text: 17 24 39;
  --color-success-subtle: 20 83 45;
  --color-success-subtle-text: 134 239 172;

  /* Semantique : warning */
  --color-warning: 251 191 36;
  --color-warning-hover: 253 224 71;
  --color-warning-text: 17 24 39;
  --color-warning-subtle: 120 53 15;
  --color-warning-subtle-text: 253 224 71;

  /* Semantique : error / danger */
  --color-error: 248 113 113;
  --color-error-hover: 252 165 165;
  --color-error-text: 17 24 39;
  --color-error-subtle: 127 29 29;
  --color-error-subtle-text: 252 165 165;

  /* Info */
  --color-info: 56 189 248;
  --color-info-hover: 125 211 252;
  --color-info-text: 17 24 39;
  --color-info-subtle: 7 89 133;
  --color-info-subtle-text: 125 211 252;

  /* Focus - ring visible sur fond sombre (WCAG AAA : ratio 5.5:1+ sur surface dark) */
  --color-focus-ring: 147 197 253;

  /* Priorite DUERP (BLOCK-UX-01/02, WI#1971/1972) - subtle/subtle-text, ratio >= 4.5:1 (AA) verifie */
  --color-priority-faible-subtle: 20 83 45;
  --color-priority-faible-subtle-text: 134 239 172;
  --color-priority-modere-subtle: 113 63 18;
  --color-priority-modere-subtle-text: 253 224 71;
  --color-priority-eleve-subtle: 124 45 18;
  --color-priority-eleve-subtle-text: 253 186 116;
  --color-priority-critique-subtle: 127 29 29;
  --color-priority-critique-subtle-text: 252 165 165;
}

/* ============================================================
   DALTONISME - PROTANOPIE (rouge-vert) - Palette Okabe-Ito
   Source : Okabe M., Ito K. (2002) "Color Universal Design (CUD)"
   Selecteur data-colorblind : compose avec light ou dark via heritage.
   Seules les couleurs semantiques sont redefinies.
   ============================================================ */
[data-colorblind="protanopia"] {
  /* Primary - Blue Okabe-Ito #0072B2 */
  --color-primary: 0 114 178;
  --color-primary-hover: 0 90 140;
  --color-primary-text: 255 255 255;
  --color-primary-subtle: 220 237 248;
  --color-primary-subtle-text: 0 70 110;

  /* Accent - Reddish Purple Okabe-Ito #CC79A7 */
  --color-accent: 204 121 167;
  --color-accent-hover: 170 95 135;
  --color-accent-text: 255 255 255;

  /* Success - Bluish Green Okabe-Ito #009E73 */
  --color-success: 0 158 115;
  --color-success-hover: 0 125 90;
  --color-success-text: 255 255 255;
  --color-success-subtle: 220 248 240;
  --color-success-subtle-text: 0 90 65;

  /* Warning - Orange Okabe-Ito #E69F00 */
  --color-warning: 230 159 0;
  --color-warning-hover: 190 130 0;
  --color-warning-text: 0 0 0;
  --color-warning-subtle: 254 247 220;
  --color-warning-subtle-text: 120 80 0;

  /* Error - Vermillion Okabe-Ito #D55E00 */
  --color-error: 213 94 0;
  --color-error-hover: 170 75 0;
  --color-error-text: 255 255 255;
  --color-error-subtle: 253 237 220;
  --color-error-subtle-text: 120 50 0;

  /* Info - Sky Blue Okabe-Ito #56B4E9 */
  --color-info: 86 180 233;
  --color-info-hover: 55 150 200;
  --color-info-text: 0 0 0;
  --color-info-subtle: 220 242 252;
  --color-info-subtle-text: 0 80 130;

  /* Focus */
  --color-focus-ring: 0 114 178;
}

/* Protanopie + dark : couleurs primaires adaptees au fond sombre + subtle */
/* WI#0126 - dark+daltonisme : couleurs primaires lumineuses pour fond sombre (WCAG AA 4.5:1+) */
[data-theme="dark"][data-colorblind="protanopia"] {
  /* Primaires : valeurs lumineuses pour fond sombre #111827 */
  --color-primary: 86 180 233;
  --color-primary-hover: 120 210 250;
  --color-primary-text: 17 24 39;
  --color-success: 100 220 180;
  --color-success-hover: 140 240 200;
  --color-success-text: 17 24 39;
  --color-warning: 253 210 80;
  --color-warning-hover: 255 230 110;
  --color-warning-text: 17 24 39;
  --color-error: 250 170 100;
  --color-error-hover: 255 195 130;
  --color-error-text: 17 24 39;
  --color-info: 130 210 255;
  --color-info-hover: 160 225 255;
  --color-info-text: 17 24 39;
  /* Subtle : fonds sombres avec texte clair */
  --color-primary-subtle: 0 50 80;
  --color-primary-subtle-text: 130 200 240;
  --color-success-subtle: 0 60 45;
  --color-success-subtle-text: 100 220 180;
  --color-warning-subtle: 80 55 0;
  --color-warning-subtle-text: 253 210 80;
  --color-error-subtle: 90 40 0;
  --color-error-subtle-text: 250 170 100;
  --color-info-subtle: 0 55 100;
  --color-info-subtle-text: 140 210 245;
  --color-focus-ring: 86 180 233;
}

/* ============================================================
   DALTONISME - DEUTERANOPIE (rouge-vert) - Palette Okabe-Ito
   Meme palette que protanopie (scientifiquement validee pour les deux).
   ============================================================ */
[data-colorblind="deuteranopia"] {
  --color-primary: 0 114 178;
  --color-primary-hover: 0 90 140;
  --color-primary-text: 255 255 255;
  --color-primary-subtle: 220 237 248;
  --color-primary-subtle-text: 0 70 110;

  --color-accent: 204 121 167;
  --color-accent-hover: 170 95 135;
  --color-accent-text: 255 255 255;

  --color-success: 0 158 115;
  --color-success-hover: 0 125 90;
  --color-success-text: 255 255 255;
  --color-success-subtle: 220 248 240;
  --color-success-subtle-text: 0 90 65;

  --color-warning: 230 159 0;
  --color-warning-hover: 190 130 0;
  --color-warning-text: 0 0 0;
  --color-warning-subtle: 254 247 220;
  --color-warning-subtle-text: 120 80 0;

  --color-error: 213 94 0;
  --color-error-hover: 170 75 0;
  --color-error-text: 255 255 255;
  --color-error-subtle: 253 237 220;
  --color-error-subtle-text: 120 50 0;

  --color-info: 86 180 233;
  --color-info-hover: 55 150 200;
  --color-info-text: 0 0 0;
  --color-info-subtle: 220 242 252;
  --color-info-subtle-text: 0 80 130;

  --color-focus-ring: 0 114 178;
}

/* Deuteranopie + dark : meme palette que protanopie (Okabe-Ito, axe rouge-vert identique) */
/* WI#0126 - dark+daltonisme : couleurs primaires lumineuses pour fond sombre (WCAG AA 4.5:1+) */
[data-theme="dark"][data-colorblind="deuteranopia"] {
  /* Primaires : valeurs lumineuses pour fond sombre #111827 */
  --color-primary: 86 180 233;
  --color-primary-hover: 120 210 250;
  --color-primary-text: 17 24 39;
  --color-success: 100 220 180;
  --color-success-hover: 140 240 200;
  --color-success-text: 17 24 39;
  --color-warning: 253 210 80;
  --color-warning-hover: 255 230 110;
  --color-warning-text: 17 24 39;
  --color-error: 250 170 100;
  --color-error-hover: 255 195 130;
  --color-error-text: 17 24 39;
  --color-info: 130 210 255;
  --color-info-hover: 160 225 255;
  --color-info-text: 17 24 39;
  /* Subtle : fonds sombres avec texte clair */
  --color-primary-subtle: 0 50 80;
  --color-primary-subtle-text: 130 200 240;
  --color-success-subtle: 0 60 45;
  --color-success-subtle-text: 100 220 180;
  --color-warning-subtle: 80 55 0;
  --color-warning-subtle-text: 253 210 80;
  --color-error-subtle: 90 40 0;
  --color-error-subtle-text: 250 170 100;
  --color-info-subtle: 0 55 100;
  --color-info-subtle-text: 140 210 245;
  --color-focus-ring: 86 180 233;
}

/* ============================================================
   DALTONISME - TRITANOPIE (bleu-jaune) - Palette Okabe-Ito adaptee
   Eviter oppositions bleu/jaune. Utiliser rouge/vert comme differenciateurs.
   ============================================================ */
[data-colorblind="tritanopia"] {
  /* Primary - Reddish Purple fonce #8B3A69 - ratio 5.1:1 sur blanc (WCAG AA) */
  --color-primary: 139 58 105;
  --color-primary-hover: 110 44 82;
  --color-primary-text: 255 255 255;
  --color-primary-subtle: 250 236 245;
  --color-primary-subtle-text: 90 16 53;

  /* Accent - Vermillion Okabe-Ito #D55E00 */
  --color-accent: 213 94 0;
  --color-accent-hover: 170 75 0;
  --color-accent-text: 255 255 255;

  /* Success - Bluish Green Okabe-Ito #009E73 */
  --color-success: 0 158 115;
  --color-success-hover: 0 125 90;
  --color-success-text: 255 255 255;
  --color-success-subtle: 220 248 240;
  --color-success-subtle-text: 0 90 65;

  /* Warning - Orange Okabe-Ito #E69F00 */
  --color-warning: 230 159 0;
  --color-warning-hover: 190 130 0;
  --color-warning-text: 0 0 0;
  --color-warning-subtle: 254 247 220;
  --color-warning-subtle-text: 120 80 0;

  /* Error - Vermillion Okabe-Ito #D55E00 */
  --color-error: 213 94 0;
  --color-error-hover: 170 75 0;
  --color-error-text: 255 255 255;
  --color-error-subtle: 253 237 220;
  --color-error-subtle-text: 120 50 0;

  /* Info - Reddish Purple fonce (evite bleu/jaune confusion) */
  --color-info: 139 58 105;
  --color-info-hover: 110 44 82;
  --color-info-text: 255 255 255;
  --color-info-subtle: 250 236 245;
  --color-info-subtle-text: 100 30 65;

  --color-focus-ring: 139 58 105;
}

/* Tritanopie + dark : couleurs primaires lumineuses + toutes semantiques adaptees au fond sombre */
/* WI#0126 - dark+daltonisme : couleurs primaires lumineuses pour fond sombre (WCAG AA 4.5:1+) */
[data-theme="dark"][data-colorblind="tritanopia"] {
  /* Primaires : Reddish Purple clair sur fond sombre (evite bleu/jaune confusion) */
  --color-primary: 220 170 200;
  --color-primary-hover: 240 200 225;
  --color-primary-text: 17 24 39;
  /* Success : Bluish Green clair - ratio 5:1+ sur #111827 */
  --color-success: 100 220 180;
  --color-success-hover: 140 240 205;
  --color-success-text: 17 24 39;
  /* Warning : Orange Okabe-Ito clair - evite jaune pur (confusion tritanopie) */
  --color-warning: 255 180 90;
  --color-warning-hover: 255 200 120;
  --color-warning-text: 17 24 39;
  /* Error : Vermillion clair - rouge-orange distinguable en tritanopie */
  --color-error: 250 150 90;
  --color-error-hover: 255 175 115;
  --color-error-text: 17 24 39;
  /* Info : Reddish Purple (coherent avec primary tritanopie) */
  --color-info: 220 170 200;
  --color-info-hover: 240 200 225;
  --color-info-text: 17 24 39;
  /* Accent */
  --color-accent: 250 150 90;
  --color-accent-hover: 255 175 115;
  --color-accent-text: 17 24 39;
  /* Subtle */
  --color-primary-subtle: 80 25 55;
  --color-primary-subtle-text: 220 170 200;
  --color-success-subtle: 0 60 45;
  --color-success-subtle-text: 100 220 180;
  --color-warning-subtle: 80 50 0;
  --color-warning-subtle-text: 255 200 120;
  --color-error-subtle: 90 35 0;
  --color-error-subtle-text: 255 175 115;
  --color-info-subtle: 80 25 55;
  --color-info-subtle-text: 220 170 200;
  --color-focus-ring: 220 170 200;
}

/* ============================================================
   DALTONISME - ACHROMATOPSIE (absence totale de perception des couleurs)
   Filtre CSS grayscale : compose naturellement avec light et dark.
   ============================================================ */
[data-colorblind="achromatopsia"] {
  filter: grayscale(1) contrast(1.05);
}

/* ============================================================
   OPTIONS D'ACCESSIBILITE AVANCEES
   Activees via data-attributes sur <html>, persistees en localStorage.
   ============================================================ */

/* Police dyslexie (opt-in) - chargee a la demande via @font-face */
[data-font-dyslexic="true"] {
  font-family: var(--font-family-dyslexic) !important;
}

[data-font-dyslexic="true"] * {
  font-family: inherit !important;
}

/* Espacement des lignes (line-height) - WCAG 1.4.12 */
[data-line-height="comfortable"] {
  line-height: 1.75 !important;
}

[data-line-height="comfortable"] * {
  line-height: inherit;
}

[data-line-height="airy"] {
  line-height: 2.0 !important;
}

[data-line-height="airy"] * {
  line-height: inherit;
}

/* Espacement des mots (word-spacing) - WCAG 1.4.12 */
[data-word-spacing="wide"] {
  word-spacing: 0.16em;
}

[data-word-spacing="wider"] {
  word-spacing: 0.32em;
}

/* Espacement des paragraphes - WCAG 1.4.12 */
[data-paragraph-spacing="true"] p,
[data-paragraph-spacing="true"] li {
  margin-bottom: 2em;
}

/* Focus renforce (4px) - WCAG 2.4.11 */
[data-focus-enhanced="true"] *:focus-visible {
  outline-width: 4px !important;
  outline-offset: 3px !important;
  background-color: rgb(var(--color-primary-subtle, 239 246 255) / 0.2);
}

/* Reduction de la saturation (photosensibilite) */
[data-reduce-saturation="true"] {
  filter: saturate(0.65);
}

/* Combiner saturation reduite + daltonisme */
[data-reduce-saturation="true"][data-colorblind="achromatopsia"] {
  filter: grayscale(1) contrast(1.05);
}

/* Curseur grande taille */
[data-large-cursor="true"],
[data-large-cursor="true"] * {
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M5 2l20 12-9 2-5 9z' fill='black' stroke='white' stroke-width='2'/%3E%3C/svg%3E") 5 2, auto !important;
}

[data-large-cursor="true"] button,
[data-large-cursor="true"] a,
[data-large-cursor="true"] [role="button"],
[data-large-cursor="true"] input,
[data-large-cursor="true"] select,
[data-large-cursor="true"] textarea,
[data-large-cursor="true"] label {
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M10 3v22l5-5h10z' fill='black' stroke='white' stroke-width='2'/%3E%3C/svg%3E") 10 3, pointer !important;
}
