@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&display=swap');
:root{font-family:'DM Sans',system-ui,-apple-system,Segoe UI,sans-serif;color:#102846;background:#eef3fb;font-synthesis:none;font-size:14px;--tp-blue-900:#061e45;--tp-blue-850:#082b61;--tp-blue-800:#0d397d;--tp-blue-700:#1451a3;--tp-blue-600:#1764c7;--tp-blue-500:#1f7ded;--tp-blue-100:#e8f1ff;--tp-surface:#ffffff;--tp-border:#d7e3f0;--tp-text:#102846;--tp-muted:#6c7f95}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}h1,h2,h3,p{margin-top:0}a{color:#1369d7}.app-shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr}.side{background:linear-gradient(180deg,var(--tp-blue-900),var(--tp-blue-850) 55%,var(--tp-blue-800));color:#eff6ff;padding:24px 16px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;font-size:25px;font-weight:800;padding:2px 8px 29px}.logomark{background:#237ce8;color:white;width:39px;height:39px;display:inline-grid;place-items:center;border-radius:12px;font-size:26px;font-weight:800;box-shadow:0 7px 15px #071c3c22}.side-label{color:#a9cee9;text-transform:uppercase;font-size:10px;font-weight:800;letter-spacing:1.7px;margin:20px 11px 8px}.nav{padding:12px 13px;width:100%;text-align:left;background:transparent;color:#d7ebff;border:0;border-radius:11px;font-weight:650;margin:2px 0}.nav.active,.nav:hover{background:#ffffff23;color:white}.side-foot{margin-top:auto;padding:18px 10px;font-size:12px;color:#c1dcf2}.side-foot button{display:block;margin-top:12px;border:1px solid rgba(255,255,255,.24);background:rgba(255,255,255,.06);color:white;border-radius:9px;padding:8px 14px;width:100%}.content{padding:24px max(22px,3vw) 60px;min-width:0}.top{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:26px}.top h1{font-size:25px;margin-bottom:4px;letter-spacing:-.5px}.muted{color:#70869b}.top-right{display:flex;align-items:center;gap:12px}.pill{padding:7px 12px;background:#dfeaff;color:var(--tp-blue-850);border-radius:99px;font-size:12px;font-weight:800}.avatar{background:#dbe7fb;color:var(--tp-blue-850);width:39px;height:39px;border-radius:50%;display:grid;place-items:center;font-weight:800}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.metric{background:white;border:1px solid #e5ebf3;box-shadow:0 5px 20px #104ca206;border-radius:15px;padding:21px}.metric .number{font-size:27px;font-weight:800;line-height:1.3}.metric .label{font-size:13px;color:#6b859e}.panel{background:white;border:1px solid #e4ebf3;border-radius:16px;padding:21px;margin-top:18px;box-shadow:0 6px 22px #194b8006}.panel h2{font-size:17px;margin-bottom:15px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:13px}.toolbar h2{margin:0}.btn{border:1px solid var(--tp-border);border-radius:10px;padding:10px 15px;font-weight:750;background:white;color:var(--tp-blue-800);white-space:nowrap}.btn.primary{background:linear-gradient(180deg,var(--tp-blue-800),var(--tp-blue-700));color:white;border-color:var(--tp-blue-800)}.btn.danger{color:#bb3a3a}.btn.small{padding:7px 10px;font-size:12px}.btn:hover{filter:brightness(.96)}.row-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}table{width:100%;border-collapse:collapse;min-width:650px}th{text-align:left;color:#708ba4;font-size:11px;text-transform:uppercase;letter-spacing:.5px;font-weight:800;padding:13px 9px;border-bottom:1px solid #e7edf5}td{padding:13px 9px;border-bottom:1px solid #edf1f6;vertical-align:middle}tr:last-child td{border-bottom:0}.table-wrap{width:100%;overflow-x:auto}.empty{padding:35px 15px;text-align:center;color:#71879c;border:1px dashed #d4e2f0;border-radius:12px;margin-top:16px}.status{border-radius:30px;background:#e6eefb;color:#3a6fa9;padding:5px 9px;font-size:11px;font-weight:800;white-space:nowrap}.status.approved,.status.paid,.status.completed{background:#e4f7ea;color:#147e43}.status.rejected,.status.cancelled{background:#fde9e9;color:#ad3838}.status.submitted,.status.pending{background:#fff3d6;color:#976a0a}.forms{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.field{display:flex;flex-direction:column;gap:6px;font-weight:700;color:#456078;font-size:12px}.field.full{grid-column:1/-1}.field input,.field select,.field textarea,input,select,textarea{border:1px solid #d8e4f1;background:white;color:#193450;border-radius:9px;padding:10px 11px;min-width:0;outline-color:#237ce8}.field textarea{min-height:70px;resize:vertical}.form-actions{grid-column:1/-1;display:flex;gap:10px;justify-content:flex-end}.inline-form{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.inline-form input,.inline-form select{min-width:180px;flex:1}.authpage{display:grid;place-items:center;min-height:100vh;background:radial-gradient(circle at 50% 5%,rgba(49,117,219,.24) 0,transparent 28%),linear-gradient(160deg,#e9f0fb 0%,#dfe8f6 42%,#eef3fb 100%)}.authcard{background:white;border:1px solid #d9e3f0;border-radius:22px;width:min(420px,92vw);padding:35px;box-shadow:0 24px 60px rgba(7,31,73,.14)}.authcard h1{font-size:27px;margin-top:15px;margin-bottom:8px}.authcard form{display:grid;gap:16px;margin-top:23px}.authcard .btn{width:100%}.authcard .mark{display:flex;align-items:center;gap:10px;color:var(--tp-blue-850);font-weight:800;font-size:19px}.notice{background:#e8f3ff;border:1px solid #cfe4fa;color:#235985;padding:13px 16px;border-radius:11px;margin:14px 0}.notice.error{background:#fff0ee;color:#ae3c31;border-color:#ffd2cc}.notice.success{background:#e8f8ee;color:#20683e;border-color:#bce8cd}.splash{margin:15vh auto;display:flex;gap:12px;align-items:center;justify-content:center;font-weight:700;color:var(--tp-blue-850)}.dialog-backdrop{position:fixed;inset:0;background:#071c3b77;display:grid;place-items:center;z-index:20;padding:18px}.dialog{background:white;width:min(670px,95vw);max-height:90vh;overflow-y:auto;padding:25px;border-radius:18px;box-shadow:0 22px 90px #08193855}.dialog h2{margin-bottom:6px}.dialog-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:19px}.section-note{margin:4px 0 18px;font-size:13px;color:#7c93a7}.readonly{color:#8a9aab}.spaced{margin-top:20px}.right{text-align:right}.tiny{font-size:12px}.filters{display:flex;gap:10px;flex-wrap:wrap}.filters input,.filters select{width:auto}.logo-title{font-weight:800}.mobile-top{display:none}
@media(max-width:1080px){.grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:750px){.app-shell{display:block}.side{height:auto;position:static;padding:12px;display:block}.brand{padding:0 4px 8px}.side-label,.side-foot{display:none}.nav{display:inline-block;width:auto;padding:9px 12px;font-size:12px;margin:3px}.content{padding:20px 14px}.top{align-items:flex-start}.top h1{font-size:22px}.grid{grid-template-columns:repeat(2,1fr);gap:8px}.metric{padding:14px}.metric .number{font-size:22px}.forms{grid-template-columns:1fr}.field.full,.form-actions{grid-column:auto}.panel{padding:14px}.top-right .avatar{display:none}}

.driver-tools{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:12px 0 18px}.driver-tools .field{min-width:290px;max-width:500px;flex:1}.driver-tools input{width:100%}input[type="checkbox"]{min-width:18px;min-height:18px;accent-color:var(--tp-blue-800);cursor:pointer}input[type="checkbox"]:disabled{cursor:not-allowed}
.driver-select-label{display:inline-flex;gap:8px;align-items:center;font-size:12px;font-weight:650;color:#345c82;white-space:nowrap}

/* Official brand asset, identical throughout planner, driver portal, login and loading. */
.brand-logo{display:block;width:100%;height:auto;object-fit:contain;filter:drop-shadow(0 7px 14px rgba(3,36,73,.15))}
.brand-logo-sidebar{width:min(204px,100%);max-height:230px;object-fit:contain}
.brand-logo-auth{width:min(242px,100%);max-height:265px;object-fit:contain;margin:auto}
.brand-logo-splash{width:180px;max-width:65vw}
.side .brand{padding:0 10px 18px;justify-content:center}
.authcard .mark{display:flex;justify-content:center;width:100%}
.splash{flex-direction:column;text-align:center;gap:6px;margin-top:11vh}
@media(max-width:750px){.brand-logo-sidebar{width:145px;max-height:160px}.side .brand{justify-content:flex-start;padding:0 8px 10px}.brand-logo-auth{max-width:215px}}


/* Donkerblauwe merkupdate */
.top h1{color:var(--tp-blue-900)}
.top .muted,.muted{color:var(--tp-muted)}
a{color:var(--tp-blue-700)}
.nav.active,.nav:hover{background:rgba(255,255,255,.12);color:white;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.panel{box-shadow:0 8px 22px rgba(7,31,73,.05)}
.metric{box-shadow:0 8px 22px rgba(7,31,73,.05)}
.field input,.field select,.field textarea,input,select,textarea{outline-color:var(--tp-blue-700)}
.notice{background:#e9f2ff;border-color:#d7e7ff;color:#1f497e}
.notice.success{background:#ebf7ef;color:#1f6840;border-color:#caead6}
.notice.error{background:#fff1ef;color:#b13f34;border-color:#ffd7d1}

.totp-setup{text-align:center;margin:16px auto}.totp-qr{width:220px;height:220px;max-width:100%;background:#fff;padding:7px;border:1px solid #dae4f2;border-radius:12px}.authcard #mfa-form{display:grid;gap:15px;margin-top:18px}

/* Platformbeheer in de vaste donkerblauwe TuitiPlan-huisstijl */
.platform-company-panel .btn{margin-left:6px}.side .nav{transition:background-color .13s ease}.side-foot .btn{width:100%}.top-right{white-space:nowrap}

.forgot-password-link{margin-top:13px;border:0;background:transparent;padding:9px 5px;color:#0d397d;text-decoration:underline;font-weight:700;width:100%}.forgot-password-link:hover{color:#1764c7}

/* TuitiPlan Company Workspace v2 */
.onboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:15px}
.onboard-step{display:flex;flex-direction:column;gap:7px;text-align:left;padding:17px;background:#eef4fc;color:#123566;border:1px solid #d4e3f6;border-radius:13px}
.onboard-step strong{font-size:14px}.onboard-step span{font-size:12px;color:#597697;line-height:1.5}
.onboard-step:hover{background:#e1edff;border-color:#b3cbee}
.planning-types{margin-bottom:12px}.planning-types .btn{min-width:115px}
.hours-filter-label{min-width:165px}.hours-filter-label select{width:100%}
#planning-date,#overview-date{min-width:170px;min-height:39px;border:1px solid #cfdcec;border-radius:10px;background:white;color:#123566;padding:6px 9px}
@media(max-width:750px){.onboard-grid{grid-template-columns:1fr}.planning-types{flex-wrap:wrap}.planning-types .btn{min-width:0}.hours-filter-label{min-width:140px}}

/* ILT 2026 pricing calculator */
.fare-panel{grid-column:1/-1;background:linear-gradient(150deg,#f0f6ff,#f9fbff);padding:16px;border-radius:15px;border:1px solid #d5e5f8;margin:3px 0 12px}
.fare-panel h3{color:#082b61;margin:0 0 6px;font-size:16px}
.fare-panel>p{color:#59718d;font-size:12px;line-height:1.55;margin:0 0 16px}
.fare-panel .forms{grid-template-columns:repeat(2,minmax(0,1fr))}
.fare-hint{font-size:12px;color:#6b7f98;margin:-5px 0 2px}
.fare-fields-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:end}
.fare-route-button{align-self:end;padding-bottom:0}
.fare-route-button .btn{width:100%;height:42px;white-space:normal;color:#0b4387;font-size:14px;line-height:1.15;padding:8px 12px}
.fare-route-note{font-size:12px;color:#547398;line-height:1.5;margin:10px 0 4px}
.fare-preview{background:#fff;border:1px solid #bfd6f5;border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:6px;color:#25466d}
.fare-preview strong{color:#082b61;font-size:18px}
.fare-preview span{font-size:12px;line-height:1.4}
.fare-preview small{font-size:11px;color:#6b8096;line-height:1.4}
.fare-panel input[readonly]{background:#e8f0fd;color:#082b61;font-weight:800;cursor:default}
#taxi-estimate-fields[hidden]{display:none}
.dialog:has(.fare-panel){width:min(800px,95vw)}
@media(max-width:620px){.fare-panel .forms,.fare-fields-grid{grid-template-columns:1fr}}

.fare-depot{margin:13px 0;padding:12px 14px;background:#e9f2ff;border:1px solid #d2e3f8;border-radius:12px;color:#15385d;line-height:1.7}.fare-depot span{font-size:12px;color:#42607d}.dispatch-panel .toolbar p{margin-bottom:0}.dispatch-panel{border-left:4px solid #154a94}

/* TuitiPlan: full approach route and optional customer discount */
.fare-approach-fields,.fare-discount-fields{grid-column:1/-1;padding:13px 14px;border:1px solid #d6e5f7;background:#edf4fe;border-radius:10px;display:grid;gap:8px}
.fare-discount-fields{background:#f8fafd}
.fare-approach-fields[hidden],.fare-discount-fields[hidden]{display:none}
.fare-approach-fields strong{color:#0b326c}
.fare-approach-fields .fare-fields-grid{margin-top:4px}
.fare-preview small{line-height:1.55}


/* Chauffeursapp: speciaal ontworpen voor small-screen gebruik; bedrijfsplanner ongewijzigd */
.driver-mini-brand{display:none}
.driver-dashboard{max-width:1080px;margin:0 auto}
.driver-overview{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 18px}
.driver-overview h2{font-size:22px;color:#092b5d;margin:4px 0 5px;letter-spacing:-.4px}
.driver-overview p{margin:0;font-size:13px;line-height:1.55}
.driver-overline{font-size:10px;text-transform:uppercase;letter-spacing:1.6px;font-weight:800;color:#5579a7}
.driver-count{background:#e5eefc;min-width:116px;padding:12px;border-radius:14px;text-align:center;color:#0b3d85;display:grid;gap:1px}
.driver-count strong{font-size:25px;line-height:1.2}.driver-count span{font-size:11px;font-weight:700}
.driver-rides-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.driver-ride-card,.driver-hour-card{background:#fff;border-radius:17px;border:1px solid #dce7f5;box-shadow:0 7px 24px rgba(12,44,89,.055);padding:18px;min-width:0}
.driver-ride-head,.driver-hour-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:15px;border-bottom:1px solid #e8eef7}
.driver-ride-date{display:flex;flex-direction:column;gap:4px}
.driver-ride-day{font-size:12px;color:#63809e;text-transform:capitalize;font-weight:700}
.driver-ride-time{font-size:28px;color:#082b61;line-height:1;font-variant-numeric:tabular-nums}
.driver-ride-head .status,.driver-hour-head .status{font-size:11px;flex-shrink:0}
.driver-ride-person{display:flex;gap:11px;align-items:center;padding:16px 0 12px}
.driver-ride-avatar{flex:0 0 38px;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#e7f0ff;color:#0d458d;font-size:21px;font-weight:900}
.driver-ride-person h3{font-size:17px;line-height:1.25;color:#0b294e;margin:2px 0 4px;overflow-wrap:anywhere}
.driver-label{color:#65829f;font-size:11px;font-weight:750;letter-spacing:.25px;display:block}
.driver-ride-meta{font-size:11px;color:#67819f}
.driver-route{position:relative;background:#f2f6fc;border-radius:13px;padding:14px 15px;display:grid;gap:16px}
.driver-route::before{content:'';position:absolute;left:24px;top:26px;bottom:32px;border-left:2px dashed #9ebce2}
.driver-route-place{display:flex;align-items:flex-start;gap:13px;position:relative;min-width:0}
.driver-route-dot{flex:0 0 9px;width:9px;height:9px;margin:4px 1px 0;border-radius:50%;box-shadow:0 0 0 3px #f2f6fc;z-index:1}
.driver-route-dot.pickup{background:#1675d9}.driver-route-dot.destination{background:#0e9b81}
.driver-route-place>div{min-width:0}.driver-route-place p{margin:3px 0 0;font-size:14px;color:#193858;font-weight:700;line-height:1.45;overflow-wrap:anywhere}
.driver-ride-note{margin:11px 0 0;padding:10px 12px;border-radius:10px;background:#fff8eb;font-size:12px;line-height:1.5;color:#725127;overflow-wrap:anywhere}
.driver-ride-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}
.driver-nav-link{display:inline-flex;align-items:center;justify-content:center;min-height:41px;padding:9px 13px;border-radius:10px;text-align:center;text-decoration:none;font-size:12px;font-weight:800;background:#124c99;color:#fff;flex:1 1 170px}
.driver-nav-link:visited{color:#fff}.driver-nav-link.secondary{background:#e8f0fc;color:#124c99}
.driver-nav-link.secondary:visited{color:#124c99}
.driver-help-note{font-size:11px;line-height:1.5;color:#6d849e;margin:15px 2px}
.driver-empty{display:grid;justify-items:center;text-align:center;gap:9px;background:#fff;border:1px dashed #c5d6e9;padding:30px 20px;border-radius:16px;color:#123969}
.driver-empty>span{font-size:29px;color:#7399c6}.driver-empty strong{font-size:16px}.driver-empty p{color:#72869f;font-size:13px;line-height:1.5;max-width:320px;margin:0}
.driver-hours-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.driver-hour-head{align-items:center;padding-bottom:11px}.driver-hour-head strong{text-transform:capitalize;font-size:14px;color:#123e72}
.driver-hour-body{display:flex;justify-content:space-between;gap:12px;padding:14px 0 8px}
.driver-hour-body p{margin:4px 0;font-weight:700;font-size:15px}.driver-hour-body strong{display:block;font-size:18px;margin-top:4px;color:#0c3976;white-space:nowrap}
.driver-hour-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#72849a;font-size:12px;min-height:29px}
@media(max-width:870px){.driver-rides-grid,.driver-hours-list{grid-template-columns:1fr}}
@media(max-width:750px){
  .driver-portal{display:block;background:#f0f4fb;min-height:100dvh}
  .driver-portal .side{position:static;height:auto;display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:calc(env(safe-area-inset-top,0px) + 12px) 15px 13px;background:linear-gradient(150deg,#071d45,#0d397b)}
  .driver-portal .side .brand,.driver-portal .side .side-label,.driver-portal .side .side-foot{display:none}
  .driver-portal .side .driver-mini-brand{display:flex;align-items:center;gap:9px;min-height:38px;color:#fff;padding:0 3px}
  .driver-mini-brand img{width:35px;height:35px;object-fit:contain}
  .driver-mini-brand strong{font-size:18px;font-weight:850;letter-spacing:-.3px}
  .driver-mini-logout{margin-left:auto;border:1px solid #ffffff4d;background:#ffffff16;border-radius:9px;padding:8px 10px;color:white;font-size:12px;font-weight:750;min-height:36px}
  .driver-portal .side-navigation{display:flex;gap:8px;width:100%}
  .driver-portal .side .nav{flex:1;display:flex;justify-content:center;align-items:center;gap:3px;min-width:0;padding:11px 8px;border-radius:11px;font-size:13px;margin:0;line-height:1.15}
  .driver-portal .side .nav.active{background:#ffffff27;border:1px solid #ffffff22}
  .driver-portal .content{padding:17px 14px calc(env(safe-area-inset-bottom,0px) + 42px);max-width:100vw;min-width:0}
  .driver-portal .top{margin:0 0 19px;gap:9px;align-items:center}
  .driver-portal .top h1{font-size:23px;line-height:1.15;margin:0 0 6px}
  .driver-portal .top p{font-size:12px;line-height:1.5;margin:0;max-width:calc(100vw - 120px);overflow-wrap:anywhere}
  .driver-portal .top-right{flex:0 0 auto}
  .driver-portal .top-right .pill{font-size:11px;padding:7px 10px}
  .driver-portal .top-right .avatar{display:none}
  .driver-overview{margin:1px 0 12px;gap:12px;align-items:center}
  .driver-overview h2{font-size:17px;line-height:1.25}
  .driver-overview .muted{display:none}
  .driver-overline{font-size:9px;letter-spacing:1px}
  .driver-count{min-width:84px;padding:9px 7px;border-radius:12px}
  .driver-count strong{font-size:20px}.driver-count span{font-size:10px}
  .driver-rides-grid,.driver-hours-list{grid-template-columns:1fr;gap:12px}
  .driver-ride-card,.driver-hour-card{padding:15px;border-radius:14px}
  .driver-ride-time{font-size:26px}
  .driver-ride-person h3{font-size:16px}
  .driver-route-place p{font-size:13.5px}
  .driver-ride-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}
  .driver-nav-link{font-size:11px;padding:10px 7px;min-width:0;min-height:43px;flex:initial}
  .driver-portal .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .driver-portal .metric{padding:13px;border-radius:12px}
  .driver-portal .metric .number{font-size:19px;overflow-wrap:anywhere}
  .driver-portal .metric .label{font-size:11px}
  .driver-portal .panel{padding:14px;border-radius:14px}
  .driver-portal .panel .toolbar{align-items:flex-start;gap:10px}
  .driver-portal .panel .toolbar h2{font-size:16px}
  .driver-portal .panel .toolbar .row-actions{width:100%;justify-content:space-between}
  .driver-portal .panel .hours-filter-label{flex:1 1 140px;min-width:0}
  .driver-portal .panel .hours-filter-label select{min-height:43px}
  .driver-portal .panel .row-actions>.btn{min-height:43px;white-space:normal}
  .driver-portal .dialog{width:min(480px,98vw);max-height:calc(100dvh - 20px);padding:19px}
}
@media(max-width:360px){.driver-ride-actions{grid-template-columns:1fr}.driver-portal .top-right .pill{font-size:10px}}

/* Herstelde chauffeursfuncties: grote iPhone-vriendelijke knoppen */
.driver-service-panel{background:#fff;border:1px solid #cbdcf1;border-radius:16px;padding:18px;margin-bottom:17px;box-shadow:0 6px 22px #082b6110}
.driver-service-heading{display:flex;align-items:start;justify-content:space-between;gap:10px}
.driver-service-heading h2{font-size:20px;color:#062757;margin:5px 0}
.driver-service-heading p,.driver-service-footnote{font-size:12px;color:#57728e;line-height:1.5;margin:5px 0 13px}
.driver-service-controls{display:flex;align-items:end;gap:10px;margin-top:12px}
.driver-service-controls .driver-vehicle-field{flex:1 1 160px;min-width:0}
.driver-vehicle-field select{min-height:43px;width:100%}
.driver-service-controls>.btn{min-height:43px;white-space:normal}
.driver-service-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:13px}
.driver-service-actions .btn{min-height:46px;padding:8px;font-size:12px;white-space:normal}
.driver-service-footer{margin:13px 0 0;display:flex}
.driver-service-footer .btn{min-height:45px;width:100%;white-space:normal}
.driver-ride-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}
.driver-ride-controls .btn{min-height:45px;padding:10px 8px;white-space:normal;line-height:1.25;font-size:12px}
.driver-ride-controls .btn.primary{font-size:13px}
.driver-ride-controls .btn:disabled{opacity:.48}
.driver-action-hint{font-size:11px;color:#607e9e;line-height:1.5;margin:8px 1px 0}
.driver-finished{padding:10px;border-radius:9px;background:#e3f5e9;color:#176339;font-weight:750;font-size:12px;grid-column:1/-1}
.driver-alert{border:1px solid #d5e3f4;border-radius:10px;padding:14px;margin:12px 0}
.driver-alert p:last-child{margin:0}
@media(max-width:750px){
 .driver-service-panel{padding:14px;margin-bottom:12px}
 .driver-service-heading h2{font-size:18px}
 .driver-service-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
 .driver-service-controls .btn{max-width:134px}
 .driver-service-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
 .driver-ride-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
 .driver-ride-controls .btn{font-size:12px;min-height:45px}
}
@media(max-width:355px){.driver-service-controls{grid-template-columns:1fr}.driver-service-controls .btn{max-width:none}.driver-ride-controls{grid-template-columns:1fr}}

.driver-nav-link.disabled{background:#f3f6fa;color:#6a8098;cursor:not-allowed;border:1px solid #e1e9f3}

/* Duidelijk telefoonnummer op iedere toegewezen mobiele rit, met directe belknop. */
.driver-ride-phone{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px;padding:12px 13px;border:1px solid #c4daf4;border-radius:12px;background:#edf5ff;min-width:0}
.driver-ride-phone>div{display:flex;flex-direction:column;min-width:0;gap:4px}
.driver-ride-phone strong{font-size:17px;color:#072e68;overflow-wrap:anywhere;line-height:1.3}
.driver-call-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:0 0 auto;min-width:106px;min-height:46px;padding:10px 14px;border-radius:11px;background:#0b488e;color:#fff;font-weight:800;font-size:14px;text-decoration:none;text-align:center}
.driver-call-button:visited{color:#fff}.driver-call-button:focus-visible{outline:3px solid #72b8ff;outline-offset:2px}
.driver-ride-phone.missing{background:#f5f7fa;border-color:#dce4ee}
.driver-phone-missing{color:#667b94;line-height:1.4;font-size:12px}
@media(max-width:400px){.driver-ride-phone{padding:10px;gap:8px}.driver-ride-phone strong{font-size:15px}.driver-call-button{min-width:96px;padding:9px 11px}}

/* Gescheiden actieve ritten en afgehandelde historie – iPhone, Android en desktop. */
.driver-rides-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:5px 0 17px}
.driver-rides-tab{display:flex;align-items:center;justify-content:center;gap:9px;min-width:0;min-height:46px;padding:10px 12px;border:1px solid #cbdcf2;background:#fff;color:#163b6e;border-radius:11px;font-size:13px;font-weight:800;white-space:normal;text-align:center;line-height:1.3}
.driver-rides-tab.active{background:#104889;color:#fff;border-color:#104889}
.driver-rides-tab span{display:inline-grid;place-items:center;min-width:24px;height:23px;padding:0 6px;border-radius:999px;background:#e3edff;color:#133c77;font-size:12px;font-weight:850}
.driver-rides-tab.active span{background:#ffffff25;color:#fff}
.driver-rides-tab:focus-visible{outline:3px solid #53a0ff;outline-offset:2px}
.driver-rides-tab:hover{filter:brightness(.96)}
@media(max-width:390px){.driver-rides-tabs{gap:7px}.driver-rides-tab{font-size:12px;padding:9px 7px;gap:6px}}

/* Live voertuigkaart en chauffeurs GPS-toestemming */
.live-summary{display:flex;gap:16px;flex-wrap:wrap;padding:12px 2px;color:#314d73}.live-alert-count{color:#ab4c10;font-weight:750}
.live-layout{display:grid;grid-template-columns:minmax(230px,300px) 1fr;min-height:480px;gap:14px;margin:18px 0}
.live-vehicles{max-height:560px;overflow-y:auto;display:flex;flex-direction:column;gap:9px;min-width:0}
.live-driver-card{padding:12px;border:1px solid #dce5f3;background:#fff;border-radius:12px;display:grid;gap:8px}
.live-driver-card.standstill{border-color:#f4ac4c;background:#fff8eb}
.live-driver-card a{font-weight:700;color:#184f98;display:inline-block;margin:4px 12px 0 0}
.live-row{display:flex;gap:10px;justify-content:space-between;align-items:flex-start}.live-row>div{display:flex;flex-direction:column}
.live-map-wrap{position:relative;background:#e9f0f7;min-height:470px;border:1px solid #dce5f3;border-radius:14px;overflow:hidden}
#tuitiplan-live-map{height:480px;width:100%}.live-map-wrap>p{margin:8px;padding:8px}
.live-pin{background:#0a64b8;border:3px solid white;color:white;border-radius:50%;width:28px;height:28px;display:grid;place-items:center;font-size:12px;box-shadow:0 2px 8px #1234}
.live-pin.warning{background:#c44b11}.live-pin.paused{background:#6b7b91}
.driver-gps-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:16px;background:#ecf3fd;border:1px solid #d7e6f7;border-radius:14px;padding:14px}
.driver-gps-controls #driver-gps-status{color:#335779;font-size:13px}
@media(max-width:950px){.live-layout{grid-template-columns:1fr}.live-vehicles{max-height:350px}.live-map-wrap,#tuitiplan-live-map{min-height:360px;height:360px}}
@media(max-width:500px){.live-row{flex-wrap:wrap}.live-driver-card{font-size:13px}.driver-gps-controls .btn{min-width:0;width:100%}}

/* SMART DAYCARE DRAFT PLANNER; scoped to avoid existing layout changes. */
.planner-main{overflow:visible}.planner-settings{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:12px;margin-top:18px}
.planner-field{display:grid;gap:7px;font-size:13px;color:#5f7698;font-weight:750}.planner-field select,.planner-field input{height:44px;width:100%;min-width:0;box-sizing:border-box;border-radius:10px;border:1px solid #cedcf1;padding:9px 11px;background:#f6f9ff;color:#133360;font:inherit}
.planner-summary{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.planner-summary span{padding:10px 14px;border:1px solid #dce7f7;background:#f5f8fe;border-radius:11px;color:#526b89}.planner-summary strong{font-size:18px;color:#0e4389}
.planner-top-actions{gap:10px;flex-wrap:wrap}.planner-help{margin:14px 0 22px;color:#607893;font-size:13px;line-height:1.6}
.planner-plan-header{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;padding-bottom:15px;border-bottom:1px solid #e3eafa;color:#0c356f}.planner-plan-header span{font-size:12px;color:#6a7e98}
.planner-route-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,375px),1fr));gap:15px;margin:18px 0}
.planner-route-card{min-width:0;border:2px solid #dbe7f8;border-radius:17px;padding:16px;background:#fdfefe;box-shadow:0 3px 10px #003b7710;transition:background .12s,border-color .12s}
.planner-route-card.planner-over,.planner-stops.planner-over{border-color:#0585ef;background:#e5f4ff}
.planner-route-card.planner-route-alert{border-color:#ef986d}
.planner-route-header{display:flex;justify-content:space-between;align-items:flex-start;gap:9px;margin-bottom:12px}.planner-route-header h3{margin:0 0 5px;color:#123d7b;font-size:17px}.planner-route-header small{font-size:12px;color:#627a98}.planner-route-count{font-size:12px;color:#57749a;font-weight:600}
.planner-route-assignment{display:grid;grid-template-columns:1fr 1fr;gap:8px}.planner-route-select{border:1px solid #d7e1f2;border-radius:10px;padding:10px 8px;background:#fff;color:#193e77;font-size:12px;width:100%;min-width:0}
.planner-route-tip{font-size:12px;line-height:1.4;color:#7b8ba3;margin:10px 0}.planner-stops{display:grid;gap:8px;min-height:85px;border:2px dashed transparent;border-radius:10px;padding:3px}
.planner-passenger{display:flex;align-items:center;gap:9px;min-width:0;padding:10px 8px;border-radius:10px;background:#edf4ff;border:1px solid #d7e4fb;cursor:grab}.planner-passenger:active{cursor:grabbing}.planner-passenger.user-locked{background:#eaf5ff;border-color:#9ec9ff}.planner-passenger.planner-dragging{opacity:.45}
.planner-handle{font-size:23px;color:#477ab2}.planner-person-info{flex:1;min-width:0;color:#1c3b68;font-size:13px}.planner-person-info strong{display:inline}.planner-person-info small{display:block;font-size:11px;line-height:1.4;color:#697f9c;margin-top:3px;overflow-wrap:anywhere}.planner-person-tools{display:flex;gap:4px;align-items:center}.planner-mini{width:29px;height:30px;border:1px solid #bfd1eb;background:white;color:#1c4a87;font-weight:900;border-radius:7px;cursor:pointer}.planner-mini:disabled{opacity:.4;cursor:not-allowed}.planner-person-tools select{max-width:85px;font-size:11px;padding:6px 2px;color:#1b4d8b;border:1px solid #c5d9f2;border-radius:7px}.planner-lock{border-radius:5px;background:#d3e7ff;color:#195b99;font-size:10px;padding:2px 4px}
.planner-errors,.planner-warnings{border-radius:12px;padding:13px 16px;margin:12px 0;color:#8a3f12;background:#fff4e7;border:1px solid #ffd4a0;font-size:13px}.planner-errors{color:#a22020;background:#fff0ef;border-color:#f5b7b7}.planner-errors ul,.planner-warnings ul{margin:8px 0;padding-left:20px}.planner-errors li,.planner-warnings li{margin:5px 0}
.planner-footer{display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-size:12px;color:#59748c;line-height:1.4}.planner-footer span{flex:1}.planner-empty{border:1px dashed #b9d1f1;border-radius:12px;margin:22px 0;padding:40px 20px;text-align:center;background:#f8fbff;color:#7188a6}.planner-drop-placeholder{color:#839db9;text-align:center;margin:auto;font-size:12px}
@media(max-width:760px){.planner-route-assignment{grid-template-columns:1fr}.planner-passenger{flex-wrap:wrap}.planner-person-tools{width:100%;justify-content:flex-end}.planner-field{min-width:0}}

/* Self-learning route planner: explainable, company-scoped history. */
.planner-learning{margin:12px 0 16px;display:flex;align-items:flex-start;gap:13px;flex-wrap:wrap;background:#eef5ff;border:1px solid #c8dcfa;border-radius:14px;padding:14px 16px;color:#133d72}
.planner-learning>span{color:#1565be;font-size:22px}.planner-learning>div{flex:1;min-width:230px}
.planner-learning strong{font-size:14px}.planner-learning p{font-size:12.5px;line-height:1.55;margin:5px 0 0}
.planner-learning button{margin-left:auto;white-space:normal;max-width:205px}

/* Dagzorg: terminal passenger statuses stay in history, never in active route */
.daycare-sent-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,410px),1fr));gap:14px;margin-top:16px}
.daycare-sent-card,.daycare-driver-route{border:1px solid var(--line,#bfd6eb);border-radius:14px;padding:15px;background:var(--card,#fff);min-width:0}
.daycare-sent-row{display:flex;align-items:center;gap:10px;border-top:1px solid rgba(100,130,170,.2);padding:11px 1px;min-width:0}
.daycare-sent-row.no_show,.daycare-sent-row.cancelled{opacity:.8}
.daycare-stop-index{border-radius:8px;flex:0 0 30px;text-align:center;background:rgba(60,110,185,.09);padding:7px 3px;font-weight:800}
.daycare-sent-person{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0;overflow-wrap:anywhere}
.daycare-sent-person small{font-size:12px;color:var(--muted,#5a7085)}
.daycare-sent-summary,.report-metrics{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}
.daycare-sent-summary span,.report-metric{border:1px solid rgba(60,110,185,.2);padding:9px 12px;border-radius:9px}
.daycare-driver-list{display:flex;flex-direction:column;gap:9px}
.daycare-driver-person{padding:8px;border-radius:10px;border:1px solid rgba(100,130,170,.15)}
.daycare-driver-person .driver-ride-controls{display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.driver-daycare-block{margin-top:20px}
.report-filter{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin:12px 0}
.report-filter label{display:flex;flex-direction:column;gap:5px;min-width:135px}
.report-filter input{padding:9px;border:1px solid rgba(100,130,170,.3);border-radius:8px;max-width:100%}
.report-metric{min-width:105px;display:flex;flex-direction:column;gap:4px}
.report-metric strong{font-size:22px}
.report-metric span{font-size:12px}
@media(max-width:670px){.daycare-sent-grid{grid-template-columns:1fr}.daycare-sent-row{flex-wrap:wrap}.daycare-sent-row .btn{max-width:100%}.report-filter>*{flex:1 1 130px}}

/* Private ride: visible progress, actionable provider failures and indicative tariffs. */
#taxi-route-status[data-state="busy"]{background:#eaf2ff;border:1px solid #b3cef4;padding:11px;border-radius:9px;color:#164782;font-weight:700}
#taxi-route-status[data-state="error"]{background:#fff1e9;border:1px solid #f0c6ad;padding:11px;border-radius:9px;color:#9b3d11;font-weight:700}
#taxi-route-status[data-state="success"]{background:#eaf8f0;border:1px solid #b5dfc7;padding:11px;border-radius:9px;color:#246b45}
#taxi-fare-preview{min-height:70px}

/* Route verwijderen is expliciet en alleen voor conceptplanning. */
.planner-header-actions{display:flex;align-items:flex-end;flex-direction:column;gap:8px}.planner-remove-bus{border-color:#e8bac3!important;color:#a92641!important;background:#fff9fa!important;white-space:nowrap}.planner-remove-bus:hover{background:#ffedf0!important}@media(max-width:570px){.planner-route-header{flex-wrap:wrap}.planner-header-actions{flex-direction:row;align-items:center;justify-content:space-between;width:100%}}

/* Dagzorg: tijdelijke afmelding en definitieve stop */
.customer-manage-actions{display:flex;flex-wrap:wrap;gap:6px;min-width:190px}
.customer-manage-actions .btn{white-space:nowrap;font-size:12px;padding:7px 9px}
.customer-stopped{font-weight:700;color:#b45309}
.planner-absent-btn{padding:6px 9px;white-space:nowrap;font-size:12px;color:#9a3412;border:1px solid #fdba74}
.planner-day-exclusions{background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;padding:12px 15px;margin:12px 0}
.planner-day-exclusion-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.planner-day-exclusion{display:flex;align-items:center;flex-wrap:wrap;gap:7px;border-radius:9px;padding:7px 10px;background:#fff;border:1px solid #fed7aa;font-size:13px}
.planner-passenger .planner-person-tools{flex-wrap:wrap;justify-content:flex-end;gap:5px}
@media(max-width:880px){.planner-passenger .planner-person-tools{margin-left:auto}.customer-manage-actions{min-width:unset}}

/* Day customer register and independent per-person actions */
.planner-register{background:#f9fbff;border:1px solid #d1e1f8;border-radius:16px;margin:20px 0;padding:18px}
.planner-register-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.planner-register-head h3{font-size:18px;color:#123a72;margin:0 0 5px}.planner-register-head p{color:#6a809c;font-size:13px;line-height:1.5;margin:0}
.planner-register-head>strong{font-size:12px;background:#e4eefc;border-radius:22px;padding:8px 12px;color:#154b8c}
.planner-register-tabs{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0 12px}
.planner-register-tab{border:1px solid #cbdcf2;border-radius:9px;padding:8px 11px;font-size:12px;font-weight:700;background:white;color:#35587f;cursor:pointer}
.planner-register-tab b{margin-left:5px;font-size:12px}.planner-register-tab.selected{background:#164c96;border-color:#164c96;color:white}
.planner-register-search{display:flex;align-items:center;gap:10px;color:#44668b;font-size:13px;font-weight:650;margin-bottom:12px}
.planner-register-search input{box-sizing:border-box;flex:1;min-width:0;border:1px solid #c8d9ee;border-radius:9px;padding:10px 12px;color:#14355e;font:inherit;background:white}
.planner-register-list{max-height:385px;overflow-y:auto;display:grid;gap:7px;padding-right:3px}
.planner-register-person{display:grid;grid-template-columns:120px minmax(0,1fr) minmax(126px,190px);align-items:center;gap:10px;background:#fff;border:1px solid #dce7f6;border-radius:11px;padding:10px;cursor:grab}
.planner-register-person[hidden]{display:none!important}.planner-register-person:active{cursor:grabbing}
.planner-register-state{font-size:11px;font-weight:750;text-align:center;border-radius:20px;padding:7px 6px;background:#ecf3fc;color:#235891}
.planner-register-state.unplanned{background:#fff1d1;color:#906019}.planner-register-state.absent{background:#fbe9e9;color:#a14848}
.planner-register-detail{min-width:0}.planner-register-detail strong{display:block;font-size:13px;color:#133d77}.planner-register-detail small{display:block;font-size:11px;color:#687f9d;overflow-wrap:anywhere;line-height:1.55;margin-top:2px}
.planner-register-tools{display:flex;flex-direction:column;gap:6px;align-items:stretch}.planner-register-tools .btn{font-size:11px;padding:6px 7px}
.planner-register-assign{min-width:0;width:100%;border:1px solid #bcd1ec;border-radius:8px;background:#f8fbff;color:#1d4e83;padding:8px 5px;font-size:12px;cursor:pointer}
.planner-register-absence,.planner-secondary-action{background:transparent;border:0;color:#8b5260;font-size:11px;font-weight:700;cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:3px 4px}
.planner-register-absence:hover,.planner-secondary-action:hover{color:#af2d3c}
.planner-register-hint{font-size:11px;color:#879bb2}.planner-register-note{font-size:12px;line-height:1.55;color:#637e9d;margin:12px 0 0}.planner-register-empty{color:#697f9b;font-size:13px}
.planner-unplanned-alert{background:#fff7e8;border:1px solid #f1cd96;color:#754e17;padding:12px 14px;border-radius:10px;margin:10px 0;font-size:13px}
.planner-passenger{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:7px 9px;align-items:center}
.planner-passenger .planner-person-tools{display:flex;justify-content:flex-end;align-items:center;gap:4px;width:auto;flex-wrap:nowrap;margin:0}
.planner-passenger-foot{grid-column:2/-1;display:flex;justify-content:flex-end;border-top:1px solid #d8e4f5;padding-top:5px}
@media(max-width:1200px){.planner-register-person{grid-template-columns:100px minmax(0,1fr) 135px}}
@media(max-width:700px){.planner-register-person{grid-template-columns:1fr 1fr}.planner-register-state{grid-column:1;justify-self:start}.planner-register-detail{grid-column:1/-1;grid-row:2}.planner-register-tools{grid-column:2;grid-row:1 / span 1}.planner-register-tabs{gap:4px}.planner-register-tab{padding:7px}.planner-passenger{grid-template-columns:16px 1fr}.planner-passenger .planner-person-tools{grid-column:2;justify-content:flex-start}.planner-passenger-foot{grid-column:2}}

/* TuitiPlan day-care planner: customers on the left, routes on the right. */
.daycare-workspace{display:grid;grid-template-columns:minmax(300px,360px) minmax(0,1fr);gap:18px;align-items:start;margin-top:18px}
.daycare-customer-pane{min-width:0;position:sticky;top:12px;align-self:start}
.daycare-routes-pane{min-width:0}
.daycare-customer-pane .planner-register{margin:0;padding:15px;background:#f8fbff}
.daycare-customer-pane .planner-register-head{align-items:flex-start}
.daycare-customer-pane .planner-register-head h3{font-size:16px}
.daycare-customer-pane .planner-register-head>strong{padding:5px 8px}
.daycare-customer-pane .planner-register-tabs{margin:12px 0;gap:5px}
.daycare-customer-pane .planner-register-tab{font-size:11px;padding:7px 8px}
.daycare-customer-pane .planner-register-list{max-height:calc(100vh - 260px);min-height:300px;overflow:auto;overscroll-behavior:contain}
.daycare-customer-pane .planner-register-person{grid-template-columns:minmax(0,1fr);gap:6px;padding:10px}
.daycare-customer-pane .planner-register-state{justify-self:start;padding:4px 8px}
.daycare-customer-pane .planner-register-tools{flex-direction:row;align-items:center;flex-wrap:wrap;gap:7px}
.daycare-customer-pane .planner-register-tools .planner-register-assign{width:auto;min-width:130px;flex:1}
.daycare-routes-pane .planner-route-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));margin-top:12px;gap:12px}
.daycare-routes-pane .planner-route-card{padding:13px}
@media(max-width:1100px){.daycare-workspace{grid-template-columns:minmax(260px,310px) minmax(0,1fr)}.daycare-routes-pane .planner-route-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:850px){.daycare-workspace{grid-template-columns:minmax(0,1fr)}.daycare-customer-pane{position:static}.daycare-customer-pane .planner-register-list{max-height:360px;min-height:120px}.daycare-routes-pane .planner-route-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr))}}

/* Daycare dispatch buttons and immutable sent routes */
.planner-route-send{border-top:1px solid #d9e5f5;margin-top:12px;padding-top:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.planner-route-send small{font-size:12px;color:#6b7d96}
.planner-route-sent{border-color:#9fd4b3;background:linear-gradient(180deg,#f8fffa 0%,#ffffff 35%)}
.planner-route-sent .planner-passenger{cursor:default}
.planner-sent-assignment{color:#105e36;background:#e6f7ed;border-radius:10px;padding:11px 14px;font-weight:600;font-size:13px;grid-column:1/-1}
.planner-send-all{background:#e5f2ff;color:#0e4c8d;border:1px solid #b0d2f5}
.planner-send-all:disabled{opacity:.55}
@media(max-width:760px){.planner-route-send .btn{width:100%}.planner-sent-assignment{width:100%}}

.planner-route-sent .planner-person-tools,.planner-route-sent .planner-passenger-foot{display:none!important}

/* Submitted daycare route stays visible as one day-planning row. */
.daily-daycare-sent td{vertical-align:top}
.daily-daycare-sent td:first-child{min-width:124px}
.daily-route-passengers{font-size:12px;margin-top:7px;color:#0f4f9a}
.daily-route-passengers summary{cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.daily-route-passengers ol{margin:8px 0 3px;padding-left:18px;color:#203f69}
.daily-route-passengers li{padding:2px 0}

/* Gecombineerde chauffeursagenda en planbare tijdvakken */
.planner-route-times{display:flex;gap:10px;flex-wrap:wrap;align-items:end;padding:12px 8px;background:#f4f8ff;border:1px solid #d6e6fd;border-radius:12px;margin:10px 0}
.planner-route-times label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:#24486f;flex:1 1 125px}
.planner-route-times input{width:100%;min-width:0;min-height:38px;border:1px solid #c3d8f6;background:white;border-radius:8px;padding:5px 8px;font:inherit}
.driver-timeline-route{margin:0 0 12px;padding:18px;border:1px solid #c5dafa;border-radius:16px;background:#fff}
.driver-timeline-route h3{font-size:24px;margin:5px 0 9px;color:#143d78}
.driver-timeline-route .daycare-driver-person{margin-top:9px}
.driver-timeline-route .toolbar{align-items:flex-start;gap:12px}
.driver-dashboard>.row-actions{margin:12px 0 18px}
.daily-daycare-sent{background:#f5f9ff}
@media(max-width:650px){.planner-route-times{gap:6px}.driver-timeline-route{padding:12px}.driver-timeline-route h3{font-size:22px}}

/* Beveiligde alleen-lezen chauffeursappweergave */
.peek-readonly-panel{max-width:1170px;margin:0 auto}
.peek-readonly-banner{border:1px solid #c7dbf6;background:#ecf4ff;color:#153b77;padding:13px 17px;border-radius:11px;font-weight:700;margin:15px 0}
.peek-controls{display:flex;gap:24px;align-items:end;flex-wrap:wrap;margin:16px 0 20px}
.peek-controls .field{min-width:185px}
.peek-timeline{display:grid;gap:14px}
.peek-ride-card{border:1px solid #d7e2f1;border-left:5px solid #2267b5;border-radius:14px;padding:18px;background:#fff;box-shadow:0 3px 14px rgba(25,67,116,.04)}
.peek-ride-card .toolbar{align-items:start}
.peek-ride-card .toolbar p{margin:7px 0 0}
.peek-time{background:#edf4ff;color:#183e79;border-radius:7px;padding:5px 9px;font-weight:750;display:inline-block;margin-right:7px}
.peek-route-line{padding:6px 0}
.peek-passengers{border-top:1px solid #e9eff9;margin-top:14px}
.peek-passenger{display:flex;gap:12px;padding:11px 2px;border-bottom:1px solid #e9eff9;align-items:start}
.peek-passenger>div{flex:1;min-width:0}
.peek-passenger small{display:block;color:#537096;margin-top:5px;overflow-wrap:anywhere}
.peek-stop-number{display:inline-flex;justify-content:center;align-items:center;width:30px;height:30px;border-radius:7px;background:#edf4fe;color:#205894;font-weight:700;flex-shrink:0}
.peek-finished{opacity:.68}
.peek-footnote{font-size:12px;color:#527197;margin-top:13px}
@media(max-width:700px){.peek-ride-card{padding:12px}.peek-ride-card .toolbar{gap:8px;flex-wrap:wrap}.peek-readonly-banner{font-size:13px}}
/* Chauffeurscommunicatie */
.chat-layout{display:grid;grid-template-columns:minmax(170px,250px) minmax(0,1fr);gap:16px;min-height:420px}.chat-contacts{border-right:1px solid #dde6f0;max-height:65vh;overflow:auto}.chat-contact{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;border:0;background:transparent;padding:13px;border-radius:9px;cursor:pointer;color:inherit}.chat-contact.selected{background:#e7f1ff;font-weight:700}.chat-bubble{border-radius:50px;padding:2px 7px;background:#1764b9;color:white}.chat-conversation{min-width:0;display:flex;flex-direction:column}.chat-conversation h3{margin:4px 0 12px}.chat-messages{display:flex;flex-direction:column;gap:12px;min-height:270px;max-height:55vh;overflow:auto;padding:12px;background:#f7f9fd;border-radius:12px}.chat-message{padding:10px 12px;border-radius:14px;max-width:85%;overflow-wrap:anywhere;white-space:pre-wrap;background:#fff;border:1px solid #dbe4ef}.chat-message.mine{align-self:flex-end;background:#e1f0ff}.chat-message.theirs{align-self:flex-start}.chat-message small{display:block;margin-top:5px;color:#64748b;font-size:11px}.chat-compose{display:flex;gap:10px;align-items:flex-end;margin-top:12px}.chat-compose textarea{flex:1;min-width:0;box-sizing:border-box;border:1px solid #c5d3e4;border-radius:10px;padding:10px;font:inherit}.chat-compose button{flex-shrink:0}@media(max-width:700px){.chat-layout{grid-template-columns:1fr}.chat-contacts{display:flex;gap:4px;overflow-x:auto;max-height:120px;border-right:0;border-bottom:1px solid #dde6f0}.chat-contact{width:auto;min-width:130px}.chat-messages{max-height:48vh}.chat-compose{flex-direction:column;align-items:stretch}}
.chat-toast{position:fixed;right:18px;top:18px;z-index:99999;padding:14px 20px;color:#fff;background:#164e91;border-radius:12px;box-shadow:0 8px 20px #0003;font-weight:700;max-width:85vw}
/* Niet-storende plannerchat, zichtbaar vanuit elk planningsscherm. */
.floating-chat{position:fixed;right:20px;bottom:18px;z-index:1000;display:flex;align-items:flex-end;flex-direction:column;gap:8px}.floating-chat-toggle{background:#123f83;color:#fff;border:0;border-radius:24px;padding:13px 19px;box-shadow:0 8px 28px #122f5f35;font-weight:700;cursor:pointer}.floating-chat-window{width:min(380px,calc(100vw - 24px));height:min(570px,calc(100dvh - 98px));background:#fff;border-radius:16px;box-shadow:0 12px 55px #14274845;display:flex;flex-direction:column;overflow:hidden;border:1px solid #d9e3f2}.floating-chat-head,.floating-chat-select{padding:12px 15px;border-bottom:1px solid #e3eaf2}.floating-chat-head{display:flex;justify-content:space-between;align-items:center}.floating-chat-select select{display:block;width:100%;padding:8px;border:1px solid #cfdbeb;border-radius:7px;margin-top:5px}.floating-chat-messages{flex:1;overflow:auto;padding:13px;background:#f7faff}.floating-chat-line{max-width:85%;padding:9px 11px;background:#fff;border:1px solid #e1e6ef;border-radius:12px;margin:7px 0;overflow-wrap:anywhere}.floating-chat-line.sent{margin-left:auto;background:#e5efff}.floating-chat-line small{display:block;color:#63748d;font-size:11px;margin-top:4px}.floating-chat-compose{display:flex;gap:8px;padding:10px}.floating-chat-compose textarea{min-width:0;flex:1;resize:vertical;padding:9px;border-radius:8px;border:1px solid #b9cce5}.floating-chat-window>.btn{margin:0 10px 10px}.route-alert-backdrop{position:fixed;inset:0;z-index:1600;display:grid;place-items:center;background:#081e3b9e;padding:15px}.route-alert-card{background:#fff;border-radius:18px;padding:24px;max-width:470px;width:100%;box-shadow:0 12px 60px #0003}.route-alert-card h2{margin-top:0;color:#9c3200}.route-alert-card .btn{width:100%;margin-top:12px}

/* Meldingen, kaartselectie en precieze drop-indicator */
.live-vehicles{min-width:260px;max-height:min(75vh,790px);overflow-y:auto}
.live-driver-card{cursor:pointer;transition:background .15s,border-color .15s;outline-offset:2px}
.live-driver-card.selected-driver{border:2px solid #1d65c1;background:#e9f2ff}
.planner-passenger.planner-drop-before{border-top:4px solid #1663c7!important}
.planner-passenger.planner-drop-after{border-bottom:4px solid #1663c7!important}
.live-chat-alert{display:flex;flex-direction:column;gap:5px;text-align:left;cursor:pointer;max-width:min(94vw,390px);white-space:normal}
.live-chat-alert strong{font-weight:800}.live-chat-alert span{display:block;overflow-wrap:anywhere}
.daycare-group-action{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:12px;border:1px solid #bcd6f7;border-radius:9px;background:#eaf4ff;margin-top:12px}
@media(max-width:850px){.live-layout{display:flex;flex-direction:column}.live-vehicles{width:100%;max-height:280px}.live-map-wrap{min-height:360px}}
