:root{--rouge:#F23E4D;--vert:#154C41;--teal:#45A393;--menthe:#90E0D1;--vclair:#DFF4F0;--fond:#F9F9F9;--texte:#01140E;--gris:#5b6662;--trait:#d9dedc;--orange:#a8590c;--ok:#1f7a68}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:#fff;font-family:Arial,"Liberation Sans",sans-serif;color:var(--texte);font-size:15px;line-height:1.45}
a{color:var(--vert)}
header.top{background:var(--vert);color:#fff;display:flex;align-items:center;min-height:56px;padding:0 24px;gap:28px;flex-wrap:wrap}
.logo{font-weight:bold;font-size:18px;letter-spacing:.2px;color:#fff;text-decoration:none;white-space:nowrap}
.logo b{color:var(--rouge)}.logo span{color:var(--menthe)}
header nav a{color:#cfe3dd;text-decoration:none;margin-right:18px;padding:17px 0 15px;display:inline-block;border-bottom:2px solid transparent}
header nav a.on,header nav a:hover{color:#fff;border-bottom-color:var(--rouge)}
header .user{margin-left:auto;color:#cfe3dd;font-size:13px}
header .user a{color:#fff}
main{padding:24px;max-width:1320px}
h1{font-size:26px;margin:0 0 4px;line-height:1.2}
h2{font-size:19px;margin:22px 0 10px}
h3{font-size:16px;margin:16px 0 6px}
.sous{color:var(--gris);margin:0 0 20px}
.fil{color:var(--gris);margin:0 0 4px;font-size:14px}.fil a{color:var(--gris)}
.g{color:var(--gris)}.r{color:var(--rouge);font-weight:bold}.v{color:var(--ok);font-weight:bold}.o{color:var(--orange);font-weight:bold}
.num,code{font-family:"Liberation Mono",Consolas,monospace;font-size:13.5px}
table{border-collapse:collapse;width:100%}
th{text-align:left;font-size:13px;color:var(--gris);border-bottom:2px solid var(--texte);padding:8px 10px;white-space:nowrap}
td{border-bottom:1px solid var(--trait);padding:8px 10px;vertical-align:top}
tr.bloque td:first-child,tr.ecarte td:first-child,tr.sorti td:first-child{box-shadow:inset 4px 0 0 var(--rouge)}
tr.ok td:first-child{box-shadow:inset 4px 0 0 var(--teal)}
tr.avert td:first-child,tr.attente td:first-child{box-shadow:inset 4px 0 0 #e0a24a}
.tab-scroll{overflow-x:auto}
.btn,button{display:inline-block;background:var(--vert);color:#fff;padding:9px 16px;font-weight:bold;font-size:14px;border:2px solid var(--vert);text-decoration:none;cursor:pointer;font-family:inherit}
.btn2,button.btn2{background:#fff;color:var(--vert)}
.btnr{background:var(--rouge);border-color:var(--rouge)}
button:hover,.btn:hover{filter:brightness(1.12)}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}
.barre{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.filtres a{margin-right:16px;text-decoration:none}
.filtres a.on{font-weight:bold;text-decoration:underline;text-underline-offset:5px;text-decoration-color:var(--rouge);text-decoration-thickness:2px}
.flash{padding:10px 14px;margin:0 0 18px;border-left:4px solid var(--teal);background:var(--vclair)}
.flash.erreur{border-left-color:var(--rouge);background:#fdecee}
.aide{background:var(--fond);border-left:4px solid var(--vert);padding:12px 16px;margin:16px 0;font-size:14px}
.aide ul{margin:6px 0;padding-left:20px}
form.ligne{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin:10px 0}
label{display:block;font-size:13px;color:var(--gris);margin-bottom:3px}
input[type=text],input[type=password],select,textarea{font:inherit;padding:7px 9px;border:1px solid #b9c2bf;background:#fff;color:var(--texte);min-width:220px}
textarea{width:100%;min-height:110px;font-family:"Liberation Mono",Consolas,monospace;font-size:13px}
input[type=file]{font:inherit;font-size:13px}
.champ{margin-bottom:12px}
.lot{display:grid;grid-template-columns:320px 1fr;gap:32px}
ol.etapes{list-style:none;margin:0;padding:0;border-top:2px solid var(--texte)}
ol.etapes li{border-bottom:1px solid var(--trait)}
ol.etapes li a{display:grid;grid-template-columns:30px 1fr auto;gap:6px;padding:9px 6px;align-items:baseline;text-decoration:none;color:var(--texte)}
ol.etapes li .n{font-weight:bold;font-size:16px;color:var(--gris)}
ol.etapes li.fait .n{color:var(--teal)}
ol.etapes li.sel{background:var(--vclair);box-shadow:inset 4px 0 0 var(--rouge)}
ol.etapes li .s{font-size:12.5px}
.s.fait{color:var(--ok);font-weight:bold}.s.cours{color:var(--orange);font-weight:bold}.s.bloque{color:var(--rouge);font-weight:bold}.s.afaire,.s.na{color:var(--gris)}
.panneau{border-top:2px solid var(--texte);padding-top:12px;min-width:0}
.meta{color:var(--gris);font-size:13px;margin-bottom:12px}
.bilan{display:flex;border-top:2px solid var(--texte);border-bottom:1px solid var(--trait);margin:8px 0 20px;flex-wrap:wrap}
.bilan div{flex:1;min-width:130px;padding:10px 14px;border-right:1px solid var(--trait)}
.bilan div:last-child{border-right:0}
.bilan .l{font-size:13px;color:var(--gris)}
.chiffre{font-size:28px;font-weight:bold}
.doute{border-top:2px solid var(--texte);padding:12px 0 16px}
.doute h3{margin:0 0 4px}
.choix label{display:block;color:var(--texte);font-size:15px;margin:5px 0}
.vign{width:110px;height:110px;object-fit:contain;background:#fff;border:1px solid var(--trait)}
details.fiche summary{cursor:pointer;color:var(--vert);font-weight:bold}
.points li{margin:3px 0}
.points .bloquant{color:var(--rouge)}.points .avert{color:var(--orange)}.points .info{color:var(--gris)}
.connexion{max-width:380px;margin:60px auto}
pre.msg{white-space:pre-wrap;background:var(--fond);border:1px solid var(--trait);padding:12px;font-size:13.5px}
@media (max-width:900px){.lot{grid-template-columns:1fr}main{padding:16px}header.top{padding:0 16px;gap:12px}header .user{margin-left:0;padding-bottom:8px}}
