/*
 * Tokens du design system du projet (direction contrastée) : palette claire, puis palette sombre
 * « Graphite » (CDC P0 § 11, « Mode sombre », lot 159) en fin de fichier.
 * Seul fichier à contenir des valeurs de couleur, de taille, de rayon et d'ombre : les autres
 * feuilles passent par ces variables.
 * Les noms désignent un rôle (fond, texte, bordure…) : la palette sombre redéfinit ces variables
 * sans toucher aux composants. Chaque token de couleur ou d'ombre a ses deux valeurs ; un alias
 * (var(--…)) suit sa cible dans les deux palettes, sauf s'il est redéfini en sombre.
 * Surfaces : la page est sur fond gris (canvas), les contenus dans des panneaux blancs (surface)
 * détachés par une ombre de carte, le kanban sur une bande marine (board).
 * Ratios de contraste (WCAG 2.x) : 4,5:1 minimum pour le texte, 3:1 pour les bordures de
 * contrôle, les formes porteuses de sens et le focus.
 */
:root {
    color-scheme: light;        /* contrôles natifs, barres de défilement, listes et calendriers en clair */

    /* Fonds */
    --canvas: #f4f4f2;          /* fond de page sous l'en-tête blanc : ink 11,1:1, ink-muted 5:1, navy 10,8:1, line-strong 3,3:1 */
    --surface: #ffffff;         /* panneaux, cartes, en-tête du site, champs : ink 12,3:1, ink-muted 5,5:1, navy 11,9:1 */
    --surface-sunken: #f5f7fa;  /* bloc en retrait dans un panneau (zone de message, code) : ink 11,4:1, ink-muted 5,1:1, navy 11:1, line-strong 3,4:1 */
    --surface-hover: #f7f7f5;   /* survol d'une ligne, d'un onglet, d'une carte : ink-done 6,1:1 */
    --field: var(--surface);    /* fond des champs de saisie (champ, recherche, éditeur) : ink 12,3:1, line-strong 3,6:1 */

    /* Kanban : bande marine et listes */
    --board: #1a3a52;           /* bande du kanban : on-board 11,9:1, on-board-muted 8:1 ; list dessus 10,6:1 */
    --on-board: #ffffff;        /* titre posé sur board : 11,9:1 ; anneau de focus sur board : 11,9:1 */
    --on-board-muted: #c9d6e2;  /* compteur et aide posés sur board : 8:1 */
    --list: #f1f2f4;            /* liste (colonne) du kanban : ink 10,9:1, ink-muted 4,9:1, ink-done 5,8:1, line-strong 3,2:1 */
    --list-hover: #e2e4e9;      /* survol de « Ajouter une tâche » dans une liste : ink 9,6:1 */
    --list-active: #dfe7ef;     /* bandeau de la liste « En cours » : navy 9,5:1 */
    --list-done: #e9eaed;       /* liste « Terminé », un cran plus foncée : ink-done 5,4:1, ink-muted 4,6:1 */
    --count-pill: #ffffff;      /* pastille du compteur d'une liste : ink gras 12,3:1 */
    --card: var(--surface);     /* carte de tâche du kanban : navy 11,9:1, ink-muted 5,5:1, line-strong 3,6:1 */
    --card-done: var(--surface-hover); /* carte d'une tâche terminée : ink-done 6,1:1 */
    --avatar: var(--list-active); /* pastille d'initiales : initiales navy 9,5:1 */

    /* Traits */
    --line: #e9e9e7;            /* séparateur décoratif, jamais seul pour délimiter un contrôle */
    --line-strong: #83878e;     /* bordure de champ, de bouton secondaire, pastille « Non assignée » : 3,6:1 sur surface, 3,3:1 sur canvas, 3,2:1 sur list */

    /* Texte */
    --ink: #37352f;             /* 12,3:1 sur surface, 11,1:1 sur canvas, 11,4:1 sur surface-sunken, 10,9:1 sur list */
    --ink-muted: #6a6965;       /* 5,5:1 sur surface, 5:1 sur canvas, 5,1:1 sur surface-sunken, 4,9:1 sur list et neutral-soft, 5,1:1 sur surface-hover */
    --ink-done: #5f5e5a;        /* titre de la liste « Terminé », titre barré d'une carte terminée : 5,4:1 sur list-done, 6,1:1 sur surface-hover */

    /* Marque et action */
    --navy: #1a3a52;            /* liens, titres, bouton principal, initiales : 11,9:1 sur surface, 10,8:1 sur canvas, 11:1 sur surface-sunken */
    --navy-hover: #10283a;      /* survol : 15,1:1 sur surface */
    --navy-soft: #eef2f6;       /* fond de sélection discret : navy dessus à 10,6:1 */
    --on-navy: #ffffff;         /* texte sur aplat navy : 11,9:1 (15,1:1 sur navy-hover) */
    --orange: #f7941d;          /* un seul point par écran (onglet actif), jamais du texte : 2,3:1 sur surface */
    --focus-ring: var(--navy);  /* anneau de focus : 11,9:1 sur surface, 10,8:1 sur canvas, 10,4:1 sur danger-soft */

    /* États : toujours avec un libellé et une forme */
    --success: #1d5a85;         /* bleu, pas vert : 7,4:1 sur surface, 6,7:1 sur canvas, 6,4:1 sur success-soft */
    --success-soft: #e8f0f7;    /* fond d'un message de succès : ink 10,7:1 */
    --danger: #b3261e;          /* 6,5:1 sur surface, 5,9:1 sur canvas, 5,7:1 sur danger-soft */
    --danger-soft: #fdeceb;     /* fond d'un message d'erreur et du résumé d'erreurs : ink 10,7:1 */
    --danger-hover: #8f1e18;    /* survol du bouton destructif : on-danger dessus à 8,9:1 */
    --on-danger: #ffffff;       /* texte sur aplat danger : 6,5:1 */
    --warning: #8a4b00;         /* ambre : 6,8:1 sur surface, 6,2:1 sur canvas, 6,1:1 sur warning-soft */
    --warning-soft: #fbf1e3;
    --neutral: #605f5b;         /* 6,6:1 sur surface, 5,8:1 sur canvas, 5,7:1 sur neutral-soft */
    --neutral-soft: #f1f1ef;    /* fond des étiquettes neutres, des messages d'information et des compteurs en pastille */

    /* Formes de statut de tâche : la forme et le libellé portent la différence, pas la teinte */
    --status-backlog: var(--ink);     /* carré arrondi à deux traits : 12,3:1 sur surface, 10,9:1 sur list ; plus foncé que « À faire » et « Demande » */
    --status-todo: var(--ink-muted);  /* cercle vide : 5,5:1 sur surface, 5:1 sur canvas */
    --status-active: var(--navy);     /* demi-cercle, cercle pointé, cercle plein : 11,9:1 sur surface */
    --status-request: var(--ink-muted); /* cercle en pointillés (demande client) : 5,5:1 sur surface */
    --status-refused: var(--ink);       /* cercle barré d'une croix (demande refusée) : 12,3:1 sur surface */

    /* Priorité haute : étiquette ambre (6,1:1 sur warning-soft) et filet gauche de la carte (6,8:1 contre le blanc) */
    --priority-high: var(--warning);

    /* Typographie */
    --font-sans: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --font-mono: "Space Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    --font-weight-regular: 400;
    --font-weight-medium: 500;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;
    --text-title-1: 600 26px/32px var(--font-sans);      /* titre de page (h1), en navy */
    --text-title-2: 600 18px/26px var(--font-sans);      /* titre de section (h2), en-tête de panneau */
    --text-title-3: 600 14px/20px var(--font-sans);      /* sous-section, titre de bloc */
    --text-body: 400 14px/20px var(--font-sans);         /* texte courant */
    --text-body-client: 400 15px/22px var(--font-sans);  /* texte courant côté client, jamais plus grand */
    --text-board-title: 600 16px/22px var(--font-sans);  /* titre « Tâches » posé sur la bande du kanban */
    --text-card-title: 600 15px/21px var(--font-sans);   /* titre d'une carte de tâche */
    --text-label: 500 13px/18px var(--font-sans);        /* en-tête de colonne, statut de tâche */
    --text-column-title: 700 14px/20px var(--font-sans); /* titre d'une liste du kanban */
    --text-small: 400 13px/18px var(--font-sans);        /* métadonnées, aides, messages */
    --text-caption: 400 12px/16px var(--font-sans);      /* méta des cartes, étiquettes, compteurs */
    --text-tag: 400 11px/16px var(--font-sans);          /* étiquette libre d'une tâche (tag) */
    --text-initials: 700 10px/1 var(--font-sans);        /* initiales d'une pastille */
    --text-button: 500 13px/18px var(--font-sans);       /* libellé de bouton */
    --text-mono: 400 12px/16px var(--font-mono);         /* référence d'un projet, codes */
    --text-brand-short: 700 16px/22px var(--font-sans);  /* nom court du studio dans l'en-tête sous 640 px (« RPW ») */
    --text-error-code: 700 64px/1 var(--font-sans);      /* code d'une page d'erreur (« 404 »), écrit en grand en tête du panneau */
    --text-figure: 700 32px/40px var(--font-sans);       /* chiffre du forfait du rapport de temps client (« 11 h 30 », lot 173) */
    --input-font-size-mobile: 16px;                      /* texte des champs sous 640 px : iOS Safari zoome en dessous de 16 px */
    --text-input-mobile: 400 var(--input-font-size-mobile)/22px var(--font-sans); /* champ de saisie sous 640 px */

    /* Espacements */
    --space-1: 4px;
    --space-2: 6px;
    --space-3: 10px;
    --space-4: 12px;
    --space-5: 16px;
    --space-6: 24px;
    --space-7: 32px;
    --space-8: 64px;
    --space-tag: 2px;       /* rembourrage vertical d'une étiquette d'état ou de priorité */
    --space-tag-sm: 1px;    /* rembourrage vertical d'une étiquette libre (tag) */
    --space-priority-inline: 7px; /* rembourrage horizontal de l'étiquette « Priorité haute » */

    /* Rayons */
    --radius-sm: 4px;       /* étiquettes, petits éléments, focus */
    --radius-md: 6px;       /* boutons, champs, messages, résumé d'erreurs, menus */
    --radius-lg: 8px;       /* panneaux et cartes de tâche */
    --radius-xl: 10px;      /* listes (colonnes) du kanban */
    --radius-full: 9999px;  /* formes rondes, pastilles d'initiales, compteurs */

    /* Ombres */
    --shadow-card: 0 1px 1px rgb(9 30 66 / 0.25), 0 0 1px rgb(9 30 66 / 0.31);   /* bloc blanc au repos sur fond gris (panneau, carte) */
    --shadow-list: 0 1px 0 rgb(9 30 66 / 0.35);                                   /* liste du kanban sur board : liseré bas */
    --shadow-float: 0 4px 16px rgb(15 15 15 / 0.08), 0 0 0 1px rgb(15 15 15 / 0.05); /* ce qui flotte : menu, message collé, carte glissée */
    --shadow-panel: -1px 0 0 rgb(9 30 66 / 0.18), -16px 0 40px -8px rgb(9 30 66 / 0.28); /* panneau de tâche : liseré et ombre portée vers la gauche (lot 154) */

    /* Traits : épaisseurs et décalages */
    --line-width: 1px;          /* trait de séparation, bordure de champ, de bouton ou d'image */
    --indicator-width: 2px;     /* soulignement de l'onglet actif, anneau du bouton occupé */
    --dash-width: 1.5px;        /* contour en pointillés de la pastille « Non assignée » */
    --focus-width: 2px;         /* anneau de focus, contour pointillé du glisser-déposer */
    --focus-offset: 2px;        /* décalage de l'anneau de focus */
    --focus-offset-inset: 1px;  /* décalage de l'anneau de focus d'un champ, collé à sa bordure */
    --underline-offset: 0.15em; /* soulignement des liens */

    /* Typographie : approche */
    --tracking-code: 0.05em;    /* clé secrète de l'enrôlement, en Space Mono */
    --tracking-initials: 0.02em; /* initiales d'une pastille */
    --tracking-error-code: -0.02em; /* code d'une page d'erreur, en grand */

    /* Tailles */
    --control-height: 32px;     /* champs et boutons sur ordinateur */
    --control-height-sm: 28px;  /* boutons compacts (en-tête, cartes) */
    --touch-target: 44px;       /* toute cible sous 640 px de large et sur écran tactile */
    --target-min: 24px;         /* plus petite cible admise (WCAG 2.2), ex. lien d'une liste ou poignée sur ordinateur */
    --choice-input-size: 16px;  /* bouton radio, dans une option de --choice-size dont le libellé est cliquable */
    --shape-size: 14px;         /* forme de statut de tâche, forme d'un message */
    --shape-size-sm: 12px;      /* forme d'une étiquette ou d'une erreur de champ */
    --shape-size-xs: 10px;      /* forme de priorité */
    --handle-dots-width: 10px;  /* zone des six points de la poignée du kanban */
    --handle-dots-height: 12px;
    --handle-dot-radius: 1.2px; /* rayon d'un point de la poignée */
    --handle-dot-fade: 1.6px;   /* bord adouci d'un point de la poignée */
    --handle-dot-step: 5px;     /* pas de la grille des points de la poignée */
    --spinner-size: 0.8em;      /* indicateur d'envoi dans un bouton */
    --avatar-size: 24px;        /* pastille d'initiales */
    --avatar-size-empty: 22px;  /* pastille vide « Non assignée » (contour compris) */
    --count-pill-height: 20px;  /* compteur en pastille */
    --count-pill-min-width: 22px;
    --priority-rule-width: 3px; /* filet gauche d'une carte en priorité haute */
    --menu-item-height: 30px;   /* colonne proposée dans le menu « Déplacer… » (44 px au doigt) */
    --action-menu-width: 16rem;        /* menu « Plus d'actions » du panneau de tâche (lot 136) */
    --property-menu-width: 16rem;      /* liste des choix d'une propriété du panneau de tâche (priorité, assignée) */
    --shortcuts-width: 20rem;          /* aide des raccourcis clavier de l'en-tête du kanban (lot 143) */
    --property-menu-max-height: 18rem; /* au-delà, la liste des choix défile dans son cadre */
    --search-width: 20rem;             /* champ de la recherche rapide de l'en-tête (lots 144 et 151) */
    --search-min-width: 10rem;         /* le champ rétrécit jusque-là pour garder l'en-tête sur une ligne */
    --site-menu-width: 13rem;          /* menus « Administration » et du compte de l'en-tête (lot 151) */
    --header-brand-max: 16rem;         /* nom du studio dans l'en-tête : au-delà, points de suspension */
    --header-brand-min: 6rem;          /* le nom du studio rétrécit jusque-là avant les autres éléments */
    --header-name-max: 10rem;          /* nom de la personne dans l'en-tête : au-delà, points de suspension */
    --header-name-max-sm: 5rem;        /* même nom sous 640 px */
    --avatar-size-header: 26px;        /* pastille d'initiales du menu du compte */
    --chevron-size: 5px;               /* chevron décoratif d'un bouton de menu de l'en-tête */
    --search-results-width: 28rem;     /* liste des résultats sous le champ */
    --search-results-max-height: 26rem; /* au-delà, la liste des résultats défile dans son cadre */
    --header-height: 52px;
    --header-height-sm: 56px;          /* en-tête sur une rangée sous 640 px (lot 152) */
    --header-short-name-max: 8rem;     /* nom court du studio sous 640 px : au-delà, points de suspension */
    --container-max: 90rem;
    --form-max: 36rem;
    --narrow-max: 24rem;
    --measure-max: 40rem;       /* longueur de ligne d'une introduction de page ou de section */
    --textarea-min-height: 8rem;
    --qr-code-max: 15rem;       /* code QR de l'enrôlement */
    --table-label-width: 7rem;  /* colonne des libellés d'un tableau empilé sur mobile */
    --matrix-permission-width: 11rem; /* colonne des permissions de la matrice, fixe pendant le défilement (mobile) */
    --matrix-permission-width-wide: 22rem; /* même colonne à partir de 768 px */
    --project-title-min: 15rem; /* largeur minimale du nom dans l'en-tête du projet : au-delà, les actions passent dessous */
    --task-panel-width: 36.25rem; /* panneau de tâche à droite du kanban (environ 580 px) */
    --attachment-tile-width: 110px;  /* vignette d'une pièce jointe du panneau de tâche (lot 138) */
    --attachment-tile-height: 74px;  /* aperçu d'une vignette, et case « Joindre » */
    --gauge-height: 14px;       /* barre de consommation du forfait du rapport de temps client (lot 173) */
    --chart-height: 180px;      /* zone des colonnes de l'histogramme du rapport de temps client, durée comprise (lot 175) */
    --chart-bar-width: 56px;    /* largeur maximale d'une colonne de l'histogramme */
    --chart-bar-thickness: 14px; /* épaisseur d'une barre horizontale de l'histogramme (sous 640 px, ou au-delà de douze barres) */
    --chart-label-max: 11rem;   /* largeur maximale du libellé d'une barre horizontale */
    --kanban-column-min: 15rem; /* largeur minimale d'une liste du kanban rétréci par le panneau (défilement dans le kanban) */
    --motion-panel: 160ms;      /* ouverture du panneau de tâche (aucune avec prefers-reduced-motion) */
}

