/* ============================================================
   PILOTE MILITAIRE — DESIGN SYSTEM · TOKENS (app candidat)
   ------------------------------------------------------------
   Équivalent PM de html/css/ca-tokens.css (ADR 0039) : couche de
   VARIABLES uniquement — aucune règle de mise en page, aucun
   reset. Thème CLAIR unique (l'app PM est claire par conception,
   cf. ADR 0010 pour la charte multi-theme de la vitrine).

   Différence de fond avec Concours Armée : PM n'a PAS de couleur
   d'accent de marque. L'ACCENT est la FILIÈRE de l'espace actif
   (body[data-space], posé par dashboard.js — ou par les pages
   d'épreuve via le paramètre d'URL « space »). Hors espace, repli
   NEUTRE ENCRE : le chroma est réservé aux filières.

   ⚠️ Résolution CSS : une custom property se résout sur l'élément
   où elle est DÉFINIE. Les rôles --accent* qui référencent
   --filiere sont donc redéclarés sur body[data-space] (là où
   --filiere existe), pas seulement sur :root.

   Ne pas dupliquer ces hex ailleurs : source de vérité unique.
   ============================================================ */

/* ---- Fontes : Geist + Geist Mono (charte vitrine PM : « Corps & UI : Geist ;
   chiffres / stats : Geist Mono »). AUTO-HÉBERGÉES (platform2/fonts/, fontes
   variables woff2, subsets latin + latin-ext, licence OFL) : aucun domaine
   externe au chargement — un @import Google Fonts rendait l'événement load de
   chaque page dépendant du réseau tiers (E2E flaky, SPOF, RGPD). ---- */
@font-face {
    font-family: 'Geist';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/geist-latin.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: 'Geist';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/geist-latin-ext.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: 'Geist Mono';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/geist-mono-latin.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: 'Geist Mono';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/geist-mono-latin-ext.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;
}

/* ============================================================
   PRIMITIVES — valeurs brutes
   ============================================================ */
:root {
    /* ---- Encre (échelle claire) ---- */
    --pm-ink-900: #14161A;
    --pm-ink-700: #2C313A;
    --pm-ink-500: #4A4F58;
    --pm-ink-400: #777C85;
    --pm-ink-300: #969BA3;
    --pm-ink-200: #C2C6CC;
    --pm-ink-100: #E2E4E8;
    --pm-ink-50:  #F2F3F5;
    --pm-white:   #FFFFFF;

    /* ---- Typographie ---- */
    --font-sans: 'Geist', system-ui, -apple-system, 'Segoe UI', sans-serif;
    --font-mono: 'Geist Mono', ui-monospace, 'SF Mono', Menlo, monospace;

    /* ---- Rayons ---- */
    --radius-sm:   6px;
    --radius-md:   10px;
    --radius-lg:   16px;
    --radius-pill: 999px;

    /* ---- Motion ---- */
    --ease-out: cubic-bezier(0.16, 1, 0.3, 1);

    /* ---- Notation d'avis : convention universelle, échappe au thémage ----
       Les étoiles qui portent la NOTE d'un avis sont jaunes partout : elles
       n'appartiennent PAS à la filière de l'espace. C'est la seule exception
       à la règle « l'accent est la filière » — un candidat lit « 5 étoiles »,
       pas la couleur de sa filière. Décision du 04/08/2026, alignée sur la
       vitrine PM qui applique déjà --avis-etoile.
       Valeur littérale unique de l'app : ne pas la redupliquer ailleurs. */
    --avis-etoile: #F0B429;
}

/* ============================================================
   RÔLES (thème clair unique)
   ============================================================ */
