/* Nexsus 18-112 — direction artistique des consoles (CODIS, CRRA 15).
   Graphite profond, filets fins, titres condensés en capitales, chiffres en monospace, repères d'angle sur les blocs
   clés. Accent : rouge signal (CODIS) ou vert d'eau (CRRA 15) ; ambre pour les consignes, cyan pour l'information.
   S'applique avec <body class="console codis"> ou <body class="console crra">, par-dessus app.css. */
/* Couleurs et polices : app.css (:root). Ici, la mise en page des consoles. */
body.console {
  background: var(--c-bg);
  display: flex; flex-direction: column; overflow: hidden;
}

/* ---------- typographie */
.console h2, .console h3 { font-family: var(--c-titre); letter-spacing: .4px; }
.console h2 { font-size: 26px; font-weight: 700; text-transform: uppercase; }
.console .mono, .console .clock { font-family: var(--mono); }
.etiquette { font-family: var(--c-titre); font-size: 12px; font-weight: 600; letter-spacing: 1.6px; text-transform: uppercase; color: var(--c-muted); }

/* ---------- barre de commande */
.cmd { height: 54px; flex: none; display: flex; align-items: center; gap: 14px; padding: 0 14px 0 0; background: var(--c-bg2); border-bottom: 1px solid var(--c-line); position: relative; }
.cmd::after { content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; background: linear-gradient(90deg, var(--c-accent), transparent 38%); }
.cmd-marque { width: 214px; height: 100%; flex: none; display: flex; align-items: center; gap: 10px; padding: 0 14px; border-right: 1px solid var(--c-line); min-width: 0; }
.cmd-marque img { width: 32px; height: 32px; object-fit: contain; flex: none; }
.cmd-marque div { min-width: 0; }
.cmd-marque b { display: block; font-family: var(--c-titre); font-size: 18px; font-weight: 700; letter-spacing: .6px; text-transform: uppercase; line-height: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cmd-marque span { display: block; font-size: 11px; color: var(--c-muted); letter-spacing: .4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.cmd-poste { display: flex; align-items: center; gap: 8px; min-width: 0; flex: 0 1 260px; }
.cmd-poste .voyant { width: 8px; height: 8px; border-radius: 50%; background: var(--c-green); box-shadow: 0 0 0 3px rgba(34,197,94,.18); flex: none; }
.cmd-poste .etiquette { color: var(--c-text); white-space: nowrap; }
.cmd-poste #me, .cmd-poste #moi { font-size: 12px; color: var(--c-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.cmd .alertes { display: flex; gap: 4px; flex: none; }
.cmd .alertes button { height: 32px; padding: 0 10px; font-size: 12px; background: var(--c-panel); border: 1px solid var(--c-line2); border-radius: 3px; gap: 6px; }
.cmd .alertes button b { font-family: var(--mono); font-size: 13px; min-width: 14px; text-align: center; }
.cmd .alertes button.on { background: var(--c-accent-sombre); border-color: var(--c-accent); color: #fff; animation: veille 1.2s ease-in-out infinite; }
@keyframes veille { 50% { box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-accent) 30%, transparent); } }

.cmd .kpi div { background: transparent; border: 0; border-left: 1px solid var(--c-line); border-radius: 0; padding: 0 12px; }
.cmd .kpi b { font-family: var(--mono); font-size: 16px; }
.cmd-heure { text-align: right; line-height: 1.05; flex: none; }
.cmd-heure .clock { font-size: 20px; letter-spacing: 1px; }
.cmd-heure small { display: block; font-size: 10px; color: var(--c-muted); letter-spacing: 1px; text-transform: uppercase; }
.cmd-btn { height: 32px; padding: 0 10px; background: var(--c-panel); border-radius: 3px; font-size: 12px; }

/* ---------- rail de navigation */
.shell { flex: 1; min-height: 0; display: flex; }
.rail { width: 214px; flex: none; background: var(--c-bg2); border-right: 1px solid var(--c-line); padding: 10px 0; overflow-y: auto; display: flex; flex-direction: column; }
.rail .groupe { padding: 12px 16px 6px; }
.rail .tab { display: flex; align-items: center; gap: 11px; width: 100%; padding: 9px 16px; border-radius: 0; color: var(--c-muted); font-size: 13px; text-align: left; white-space: nowrap; border-left: 2px solid transparent; text-decoration: none; }
.rail .tab svg { width: 17px; height: 17px; flex: none; stroke: currentColor; fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.rail .tab:hover { color: var(--c-text); background: var(--c-panel); }
.rail .tab.active { color: #fff; background: linear-gradient(90deg, color-mix(in srgb, var(--c-accent) 16%, transparent), transparent); border-left-color: var(--c-accent); box-shadow: none; }
.rail .tab .compte { margin-left: auto; font-family: var(--mono); font-size: 11px; color: #fff; background: var(--c-accent); border-radius: 3px; padding: 0 5px; }
.rail .pied { margin-top: auto; padding: 12px 16px 4px; border-top: 1px solid var(--c-line); }
main { flex: 1; min-height: 0; min-width: 0; position: relative; }

/* ---------- en-tête de page */
.page-tete { display: flex; align-items: flex-end; gap: 14px; margin-bottom: 16px; flex-wrap: wrap; }
.page-tete .index { font-family: var(--mono); font-size: 12px; color: var(--c-accent); letter-spacing: 1px; }
.page-tete h2 { margin: 2px 0 0; line-height: 1; }
.page-tete .sous { font-size: 12px; color: var(--c-muted); margin-top: 4px; }
.page-tete .actions { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; }

/* ---------- blocs numérotés (formulaires) */
.bloc-n { background: var(--c-panel); border: 1px solid var(--c-line); border-radius: 4px; margin-bottom: 12px; position: relative; }
.bloc-n > header { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-bottom: 1px solid var(--c-line); }
.bloc-n > header .n { font-family: var(--mono); font-size: 11px; color: var(--c-accent); }
.bloc-n > header h4 { font-family: var(--c-titre); font-size: 14px; font-weight: 600; letter-spacing: 1.4px; text-transform: uppercase; }
.bloc-n > header .aide { margin-left: auto; font-size: 11px; color: var(--c-faint); }
.bloc-n > .corps { padding: 12px; }
/* repères d'angle (blocs clés) */
.hud::before, .hud::after { content: ''; position: absolute; width: 12px; height: 12px; border: 2px solid var(--c-accent); pointer-events: none; }
.hud::before { top: -1px; left: -1px; border-right: 0; border-bottom: 0; }
.hud::after { bottom: -1px; right: -1px; border-left: 0; border-top: 0; }
.champs { display: grid; grid-template-columns: repeat(var(--cols, 2), minmax(0, 1fr)); gap: 8px 12px; }
.champs .large { grid-column: 1 / -1; }
.champs label { font-size: 11px; letter-spacing: .3px; margin-bottom: 3px; }
.console input, .console select, .console textarea { background: var(--c-bg); border-color: var(--c-line2); border-radius: 3px; }
.console input:focus, .console select:focus, .console textarea:focus { outline: 1px solid var(--c-accent); outline-offset: -1px; border-color: var(--c-accent); }
.console button.primary { background: var(--c-accent); border-color: var(--c-accent); }
.console button.primary:hover { background: var(--c-accent-2); }
.console button.vert { background: #138a46; border-color: #138a46; color: #fff; font-weight: 600; }
.console button.vert:hover { background: #18a455; }
.console .modal { border-radius: 6px; border-top: 2px solid var(--c-accent); }

/* encarts : consigne (ambre), information (cyan), alerte (accent) */
.encart { border: 1px solid; border-left-width: 3px; border-radius: 3px; padding: 8px 10px; font-size: 13px; margin-top: 8px; }
.encart .etiquette { display: block; margin-bottom: 2px; }
.encart.consigne { border-color: rgba(255,176,32,.45); border-left-color: var(--c-amber); background: rgba(255,176,32,.07); }
.encart.consigne .etiquette { color: var(--c-amber); }
.encart.info { border-color: rgba(56,198,244,.35); border-left-color: var(--c-cyan); background: rgba(56,198,244,.06); }
.encart.info .etiquette { color: var(--c-cyan); }
.encart.alerte { border-color: color-mix(in srgb, var(--c-accent) 45%, transparent); border-left-color: var(--c-accent); background: var(--c-accent-sombre); }
.encart.alerte .etiquette { color: var(--c-accent-2); }

/* barre d'actions fixée en bas d'une page */
.barre-bas { position: sticky; bottom: 0; z-index: 1100; display: flex; align-items: center; gap: 10px; padding: 10px 14px; margin: 14px -16px -16px;
  background: color-mix(in srgb, var(--c-bg2) 92%, transparent); backdrop-filter: blur(6px); border-top: 1px solid var(--c-line); }
.chrono { font-family: var(--mono); font-size: 18px; color: var(--c-text); }
.chrono small { font-family: var(--font); font-size: 11px; color: var(--c-muted); margin-right: 6px; letter-spacing: .5px; text-transform: uppercase; }

/* ---------- liste des sinistres (prise d'appel) */
.natures { max-height: 330px; overflow-y: auto; border: 1px solid var(--c-line); border-radius: 3px; background: var(--c-bg); }
.natures .fam-t { position: sticky; top: 0; z-index: 1; padding: 4px 10px; background: var(--c-raise); font-family: var(--c-titre); font-size: 11px; letter-spacing: 1.4px; text-transform: uppercase; color: var(--c-muted); }
.natures .nat { display: flex; align-items: center; gap: 10px; padding: 6px 10px; cursor: pointer; border-bottom: 1px solid rgba(29,41,57,.6); font-size: 13px; }
.natures .nat:hover { background: var(--c-hover); }
.natures .nat.on { background: color-mix(in srgb, var(--c-accent) 22%, var(--c-bg)); box-shadow: inset 3px 0 0 var(--c-accent); }
.natures .nat .code { margin-left: auto; font-family: var(--mono); font-size: 11px; padding: 0 6px; border: 1px solid var(--c-line2); border-radius: 2px; color: var(--c-muted); }
.natures .nat.on .code { border-color: var(--c-accent); color: #fff; }
.services-g { display: flex; flex-wrap: wrap; gap: 6px 14px; }

/* ---------- synoptique des interventions (cartes) */
.inter { --teinte: #5b6b82; border: 1px solid var(--c-line); border-left: 4px solid var(--teinte); border-radius: 3px; margin-bottom: 8px;
  background: linear-gradient(90deg, color-mix(in srgb, var(--teinte) 14%, var(--c-panel)), var(--c-panel) 55%); }
.inter.INC { --teinte: #e5484d; } .inter.SUAP { --teinte: #d6336c; } .inter.AVP { --teinte: #f08c00; } .inter.DIV { --teinte: #2f9e44; } .inter.APP { --teinte: var(--c-accent); }
.inter > .tete { display: flex; align-items: center; gap: 10px; padding: 7px 10px; cursor: pointer; }
.inter > .tete .ouvrir { color: var(--c-muted); font-size: 11px; transition: transform .15s; }
.inter.plie > .tete .ouvrir { transform: rotate(-90deg); }
.inter > .tete .quand { font-family: var(--mono); font-size: 12px; color: var(--c-muted); }
.inter > .tete .titre { font-weight: 700; font-size: 13px; text-transform: uppercase; letter-spacing: .3px; }
.inter > .tete .duree { margin-left: auto; font-family: var(--mono); font-size: 12px; color: var(--c-muted); }
.inter > .corps { padding: 0 10px 10px 36px; }
.inter.plie > .corps { display: none; }
.inter .num { display: inline-block; min-width: 40px; text-align: center; font-family: var(--mono); font-weight: 700; font-size: 13px; background: var(--teinte); color: #fff !important; border-radius: 2px; padding: 2px 6px; text-shadow: 0 1px 1px rgba(0,0,0,.35); }
.inter .lieu { display: flex; gap: 12px; align-items: flex-start; }
.inter .lieu b { display: block; font-size: 13px; }
.inter .lieu span { font-size: 12px; color: var(--c-muted); }
.inter .svc { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.inter .svc span { font-size: 11px; font-weight: 600; padding: 1px 7px; border-radius: 2px; background: rgba(255,255,255,.08); border: 1px solid var(--c-line2); color: #e9d9dc; }
.inter .moyens { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; align-items: center; }
.inter .moyens .cs { font-size: 11px; font-weight: 800; padding: 3px 8px; border-radius: 2px; color: #fff; letter-spacing: .3px; }
.inter .moyens .en { font-size: 11px; font-weight: 700; padding: 3px 8px; border-radius: 2px; cursor: pointer; border: 1px solid rgba(0,0,0,.35); }
.inter .moyens .en small { font-family: var(--mono); font-weight: 600; opacity: .85; margin-left: 3px; }
.inter .moyens .sep { width: 6px; }
.inter .bandeau { display: flex; gap: 10px; align-items: center; margin-top: 8px; padding: 6px 10px; border-radius: 3px; font-size: 12px; }
.inter .bandeau.samu { background: rgba(25,194,168,.12); border: 1px solid rgba(25,194,168,.35); color: #bff3ea; }
.inter .bandeau.demande { background: rgba(255,176,32,.1); border: 1px solid rgba(255,176,32,.45); color: #ffe3a8; animation: veille 1.4s ease-in-out infinite; }
.inter .outils { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 10px; }
.inter .outils button { font-size: 12px; padding: 4px 9px; background: var(--c-bg); }

/* ---------- proposition de moyens */
.prop-strat { display: flex; gap: 4px; }
.prop-strat button { font-size: 12px; padding: 4px 9px; }
.prop-strat button.on { background: var(--c-raise); border-color: var(--c-accent); color: #fff; }
.prop-grp { margin-top: 10px; }
.prop-grp > .t { display: flex; align-items: baseline; gap: 8px; font-family: var(--c-titre); font-weight: 700; letter-spacing: .8px; font-size: 14px; text-transform: uppercase; }
.prop-grp > .t .manque { font-family: var(--font); font-size: 11px; color: var(--c-amber); text-transform: none; letter-spacing: 0; font-weight: 500; }
.prop-l { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto auto; gap: 8px; align-items: center; padding: 6px 8px; margin-top: 4px; border: 1px solid var(--c-line); border-radius: 3px; background: var(--c-bg); cursor: pointer; font-size: 13px; }
.prop-l:hover { border-color: var(--c-line2); }
.prop-l.on { border-color: var(--c-accent); background: color-mix(in srgb, var(--c-accent) 12%, var(--c-bg)); }
.prop-l input { width: auto; margin: 0; accent-color: var(--c-accent); }
.prop-l .cs { font-size: 11px; color: var(--c-muted); margin-left: 6px; }
.prop-l .dist { font-family: var(--mono); font-size: 11px; color: var(--c-muted); white-space: nowrap; }
.drapeau { font-size: 10px; font-weight: 800; letter-spacing: .8px; padding: 1px 6px; border-radius: 2px; text-transform: uppercase; white-space: nowrap; }
.drapeau.renfort { color: var(--c-amber); border: 1px solid rgba(255,176,32,.5); }
.drapeau.armer { color: #ff9e8f; border: 1px solid rgba(255,106,92,.5); }
.drapeau.ok { color: #7ee2a8; border: 1px solid rgba(34,197,94,.45); }

/* ---------- vues séparées liste / détail */
.split { position: absolute; inset: 0; display: grid; grid-template-columns: minmax(300px, 400px) minmax(0, 1fr); }
.split > .liste { border-right: 1px solid var(--c-line); display: flex; flex-direction: column; min-height: 0; background: var(--c-bg2); }
.split > .liste > .tete { padding: 12px; border-bottom: 1px solid var(--c-line); display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.split > .liste > .corps { flex: 1; overflow-y: auto; padding: 8px; }
.split > .detail { overflow-y: auto; padding: 16px; min-width: 0; }
.ligne-l { padding: 9px 10px; border: 1px solid var(--c-line); border-radius: 3px; margin-bottom: 6px; background: var(--c-panel); cursor: pointer; }
.ligne-l:hover { border-color: var(--c-line2); }
.ligne-l.on { border-color: var(--c-accent); box-shadow: inset 3px 0 0 var(--c-accent); }
.vide-c { display: grid; place-items: center; min-height: 260px; text-align: center; color: var(--c-muted); }
.vide-c b { display: block; color: var(--c-text); font-family: var(--c-titre); font-size: 18px; letter-spacing: 1px; text-transform: uppercase; margin-bottom: 4px; }

/* fiche de synthèse (bilan reçu…) */
.synthese { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1px; background: var(--c-line); border: 1px solid var(--c-line); border-radius: 3px; overflow: hidden; margin-bottom: 12px; }
.synthese > div { background: var(--c-panel); padding: 8px 10px; }
.synthese .etiquette { font-size: 10px; display: block; }
.synthese b { font-size: 14px; }
.score { display: flex; align-items: center; gap: 12px; }
.score .v { font-family: var(--mono); font-size: 34px; font-weight: 700; line-height: 1; }
.score .v small { font-size: 14px; color: var(--c-muted); }

/* ---------- priorités (CRRA 15) */
.prio { display: inline-flex; align-items: center; justify-content: center; min-width: 34px; height: 24px; padding: 0 7px; border-radius: 3px; font-family: var(--mono); font-weight: 700; font-size: 12px; color: #fff; }
.prio.P0 { background: #e5383b; } .prio.P1 { background: #f08c00; } .prio.P2 { background: #2f9e44; } .prio.P3 { background: #2f7fe0; }
.prios { display: flex; gap: 6px; }
.prios button { min-width: 54px; height: 40px; justify-content: center; font-family: var(--mono); font-weight: 700; font-size: 15px; border-width: 2px; background: var(--c-bg); }
.prios button[data-p="P0"] { border-color: #e5383b; color: #ff8e8f; } .prios button[data-p="P1"] { border-color: #f08c00; color: #ffc067; }
.prios button[data-p="P2"] { border-color: #2f9e44; color: #84e09a; } .prios button[data-p="P3"] { border-color: #2f7fe0; color: #9cc4ff; }
.prios button.on[data-p="P0"] { background: #e5383b; color: #fff; } .prios button.on[data-p="P1"] { background: #f08c00; color: #fff; }
.prios button.on[data-p="P2"] { background: #2f9e44; color: #fff; } .prios button.on[data-p="P3"] { background: #2f7fe0; color: #fff; }

/* bandeau d'appel (prise d'appel du CRRA 15) */
.appel-tete { display: grid; grid-template-columns: auto auto 1fr auto; gap: 16px; align-items: center; padding: 12px 14px; margin-bottom: 12px; border: 1px solid var(--c-line); border-radius: 4px;
  background: linear-gradient(90deg, color-mix(in srgb, var(--c-accent) 18%, var(--c-panel)), var(--c-panel) 60%); position: relative; }
.appel-tete .avatar { width: 46px; height: 46px; border-radius: 4px; display: grid; place-items: center; font-family: var(--mono); font-weight: 800; font-size: 18px; background: var(--c-bg); border: 2px solid var(--c-line2); }
.appel-tete .chrono { font-size: 28px; }
.appel-tete .etat { font-family: var(--c-titre); font-size: 13px; letter-spacing: 1.6px; text-transform: uppercase; color: var(--c-accent-2); }
.appel-grille { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.vict-onglets { display: flex; gap: 4px; margin-bottom: 8px; flex-wrap: wrap; }
.vict-onglets button { font-size: 12px; padding: 4px 10px; }
.vict-onglets button.on { background: var(--c-raise); border-color: var(--c-accent); color: #fff; }
.seg2 { display: inline-flex; border: 1px solid var(--c-line2); border-radius: 3px; overflow: hidden; }
.seg2 button { border: 0; border-radius: 0; padding: 6px 12px; font-size: 12px; background: var(--c-bg); }
.seg2 button.on { background: var(--c-accent); color: #fff; }

/* dossier de régulation médicale */
.drm { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr) minmax(260px, .9fr); gap: 12px; align-items: start; }
.anneau { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px; }
.anneau button { justify-content: flex-start; gap: 10px; height: 44px; padding: 0 12px; border-radius: 3px; font-size: 12px; font-weight: 600; text-align: left; white-space: normal; line-height: 1.15;
  background: var(--c-bg); border: 1px solid var(--c-line2); border-left: 3px solid var(--c-accent); }
.anneau button svg { width: 22px; height: 22px; stroke: var(--c-accent-2); fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.anneau button:hover { border-color: var(--c-accent); }
.anneau button.danger { border-left-color: #ff6a6a; }
.anneau button.danger svg { stroke: #ff8a90; }
.decisions { display: flex; flex-wrap: wrap; gap: 4px; }
.decisions button { font-size: 12px; padding: 4px 9px; background: var(--c-bg); }
.decisions button.on { background: var(--c-accent); border-color: var(--c-accent); color: #fff; }
.cst-mini { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.cst-mini label { font-size: 10px; text-transform: uppercase; letter-spacing: .6px; }
.cst-mini input { padding: 5px 7px; font-family: var(--mono); }
.journal { max-height: 260px; overflow-y: auto; font-size: 12px; }
.journal > div { display: grid; grid-template-columns: 54px 1fr; gap: 8px; padding: 5px 0; border-bottom: 1px dashed var(--c-line); }
.journal .t { font-family: var(--mono); color: var(--c-muted); }
.journal .qui { color: var(--c-faint); font-size: 11px; }
.res { display: flex; align-items: center; gap: 8px; padding: 7px 9px; border: 1px solid var(--c-line); border-radius: 3px; background: var(--c-bg); margin-bottom: 5px; font-size: 13px; }
.res .st-chip { margin-left: auto; font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 2px; }
.dem { padding: 8px 10px; border: 1px solid var(--c-line); border-left: 3px solid var(--c-amber); border-radius: 3px; background: var(--c-bg); margin-bottom: 6px; font-size: 12px; }
.dem.engagee { border-left-color: var(--c-green); } .dem.refusee { border-left-color: #6b7280; opacity: .75; } .dem.prise { border-left-color: var(--c-cyan); }
.dem b { font-size: 13px; }

/* supervision (tableau de salle) */
.supervision { position: absolute; inset: 0; display: flex; flex-direction: column; }
.supervision .haut { padding: 14px 16px 10px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; border-bottom: 1px solid var(--c-line); }
.supervision .tableau { flex: 1; overflow: auto; }
.supervision table { width: 100%; border-collapse: collapse; font-size: 13px; }
.supervision th { position: sticky; top: 0; background: var(--c-bg2); z-index: 1; text-align: left; font-family: var(--c-titre); font-size: 12px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--c-muted); font-weight: 600; padding: 8px 10px; border-bottom: 1px solid var(--c-line2); }
.supervision td { padding: 7px 10px; border-bottom: 1px solid var(--c-line); vertical-align: middle; }
.supervision tr { cursor: pointer; }
.supervision tr:hover td { background: var(--c-panel); }
.supervision .bas { display: flex; border-top: 1px solid var(--c-line); }
.supervision .bas > div { flex: 1; padding: 8px 12px; display: flex; align-items: center; gap: 8px; font-size: 12px; border-right: 1px solid var(--c-line); }
.supervision .bas b { font-family: var(--mono); font-size: 18px; }
.etat-drm { font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 2px; text-transform: uppercase; letter-spacing: .5px; }
.etat-drm.a_reguler { background: rgba(255,176,32,.15); color: var(--c-amber); } .etat-drm.en_cours { background: rgba(25,194,168,.15); color: #5eead4; } .etat-drm.termine { background: rgba(127,143,166,.15); color: var(--c-muted); }

/* ---------- carte opérationnelle */
.console #view-ops .col { background: var(--c-bg2); }
.console .op-card { border-radius: 3px; border-left-width: 3px; }
.console .op-card.sel { border-color: var(--c-accent); }
.console #detail { background: var(--c-bg2); border-right-color: var(--c-line2); }
.console #detail .d-head { background: var(--c-panel); border-bottom-color: var(--c-line); position: relative; }
.console #detail .d-head h3 { font-size: 22px; text-transform: uppercase; }
.console .d-actions { background: var(--c-panel); }
.console .section-title { font-family: var(--c-titre); font-size: 12px; letter-spacing: 1.6px; color: var(--c-muted); }

/* ---------- responsive */
@media (max-width: 1280px) { .drm { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .drm > :last-child { grid-column: 1 / -1; } }
@media (max-width: 1100px) { .appel-grille { grid-template-columns: 1fr; } .split { grid-template-columns: 1fr; position: static; } .split > .liste { max-height: 45vh; } }
@media (max-width: 900px) { .rail, .cmd-marque { width: 60px; } .rail .tab span, .rail .groupe, .cmd-marque div { display: none; } .rail .tab { justify-content: center; padding: 11px 0; } .drm { grid-template-columns: 1fr; } }
@media (max-width: 760px) {
  body.console { overflow: auto; }
  .cmd { height: auto; flex-wrap: wrap; padding: 6px 10px; gap: 8px; }
  .cmd-marque { width: auto; border: 0; padding: 0; } .cmd-marque div { display: block; }
  .cmd .kpi, .cmd-poste { display: none; }
  .shell { flex-direction: column; }
  .rail { width: auto; flex-direction: row; overflow-x: auto; padding: 0; border-right: 0; border-bottom: 1px solid var(--c-line); }
  .rail .tab { width: auto; padding: 10px 12px; border-left: 0; border-bottom: 2px solid transparent; } .rail .tab.active { border-bottom-color: var(--c-accent); }
  .rail .pied { display: none; }
  .champs { grid-template-columns: 1fr; }
  .view, .split, .supervision { position: static; }
}

/* prise d'appel du CODIS : deux colonnes, barre d'actions en bas */
.creation { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 12px; align-items: start; }
@media (max-width: 1100px) { .creation { grid-template-columns: 1fr; } }
.kcard { border-radius: 4px; }
.kcard b { font-size: 28px; line-height: 1.1; }

/* ---------------------------------------------------------- Prévision (ETARE, points d'eau) */
#view-prevision { display: flex; flex-direction: column; }
#view-prevision.hidden { display: none; }
.prev-onglets { display: flex; align-items: center; gap: 6px; padding: 10px 14px; border-bottom: 1px solid var(--c-line); background: var(--c-bg2); }
.prev-onglets .index { font-family: var(--mono); font-size: 12px; color: var(--c-accent); letter-spacing: 1px; margin-right: 10px; }
.prev-onglets button { border-radius: 3px; }
.prev-onglets button.on { border-color: var(--c-accent); color: #fff; background: rgba(255, 61, 74, .12); }
.prev-onglets button b { font-family: var(--mono); font-weight: 600; margin-left: 4px; color: var(--c-muted); }
.prev-corps { position: relative; flex: 1; min-height: 0; }
.ligne-l .etare-cl { margin-top: 4px; }
.etare-choix { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.etare-choix label { display: flex; align-items: center; gap: 5px; font-size: 13px; letter-spacing: 0; margin: 0; }
.etare-choix input { width: auto; }
.etare-carte { height: 300px; border: 1px solid var(--c-line); border-radius: 3px; }
.etare-ps, .etare-ct { display: grid; gap: 6px; align-items: center; margin-bottom: 6px; }
.etare-ps { grid-template-columns: 22px minmax(0, 1fr) minmax(0, 1.4fr) auto auto; }
.etare-ps .n { color: var(--c-accent); text-align: center; }
.etare-ct { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 150px auto; }
.etare-pin { width: 100%; height: 100%; display: grid; place-items: center; background: var(--c-accent); color: #fff; font: 700 12px/1 var(--mono); border: 2px solid #fff; border-radius: 3px; box-shadow: 0 1px 4px rgba(0,0,0,.6); }
.etare-pin.ps { background: #ffb020; color: #111; }
#etare-plans figure { margin: 0; }
#etare-plans figcaption { display: flex; align-items: center; gap: 4px; font-size: 12px; margin-top: 3px; }
.prev-eau { position: absolute; inset: 0; display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(420px, 1fr); }
.prev-eau-carte { display: flex; flex-direction: column; min-height: 0; border-right: 1px solid var(--c-line); }
.prev-barre { display: flex; align-items: center; gap: 8px; padding: 8px 10px; flex-wrap: wrap; border-bottom: 1px solid var(--c-line); }
.prev-carte { flex: 1; min-height: 0; }
.prev-legende { display: flex; flex-wrap: wrap; gap: 4px 14px; padding: 8px 10px; font-size: 12px; border-top: 1px solid var(--c-line); }
.prev-legende i { display: inline-block; width: 10px; height: 10px; border: 1px solid #0b0f16; margin-right: 5px; vertical-align: -1px; }
.prev-eau-liste { overflow: auto; min-height: 0; }
.prev-eau-liste input, .prev-eau-liste select { padding: 4px 6px; font-size: 12px; }
tr.flash td { background: rgba(255, 176, 32, .18); }
@media (max-width: 1100px) { .prev-eau { grid-template-columns: 1fr; grid-template-rows: 55% 45%; } }
@media (max-width: 900px) {
  .prev-corps { overflow-y: auto; }
  .prev-eau { position: static; display: block; }
  .prev-carte { flex: none; height: 420px; }
  .prev-eau-carte { border-right: 0; border-bottom: 1px solid var(--c-line); }
}
.prev-eau-liste td.mono { white-space: nowrap; }

/* ---------------------------------------------------------- Statistiques du CODIS (une teinte, valeurs en encre) */
.stx-tuiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 14px; }
.stx-tuile { background: var(--c-panel); border: 1px solid var(--c-line); border-radius: 3px; padding: 12px; }
.stx-tuile b { display: block; font-size: 26px; line-height: 1.1; color: var(--c-text, #e6edf6); }
.stx-tuile span { font-size: 11px; color: var(--c-muted); text-transform: uppercase; letter-spacing: 1px; }
.stx-grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 0 12px; }
.stx-l { display: grid; grid-template-columns: minmax(0, 42%) minmax(0, 1fr) 40px; gap: 10px; align-items: center; padding: 4px 0; font-size: 13px; }
.stx-l:hover { background: rgba(255,255,255,.03); }
.stx-lib { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stx-piste { height: 10px; background: rgba(255,255,255,.04); border-radius: 0 4px 4px 0; overflow: hidden; }
.stx-piste i { display: block; height: 100%; background: var(--c-accent); border-radius: 0 4px 4px 0; min-width: 2px; }
.stx-l b { text-align: right; color: var(--c-text, #e6edf6); }
.stx-cols { display: flex; align-items: flex-end; gap: 2px; height: 160px; padding-top: 6px; }
.stx-col { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; height: 100%; min-width: 0; }
.stx-col i { display: block; width: 100%; max-width: 26px; background: var(--c-accent); border-radius: 4px 4px 0 0; }
.stx-col:hover i { filter: brightness(1.25); }
.stx-col span { font: 10px var(--mono, monospace); color: var(--c-muted); margin-top: 4px; white-space: nowrap; overflow: hidden; }
@media (max-width: 760px) { .stx-cols .stx-col:not(:nth-child(3n+1)) span { visibility: hidden; } }

/* ==========================================================================================================
   Sobriété (demande de l'utilisateur : « moins IA ») — par-dessus tout le reste. Un logiciel métier, pas une
   vitrine : aplats, filets fins, une seule police, couleur réservée à ce qui demande une action (alerte, statut),
   pas d'ombres, de dégradés, de grain, d'animations décoratives ni de pictogrammes.
   ========================================================================================================== */
:root {
  --c-bg: #121315; --c-bg2: #17181b; --c-panel: #1c1d20; --c-raise: #232428; --c-hover: #2a2c30;
  --c-line: #2c2e32; --c-line2: #3a3c41; --c-text: #e6e6e3; --c-muted: #9a9a96; --c-faint: #6a6a66;
  --c-accent: #d1352c; --c-accent-2: #e45a4f; --c-accent-sombre: #35171a;
  --c-titre: var(--font);
  --radius: 3px;
}
body.samu, body.crra { --c-accent: #23998a; --c-accent-2: #48b9a9; --c-accent-sombre: #12302c; }
body { background-image: none; background-color: var(--c-bg); }

/* Une seule police ; titres en casse normale, sans capitales espacées. */
h1, h2, h3, h4, .console h2, .brand b, .cmd-marque b, .modal header h3, .console #detail .d-head h3, .vide-c b, .inter > .tete .titre,
.panel-head, .section-title, .console .section-title, .bloc-n > header h4, .form-card h4, table.list th, .supervision th, .natures .fam-t,
.prop-grp > .t, .appel-tete .etat, .etare-bloc h5, .stx-tuile span, .kpi span, .cmd-heure small, .etiquette, .rail .tab, .tab {
  font-family: var(--font); text-transform: none; letter-spacing: 0; }
.console h2, h2 { font-size: 20px; font-weight: 600; }
.panel-head, .bloc-n > header h4 { font-size: 13px; font-weight: 600; }
table.list th { font-size: 12px; font-weight: 600; color: var(--c-muted); }
.etiquette { font-size: 12px; color: var(--c-muted); }

/* En-têtes de page : le titre suffit (plus de surtitre à tiret ni de sous-titre décoratif). */
.page-tete { align-items: center; margin-bottom: 12px; }
.page-tete .index, .prev-onglets .index { display: none; }
.page-tete .sous { font-size: 12px; margin-top: 2px; }

/* Plus d'ornements : repères d'angle, filets d'accent, marques de section, numéros de bloc. */
.hud::before, .hud::after, .panel-head::before, .page-tete .index::before { display: none; }
.topbar::after, .cmd::after { display: none; }
.bloc-n > header .n { display: none; }

/* Volumes plats. */
.panel, .bloc-n, .modal, .ligne-l, .stx-tuile, .inter, .prop-l, .encart, .etare-bloc, .kcard, .card, .form-card { border-radius: var(--radius); box-shadow: none; }
.modal { box-shadow: 0 0 0 1px var(--c-line2); }
button, .btn, .tab, .ligne-l, .prop-l, .rail .tab, table.list tr { transition: background-color .08s linear, border-color .08s linear; }
button:active:not(:disabled), .btn:active { transform: none; }
.ligne-l:hover, .prop-l:hover { box-shadow: none; }
.cmd-poste .voyant, .voyant { animation: none; }
.rail .tab.active { background: var(--c-hover); box-shadow: inset 2px 0 0 var(--c-accent); }
.ref-liste nav button.on { background: var(--c-hover) !important; }

/* Chiffres clés : en encre, sans bandeau de couleur. */
.kcard { border-top: 1px solid var(--line, var(--c-line)); padding: 10px 12px; }
.kcard b { font-size: 22px; font-weight: 600; color: var(--c-text); }
.kcard.alerte { border-color: var(--c-amber, #d89a2b); }
.kcard.alerte b { color: var(--c-amber, #d89a2b); }

/* Étiquettes d'état : rectangles discrets, casse normale. */
.pill, .badge, .etat-drm, .fam, .chips .chip { border-radius: 2px; text-transform: none; letter-spacing: 0; }
.etat-drm.encours { background: transparent; color: var(--c-accent-2); padding-left: 0; }
.vide-c { color: var(--c-muted); }
.vide-c b { font-size: 16px; font-weight: 600; }
/* Marque du bandeau : bloc qui ne recouvre pas les onglets voisins. */
.brand { flex-shrink: 0; }
.brand b { display: block; font-size: 15px; font-weight: 600; white-space: nowrap; }
.brand span { font-size: 11px; }