/*
 * Hauteur des contrôles selon le contexte : compacte sur ordinateur, 44 px sous 640 px de large
 * et sur tout écran tactile (tablettes comprises).
 */
:root {
    --control-size: var(--control-height);
    --control-size-sm: var(--control-height-sm);
    --choice-size: var(--control-height-sm);
}

/*
 * Texte des champs de saisie (input, select, textarea, éditeur visuel) : celui du texte courant
 * sur ordinateur, 16 px sous 640 px pour qu'iOS Safari ne zoome pas sur le champ touché (lot 152).
 */
:root {
    --text-input: var(--text-body);
}

@media (max-width: 640px) {
    :root {
        --text-input: var(--text-input-mobile);
    }
}

@media (max-width: 640px), (pointer: coarse) {
    :root {
        --control-size: var(--touch-target);
        --control-size-sm: var(--touch-target);
        --choice-size: var(--touch-target);
    }
}

/*
 * Palette sombre « Graphite » (CDC P0 § 11, « Mode sombre ») : fonds anthracite neutres, bande en
 * marine assourdi, listes puis cartes de plus en plus claires, liens et bouton principal en bleu
 * clair, orange inchangé. Elle s'applique quand le système est en sombre (prefers-color-scheme)
 * et qu'aucun choix n'est posé, ou quand l'attribut data-theme="dark" est posé sur <html> ;
 * data-theme="light" garde la palette claire. Les deux blocs portent les mêmes valeurs (test
 * tests/Unit/Styles/DarkPaletteTest.php) ; les ratios sont notés dans le premier.
 * Écarts à la planche : line-strong éclairci (#717680 → #7e838d) pour tenir 3:1 sur les cartes ;
 * liseré clair ajouté à l'ombre des listes pour les détacher de la bande en niveaux de gris
 * (opacité 0,06, puis 0,12 au lot 161 : liseré à 1,45:1 contre la bande et la liste) ;
 * ink-done éclairci (#9a9995 → #a09f9b) pour tenir 4,5:1 sur les cartes ; neutral-soft éclairci
 * au lot 161 (#30333a → #383b42) : il était égal à line et plus sombre que les cartes, si bien
 * que les étiquettes neutres (« Invisible du client ») y faisaient un creux. Lot 162 (formulaires,
 * administration, « Mon compte », pages communes) : relevés sans écart, aucune valeur changée.
 * Le code QR de la double authentification garde son fond blanc (image).
 */
