html{overflow-x:hidden}
body{max-width:100%;background:#f8f9ff;color:#031636;font-family:Inter,system-ui,sans-serif;padding-bottom:84px}
.material-symbols-outlined{font-size:22px;line-height:1;vertical-align:middle}
/* lisibilité : secondaires >= 14 px, gris >= slate-600 */
.text-xs{font-size:14px!important;line-height:1.4!important}
.text-slate-500,.text-slate-400{color:#475569!important}
.tap{min-height:44px;min-width:44px}
.card{background:#fff;border-radius:14px;box-shadow:0 1px 3px rgba(3,22,54,.10)}
.bar-Urgent{border-left:5px solid #ba1a1a}.bar-Haute{border-left:5px solid #d9730d}
.bar-Normale{border-left:5px solid #3b6fb6}.bar-Basse{border-left:5px solid #9aa5b5}
.badge{display:inline-block;font-size:14px;font-weight:600;padding:2px 8px;border-radius:999px;background:#e8edf7;color:#031636}
.badge-Urgent{background:#ba1a1a;color:#fff}.badge-Haute{background:#fde3c8;color:#8a4300}
.badge-Normale{background:#dbe7f8;color:#1d4577}.badge-Basse{background:#e8eaee;color:#374151}
.badge-conf{background:#fff0b8;color:#5c4400;border:1px solid #e0b92e}
.chip{min-height:44px;padding:0 14px;border-radius:999px;background:#fff;border:1px solid #b9c4d8;font-weight:500;font-size:14px;display:inline-flex;align-items:center;gap:6px;color:#031636}
.chip.on{background:#031636;color:#fff;border-color:#031636}
.passage{display:inline-flex;align-items:center;gap:4px;min-height:44px;padding:0 10px;border-radius:10px;background:#fff7da;color:#031636;font-size:14px;font-weight:600;border:1px solid #e0b92e;text-align:left}
nav.bottom{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid #d9e0ee;display:flex;z-index:30;padding-bottom:env(safe-area-inset-bottom)}
nav.bottom button{flex:1;min-height:56px;min-width:44px;font-size:14px;font-weight:600;color:#3d4a60;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
nav.bottom button.on{background:#fed65b;color:#031636}
@media(min-width:768px){
  body{padding-bottom:0;padding-top:0}
  nav.bottom{position:static;border:0;background:#031636;padding:6px 16px;gap:6px}
  nav.bottom button{flex:none;flex-direction:row;padding:0 16px;font-size:14px;color:#cdd7ea;border-radius:10px;min-height:44px}
  nav.bottom button.on{color:#031636}
}
.sheet{position:fixed;inset:0;background:rgba(3,22,54,.5);z-index:50;display:none;align-items:flex-end;justify-content:center}
.sheet.open{display:flex}
.sheet>div{background:#fff;width:100%;max-width:640px;border-radius:18px 18px 0 0;padding:20px 16px calc(20px + env(safe-area-inset-bottom));max-height:85vh;overflow:auto}
@media(min-width:768px){.sheet{align-items:center}.sheet>div{border-radius:18px}}
#toast{position:fixed;left:16px;right:16px;bottom:96px;background:#031636;color:#fff;padding:12px 16px;border-radius:12px;z-index:60;display:none;font-size:14px}
.hl{outline:3px solid #fed65b;background:#fffbe8}
h2{font-size:20px;font-weight:700!important}
h3{font-size:16px;font-weight:700!important}
select,input[type=text],input[type=search],input[type=date]{min-height:44px;border:1px solid #b9c4d8;border-radius:10px;padding:0 12px;background:#fff;font-size:16px;width:100%;color:#031636}
.csrc{display:inline-flex;align-items:center;gap:4px;font-size:14px;color:#3d4a60;background:#eef2fa;border-radius:8px;padding:6px 8px;min-height:32px}
.lien{display:flex;align-items:center;gap:10px;width:100%;text-align:left;min-height:44px;padding:6px 12px;border-radius:10px;background:#fff;border:1px solid #d9e0ee;font-size:14px;font-weight:500}
.lien .sub{display:block;font-size:14px;color:#475569;font-weight:400}
.cockframe{border:1px solid #cfd8e8;border-radius:14px;overflow:hidden;background:#fff}
.rail{background:#031636;color:#cdd7ea;width:56px;flex:none;padding:8px 0}
.rail div{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 15px;font-size:14px;white-space:nowrap}
.rail div span.l{display:none}
.rail div.on{background:#fed65b;color:#031636;font-weight:700}
@media(min-width:768px){.rail{width:190px}.rail div span.l{display:inline}}
.scrollrow{display:flex;gap:8px;overflow-x:auto;white-space:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.scrollrow::-webkit-scrollbar{display:none}
.scrollrow>*{flex:none}
.stick{position:sticky;top:0;z-index:20;background:#f8f9ff;padding:8px 16px;margin:0 -16px;border-bottom:1px solid #d9e0ee}
.kpi{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-height:72px;padding:8px 14px;border-radius:14px;background:#fff;box-shadow:0 1px 3px rgba(3,22,54,.10);text-align:left;border:2px solid transparent}
.kpi b{font-size:28px;line-height:1.1}
.kpi span{font-size:14px;color:#3d4a60;font-weight:600}
.kpi.rouge{border-color:#ba1a1a}.kpi.rouge b{color:#ba1a1a}
.abtn{min-height:44px;border-radius:10px;font-weight:600;font-size:14px;background:#eef2fa;color:#031636;border:1px solid #cfd8e8;padding:0 8px}
.abtn.ok{background:#031636;color:#fff;border-color:#031636}
.abtn.no{background:#fff;color:#ba1a1a;border-color:#ba1a1a}
.abtn[disabled]{opacity:.55}
.miroir{display:flex;align-items:center;gap:8px;min-height:44px;border-radius:10px;background:#d7f0dd;color:#14532d;font-size:14px;font-weight:600;padding:6px 10px}
#graph{height:calc(100svh - 405px);min-height:300px;overflow:hidden}
#graph .vis-network{touch-action:pan-y!important}
#graph.explore .vis-network{touch-action:none!important}
#nodePanel{max-height:160px;overflow:hidden}
@media(min-width:768px){#graph{height:70vh}#nodePanel{max-height:none;overflow:auto}}
.dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:14px}
.dl dt{color:#475569}.dl dd{font-weight:600}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
a.lien,a.tap{text-decoration:none;color:inherit}
a.tap{display:flex;align-items:center;justify-content:center}
.hidden{display:none!important}
.etape{display:flex;gap:4px;margin-top:8px}
.etape i{flex:1;height:8px;border-radius:4px;background:#d9e0ee}
.etape i.on{background:#031636}
.spin{width:28px;height:28px;border:4px solid #d9e0ee;border-top-color:#031636;border-radius:50%;animation:spin .8s linear infinite;margin:0 auto}
@keyframes spin{to{transform:rotate(360deg)}}
textarea{border:1px solid #b9c4d8;border-radius:10px;padding:10px 12px;background:#fff;font-size:16px;width:100%;color:#031636;min-height:96px}
input[type=password],input[type=email]{min-height:44px;border:1px solid #b9c4d8;border-radius:10px;padding:0 12px;background:#fff;font-size:16px;width:100%;color:#031636}
