:root{
  --dark:#111827;
  --dark2:#1f2937;
  --blue:#2563eb;
  --cyan:#06b6d4;
  --green:#10b981;
  --orange:#f59e0b;
  --red:#ef4444;
  --soft:#f3f6fb;
  --card:#ffffff;
  --border:#dbe3ef;
  --muted:#64748b;
  --ink:#0f172a;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:linear-gradient(135deg,#f8fafc,#eef4ff);color:var(--ink)}
body{padding-bottom:calc(82px + env(safe-area-inset-bottom))}
button,input{font:inherit}
button{border:0;cursor:pointer}
.hidden{display:none!important}
.app-shell{max-width:760px;margin:0 auto;min-height:100vh}
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:14px 14px 10px;background:rgba(248,250,252,.92);backdrop-filter:blur(14px);border-bottom:1px solid rgba(219,227,239,.7)}
.brand{display:flex;align-items:center;gap:11px}.brand-icon{width:42px;height:42px;object-fit:contain}.brand h1{margin:0;font-size:21px;font-weight:950;letter-spacing:-.03em}.brand p{margin:2px 0 0;color:var(--muted);font-size:13px;font-weight:700}
.main{padding:12px 12px 18px}
.panel,.service-panel,.geo-strip,.map-panel,.toolbar,.stat,.trip-card{background:var(--card);border:1px solid var(--border);box-shadow:8px 8px 0 rgba(15,23,42,.06);border-radius:0}
.login-panel{padding:18px;margin-top:10px}.login-logo{width:min(310px,100%);display:block;margin:0 0 18px}.login-panel h2{margin:0;font-size:24px}.muted{color:var(--muted);margin:6px 0 18px}
label{display:block;margin:14px 0 7px;font-size:13px;font-weight:900;color:#334155}
input{width:100%;padding:14px;border:1px solid var(--border);border-radius:0;background:#f8fafc;outline:none}input:focus{background:#fff;border-color:var(--blue)}
.btn{min-height:44px;padding:0 13px;border-radius:0;font-weight:900;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn-primary{background:linear-gradient(135deg,var(--blue),var(--cyan));color:#fff}.btn-dark{background:var(--dark);color:#fff}.btn-outline{background:#fff;border:1px solid var(--border);color:var(--dark)}.full{width:100%;margin-top:18px}.error{color:var(--red);font-weight:900;min-height:18px}.demo-box{background:#f8fafc;border:1px dashed #cbd5e1;padding:12px;color:#475569;margin-top:12px}
.service-panel{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;background:linear-gradient(135deg,#111827,#1f2937);color:#fff;border-left:5px solid var(--blue)}.kicker{font-size:11px;letter-spacing:.14em;color:#93c5fd;font-weight:950}.service-panel h2{margin:5px 0 2px;font-size:24px}.service-panel p{margin:0;color:#dbeafe;font-size:13px}
.service-toggle{min-height:48px;padding:0 14px;border-radius:0;color:#fff;font-weight:950;display:flex;align-items:center;gap:9px;border:1px solid rgba(255,255,255,.22)}.service-toggle.off{background:#475569}.service-toggle.on{background:var(--green)}.pulse-dot{width:12px;height:12px;background:#cbd5e1;display:inline-block;border-radius:50%}.service-toggle.on .pulse-dot{background:#fff;box-shadow:0 0 0 8px rgba(255,255,255,.16);animation:pulse 1.4s infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(255,255,255,.3)}100%{box-shadow:0 0 0 13px rgba(255,255,255,0)}}
.geo-strip{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:13px;margin-top:12px}.geo-strip p{margin:4px 0 0;color:var(--muted);font-size:13px}.badge{display:inline-flex;align-items:center;min-height:28px;padding:0 9px;font-size:12px;font-weight:950;border-radius:0;white-space:nowrap}.muted-badge{background:#e2e8f0;color:#334155}.live-badge{background:#dcfce7;color:#166534}
.map-panel{margin-top:12px;overflow:hidden}.map-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:13px;border-bottom:1px solid var(--border)}.map-head h2{margin:0;font-size:19px}.map-head p{margin:2px 0 0;color:var(--muted);font-size:12px}#driverMap{height:310px;background:#dbeafe}.legend{display:flex;gap:12px;flex-wrap:wrap;padding:10px 12px;border-top:1px solid var(--border);font-size:12px;font-weight:900;color:#334155}.line{width:26px;height:5px;display:inline-block;vertical-align:middle;margin-right:5px}.line.blue{background:var(--blue)}.line.cyan{background:var(--cyan)}.point{width:11px;height:11px;border-radius:50%;background:var(--green);display:inline-block;margin-right:5px}
.toolbar{display:flex;gap:8px;padding:8px;margin-top:12px;box-shadow:none}.chip{min-height:40px;padding:0 11px;background:#f1f5f9;color:#334155;border:1px solid var(--border);border-radius:0;font-weight:900}.chip.active{background:var(--dark);color:#fff}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px}.stat{padding:11px;box-shadow:none}.stat span{display:block;color:var(--muted);font-size:12px;font-weight:900}.stat strong{font-size:25px}
.section-title{margin:18px 3px 10px}.section-title h2{margin:0;font-size:21px}.section-title p{margin:3px 0 0;color:var(--muted);font-size:13px}
.trips-list{display:flex;flex-direction:column;gap:12px}.trip-card{overflow:hidden}.trip-card.next{border-color:#93c5fd;box-shadow:8px 8px 0 rgba(37,99,235,.13)}.trip-top{display:flex;justify-content:space-between;gap:10px;padding:14px;border-bottom:1px solid #edf2f7}.trip-time{font-size:21px;font-weight:950}.trip-kind{background:var(--blue);color:#fff;font-size:12px;font-weight:950;padding:7px 9px;white-space:nowrap}.trip-kind.return{background:var(--cyan)}.trip-body{padding:13px}.route-line{display:grid;grid-template-columns:18px 1fr;gap:10px;margin-bottom:11px}.route-dot{width:12px;height:12px;border-radius:0;background:var(--dark);margin-top:4px}.route-dot.arrival{background:var(--blue)}.place-name{font-weight:950}.address{font-size:13px;color:var(--muted);line-height:1.3}
.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px}.info-item{background:#f8fafc;border:1px solid #edf2f7;padding:10px}.info-item span{display:block;color:#64748b;font-size:11px;font-weight:950;text-transform:uppercase}.info-item strong{display:block;font-size:14px;margin-top:2px}.info-item a{color:var(--blue);text-decoration:none}
.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 13px 13px}.action-btn{min-height:48px;color:#fff;font-weight:950;border-radius:0}.pickup-btn{background:var(--green)}.dropoff-btn{background:var(--blue)}.action-btn:disabled{background:#cbd5e1;color:#475569}
.trip-status{padding:10px 13px;background:#f8fafc;color:#475569;font-size:13px;font-weight:900;border-top:1px solid #edf2f7}.trip-status.progress{color:var(--blue)}.trip-status.done{color:#059669}
.bottom-nav{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:min(760px,100%);z-index:70;display:grid;grid-template-columns:repeat(4,1fr);padding:7px 8px calc(7px + env(safe-area-inset-bottom));background:rgba(255,255,255,.95);backdrop-filter:blur(16px);border-top:1px solid var(--border)}.nav-item{background:transparent;color:#64748b;min-height:55px;font-weight:950;border-radius:0}.nav-item i{display:block;font-size:20px}.nav-item span{font-size:11px}.nav-item.active{background:var(--dark);color:#fff}
.toast{position:fixed;left:50%;bottom:92px;transform:translateX(-50%);width:min(92%,430px);background:var(--dark);color:#fff;padding:13px;z-index:90;font-weight:900;box-shadow:8px 8px 0 rgba(15,23,42,.18)}
.driver-marker{width:18px;height:18px;background:var(--green);border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 4px rgba(16,185,129,.28)}
.num-marker{background:#111827;color:#fff;border:2px solid #fff;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-weight:950;font-size:12px;box-shadow:3px 3px 0 rgba(0,0,0,.18)}
@media(max-width:460px){.service-panel{align-items:flex-start;flex-direction:column}.service-toggle{width:100%;justify-content:center}.info-grid{grid-template-columns:1fr}.trip-top{align-items:flex-start;flex-direction:column}.stats{gap:7px}.stat strong{font-size:22px}#driverMap{height:285px}}


.date-switcher{
  display:grid;
  grid-template-columns:48px 1fr 48px;
  gap:8px;
  margin-top:12px;
  background:#fff;
  border:1px solid var(--border);
  box-shadow:8px 8px 0 rgba(15,23,42,.06);
  border-radius:0;
  padding:8px;
}
.date-btn{
  min-height:52px;
  background:var(--dark);
  color:#fff;
  border-radius:0;
  font-size:20px;
  font-weight:950;
}
.date-current{
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  background:#f8fafc;
  border:1px solid #e2e8f0;
  min-height:52px;
}
.date-current span{
  color:var(--blue);
  font-size:12px;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.date-current strong{
  margin-top:2px;
  font-size:17px;
  color:var(--dark);
  text-align:center;
}
.trip-date-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  background:#eef6ff;
  color:#1d4ed8;
  border:1px solid #bfdbfe;
  font-size:12px;
  font-weight:950;
  padding:6px 8px;
  margin-top:6px;
}
.trip-top-left{
  display:flex;
  flex-direction:column;
}

/* V15 - Mot de passe oublié / changement mot de passe */
.link-btn{
  width:100%;
  margin-top:10px;
  background:transparent;
  color:var(--blue);
  font-weight:950;
  min-height:38px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
}
.mini-action{
  margin-top:8px;
  min-height:32px;
  padding:0 9px;
  background:rgba(255,255,255,.12);
  color:#fff;
  border:1px solid rgba(255,255,255,.22);
  font-size:12px;
  font-weight:950;
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.modal-backdrop{
  position:fixed;
  inset:0;
  z-index:120;
  background:rgba(15,23,42,.58);
  backdrop-filter:blur(10px);
  display:flex;
  align-items:flex-end;
  justify-content:center;
  padding:14px;
}
.modal-card{
  width:min(100%,480px);
  background:#fff;
  border:1px solid var(--border);
  box-shadow:10px 10px 0 rgba(0,0,0,.18);
  padding:18px;
  position:relative;
  max-height:92vh;
  overflow:auto;
}
.modal-card h2{
  margin:0;
  font-size:22px;
  font-weight:950;
  color:var(--dark);
  display:flex;
  gap:9px;
  align-items:center;
}
.modal-close{
  position:absolute;
  right:10px;
  top:10px;
  width:40px;
  height:40px;
  background:#f1f5f9;
  color:#111827;
  border:1px solid var(--border);
  font-weight:950;
}
.modal-message{
  min-height:20px;
  margin:12px 0 0;
  font-weight:900;
  color:#334155;
}
.modal-message.error{color:var(--red)}
.modal-message.success{color:#047857}
@media(min-width:640px){.modal-backdrop{align-items:center}}

/* =====================================================
   V17 - UX carte/menu + statut GPS
   Empêche Leaflet de passer au-dessus du menu mobile.
===================================================== */
#driverMap,
.map-panel,
.leaflet-container,
.leaflet-pane,
.leaflet-map-pane,
.leaflet-control-container{
  z-index:1!important;
}
.topbar,
.bottom-nav,
.modal-backdrop,
.modal-card,
.toast{
  z-index:5000!important;
}
.bottom-nav{position:fixed;}
.main{padding-bottom:calc(96px + env(safe-area-inset-bottom));}
.error-badge{background:#fee2e2!important;color:#991b1b!important;border-color:#fecaca!important;}
.live-badge{background:#dcfce7!important;color:#166534!important;border-color:#bbf7d0!important;}

/* V18 - correction voile noir + carte sous le menu */
.modal-backdrop{background:rgba(15,23,42,.18)!important;backdrop-filter:blur(4px)!important;}
.hidden.modal-backdrop{display:none!important;pointer-events:none!important;}
#driverMap,.map-panel,.leaflet-container,.leaflet-pane,.leaflet-map-pane,.leaflet-control-container{z-index:1!important;}
.topbar,.bottom-nav,.modal-backdrop,.modal-card,.toast{z-index:8000!important;}

/* V29 carte chauffeur : points propres et carte sous le menu */
.num-marker{width:28px;height:28px;border-radius:999px;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:950;border:3px solid #fff;box-shadow:0 8px 18px rgba(15,23,42,.28)}
#driverMap,.leaflet-container{z-index:1!important}.topbar,.bottom-nav,.modal-backdrop{z-index:5000!important}


/* V83 : animation discrète sur le dernier statut retour */
@keyframes lynkV83FinalBlink{
  0%,100%{box-shadow:0 0 0 0 rgba(34,197,94,.35); transform:translateY(0)}
  50%{box-shadow:0 0 0 8px rgba(34,197,94,.08); transform:translateY(-1px)}
}
.v62-driver-status[data-action="dropoff_retour"]:not(:disabled),
.v40-status-btn[data-action="dropoff_retour"]:not(:disabled),
.v38-status-btn[data-action="dropoff_retour"]:not(:disabled),
.v37-status-btn[data-action="dropoff_retour"]:not(:disabled),
.v26-status-btn[data-action="dropoff_retour"]:not(:disabled){
  animation:lynkV83FinalBlink 1.2s ease-in-out infinite;
  border-color:rgba(34,197,94,.6)!important;
}
@media (prefers-reduced-motion: reduce){
  .v62-driver-status[data-action="dropoff_retour"],
  .v40-status-btn[data-action="dropoff_retour"],
  .v38-status-btn[data-action="dropoff_retour"],
  .v37-status-btn[data-action="dropoff_retour"],
  .v26-status-btn[data-action="dropoff_retour"]{animation:none!important;}
}


/* V85 - chauffeur : bouton final plus visible + véhicule retiré de la card live chauffeur */
#vehicleInfo{display:none!important;}
@keyframes lynkV85FinalDropPulse{
  0%,100%{transform:translateY(0) scale(1);box-shadow:0 0 0 0 rgba(34,197,94,.70),0 8px 18px rgba(34,197,94,.20);filter:saturate(1)}
  35%{transform:translateY(-2px) scale(1.025);box-shadow:0 0 0 8px rgba(34,197,94,.30),0 12px 24px rgba(34,197,94,.28);filter:saturate(1.25)}
  70%{transform:translateY(0) scale(1);box-shadow:0 0 0 14px rgba(34,197,94,0),0 8px 18px rgba(34,197,94,.16);filter:saturate(1)}
}
.v62-driver-status[data-action="dropoff_retour"]:not(:disabled),
.v40-status-btn[data-action="dropoff_retour"]:not(:disabled),
.v38-status-btn[data-action="dropoff_retour"]:not(:disabled),
.v37-status-btn[data-action="dropoff_retour"]:not(:disabled),
.v26-status-btn[data-action="dropoff_retour"]:not(:disabled){
  animation:lynkV85FinalDropPulse .85s ease-in-out infinite!important;
  background:#16a34a!important;
  color:#fff!important;
  border-color:#15803d!important;
  font-weight:950!important;
}


/* =====================================================
   V94 - Menus chauffeur alignés sur la DA gestion
===================================================== */
.bottom-nav{
  background:#111827!important;
  border-top:0!important;
  border-left:4px solid #2563eb!important;
  box-shadow:0 -12px 34px rgba(15,23,42,.22)!important;
  gap:6px!important;
}
.nav-item{
  color:#cbd5e1!important;
  background:transparent!important;
  border:1px solid transparent!important;
  font-weight:900!important;
  transition:.18s ease!important;
}
.nav-item i{color:inherit!important;}
.nav-item:hover,
.nav-item.active{
  background:#1d4ed8!important;
  color:#fff!important;
  border-color:#60a5fa!important;
  box-shadow:inset 0 4px 0 #93c5fd!important;
}
.nav-item:active{transform:scale(.985)}
.toolbar{
  background:#111827!important;
  border-left:4px solid #2563eb!important;
  border-color:rgba(96,165,250,.42)!important;
  gap:8px!important;
}
.chip{
  background:transparent!important;
  color:#cbd5e1!important;
  border:1px solid transparent!important;
  font-weight:900!important;
}
.chip:hover,
.chip.active{
  background:#1d4ed8!important;
  color:#fff!important;
  border-color:#60a5fa!important;
}
.date-btn{
  background:#111827!important;
  border:1px solid #60a5fa!important;
  color:#fff!important;
}
.date-btn:active{transform:scale(.985)}
@media(min-width:760px){
  .bottom-nav{
    padding:8px!important;
  }
  .nav-item.active{box-shadow:inset 4px 0 0 #93c5fd!important;}
}


/* =====================================================
   V96 - Menus chauffeur DA claire gestion
   Reprend les couleurs exactes du menu gestion : fond clair,
   texte bleu-gris, état actif blanc + accent bleu.
===================================================== */
:root{
  --lynk-menu-bg-start:#F7FAFD;
  --lynk-menu-bg-end:#E8EEF4;
  --lynk-menu-border:#D7E0E8;
  --lynk-menu-text:#31506A;
  --lynk-menu-ink:#11263A;
  --lynk-menu-accent:#008DFF;
}
.bottom-nav{
  background:linear-gradient(180deg,var(--lynk-menu-bg-start) 0%,var(--lynk-menu-bg-end) 100%)!important;
  border-top:1px solid var(--lynk-menu-border)!important;
  border-left:0!important;
  box-shadow:0 -8px 28px rgba(17,38,58,.12)!important;
  gap:6px!important;
}
.nav-item{
  color:var(--lynk-menu-text)!important;
  background:transparent!important;
  border:1px solid transparent!important;
  border-bottom:3px solid transparent!important;
  font-weight:900!important;
  transition:.18s ease!important;
  box-shadow:none!important;
}
.nav-item i{color:var(--lynk-menu-text)!important;}
.nav-item:hover,
.nav-item.active{
  background:#FFFFFF!important;
  color:var(--lynk-menu-ink)!important;
  border-color:var(--lynk-menu-border)!important;
  border-bottom-color:var(--lynk-menu-accent)!important;
  box-shadow:0 8px 18px rgba(17,38,58,.08)!important;
  transform:none!important;
}
.nav-item:hover i,
.nav-item.active i{color:var(--lynk-menu-accent)!important;}
.toolbar{
  background:linear-gradient(180deg,var(--lynk-menu-bg-start) 0%,var(--lynk-menu-bg-end) 100%)!important;
  border:1px solid var(--lynk-menu-border)!important;
  border-left:0!important;
  box-shadow:8px 8px 0 rgba(17,38,58,.05)!important;
  gap:8px!important;
}
.chip{
  background:transparent!important;
  color:var(--lynk-menu-text)!important;
  border:1px solid transparent!important;
  border-left:4px solid transparent!important;
  font-weight:900!important;
}
.chip:hover,
.chip.active{
  background:#FFFFFF!important;
  color:var(--lynk-menu-ink)!important;
  border-color:var(--lynk-menu-border)!important;
  border-left-color:var(--lynk-menu-accent)!important;
  box-shadow:0 7px 16px rgba(17,38,58,.07)!important;
}
.chip:hover i,
.chip.active i{color:var(--lynk-menu-accent)!important;}
.date-btn{
  background:#FFFFFF!important;
  color:var(--lynk-menu-ink)!important;
  border:1px solid var(--lynk-menu-border)!important;
  box-shadow:none!important;
}
.date-btn:hover,
.date-btn:active{
  color:var(--lynk-menu-accent)!important;
  border-color:#B9D7F2!important;
  transform:none!important;
}
@media(min-width:760px){
  .bottom-nav{padding:8px!important;}
  .nav-item{border-left:4px solid transparent!important;border-bottom:1px solid transparent!important;}
  .nav-item:hover,
  .nav-item.active{
    border-left-color:var(--lynk-menu-accent)!important;
    border-bottom-color:var(--lynk-menu-border)!important;
  }
}

/* V121 - Chauffeur : détails masqués au lancement + UX mobile 4 boutons */
.v121-mobile-trip{overflow:hidden!important}
.v121-summary{display:grid;gap:10px;padding:13px;background:#fff;border-bottom:1px solid #e2e8f0}
.v121-route{display:grid;grid-template-columns:18px 1fr;gap:10px;align-items:start}
.v121-route small{display:block;font-size:11px;font-weight:950;text-transform:uppercase;color:#64748b;margin-bottom:2px}
.v121-route b{display:block;font-size:17px;line-height:1.22;color:#0f172a}
.v121-details{border-bottom:1px solid #e2e8f0;background:#f8fafc}
.v121-details summary{list-style:none;display:flex;align-items:center;gap:8px;padding:12px 13px;font-weight:950;color:#15273D;cursor:pointer;user-select:none;background:#fff}
.v121-details summary::-webkit-details-marker{display:none}
.v121-details:not([open]) .v37-schedule,.v121-details:not([open]) .trip-body{display:none!important}
.v121-details[open] summary i{transform:rotate(180deg)}
.v121-quick-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding:12px 13px;background:#fff}
.v121-quick-btn{min-height:62px;border:1px solid #dbe3ef;background:#F4F8FB;color:#15273D;text-decoration:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font-weight:950;font-size:12px;text-align:center;padding:8px 5px;border-radius:0!important}
.v121-quick-btn i{font-size:22px;line-height:1}.v121-quick-btn.gps{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.v121-quick-btn.call{background:#ecfeff;color:#155e75;border-color:#bae6fd}.v121-quick-btn.main{background:#15273D;color:#fff;border-color:#15273D}.v121-quick-btn:disabled{background:#e2e8f0!important;color:#94a3b8!important;border-color:#cbd5e1!important}
.v121-actions{display:grid!important;grid-template-columns:repeat(2,1fr)!important;gap:8px!important;padding:0 13px 13px!important;margin:0!important;background:#fff!important}
.v121-actions .v62-driver-status,.v121-actions .v37-status-btn{min-height:58px!important;border-radius:0!important;padding:10px!important;box-shadow:none!important;gap:8px!important}.v121-actions .v62-driver-status small,.v121-actions .v37-status-btn small{display:none!important}.v121-actions .v62-driver-status b,.v121-actions .v37-status-btn b{font-size:12px!important;line-height:1.15!important}
@media(max-width:390px){.v121-quick-actions{gap:6px;padding:10px}.v121-quick-btn{min-height:58px;font-size:11px}.v121-actions{gap:6px!important;padding:0 10px 10px!important}.v121-actions .v62-driver-status,.v121-actions .v37-status-btn{min-height:54px!important}}


/* V122 - Masquage des boutons d'action chauffeur au lancement */
.trip-card .v121-actions{display:none!important}
.trip-card.v122-actions-open .v121-actions{display:grid!important}
.trip-card.v122-actions-open .v121-quick-btn.main{background:#15273D;color:#fff;border-color:#15273D}
.trip-card.v122-actions-open .v121-quick-btn.main span::after{content:" ouvertes";font-size:10px;font-weight:800;display:block;opacity:.85}
.v121-actions{margin:0 13px 13px;padding:10px;background:#F4F8FB;border:1px solid #dbe3ef}


/* V123 - 4 boutons chauffeur visibles sur une seule ligne */
.trip-card .v121-actions{
  display:grid!important;
  grid-template-columns:repeat(4,1fr)!important;
  gap:6px!important;
  margin:0 13px 13px!important;
  padding:10px!important;
  background:#F4F8FB!important;
  border:1px solid #dbe3ef!important;
}
.trip-card .v121-actions button,
.trip-card .v121-actions .btn,
.trip-card .v121-actions .action-btn{
  min-height:58px!important;
  padding:8px 4px!important;
  font-size:11px!important;
  line-height:1.1!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:4px!important;
  text-align:center!important;
  white-space:normal!important;
}
.trip-card .v121-actions button i,
.trip-card .v121-actions .btn i,
.trip-card .v121-actions .action-btn i{
  font-size:19px!important;
  margin:0!important;
}
.trip-card .v121-actions button:disabled,
.trip-card .v121-actions .btn:disabled,
.trip-card .v121-actions .action-btn:disabled{
  opacity:.45!important;
  filter:grayscale(.2);
}
.v121-quick-actions{
  grid-template-columns:repeat(3,1fr)!important;
}
.v121-quick-btn.main{display:none!important}
@media(max-width:390px){
  .trip-card .v121-actions{gap:5px!important;margin-left:10px!important;margin-right:10px!important;padding:8px!important}
  .trip-card .v121-actions button,
  .trip-card .v121-actions .btn,
  .trip-card .v121-actions .action-btn{min-height:55px!important;font-size:10px!important}
  .trip-card .v121-actions button i,
  .trip-card .v121-actions .btn i,
  .trip-card .v121-actions .action-btn i{font-size:18px!important}
}


/* V124 - Accueil chauffeur ultra épuré */
body{background:#eef4fb}
.topbar{padding:12px 16px!important}
.brand-icon{width:42px!important;height:42px!important}
.brand h1{font-size:20px!important;line-height:1.1!important}
.brand p{font-size:12px!important;margin-top:2px!important}
.main{padding:10px 14px 96px!important}
.driver-compact-head{
  position:relative;
  display:grid;
  grid-template-columns:1fr auto;
  gap:10px;
  align-items:center;
  background:#15273D;
  color:#fff;
  padding:13px 44px 13px 14px;
  border-left:4px solid #2468FA;
  box-shadow:0 10px 24px rgba(15,39,61,.12);
}
.driver-compact-head .kicker{font-size:11px;letter-spacing:.12em;color:#93c5fd;font-weight:950}
.driver-identity h2{font-size:18px;line-height:1.15;margin:4px 0 3px}
.driver-identity p{margin:0;color:#dbeafe;font-size:12px;font-weight:800;line-height:1.25}
.sep-dot{margin:0 6px;color:#93c5fd}
.driver-status-stack{display:grid;gap:6px;justify-items:stretch;min-width:112px}
.service-toggle.compact{
  min-height:36px!important;
  padding:7px 10px!important;
  font-size:12px!important;
  border:1px solid rgba(255,255,255,.18)!important;
  background:rgba(255,255,255,.12)!important;
  color:#fff!important;
}
.service-toggle.compact .pulse-dot{width:9px;height:9px}
.driver-status-stack .badge{min-height:28px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:950;border:1px solid rgba(255,255,255,.16)}
.profile-mini-btn{
  position:absolute;
  top:10px;
  right:10px;
  width:30px;
  height:30px;
  display:grid;
  place-items:center;
  border:1px solid rgba(255,255,255,.18);
  background:rgba(255,255,255,.08);
  color:#fff;
}
.geo-status-compact{
  margin:6px 0 0!important;
  padding:7px 10px;
  background:#fff;
  border:1px solid #dbe3ef;
  color:#64748b;
  font-size:12px;
  line-height:1.25;
  font-weight:700;
}
.compact-date{margin-top:8px!important;grid-template-columns:42px 1fr 42px!important}
.compact-date .date-btn{min-height:42px!important}
.compact-date .date-current{min-height:42px!important;padding:7px 8px!important}
.compact-date .date-current span{font-size:11px!important}
.compact-date .date-current strong{font-size:16px!important}
.compact-toolbar{
  display:grid!important;
  grid-template-columns:repeat(4,1fr)!important;
  gap:6px!important;
  margin-top:8px!important;
}
.compact-toolbar .chip{
  min-height:42px!important;
  padding:8px 5px!important;
  font-size:11px!important;
  display:flex!important;
  flex-direction:column!important;
  gap:3px!important;
  justify-content:center!important;
  align-items:center!important;
  text-align:center!important;
}
.compact-toolbar .chip i{font-size:16px!important}
.compact-stats{
  display:grid!important;
  grid-template-columns:repeat(3,1fr)!important;
  gap:6px!important;
  margin-top:8px!important;
}
.compact-stats .stat{padding:8px 10px!important;min-height:auto!important}
.compact-stats .stat span{font-size:11px!important}
.compact-stats .stat strong{font-size:18px!important}
.compact-title{margin-top:12px!important;padding:0!important}
.compact-title h2{font-size:22px!important;margin:0!important}
.compact-title p{display:none!important}
.compact-map-panel{
  display:none!important;
  margin-top:8px!important;
}
.compact-map-panel.v124-map-open,
.compact-map-panel:not(.v37-map-collapsed).v124-map-open{
  display:block!important;
}
.compact-map-panel .map-head{padding:10px!important}
.compact-map-panel .map-head h2{font-size:17px!important}
.compact-map-panel .map-head p{font-size:12px!important}
.compact-map-panel #driverMap{height:260px!important}
.service-panel,.geo-strip{display:none!important}
@media(max-width:420px){
  .driver-compact-head{grid-template-columns:1fr;gap:8px;padding-right:42px}
  .driver-status-stack{grid-template-columns:1fr 1fr;min-width:0}
  .driver-identity h2{font-size:17px}
  .compact-toolbar .chip{font-size:10px!important}
}

/* Version service worker */
.lynk-sw-version-badge{display:none;margin-top:2px;font-size:10px;line-height:1.15;font-weight:800;color:rgba(100,116,139,.72);letter-spacing:.01em;white-space:nowrap;max-width:190px;overflow:hidden;text-overflow:ellipsis;}
body.lynk-auth-ok .lynk-sw-version-badge{display:block;}

@media(max-width:899px){.lynk-sw-version-badge{display:none!important;}}


/* V217 - état maintien écran chauffeur */
#wakeLockBadge{white-space:nowrap}
.wake-warning-badge{background:#fff7ed!important;color:#c2410c!important;border:1px solid #fdba74!important}
@media(max-width:560px){.driver-status-stack #wakeLockBadge{font-size:10px!important}}


/* V218 - Installation PWA + carte GPS stable */
.install-app-btn{min-width:106px;white-space:nowrap;background:#fff!important;border:1px solid #cbd5e1!important;color:#0f172a!important;box-shadow:3px 3px 0 rgba(15,23,42,.08)}
.install-app-btn i{font-size:16px}
.install-app-btn.is-installed{display:none!important}

.gps-status-card{
  margin:8px 0 0;
  height:68px;
  min-height:68px;
  max-height:68px;
  display:grid;
  grid-template-columns:42px minmax(0,1fr);
  align-items:center;
  gap:10px;
  padding:8px 10px;
  background:#fff;
  border:1px solid #dbe3ef;
  box-shadow:4px 4px 0 rgba(15,23,42,.05);
  overflow:hidden;
}
.gps-status-icon{width:38px;height:38px;display:grid;place-items:center;background:#eef4ff;color:#2563eb;border:1px solid #dbeafe;font-size:18px}
.gps-status-content{min-width:0;overflow:hidden}
.gps-status-label{display:block;margin:0 0 2px;color:#334155;font-size:10px;line-height:1.1;font-weight:950;text-transform:uppercase;letter-spacing:.08em}
.gps-status-card .geo-status-compact{
  margin:0!important;
  padding:0!important;
  height:32px;
  min-height:32px;
  max-height:32px;
  border:0!important;
  background:transparent!important;
  color:#64748b;
  font-size:12px;
  line-height:16px;
  font-weight:750;
  overflow:hidden;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}
.install-instructions{margin-top:12px;padding:12px;background:#f8fafc;border:1px solid #dbe3ef;color:#334155;font-size:14px;line-height:1.45}
.install-instructions p{margin:0 0 10px}.install-instructions p:last-child{margin-bottom:0}
.install-instructions .install-step{display:flex;gap:9px;align-items:flex-start;margin-top:9px;font-weight:800}
.install-instructions .install-step i{margin-top:1px;color:#2563eb;font-size:17px}
.install-modal-card .full{margin-top:12px}
@media(max-width:480px){
  .topbar{gap:8px}
  .brand{min-width:0;gap:8px}.brand-icon{width:36px;height:36px}.brand h1{font-size:18px}.brand p{font-size:11px}
  .install-app-btn{min-width:44px;width:44px;padding:0!important}.install-app-btn span{display:none}
  .gps-status-card{height:68px;min-height:68px;max-height:68px}
}


/* V220 - Horaires essentiels chauffeur uniquement */
.driver-essential-times{
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
}
.driver-essential-times .trip-schedule-item{
  min-height:72px;
}
.driver-essential-times .trip-schedule-item span{
  display:flex;align-items:center;gap:7px;
}
.driver-essential-times .trip-schedule-item strong{
  font-size:1.45rem;line-height:1.1;
}
.trip-time-sep{opacity:.5;margin:0 5px}
@media (max-width:560px){
  .driver-essential-times{grid-template-columns:1fr 1fr !important;}
  .driver-essential-times .trip-schedule-item{padding:10px;}
  .driver-essential-times .trip-schedule-item span{font-size:.72rem;}
  .driver-essential-times .trip-schedule-item strong{font-size:1.3rem;}
}


/* V256 - interface chauffeur allegee */
.bottom-nav{grid-template-columns:repeat(3,1fr)!important}
#geoStatus.hidden{display:none!important}
