/* SQUALP · GMAO — maquette. Charte Mondrian isoar.fr / IXAO (Verdana, filets noirs, rouge / bleu / jaune). */
:root{
  --red:#FE0908; --blue:#3374CE; --yellow:#F3C14F; --black:#1A1A1A;
  --white:#F7F4EF; --cream:#FAF8F3; --paper:#FFFFFF; --grey:#5B5B54; --slate:#B1B1BD;
  --line:4px; --hair:2px;
  --font:Verdana, Geneva, sans-serif;
  --haut-h:64px; --bas-h:178px; --rail-w:300px; --panneau-w:400px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--font);font-size:13px;line-height:1.4;color:var(--black);background:var(--black);overflow:hidden;display:flex;flex-direction:column}
button,input{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer}
a{color:inherit;text-decoration:none}
[hidden]{display:none!important}
b{font-weight:700}

/* ---------- En-tête ---------- */
.haut{height:var(--haut-h);flex:0 0 auto;display:flex;align-items:stretch;background:var(--white);border-bottom:var(--line) solid var(--black);gap:0}
.haut>*{border-right:var(--hair) solid var(--black);display:flex;align-items:center;padding:0 14px}
.haut>*:last-child{border-right:0}
.marque{gap:14px;background:var(--paper);padding:0 16px}
.marque__logo{height:34px;width:auto;display:block}
.logo{display:inline-grid;grid-template-columns:repeat(4,1fr);gap:2px;width:36px;height:36px;border:2px solid var(--black);background:var(--black);flex:none}
.logo i{display:block}
.logo i:nth-child(1){background:var(--red);grid-row:span 2}
.logo i:nth-child(2){background:var(--white);grid-column:span 2}
.logo i:nth-child(3){background:var(--blue);grid-row:span 3}
.logo i:nth-child(4){background:var(--yellow);grid-column:span 2;grid-row:span 2}
.logo i:nth-child(5){background:var(--white)}
.logo i:nth-child(6){background:var(--white);grid-column:span 3}
.marque__txt{display:flex;flex-direction:column;line-height:1.1}
.marque__txt b{font-size:17px;letter-spacing:.16em}
.marque__txt small{font-size:11px;font-weight:700;color:var(--black);letter-spacing:.14em;text-transform:uppercase;border-left:var(--hair) solid var(--black);padding-left:10px;line-height:38px}
.site{flex-direction:column;align-items:center;justify-content:center;gap:2px;line-height:1.1;padding:0 14px;background:#fff}
.site__logo{height:34px;width:auto;display:block;border-left:var(--hair) solid var(--black);padding-left:14px}
.site b{font-size:14px}
.site small{font-size:11px;color:var(--grey);white-space:nowrap}

.kpis{padding:0;gap:0}
.kpi{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:92px;height:100%;padding:0 9px;border-right:var(--hair) solid var(--black);line-height:1.05;color:var(--black);transition:filter .15s}
.kpi:last-child{border-right:0}
.kpi b{font-size:22px;font-weight:900}
.kpi span{font-size:10px;text-transform:uppercase;letter-spacing:.06em;margin-top:3px;opacity:.85;white-space:nowrap}
.kpi--retard{background:var(--red);color:#fff}
.kpi--j30{background:var(--yellow)}
.kpi--planifie{background:var(--blue);color:#fff}
.kpi--conf{background:var(--paper)}
.kpi--pannes{background:var(--red);color:#fff}
.kpi--arret{background:var(--black);color:#fff}
.kpi--retard{background:var(--yellow);color:var(--black)}
.kpi--j30{background:var(--blue);color:#fff}
.outils-haut{gap:6px;padding:0 10px}
.outils-haut .btn{white-space:nowrap;font-size:11px;padding:7px 9px}
.outils-haut .btn.is-on{background:var(--black);color:#fff}
button.kpi:hover{filter:brightness(1.08)}
button.kpi.is-on{box-shadow:inset 0 -6px 0 var(--black)}

.filtre{gap:0;padding:0}
.filtre__b{height:100%;padding:0 10px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border-right:var(--hair) solid var(--black);background:var(--paper)}
.filtre__b:last-child{border-right:0}
.filtre__b.is-on{background:var(--black);color:#fff}

.projection{flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;min-width:170px;font-size:11px;color:var(--grey)}
.projection b{color:var(--black)}
.projection input{width:100%;accent-color:var(--red)}

.recherche{flex:1;position:relative;padding:0 12px;background:var(--paper)}
.recherche input{min-width:120px;width:100%;height:36px;border:var(--hair) solid var(--black);padding:0 12px;background:var(--white);font-size:13px}
.recherche input:focus{outline:none;background:#fff;box-shadow:inset 0 0 0 2px var(--blue)}
.recherche__res{position:absolute;left:12px;right:12px;top:52px;z-index:80;list-style:none;background:#fff;border:var(--hair) solid var(--black);box-shadow:0 12px 30px rgba(0,0,0,.25);max-height:60vh;overflow:auto}
.recherche__res li{padding:8px 12px;border-bottom:1px solid #e6e2da;cursor:pointer;display:flex;gap:10px;align-items:center}
.recherche__res li:hover,.recherche__res li.is-on{background:var(--cream)}
.recherche__res small{color:var(--grey);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- Corps ---------- */
.corps{flex:1;min-height:0;display:grid;grid-template-columns:var(--rail-w) minmax(0,1fr) var(--panneau-w);gap:var(--line);background:var(--black)}
.rail,.panneau{background:var(--white);display:flex;flex-direction:column;min-height:0}
.rail__tete{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:var(--blue);color:#fff;font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:11px;border-bottom:var(--hair) solid var(--black)}
.rail__tete small{font-weight:400;opacity:.85;letter-spacing:0;text-transform:none}
.arbre{flex:1;overflow:auto;padding:6px 0 12px}
.rail__pied{border-top:var(--hair) solid var(--black);padding:10px 14px;font-size:11px;background:var(--paper)}
.rail__pied p{color:var(--grey);margin-top:3px;line-height:1.35}

/* Arbre */
.nd{user-select:none;display:flex;align-items:center;gap:6px;padding:3px 8px 3px 0;cursor:pointer;white-space:nowrap;border-left:3px solid transparent;font-size:12px}
.nd:hover{background:var(--paper)}
.nd.is-on{background:var(--paper);border-left-color:var(--red);font-weight:700}
.nd__tog{width:16px;height:16px;flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:9px;color:var(--grey);border:1px solid var(--slate);background:#fff}
.nd__tog:empty{border:0;background:none}
.nd__nom{overflow:hidden;text-overflow:ellipsis;flex:1}
.nd__n{font-size:10px;color:var(--grey)}
.nd__b{font-size:10px;font-weight:700;padding:0 5px;border-radius:2px;color:#fff;background:var(--red);line-height:15px}
.nd__b--j30{background:var(--yellow);color:var(--black)}
.nd--l1{font-weight:700;font-size:13px;margin-top:4px}
.nd--l1 .nd__nom{text-transform:none}
.pastille{display:inline-block;width:10px;height:10px;border:1.5px solid var(--black);flex:none}
.pastille--retard{background:var(--red)}
.pastille--j30{background:var(--yellow)}
.pastille--planifie{background:var(--blue)}
.pastille--aucun{background:var(--white)}
.enfants{display:none}
.enfants.is-open{display:block}

/* Scène */
.scene{position:relative;background:var(--cream);min-width:0;min-height:0;overflow:hidden}
.scene canvas{display:block;width:100%!important;height:100%!important}
.etq-couche{position:absolute;inset:0;pointer-events:none}
.etq{pointer-events:auto;font:11px/1.2 var(--font);background:#fff;border:var(--hair) solid var(--black);padding:3px 7px;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;cursor:pointer;box-shadow:2px 2px 0 var(--black);transform:translate(-50%,-100%);user-select:none}
.etq span{max-width:170px;overflow:hidden;text-overflow:ellipsis}
.etq b{background:var(--red);color:#fff;font-size:10px;padding:0 5px;line-height:15px;border-radius:2px}
.etq--j30 b{background:var(--yellow);color:var(--black)}
.etq--retard{border-color:var(--red)}
.etq--plateau span{max-width:none}
.etq--plateau{font-weight:700;background:var(--black);color:#fff;box-shadow:none;transform:translate(0,-100%)}
.etq--rangee{background:none;border:0;box-shadow:none;color:var(--grey);font-size:10px;text-transform:uppercase;letter-spacing:.08em;transform:translate(-100%,-50%)}
.etq--cache{display:none}
.etq--cache.etq--force,.etq--cache.etq--sel{display:inline-flex}
.etq--sel{background:var(--yellow)}
.etq--ligne{transform:translate(-50%,0);font-weight:700;font-size:12px;flex-direction:column;align-items:center;gap:1px;padding:5px 12px}
.etq--ligne small{font-weight:400;color:var(--grey);font-size:10px}
.etq--ligne b{position:absolute;top:-8px;right:-8px}
.etq--colonne{transform:translate(-50%,-100%);text-align:center}
.etq--survol{position:absolute;z-index:5;pointer-events:none;transform:none;flex-direction:column;align-items:flex-start;gap:2px;font-size:12px}
.etq--survol i{font-style:normal;color:var(--grey);font-size:10px}

.scene__barre{position:absolute;top:12px;left:12px;right:12px;z-index:3;display:flex;justify-content:space-between;align-items:flex-start;gap:12px;pointer-events:none}
.scene__barre>*{pointer-events:auto}
.fil{display:flex;flex-wrap:wrap;gap:0;font-size:12px;flex:1;min-width:0}
.fil a,.fil span{display:inline-block;padding:6px 10px;background:#fff;border:var(--hair) solid var(--black);margin:0 0 -2px -2px;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fil>*:first-child{margin-left:0}
.fil>*:last-child{background:var(--black);color:#fff;font-weight:700}
.fil a:hover{background:var(--yellow)}
.scene__outils{display:flex;gap:6px;flex:none}
.btn{padding:7px 12px;background:#fff;border:var(--hair) solid var(--black);font-size:12px;font-weight:700;box-shadow:2px 2px 0 var(--black)}
.btn:hover{background:var(--cream)}
.btn:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--black)}
.btn:disabled{opacity:.4;cursor:default;box-shadow:none}
.btn--jaune{background:var(--yellow)}
.btn--rouge{background:var(--red);color:#fff}
.btn--bleu{background:var(--blue);color:#fff}
.legende{position:absolute;left:12px;bottom:12px;z-index:3;display:flex;gap:12px;align-items:center;background:#fff;border:var(--hair) solid var(--black);padding:6px 10px;font-size:10px;white-space:nowrap}
.legende span{display:inline-flex;align-items:center;gap:6px}
.legende em{color:var(--grey);font-style:normal;margin-left:6px;font-size:10px}
.demo-tag-off{position:absolute;right:12px;top:56px;z-index:3;font-size:10px;color:var(--grey);background:rgba(255,255,255,.85);padding:4px 8px;border:1px solid var(--slate)}

/* Panneau droit */
.onglets{display:flex;border-bottom:var(--hair) solid var(--black);background:var(--paper)}
.onglet{flex:1;padding:11px 8px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;border-right:var(--hair) solid var(--black);display:flex;justify-content:center;gap:6px;align-items:center}
.onglet:last-child{border-right:0}
.onglet.is-on{background:var(--black);color:#fff}
.onglet--ia.is-on{background:var(--red)}
.onglet--diag.is-on{background:var(--blue)}
.onglet b{background:var(--red);color:#fff;font-size:10px;padding:0 5px;line-height:15px;border-radius:2px}
.onglet b:empty{display:none}
.onglet.is-on b{background:#fff;color:var(--black)}
.vue{display:none;flex:1;min-height:0;overflow:auto}
.vue.is-on{display:flex;flex-direction:column}

/* Fiche */
.fiche{padding:0}
.fiche__tete{padding:14px 16px 12px;border-bottom:var(--hair) solid var(--black);background:#fff}
.fiche__niveau{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--grey)}
.fiche__nom{font-size:18px;font-weight:900;line-height:1.15;margin:3px 0 6px}
.fiche__chemin{font-size:11px;color:var(--grey);line-height:1.5}
.fiche__chemin a:hover{text-decoration:underline;color:var(--blue)}
.statut{display:inline-flex;align-items:center;gap:8px;padding:5px 10px;border:var(--hair) solid var(--black);font-weight:700;font-size:12px;margin-top:10px;background:#fff}
.statut--retard{background:var(--red);color:#fff}
.statut--j30{background:var(--yellow)}
.statut--planifie{background:var(--blue);color:#fff}
.statut small{font-weight:400;opacity:.9}
.bloc{padding:12px 16px;border-bottom:var(--hair) solid var(--black)}
.bloc h3{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--grey);margin-bottom:8px;display:flex;justify-content:space-between;align-items:center}
.bloc h3 em{font-style:normal;color:var(--black);text-transform:none;letter-spacing:0;font-size:11px}
.champs{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;font-size:12px}
.champs div{display:flex;flex-direction:column;line-height:1.25}
.champs div.large{grid-column:1/-1}
.champs small{font-size:10px;color:var(--grey);text-transform:uppercase;letter-spacing:.05em}
.champs b{font-weight:700}
.compte{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:6px}
.compte div{border:var(--hair) solid var(--black);padding:8px;text-align:center;line-height:1.1}
.compte b{display:block;font-size:20px;font-weight:900}
.compte small{font-size:10px;text-transform:uppercase;letter-spacing:.04em}
.compte .c-retard{background:var(--red);color:#fff}
.compte .c-j30{background:var(--yellow)}
.compte .c-planifie{background:var(--blue);color:#fff}
.jauge{margin-top:8px}
.jauge__b{height:12px;border:var(--hair) solid var(--black);background:#fff;position:relative;overflow:hidden}
.jauge__b i{position:absolute;top:0;bottom:0;background:var(--blue)}
.jauge__b i.tol{background:var(--yellow);opacity:.5}
.jauge__b b{position:absolute;top:-2px;bottom:-2px;width:3px;background:var(--red)}
.jauge small{display:flex;justify-content:space-between;font-size:10px;color:var(--grey);margin-top:3px}
.histo{list-style:none;font-size:12px}
.histo li{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid #e6e2da}
.histo li span:last-child{font-weight:700}
.histo li.nc span:last-child{color:var(--red)}
.actions{display:flex;gap:6px;flex-wrap:wrap;padding:12px 16px}
.gabarit{background:var(--cream);border:var(--hair) solid var(--black);padding:8px 10px;font-size:11px;margin-top:8px;line-height:1.4}
.gabarit b{color:var(--blue)}

/* Liste des contrôles */
.liste{list-style:none}
.liste li{display:grid;grid-template-columns:56px 1fr auto;gap:8px 10px;align-items:center;padding:8px 14px;border-bottom:1px solid #e6e2da;cursor:pointer}
.liste li:hover{background:#fff}
.liste li.is-on{background:#fff;box-shadow:inset 3px 0 0 var(--red)}
.liste .j{font-weight:900;font-size:13px;text-align:center;padding:4px 0;border:var(--hair) solid var(--black);line-height:1}
.liste .j--retard{background:var(--red);color:#fff}
.liste .j--j30{background:var(--yellow)}
.liste .j--planifie{background:var(--blue);color:#fff}
.liste .t{min-width:0}
.liste .t b{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.liste .t small{display:block;color:var(--grey);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.liste .d{font-size:11px;color:var(--grey);text-align:right;line-height:1.2}
.liste .d i{font-style:normal;display:block;font-size:9px;text-transform:uppercase;letter-spacing:.06em}
.liste__tete{padding:10px 14px;background:var(--paper);border-bottom:var(--hair) solid var(--black);font-size:11px;display:flex;justify-content:space-between;align-items:center}
.liste__tete select{border:var(--hair) solid var(--black);background:#fff;padding:3px 6px;font-size:11px}
.vide{padding:24px 16px;color:var(--grey);font-size:12px;text-align:center}

/* Assistant */
.vue--assistant{background:var(--cream)}
.chat{flex:1;overflow:auto;padding:14px;display:flex;flex-direction:column;gap:10px}
.msg{max-width:94%;padding:10px 12px;border:var(--hair) solid var(--black);font-size:12px;line-height:1.45;background:#fff;box-shadow:2px 2px 0 var(--black)}
.msg--moi{align-self:flex-end;background:var(--yellow)}
.msg--ia{align-self:flex-start}
.msg--ia em{color:var(--blue);font-style:normal}
.msg--attente{color:var(--grey)}
.msg ul{margin:6px 0 0 0;list-style:none}
.msg li{padding:3px 0;border-top:1px solid #e6e2da}
.msg li a{color:var(--blue);font-weight:700;cursor:pointer}
.msg li a:hover{text-decoration:underline}
.msg .tag{display:inline-block;font-size:10px;font-weight:700;padding:0 5px;border:1.5px solid var(--black);margin-right:5px;line-height:15px}
.msg .tag--retard{background:var(--red);color:#fff}
.msg .tag--j30{background:var(--yellow)}
.msg .tag--planifie{background:var(--blue);color:#fff}
.suggestions{display:flex;flex-wrap:wrap;gap:8px;padding:10px 14px 8px}
.suggestions button{font-size:11px;padding:4px 8px;background:#fff;border:1.5px solid var(--black)}
.suggestions button:hover{background:var(--yellow)}
.saisie{display:flex;gap:6px;padding:10px 14px;border-top:var(--hair) solid var(--black);background:#fff}
.saisie input{flex:1;border:var(--hair) solid var(--black);padding:8px 10px;background:var(--white)}
.saisie input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--blue)}
.mode{display:block;padding:0;background:#fff;color:var(--grey);font-size:10px}
.mode:empty{display:none}

/* Pied : échéancier */
.bas{height:var(--bas-h);flex:0 0 auto;background:var(--white);border-top:var(--line) solid var(--black);display:flex}
.echeancier{flex:1;display:flex;flex-direction:column;padding:10px 20px 10px;min-width:0;overflow:hidden}
.echeancier__tete{display:flex;justify-content:space-between;font-size:12px;color:var(--grey)}
.echeancier__tete b{color:var(--black);text-transform:uppercase;letter-spacing:.08em}
.echeancier__barres{flex:1;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:10px;align-items:end;margin-top:22px}
.sem{display:flex;flex-direction:column;justify-content:flex-end;height:100%;position:relative;cursor:pointer}
.sem i{display:block;width:100%;border:1.5px solid var(--black);border-bottom:0;min-height:0}
.sem i.r{background:var(--red)}
.sem i.j{background:var(--yellow)}
.sem i.p{background:var(--blue)}
.sem:hover i{filter:brightness(1.1)}
.sem small{font-size:11px;color:var(--black);text-align:center;border-top:var(--hair) solid var(--black);border-bottom:var(--hair) solid var(--black);padding:3px 0;white-space:nowrap;line-height:1.2;background:#fff}
.sem small i{display:block;font-style:normal;color:var(--grey);font-size:10px}
.sem b{position:absolute;top:-18px;left:0;right:0;text-align:center;font-size:13px;font-weight:900}
.sem.is-on small{background:var(--yellow)}
.pannes{width:var(--panneau-w);border-left:var(--line) solid var(--black);padding:10px 14px 8px;display:flex;flex-direction:column;gap:5px;font-size:11px;background:var(--paper);overflow:hidden}
.pannes h3{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--grey);display:flex;justify-content:space-between}
.pannes h3 em{font-style:normal;color:var(--black);letter-spacing:0;text-transform:none}
.analyse__ligne{display:flex;gap:8px;align-items:baseline;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.analyse__ligne>span{overflow:hidden;text-overflow:ellipsis}
.analyse__ligne small{flex:0 0 66px;color:var(--grey);font-size:10px;text-transform:uppercase;letter-spacing:.04em}
.analyse__ligne b{font-weight:700}
.analyse__ligne a{color:var(--blue);font-weight:700;cursor:pointer}
.analyse__ligne a:hover{text-decoration:underline}
.analyse__ligne .tag{display:inline-block;font-size:10px;font-weight:700;padding:0 5px;border:1.5px solid var(--black);line-height:15px;margin-left:3px}
.analyse__ligne .tag--retard{background:var(--red);color:#fff}
.analyse__barre{display:inline-flex;height:10px;border:1.5px solid var(--black);width:56px;overflow:hidden;vertical-align:middle;margin:0 6px}
.analyse__barre i{display:block;height:100%}

.toast{position:fixed;left:50%;bottom:calc(var(--bas-h) + 20px);transform:translateX(-50%);z-index:90;background:var(--black);color:#fff;padding:10px 16px;border:var(--hair) solid var(--yellow);font-size:12px;box-shadow:4px 4px 0 var(--yellow)}

.etq--ligne{font-size:11px;padding:4px 8px}
@media (max-width:1700px){.legende em{display:none}.site small{display:none}.projection{min-width:150px}}
@media (max-width:1280px){:root{--rail-w:250px;--panneau-w:340px}.projection{display:none}.site{display:none}}
@media (max-width:980px){
  .analyse{display:none}
  body{overflow:auto}
  .corps{grid-template-columns:1fr;grid-template-rows:60vh auto auto}
  .rail{display:none}
  .haut{flex-wrap:wrap;height:auto}
  .haut>*{padding:8px 12px}
  .recherche{min-width:100%}
  .bas{height:auto}
  .bas__mention{display:none}
}

/* Dernières pannes (pied, droite) */
.pannes ul{list-style:none;display:flex;flex-direction:column;gap:3px;overflow:hidden}
.pannes li{display:grid;grid-template-columns:44px 1fr auto;gap:8px;align-items:baseline;font-size:11px;white-space:nowrap;overflow:hidden;cursor:pointer}
.pannes li:hover b{text-decoration:underline}
.pannes li>span{overflow:hidden;text-overflow:ellipsis}
.pannes li small{color:var(--grey);font-size:10px}
.pannes li i{font-style:normal;font-weight:700;color:var(--red)}
.pannes__total{font-size:11px;color:var(--grey);margin-top:auto}
.pannes__total b{color:var(--black)}
/* Diagnostic */
.vue--diag{background:var(--cream)}
.diag__cible{padding:10px 14px;background:#fff;border-bottom:var(--hair) solid var(--black);font-size:12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.diag__cible b{font-size:13px}
.diag__cible small{color:var(--grey);font-size:11px}
.diag__cible .chips{display:flex;flex-wrap:wrap;gap:4px;width:100%}
.diag__cible .chips button{font-size:11px;padding:3px 7px;background:var(--white);border:1.5px solid var(--black)}
.diag__cible .chips button:hover{background:var(--yellow)}
.saisie--diag{border-top:0;border-bottom:var(--hair) solid var(--black)}
.diag__resultat{flex:1;overflow:auto;padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.diag{background:#fff;border:var(--hair) solid var(--black);box-shadow:3px 3px 0 var(--black);padding:10px 12px;font-size:12px}
.diag__tete{display:flex;gap:10px;align-items:flex-start;margin-bottom:6px}
.diag__tete small{display:block;color:var(--grey);font-size:11px;margin-top:2px}
.diag__n{flex:none;width:24px;height:24px;background:var(--black);color:#fff;font-weight:900;display:flex;align-items:center;justify-content:center}
.diag__prec{background:var(--yellow);border:1.5px solid var(--black);padding:5px 8px;font-size:11px;margin:6px 0}
.diag__organes{list-style:none;counter-reset:o}
.diag__organes li{display:grid;grid-template-columns:1fr 110px;gap:2px 10px;padding:6px 0;border-top:1px solid #e6e2da;align-items:center}
.diag__organes a{color:var(--blue);font-weight:700;cursor:pointer}
.diag__organes a:hover{text-decoration:underline}
.diag__organes small{color:var(--grey);font-size:10px;grid-column:1}
.diag__organes em{grid-column:1/-1;font-style:normal;font-size:10px;color:var(--red)}
.diag__score{grid-column:2;grid-row:1/span 2;position:relative;height:14px;border:1.5px solid var(--black);background:#fff}
.diag__score i{position:absolute;left:0;top:0;bottom:0;background:var(--red)}
.diag__score b{position:absolute;right:4px;top:-1px;font-size:10px}
.diag__verif{margin-top:6px;font-size:11px;background:var(--cream);padding:6px 8px;border-left:4px solid var(--blue)}
.actions--diag{border-top:var(--hair) solid var(--black);background:#fff;flex-wrap:nowrap;padding:8px 10px}
.actions--diag .btn{flex:1;padding:7px 6px;font-size:11px;white-space:nowrap}
.diag__resultat{min-height:220px}
/* Historique curatif dans la fiche */
.histo--pannes li{display:grid;grid-template-columns:1fr auto;gap:0 8px}
.histo--pannes li small{grid-column:1/-1;color:var(--grey);font-size:10px}
.histo--pannes li a{color:var(--blue);cursor:pointer}

/* Saisie d'intervention (clôture d'OS) */
.saisie-os{border-top:var(--hair) solid var(--black);background:#fff;padding:10px 14px 12px;display:flex;flex-direction:column;gap:7px;font-size:12px}
.saisie-os h3{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--grey);display:flex;justify-content:space-between}
.saisie-os h3 em{font-style:normal;color:var(--black);text-transform:none;letter-spacing:0}
.saisie-os label{display:flex;flex-direction:column;gap:3px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--grey)}
.saisie-os input,.saisie-os select{border:var(--hair) solid var(--black);padding:6px 8px;background:var(--white);font-size:12px;text-transform:none;letter-spacing:0;color:var(--black)}
.saisie-os input:focus,.saisie-os select:focus{outline:none;box-shadow:inset 0 0 0 2px var(--blue)}
.saisie-os__ligne{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.saisie-os__actions{display:flex;gap:6px;margin-top:4px}
.diag--src{background:var(--cream);box-shadow:none;font-size:11px}
.diag--src ul{list-style:none;margin-top:6px}
.diag--src li{padding:4px 0;border-top:1px solid #e6e2da}
.diag--src li a{color:var(--blue);font-weight:700}
.diag--src li small{display:block;color:var(--grey);font-size:10px;margin-top:2px}
.diag--src>small{color:var(--grey);display:block;margin-top:2px}
.histo--pannes li.saisie span:first-child::before{content:'● ';color:var(--red)}
.pannes li.saisie b::before{content:'● ';color:var(--red)}
/* Modal rapport d'import */
.modal{position:fixed;inset:0;z-index:100}
.modal__fond{position:absolute;inset:0;background:rgba(26,26,26,.55)}
.modal__boite{position:absolute;inset:36px 60px;background:var(--white);border:var(--line) solid var(--black);box-shadow:8px 8px 0 var(--black);overflow:auto;padding:22px 26px}
.imp__tete{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;border-bottom:var(--line) solid var(--black);padding-bottom:16px;margin-bottom:16px}
.imp__tete small{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--grey)}
.imp__tete h2{font-size:22px;font-weight:900;margin:2px 0 6px}
.imp__tete p{font-size:12px;max-width:640px;color:var(--grey)}
.imp__totaux{display:flex;flex:none}
.imp__totaux div{border:var(--hair) solid var(--black);border-right:0;padding:8px 14px;text-align:center;background:#fff;line-height:1.1}
.imp__totaux div:last-child{border-right:var(--hair) solid var(--black)}
.imp__totaux b{display:block;font-size:22px;font-weight:900}
.imp__totaux span{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--grey)}
.imp__grille{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.imp__bloc{border:var(--hair) solid var(--black);background:#fff;padding:12px 14px;font-size:12px}
.imp__bloc--ok{border-top:6px solid var(--blue)}
.imp__bloc--q{border-top:6px solid var(--yellow)}
.imp__bloc--large{grid-column:1/-1;border-top-color:var(--red)}
.imp__bloc h3{font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;display:flex;justify-content:space-between;gap:8px}
.imp__bloc h3 em{font-style:normal;text-transform:none;letter-spacing:0;color:var(--grey);font-weight:400}
.imp__table{width:100%;border-collapse:collapse;font-size:11px}
.imp__table th,.imp__table td{text-align:left;padding:3px 4px;border-bottom:1px solid #e6e2da}
.imp__table th{font-size:10px;text-transform:uppercase;color:var(--grey)}
.imp__liste{list-style:none}
.imp__liste li{display:flex;justify-content:space-between;gap:8px;padding:3px 0;border-bottom:1px solid #e6e2da;font-size:11px}
.imp__liste li b{white-space:nowrap}
.imp__liste li small{color:var(--grey);font-size:10px}
.imp__liste--2col{columns:2;column-gap:14px}
.imp__liste--2col li{break-inside:avoid}
.imp__note{margin-top:8px;font-size:11px;color:var(--grey);line-height:1.4}
.imp__actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}
@media (max-width:1280px){.imp__grille{grid-template-columns:1fr 1fr}.modal__boite{inset:16px}}

.docs{list-style:none;font-size:12px}
.docs li{padding:5px 0;border-bottom:1px solid #e6e2da}
.docs li a{color:var(--blue);font-weight:700}
.docs li small{display:block;color:var(--grey);font-size:10px}
.docs__vide{font-size:12px;color:var(--grey);line-height:1.45}
.diag--ajout{background:var(--yellow);font-size:12px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.diag__fait{font-weight:700;color:var(--blue)}
.nd__ajout{font-style:normal;font-size:9px;background:var(--blue);color:#fff;padding:0 4px;margin-left:4px;vertical-align:middle}

/* V3 (02/10) : la recherche reste toujours visible dans l'en-tête — elle garde une largeur minimale, les autres blocs se compactent */
.haut{min-width:0;position:relative;z-index:90}
.recherche{flex:1 0 210px;min-width:210px;display:flex;align-items:center}
@media (max-width:1700px){
  .kpi{min-width:74px;padding:0 6px}
  .kpi b{font-size:20px}
  .kpi span{font-size:9px;letter-spacing:.03em}
  .filtre__b{padding:0 8px}
  .outils-haut .btn{padding-left:8px;padding-right:8px}
  .projection{min-width:120px}
}
@media (max-width:1500px){.projection{display:none}}

/* 11/10 : en dessous de ~1360 px (fenêtre réduite, petit portable, vidéoprojecteur 1280) l'en-tête débordait et coupait la recherche → on compacte logos, KPI, boutons */
@media (max-width:1360px){
  .marque{padding:0 10px;gap:10px}
  .marque__logo{height:26px}
  .site__logo{height:28px;padding-left:10px}
  .kpi{min-width:62px;padding:0 4px}
  .kpi b{font-size:18px}
  .kpi span{font-size:8.5px;letter-spacing:.02em}
  .outils-haut{padding:0 8px;gap:4px}
  .outils-haut .btn{font-size:10px;padding:6px 6px}
  .filtre__b{padding:0 6px;font-size:9.5px}
  .recherche{flex-basis:170px;min-width:170px;padding:0 10px}
  .recherche input{padding:0 10px}
}
@media (max-width:1180px){
  .marque__logo{height:22px}
  .site__logo{height:24px}
  .kpi{min-width:54px}
  .kpi b{font-size:16px}
  .kpi span{font-size:8px;letter-spacing:0}
  .recherche{flex-basis:140px;min-width:140px}
}
/* 11/10 : onglets du panneau droit (Diagnostic · Fiche · Contrôles · Assistant) — « Assistant » sortait de l'écran à 1280 px */
@media (max-width:1360px){
  .onglet{flex:1 1 auto;min-width:0;padding:11px 4px;font-size:10px;letter-spacing:.02em;gap:4px}
  .onglet b{font-size:9px;padding:0 3px}
}

/* ---------- Téléphone et tablette (11/10) : uniquement sous 980 px, l'affichage ordinateur n'est pas touché ----------
   La page défile au lieu d'être figée à la hauteur de l'écran : en-tête en grille, vue 3D, arborescence, panneau
   (diagnostic / fiche / contrôles / assistant), échéancier et dernières pannes les uns sous les autres. */
@media (max-width:980px){
  html,body{height:auto}
  body{display:block;overflow:auto}
  .haut{display:grid;grid-template-columns:1fr;height:auto}
  .haut>*{border-right:0;border-top:var(--hair) solid var(--black);padding:8px 12px}
  .haut>*:first-child{border-top:0}
  .marque{justify-content:flex-start}
  .kpis{display:grid;grid-template-columns:repeat(4,1fr);padding:0}
  .kpi{min-width:0;padding:8px 2px;height:auto}
  .kpi:last-child{border-right:0}
  .outils-haut{flex-wrap:wrap}
  .filtre{padding:0}
  .filtre__b{flex:1;height:40px}
  .recherche{min-width:0;flex:none}
  .corps{display:flex;flex-direction:column}
  .scene{order:1;height:62vh;min-height:340px}
  .rail{order:2;display:flex;height:50vh}
  .panneau{order:3;height:88vh}
  .scene__barre{flex-wrap:wrap;gap:6px}
  .scene__outils{flex-wrap:wrap;flex:1 1 100%}
  .legende{flex-wrap:wrap;white-space:normal;right:12px;gap:6px 12px}
  .bas{flex-direction:column;height:auto}
  .echeancier{overflow-x:auto;padding:10px 12px}
  .echeancier__tete{flex-direction:column;gap:2px}
  .echeancier__barres{min-width:560px;height:150px}
  .pannes{width:auto;border-left:0;border-top:var(--line) solid var(--black)}
  .imp__grille{grid-template-columns:1fr}
  .modal__boite{inset:8px;padding:16px}
  input[type=text],input[type=search]{font-size:16px}   /* sous 16 px, l'iPhone zoome la page à la saisie */
}
@media (max-width:600px){
  .marque__logo{height:24px}
  .site__logo{height:26px}
  .onglet{padding:12px 2px;font-size:9.5px;letter-spacing:0}
  /* vue usine : 7 lignes sur la largeur d'un téléphone → étiquettes plus compactes, une sur deux décalée vers le bas */
  .etq--ligne{font-size:10px;padding:2px 5px;gap:4px}
  .etq--ligne small{display:none}
  .etq--ligne:nth-child(even){margin-top:30px}
  .saisie input{min-width:0;width:0;flex:1 1 auto}
}