:root[data-theme="dark"] {
    color-scheme: dark;

    /* Fonds */
    --canvas: #16171a;          /* ink 14,5:1, ink-muted 7,3:1, navy 10,4:1, line-strong 4,7:1 */
    --surface: #1e2024;         /* panneaux, en-tête : ink 13,2:1, ink-muted 6,6:1, ink-done 5,7:1, navy 9,5:1, line-strong 4,3:1 */
    --surface-sunken: #25282d;  /* ink 12:1, ink-muted 6:1, navy 8,6:1, line-strong 3,9:1 */
    --surface-hover: #23262b;   /* ink 12,3:1, ink-muted 6,2:1, ink-done 5,3:1, navy 8,8:1 */
    --field: #16171a;           /* ink 14,5:1, ink-muted 7,3:1, line-strong 4,7:1 */

    /* Kanban */
    --board: #1f2e3d;           /* marine assourdi : on-board 11,2:1, on-board-muted 7,5:1 */
    --on-board: #e8e7e4;        /* 11,2:1 sur board ; anneau de focus sur board */
    --on-board-muted: #b3c0cc;  /* 7,5:1 sur board */
    --list: #2a2d33;            /* ink 11,2:1, ink-muted 5,6:1, ink-done 5,2:1, navy 8:1, line-strong 3,6:1 */
    --list-hover: #34373e;      /* survol de « Ajouter une tâche » et du Backlog replié : ink 9,6:1, navy 6,9:1 */
    --list-active: #2f3a47;     /* navy 6,7:1, ink 9,4:1 */
    --list-done: #25272c;       /* ink-done 5,6:1, ink-muted 6,1:1 */
    --count-pill: #3a3e45;      /* ink gras 8,7:1 */
    --card: #33363d;            /* navy 7:1, ink 9,8:1, ink-muted 4,9:1, line-strong 3,2:1, warning 6,6:1 */
    --card-done: #2a2c31;       /* ink-done 5,3:1, line-strong 3,7:1 */
    --avatar: #2f3f50;          /* initiales navy 6,3:1 */

    /* Traits */
    --line: #30333a;            /* séparateur décoratif */
    --line-strong: #7e838d;     /* 4,3:1 sur surface, 4,7:1 sur canvas et field, 3,6:1 sur list, 3,2:1 sur card, 3,7:1 sur card-done */

    /* Texte */
    --ink: #e8e7e4;             /* 13,2:1 sur surface, 9,8:1 sur card, 8,7:1 sur count-pill */
    --ink-muted: #a6a5a1;       /* 6,6:1 sur surface, 5,6:1 sur list, 4,9:1 sur card, 4,6:1 sur neutral-soft */
    --ink-done: #a09f9b;        /* 5,6:1 sur list-done, 5,3:1 sur card-done, 5,2:1 sur list, 4,6:1 sur card */

    /* Marque et action */
    --navy: #a9c9e6;            /* liens, titres, bouton principal, initiales, focus : 9,5:1 sur surface, 7:1 sur card, 8:1 sur list et board */
    --navy-hover: #c6dcef;      /* survol du bouton principal : on-navy 11,7:1 */
    --navy-soft: #26323f;       /* fond de sélection discret : navy 7,6:1 */
    --on-navy: #10202e;         /* texte sur aplat navy : 9,6:1 */
    --orange: #f7941d;          /* inchangé, jamais du texte */

    /* États */
    --success: #8fbfe6;         /* bleu : 8,4:1 sur surface, 6,8:1 sur success-soft */
    --success-soft: #1f3243;    /* ink 10,6:1 */
    --danger: #ff8f86;          /* 7,4:1 sur surface, 6,5:1 sur danger-soft */
    --danger-soft: #3d2322;     /* focus navy 8,3:1, ink 11,6:1 */
    --danger-hover: #ffb0a9;    /* on-danger 10,4:1 */
    --on-danger: #2a0d0b;       /* 8,2:1 sur danger */
    --warning: #f0b45a;         /* ambre : 8,8:1 sur surface, 7,2:1 sur warning-soft, 6,6:1 sur card (filet) */
    --warning-soft: #3a2e1c;
    --neutral: #c4c3bf;         /* 9,3:1 sur surface, 6,4:1 sur neutral-soft */
    --neutral-soft: #383b42;    /* étiquettes neutres, messages d'information, compteurs : plus clair que card (1,1:1) et que line (1,1:1) ; ink 9,1:1, ink-muted 4,6:1 */

    /* Ombres : plus denses, doublées d'un liseré clair */
    --shadow-card: 0 1px 2px rgb(0 0 0 / 0.5), 0 0 0 1px rgb(255 255 255 / 0.04);
    --shadow-list: 0 1px 0 rgb(0 0 0 / 0.5), 0 0 0 1px rgb(255 255 255 / 0.12);
    --shadow-float: 0 4px 16px rgb(0 0 0 / 0.5), 0 0 0 1px rgb(255 255 255 / 0.1);
    --shadow-panel: -1px 0 0 rgb(255 255 255 / 0.08), -16px 0 40px -8px rgb(0 0 0 / 0.6);
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        color-scheme: dark;
        --canvas: #16171a;
        --surface: #1e2024;
        --surface-sunken: #25282d;
        --surface-hover: #23262b;
        --field: #16171a;
        --board: #1f2e3d;
        --on-board: #e8e7e4;
        --on-board-muted: #b3c0cc;
        --list: #2a2d33;
        --list-hover: #34373e;
        --list-active: #2f3a47;
        --list-done: #25272c;
        --count-pill: #3a3e45;
        --card: #33363d;
        --card-done: #2a2c31;
        --avatar: #2f3f50;
        --line: #30333a;
        --line-strong: #7e838d;
        --ink: #e8e7e4;
        --ink-muted: #a6a5a1;
        --ink-done: #a09f9b;
        --navy: #a9c9e6;
        --navy-hover: #c6dcef;
        --navy-soft: #26323f;
        --on-navy: #10202e;
        --orange: #f7941d;
        --success: #8fbfe6;
        --success-soft: #1f3243;
        --danger: #ff8f86;
        --danger-soft: #3d2322;
        --danger-hover: #ffb0a9;
        --on-danger: #2a0d0b;
        --warning: #f0b45a;
        --warning-soft: #3a2e1c;
        --neutral: #c4c3bf;
        --neutral-soft: #383b42;
        --shadow-card: 0 1px 2px rgb(0 0 0 / 0.5), 0 0 0 1px rgb(255 255 255 / 0.04);
        --shadow-list: 0 1px 0 rgb(0 0 0 / 0.5), 0 0 0 1px rgb(255 255 255 / 0.12);
        --shadow-float: 0 4px 16px rgb(0 0 0 / 0.5), 0 0 0 1px rgb(255 255 255 / 0.1);
        --shadow-panel: -1px 0 0 rgb(255 255 255 / 0.08), -16px 0 40px -8px rgb(0 0 0 / 0.6);
    }
}

