/* Suivi GPS et contrôle de conduite : une interface commune. */
.fleet-module { --fleet-ink:#263642;--fleet-muted:#75838e;--fleet-line:#e4e9ef;--fleet-paper:#fff;--fleet-wash:#f5f7fb;position:relative;max-width:1640px;margin:0 auto;padding:8px 0 24px;color:var(--fleet-ink); }
:root:not([data-theme="light"]) .fleet-module { --fleet-ink:#e9edf5;--fleet-muted:#a8b5c9;--fleet-line:#2c3b50;--fleet-paper:#182435;--fleet-wash:#202e42; }
.fleet-module [hidden] { display:none !important; }
.fleet-heading { display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px; }
.fleet-eyebrow { font-size:9px;font-weight:700;letter-spacing:.15em;color:var(--fleet-muted);display:block; }
.fleet-heading h1 { font-family:'Plus Jakarta Sans','Archivo',sans-serif;font-size:clamp(26px,2.8vw,36px);letter-spacing:-1.3px;line-height:1.25;margin:8px 0 10px;font-weight:750; }
.fleet-heading h1 span { color:#6762ec; }
.fleet-heading p { font-size:12px;color:var(--fleet-muted);margin:0;line-height:1.7; }
.fleet-primary { display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#f45b38;color:#fff;border:0;border-radius:11px;padding:12px 18px;font-family:inherit;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer;box-shadow:0 4px 12px #f45b3820; }
.fleet-primary iconify-icon { font-size:18px; }
.fleet-primary:hover { background:#de4a28; }
.fleet-primary:disabled { opacity:.6;cursor:wait; }
.fleet-tabs { display:flex;gap:28px;border-bottom:1px solid var(--fleet-line);margin-bottom:24px;overflow-x:auto; }
.fleet-tabs a { display:inline-flex;align-items:center;gap:8px;white-space:nowrap;color:var(--fleet-muted);padding:12px 0 16px;border-bottom:2px solid transparent;font-size:13px;font-weight:600;text-decoration:none; }
.fleet-tabs a iconify-icon { font-size:20px; }
.fleet-tabs a.is-active { color:#6762ec;border-bottom-color:#7770fa; }
.fleet-module :is(button,a,input,summary):focus-visible { outline:2px solid #7770fa;outline-offset:3px; }
.fleet-stats { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:24px; }
.fleet-stat { border:1px solid var(--fleet-line);border-radius:14px;padding:17px 20px;text-align:left;cursor:pointer;transition:transform .18s,border-color .18s; }
.fleet-stat:hover { transform:translateY(-2px);border-color:currentColor; }
.fleet-stat.coral { background:#fff2ec;border-color:#ffdfd0;color:#ed5c36; }
.fleet-stat.mint { background:#eafaF4;border-color:#cceee1;color:#0a9f80; }
.fleet-stat.blue { background:#f0efff;border-color:#dfdcff;color:#6962e7; }
.fleet-stat.amber { background:#fff8e7;border-color:#f2e4b9;color:#b77e09; }
.fleet-stat > span { display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--fleet-muted); }
.fleet-stat > span iconify-icon { font-size:21px;color:inherit; }
.fleet-stat > strong { display:block;font-size:31px;font-weight:650;line-height:1.2;letter-spacing:-1px;margin:10px 0 8px;font-variant-numeric:tabular-nums; }
.fleet-stat > small { display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:10px;color:var(--fleet-muted); }
.fleet-stat > small iconify-icon { color:#f45b38;font-size:16px; }
#sv-alerte { font-size:12px;color:#a46716;background:#fff5df;border:1px solid #f0d8ab;border-radius:10px;padding:12px 16px;line-height:1.7;margin-bottom:18px; }
.fleet-workspace { display:grid;grid-template-columns:330px minmax(0,1fr);gap:20px;align-items:start; }
.fleet-sidebar { min-width:0;background:var(--fleet-paper);border:1px solid var(--fleet-line);border-radius:16px;overflow:hidden; }
.fleet-sidebar-heading { display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 18px 15px; }
.fleet-sidebar-heading h2 { font-size:14px;letter-spacing:-.25px;margin:0; }
.fleet-sidebar-heading h2 span { display:inline-block;font-size:10px;padding:3px 6px;background:#efedff;color:#6762d9;border-radius:5px;margin-left:6px;font-weight:600; }
.fleet-sidebar-heading .fleet-eyebrow { font-size:8px; }
.fleet-search { display:flex;align-items:center;gap:8px;border:1px solid var(--fleet-line);border-radius:9px;margin:0 14px 12px;padding:0 10px;color:var(--fleet-muted);background:var(--fleet-wash); }
.fleet-search input { width:100%;min-width:0;background:transparent;border:0;outline:none;padding:10px 0;color:var(--fleet-ink);font-family:inherit;font-size:11px; }
.fleet-search:focus-within { border-color:#7770fa; }
.fleet-filters { display:flex;flex-wrap:wrap;gap:5px;padding:0 14px 14px;border-bottom:1px solid var(--fleet-line); }
.fleet-filters button { border:1px solid transparent;background:transparent;padding:6px 8px;border-radius:6px;font:inherit;font-size:10px;color:var(--fleet-muted);cursor:pointer;white-space:nowrap; }
.fleet-filters button.is-active { background:#eeedff;color:#635ae4;border-color:#dedaff;font-weight:600; }
.fleet-vehicle-list { padding:12px;max-height:590px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--fleet-line) transparent; }
.fleet-vehicle { background:var(--fleet-paper);border:1px solid var(--fleet-line);border-radius:12px;padding:14px;margin-bottom:12px;transition:border-color .18s,box-shadow .18s; }
.fleet-vehicle:last-child { margin-bottom:0; }
.fleet-vehicle:hover { border-color:#b9b3f8; }
.fleet-vehicle.is-selected { border-color:#7a70f2;box-shadow:0 0 0 2px #7770fa10; }
.fleet-vehicle-select { display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;padding:0;text-align:left;color:var(--fleet-ink);cursor:pointer; }
.fleet-car-icon { flex:0 0 auto;display:grid;place-items:center;width:35px;height:35px;border-radius:10px;background:var(--fleet-wash);color:var(--state);font-size:21px; }
.fleet-vehicle-select > span:nth-child(2) { flex:1;min-width:0; }
.fleet-vehicle-select strong { font-size:14px;display:block;font-weight:700;letter-spacing:.1px; }
.fleet-vehicle-select small { display:block;font-size:10px;color:var(--fleet-muted);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.fleet-locate-icon { color:#7a70f2;font-size:18px; }
.fleet-vehicle-state { display:flex;align-items:center;justify-content:space-between;margin:14px 0 7px;gap:8px; }
.fleet-vehicle-state > span { display:inline-flex;align-items:center;gap:6px;color:var(--state);font-size:10px;font-weight:600; }
.fleet-vehicle-state i { width:6px;height:6px;border-radius:50%;background:var(--state); }
.fleet-vehicle-state b { font-size:13px; }
.fleet-vehicle-state b small { font-size:9px;color:var(--fleet-muted);font-weight:400; }
.fleet-last-seen { display:flex;align-items:center;gap:5px;font-size:9px;line-height:1.6;color:var(--fleet-muted);margin:0 0 13px; }
.fleet-last-seen.is-old { color:#b67d34; }
.fleet-battery { padding-top:12px;border-top:1px solid var(--fleet-line); }
.fleet-battery > div:first-child { display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10px; }
.fleet-battery > div:first-child > span { display:flex;align-items:center;gap:5px;color:var(--fleet-muted); }
.fleet-battery > div:first-child > strong { font-size:20px;font-weight:650; }
.fleet-battery > div:first-child strong small { font-size:10px; }
.fleet-battery-track { height:5px;background:var(--fleet-wash);border-radius:5px;overflow:hidden;margin:8px 0; }
.fleet-battery-track span { height:100%;display:block;border-radius:inherit; }
.fleet-battery > p { display:flex;align-items:center;gap:4px;font-size:9px;color:var(--fleet-muted);margin:0;line-height:1.7; }
.fleet-battery > p strong { font-size:11px;color:var(--fleet-ink);font-weight:600; }
.fleet-charge-warning { color:#c15d2c;margin-left:auto;font-weight:600; }
.fleet-vehicle-actions { display:flex;gap:6px;margin-top:13px; }
.fleet-vehicle-actions button { display:flex;align-items:center;justify-content:center;gap:4px;flex:1;font-family:inherit;font-size:10px;white-space:nowrap;border:1px solid var(--fleet-line);background:var(--fleet-wash);color:var(--fleet-ink);padding:8px 5px;border-radius:7px;cursor:pointer; }
.fleet-vehicle-actions button:hover { border-color:#7770fa;color:#6762d9; }
.fleet-vehicle-actions button:last-child { background:#eefaf5;color:#188970;border-color:#ceeedf; }
.fleet-details { margin-top:11px;font-size:9px;color:var(--fleet-muted);line-height:1.7; }
.fleet-details summary { cursor:pointer;font-size:9px; }
.fleet-details p { margin:8px 0 0; }
.fleet-map-panel { border:1px solid var(--fleet-line);border-radius:16px;background:var(--fleet-paper);overflow:hidden;min-width:0;position:sticky;top:90px; }
.fleet-map-heading { display:flex;align-items:center;justify-content:space-between;padding:15px 18px;gap:10px; }
.fleet-map-heading > div { display:flex;align-items:center;gap:8px; }
.fleet-map-heading strong { font-size:12px;font-weight:600; }
.fleet-map-dot { width:7px;height:7px;border-radius:50%;background:#7b6af0;box-shadow:0 0 0 4px #7b6af015; }
.fleet-map-heading button { display:flex;align-items:center;gap:6px;border:1px solid var(--fleet-line);border-radius:7px;background:var(--fleet-paper);color:var(--fleet-ink);padding:7px 10px;cursor:pointer;font-family:inherit;font-size:10px; }
.fleet-map-heading button iconify-icon { color:#7770fa;font-size:16px; }
.fleet-map-area { position:relative;background:var(--fleet-wash); }
.fleet-map-area #sv-map { height:610px;width:100%;z-index:1; }
.fleet-map-status { position:absolute;z-index:500;top:16px;left:16px;right:16px;border:1px solid var(--fleet-line);border-radius:9px;background:var(--fleet-paper);padding:13px;color:var(--fleet-muted);font-size:12px;box-shadow:0 5px 20px #23374410; }
.fleet-map-status button { border:0;background:transparent;color:#6762ec;text-decoration:underline;cursor:pointer;margin-left:8px; }
.fleet-map-footer { display:flex;align-items:center;gap:15px;flex-wrap:wrap;padding:13px 18px;color:var(--fleet-muted);font-size:9px; }
.fleet-map-footer > span { display:flex;align-items:center;gap:5px;white-space:nowrap; }
.fleet-map-footer i { width:6px;height:6px;border-radius:50%; }
.fleet-map-footer .moving { background:#02b3a9; }
.fleet-map-footer .stopped { background:#4a43c2; }
.fleet-map-footer .offline { background:#7c89a3; }
.fleet-map-footer small { margin-left:auto;font-size:9px; }
.fleet-footnote { display:flex;align-items:center;gap:6px;font-size:10px;color:var(--fleet-muted);margin:16px 0;line-height:1.7; }
.fleet-footnote iconify-icon { flex-shrink:0;font-size:15px; }
.fleet-empty { padding:35px 10px;text-align:center; }
.fleet-empty > iconify-icon { font-size:32px;color:#7770fa; }
.fleet-empty h3 { font-size:13px;margin:14px 0 8px; }
.fleet-empty p { color:var(--fleet-muted);font-size:11px;line-height:1.7; }
.fleet-empty button { margin-top:12px;border:0;background:#efedff;color:#6762d9;padding:9px 12px;border-radius:8px;cursor:pointer;font-size:11px; }
/* Contrôle de conduite : sous-navigation et composants alignés sur le suivi. */
.fleet-control-emblem { display:grid;place-items:center;width:60px;height:60px;border-radius:18px;background:#eeedff;color:#7770fa;font-size:31px; }
.fleet-control .cc-tabs { display:flex;gap:6px;flex-wrap:wrap;padding:5px;background:var(--fleet-paper);border:1px solid var(--fleet-line);border-radius:12px;margin-bottom:24px;width:fit-content;max-width:100%; }
.fleet-control .cc-tab { border:1px solid transparent;margin:0;border-radius:8px;padding:10px 14px;font-size:12px;color:var(--fleet-muted); }
.fleet-control .cc-tab.active { background:#eeedff;border-color:#dfdcff;color:#6762d9; }
.fleet-control .cc-kpi { border-color:var(--fleet-line);border-radius:14px;background:var(--fleet-paper);padding:20px;box-shadow:none; }
.fleet-control .cc-kpi:nth-child(4n+1) { background:#fff2ec;border-color:#ffdfd0; }
.fleet-control .cc-kpi:nth-child(4n+2) { background:#f0efff;border-color:#dfdcff; }
.fleet-control .cc-kpi:nth-child(4n+3) { background:#fff8e7;border-color:#f2e4b9; }
.fleet-control .cc-kpi:nth-child(4n+4) { background:#eafaf4;border-color:#cceee1; }
.fleet-control .cc-kpi-val { font-size:29px;letter-spacing:-1px;font-weight:650; }
.fleet-control .cc-kpi-label { color:var(--fleet-muted);font-weight:500;font-size:11px; }
.fleet-control .cc-kpi-icon { width:32px;height:32px;border-radius:9px; }
.fleet-control .cc-filter-row { background:var(--fleet-paper);border:1px solid var(--fleet-line);border-radius:11px;padding:12px;gap:9px; }
.fleet-control .cc-filter-select { min-height:35px;border-color:var(--fleet-line);border-radius:8px; }
.fleet-control .cc-zone-card, .fleet-control .cc-chart-card { background:var(--fleet-paper);border-color:var(--fleet-line);border-radius:14px;padding:20px; }
.fleet-control .cc-zone-name { font-size:14px; }
.fleet-control .cc-zone-actions { gap:8px; }
.fleet-control .card { background:var(--fleet-paper);border:1px solid var(--fleet-line);border-radius:14px;box-shadow:none; }
.fleet-control .btn { border-radius:8px;font-size:12px; }
.fleet-control .btn-primary { background:#f45b38;border-color:#f45b38;color:#fff;box-shadow:none; }
.fleet-control .table-container { border-radius:12px;border:1px solid var(--fleet-line); }
.fleet-control #cc-zones-map { box-shadow:none;border:1px solid var(--fleet-line);border-radius:14px; }
:root:not([data-theme="light"]) .fleet-stat { background:var(--fleet-paper);border-color:var(--fleet-line); }
:root:not([data-theme="light"]) .fleet-stat.coral { color:#ff967e; }
:root:not([data-theme="light"]) .fleet-stat.mint { color:#5ed9b7; }
:root:not([data-theme="light"]) .fleet-stat.blue { color:#a69fff; }
:root:not([data-theme="light"]) .fleet-stat.amber { color:#f5c461; }
:root:not([data-theme="light"]) .fleet-control .cc-kpi { background:var(--fleet-paper);border-color:var(--fleet-line); }
:root:not([data-theme="light"]) .fleet-heading h1 span,:root:not([data-theme="light"]) .fleet-tabs a.is-active { color:#aaa2ff; }
:root:not([data-theme="light"]) .fleet-filters button.is-active,:root:not([data-theme="light"]) .fleet-control .cc-tab.active { color:#c4beff;background:#7770fa20;border-color:#7770fa50; }
:root:not([data-theme="light"]) .fleet-vehicle-actions button:last-child { color:#6bddbc;background:#02b3a915;border-color:#02b3a930; }
@media (max-width:1100px) { .fleet-workspace { grid-template-columns:300px minmax(0,1fr);gap:14px; }.fleet-stat { padding:15px; }.fleet-map-footer small { width:100%;margin:0; } }
@media (max-width:900px) { .fleet-workspace { grid-template-columns:1fr; }.fleet-map-panel { position:relative;top:0;grid-row:1; }.fleet-map-area #sv-map { height:400px; }.fleet-vehicle-list { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-height:none; }.fleet-vehicle { margin:0; }.fleet-filters { flex-wrap:wrap; }.fleet-stats { grid-template-columns:repeat(2,minmax(0,1fr));gap:10px; } }
@media (max-width:600px) { .fleet-heading { align-items:flex-start;gap:12px; }.fleet-heading h1 { font-size:25px;letter-spacing:-1px; }.fleet-heading h1 span { display:block; }.fleet-heading p { font-size:11px; }.fleet-primary { padding:10px 12px;font-size:10px; }.fleet-eyebrow { font-size:8px; }.fleet-tabs { gap:18px; }.fleet-tabs a { font-size:11px;gap:6px; }.fleet-tabs a iconify-icon { font-size:18px; }.fleet-stat > span { font-size:10px; }.fleet-stat > small { font-size:9px;line-height:1.5; }.fleet-stat > strong { font-size:28px; }.fleet-vehicle-list { grid-template-columns:1fr; }.fleet-map-area #sv-map { height:330px; }.fleet-map-heading { padding:12px; }.fleet-map-heading strong { font-size:11px; }.fleet-map-footer { gap:12px;padding:12px; }.fleet-control .cc-tab { font-size:10px;padding:9px 10px; }.fleet-control-emblem { display:none; }.fleet-control .cc-kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr)) !important;gap:10px; }.fleet-control .cc-kpi { padding:13px; }.fleet-control .cc-kpi-val { font-size:23px; }.fleet-control .cc-kpi-top { gap:6px; }.fleet-control .cc-kpi-icon { width:26px;height:26px;font-size:16px;flex-shrink:0; }.fleet-control .cc-zone-cards { grid-template-columns:1fr; } }
@media (prefers-reduced-motion:reduce) { .fleet-module * { transition:none !important;scroll-behavior:auto !important; } }

.fleet-control .d-card { border:1px solid var(--fleet-line);border-radius:14px;box-shadow:none; }
.fleet-control .d-card:has(> .cc-filter-row) { padding:0 !important;background:transparent;border:0; }

/* Carte de flotte : repères, commandes et lecture des positions. */
.fleet-map-panel{border-radius:24px;box-shadow:0 12px 36px #253b5110;border-color:#dde5ed}
.fleet-map-heading{padding:18px 20px;background:var(--fleet-paper)}.fleet-map-heading>div{flex:1;gap:12px}.fleet-map-heading>div>div{display:flex;flex-direction:column;gap:4px}.fleet-map-heading strong{font-size:14px;color:var(--fleet-ink);letter-spacing:-.3px}.fleet-map-eyebrow{font-size:8px;letter-spacing:.15em;font-weight:800;color:var(--fleet-muted)}.fleet-map-emblem{display:grid;place-items:center;background:#eee9ff;color:#6952db;width:40px;height:40px;border-radius:13px;font-size:24px}.fleet-map-heading button{border-radius:11px;min-height:38px;font-size:11px;transition:background .2s,transform .2s}.fleet-map-heading button:hover{background:#eee9ff;transform:translateY(-1px)}.fleet-map-heading button:focus-visible{outline:3px solid #8b76ec;outline-offset:3px}.fleet-map-area{border-top:1px solid var(--fleet-line);border-bottom:1px solid var(--fleet-line)}#sv-map .leaflet-tile-pane{filter:saturate(.6) brightness(1.045)}.fleet-map-compass{position:absolute;right:18px;top:18px;z-index:450;display:flex;align-items:center;flex-direction:column;gap:3px;border:1px solid #ffffffd0;border-radius:16px;padding:9px 11px;background:#ffffffed;box-shadow:0 6px 20px #223b4b18;color:#3d435b;pointer-events:none}.fleet-map-compass span{font-size:9px;font-weight:800}.fleet-map-compass iconify-icon{font-size:25px;color:#6b55d8}.fleet-map-marker{position:relative;display:flex;align-items:center;flex-direction:column;width:120px;height:72px;filter:drop-shadow(0 4px 7px #24344728)}.fleet-marker-halo{position:absolute;top:-7px;width:62px;height:62px;border-radius:50%;background:var(--marker-color);opacity:.13}.fleet-marker-pin{position:relative;display:grid;place-items:center;width:46px;height:46px;background:var(--marker-color);border:3px solid white;border-radius:50%;color:white;box-shadow:0 0 0 1px #253b5110}.fleet-marker-pin svg{width:24px;height:24px}.fleet-marker-label{display:flex;align-items:center;gap:6px;position:relative;margin-top:5px;white-space:nowrap;padding:6px 10px;border-radius:9px;background:#fff;color:#29384b;font-family:inherit;font-size:10px;font-weight:800;border:1px solid #dce3eb;letter-spacing:.02em}.fleet-marker-label i{width:6px;height:6px;border-radius:50%;background:var(--marker-color)}#sv-map .leaflet-marker-icon:hover .fleet-marker-pin,#sv-map .leaflet-marker-icon:focus .fleet-marker-pin{box-shadow:0 0 0 5px #ffffff80;transform:scale(1.08)}#sv-map .leaflet-control-zoom{border:1px solid #e2e7ef;border-radius:13px;overflow:hidden;box-shadow:0 5px 20px #24344720;margin:0 18px 20px 0}#sv-map .leaflet-control-zoom a{width:38px;height:38px;line-height:38px;color:#354458;background:white;font-size:22px}#sv-map .leaflet-control-attribution{font-size:9px;background:#ffffffdb}#sv-map .leaflet-popup-content-wrapper{border-radius:18px;box-shadow:0 10px 40px #24344725}#sv-map .leaflet-popup-content{margin:20px;min-width:175px}.fleet-map-popup{display:flex;flex-direction:column;gap:10px;font-family:var(--font-family,inherit)}.fleet-popup-eyebrow{font-size:8px;color:#778293;font-weight:800;letter-spacing:.12em}.fleet-map-popup strong{font-size:19px;color:#25334a}.fleet-popup-state{font-size:12px;color:var(--marker-color);font-weight:700}.fleet-map-popup small{font-size:10px;color:#778293}.fleet-map-footer{padding:15px 20px;font-size:10px;background:var(--fleet-paper)}.fleet-map-footer i{width:7px;height:7px}.fleet-map-panel.is-expanded{position:fixed;inset:20px;z-index:1100;display:flex;flex-direction:column;box-shadow:0 0 0 100vmax #18233499}.fleet-map-panel.is-expanded .fleet-map-area{flex:1;min-height:0}.fleet-map-panel.is-expanded #sv-map{height:100%}
@media(max-width:600px){.fleet-map-heading{padding:13px 12px;gap:6px}.fleet-map-heading strong{font-size:12px}.fleet-map-emblem{display:none}.fleet-map-heading button{padding:7px;font-size:10px}.fleet-map-eyebrow{font-size:7px}.fleet-map-panel.is-expanded{inset:8px}.fleet-map-compass{right:12px;top:12px}.fleet-map-footer{padding:12px}.fleet-map-marker{filter:drop-shadow(0 2px 3px #24344720)}}
[data-theme="dark"] #sv-map .leaflet-tile-pane{filter:saturate(.5) brightness(.72)}

#sv-map-3d{height:610px;width:100%;position:relative;z-index:1;background:#e3edf3}#sv-map[hidden],#sv-map-3d[hidden],.fleet-3d-hint[hidden],.fleet-map-compass[hidden]{display:none!important}.fleet-map-panel.is-expanded #sv-map-3d{height:100%}.fleet-3d-marker{padding:0;border:0;background:transparent;width:120px;height:72px;cursor:pointer}.fleet-3d-marker:focus-visible{outline:3px solid #8c71ef;border-radius:14px}.fleet-3d-hint{position:absolute;left:14px;bottom:32px;z-index:4;max-width:calc(100% - 80px);padding:9px 12px;border-radius:10px;background:#ffffffed;color:#465575;box-shadow:0 3px 15px #26344b18;font-size:10px;pointer-events:none}#sv-mode-3d[aria-pressed="true"]{background:#6550d5;color:white}#sv-mode-3d[aria-pressed="true"] iconify-icon{color:white}.fleet-map-heading{flex-wrap:wrap}#sv-map-3d .maplibregl-ctrl-group{border-radius:12px;overflow:hidden}#sv-map-3d .maplibregl-popup-content{border-radius:14px;padding:18px}.fleet-3d-marker .fleet-marker-pin{transform:none}
@media(max-width:900px){#sv-map-3d{height:400px}}@media(max-width:600px){#sv-map-3d{height:330px}.fleet-map-heading>div{flex-basis:100%}.fleet-3d-hint{font-size:9px}}

/* ===== Suivi et contrôle de conduite — version sobre (v753) ================================
   Mêmes règles d'interface que le reste de l'application (CLAUDE.md) : titre d'application, bouton
   principal à l'encre, indicateurs neutres, plus de violet ni de cartes pastel. Sur la carte, la
   couleur garde un sens : vert = roule, gris foncé = à l'arrêt, gris clair = signal ancien,
   rouge = hors ligne (couleurs des repères dans js/pages/suivi-vehicules.js). */
.fleet-module{max-width:1360px}
.fleet-heading{align-items:flex-end;margin-bottom:20px}
.fleet-heading h1{font-size:26px;line-height:1.2;letter-spacing:-.6px;font-weight:700;margin:0 0 4px}
.fleet-heading h1 span,:root:not([data-theme="light"]) .fleet-heading h1 span{color:inherit}
.fleet-heading p{font-size:13.5px}
.fleet-primary,.fleet-control .btn-primary{background:var(--text-primary);border-color:var(--text-primary);color:var(--bg-secondary);box-shadow:none;border-radius:10px;font-size:13px;font-weight:600;min-height:38px}
.fleet-primary:hover{background:var(--text-primary);opacity:.86}
.fleet-control-emblem{display:none}
.fleet-tabs a.is-active,:root:not([data-theme="light"]) .fleet-tabs a.is-active{color:var(--text-primary);border-bottom-color:#F5512E}
.fleet-module :is(button,a,input,summary):focus-visible,.fleet-map-heading button:focus-visible,.fleet-3d-marker:focus-visible{outline:2px solid var(--text-primary);outline-offset:2px}
.fleet-stats{gap:1px;background:var(--border-color);border:1px solid var(--border-color);border-radius:14px;overflow:hidden}
.fleet-stat,.fleet-stat:is(.coral,.mint,.blue,.amber),:root:not([data-theme="light"]) .fleet-stat:is(.coral,.mint,.blue,.amber){background:var(--bg-secondary);border:0;border-radius:0;color:var(--text-primary);box-shadow:none}
.fleet-stat > small iconify-icon{color:var(--text-muted)}
#sv-alerte{color:var(--text-secondary);background:var(--bg-secondary);border:1px solid var(--border-color);box-shadow:inset 3px 0 0 #E8930C;border-radius:12px}
.fleet-sidebar-heading h2 span{background:var(--bg-tertiary);color:var(--text-secondary)}
.fleet-search:focus-within{border-color:var(--text-muted)}
.fleet-filters button.is-active,:root:not([data-theme="light"]) .fleet-filters button.is-active,.fleet-control .cc-tab.active,:root:not([data-theme="light"]) .fleet-control .cc-tab.active{background:var(--text-primary);color:var(--bg-secondary);border-color:var(--text-primary)}
.fleet-vehicle:hover{border-color:var(--text-muted)}
.fleet-vehicle.is-selected{border-color:var(--text-primary);box-shadow:none}
.fleet-locate-icon,.fleet-map-heading button iconify-icon,.fleet-map-compass iconify-icon,.fleet-empty > iconify-icon{color:var(--text-secondary)}
.fleet-last-seen.is-old{color:var(--text-muted)}
.fleet-charge-warning{color:#C8382A}
.fleet-vehicle-actions button:hover{border-color:var(--text-muted);color:var(--text-primary)}
.fleet-vehicle-actions button:last-child,:root:not([data-theme="light"]) .fleet-vehicle-actions button:last-child{background:var(--bg-secondary);color:var(--text-primary);border-color:var(--border-color)}
.fleet-map-dot{background:#0E8A5F;box-shadow:0 0 0 4px rgba(14,138,95,.12)}
.fleet-map-status button{color:var(--text-primary)}
.fleet-map-footer .moving{background:#0E8A5F} .fleet-map-footer .stopped{background:#4B4F54} .fleet-map-footer .offline{background:#A9AEB2}
.fleet-empty button{background:var(--bg-tertiary);color:var(--text-primary)}
.fleet-map-panel{border-radius:16px;box-shadow:none;border-color:var(--border-color)}
.fleet-map-emblem{background:var(--bg-tertiary);color:var(--text-secondary)}
.fleet-map-heading button:hover{background:var(--bg-tertiary);transform:none}
#sv-mode-3d[aria-pressed="true"]{background:var(--text-primary);color:var(--bg-secondary)}
.fleet-control .cc-kpi:nth-child(n){background:var(--bg-secondary);border-color:var(--border-color)}


/* ===== Chauffeurs qui partagent leur position par téléphone (02/10/2026) =====
   Source distincte des boîtiers GPS. Une position récente n'est ni un gain ni une perte
   (règle des couleurs) : elle reste à l'encre ; une position ancienne passe en gris. */
.fleet-drivers { background:var(--fleet-paper);border:1px solid var(--fleet-line);border-radius:14px;padding:4px 16px;margin:0 0 16px; }
.fleet-drivers > summary { display:flex;align-items:center;gap:9px;cursor:pointer;list-style:none;padding:13px 0;font-size:13px;font-weight:700;color:var(--fleet-ink); }
.fleet-drivers > summary::-webkit-details-marker { display:none; }
.fleet-drivers > summary b { margin-left:auto;font-size:12px;font-weight:800;color:var(--fleet-muted); }
.fleet-drivers-dot { width:9px;height:9px;border-radius:50%;background:var(--fleet-ink); }
.fleet-drivers-note { font-size:10px;color:var(--fleet-muted);line-height:1.6;margin:0 0 12px; }
.fleet-drivers-list { display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;padding-bottom:14px; }
.fleet-driver { border:1px solid var(--fleet-line);border-radius:11px;background:var(--fleet-wash); }
.fleet-driver-go { display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;padding:11px 13px;text-align:left;color:var(--fleet-ink);cursor:pointer;font-family:inherit; }
.fleet-driver-go:hover { background:var(--fleet-line); }
.fleet-driver-pip { width:9px;height:9px;border-radius:50%;background:var(--fleet-ink);flex-shrink:0; }
.fleet-driver.is-old .fleet-driver-pip { background:var(--fleet-muted); }
.fleet-driver-text { flex:1;min-width:0; }
.fleet-driver-text strong { display:block;font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.fleet-driver-text small { display:block;font-size:10px;color:var(--fleet-muted);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.fleet-driver.is-old .fleet-driver-text strong { color:var(--fleet-muted); }
.fleet-driver-go iconify-icon { font-size:18px;color:var(--fleet-muted);flex-shrink:0; }
/* Repère sur la carte */
.fleet-driver-marker { position:relative;display:flex;align-items:center;flex-direction:column;width:110px;height:58px;filter:drop-shadow(0 4px 7px #24344728); }
/* Encre FIXE (pas var(--fleet-ink)) : les tuiles de la carte restent claires dans les deux thèmes
   (seul un filtre de luminosité les assombrit), donc un fond clair en sombre rendrait le repère invisible. */
.fleet-driver-pin { display:grid;place-items:center;width:38px;height:38px;background:#263642;border:3px solid #fff;border-radius:50%;color:#fff;box-shadow:0 0 0 1px #253b5110; }
.fleet-driver-pin iconify-icon { font-size:19px; }
.fleet-driver-marker.is-old .fleet-driver-pin { background:#8a97a6; }
.fleet-driver-label { display:inline-block;margin-top:5px;max-width:110px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:4px 9px;border-radius:9px;background:#fff;color:#29384b;font-family:inherit;font-size:10px;font-weight:800;border:1px solid #dce3eb; }
.fleet-driver-marker.is-old .fleet-driver-label { color:#8a97a6; }
/* Chauffeur en course : position relevée par Yango (10/10/2026) */
.fleet-driver-marker.is-course .fleet-driver-pin { background:#2C7BEA; }
.fleet-driver-state { color:var(--fleet-ink)!important; }
