/* PCC Lusigny — v3.27.13 : vue de commandement, hiérarchie visuelle, sémantique des couleurs, lisibilité terrain.
   4 couleurs de statut seulement : ROUGE = danger immédiat / vital / bloquant · ORANGE = urgent / veille renforcée ·
   VERT = fait / disponible / confirmé · GRIS = information / historique / statistiques. Contrastes WCAG AA (testés). */
:root {
  --cmd-actif-fond: #1F4E79; --cmd-actif-txt: #FFFFFF; --cmd-chiffre: #1C2B2A;
  --st-rouge: #B91C1C; --st-rouge-fond: #FEE2E2; --st-rouge-bord: #B91C1C;
  --st-orange: #9A3412; --st-orange-fond: #FFEDD5; --st-orange-bord: #C2410C;
  --st-vert: #166534; --st-vert-fond: #DCFCE7; --st-vert-bord: #15803D;
  --st-gris: #374151; --st-gris-fond: #F1F5F9; --st-gris-bord: #94A3B8;
}
:root[data-theme="dark"] {
  --cmd-actif-fond: #BFDBFE; --cmd-actif-txt: #0F172A; --cmd-chiffre: #F1F5F9;
  --st-rouge: #FECACA; --st-rouge-fond: #7F1D1D; --st-rouge-bord: #F87171;
  --st-orange: #FED7AA; --st-orange-fond: #7C2D12; --st-orange-bord: #FB923C;
  --st-vert: #BBF7D0; --st-vert-fond: #14532D; --st-vert-bord: #4ADE80;
  --st-gris: #E2E8F0; --st-gris-fond: #1E293B; --st-gris-bord: #64748B;
}
[data-sem="rouge"] { color: var(--st-rouge); background: var(--st-rouge-fond); border-color: var(--st-rouge-bord); }
[data-sem="orange"] { color: var(--st-orange); background: var(--st-orange-fond); border-color: var(--st-orange-bord); }
[data-sem="vert"] { color: var(--st-vert); background: var(--st-vert-fond); border-color: var(--st-vert-bord); }
[data-sem="gris"] { color: var(--st-gris); background: var(--st-gris-fond); border-color: var(--st-gris-bord); }

/* ---- lisibilité terrain : texte ≥ 16 px, boutons ≥ 44 px, plus de gris clair sur blanc ---- */
#tableauBord { font-size: 16px; }
#tableauBord .db-maj, #tableauBord .db-k-titre, #tableauBord .db-k-sous, #tableauBord .db-lien, #tableauBord .db-evt-h,
#tableauBord .db-evt-titre, #tableauBord .db-evt-de, #tableauBord .db-evt-txt, #tableauBord .db-pastille, #tableauBord .db-badge,
#tableauBord .db-prio, #tableauBord small, #tableauBord .btn, #tableauBord .btn-sm, #tableauBord a, #tableauBord .db-vide, #tableauBord label, #tableauBord select { font-size: 1rem; }
#tableauBord .db-maj, #tableauBord .db-k-titre, #tableauBord .db-k-sous, #tableauBord .db-evt-h, #tableauBord .db-evt-de,
#tableauBord .db-vide, #tableauBord small { color: var(--st-gris); }
#tableauBord .btn, #tableauBord .btn-sm, #tableauBord button, #tableauBord select, #tableauBord .db-lien { min-height: 48px; }
#tableauBord .db-lien { display: inline-flex; align-items: center; }
/* couleurs de statut du tableau : seulement les 4 sens */
#tableauBord .db-pastille-veille { color: var(--st-vert); background: var(--st-vert-fond); border-color: var(--st-vert-bord); }
#tableauBord .db-pastille-actif { color: var(--st-rouge); background: var(--st-rouge-fond); border-color: var(--st-rouge-bord); }
#tableauBord .db-pastille-clos { color: var(--st-gris); background: var(--st-gris-fond); border-color: var(--st-gris-bord); }
#tableauBord .db-prio-vitale { color: var(--st-rouge); background: var(--st-rouge-fond); border-color: var(--st-rouge-bord); }
#tableauBord .db-prio-urgente { color: var(--st-orange); background: var(--st-orange-fond); border-color: var(--st-orange-bord); }
#tableauBord .db-prio-normale { color: var(--st-gris); background: var(--st-gris-fond); border-color: var(--st-gris-bord); }
#tableauBord .db-badge-fait { color: var(--st-vert); background: var(--st-vert-fond); border-color: var(--st-vert-bord); }
#tableauBord .db-badge-suivre { color: var(--st-orange); background: var(--st-orange-fond); border-color: var(--st-orange-bord); }
#tableauBord .db-attention { color: var(--st-orange); font-weight: 700; }

