*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;font-family:-apple-system,'Inter','Segoe UI',sans-serif}
:root{
  --panel:#fff;
  --border:rgba(0,0,0,.08);
  --border2:rgba(0,0,0,.13);
  --text:#16162a;
  --muted:#64748b;
  --hint:#9ca3af;
  --accent:#4f46e5;
  --rail:46px;
  --top:52px;
  --r:10px;
  --sh:var(--shadow,0 4px 24px rgba(0,0,0,.1));
}
/* ── ANIMATIONS ─────────────────────────── */
@keyframes blink{0%,100%{opacity:1}50%{opacity:.2}}
@keyframes pulse{0%{transform:scale(1);opacity:.7}70%{transform:scale(1.8);opacity:0}100%{transform:scale(1.8);opacity:0}}
@keyframes slideL{from{opacity:0;transform:translateX(-12px)}to{opacity:1;transform:translateX(0)}}
@keyframes slideR{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:translateX(0)}}
@keyframes slideU{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes countUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes shimmer{0%{background-position:-200px 0}100%{background-position:200px 0}}
@keyframes popIn{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}

/* ── MAP ────────────────────────────────── */
#map{position:absolute;inset:0;z-index:1}

/* ── TOPBAR ─────────────────────────────── */
#topbar{
  position:absolute;top:0;left:0;right:0;
  height:var(--top);
  background:rgba(255,255,255,.97);
  backdrop-filter:blur(14px);
  display:flex;align-items:center;
  padding:0 10px;gap:8px;z-index:600;
}
#topbar::after{
  content:'';position:absolute;bottom:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,#b71c1c 0%,#1565c0 22%,#0277bd 44%,#e65100 66%,#2e7d32 78%,#6d28d9 100%);
  opacity:.6;
}
.logo{display:flex;align-items:center;gap:7px;padding-right:10px;border-right:1px solid var(--border);flex-shrink:0}
.logo-mark{width:28px;height:28px;background:linear-gradient(135deg,#4f46e5,#0891b2);border-radius:7px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700;letter-spacing:-.02em}
.logo-name{font-size:12px;font-weight:700;color:var(--text)}
.logo-sub{font-size:9px;color:var(--hint);display:block}
.tb-search{position:relative;flex:0 0 230px}
.tb-search input{width:100%;height:32px;background:#f4f5f7;border:1px solid var(--border);border-radius:8px;padding:0 10px 0 28px;font-size:12px;color:var(--text);outline:none;font-family:inherit;transition:border .15s,box-shadow .15s,background .15s}
.tb-search input::placeholder{color:var(--hint)}
.tb-search input:focus{background:#fff;border-color:rgba(79,70,229,.4);box-shadow:0 0 0 3px rgba(79,70,229,.1)}
.tb-si{position:absolute;left:9px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--hint)}
.tb-cal{display:flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid var(--border);background:#fff;border-radius:8px;font-size:11.5px;color:var(--muted);cursor:pointer;transition:all .15s;flex-shrink:0}
.tb-cal:hover,.tb-cal.active{border-color:rgba(79,70,229,.4);background:#f5f3ff;color:#4f46e5}
.tb-fill{flex:1}
.live-badge{display:flex;align-items:center;gap:5px;padding:3px 9px;background:#f0fdf4;border:1px solid rgba(22,163,74,.2);border-radius:8px;font-size:10px;color:#16a34a;flex-shrink:0;font-weight:500}
.live-dot{width:5px;height:5px;border-radius:50%;background:#22c55e;position:relative}
.live-dot::after{content:'';position:absolute;inset:-3px;border-radius:50%;background:#22c55e;animation:pulse 2s ease infinite}
.tb-sep{width:1px;height:24px;background:var(--border)}
.tb-btn{width:32px;height:32px;border-radius:8px;border:1px solid var(--border);background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--muted);transition:all .15s;flex-shrink:0}
.tb-btn:hover{background:#f4f5f7;color:var(--text)}

/* ── RAIL ───────────────────────────────── */
#rail{
  position:absolute;left:0;top:var(--top);bottom:50px;
  width:var(--rail);
  background:rgba(255,255,255,.97);backdrop-filter:blur(14px);
  border-right:1px solid var(--border);
  display:flex;flex-direction:column;align-items:center;padding:8px 0;gap:2px;z-index:500;
}
.rb{
  position:relative;width:34px;height:34px;border-radius:9px;border:none;background:transparent;
  color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;
  font-size:16px;transition:all .18s;flex-shrink:0;
}
.rb:hover{background:rgba(0,0,0,.06);color:var(--text)}
.rb.active{background:var(--text);color:#fff;box-shadow:0 2px 8px rgba(22,22,42,.25)}
.rb[data-color]:hover,.rb[data-color].active{background:attr(data-color);color:#fff}
/* color per feature */
#rb-layers.active{background:#0f766e}
#rb-pos.active{background:#7c3aed}
#rb-agg.active{background:#0284c7}
#rb-gen.active{background:#0f766e}
#rb-plan.active{background:#4f46e5}
#rb-mucar.active{background:#6d28d9}
#rb-src.active{background:#374151}
#rb-tools.active{background:#374151}

/* Progressive tooltip */
.rb-tip{
  position:absolute;left:calc(var(--rail) + 2px);top:50%;transform:translateY(-50%);
  z-index:700;pointer-events:none;opacity:0;transition:opacity .15s;min-width:160px;
}
.rb-tip.show{opacity:1}
.rb-tt{background:var(--text);color:#fff;border-radius:7px;padding:5px 10px;font-size:11.5px;font-weight:500;white-space:nowrap}
.rb-desc{
  background:#fff;color:var(--text);border:1px solid var(--border);border-radius:7px;padding:7px 10px;
  font-size:11px;line-height:1.5;margin-top:4px;box-shadow:0 4px 16px rgba(0,0,0,.1);max-width:220px;
  white-space:normal;opacity:0;transform:translateY(-4px);transition:opacity .2s,transform .2s;
}
.rb-desc.show{opacity:1;transform:translateY(0)}
.rsep{width:24px;height:1px;background:var(--border);margin:3px 0}

/* ── GENERIC SIDE PANEL ─────────────────── */
.spanel{
  position:absolute;top:var(--top);bottom:50px;left:var(--rail);width:0;
  background:var(--panel);border-right:1px solid var(--border);
  overflow:hidden;z-index:400;transition:width .32s cubic-bezier(0.32,0.72,0,1);
  box-shadow:4px 0 20px rgba(0,0,0,.06);
}
.spanel.open{width:284px}
.spanel-inner{width:284px;height:100%;display:flex;flex-direction:column;overflow:hidden}
.sp-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 14px 10px;border-bottom:1px solid var(--border);flex-shrink:0;
}
.sp-head-title{font-size:12.5px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px}
.sp-close{width:24px;height:24px;border-radius:6px;border:1px solid var(--border);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted);transition:all .15s}
.sp-close:hover{background:#fef2f2;border-color:rgba(239,68,68,.3);color:#ef4444}
.sp-body{flex:1;overflow-y:auto;padding:6px 0}
.sp-body::-webkit-scrollbar{width:4px}
.sp-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:2px}

/* ── LAYERS PANEL CONTENT ────────────────── */
.region{border-bottom:1px solid var(--border)}
.rhead{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;cursor:pointer;transition:background .12s;user-select:none}
.rhead:hover{background:rgba(0,0,0,.025)}
.rhead-l{display:flex;align-items:center;gap:7px}
.rhead-ico{font-size:13px}
.rhead-name{font-size:12px;font-weight:600;color:var(--text)}
.rcount{font-size:9.5px;color:var(--hint);background:rgba(0,0,0,.05);border-radius:5px;padding:1px 6px;margin-left:3px}
.rarrow{font-size:10px;color:var(--hint);transition:transform .2s}
.rarrow.open{transform:rotate(180deg)}
.ritems{max-height:0;overflow:hidden;transition:max-height .25s ease}
.ritems.open{max-height:400px}
.litem{display:flex;align-items:center;gap:7px;padding:6px 14px 6px 26px;cursor:pointer;font-size:11.5px;color:var(--muted);transition:background .12s}
.litem:hover{background:rgba(0,0,0,.025);color:var(--text)}
.litem input[type=checkbox],.litem input[type=radio]{accent-color:var(--accent);width:14px;height:14px;cursor:pointer;flex-shrink:0}
.litem.is-loading{color:#2563eb;background:#eff6ff;cursor:progress}
.litem.is-loading::after{content:'';width:11px;height:11px;margin-left:auto;border:2px solid #bfdbfe;border-top-color:#2563eb;border-radius:50%;animation:showroomDepartureSpin .7s linear infinite}
.ldot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.lline{width:14px;height:3px;border-radius:2px;flex-shrink:0}
.lwarn{margin-left:auto;font-size:9px;background:#fef3c7;color:#92400e;border-radius:4px;padding:1px 5px}
.bm-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:8px 14px 12px}
.bm-opt{border:1.5px solid var(--border);border-radius:8px;padding:8px;cursor:pointer;text-align:center;transition:all .15s;font-size:10.5px;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:4px}
.bm-opt:hover{border-color:var(--border2);color:var(--text)}
.bm-opt.on{border-color:var(--accent);background:#eff0fe;color:var(--accent)}
.bm-opt input{display:none}
.bm-ico{font-size:16px}

/* ── MODAL OVERLAY ───────────────────────── */
.modal-overlay{
  position:absolute;inset:0;background:rgba(0,0,0,.35);backdrop-filter:blur(3px);
  z-index:800;display:none;align-items:center;justify-content:center;
}
.modal-overlay.open{display:flex;animation:fadeIn .2s ease}
.modal-box{
  background:#fff;border-radius:14px;width:min(720px,92vw);max-height:80vh;
  overflow:hidden;display:flex;flex-direction:column;
  box-shadow:0 20px 60px rgba(0,0,0,.2);animation:popIn .25s cubic-bezier(0.34,1.3,0.64,1) both;
}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px 12px;border-bottom:1px solid var(--border);flex-shrink:0}
.modal-title{font-size:14px;font-weight:700;color:var(--text)}
.modal-close{width:28px;height:28px;border-radius:8px;border:1px solid var(--border);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--muted);transition:all .15s}
.modal-close:hover{background:#fef2f2;border-color:rgba(239,68,68,.3);color:#ef4444}
.modal-body{flex:1;overflow-y:auto;padding:16px 18px}

/* Sources modal chips */
.chip-strip{display:flex;gap:5px;margin-bottom:12px;flex-wrap:wrap}
.chip{padding:4px 10px;border-radius:20px;font-size:11px;font-weight:600;cursor:default}
.chip-gtfs{background:#dbeafe;color:#1e40af}
.chip-api{background:#dcfce7;color:#166534}
.chip-json{background:#fef9c3;color:#713f12}
.chip-osm{background:#f3e8ff;color:#6b21a8}
.src-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:4px}
.src-card{border:1px solid var(--border);border-radius:10px;padding:11px;transition:border-color .15s}
.src-card:hover{border-color:var(--border2)}
.sc-head{display:flex;align-items:center;gap:6px;margin-bottom:5px}
.sc-ico{font-size:14px}
.sc-name{font-size:12px;font-weight:600;color:var(--text)}
.sc-badges{display:flex;gap:3px;margin-top:2px}
.sc-badge{padding:1px 5px;border-radius:4px;font-size:9px;font-weight:700}
.sc-gtfs{background:#dbeafe;color:#1e40af}
.sc-api{background:#dcfce7;color:#166534}
.sc-siri{background:#fff7ed;color:#c2410c}
.sc-gbfs{background:#fef9c3;color:#713f12}
.sc-osm{background:#f3e8ff;color:#6b21a8}
.sc-desc{font-size:10.5px;color:var(--muted);line-height:1.45;margin-top:4px}

/* ── AGG EXPERIENCE ─────────────────────── */
.agg-box{
  position:absolute;inset:0;z-index:750;background:rgba(22,22,42,.5);
  backdrop-filter:blur(4px);display:none;
}
.agg-box.open{display:block;animation:fadeIn .25s}
.agg-panel{
  position:absolute;left:var(--rail);top:var(--top);bottom:50px;
  width:340px;background:#fff;overflow-y:auto;
  box-shadow:4px 0 30px rgba(0,0,0,.15);
  animation:slideL .3s cubic-bezier(0.32,0.72,0,1) both;
}
.agg-header{
  padding:14px 16px 12px;
  border-bottom:1px solid var(--border);
  background:linear-gradient(135deg,#0f172a,#1e3a5f);
  color:#fff;
}
.agg-title{font-size:14px;font-weight:700;margin-bottom:2px}
.agg-sub{font-size:11px;opacity:.7}
.agg-body{padding:14px 16px}
.agg-section{margin-bottom:14px}
.agg-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}
.agg-select{width:100%;height:34px;border:1px solid var(--border);border-radius:8px;padding:0 10px;font-size:12px;font-family:inherit;background:#fff;outline:none;cursor:pointer;color:var(--text);transition:border .15s}
.agg-select:focus{border-color:rgba(2,132,199,.5);box-shadow:0 0 0 3px rgba(2,132,199,.1)}
.agg-search{width:100%;height:34px;border:1px solid var(--border);border-radius:8px;padding:0 10px;font-size:12px;font-family:inherit;outline:none;color:var(--text);transition:border .15s}
.agg-search:focus{border-color:rgba(2,132,199,.5);box-shadow:0 0 0 3px rgba(2,132,199,.1)}
.agg-types{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.agg-type{padding:8px;border:1.5px solid var(--border);border-radius:8px;font-size:11px;text-align:center;cursor:pointer;transition:all .15s;color:var(--muted)}
.agg-type:hover{border-color:var(--border2);color:var(--text)}
.agg-type.on{border-color:#0284c7;background:#eff8ff;color:#0284c7;font-weight:500}
.agg-btn{width:100%;padding:9px;border-radius:9px;border:none;background:#0f172a;color:#fff;font-size:12.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s;display:flex;align-items:center;justify-content:center;gap:6px}
.agg-btn:hover{background:#1e293b}
.agg-result{margin-top:14px;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.agg-result-head{background:#f8fafc;padding:9px 12px;font-size:11px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--border)}
.agg-stat-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0}
.agg-stat{padding:10px 12px;text-align:center;border-right:1px solid var(--border)}
.agg-stat:last-child{border-right:none}
.agg-stat-v{font-size:18px;font-weight:700;color:var(--text);animation:countUp .5s ease both}
.agg-stat-l{font-size:9.5px;color:var(--muted);margin-top:1px}

/* ── GEN EXPERIENCE ─────────────────────── */
.gen-box{
  position:absolute;inset:0;z-index:750;background:rgba(0,0,0,.4);
  backdrop-filter:blur(4px);display:none;
}
.gen-box.open{display:block;animation:fadeIn .2s}
.gen-panel{
  position:absolute;left:var(--rail);top:var(--top);bottom:50px;
  width:360px;background:#fff;overflow-y:auto;
  box-shadow:4px 0 30px rgba(0,0,0,.15);
  animation:slideL .3s cubic-bezier(0.32,0.72,0,1) both;
}
.gen-header{
  padding:14px 16px 12px;
  background:linear-gradient(135deg,#064e3b,#065f46);
  color:#fff;border-bottom:1px solid rgba(255,255,255,.1);
}
.gen-title{font-size:14px;font-weight:700;display:flex;align-items:center;gap:7px}
.gen-sub{font-size:11px;opacity:.7;margin-top:2px}
.gen-body{padding:14px 16px}
.gen-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}
.gen-input{width:100%;height:34px;border:1px solid var(--border);border-radius:8px;padding:0 10px;font-size:12px;font-family:inherit;outline:none;color:var(--text);transition:border .15s;margin-bottom:10px}
.gen-input:focus{border-color:rgba(6,95,70,.5);box-shadow:0 0 0 3px rgba(6,95,70,.1)}
.gen-types{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:12px}
.gen-type{padding:7px 8px;border:1.5px solid var(--border);border-radius:8px;font-size:11px;text-align:center;cursor:pointer;transition:all .15s;color:var(--muted);display:flex;align-items:center;justify-content:center;gap:5px}
.gen-type:hover{border-color:var(--border2);color:var(--text)}
.gen-type.on{border-color:#0f766e;background:#ecfdf5;color:#0f766e;font-weight:500}
.gen-btn{width:100%;padding:9px;border-radius:9px;border:none;background:#065f46;color:#fff;font-size:12.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s;display:flex;align-items:center;justify-content:center;gap:6px}
.gen-btn:hover{background:#047857}
.gen-log{margin-top:10px;background:#f0fdf4;border:1px solid rgba(22,163,74,.15);border-radius:8px;padding:10px;font-size:11px;color:#166534;font-family:monospace;line-height:1.6;max-height:140px;overflow-y:auto}

/* ── MUCAR SIDE PANEL ───────────────────── */
.mucar-panel{position:absolute;right:-310px;top:var(--top);bottom:50px;width:300px;background:#fff;border-left:1px solid var(--border);box-shadow:-4px 0 20px rgba(0,0,0,.07);z-index:400;transition:right .32s cubic-bezier(0.32,0.72,0,1);overflow-y:auto}
.mucar-panel.open{right:0}
.mucar-head{padding:12px 14px 10px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#1e1b4b,#312e81);color:#fff}
.mh-title{font-size:13px;font-weight:700;display:flex;align-items:center;gap:6px}
.mucar-body{padding:0}
.mucar-display-mode{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:9px 10px 4px;padding:3px;background:#f1f5f9;border-radius:9px}
.mucar-display-mode button{border:0;background:transparent;color:#64748b;border-radius:7px;padding:6px 5px;font-size:9px;font-weight:700;cursor:pointer;line-height:1.2}
.mucar-display-mode button.is-active{background:#fff;color:#6d28d9;box-shadow:0 1px 4px rgba(15,23,42,.14)}
.mucar-display-hint{margin:0 12px 7px;color:#64748b;font-size:9px;line-height:1.35}
.dash-stats{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:10px 12px}
.dstat{background:#f8fafc;border:1px solid var(--border);border-radius:8px;padding:10px;animation:countUp .5s ease both}
.dstat-v{font-size:20px;font-weight:700;color:var(--text);line-height:1}
.dstat-l{font-size:9px;color:var(--muted);margin-top:2px;text-transform:uppercase;letter-spacing:.06em}
.dstat-v.g{color:#16a34a}.dstat-v.p{color:#6d28d9}.dstat-v.b{color:#0284c7}
.section-lbl{padding:4px 12px 6px;font-size:9.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;border-top:1px solid var(--border);margin-top:4px}
.trip-item{padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05);cursor:pointer;transition:background .12s}
.trip-item:hover{background:rgba(0,0,0,.02)}
.trip-item.is-sel{background:linear-gradient(90deg,rgba(225,29,72,.10),transparent);box-shadow:inset 3px 0 0 #e11d48}
#v3-mc-trips{max-height:42vh;overflow-y:auto}
.trip-item:last-child{border-bottom:none}
.trip-head{display:flex;align-items:center;gap:6px;margin-bottom:3px}
.trip-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.trip-route{font-size:11.5px;font-weight:500;color:var(--text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.trip-badge{font-size:9.5px;padding:1px 6px;border-radius:5px;font-weight:500;flex-shrink:0}
.tbg-on{background:#dcfce7;color:#16a34a}.tbg-off{background:#f1f5f9;color:#64748b}
.trip-meta{font-size:10px;color:var(--muted);padding-left:14px}
.co2-bar{padding:9px 12px 12px}
.co2-top{display:flex;justify-content:space-between;font-size:10px;margin-bottom:5px}
.co2-lbl{color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.co2-val{color:#16a34a;font-weight:700}
.co2-track{height:7px;background:#f1f5f9;border-radius:4px;overflow:hidden}
.co2-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,#4ade80,#16a34a);transition:width .8s ease}

/* ── TOP-RIGHT DASHBOARDS ───────────────── */
#dash-tr{
  position:absolute;top:calc(var(--top) + 10px);right:10px;
  display:flex;flex-direction:column;gap:6px;z-index:300;width:220px;
}
.dw-card{
  background:rgba(255,255,255,.95);border:1px solid var(--border);
  border-radius:10px;overflow:hidden;backdrop-filter:blur(10px);
  box-shadow:0 2px 12px rgba(0,0,0,.08);transition:box-shadow .15s;
  animation:slideR .4s ease both;
}
.dw-card:hover{box-shadow:0 4px 20px rgba(0,0,0,.12)}
.dw-head{display:flex;align-items:center;justify-content:space-between;padding:7px 10px 6px;border-bottom:1px solid var(--border);cursor:pointer}
.dw-title{font-size:10.5px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:5px;text-transform:uppercase;letter-spacing:.06em}
.dw-toggle{font-size:9px;color:var(--hint);transition:transform .2s}
.dw-toggle.open{transform:rotate(180deg)}
.dw-body{overflow:hidden;max-height:0;transition:max-height .25s ease}
.dw-body.open{max-height:300px}

/* Traffic widget */
.tr-ctrl{display:flex;gap:5px;padding:7px 10px 5px;align-items:center}
.tr-mode{display:flex;gap:3px}
.tr-btn{padding:3px 8px;border-radius:5px;border:1px solid var(--border);font-size:10px;background:#fff;color:var(--muted);cursor:pointer;font-family:inherit;transition:all .12s}
.tr-btn.on{background:var(--text);color:#fff;border-color:var(--text)}
.tr-hour{flex:1;height:26px;border:1px solid var(--border);border-radius:6px;padding:0 7px;font-size:11px;font-family:inherit;outline:none;color:var(--text);background:#fff}
.tr-refresh{padding:3px 7px;border-radius:5px;border:1px solid var(--border);font-size:10px;background:#fff;color:var(--muted);cursor:pointer;font-family:inherit;transition:all .12s}
.tr-refresh:hover{background:#f4f5f7}
.tr-content{padding:0 10px 8px;font-size:11px}
.tr-alert{display:flex;align-items:flex-start;gap:6px;padding:5px 0;border-bottom:1px solid rgba(0,0,0,.05)}
.tr-alert:last-child{border-bottom:none}
.tr-a-ico{font-size:12px;flex-shrink:0}
.tr-a-txt b{display:block;font-size:11px;color:var(--text);font-weight:600}
.tr-a-txt span{font-size:10px;color:var(--muted)}
.tr-a-badge{padding:1px 5px;border-radius:4px;font-size:9px;font-weight:700;margin-left:auto;flex-shrink:0;margin-top:1px}
.ab-warn{background:#fef3c7;color:#92400e}
.ab-ok{background:#dcfce7;color:#166534}

/* Carpool mini widget */
.cw-stat{display:flex;justify-content:space-around;padding:7px 10px 5px}
.cws{text-align:center}
.cws-v{font-size:16px;font-weight:700;color:var(--text);line-height:1}
.cws-l{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-top:1px}
.cws-v.p{color:#6d28d9}
.cw-trips{padding:0 10px 8px}
.cwt{display:flex;align-items:center;gap:6px;padding:4px 0;font-size:10.5px;border-bottom:1px solid rgba(0,0,0,.04)}
.cwt:last-child{border-bottom:none}
.cwt-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.cwt-route{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.cwt-pax{color:var(--muted);font-size:9.5px;flex-shrink:0}

/* ── CALENDAR DROPDOWN ──────────────────── */
#cal-drop{position:absolute;top:calc(var(--top)+6px);left:50%;transform:translateX(-50%);width:285px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.12);z-index:700;padding:14px;display:none}
#cal-drop.show{display:block;animation:slideU .2s ease}
.cal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.cal-m{font-size:12.5px;font-weight:700;color:var(--text)}
.cal-nav{background:transparent;border:1px solid var(--border);border-radius:6px;width:26px;height:26px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--muted);transition:all .12s}
.cal-nav:hover{background:#f4f5f7}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.cal-dow{text-align:center;font-size:9px;color:var(--hint);font-weight:700;padding:2px 0}
.cal-d{height:28px;border-radius:6px;border:none;background:transparent;font-size:11.5px;color:var(--text);cursor:pointer;transition:all .12s;width:100%}
.cal-d:hover{background:rgba(0,0,0,.06)}
.cal-d.today{background:var(--text);color:#fff}
.cal-d.other{color:var(--hint)}
.cal-time-row{display:flex;align-items:center;gap:8px;padding-top:10px;margin-top:6px;border-top:1px solid var(--border)}
.ctl{font-size:11.5px;color:var(--muted)}
.ct-input{flex:1;height:30px;border:1px solid var(--border);border-radius:7px;padding:0 8px;font-size:12px;font-family:inherit;outline:none;transition:border .15s}
.ct-input:focus{border-color:rgba(79,70,229,.4)}
.cal-presets{display:flex;gap:4px;margin-top:8px;flex-wrap:wrap}
.cp{padding:3px 9px;border:1px solid var(--border);border-radius:6px;font-size:10.5px;background:#fff;color:var(--muted);cursor:pointer;transition:all .12s}
.cp:hover{border-color:var(--border2);color:var(--text)}
.cal-acts{display:flex;gap:6px;margin-top:10px}
.ca{flex:1;padding:7px;border-radius:8px;border:1px solid var(--border);font-size:12px;font-family:inherit;cursor:pointer;transition:all .15s}
.ca.p{background:var(--text);color:#fff;border-color:var(--text)}
.ca.p:hover{background:#374151}
.ca:not(.p){background:transparent;color:var(--muted)}
.ca:not(.p):hover{background:#f4f5f7}

/* ── BOTTOM SHEET ───────────────────────── */
#sheet{
  position:absolute;left:var(--rail);right:0;bottom:0;
  background:#fff;border-top:1px solid var(--border);
  border-top-left-radius:13px;box-shadow:0 -4px 20px rgba(0,0,0,.07);
  z-index:400;transition:transform .35s cubic-bezier(0.32,0.72,0,1);
  transform:translateY(calc(100% - 50px));
}
#sheet.exp{transform:translateY(0)}
#sh-drag{padding:7px 0 0;cursor:pointer;display:flex;justify-content:center}
.drag-h{width:38px;height:4px;background:rgba(0,0,0,.11);border-radius:2px;transition:background .15s}
#sh-drag:hover .drag-h{background:rgba(0,0,0,.2)}
#sh-peek{display:flex;align-items:center;padding:3px 14px 10px;gap:10px;cursor:pointer}
.sh-clk{font-size:20px;font-weight:700;color:var(--text);letter-spacing:.02em;font-variant-numeric:tabular-nums;min-width:54px}
.sh-live{display:flex;align-items:center;gap:5px;background:#f0fdf4;border:1px solid rgba(22,163,74,.2);border-radius:8px;padding:3px 9px;font-size:11px;color:#16a34a;font-weight:500}
.sh-hint{margin-left:auto;font-size:11px;color:var(--hint);display:flex;align-items:center;gap:4px}
#sh-body{max-height:0;overflow:hidden;transition:max-height .32s ease}
#sh-body.show{max-height:250px}
.net-chips{display:flex;gap:4px;padding:0 14px 8px;overflow-x:auto;scrollbar-width:none;flex-wrap:wrap}
.nc{display:flex;align-items:center;gap:4px;padding:3px 9px;border-radius:8px;font-size:10.5px;font-weight:600;border:1.5px solid var(--nc,#374151);color:var(--nc,#374151);cursor:pointer;transition:all .15s;background:transparent}
.nc.on{background:color-mix(in srgb, var(--nc,#374151) 12%, white)}
.nc.off{opacity:.28}
.tl-wrap{padding:0 14px 8px}
.tl-labels{display:flex;justify-content:space-between;font-size:9.5px;color:var(--hint);margin-bottom:5px}
.tl-track{position:relative;height:6px;background:#f1f5f9;border-radius:3px;cursor:pointer}
.tl-fill{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:linear-gradient(90deg,#818cf8,#4f46e5);transition:width .1s}
.tl-thumb{position:absolute;right:-7px;top:-5px;width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid #4f46e5;box-shadow:0 1px 6px rgba(79,70,229,.35);transition:transform .1s}
.tl-track:active .tl-thumb{transform:scale(1.2)}
.ctrl-row{display:flex;align-items:center;gap:6px;padding:0 14px 12px}
.btn-play{display:flex;align-items:center;gap:5px;padding:7px 14px;border-radius:9px;border:none;background:#4f46e5;color:#fff;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s}
.btn-play:hover{background:#4338ca;transform:translateY(-1px)}
.btn-play.playing{background:#ef4444}
.btn-play.playing:hover{background:#dc2626}
.btn-jmp{padding:7px 10px;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:11.5px;font-family:inherit;cursor:pointer;transition:all .15s}
.btn-jmp:hover{background:#f8f9fa;color:var(--text)}
.btn-spd{margin-left:auto;padding:6px 10px;border-radius:8px;border:1px solid var(--border);background:#f8f9fa;font-size:12px;font-family:inherit;color:var(--muted);cursor:pointer;min-width:40px;text-align:center;transition:all .15s}
.btn-spd:hover{background:#f1f5f9;color:var(--text)}

/* ── TRAFFIC TOAST ──────────────────────── */
#traffic-toast{
  position:absolute;bottom:58px;left:calc(var(--rail) + 8px);right:8px;max-width:380px;
  background:#fff;border:1px solid rgba(234,179,8,.25);border-left:3px solid #eab308;
  border-radius:10px;padding:8px 12px;display:flex;align-items:center;gap:8px;
  box-shadow:0 4px 16px rgba(0,0,0,.1);font-size:11.5px;color:var(--text);z-index:350;
  animation:slideU .3s ease;
}
.tt-ico{font-size:14px;flex-shrink:0}
.tt-txt{flex:1}
.tt-txt b{display:block;font-size:12px;color:#92400e;font-weight:700}
.tt-x{background:transparent;border:none;cursor:pointer;font-size:11px;color:var(--hint);padding:0 2px}
.tt-x:hover{color:var(--text)}

/* ── ZOOM ───────────────────────────────── */
#zoom{position:absolute;right:12px;bottom:60px;display:flex;flex-direction:column;gap:2px;z-index:200}
.zb{width:32px;height:32px;background:rgba(255,255,255,.95);border:1px solid rgba(0,0,0,.1);border-radius:8px;font-size:16px;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 5px rgba(0,0,0,.08);transition:all .15s;backdrop-filter:blur(6px)}
.zb:hover{background:#fff;color:var(--text)}

/* Leaflet overrides */
.leaflet-control-zoom{display:none}
.leaflet-control-attribution{background:rgba(255,255,255,.85)!important;font-size:9px!important;border-radius:5px 0 0 0!important}
.stt{background:#16162a;color:#fff;border:none;font-size:11px;padding:4px 8px;border-radius:6px}
.leaflet-tooltip-top.stt::before{border-top-color:#16162a}

/* ══════════════════════════════════════════════════════════
   CORRECTIFS FOLIUM — à la suite du CSS de référence
   ══════════════════════════════════════════════════════════ */

/* ── 1. RESTAURER LES POPUPS LEAFLET ─────────────────────
   Le reset *{margin:0;padding:0} casse les popups Folium.
   Ces overrides les restaurent sans toucher au reste.       */
.leaflet-popup-content-wrapper { padding: 1px; border-radius: 12px; }
.leaflet-popup-content         { margin: 13px 19px !important; line-height: 1.4 !important; font-size: 12px !important; }
.leaflet-popup-content *       { margin: revert !important; padding: revert !important; box-sizing: content-box !important; }
.leaflet-popup-content h1,
.leaflet-popup-content h2,
.leaflet-popup-content h3,
.leaflet-popup-content h4      { margin: 0.3em 0 !important; }
.leaflet-popup-content p       { margin: 0.3em 0 !important; }
.leaflet-popup-content table   { border-collapse: collapse; }
.leaflet-popup-content td,
.leaflet-popup-content th      { padding: 3px 6px !important; }
.leaflet-popup-content ul,
.leaflet-popup-content ol      { padding-left: 1.5em !important; margin: 0.3em 0 !important; }
.leaflet-tooltip               { padding: 6px 10px !important; }

/* ── 2. CACHER LE LAYERCONTROL FOLIUM ─────────────────── */
.leaflet-control-layers { display:none !important; }

/* Cacher bouton calendrier original (topbar a le sien) */
#v3-cal-wrapper > button,
#v3-cal-wrapper button[onclick*="toggleCalendarPanel"] { display:none !important; }

/* ── 3. FIX position:absolute → position:fixed ───────────
   Le CSS de référence utilise position:absolute car le HTML
   standalone a un wrapper #app position:relative.
   Dans Folium, on a besoin de position:fixed pour tout.    */
#topbar       { position:fixed !important; }
#cal-drop     { position:fixed !important; }
#rail         { position:fixed !important; top:52px !important; bottom:50px !important; left:0 !important; }
.spanel       { position:fixed !important; left:46px !important; top:52px !important; bottom:50px !important; }
.agg-box      { position:fixed !important; inset:0 !important; }
.gen-box      { position:fixed !important; inset:0 !important; }
.modal-overlay{ position:fixed !important; inset:0 !important; }
/* MuCAR panel : côté GAUCHE (comme spanel) — plus de collision avec les dashboards droite */
.mucar-panel  {
  position:  fixed !important;
  left:     -310px !important; /* hors-écran gauche par défaut */
  right:     auto  !important;
  top:       52px  !important;
  bottom:    50px  !important;
  transition:left .32s cubic-bezier(0.32,0.72,0,1) !important;
}
.mucar-panel.open {
  left:  46px !important;  /* glisse depuis le rail, comme spanel */
  right: auto !important;
}
#dash-tr      { position:fixed !important; top:62px !important; right:10px !important; }
#traffic-toast{ position:fixed !important; bottom:58px !important; left:54px !important; }
#zoom         { position:fixed !important; right:12px !important; bottom:60px !important; }

/* ── 4. SIMULATION : centrée ~12 cm ─────────────────────── */
#sheet {
  position:fixed !important;
  left:  50%  !important;
  right: auto !important;
  width: 460px !important;
  transform: translateX(-50%) translateY(calc(100% - 50px)) !important;
  border-radius: 14px 14px 0 0 !important;
}
#sheet.exp { transform: translateX(-50%) translateY(0) !important; }

/* ── 5. VRAIS DASHBOARDS DROITE ──────────────────────────
   CSS !important > inline styles posés par les JS modules  */
.traffic-board-widget {
  position: fixed  !important;
  left:   auto     !important;
  right:  10px     !important;
  bottom: auto     !important;
  top:    62px     !important;
  width:  240px    !important;
  border-radius: 12px !important;
  z-index: 9000   !important;
  box-shadow: 0 3px 16px rgba(0,0,0,.1) !important;
}
/* MuCAR dashboard : +2 cm vs version précédente (197→273) */
#carpool-panel {
  position: fixed  !important;
  left:   auto     !important;
  right:  10px     !important;
  bottom: auto     !important;
  top:    273px    !important;
  width:  240px    !important;
  border-radius: 12px !important;
  z-index: 9000   !important;
  box-shadow: 0 3px 16px rgba(0,0,0,.1) !important;
}

/* ── 6. SEARCH : centré topbar ───────────────────────────── */
.global-search-shell {
  position: fixed !important;
  top:   10px !important;
  left:  50%  !important;
  transform: translateX(-50%) !important;
  right: auto !important;
  z-index: 9996 !important;
  width: 300px !important;
}
.tb-search-space { flex:0 0 12px; }
/* Le bouton calendrier doit rester à gauche (juste après le logo) et
   au-dessus de la barre de recherche centrée (z-index 9996) pour ne
   jamais être recouvert ni visuellement chevauché par elle. */
.tb-cal { position:relative; z-index:9997; }

/* ── 7. LÉGENDE ───────────────────────────────────────────── */
#v3-legend {
  position: fixed;
  bottom: 60px; right: 10px;
  background: rgba(255,255,255,.97);
  border: 1px solid rgba(0,0,0,.08);
  border-radius: 10px; padding: 8px 10px;
  z-index: 400; font-size: 11px;
  font-family: -apple-system,'Inter',sans-serif;
  min-width: 170px; backdrop-filter: blur(8px);
  box-shadow: 0 2px 12px rgba(0,0,0,.08);
}
.v3-leg-h {
  font-weight:700; font-size:10px; text-transform:uppercase;
  letter-spacing:.06em; color:var(--muted); margin-bottom:6px;
  border-bottom:1px solid rgba(0,0,0,.06); padding-bottom:4px;
}
.v3-leg-item { display:flex; align-items:center; gap:6px; padding:2px 0; color:var(--text); }

/* ── 8. BOUTON LIVE ───────────────────────────────────────── */
.btn-live {
  display:flex; align-items:center; gap:4px;
  padding:7px 10px; border-radius:9px;
  border:1px solid rgba(22,163,74,.3);
  background:rgba(22,163,74,.08); color:#16a34a;
  font-size:12px; font-weight:600; cursor:pointer;
  font-family:inherit; transition:all .15s; flex-shrink:0;
}
.btn-live:hover { background:rgba(22,163,74,.15); }
.btn-live.is-live {
  background:#16a34a; color:#fff; border-color:#16a34a;
  box-shadow:0 0 8px rgba(22,163,74,.4);
}

/* ── 8b. SÉLECTEUR DE MODE Replay/Live (remplace les 2 boutons
   indépendants ci-dessus côté UI — gardés en CSS pour compat) ── */
.mode-seg{display:flex;align-items:center;gap:2px;background:#eef0f3;border-radius:999px;padding:3px;flex-shrink:0}
.mode-btn{padding:6px 14px;border:none;border-radius:999px;background:transparent;color:#5b6470;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s;white-space:nowrap}
.mode-btn:hover{color:#1a1d23}
.mode-btn.active{background:#1a1d23;color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.18)}
.mode-btn.active:hover{background:#000}

/* ── 9. OUTILS ────────────────────────────────────────────── */
.v3-tool-section { margin-bottom:10px; }
.v3-tool-label {
  font-size:9.5px; font-weight:700; text-transform:uppercase;
  letter-spacing:.07em; color:var(--muted); margin-bottom:5px;
}
.v3-tool-btn {
  width:100%; margin-bottom:4px; padding:7px 10px;
  border:none; color:#fff; border-radius:7px; cursor:pointer;
  font-size:12px; font-family:inherit; text-align:left;
  transition:filter .15s,transform .1s;
}
.v3-tool-btn:hover { filter:brightness(1.1); transform:translateX(2px); }

/* ── POPUP LEAFLET : corrections spécifiques manquantes ─── */
/* th sans inline style → perdent leur padding avec le reset */
.leaflet-popup-content th {
  padding: 6px 8px !important;
  text-align: left !important;
  border-bottom: 2px solid #ddd !important;
  background: #f2f2f2 !important;
  font-weight: bold !important;
}
.leaflet-popup-content td {
  padding: 4px 8px !important;
  border-bottom: 1px solid #eee !important;
  vertical-align: top !important;
}
/* li dans le popup (liste d'arrêts) */
.leaflet-popup-content li {
  padding: 2px 0 !important;
  margin: 0 !important;
  line-height: 1.4 !important;
  list-style: disc !important;
  color: #374151 !important;
  font-size: 12px !important;
}
.leaflet-popup-content ul {
  padding-left: 16px !important;
  margin: 4px 0 !important;
}
/* h3/h4 dans popup */
.leaflet-popup-content h3 {
  margin: 0 0 4px 0 !important;
  font-size: 14px !important;
}
.leaflet-popup-content h4 {
  margin: 6px 0 3px 0 !important;
  font-size: 12px !important;
}
.leaflet-popup-content small {
  color: #6b7280 !important;
  font-size: 11px !important;
}
.leaflet-popup-content strong {
  font-weight: 600 !important;
}

/* ── Tableaux de départs chargés au clic sur un arrêt ───────────────
   Les !important sont intentionnels : ils neutralisent uniquement le reset
   global historique à l'intérieur des popups Leaflet. */
.leaflet-popup-content .showroom-stop-popup {
  --network-color:#b71c1c;
  min-width:280px !important;
  max-width:520px !important;
  margin:0 !important;
  padding:0 !important;
  box-sizing:border-box !important;
  font-family:Inter,Arial,sans-serif !important;
  color:#172033 !important;
}
.leaflet-popup-content .showroom-stop-popup__name {
  margin:0 !important;
  padding:0 0 5px !important;
  border-bottom:3px solid var(--network-color) !important;
  color:var(--network-color) !important;
  font-size:15px !important;
  line-height:1.2 !important;
  font-weight:900 !important;
  letter-spacing:.01em !important;
}
.leaflet-popup-content .showroom-stop-popup__city {
  margin:5px 0 8px !important;
  padding:0 !important;
  color:#64748b !important;
  font-size:10px !important;
  font-weight:600 !important;
}
.leaflet-popup-content .showroom-departure-board {
  margin:0 !important;
  padding:0 !important;
  box-sizing:border-box !important;
}
.leaflet-popup-content .showroom-departure-summary {
  margin:0 0 5px !important;
  padding:5px 7px !important;
  border-radius:7px !important;
  background:#f1f5f9 !important;
  color:#475569 !important;
  font-size:10px !important;
  box-sizing:border-box !important;
}
.leaflet-popup-content .showroom-departure-list {
  max-height:270px !important;
  margin:0 !important;
  padding:0 !important;
  overflow:auto !important;
  border:1px solid #e2e8f0 !important;
  border-radius:8px !important;
  background:#fff !important;
  box-sizing:border-box !important;
}
.leaflet-popup-content .showroom-departure-row {
  display:grid !important;
  grid-template-columns:minmax(38px,auto) minmax(125px,1fr) 48px !important;
  align-items:center !important;
  gap:7px !important;
  min-height:32px !important;
  margin:0 !important;
  padding:5px 7px !important;
  border-bottom:1px solid #edf1f5 !important;
  box-sizing:border-box !important;
}
.leaflet-popup-content .showroom-departure-row:last-child { border-bottom:0 !important; }
.leaflet-popup-content .showroom-departure-row:hover { background:#f8fafc !important; }
.leaflet-popup-content .showroom-departure-row--sncf {
  grid-template-columns:minmax(58px,auto) minmax(150px,1fr) auto 48px !important;
}
.leaflet-popup-content .showroom-line-badge {
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  min-width:30px !important;
  margin:0 !important;
  padding:3px 6px !important;
  border-radius:5px !important;
  background:var(--line-color,#64748b) !important;
  color:#fff !important;
  font-size:10px !important;
  line-height:1.15 !important;
  font-weight:900 !important;
  white-space:nowrap !important;
  box-sizing:border-box !important;
}
.leaflet-popup-content .showroom-departure-direction {
  display:block !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
  overflow:hidden !important;
  color:#172033 !important;
  font-size:10.5px !important;
  line-height:1.25 !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}
.leaflet-popup-content .showroom-departure-direction small {
  display:block !important;
  margin:1px 0 0 !important;
  padding:0 !important;
  color:#64748b !important;
  font-size:9px !important;
}
.leaflet-popup-content .showroom-departure-time {
  margin:0 !important;
  padding:0 !important;
  color:#0f172a !important;
  font-size:11px !important;
  font-weight:900 !important;
  text-align:right !important;
  white-space:nowrap !important;
}
.leaflet-popup-content .showroom-departure-status {
  margin:0 !important;
  padding:0 !important;
  color:#475569 !important;
  font-size:9px !important;
  white-space:nowrap !important;
}
.leaflet-popup-content .showroom-departure-loading,
.leaflet-popup-content .showroom-departure-empty,
.leaflet-popup-content .showroom-departure-error {
  display:flex !important;
  align-items:center !important;
  gap:7px !important;
  margin:0 !important;
  padding:10px !important;
  border-radius:8px !important;
  background:#f8fafc !important;
  color:#64748b !important;
  font-size:10.5px !important;
  box-sizing:border-box !important;
}
.leaflet-popup-content .showroom-departure-error { background:#fff1f2 !important; color:#b91c1c !important; }
.leaflet-popup-content .showroom-departure-loading span {
  width:12px !important;
  height:12px !important;
  margin:0 !important;
  padding:0 !important;
  border:2px solid #cbd5e1 !important;
  border-top-color:var(--network-color,#2563eb) !important;
  border-radius:50% !important;
  animation:showroomDepartureSpin .7s linear infinite !important;
  box-sizing:border-box !important;
}
.leaflet-popup-content .showroom-departure-retry {
  margin:0 !important;
  padding:7px 10px !important;
  border:0 !important;
  border-radius:7px !important;
  background:#334155 !important;
  color:#fff !important;
  font-size:10px !important;
  font-weight:800 !important;
  cursor:pointer !important;
}
.leaflet-popup-content .showroom-departure-pagination {
  display:grid !important;
  grid-template-columns:1fr auto 1fr !important;
  align-items:center !important;
  gap:8px !important;
  margin:7px 0 0 !important;
  padding:0 !important;
  box-sizing:border-box !important;
}
.leaflet-popup-content .showroom-departure-pagination button {
  min-height:29px !important;
  margin:0 !important;
  padding:5px 9px !important;
  border:1px solid #cbd5e1 !important;
  border-radius:7px !important;
  background:#fff !important;
  color:#1e293b !important;
  font:800 10px/1.1 Inter,Arial,sans-serif !important;
  cursor:pointer !important;
  box-shadow:0 1px 2px rgba(15,23,42,.05) !important;
}
.leaflet-popup-content .showroom-departure-pagination button:last-child { justify-self:stretch !important; }
.leaflet-popup-content .showroom-departure-pagination button:disabled {
  background:#f8fafc !important;
  color:#a8b2c1 !important;
  cursor:not-allowed !important;
  box-shadow:none !important;
}
.leaflet-popup-content .showroom-departure-pagination span {
  color:#64748b !important;
  font:700 9.5px/1 Inter,Arial,sans-serif !important;
  white-space:nowrap !important;
}
.leaflet-popup-content .showroom-status-delay { color:#b91c1c !important; }
.leaflet-popup-content .showroom-status-early { color:#047857 !important; }

/* Les réseaux régionaux historiques (Mobigo/FlixBus) fournissent encore un
   tableau Folium. Cette peau commune leur donne les mêmes colonnes, couleurs
   et contrôles de pagination que les popups chargées à la demande. */
.leaflet-popup-content table.schedule-table {
  width:100% !important;
  margin:0 !important;
  border-collapse:separate !important;
  border-spacing:0 !important;
  table-layout:fixed !important;
  color:#172033 !important;
  font:500 10.5px/1.25 Inter,Arial,sans-serif !important;
}
.leaflet-popup-content table.schedule-table thead th {
  position:sticky !important;
  top:0 !important;
  z-index:2 !important;
  padding:6px 7px !important;
  border:0 !important;
  border-bottom:1px solid #dbe3ec !important;
  background:#f1f5f9 !important;
  color:#475569 !important;
  font-size:9px !important;
  font-weight:900 !important;
  letter-spacing:.02em !important;
  text-align:left !important;
}
.leaflet-popup-content table.schedule-table tbody td {
  max-width:190px !important;
  margin:0 !important;
  padding:6px 7px !important;
  overflow:hidden !important;
  border:0 !important;
  border-bottom:1px solid #edf1f5 !important;
  background:#fff !important;
  color:#334155 !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}
.leaflet-popup-content table.schedule-table tbody tr:hover td { background:#f8fafc !important; }
.leaflet-popup-content table.schedule-table th:first-child,
.leaflet-popup-content table.schedule-table td:first-child { width:58px !important; color:#0f172a !important; font-weight:900 !important; }
.leaflet-popup-content table.schedule-table th:nth-child(2),
.leaflet-popup-content table.schedule-table td:nth-child(2) { width:72px !important; }
.leaflet-popup-content .showroom-inline-pagination { margin-top:7px !important; }
@keyframes showroomDepartureSpin { to { transform:rotate(360deg); } }

/* ── BANNIÈRE MODE SÉLECTION (annulation) ───────────── */
#v3-mode-banner {
  position: fixed;
  top: 60px; left: 50%;
  transform: translateX(-50%) translateY(-12px);
  display: flex; align-items: center; gap: 10px;
  background: #1f2937; color: #fff;
  padding: 8px 12px 8px 14px;
  border-radius: 10px;
  font-size: 12.5px; font-family: -apple-system,'Inter',sans-serif;
  box-shadow: 0 4px 18px rgba(0,0,0,.25);
  z-index: 9997;
  opacity: 0; pointer-events: none;
  transition: opacity .18s, transform .18s;
}
#v3-mode-banner.show {
  opacity: 1; pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}
#v3-mode-banner .v3-mb-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: #34d399; flex-shrink: 0;
  animation: v3pulse 1.2s infinite;
}
@keyframes v3pulse { 0%,100%{opacity:1} 50%{opacity:.35} }
#v3-mode-cancel {
  background: rgba(239,68,68,.9); color: #fff;
  border: none; border-radius: 7px;
  padding: 4px 10px; font-size: 11.5px; font-weight: 600;
  cursor: pointer; font-family: inherit; flex-shrink: 0;
  transition: background .15s;
}
#v3-mode-cancel:hover { background: #ef4444; }
.mucar-stop {
  background: transparent !important;
  border: 0 !important;
}

.mucar-stop-pin {
  position: relative;
  width: 34px;
  height: 34px;
  border: 3px solid #fff;
  border-radius: 50% 50% 50% 10%;
  background: var(--mucar-pin-color, #7c3aed);
  box-shadow: 0 3px 9px rgba(15, 23, 42, .42);
  color: #fff;
  transform: rotate(-45deg);
}

.mucar-stop-pin span {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-size: 11px;
  font-weight: 900;
  line-height: 1;
  transform: rotate(45deg);
}

.mucar-stop-popup {
  min-width: 255px;
  color: #172033;
}

.mucar-stop-popup-title {
  padding: 9px 10px;
  border-bottom: 1px solid #e6eaf0;
  background: #f8fafc;
  border-radius: 8px 8px 0 0;
  font-size: 12px;
  font-weight: 850;
}

.mucar-stop-popup-title span {
  color: #667085;
  font-weight: 600;
}

.mucar-stop-popup-list {
  max-height: 260px;
  overflow-y: auto;
  overflow-x: hidden;
}

.mucar-stop-row {
  box-sizing: border-box;
  width: 100%;
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) 12px;
  gap: 8px;
  align-items: center;
  padding: 8px 9px;
  border: 0;
  border-bottom: 1px solid #edf0f4;
  background: #fff;
  color: inherit;
  cursor: pointer;
  text-align: left;
}

.mucar-stop-row:hover,
.mucar-stop-row:focus-visible {
  background: #f5f7fb;
  outline: none;
}

.mucar-trip-badge {
  display: inline-flex;
  min-width: 36px;
  min-height: 24px;
  align-items: center;
  justify-content: center;
  padding: 3px 6px;
  border-radius: 7px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.28);
  font-size: 11px;
  font-weight: 900;
}

.mucar-stop-row-info {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 11px;
}

.mucar-stop-route {
  overflow: hidden;
  color: #596579;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mucar-stop-chevron {
  color: #98a2b3;
  font-size: 14px;
}

.mucar-stop-pop .leaflet-popup-content {
  box-sizing: border-box;
  width: auto !important;
  margin: 8px;
}
