html,body{overscroll-behavior-y:contain}[hidden]{display:none!important}
.status:empty{display:none}.topline{display:grid!important;grid-template-columns:40px 1fr 40px;align-items:center}.topline .logo{text-align:center;font-size:25px}.logo small{letter-spacing:.17em!important;font-size:9px!important}.brandSpacer{width:40px}
.tripChoice{padding:20px 15px 12px;background:#f7faff}.tripChoice h2{font-size:19px;margin:0 0 14px}.tripChoice p{font-size:13px;line-height:1.55;color:#52677d;margin:12px 0 0}.tripKindSwitch{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tripKindSwitch button{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:15px 12px;min-height:116px;background:white;border:1px solid #c9d9e9;border-radius:14px;color:#183751;text-align:left;font:inherit;cursor:pointer}.tripKindSwitch button>span{font-size:24px;color:#0875ed}.tripKindSwitch strong{font-size:14px}.tripKindSwitch small{font-size:12px;color:#52677d}.tripKindSwitch button[aria-pressed=true]{background:#eaf3ff;border:2px solid #0875ed;padding:14px 11px;box-shadow:0 3px 10px #0875ed12}.quick{margin:0!important;padding:12px 15px!important;background:#f7faff}.quick button[aria-pressed=true]{border:2px solid #0875ed!important;background:#eaf3ff}.homeHero .space{height:130px}.booking{border-radius:16px 16px 0 0!important}
.menuBrand{position:relative;text-align:center;padding:26px 50px 22px!important}.menuBrand img{object-fit:contain;margin-bottom:6px}.menuBrand .logo{text-align:center}.menuBrand p{font-size:13px;color:#b4cbe2;margin:14px 0 0}.menuBack{position:absolute;left:12px;top:22px;background:transparent!important;color:#fff!important}.menuTitle{font-size:21px;margin:20px}.profileRows button{min-height:54px!important}.profileRows button:focus-visible,.nav button:focus-visible{outline:3px solid #168bfa;outline-offset:-3px}
.driverHero .space{height:140px}.driverOverview{font-size:20px;font-weight:700;line-height:1.5;margin:10px 0 22px}.driverTiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}.driverTiles button{font:inherit;display:flex;align-items:flex-start;flex-direction:column;gap:9px;padding:18px 14px;border:1px solid #d6e3ef;border-radius:14px;background:#f7faff;color:#183751;text-align:left;min-height:140px;cursor:pointer}.driverTiles button>span{font-size:25px;color:#0875ed}.driverTiles strong{font-size:15px}.driverTiles small{font-size:12px;line-height:1.5;color:#52677d}.nav{padding-bottom:max(10px,env(safe-area-inset-bottom))!important}.accountBar small{overflow-wrap:anywhere}.app{padding-bottom:100px!important}
.refreshControl{display:flex;justify-content:flex-end;max-width:760px;margin:0 auto;background:#edf4fb;padding:5px 12px}.app>.refreshControl{max-width:440px}.refreshControl button{font:inherit;font-size:12px;padding:8px 10px;background:transparent;color:#315574;border:0;border-radius:8px;cursor:pointer}.refreshControl button:disabled{opacity:.7}.pullIndicator{position:fixed;z-index:1000;left:50%;top:16px;transform:translateX(-50%);max-width:calc(100% - 30px);border-radius:30px;padding:12px 18px;background:#112e48;color:white;box-shadow:0 4px 24px #00152c30;font-size:14px;text-align:center}.pullIndicator[data-state=error]{background:#8c3025}
.sharedNav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,760px);background:#fff;border-top:1px solid #d6e3ef;display:grid;grid-template-columns:repeat(4,1fr);z-index:20;padding:8px 4px max(10px,env(safe-area-inset-bottom));gap:3px}.sharedNav a{display:flex;flex-direction:column;align-items:center;gap:5px;text-decoration:none;color:#52677d;font-size:11px;min-height:44px;justify-content:center}.sharedNav a span{font-size:21px}.sharedNav a[aria-current=page]{color:#0875ed;font-weight:700}.shell{padding-bottom:110px!important}.brand{justify-content:center;text-align:center}.brand img{width:72px;height:54px}.brand small{letter-spacing:.08em}.topbar a{font-size:13px}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
@media print{.refreshControl,.pullIndicator,.sharedNav{display:none!important}.shell{padding-bottom:0!important}}

/* Navigation mobile client/chauffeur: six raccourcis visibles en deux rangées. */
.nav{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:1px!important;min-height:130px!important;padding:5px 6px max(9px,env(safe-area-inset-bottom))!important;align-items:stretch!important}
.nav button{min-width:0!important;min-height:56px!important;padding:5px 2px!important;font-size:11px!important;line-height:1.2!important}
.nav button span{font-size:19px!important;line-height:1.2!important;margin-bottom:3px}
.sharedNav{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:1px!important;padding:5px 6px max(9px,env(safe-area-inset-bottom))!important}
.sharedNav a{font-size:11px!important;min-height:55px!important;gap:3px!important;text-align:center}
.sharedNav a span{font-size:19px!important}
.app{padding-bottom:168px!important}.shell{padding-bottom:172px!important}
.quoteFeedback{border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.45;color:#225376;background:#eaf4ff;margin:8px 0}
.quoteFeedback[data-state=success]{background:#e7f8ed;color:#176b42}
.quoteFeedback[data-state=error]{background:#fff0ed;color:#8c2d22}
.returnArrow{display:inline-flex;justify-content:center;align-items:center;min-width:42px;min-height:44px;font-size:27px;font-weight:750;text-decoration:none!important;color:#113453!important}
@media(max-width:350px){.nav button,.sharedNav a{font-size:10px!important}}
@media print{.nav{display:none!important}}

/* Carte routière client, choix véhicule, immatriculation et GPS chauffeur. */
.routeRealMap{height:260px;border-radius:13px;border:1px solid #d6e2ed;margin:0 15px 17px;overflow:hidden;background:#edf3f8;z-index:0}
.routeRealMap .leaflet-container{background:#edf3f8}
.vehiclePicker{border:1px solid #cbdff3;background:#f2f8ff;border-radius:12px;padding:13px;margin:12px 0}
.vehiclePicker h3{margin:0 0 10px;font-size:17px}
.vehiclePicker .intro{margin:0 0 11px}
.vehicleSelectionStatus{font-size:12px;line-height:1.45;color:#3f617c;margin:8px 0 0}
.driverGpsLinks{display:flex;gap:7px;flex-wrap:wrap;margin:9px 0}
.driverGpsLinks a{font-size:12px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.confirmedVehicle{display:flex;align-items:center;gap:12px;background:#eef6ff;border:1px solid #c8dced;border-radius:12px;padding:12px;flex-wrap:wrap}
.confirmedVehicle img{width:95px;height:70px;object-fit:cover;border-radius:8px}
.confirmedVehicle strong{font-size:15px}
.confirmedVehicle p{font-size:12px;color:#315570;line-height:1.5;margin:5px 0}
.confirmedVehicle .plateDisplay{font-size:15px;font-weight:800;color:#0d2944;border:2px solid #14334b;border-radius:6px;padding:7px;background:white;letter-spacing:.04em;display:inline-block}
.confirmedVehicle .vehicleDisclaimer{font-size:11px}

/* Retour homogène, lisible et tactile sur toutes les pages secondaires. */
.pageHead .back,.menuBrand .menuBack{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;flex-shrink:0;cursor:pointer}
.returnArrow{min-width:44px!important;min-height:44px!important}
.pageHead .back:focus-visible,.menuBrand .menuBack:focus-visible,.returnArrow:focus-visible{outline:3px solid #168bfa;outline-offset:2px}

/* Accueils différenciés et séparés du parcours de réservation. */
.welcomeLanding{color:#fff;min-height:470px;background:
 linear-gradient(180deg,rgba(2,17,32,.7) 0%,rgba(5,25,46,.7) 42%,#061c33 100%),
 url('/g6-gris-paris.png') center/cover;padding:26px 20px 32px;display:flex;flex-direction:column}
.welcomeLanding .landingBody{margin-top:auto;padding-top:110px}
.landingEyebrow{font-size:11px;letter-spacing:.14em;font-weight:750;color:#b8dcff}
.welcomeLanding h1{font-size:30px;line-height:1.17;margin:14px 0;letter-spacing:-.03em}
.welcomeLanding p:not(.landingEyebrow){font-size:14px;line-height:1.65;color:#ecf5ff;max-width:385px}
.welcomeLanding .landingPrimary,.welcomeLanding .landingSecondary{width:100%;display:block;margin-top:12px}
.welcomeLanding .landingSecondary{background:rgba(255,255,255,.94)}
.welcomeFoot{background:#fff;border:1px solid #d9e7f3;border-radius:14px;margin:18px 15px;padding:20px 18px;color:#163553}
.welcomeFoot strong{font-size:16px}.welcomeFoot p{font-size:13px;color:#536d82;line-height:1.6;margin:9px 0 0}
.welcomeDriverText{border:1px solid #d6e4f1;border-radius:14px;padding:18px;background:#fff}
.welcomeDriverText h2{margin:0 0 10px;font-size:19px}.welcomeDriverText p{font-size:14px;color:#526b82;line-height:1.65;margin-bottom:19px}
.menuExtraTitle{font-weight:700;font-size:13px;color:#4c6378;margin:22px 20px 8px}
.mainMenuRows{margin-bottom:8px}
#booking .pageHead{position:relative;z-index:2}
@media(max-width:360px){.welcomeLanding h1{font-size:26px}.welcomeLanding{min-height:455px}}

/* Flèche Accueil constamment visible, même quand on fait défiler une rubrique. */
.app .screen > .pageHead{position:sticky;top:0;z-index:30;min-height:62px;background:#fff;border-bottom:1px solid #dce7f2;box-shadow:0 3px 12px #001c3320}
.app .screen > .pageHead h1{min-width:0;flex:1;line-height:1.25}
.app .screen > .pageHead .back{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:0 0 auto;width:auto;min-width:85px;min-height:44px;padding:7px 9px!important;border-radius:9px;background:#eff6ff;color:#0b3b68;font-size:24px;line-height:1}
.back .arrowGlyph,.returnArrow .arrowGlyph{font-size:29px;line-height:.8;font-weight:750;display:inline-block}
.back .backLabel,.returnArrow .backLabel{font:700 12px/1.2 Inter,system-ui,sans-serif;letter-spacing:0}
.app .screen > .pageHead .back:hover,.returnArrow:hover{background:#dcecff}
.app .screen > .pageHead .back:focus-visible,.returnArrow:focus-visible{outline:3px solid #168bfa;outline-offset:2px}
.shell > .topbar{position:sticky;top:0;z-index:35;background:#f7faff;min-height:58px;padding:7px 0 9px;border-bottom:1px solid #dce7f2;box-shadow:0 3px 12px #001c3310}
.shell > .topbar .returnArrow{display:inline-flex!important;align-items:center;justify-content:center;gap:6px;padding:7px 9px!important;min-width:86px!important;min-height:44px!important;border-radius:9px;background:#eff6ff;color:#0b3b68!important;white-space:nowrap}
.shell > .topbar .returnArrow .backLabel{font-size:12px}
@media(max-width:350px){.app .screen > .pageHead{gap:8px;padding-left:9px;padding-right:9px}.app .screen > .pageHead h1{font-size:17px}.shell > .topbar{gap:7px;font-size:12px}}
@media print{.shell > .topbar{position:static;box-shadow:none}}

/* Même espace visuel pour les pages autonomes et les écrans Client/Chauffeur. */
.shell{max-width:440px!important;min-height:100dvh;margin:0 auto;background:#f9fbfd;color:#0a1a2d;padding:0 0 172px!important;box-shadow:0 0 80px #0008}
.shell .workspaceBody{padding:16px 15px 30px}
.shell > .topbar.pageHead{position:sticky;top:0;z-index:35;display:flex;align-items:center;justify-content:flex-start;gap:14px;min-height:62px;margin:0;padding:10px 19px;background:#fff;border-bottom:1px solid #dce7f2;box-shadow:0 3px 12px #001c3320}
.shell > .topbar.pageHead h1{margin:0;font-size:19px;font-weight:750;letter-spacing:-.03em;line-height:1.25;color:#0a1a2d;min-width:0;flex:1}
.shell > .topbar.pageHead .returnArrow{min-width:85px!important;min-height:44px!important}
.shell .workspaceBody h2{font-size:20px;letter-spacing:-.03em;line-height:1.25;color:#0a1a2d}
.shell .workspaceBody p,.shell .workspaceBody label{line-height:1.5}
.shell .workspaceBody .muted,.shell .workspaceBody small{color:#52677d}
.shell .workspaceBody .card,.shell .workspaceBody .periodForm,.shell .workspaceBody .chartCard,.shell .workspaceBody .metric{border-color:#d6e3ef;border-radius:14px;background:#fff}
.shell .workspaceBody .card{padding:18px 15px}
.shell .workspaceBody .field input,.shell .workspaceBody .field select{border-color:#d5e0e9;border-radius:10px;font-size:14px}
.shell .workspaceBody .button{border-radius:10px}
.shell .workspaceBody .button.primary{background:#0875ed;color:#fff}
.shell .workspaceBody .message,.shell .workspaceBody .notice{font-size:13px}
.shell .workspaceBody .adminLabel{margin:4px 0 10px}
.sharedNav{width:min(100%,440px)!important}
.app .screen > .menuPageHead{min-height:62px}
@media(max-width:350px){.shell > .topbar.pageHead{gap:8px;padding:9px}.shell > .topbar.pageHead h1{font-size:17px}.shell .workspaceBody{padding-left:12px;padding-right:12px}}
@media print{.shell{max-width:none!important;min-height:0;box-shadow:none;background:white;padding:0!important}.shell .workspaceBody{padding:0}.shell > .topbar.pageHead{display:none!important}}

/* Même barre inférieure que les six rubriques natives, y compris Facturation/Statistiques/Entreprise. */
.sharedNav{background:#061b31!important;border-top:1px solid #294660!important;color:#bdcce0!important;min-height:130px!important;align-items:stretch!important;z-index:25!important}
.sharedNav a{background:transparent!important;color:#bdcce0!important;min-width:0!important;min-height:56px!important;padding:5px 2px!important;font-weight:400!important;line-height:1.2!important}
.sharedNav a span{color:inherit!important;display:block}
.sharedNav a[aria-current="page"]{color:#1687ff!important;font-weight:700!important}
.sharedNav a:focus-visible{outline:3px solid #168bfa;outline-offset:-3px}
@media(max-width:350px){.sharedNav a{font-size:10px!important}}

/* Statuts clairement identifiés : couleur ET libellé accessibles. */
.statusLegend{display:flex;flex-wrap:wrap;gap:7px;margin:3px 15px 12px}
.bookingStatusCard{border-left:5px solid var(--booking-border,#b5c7d9)!important;background:var(--booking-bg,#fff)!important}
.bookingTone-alert{--booking-border:#d12f3e;--booking-bg:#fff6f6}
.bookingTone-waiting{--booking-border:#d28a12;--booking-bg:#fffaf0}
.bookingTone-confirmed{--booking-border:#0875ed;--booking-bg:#f4f9ff}
.bookingTone-cancelled{--booking-border:#8c97a3;--booking-bg:#f4f5f6}
.bookingTone-completed{--booking-border:#218152;--booking-bg:#eff9f2}
.bookingTone-neutral{--booking-border:#b5c7d9;--booking-bg:#fff}
.bookingBadge{display:inline-block;width:fit-content;max-width:100%;border:1px solid transparent;border-radius:20px;padding:5px 10px;margin:0 0 10px;font-size:11px;font-weight:750;line-height:1.35;letter-spacing:0;text-align:left}
.badgeAlert{color:#9f1528;background:#ffe0e3;border-color:#f6bdc4}
.badgeWaiting{color:#81500a;background:#fff0cb;border-color:#f0d79f}
.badgeConfirmed{color:#094e9f;background:#e0eeff;border-color:#b8d7fb}
.badgeCancelled{color:#52606d;background:#e6e8eb;border-color:#ced5dc}
.badgeCompleted{color:#155c38;background:#d8f1df;border-color:#a9d9b7}
.badgeNeutral{color:#52677d;background:#eaf1f7;border-color:#d6e3ef}
.statusLegend .bookingBadge{margin:0}

/* Fin de course confirmée manuellement par le chauffeur. */
.completeBookingButton{margin-top:12px;min-height:48px}
.completeBookingButton:disabled{opacity:.6;cursor:wait}
.completedNotice{background:#eff9f2;border-left:4px solid #218152;border-radius:10px;padding:12px 14px;color:#155c38;font-weight:700;font-size:13px;line-height:1.5}
@media print{.completeBookingButton{display:none!important}}

/* Course démarrée par le chauffeur; étape distincte de la réalisation. */
.bookingTone-inprogress{--booking-border:#d47812;--booking-bg:#fff8ee}
.badgeInprogress{color:#844900;background:#ffeed1;border-color:#ebc587}
.startBookingButton{margin-top:12px;min-height:48px}
.startedNotice{background:#fff4e2;border-left:4px solid #d47812;border-radius:10px;padding:12px 14px;color:#71420b;font-weight:700;font-size:13px;line-height:1.5}
@media print{.startBookingButton{display:none!important}}

/* Accord explicite à chaque tarif proposé manuellement. */
.quoteTerms{display:flex;gap:10px;align-items:flex-start;margin:12px 0;padding:12px;border-radius:10px;background:#f2f7ff;border:1px solid #ccdfed;color:#274663;font-size:12px;line-height:1.6}
.quoteTerms input{width:20px;height:20px;flex-shrink:0;margin-top:2px}

/* Cartographie résiliente : tracé réel simplifié si les tuiles OSM sont indisponibles. */
.routeBanner.routeSketchActive{height:260px;background:linear-gradient(145deg,#e6f3ff,#f3f8fe)}
.routeBanner.routeSketchActive::before{display:none}
.routeBanner.routeSketchActive .routeSketch{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.routeBanner.routeSketchActive .routeSketchCaption{position:absolute;bottom:8px;left:8px;right:8px;text-align:center;background:rgba(255,255,255,.92);border-radius:5px;padding:4px;font-size:10px;font-weight:600;color:#435e77}
.routeBanner.routeSketchActive #mapFrom,.routeBanner.routeSketchActive #mapTo{max-width:48%;overflow-wrap:anywhere;z-index:1}
.routeBanner.routeSketchActive #mapFrom{top:8px;left:8px}
.routeBanner.routeSketchActive #mapTo{bottom:34px;right:8px}


/* Styles cartographiques locaux de secours. La carte reste correctement positionnée
   même si la feuille Leaflet distante ne se télécharge pas sur le téléphone. */
#routeRealMap.leaflet-container{position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}
#routeRealMap .leaflet-pane,
#routeRealMap .leaflet-tile,
#routeRealMap .leaflet-marker-icon,
#routeRealMap .leaflet-marker-shadow,
#routeRealMap .leaflet-tile-container,
#routeRealMap .leaflet-pane>svg,
#routeRealMap .leaflet-pane>canvas,
#routeRealMap .leaflet-zoom-box,
#routeRealMap .leaflet-image-layer,
#routeRealMap .leaflet-layer{position:absolute;left:0;top:0}
#routeRealMap .leaflet-tile,
#routeRealMap .leaflet-marker-icon,
#routeRealMap .leaflet-marker-shadow,
#routeRealMap .leaflet-image-layer{max-width:none!important;max-height:none!important;user-select:none;-webkit-user-select:none}
#routeRealMap .leaflet-tile{visibility:hidden}
#routeRealMap .leaflet-tile-loaded{visibility:inherit}
#routeRealMap .leaflet-tile-pane{z-index:200}
#routeRealMap .leaflet-overlay-pane{z-index:400}
#routeRealMap .leaflet-shadow-pane{z-index:500}
#routeRealMap .leaflet-marker-pane{z-index:600}
#routeRealMap .leaflet-tooltip-pane{z-index:650}
#routeRealMap .leaflet-popup-pane{z-index:700}
#routeRealMap .leaflet-map-pane canvas{z-index:100}
#routeRealMap .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}
#routeRealMap .leaflet-zoom-animated{transform-origin:0 0}
#routeRealMap .leaflet-top,
#routeRealMap .leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}
#routeRealMap .leaflet-top{top:0}
#routeRealMap .leaflet-bottom{bottom:0}
#routeRealMap .leaflet-left{left:0}
#routeRealMap .leaflet-right{right:0}
#routeRealMap .leaflet-control{position:relative;z-index:800;pointer-events:auto;margin:8px}
#routeRealMap .leaflet-control-zoom{box-shadow:0 1px 5px #0003;border-radius:4px;overflow:hidden}
#routeRealMap .leaflet-control-zoom a{display:block;width:29px;height:29px;line-height:28px;background:#fff;color:#234;text-align:center;text-decoration:none;font-size:19px;font-weight:700}
#routeRealMap .leaflet-control-zoom a+a{border-top:1px solid #ddd}
#routeRealMap .leaflet-control-attribution{font:10px/1.4 Arial,sans-serif;background:#ffffffe6;padding:1px 5px;color:#333}
#routeRealMap .leaflet-control-attribution a{color:#0563b3}
#routeRealMap .leaflet-container .leaflet-control{float:none}
#routeFallback.routeSketchActive .pin{display:none}
