/* NADÈ 1.5.0 — le suivi du chantier : registre, carte des quartiers, contrôle, équipes, pilote. */
.lede-g{color:var(--muted);max-width:62ch;font-size:15px}
.pastille.p-gris{background:var(--line);color:var(--muted)}
.lg{display:inline-block;width:12px;height:12px;border-radius:50%;vertical-align:-1px;margin-right:6px;border:2.5px solid var(--muted);background:var(--surface)}
.lg-gris{border-color:#8A96A8}.lg-lat{border-color:#D2622F;background:#D2622F}.lg-bleu{border-color:#16407A}.lg-vert{border-color:#1E7A4F;background:#1E7A4F}
.lg-porte{border-color:#0B1F3F;border-width:1.5px;width:9px;height:9px}.lg-jour{border-color:#D2622F;background:#F4A27A;border-width:3px}
.lg-demande{border-radius:6px;border-color:#D2622F;background:#D2622F}

/* Registre */
.registre-vide{border-left:6px solid var(--laterite);gap:12px}
.registre-communes{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:10px}
.reg-commune{display:grid;gap:4px;padding:12px 14px;border-radius:14px;background:var(--surface);border:1px solid var(--line);color:inherit;text-decoration:none;position:relative;transition:transform .15s,box-shadow .15s}
.reg-commune:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(11,31,63,.08)}
.reg-commune.actif{border-color:var(--enamel);box-shadow:inset 0 0 0 1.5px var(--enamel)}
.reg-commune .num{position:absolute;top:10px;right:12px;font:700 13px var(--f-mono);color:var(--laterite)}
.reg-commune b{font:700 16px var(--f-display)}
.table-registre td{vertical-align:top}

/* Barre d'outils des cartes */
.carte-barre{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:end}
.carte-barre .champ{min-width:min(100%,280px)}
.segments{display:inline-flex;background:var(--surface);border:1px solid var(--line);border-radius:99px;padding:3px}
.segments a{padding:7px 14px;border-radius:99px;text-decoration:none;color:var(--muted);font-weight:600;font-size:14px}
.segments a.actif{background:var(--nuit);color:#fff}
.carte-tete{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap}
.carte-tete h2{font-size:clamp(24px,4vw,32px)}
.carte-jauge{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:baseline;min-width:220px}
.carte-jauge b{font:800 30px/1 var(--f-display);color:var(--enamel);grid-row:span 2}
.carte-jauge .barre{grid-column:1/-1}
.carte-grande-zone{display:grid;grid-template-columns:1fr 260px;gap:14px;align-items:start}
.carte-quartier{height:min(68vh,620px);min-height:360px;border-radius:16px;border:1px solid var(--line);z-index:0}
.carte-legende{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px;display:grid;gap:10px}
.carte-legende ul{list-style:none;margin:0;padding:0;display:grid;gap:7px;font-size:14px}
.carte-legende li{display:flex;align-items:center}
.carte-legende li b{margin-left:auto;font-variant-numeric:tabular-nums}
.pin-demande span{display:grid;place-items:center;width:26px;height:26px;border-radius:8px 8px 8px 2px;background:#D2622F;color:#fff;font:800 15px var(--f-display);box-shadow:0 2px 6px rgba(0,0,0,.3)}
@media (max-width:820px){.carte-grande-zone{grid-template-columns:1fr}.carte-quartier{height:62vh}}

/* Contrôle du jour */
.ctl-chiffres{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.ctl-ch{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:grid;gap:2px;border-top:5px solid var(--enamel)}
.ctl-ch b{font:800 28px/1.1 var(--f-display);font-variant-numeric:tabular-nums}
.ctl-ch span{font-size:13px;color:var(--muted)}
.ctl-ch.chaud{border-top-color:var(--laterite)}.ctl-ch.alerte{border-top-color:var(--bad)}.ctl-ch.ok{border-top-color:var(--ok)}
@media (max-width:720px){.ctl-chiffres{grid-template-columns:1fr 1fr}}
.ech-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.ech-equipe{border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--bg)}
.ech-liste{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:8px}
.ech-porte{background:var(--surface);border-radius:10px;padding:10px 12px;display:grid;gap:8px}
.ech-tete{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.ech-tete .mono{font-weight:700}
.ech-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:start}
details.ouvrir{position:relative}
details.ouvrir>summary{list-style:none;cursor:pointer}
details.ouvrir>summary::-webkit-details-marker{display:none}
details.ouvrir[open]>summary{opacity:.75}
details.ouvrir>form{margin-top:8px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);min-width:min(280px,80vw)}
.ok-ligne{color:var(--ok);font-weight:600}
.alertes{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.alertes li{display:grid;gap:2px;padding:9px 12px 9px 14px;border-radius:10px;background:var(--bg);border-left:4px solid var(--muted)}
.alertes li a{text-decoration:none;color:var(--ink)}
.alertes .al-grave{border-left-color:var(--bad);background:var(--bad-2)}
.alertes .al-moyen{border-left-color:var(--laterite);background:var(--laterite-2)}
.alertes .al-leger{border-left-color:var(--line)}
.al-texte{color:var(--bad)}

/* Équipes */
.eq-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.eq-carte{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px;display:grid;gap:10px}
.eq-carte h3{font-size:18px}
.courbe14{width:100%;height:auto}
.courbe14 .b-on{fill:var(--enamel)}.courbe14 .b-off{fill:var(--line)}
.courbe14 .c-leg{font:10px var(--f-body);fill:var(--muted)}
.eq-chiffres{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:0}
.eq-chiffres div{display:grid;gap:0;text-align:center;background:var(--bg);border-radius:8px;padding:6px 2px}
.eq-chiffres dt{font-size:10.5px;color:var(--muted);line-height:1.2;order:2}
.eq-chiffres dd{margin:0;font:800 17px/1.2 var(--f-display);order:1}
.eq-chiffres .mauvais dd{color:var(--bad)}
.voies-choix{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:4px 14px;max-height:320px;overflow:auto;padding:8px;border:1px solid var(--line);border-radius:10px}
.voies-choix label{display:flex;gap:8px;align-items:baseline;font-size:14px}
.case{display:flex;gap:8px;align-items:center;font-size:14px}
.binomes{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.binome-ligne{display:grid;grid-template-columns:1fr 70px auto;gap:8px;align-items:center;background:var(--bg);border-radius:10px;padding:6px 8px}
.binome-ligne input{padding:6px 8px;border-radius:8px;border:1px solid var(--line);font:600 14px var(--f-mono);text-transform:uppercase;width:100%}

/* Le pilote en direct */
.pilote-tete{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:end}
.pilote-choix select{padding:9px 12px;border-radius:10px;border:1px solid var(--line);background:var(--surface);font:600 15px var(--f-body);color:var(--ink)}
.pilote-anneaux{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.anneau{background:var(--nuit);color:#fff;border-radius:18px;padding:16px;display:flex;gap:14px;align-items:center}
.anneau svg{width:76px;height:76px;flex:none}
.anneau b{display:block;font:800 30px/1 var(--f-display);font-variant-numeric:tabular-nums}
.anneau span{display:block;font-size:13px}
.anneau .muted{color:#A9B8CF}
.an-fond{fill:none;stroke:rgba(255,255,255,.14);stroke-width:8}
.an-plein{fill:none;stroke:#F4A27A;stroke-width:8;stroke-linecap:round}
.an-pc{fill:#fff;font:700 15px var(--f-display)}
@media (max-width:620px){.pilote-anneaux{grid-template-columns:1fr}.anneau{padding:12px 14px}}
.pilote-deux{align-items:start}
.rythme-zone{display:grid;grid-template-columns:1.6fr 1fr;gap:20px;align-items:center}
@media (max-width:820px){.rythme-zone{grid-template-columns:1fr}}
.rythme.qualite{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));column-gap:28px}
.courbe-pilote{width:100%;height:auto}
.cp-grille{stroke:var(--line);stroke-width:1}
.cp-txt{font:16px var(--f-body);fill:var(--muted)}
.cp-obj{stroke:var(--muted);stroke-width:1.5;stroke-dasharray:6 5}
.cp-obj-t{fill:var(--ink);font-weight:600}
.cp-reel{fill:none;stroke:var(--laterite);stroke-width:3;stroke-linejoin:round;stroke-linecap:round}
.cp-point{fill:var(--laterite);stroke:var(--surface);stroke-width:2}
.rythme{display:grid;gap:10px}
.rythme>div{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--line)}
.rythme>div:last-child{border-bottom:0}
.rythme b{font:800 24px/1 var(--f-display);color:var(--enamel);min-width:88px;font-variant-numeric:tabular-nums}
.rythme span{font-size:14px;color:var(--muted)}
.rythme .bon b{color:var(--ok)}.rythme .chaud b{color:var(--laterite)}
.barres-q{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.barres-q li{display:grid;grid-template-columns:minmax(90px,150px) 1fr 64px;gap:10px;align-items:center;font-size:14px}
.bq-barre{position:relative;height:12px;border-radius:99px;background:var(--line);overflow:hidden}
.bq-barre i{position:absolute;left:0;top:0;bottom:0;border-radius:99px}
.bq-rel{background:var(--laterite)}.bq-val{background:var(--ok)}
.bq-n{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);font-size:13px}
.dernieres{list-style:none;margin:0;padding:0;display:grid;gap:10px;align-content:start}
.dernieres li{display:flex;gap:12px;align-items:center}
.plaque-mini{flex:none;background:var(--enamel);color:#fff;border:2px solid #fff;outline:2px solid var(--enamel);border-radius:6px;padding:4px 8px;font:700 13px var(--f-mono)}

/* Tableau de bord : en tête, ce que chaque rôle a à faire */
.bandeau-role{display:grid;gap:6px;padding:20px 22px;border-radius:18px;background:var(--nuit);color:#fff;text-decoration:none;position:relative}
.bandeau-role b{font:800 26px/1.15 var(--f-display)}
.bandeau-role .surtitre{color:#F4A27A}
.bandeau-role .fleche{position:absolute;right:22px;top:50%;transform:translateY(-50%);font:800 30px var(--f-display);color:#F4A27A}
.bandeau-role.sombre{gap:14px}
.bandeau-role .btn{justify-self:start;background:#D2622F;border-color:#D2622F}
.file-jour{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.file-jour a{display:grid;gap:2px;background:rgba(255,255,255,.08);border-radius:12px;padding:10px 12px;color:#fff;text-decoration:none}
.file-jour b{font:800 26px/1 var(--f-display)}
.file-jour span{font-size:12.5px;color:#C9D5E6}
.file-jour .chaud{background:rgba(210,98,47,.35)}
@media (max-width:860px){.file-jour{grid-template-columns:1fr 1fr}}
.raccourcis-jour{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.raccourcis-jour a{display:grid;gap:2px;padding:14px 16px;border-radius:14px;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--laterite);text-decoration:none;color:var(--ink)}
.raccourcis-jour a span{font-size:13px;color:var(--muted)}
@media (max-width:860px){.raccourcis-jour{grid-template-columns:1fr 1fr}}

.t-affs td:nth-child(3){min-width:210px}.t-affs td:nth-child(2){min-width:120px}.t-affs .mono{white-space:nowrap}
/* Les pages de gestion ne s'étirent plus quand le menu est plus haut que le contenu. */
.enveloppe.gestion>.pile{align-content:start}
.table-registre .mono{white-space:nowrap;font-weight:600}
/* Repli quand Leaflet ne peut pas se charger (pas de réseau) */
.carte-absente{display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;background:repeating-linear-gradient(135deg,#EEF2F7 0 14px,#E3EBF6 14px 28px);color:#5A6678;font-size:15px;line-height:1.5;min-height:180px}