/* ---- hiérarchie : moins de cadres, plus d'espace ; N4 (statistiques) petit, gris, en bas ---- */
#tableauBord .db-carte { box-shadow: none; }
#tableauBord .db-cartes { gap: 20px; }
.cmd-stats { margin: 24px 0 8px; font-size: 1rem; color: var(--st-gris); font-weight: 400; border-top: 1px solid var(--st-gris-bord); padding-top: 12px; }

/* ---- bascule de vue ---- */
.cmd-bascule { display: flex; gap: 8px; margin: 8px 0 12px; flex-wrap: wrap; }
.cmd-bascule .btn { min-height: 48px; font-size: 1rem; }
.cmd-bascule .btn[aria-pressed="true"] { background: var(--cmd-actif-fond); color: var(--cmd-actif-txt); border-color: var(--cmd-actif-fond); font-weight: 700; }

/* ---- bandeau de situation + horloge (niveau 1) ---- */
.cmd-bandeau { border-left: 8px solid var(--st-gris-bord); padding: 12px 16px; margin: 0 0 16px; background: var(--lusigny-surface, #fff); }
.cmd-bandeau[data-etat="actif"] { border-left-color: var(--st-rouge-bord); }
.cmd-bandeau[data-etat="clos"] { border-left-color: var(--st-vert-bord); }
.cmd-b-haut { display: flex; flex-wrap: wrap; gap: 12px 24px; align-items: center; justify-content: space-between; }
.cmd-b-evt { margin: 0 0 6px; font-size: 1.5rem; font-weight: 800; line-height: 1.2; color: var(--lusigny-slate); }
.cmd-niv, .cmd-h-etat, .cmd-tag, .cmd-etat, .cmd-compte, .cmd-nonaff { display: inline-block; font-size: 1rem; font-weight: 750; padding: 2px 10px; border-radius: 6px; border: 2px solid transparent; }
.cmd-horloge { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; }
.cmd-h-duree { font-size: 2rem; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--lusigny-slate); }
.cmd-h-det { font-size: 1rem; color: var(--st-gris); }
.cmd-b-faits { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px 20px; margin: 12px 0 0; }
.cmd-f dt { font-size: 1rem; color: var(--st-gris); font-weight: 600; }
.cmd-f dd { margin: 0; font-size: 1.125rem; font-weight: 700; color: var(--lusigny-slate); }
.cmd-f dd.cmd-f-vide { color: var(--st-gris); font-weight: 400; }
.cmd-b-neutre { margin: 12px 0 0; font-size: 1rem; color: var(--st-gris); }
.cmd-modifier { margin-top: 12px; min-height: 48px; font-size: 1rem; }

/* ---- vue Commandement : 6 grands chiffres (≥ 48 px) ---- */
.cmd-vue { display: none; }
#tableauBord[data-vue="commandement"] .cmd-vue { display: block; margin: 0 0 16px; }
#tableauBord[data-vue="commandement"] .db-cartes, #tableauBord[data-vue="commandement"] .db-alerte,
#tableauBord[data-vue="commandement"] .db-fil, #tableauBord[data-vue="commandement"] .db-outils,
#tableauBord[data-vue="commandement"] .cmd-stats, #tableauBord[data-vue="commandement"] .db-tete-actions { display: none; }
.cmd-figs { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; }
.cmd-fig { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; min-height: 120px; padding: 12px 16px; border: 3px solid transparent; border-radius: 10px; text-decoration: none; }
.cmd-fig-n { font-size: 3.5rem; line-height: 1; font-weight: 850; font-variant-numeric: tabular-nums; }
.cmd-fig-l { font-size: 1.125rem; font-weight: 700; margin-top: 6px; }

/* ---- missions : le cœur de l'écran ---- */
.cmd-missions { margin: 0 0 20px; }
.cmd-missions-tete { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; align-items: center; margin-bottom: 8px; }
.cmd-h2 { margin: 0; font-size: 1.25rem; font-weight: 800; color: var(--lusigny-slate); }
.cmd-lien { color: var(--lusigny-teal-dark, #064C58); font-weight: 700; font-size: 1rem; text-decoration: none; display: inline-flex; align-items: center; min-height: 48px; }
.cmd-m-liste { list-style: none; margin: 0; padding: 0; }
.cmd-m { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: flex-start; padding: 12px 8px; border-top: 1px solid var(--st-gris-bord); }
.cmd-m-vitale { border-left: 6px solid var(--st-rouge-bord); background: var(--st-rouge-fond); padding-left: 12px; }
.cmd-m-urgente { border-left: 6px solid var(--st-orange-bord); padding-left: 12px; }
.cmd-m-corps { flex: 1 1 260px; min-width: 0; }
.cmd-m-titre { font-size: 1.125rem; color: var(--lusigny-slate); }
.cmd-m-vitale .cmd-m-titre { color: var(--st-rouge); }
.cmd-m-meta { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; margin-top: 4px; font-size: 1rem; }
.cmd-eq { font-weight: 700; }
.cmd-age { font-variant-numeric: tabular-nums; color: var(--st-gris); }
.cmd-lieu { color: var(--st-gris); }
.cmd-m-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.cmd-m-actions .btn { min-height: 48px; min-width: 48px; font-size: 1rem; }
.cmd-calme { margin: 8px 0; font-size: 1rem; color: var(--st-gris); }
.cmd-m-vitale .cmd-age, .cmd-m-vitale .cmd-lieu { color: var(--st-rouge); }

/* ---- puce d'horloge dans l'en-tête ---- */
.clock-chip { display: inline-flex; align-items: center; gap: 6px; min-height: 48px; padding: 2px 10px; border-radius: 8px; border: 2px solid #fff; color: #fff; text-decoration: none; font-weight: 800; font-size: .9rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.clock-chip[data-etat="actif"] { background: #B91C1C; }
.clock-chip[data-etat="clos"] { background: #166534; }
.clock-chip[data-etat="veille"] { background: #374151; }

/* ---- bandeau réseau / mode dégradé ---- */
.cmd-reseau { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 10px 16px; margin: 0 0 12px; border: 3px solid transparent; border-radius: 8px; font-size: 1rem; }
.cmd-reseau[hidden] { display: none; }
.cmd-reseau[data-famille="hors-ligne"] { color: var(--st-rouge); background: var(--st-rouge-fond); border-color: var(--st-rouge-bord); }
.cmd-reseau[data-famille="faible"] { color: var(--st-orange); background: var(--st-orange-fond); border-color: var(--st-orange-bord); }
.cmd-reseau[data-famille="ok"] { color: var(--st-gris); background: var(--st-gris-fond); border-color: var(--st-gris-bord); }
.cmd-reseau .btn { min-height: 48px; font-size: 1rem; margin-left: auto; }
.cmd-leger-bt { min-height: 48px; min-width: 48px; font-size: 1rem; }   /* v3.28.1 : zone tactile >= 48 px aussi pour « Affichage léger » */
.cmd-reseau .btn + .btn { margin-left: 0; }

/* ---- affichage léger : l'essentiel seulement ---- */
body.leger #tableauBord .db-cartes, body.leger #tableauBord .db-fil, body.leger #tableauBord .db-outils,
body.leger #tableauBord .cmd-stats, body.leger #tableauBord #dbPlaceCarte { display: none; }
body.leger .cmd-vue { display: block; margin: 0 0 16px; }
body.leger * { animation: none !important; transition: none !important; }

@media (max-width: 480px) { .cmd-fig-n { font-size: 3rem; } .cmd-b-evt { font-size: 1.25rem; } }
@media print { .cmd-bascule, .cmd-reseau, .clock-chip { display: none !important; } }

/* ---- les blocs de commandement occupent toute la largeur de la grille du tableau ---- */
#tableauBord > .cmd-bascule, #tableauBord > .cmd-bandeau, #tableauBord > .cmd-vue, #tableauBord > .cmd-missions, #tableauBord > .cmd-stats { grid-column: 1 / -1; }

/* étiquettes pleines (lisibles de loin) */
:root { --st-plein-rouge: #B91C1C; --st-plein-orange: #C2410C; --st-plein-gris: #475569; --st-plein-txt: #fff; }
:root[data-theme="dark"] { --st-plein-rouge: #F87171; --st-plein-orange: #FB923C; --st-plein-gris: #94A3B8; --st-plein-txt: #0F172A; }
.cmd-tag[data-sem="rouge"] { background: var(--st-plein-rouge); color: var(--st-plein-txt); border-color: var(--st-plein-rouge); }
.cmd-tag[data-sem="orange"] { background: var(--st-plein-orange); color: var(--st-plein-txt); border-color: var(--st-plein-orange); }
.cmd-tag[data-sem="gris"] { background: var(--st-plein-gris); color: var(--st-plein-txt); border-color: var(--st-plein-gris); }

/* ---- main courante : filtres rapides + entrées fortes (affichage seul) ---- */
.cmd-filtres { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }
.cmd-filtres .btn { min-height: 48px; font-size: 1rem; }
.cmd-filtres .btn[aria-pressed="true"] { background: var(--cmd-actif-fond); color: var(--cmd-actif-txt); border-color: var(--cmd-actif-fond); font-weight: 700; }
.mco-entry.mco-fort { border-left: 6px solid var(--st-rouge-bord); background: var(--st-rouge-fond); font-weight: 600; }
.mco-entry.mco-fort strong { color: var(--st-rouge); }

/* ---- carte : bouton plein écran très visible (≥ 48 px), portrait et paysage ---- */
body #dbPleinEcran { min-height: 48px; min-width: 48px; padding: 0 18px; font-size: 1rem; font-weight: 800; background: var(--cmd-actif-fond); color: var(--cmd-actif-txt); border: 2px solid var(--cmd-actif-fond); }
body #dbPleinEcran::before { content: "⛶ "; }

/* ---- v3.28 (complément, correction 2) : vue Opérateur — tout texte >= 16 px, aucune couleur hors règle ----
   RÈGLE DES COULEURS : (1) les 4 couleurs de STATUT (rouge, orange, vert, gris) disent un état, jamais autre chose ;
   (2) tout ce qui n'est PAS un état (étiquette de fonction DOS/SECU/…, liens « Voir… », titres, chiffres, bouton actif) prend la couleur
   NEUTRE de la charte (bleu --cmd-actif-fond) ou le texte principal (--cmd-chiffre). Plus de violet, ni de bleu ciel/turquoise/orange
   décoratifs. Étiquette de fonction : 16 px gras, blanc sur bleu foncé (contraste > 8:1) — aucune dérogation à 14 px n'est nécessaire. */
#tableauBord .kpi-card .kpi-label, #tableauBord .kpi-card .kpi-sub, #tableauBord .db-aide-carte, #tableauBord .mco-entry,
#tableauBord .mco-time, #tableauBord .mco-badge, #tableauBord .card-title { font-size: 1rem; }
#tableauBord .kpi-card .kpi-label, #tableauBord .kpi-card .kpi-sub, #tableauBord .db-aide-carte, #tableauBord .mco-time { color: var(--st-gris); }
#tableauBord .kpi-card .kpi-val { color: var(--cmd-chiffre); }
#tableauBord .mco-badge { background: var(--cmd-actif-fond); color: var(--cmd-actif-txt); font-weight: 800; padding: 2px 8px; border-radius: 6px; }
#tableauBord .card-title { color: var(--cmd-chiffre); }
#tableauBord .db-lien, #tableauBord .db-k-lien { color: var(--cmd-actif-fond); }
#tableauBord .a-traiter { border-left-color: var(--st-rouge-bord); }
#tableauBord .a-traiter.calme { border-left-color: var(--st-vert-bord); }
#tableauBord .a-traiter-liste li.rouge { color: var(--st-rouge); background: var(--st-rouge-fond); }
#tableauBord .a-traiter-liste li.orange { color: var(--st-orange); background: var(--st-orange-fond); }
#tableauBord .a-traiter-liste li.info { color: var(--st-gris); background: var(--st-gris-fond); }
/* correction 4 : pastille de niveau — texte >= 16 px à toutes les largeurs (844 px compris) */
#tableauBord .db-niveau, #tableauBord .db-niveau * { font-size: 1rem; }
/* correction 3 : ordre de lecture identique à toutes les tailles — titre et état, bandeau (avec l'horloge), 6 chiffres, missions.
   (En colonne unique, les blocs sans « order » passaient avant le titre, qui tombait sous la liste des missions.) */
@media (max-width: 1023px) {
  .db-niveau { order: 0; } .db-tete { order: 1; } .cmd-bascule { order: 2; } .cmd-bandeau { order: 3; } .cmd-vue { order: 4; } .cmd-missions { order: 5; }
  .db-alerte { order: 6; } .db-cartes { order: 7; } .db-fil { order: 8; } .db-outils { order: 9; } .db-place { order: 10; } .cmd-stats { order: 11; }
}
