:root{--bg:#F4F6F9;--card:#fff;--line:#E2E8F0;--line2:#CBD5E1;--ink:#0F172A;--muted:#475569;--brand:#3170C2;--night:#0B1B33;--ok-bg:#ECFDF3;--ok:#166534;--warn-bg:#FFF1E6;--warn:#9A3412;--crit-bg:#FEE2E2;--crit:#B91C1C;--code:#0B1B33;color-scheme:light dark}
@media (prefers-color-scheme:dark){:root{--bg:#0A1424;--card:#0F1D33;--line:#22324D;--line2:#33476A;--ink:#E5ECF5;--muted:#A3B3CA;--ok-bg:#0F2E1E;--ok:#86EFAC;--warn-bg:#3A1D0D;--warn:#FDBA74;--crit-bg:#3B1111;--crit:#FCA5A5;--code:#071121}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 system-ui,-apple-system,"Segoe UI",sans-serif;min-height:100vh;display:flex;flex-direction:column}
:focus-visible{outline:3px solid #F59E0B;outline-offset:2px}
a{color:var(--brand)}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px;background:var(--night);color:#fff}
.top form{margin:0}
.marque{color:#fff;font-weight:700;letter-spacing:.5px;font-size:17px;text-decoration:none}
.marque span{color:#7FB0F0;margin:0 1px}.marque small{font-weight:500;color:#CBD5E1;margin-left:8px;font-size:13px}
main{width:100%;max-width:1200px;margin:0 auto;padding:22px 16px 40px;display:flex;flex-direction:column;gap:16px;flex:1}
footer{text-align:center;color:var(--muted);font-size:12px;padding:12px}
h1{margin:0;font-size:24px}h2{margin:0 0 4px;font-size:17px}
.titre{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
.carte{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:12px}
.carte.large{overflow-x:auto}
.etroite{width:100%;max-width:420px;margin:8vh auto 0}
label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:13px}
input{min-height:42px;padding:0 10px;border:1px solid var(--line2);border-radius:9px;background:var(--card);color:var(--ink);font:inherit;font-weight:400}
.btn{min-height:40px;padding:0 14px;border-radius:9px;border:1px solid var(--line2);background:var(--card);color:var(--ink);font:inherit;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.btn.primaire{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.danger{background:var(--crit);border-color:var(--crit);color:#fff}
.btn.sm{min-height:34px;padding:0 10px;font-size:13px}
.actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.actions.gauche{justify-content:flex-start}.actions form{margin:0}
.muted{color:var(--muted)}.petit{font-size:12px}.mono{font-family:ui-monospace,Consolas,monospace;font-size:13px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.kpi strong{font-size:28px}.kpi.crit strong{color:var(--crit)}.kpi.warn strong{color:var(--warn)}
.grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
table{width:100%;border-collapse:collapse;min-width:640px}
th{text-align:left;font-size:12px;color:var(--muted);padding:8px;border-bottom:1px solid var(--line)}
td{padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}
tr:last-child td{border-bottom:0}
.pastille{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--line);color:var(--muted)}
.pastille.ok{background:var(--ok-bg);color:var(--ok)}.pastille.warn{background:var(--warn-bg);color:var(--warn)}.pastille.crit{background:var(--crit-bg);color:var(--crit)}
.alerte{margin:0;padding:10px 12px;border-radius:9px}.alerte.warn{background:var(--warn-bg);color:var(--warn)}.alerte.crit{background:var(--crit-bg);color:var(--crit)}
.commande{margin:0;padding:14px;border-radius:9px;background:var(--code);color:#E5ECF5;font:13px/1.5 ui-monospace,Consolas,monospace;white-space:pre-wrap;word-break:break-all;user-select:all}
dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:0}dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere}
.evenement{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--line)}.evenement:last-child{border-bottom:0}.evenement.traite{opacity:.6}