:root {
    color-scheme: light;

    --surface-page:       #f7f8fa;   /* = --dash-bg-page historique */
    --surface-raised:     var(--pm-ink-50);
    --surface-card:       var(--pm-white);
    --surface-card-hover: #f6f7f9;
    --surface-inset:      #eef0f4;

    --text-primary:   #1a1a1a;       /* encre historique de l'app */
    --text-secondary: var(--pm-ink-500);
    --text-muted:     var(--pm-ink-400);

    --border-subtle:  rgba(10, 12, 16, 0.08);
    --border-default: rgba(10, 12, 16, 0.12);
    --border-strong:  rgba(10, 12, 16, 0.18);

    --shadow-sm: 0 1px 2px rgba(16, 18, 22, 0.06);
    --shadow-md: 0 8px 24px rgba(16, 18, 22, 0.10);

    --status-success:    #2F7D4F;
    --status-success-bg: #E8F3EC;
    --status-warning:    #9A6E16;
    --status-warning-bg: #FBF1DC;
    --status-danger:     #B23B28;
    --status-danger-bg:  #FBEAE6;
    --status-info:       #2F6B96;
    --status-info-bg:    #E7F0F7;

    /* ---- Accent : repli neutre encre (aucun espace résolu) ----
       Jamais de corail ni de violet ici : ces accents historiques
       appartiennent au menu latéral, pas aux composants d'espace. */
    --accent:        var(--pm-ink-500);
    --accent-strong: var(--pm-ink-700);
    --accent-soft:   rgba(74, 79, 88, 0.10);
    --accent-line:   rgba(74, 79, 88, 0.35);
}

/* ============================================================
   IDENTITÉ DE FILIÈRE (déménagée de dashboard.css — ADR 0039)
   ------------------------------------------------------------
   Teintes claires --filiere : alignées sur les variantes « sur
   fond sombre » du colors.css de la vitrine PM (EOPN or aviation,
   EOPAN bleu marine, ALAT olive). --filiere-ink = texte lisible
   SUR un aplat --filiere (les trois teintes sont claires : du
   blanc dessus tomberait à ~2,2:1).

   --filiere-strong (ADR 0039) : variante FONCÉE pour texte et
   traits fins sur fond clair — reprise des accents « encre » de
   la vitrine (EOPAN, ALAT tels quels ; EOPN assombri de #A9791E
   pour passer 4,5:1 sur blanc). C'est l'équivalent du couple
   or/or-foncé du thème clair Concours Armée.

   Les sélecteurs de composants (.dash-space-*) permettent au
   commutateur et au choix d'espace de teinter chaque option de
   SA filière, indépendamment de l'espace actif. ---- */
body[data-space="eopn"],
.dash-space-switcher[data-space="eopn"],
.dash-space-option[data-space="eopn"],
.dash-space-choice__card[data-space="eopn"] {
    --filiere: #d7a93e;
    --filiere-soft: rgba(215, 169, 62, 0.18);
    --filiere-line: rgba(215, 169, 62, 0.5);
    --filiere-strong: #8A661A;
    --filiere-ink: #1f2937;
}

body[data-space="eopan"],
.dash-space-switcher[data-space="eopan"],
.dash-space-option[data-space="eopan"],
.dash-space-choice__card[data-space="eopan"] {
    --filiere: #6e9cc4;
    --filiere-soft: rgba(110, 156, 196, 0.2);
    --filiere-line: rgba(110, 156, 196, 0.55);
    --filiere-strong: #1C3D5A;
    --filiere-ink: #1f2937;
}

body[data-space="alat"],
.dash-space-switcher[data-space="alat"],
.dash-space-option[data-space="alat"],
.dash-space-choice__card[data-space="alat"] {
    --filiere: #9db06b;
    --filiere-soft: rgba(157, 176, 107, 0.2);
    --filiere-line: rgba(157, 176, 107, 0.5);
    --filiere-strong: #3E4F25;
    --filiere-ink: #1f2937;
}

/* Dans un espace résolu, l'accent EST la filière (résolu sur body,
   où --filiere vient d'être définie). */
body[data-space="eopn"],
body[data-space="eopan"],
body[data-space="alat"] {
    --accent:        var(--filiere);
    --accent-strong: var(--filiere-strong);
    --accent-soft:   var(--filiere-soft);
    --accent-line:   var(--filiere-line);
}

/* ============================================================
   ZONE ENCRE — panneau navy ponctuel (état d'espace, ADR 0055 côté
   vitrine). L'app PM reste claire par conception (`color-scheme:
   light` ci-dessus, inchangé) : ces jetons ne s'emploient QUE sur
   un panneau isolé qui pose son propre fond sombre, jamais sur un
   composant de page. Valeurs reprises telles quelles du CSS source
   de la vitrine PM (bandes CTA, ADR 0055) — pas de nouvel hex. ---- */
:root {
    --pm-navy-950: #091420;
    --pm-navy-700: #1D384F;
    --pm-text-on-ink: #EAF1F6;
    --pm-text-on-ink-secondary: #A9BAC8;
    --pm-border-subtle-ink: rgba(255, 255, 255, 0.08);
}
