*{box-sizing:border-box}body{margin:0;background:#f4f7fb;color:#172033;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.topbar{background:#12233f;color:#fff;padding:14px 22px;display:flex;justify-content:space-between;gap:15px;align-items:center;position:sticky;top:0;z-index:20}.topbar a{color:#fff}.container{max-width:1250px;margin:0 auto;padding:24px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}.card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:20px;box-shadow:0 5px 20px rgba(15,23,42,.05);margin-bottom:18px}.card h1,.card h2,.card h3{margin-top:0}label{display:block;font-weight:650;margin:12px 0}input,select{width:100%;padding:11px 12px;border:1px solid #cbd5e1;border-radius:9px;margin-top:6px;font:inherit;background:#fff}.btn{display:inline-block;border:0;border-radius:9px;padding:10px 14px;background:#1769e0;color:#fff;text-decoration:none;cursor:pointer;font-weight:700;margin:4px 3px 4px 0}.btn.secondary{background:#64748b}.btn.success{background:#16804a}.btn.warning{background:#b86b00}.btn.danger{background:#c62828}.btn:disabled{opacity:.5;cursor:not-allowed}.actions{display:flex;flex-wrap:wrap;gap:6px}.notice{padding:12px 14px;border-radius:10px;background:#eef5ff;margin:10px 0}.notice.error{background:#fff0f0;color:#a51d1d}.notice.success{background:#edfff4;color:#146c3b}.muted,.small{color:#64748b;font-size:.92rem}.map{height:430px;border-radius:12px;overflow:hidden;background:#e2e8f0}.map.large{height:540px}.badge{display:inline-block;padding:5px 9px;border-radius:999px;font-size:.8rem;font-weight:800}.status-waiting{background:#e2e8f0;color:#334155}.status-moving{background:#dbeafe;color:#1d4ed8}.status-returning{background:#fef3c7;color:#92400e}.status-completed{background:#dcfce7;color:#166534}.progress{height:12px;background:#e5e7eb;border-radius:999px;overflow:hidden}.progress>div{height:100%;width:0;background:#1769e0;transition:width .4s}.login{max-width:440px;margin:8vh auto}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid #e2e8f0;vertical-align:top}.metric{font-size:2rem;font-weight:800}.bus-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.bus-card{border:1px solid #e2e8f0;border-radius:12px;padding:14px}.linkbox{background:#f8fafc;padding:10px;border-radius:8px;word-break:break-all}.pill{display:inline-block;padding:4px 8px;border-radius:999px;background:#eef2ff;margin:2px;font-size:.82rem}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media(max-width:760px){.container{padding:14px}.topbar{padding:12px 14px}.topbar span{font-size:.85rem}.two-col{grid-template-columns:1fr}.map.large{height:400px}.map{height:360px}.btn{width:100%;text-align:center}.actions .btn{flex:1 1 100%}}

.eta-box{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}.eta-box>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:13px}.eta-box strong{display:block;font-size:1.15rem;margin-top:5px}.alert-near{background:#fff7d6;color:#805500}.alert-very-near{background:#e9fff0;color:#116332}@media(max-width:600px){.eta-box{grid-template-columns:1fr 1fr}.eta-box strong{font-size:1rem}}

/* Carte chauffeur autonome : aucune bibliothèque externe requise. */
.simple-map{position:relative;overflow:hidden;background:#dbe4ea;touch-action:manipulation}.map-tiles{position:absolute;inset:0;overflow:hidden;background:#dbe4ea}.map-tiles img{position:absolute;width:256px;height:256px;max-width:none}.map-markers{position:absolute;inset:0;overflow:hidden;pointer-events:none}.map-marker{position:absolute;transform:translate(-50%,-100%);font-size:28px;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.35));pointer-events:auto;z-index:5}.stop-marker{font-size:24px}.bus-marker{font-size:32px;z-index:10}.map-controls{position:absolute;right:10px;top:10px;z-index:20;display:flex;flex-direction:column;gap:5px}.map-controls button{width:38px;height:38px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;font-size:24px;line-height:1;box-shadow:0 2px 8px rgba(0,0,0,.18);cursor:pointer}.map-controls button:active{transform:scale(.96)}
