/* Regul'Bus 2.2.4 - favoris, trafic, GPS qualifié et centre Tachy & RSE */
:root{
  --rb224-surface:var(--surface,#fff);
  --rb224-surface-2:var(--surface-2,#f4f7fb);
  --rb224-text:var(--text,#09274c);
  --rb224-muted:var(--muted,#5b708a);
  --rb224-border:var(--line,rgba(9,39,76,.14));
  --rb224-accent:#087bf5;
  --rb224-teal:#0bbfad;
  --rb224-danger:#e43f59;
  --rb224-warning:#e98a19;
  --rb224-success:#0a9f74;
}
[data-rb-theme="dark"]{
  --rb224-surface:#0d2038;--rb224-surface-2:#102944;--rb224-text:#f5f9ff;--rb224-muted:#b6c8dc;--rb224-border:rgba(206,226,248,.18);
}
.route-favorite-panel{margin:0 0 18px;padding:14px;border:1px solid var(--rb224-border);border-radius:18px;background:color-mix(in srgb,var(--rb224-surface) 88%,transparent)}
.route-favorite-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:10px;color:var(--rb224-text)}
.route-favorite-head small{color:var(--rb224-muted)}
.route-favorite-list{display:flex;gap:8px;overflow-x:auto;padding:2px 1px 7px;scrollbar-width:thin}
.route-favorite-toggle{display:inline-flex;align-items:center;gap:7px;min-width:64px;min-height:44px;padding:8px 12px;border:1px solid var(--rb224-border);border-radius:14px;background:var(--rb224-surface-2);color:var(--rb224-text);font:inherit;font-weight:800;cursor:pointer;transition:transform .18s ease,border-color .18s ease,background .18s ease}
.route-favorite-toggle:hover{transform:translateY(-2px);border-color:var(--rb224-accent)}
.route-favorite-toggle .rb-icon{width:18px;color:var(--rb224-muted);fill:transparent}
.route-favorite-toggle.active{background:linear-gradient(135deg,rgba(8,123,245,.15),rgba(11,191,173,.16));border-color:rgba(8,123,245,.45)}
.route-favorite-toggle.active .rb-icon{color:#f5a623;fill:#f5a623}
.gps-signal-quality{width:54px;min-height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:16px;border:1px solid rgba(255,255,255,.28);background:rgba(7,27,50,.7);backdrop-filter:blur(16px);color:#fff;box-shadow:0 8px 24px rgba(0,20,48,.18)}
.gps-signal-quality>span{height:16px;display:flex;align-items:flex-end;gap:2px}.gps-signal-quality i{display:block;width:4px;border-radius:3px;background:currentColor;opacity:.25}.gps-signal-quality i:nth-child(1){height:6px}.gps-signal-quality i:nth-child(2){height:11px}.gps-signal-quality i:nth-child(3){height:16px}.gps-signal-quality small{font-size:8px;font-weight:900;letter-spacing:.04em;text-transform:uppercase}
.gps-signal-quality.excellent{color:#48e0b3}.gps-signal-quality.excellent i{opacity:1}.gps-signal-quality.medium{color:#ffc66b}.gps-signal-quality.medium i:nth-child(-n+2){opacity:1}.gps-signal-quality.weak{color:#ff7587}.gps-signal-quality.weak i:first-child{opacity:1}
.battery-low-warning{position:fixed;z-index:10020;right:max(14px,env(safe-area-inset-right));top:max(76px,calc(env(safe-area-inset-top) + 12px));display:flex;align-items:center;gap:10px;max-width:min(330px,calc(100vw - 28px));padding:11px 12px;border:1px solid rgba(232,138,25,.45);border-radius:16px;background:color-mix(in srgb,var(--rb224-surface) 84%,transparent);backdrop-filter:blur(22px);box-shadow:0 14px 36px rgba(0,20,45,.22);color:var(--rb224-text)}
.battery-low-warning>.rb-icon{width:22px;color:var(--rb224-warning)}.battery-low-warning div{display:grid;gap:1px}.battery-low-warning b{font-size:13px}.battery-low-warning span{font-size:12px;color:var(--rb224-muted)}.battery-low-warning button{border:0;background:transparent;color:inherit;font-size:20px;min-width:32px;min-height:32px}
.traffic-map-marker{width:32px;height:32px;padding:6px;display:grid;place-items:center;border:2px solid #fff;border-radius:11px;background:#263d58;color:#fff;box-shadow:0 7px 18px rgba(0,25,55,.27);cursor:pointer}.traffic-map-marker .rb-icon{width:18px;height:18px}.traffic-map-marker.accident{background:#e14458}.traffic-map-marker.road_closed,.traffic-map-marker.closed_lane{background:#c83145}.traffic-map-marker.roadworks{background:#ee8b1d}.traffic-map-marker.jam{background:#8a3ffc}.traffic-map-marker.deviation{background:#087bf5}.traffic-popup small{display:block;margin-top:6px;color:#697e96}
.recovery-estimate{display:block;margin-top:4px;font-size:10px;line-height:1.25;font-weight:750;color:var(--rb224-muted);white-space:normal}.recovery-estimate.estimated{color:var(--rb224-success)}.recovery-estimate.impossible{color:var(--rb224-danger)}
.tachy-view-head .eyebrow{color:var(--rb224-teal)}.tachy-legal-notice{display:flex;gap:12px;align-items:flex-start;margin-bottom:16px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--rb224-warning) 38%,var(--rb224-border));border-radius:18px;background:color-mix(in srgb,var(--rb224-warning) 10%,var(--rb224-surface));color:var(--rb224-text)}.tachy-legal-notice .rb-icon{flex:0 0 22px;color:var(--rb224-warning)}.tachy-legal-notice div{display:grid;gap:3px}.tachy-legal-notice span{font-size:13px;line-height:1.5;color:var(--rb224-muted)}
.tachy-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.tachy-stat{min-width:0;padding:16px;border:1px solid var(--rb224-border);border-radius:20px;background:linear-gradient(145deg,color-mix(in srgb,var(--rb224-surface) 94%,transparent),color-mix(in srgb,var(--rb224-surface-2) 88%,transparent));box-shadow:0 12px 28px rgba(3,28,57,.07);color:var(--rb224-text)}.tachy-stat>span{display:block;color:var(--rb224-muted);font-size:11px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.tachy-stat>b{display:block;margin:9px 0;font-size:25px;line-height:1}.tachy-stat>div{height:5px;border-radius:8px;background:var(--rb224-border);overflow:hidden}.tachy-stat>div i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--rb224-accent),var(--rb224-teal))}.tachy-stat small{display:block;margin-top:7px;color:var(--rb224-muted);line-height:1.35}.tachy-stat.danger>div i{background:var(--rb224-danger)}.tachy-stat.accent{border-color:rgba(11,191,173,.35)}
.tachy-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:16px;margin-bottom:16px}.tachy-entry-list{display:grid;gap:9px;margin-top:16px;max-height:420px;overflow:auto}.tachy-entry-list article{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid var(--rb224-border);border-radius:15px;background:var(--rb224-surface-2);color:var(--rb224-text)}.tachy-entry-list article>div{min-width:0;display:grid;gap:3px;flex:1}.tachy-entry-list small{color:var(--rb224-muted);line-height:1.35}.tachy-entry-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:rgba(8,123,245,.12);color:var(--rb224-accent)}.tachy-entry-icon .rb-icon{width:20px}.tachy-delete-entry{width:40px;height:40px;display:grid;place-items:center;border:0;border-radius:12px;background:transparent;color:var(--rb224-muted);cursor:pointer}.tachy-delete-entry:hover{background:rgba(228,63,89,.1);color:var(--rb224-danger)}
.tachy-result{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:16px}.tachy-result>div{padding:12px;border:1px solid var(--rb224-border);border-radius:14px;background:var(--rb224-surface-2);color:var(--rb224-text)}.tachy-result>div span{display:block;font-size:11px;color:var(--rb224-muted)}.tachy-result>div b{display:block;margin-top:5px;font-size:18px}.tachy-result>small{grid-column:1/-1;color:var(--rb224-muted);line-height:1.45}.tachy-simulator-card{margin-bottom:16px}.tachy-simulator-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.simulator-status{grid-column:1/-1;display:flex!important;align-items:center;gap:8px}.simulator-status.ok{border-color:rgba(10,159,116,.4);color:var(--rb224-success)}.simulator-status.warn{border-color:rgba(233,138,25,.4);color:var(--rb224-warning)}.simulator-metrics{grid-column:1/-1;display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.simulator-metrics span{display:grid;gap:4px}.tachy-result p{grid-column:1/-1;margin:0;padding:10px 12px;border-radius:12px;background:rgba(228,63,89,.09);color:var(--rb224-danger);font-weight:700}
.tachy-knowledge{padding:18px;border-radius:22px;background:var(--rb224-surface-2);color:var(--rb224-text)}.tachy-library{display:grid;gap:10px}.tachy-library-section{border:1px solid var(--rb224-border);border-radius:17px;background:var(--rb224-surface);overflow:hidden}.tachy-library-section summary{display:flex;justify-content:space-between;gap:12px;padding:15px 16px;cursor:pointer;font-weight:850}.tachy-library-section summary small{color:var(--rb224-muted);font-weight:600}.tachy-library-section>div{padding:0 16px 16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.tachy-library-section article{padding:13px;border-radius:14px;background:var(--rb224-surface-2)}.tachy-library-section h4{margin:0 0 6px}.tachy-library-section p{margin:0;color:var(--rb224-muted);line-height:1.55}.tachy-example{margin-top:8px;padding:8px;border-left:3px solid var(--rb224-teal);color:var(--rb224-text);font-size:13px}.tachy-sources{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-top:8px}.tachy-sources h4{width:100%;margin:0}.tachy-sources a{padding:9px 11px;border:1px solid var(--rb224-border);border-radius:12px;color:var(--rb224-accent);text-decoration:none;font-weight:700;font-size:12px}.tachy-skeleton{grid-column:1/-1;padding:24px;text-align:center;color:var(--rb224-muted)}
@media(max-width:1100px){.tachy-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tachy-simulator-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.tachy-layout{grid-template-columns:1fr}.tachy-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.tachy-stat{padding:13px;border-radius:16px}.tachy-stat>b{font-size:20px}.tachy-simulator-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tachy-library-section summary{display:grid}.tachy-library-section>div{grid-template-columns:1fr}.simulator-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.appearance-options{grid-template-columns:repeat(2,minmax(0,1fr))}.rb-instrument-rail-v4{gap:7px}.recovery-estimate{font-size:9px;max-width:180px}}
@media(max-width:390px){.tachy-summary-grid{grid-template-columns:1fr}.tachy-result{grid-template-columns:1fr}.tachy-result>small,.simulator-status,.simulator-metrics,.tachy-result p{grid-column:1}.tachy-simulator-grid,.simulator-metrics{grid-template-columns:1fr}.gps-signal-quality{width:46px;min-height:44px}}
@media(prefers-reduced-motion:reduce){.route-favorite-toggle,.traffic-map-marker{transition:none!important}}
