/* Guardefense : jetons de conception, v1 (D01, 18/09/2026).
   Un seul fichier, préfixe --gd-. Thème clair par défaut ; sombre par [data-theme="dark"] sur <html>
   ou par préférence système quand aucun data-theme n'est posé. L'application agent pose
   data-theme="dark" par défaut. Aucune valeur de couleur, taille ou police ne se code en dur ailleurs.
   Contrastes : chaque paire texte/fond ci-dessous est AA (4,5:1), voir brandkit/contrastes.md. */


@font-face {
  font-family: "Atkinson Hyperlegible Next";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("polices/atkinson-hyperlegible-next-latin-wght-normal.woff2") format("woff2-variations"), url("polices/atkinson-hyperlegible-next-latin-wght-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Atkinson Hyperlegible Next";
  font-style: italic;
  font-weight: 200 800;
  font-display: swap;
  src: url("polices/atkinson-hyperlegible-next-latin-wght-italic.woff2") format("woff2-variations"), url("polices/atkinson-hyperlegible-next-latin-wght-italic.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Atkinson Hyperlegible Next";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("polices/atkinson-hyperlegible-next-latin-ext-wght-normal.woff2") format("woff2-variations"), url("polices/atkinson-hyperlegible-next-latin-ext-wght-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Atkinson Hyperlegible Next";
  font-style: italic;
  font-weight: 200 800;
  font-display: swap;
  src: url("polices/atkinson-hyperlegible-next-latin-ext-wght-italic.woff2") format("woff2-variations"), url("polices/atkinson-hyperlegible-next-latin-ext-wght-italic.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Atkinson Hyperlegible Mono";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("polices/atkinson-hyperlegible-mono-latin-wght-normal.woff2") format("woff2-variations"), url("polices/atkinson-hyperlegible-mono-latin-wght-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Atkinson Hyperlegible Mono";
  font-style: italic;
  font-weight: 200 800;
  font-display: swap;
  src: url("polices/atkinson-hyperlegible-mono-latin-wght-italic.woff2") format("woff2-variations"), url("polices/atkinson-hyperlegible-mono-latin-wght-italic.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Atkinson Hyperlegible Mono";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("polices/atkinson-hyperlegible-mono-latin-ext-wght-normal.woff2") format("woff2-variations"), url("polices/atkinson-hyperlegible-mono-latin-ext-wght-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Atkinson Hyperlegible Mono";
  font-style: italic;
  font-weight: 200 800;
  font-display: swap;
  src: url("polices/atkinson-hyperlegible-mono-latin-ext-wght-italic.woff2") format("woff2-variations"), url("polices/atkinson-hyperlegible-mono-latin-ext-wght-italic.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Replis métriques : la police système prend la place exacte de la police finale pendant le
   chargement (pas de saut de mise en page). Mesures : largeur moyenne pondérée par la fréquence
   des lettres en français, Atkinson Next 400 = 0,4445 em, Arial/Liberation Sans = 0,4445 em ;
   Atkinson Mono = 0,632 em, Courier New/Liberation Mono = 0,600 em. Ascendante 984, descendante
   316, corps 1000. */
@font-face {
  font-family: "Guardefense Repli";
  src: local("Arial"), local("Liberation Sans"), local("Helvetica Neue"), local("Helvetica");
  size-adjust: 100%;
  ascent-override: 98.4%;
  descent-override: 31.6%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Guardefense Repli Mono";
  src: local("Courier New"), local("Liberation Mono"), local("Cousine");
  size-adjust: 105.3%;
  ascent-override: 93.5%;
  descent-override: 30%;
  line-gap-override: 0%;
}

:root, [data-theme="light"] {
  /* Typographie : deux familles, auto-hébergées (voir @font-face en tête de fichier). */
  --gd-police-interface: "Atkinson Hyperlegible Next", "Guardefense Repli", Arial, "Liberation Sans", sans-serif;
  --gd-police-mono: "Atkinson Hyperlegible Mono", "Guardefense Repli Mono", "Courier New", "Liberation Mono", monospace;
  /* Corps 16 px = 1rem ; en rem pour respecter la taille de police choisie par l'utilisateur. */
  --gd-taille-xs: 0.75rem;    /* 12 px : jamais pour du texte courant, métadonnées de tableau seulement */
  --gd-taille-sm: 0.875rem;   /* 14 px */
  --gd-taille-base: 1rem;     /* 16 px : corps, minimum sur l'application agent */
  --gd-taille-md: 1.125rem;   /* 18 px */
  --gd-taille-lg: 1.25rem;    /* 20 px */
  --gd-taille-xl: 1.5rem;     /* 24 px */
  --gd-taille-2xl: 1.875rem;  /* 30 px */
  --gd-taille-3xl: 2.375rem;  /* 38 px : prochain point, heure de l'alerte, identifiant d'appareil */
  --gd-graisse-normale: 400;
  --gd-graisse-moyenne: 500;
  --gd-graisse-forte: 700;
  --gd-interligne-serre: 1.2;
  --gd-interligne-normal: 1.5;
  /* Espacement : base 4 px, --gd-espace-n = n × 4 px. */
  --gd-espace-1: 4px;
  --gd-espace-2: 8px;
  --gd-espace-3: 12px;
  --gd-espace-4: 16px;
  --gd-espace-5: 20px;
  --gd-espace-6: 24px;
  --gd-espace-7: 28px;
  --gd-espace-8: 32px;
  --gd-espace-9: 36px;
  --gd-espace-10: 40px;
  --gd-espace-11: 44px;
  --gd-espace-12: 48px;
  --gd-rayon-sm: 4px;
  --gd-rayon-md: 8px;
  --gd-rayon-lg: 12px;
  --gd-rayon-plein: 999px;
  --gd-duree-rapide: 120ms;
  --gd-duree-normale: 200ms;
  --gd-easing: cubic-bezier(0.2, 0, 0, 1);
  /* Cibles tactiles : 48 px sur l'application agent, 44 px au bureau. */
  --gd-cible-min: 48px;
  --gd-cible-bureau: 44px;

  /* Thème clair */
  --gd-fond: #f4f5f7;
  --gd-fond-2: #ffffff;
  --gd-fond-3: #e7e9ee;
  --gd-fond-inverse: #181b21;
  --gd-texte: #181b21;
  --gd-texte-2: #454c59;
  --gd-texte-3: #5f6775;
  --gd-texte-inverse: #f2f3f5;
  --gd-lien: #4a3aa8;
  --gd-bordure: #d5d9e0;
  --gd-bordure-2: #848c99;
  --gd-focus: #5a48c4;
  --gd-accent: #5a48c4;
  --gd-accent-survol: #4c3ca8;
  --gd-accent-actif: #3e3089;
  --gd-accent-texte: #ffffff;
  --gd-statut-a-venir: #5f6775;
  --gd-statut-a-venir-fond: #e3e6ea;
  --gd-statut-en-cours: #1f5db3;
  --gd-statut-en-cours-fond: #dbe6f7;
  --gd-statut-complete: #166a4b;
  --gd-statut-complete-fond: #d3ecdf;
  --gd-statut-partielle: #8f5600;
  --gd-statut-partielle-fond: #f8e6c6;
  --gd-statut-manquee: #7f1d0d;
  --gd-statut-manquee-fond: #f6dcd6;
  --gd-statut-critique: #8b0d56;
  --gd-statut-critique-fond: #f6d9e8;
  --gd-voile: rgba(24, 27, 33, 0.55);
  --gd-ombre-sm: 0 1px 2px rgba(24, 27, 33, 0.08);
  --gd-ombre-md: 0 4px 12px rgba(24, 27, 33, 0.12);
  --gd-ombre-focus: 0 0 0 2px var(--gd-fond), 0 0 0 4px var(--gd-focus);
  color-scheme: light;
}

[data-theme="dark"] {
  --gd-fond: #121417;
  --gd-fond-2: #1a1d22;
  --gd-fond-3: #242830;
  --gd-fond-inverse: #eef0f3;
  --gd-texte: #e8eaee;
  --gd-texte-2: #b3b9c4;
  --gd-texte-3: #8f97a4;
  --gd-texte-inverse: #121417;
  --gd-lien: #b9aef5;
  --gd-bordure: #2c313a;
  --gd-bordure-2: #626b7a;
  --gd-focus: #b9aef5;
  --gd-accent: #b9aef5;
  --gd-accent-survol: #c9c1f8;
  --gd-accent-actif: #a293ee;
  --gd-accent-texte: #17142e;
  --gd-statut-a-venir: #8f97a4;
  --gd-statut-a-venir-fond: #2a2f37;
  --gd-statut-en-cours: #7fb3f4;
  --gd-statut-en-cours-fond: #18304d;
  --gd-statut-complete: #5fcf9d;
  --gd-statut-complete-fond: #123b2c;
  --gd-statut-partielle: #f3c14b;
  --gd-statut-partielle-fond: #3f2f0a;
  --gd-statut-manquee: #f0865f;
  --gd-statut-manquee-fond: #4a2416;
  --gd-statut-critique: #fb9dc9;
  --gd-statut-critique-fond: #45152c;
  --gd-voile: rgba(0, 0, 0, 0.6);
  --gd-ombre-sm: 0 1px 2px rgba(0, 0, 0, 0.5);
  --gd-ombre-md: 0 6px 16px rgba(0, 0, 0, 0.6);
  --gd-ombre-focus: 0 0 0 2px var(--gd-fond), 0 0 0 4px var(--gd-focus);
  color-scheme: dark;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --gd-fond: #121417;
    --gd-fond-2: #1a1d22;
    --gd-fond-3: #242830;
    --gd-fond-inverse: #eef0f3;
    --gd-texte: #e8eaee;
    --gd-texte-2: #b3b9c4;
    --gd-texte-3: #8f97a4;
    --gd-texte-inverse: #121417;
    --gd-lien: #b9aef5;
    --gd-bordure: #2c313a;
    --gd-bordure-2: #626b7a;
    --gd-focus: #b9aef5;
    --gd-accent: #b9aef5;
    --gd-accent-survol: #c9c1f8;
    --gd-accent-actif: #a293ee;
    --gd-accent-texte: #17142e;
    --gd-statut-a-venir: #8f97a4;
    --gd-statut-a-venir-fond: #2a2f37;
    --gd-statut-en-cours: #7fb3f4;
    --gd-statut-en-cours-fond: #18304d;
    --gd-statut-complete: #5fcf9d;
    --gd-statut-complete-fond: #123b2c;
    --gd-statut-partielle: #f3c14b;
    --gd-statut-partielle-fond: #3f2f0a;
    --gd-statut-manquee: #f0865f;
    --gd-statut-manquee-fond: #4a2416;
    --gd-statut-critique: #fb9dc9;
    --gd-statut-critique-fond: #45152c;
    --gd-voile: rgba(0, 0, 0, 0.6);
    --gd-ombre-sm: 0 1px 2px rgba(0, 0, 0, 0.5);
    --gd-ombre-md: 0 6px 16px rgba(0, 0, 0, 0.6);
    --gd-ombre-focus: 0 0 0 2px var(--gd-fond), 0 0 0 4px var(--gd-focus);
    color-scheme: dark;
  }
}

/* À l'impression, toujours le thème clair (papier). */
@media print {
  :root, [data-theme="dark"] {
    --gd-fond: #f4f5f7;
    --gd-fond-2: #ffffff;
    --gd-fond-3: #e7e9ee;
    --gd-fond-inverse: #181b21;
    --gd-texte: #181b21;
    --gd-texte-2: #454c59;
    --gd-texte-3: #5f6775;
    --gd-texte-inverse: #f2f3f5;
    --gd-lien: #4a3aa8;
    --gd-bordure: #d5d9e0;
    --gd-bordure-2: #848c99;
    --gd-focus: #5a48c4;
    --gd-accent: #5a48c4;
    --gd-accent-survol: #4c3ca8;
    --gd-accent-actif: #3e3089;
    --gd-accent-texte: #ffffff;
    --gd-statut-a-venir: #5f6775;
    --gd-statut-a-venir-fond: #e3e6ea;
    --gd-statut-en-cours: #1f5db3;
    --gd-statut-en-cours-fond: #dbe6f7;
    --gd-statut-complete: #166a4b;
    --gd-statut-complete-fond: #d3ecdf;
    --gd-statut-partielle: #8f5600;
    --gd-statut-partielle-fond: #f8e6c6;
    --gd-statut-manquee: #7f1d0d;
    --gd-statut-manquee-fond: #f6dcd6;
    --gd-statut-critique: #8b0d56;
    --gd-statut-critique-fond: #f6d9e8;
    --gd-voile: rgba(24, 27, 33, 0.55);
    --gd-ombre-sm: 0 1px 2px rgba(24, 27, 33, 0.08);
    --gd-ombre-md: 0 4px 12px rgba(24, 27, 33, 0.12);
    --gd-ombre-focus: 0 0 0 2px var(--gd-fond), 0 0 0 4px var(--gd-focus);
    color-scheme: light;
  }
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --gd-duree-rapide: 0ms;
    --gd-duree-normale: 0ms;
  }
}