/*
 * Impression (lot 175 ; CDC P0 § 13, « Impression ») : toujours en palette claire, sur le papier
 * comme dans le PDF, même quand l'outil est en sombre (attribut ou système). Chaque token redéfini
 * par la palette sombre reprend ici sa valeur claire (test tests/Unit/Styles/PrintStylesTest.php) ;
 * mêmes sélecteurs que les blocs sombres, placés après eux, pour l'emporter.
 */
@media print {
    :root,
    :root[data-theme="dark"],
    :root:not([data-theme="light"]) {
        color-scheme: light;
        --canvas: #f4f4f2;
        --surface: #ffffff;
        --surface-sunken: #f5f7fa;
        --surface-hover: #f7f7f5;
        --field: var(--surface);
        --board: #1a3a52;
        --on-board: #ffffff;
        --on-board-muted: #c9d6e2;
        --list: #f1f2f4;
        --list-hover: #e2e4e9;
        --list-active: #dfe7ef;
        --list-done: #e9eaed;
        --count-pill: #ffffff;
        --card: var(--surface);
        --card-done: var(--surface-hover);
        --avatar: var(--list-active);
        --line: #e9e9e7;
        --line-strong: #83878e;
        --ink: #37352f;
        --ink-muted: #6a6965;
        --ink-done: #5f5e5a;
        --navy: #1a3a52;
        --navy-hover: #10283a;
        --navy-soft: #eef2f6;
        --on-navy: #ffffff;
        --orange: #f7941d;
        --success: #1d5a85;
        --success-soft: #e8f0f7;
        --danger: #b3261e;
        --danger-soft: #fdeceb;
        --danger-hover: #8f1e18;
        --on-danger: #ffffff;
        --warning: #8a4b00;
        --warning-soft: #fbf1e3;
        --neutral: #605f5b;
        --neutral-soft: #f1f1ef;
        --shadow-card: 0 1px 1px rgb(9 30 66 / 0.25), 0 0 1px rgb(9 30 66 / 0.31);
        --shadow-list: 0 1px 0 rgb(9 30 66 / 0.35);
        --shadow-float: 0 4px 16px rgb(15 15 15 / 0.08), 0 0 0 1px rgb(15 15 15 / 0.05);
        --shadow-panel: -1px 0 0 rgb(9 30 66 / 0.18), -16px 0 40px -8px rgb(9 30 66 / 0.28);
    }
}
