@import url('../shared/brand.css');
body{font-size:15px}
.shell{display:grid;grid-template-columns:240px 1fr;min-height:100dvh}
.side{background:var(--bg2);border-right:1px solid var(--line);padding:16px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100dvh;overflow:auto}
.side img{height:32px;margin:4px 8px 20px;align-self:flex-start}
.side a{display:flex;align-items:center;gap:10px;min-height:40px;padding:8px 12px;border-radius:8px;color:var(--tx2);text-decoration:none;font-weight:500;line-height:1.25;transition:background-color .15s var(--ease),color .15s var(--ease)}
.side a:hover{background:var(--card);color:var(--tx)}
.side a .ico{width:18px;height:18px}
.side a.on{background:var(--raised);color:var(--tx);box-shadow:inset 3px 0 0 var(--red)}.side a .n{margin-left:auto;background:var(--red);color:#fff;border-radius:6px;padding:0 6px;font-size:.78rem;font-weight:600;line-height:1.5}
.side .who{margin-top:auto;font-size:.85rem;color:var(--tx2);padding:12px 8px 4px;border-top:1px solid var(--line)}
.main{padding:24px 32px;display:grid;gap:16px;align-content:start;min-width:0;max-width:1600px}
.main>h1{font-size:1.8rem;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px}.main>h1 small{font-size:.95rem;color:var(--tx2);font-weight:400;font-stretch:100%;font-family:var(--font)}
.main h2{margin-bottom:8px}
.grid{display:grid;gap:12px}.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}
.kpi{display:grid;gap:4px;align-content:start}
.kpi .v{font-family:var(--font-h);font-stretch:82%;font-weight:700;font-size:2rem;line-height:1.1}.kpi .l{color:var(--tx2);font-size:.9rem;font-weight:500}.kpi .s{font-size:.85rem;color:var(--tx3)}
.tbl{overflow:auto}.tbl tr.sel td{background:#2a1417}.tbl tbody tr:hover td{background:var(--raised);cursor:pointer}
.tbl td a[href^="tel"]{color:var(--tx);text-decoration:underline;text-decoration-color:var(--line2)}
.bars .b{display:grid;grid-template-columns:200px 1fr 40px;gap:8px;align-items:center;margin:4px 0;font-size:.9rem}.bars i{display:block;height:10px;border-radius:3px;background:var(--red)}
.bar-top{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.bar-top input,.bar-top select{width:auto;min-height:44px}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:60;display:grid;place-items:center;padding:16px}
.modal>div{background:var(--bg2);border:1px solid var(--line);border-radius:16px;padding:24px;width:min(640px,100%);max-height:92dvh;overflow:auto;display:grid;gap:12px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.login{min-height:100dvh;display:grid;place-items:center;padding:20px}.login>form{width:min(400px,100%);display:grid;gap:16px}.login img{height:56px;justify-self:center}
.tl{font-size:.9rem;display:grid;gap:4px}.tl div{border-left:3px solid var(--line);padding-left:12px}
.map{background:#121214;border:1px solid var(--line);border-radius:12px;width:100%;height:340px}
.livemap{display:grid;gap:12px}.lm-head{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}.lm-head h2{margin:0}
.lm-btns{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.lm-btns select{width:auto;min-height:44px}
.lm-body{display:grid;grid-template-columns:1fr 260px;gap:12px}.lm-body .map{height:520px;z-index:0}
.lm-side{display:grid;gap:8px;align-content:start;max-height:520px;overflow:auto}
.lm-row{display:flex;gap:10px;align-items:flex-start;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;color:var(--tx);cursor:pointer;font:inherit}
.lm-row.on{border-color:var(--red);box-shadow:inset 3px 0 0 var(--red)}.lm-row small{display:block;color:var(--tx2);font-size:.8rem;margin-top:2px}.lm-row .lm-dot{margin-top:4px;flex:none}
.lm-dot{display:inline-block;width:16px;height:16px;border-radius:50%;background:var(--c);border:3px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.5)}
/* point vivant = position GPS réelle en direct : la seule animation qui boucle, car elle signale un état vivant */
.lm-dot.live{animation:lmpulse 2s var(--ease) infinite}@keyframes lmpulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--c) 60%,transparent)}70%{box-shadow:0 0 0 10px transparent}100%{box-shadow:0 0 0 0 transparent}}
.lm-pin{position:relative}.lm-pin .lm-dot{position:absolute;left:-8px;top:-8px}.lm-pin .lm-name{position:absolute;left:12px;top:-11px;white-space:nowrap;background:#151517;color:#fff;font-weight:600;font-size:12px;padding:2px 8px;border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,.4)}
.livemap .leaflet-popup-content{color:#111;font-size:13px;line-height:1.45}
.livemap.full{position:fixed;inset:0;z-index:70;border-radius:0;overflow:auto}.livemap.full .lm-body .map,.livemap.full .lm-side{height:calc(100dvh - 150px);max-height:none}
.lm-foot{margin:0;font-size:.85rem}
@media(max-width:900px){.lm-body{grid-template-columns:1fr}.lm-body .map{height:420px}.lm-side{max-height:none}}
.pill{cursor:pointer}
@media(max-width:900px){
  .shell{grid-template-columns:1fr}
  .side{position:sticky;top:0;z-index:20;height:auto;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;padding:8px;gap:4px;border-right:0;border-bottom:1px solid var(--line);scrollbar-width:none}
  .side::-webkit-scrollbar{display:none}
  .side a{flex:none;white-space:nowrap;min-height:44px}
  .side img,.side .who{display:none}
  .g4,.g3{grid-template-columns:repeat(2,1fr)}.main{padding:16px}
  .bars .b{grid-template-columns:120px 1fr 32px}
}
@media(max-width:560px){.g4,.g3,.g2,.two{grid-template-columns:1fr}.bar-top input,.bar-top select{width:100%}}
