:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:#202832;background:#eef2f5;font-size:14px;--ink:#202832;--muted:#66717d;--line:#dbe1e6;--soft:#e7ebef;--button:#c7ced5;--pink:#ef8f99;--pink-deep:#d94b5a;--pink-soft:#fcedef;--blue-soft:#eaf4fd;--orange-soft:#fff0da;--green-soft:#e7f3e9;--purple-soft:#efe8f8;--radius:10px}
*{box-sizing:border-box}
body{margin:0;min-height:100dvh;background:radial-gradient(circle at 50% -10%,#fff 0,#f7f9fb 42%,#eef2f5 100%);color:var(--ink)}
.app-shell{width:min(100%,480px);min-height:100dvh;margin:0 auto;background:#fff;box-shadow:0 0 34px #2d37421c}
.app-header{display:flex;align-items:center;gap:11px;padding:12px 14px;background:#eef2f5;border-bottom:1px solid #dce4eb}
.brand-logo{display:block;flex:0 0 auto;width:60px;height:60px;object-fit:contain}
.brand{display:grid;line-height:1.05;flex:1;position:relative}
.brand strong{color:#172239;font:700 20px/1.1 Georgia,serif;letter-spacing:0}
.brand strong:after{display:none}
.brand span{color:#637086;font-size:12px;margin-top:3px;font-weight:700}
.account{display:grid;justify-items:center;gap:3px;border:0;background:transparent;padding:3px;color:#39434d;font-size:11px;font-weight:500;min-height:44px}
.account-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#536174;color:#fff;font-size:10px;font-weight:800}
main{padding:0 12px 30px}
button,input,select,textarea{font:inherit}
button{cursor:pointer;border:1px solid var(--line);border-radius:var(--radius);background:var(--button);color:var(--ink);font-weight:700;padding:12px;min-height:44px}
button:disabled{opacity:.55;cursor:default}
button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #59636c;outline-offset:2px}
#main-tabs{display:flex;border-radius:var(--radius);background:#d9dee3;margin:10px 0;overflow:hidden}
#main-tabs button{display:flex;align-items:center;justify-content:center;gap:7px;flex:1;border:0;background:transparent;font-size:15px;min-height:46px;border-radius:12px}
#main-tabs button>span{font-size:17px}
#main-tabs button[aria-pressed=true],#day-tabs button[aria-pressed=true]{background:linear-gradient(135deg,#ed858f,#f3a3aa);color:#fff}
#day-tabs{display:flex;gap:6px}
#day-tabs button{flex:1;font-size:12px;padding:6px 4px;background:var(--soft);border:0;min-height:36px;border-radius:9px}
#day-caption{font-size:11px;color:var(--muted);margin:7px 4px 10px}
#content{display:grid;gap:10px}
#create-course{width:100%;margin-top:7px;border:1px solid #d88ca0;background:#fff;color:#a92849;font-size:13px;min-height:39px;padding:8px;box-shadow:0 2px 6px #20304724}
#create-course:hover{background:#f7f9fb;box-shadow:0 3px 8px #20304733}
.card,details{background:#fff;border:1px solid var(--line);border-radius:15px;padding:14px;box-shadow:0 1px 3px #26313b0a}
.card h3{font-size:18px;line-height:1.25;margin:8px 0 3px;letter-spacing:-.25px}
.journey{position:relative;margin:12px 0;padding-left:22px;border-left:2px solid #b9c2ca}
.journey h3:before{content:"";position:absolute;left:-7px;width:12px;height:12px;margin-top:5px;border-radius:50%;background:#65717c;border:2px solid #fff;box-shadow:0 0 0 1px currentColor}
.address,.timestamps{font-size:12px;line-height:1.45;color:var(--muted)}
.direction{font-size:22px;line-height:1;margin:7px 0;color:#667480}
.badges{display:flex;gap:6px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.badge{padding:4px 0;border-radius:8px;font-size:16px;font-weight:800;background:transparent!important}
.badge.wheelchair{padding:6px 10px;background:#f7cdd2!important;color:#9f1724;font-size:12px}
.nature{font-size:13px;margin-top:2px;font-weight:700}
.current-course-label{margin:-3px 2px 0;color:var(--pink-deep);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.35px}
.map-link{display:inline-flex;align-items:center;gap:5px;color:inherit;text-decoration:underline;text-decoration-color:#9da7b0;text-underline-offset:2px}
.map-link:hover{color:#b62e3d}.map-link span{font-size:11px;color:#7b8791}
.tour-passengers{margin:10px 0 12px;padding:10px;background:#ffffffa8;border:1px solid #dce3e8;border-radius:10px}
.tour-passengers strong{display:block;font-size:12px}
.tour-passengers div{display:flex;flex-wrap:wrap;gap:5px}
.tour-passengers span{padding:5px 7px;background:#e7edf1;border-radius:7px;font-size:11px;font-weight:700}
.tour-passenger-head{align-items:center;justify-content:space-between;margin-bottom:7px}
.tour-passenger-head button{min-height:30px;padding:5px 8px;border:0;background:#d9dfe4;font-size:11px}
.tour-add-only{display:flex;justify-content:flex-end;margin:8px 0 2px}.tour-add-only button{min-height:34px;padding:7px 10px;border:0;background:#d9dfe4;font-size:11px}
.tour-compact-people{position:relative;width:max-content;max-width:100%;margin-top:7px;z-index:2}
.tour-compact-people>button{min-height:29px;padding:4px 8px;border:1px solid #cbd4da;background:#f5f7f8;color:#46545f;font-size:11px;border-radius:8px}
.tour-compact-people>button span{display:inline-block;margin-left:3px;transition:transform .15s}.tour-compact-people>button[aria-expanded=true] span{transform:rotate(180deg)}
.tour-compact-popover{position:absolute;top:34px;left:0;width:max-content;min-width:190px;max-width:290px;padding:10px 12px;background:#fff;border:1px solid #cfd7dd;border-radius:11px;box-shadow:0 8px 22px #1f29332b;color:var(--ink)}
.tour-compact-popover:before{content:"";position:absolute;top:-6px;left:18px;width:10px;height:10px;background:#fff;border-left:1px solid #cfd7dd;border-top:1px solid #cfd7dd;transform:rotate(45deg)}
.tour-compact-popover strong{font-size:11px}.tour-compact-popover ul{display:grid;gap:5px;margin:7px 0 0;padding:0;list-style:none}.tour-compact-popover li{font-size:12px;font-weight:700}.tour-compact-popover p{margin:7px 0 0;font-size:11px;color:var(--muted)}
.course-passengers{margin:9px 0;padding:9px;background:#ffffffb8;border:1px solid #e4c4c8;border-radius:10px}
.course-passenger-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.course-passenger-head strong{font-size:12px}.course-passenger-head button{min-height:30px;padding:5px 8px;border:0;background:#ead4d7;font-size:11px}
.course-passenger-list{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}.course-passenger-list span{padding:5px 7px;background:#f7e8ea;border-radius:7px;font-size:11px;font-weight:700}
.conventional-journey{display:grid;gap:0;padding-left:18px}.conventional-stop{position:relative;padding:0 0 14px}.conventional-stop:last-child{padding-bottom:2px}.conventional-stop:before{content:"";position:absolute;left:-25px;top:18px;width:11px;height:11px;border-radius:50%;background:#727e88;border:2px solid #fff;box-shadow:0 0 0 1px #697580}.conventional-stop small{display:block;color:#9a3742;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.35px}.conventional-stop h3{margin:2px 0 3px}.conventional-stop h3:before{display:none}
.attendance-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:8px;border-top:1px solid #edf0f2}
.attendance-row>strong{font-size:12px}.attendance-row>div{display:flex;gap:5px}
.attendance-row button{min-height:34px;padding:6px 9px;border:1px solid #bdc6cd;background:#eef1f3;font-size:11px}
.attendance-row button[aria-pressed=true]{border-color:#2e7b45;background:#dcefe1;color:#215f34}
.attendance-row button.absent[aria-pressed=true]{border-color:#aa3542;background:#f7dfe2;color:#8e2531}
.tour-journey{display:grid;gap:0;padding-left:18px}
.tour-journey h3:before{display:none}
.journey-stop{position:relative;padding:2px 0 14px;opacity:.68}
.journey-stop:before{content:"";position:absolute;left:-25px;top:6px;width:11px;height:11px;border-radius:50%;background:#7d8891;border:2px solid #fff;box-shadow:0 0 0 1px #697580}
.journey-stop.active,.journey-stop.completed{opacity:1}.journey-stop.active:before{background:var(--pink);box-shadow:0 0 0 2px #f4c8cd}.journey-stop.completed:before{background:#438057}
.tour-person h3,.journey-stop>h3{margin:0 0 3px}.tour-person .address,.journey-stop>.address{margin-bottom:5px}
.tour-person .attendance-row{justify-content:flex-end;padding:4px 0 0;border:0}.tour-person .attendance-row>div{display:flex;gap:5px}
.journey-stop .validate-stop{width:100%;border:0;background:#c5ccd2;font-size:11px;min-height:34px}.arrival-action{margin-top:7px}
.attendance-result,.pending{font-size:10px;font-weight:800;padding:5px 7px;border-radius:999px}
.attendance-result.present{color:#246635;background:#dff2e4}.attendance-result.absent{color:#982936;background:#f9dfe2}.pending{color:#66727c;background:#e3e8ec}
.tour-notes{display:grid;gap:7px;margin-top:12px;padding:10px;background:#fff;border:1px solid #d8dfe4;border-radius:11px}
.tour-notes label{display:grid;gap:6px;font-size:12px;font-weight:800}.tour-notes textarea{min-height:68px;resize:vertical;padding:9px;border:1px solid #c9d0d6;border-radius:8px;font:inherit;font-weight:400}
.tour-notes button{border:0;background:#c5ccd2;font-size:11px;min-height:36px}
.actions{display:flex;gap:8px;margin-top:12px}
.actions button{flex:1;font-size:12px;background:#c7ced5;border:0}
.notes{white-space:pre-wrap;font-size:13px}.timestamps{margin-top:10px}
#menus{display:grid;gap:10px;margin-bottom:14px}
#quick-actions{display:none;margin:-2px 0 14px}
#main-tabs:has(button[data-view="gestion"][aria-pressed="true"])~#quick-actions{display:block}
#quick-fuel{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;border:0;background:#c3cad1;font-size:15px;box-shadow:inset 0 1px #fff9}
#quick-fuel span{font-size:21px}
details{padding:0;overflow:hidden}
summary{position:relative;list-style:none;padding:14px 34px 14px 48px;font-size:15px;cursor:pointer;font-weight:800;min-height:51px}
summary::-webkit-details-marker{display:none}
summary:after{content:"⌄";position:absolute;right:14px;top:11px;font-size:22px;color:#4e5a65}
details[open]>summary{background:linear-gradient(90deg,#edf1f4,#fff)}
details[open]>summary:after{content:"⌃"}
summary:before,.options button:before{content:"";display:block;flex:0 0 auto;width:24px;height:24px;background:#394550;mask:var(--menu-icon) center/contain no-repeat;-webkit-mask:var(--menu-icon) center/contain no-repeat}
summary:before{position:absolute;left:15px;top:13px;width:22px;height:22px}
#menus details:nth-child(1) summary{--menu-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 11l1.5-4.5A2 2 0 0 1 8.4 5h7.2a2 2 0 0 1 1.9 1.5L19 11l1.5 1.5V18H19v2h-2v-2H7v2H5v-2H3.5v-5.5L5 11zm2.2-4L6 11h12l-1.2-4H7.2zM6.5 14a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm11 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z'/%3E%3C/svg%3E")}
#menus details:nth-child(2) summary{--menu-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 12a5 5 0 1 0 0-10 5 5 0 0 0 0 10zm0 2c-5 0-9 2.5-9 5.5V22h18v-2.5C21 16.5 17 14 12 14z'/%3E%3C/svg%3E")}
summary small{display:block;font-size:11px;font-weight:500;margin:5px 0 0 34px;color:var(--muted)}
.vehicle-plate{margin-left:8px;font-size:inherit;font-weight:800;color:inherit}
.options{display:grid;padding:3px 9px 8px;border-top:1px solid #e7ebee;gap:1px}
.options button{text-align:left;background:#fff;border:0;font-size:12px;display:flex;align-items:center;gap:9px;min-height:40px;padding:9px}
.options button:before{width:21px;height:21px}
.options button[data-section="assignment"]{--menu-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 3h10v3h3v15H4V6h3V3zm2 2v2h6V5H9zm-3 4v10h12V9H6zm2 2h8v2H8v-2zm0 4h5v2H8v-2z'/%3E%3C/svg%3E")}
.options button[data-section="fuel"]{--menu-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 2h10v20H5V2zm2 2v6h6V4H7zm0 11v5h6v-5H7zm9-8 2 2v8.5a1.5 1.5 0 0 0 3 0V11l-2-2 1-1 3 3v6.5a3.5 3.5 0 0 1-7 0V7z'/%3E%3C/svg%3E")}
.options button[data-section="maintenance"]{--menu-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M21.3 6.7l-4 4-4-4 4-4a6 6 0 0 0-7.2 7.8L2 18.6 5.4 22l8.1-8.1a6 6 0 0 0 7.8-7.2z'/%3E%3C/svg%3E")}
.options button[data-section="history"]{--menu-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 1 1-9.4 6.6L1 7V2h5l-2 2a8 8 0 1 0 8-2zm-1 5h2v5.4l3.5 2.1-1 1.7-4.5-2.7V7z'/%3E%3C/svg%3E")}
.options button[data-section="controls"]{--menu-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l8 3v6c0 5.2-3.4 9.8-8 11-4.6-1.2-8-5.8-8-11V5l8-3zm-1 13.2l5-5-1.4-1.4-3.6 3.6-1.6-1.6L8 12.2l3 3z'/%3E%3C/svg%3E")}
.options button[data-section="profile"]{--menu-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 2h6v4h4v6h-4v4H9v-4H5V6h4V2zm2 2v4H7v2h4v4h2v-4h4V8h-4V4h-2zM4 18h16v4H4v-4z'/%3E%3C/svg%3E")}
.options button[data-section="absences"]{--menu-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2h2v3h6V2h2v3h4v17H3V5h4V2zM5 10v10h14V10H5zm2 2h4v3H7v-3z'/%3E%3C/svg%3E")}
.options button:after{content:"›";margin-left:auto;font-size:23px;color:#71808c;font-weight:400}
.options button[aria-current=page]{background:#fbe5e8;color:#a91f2e}
.vehicle-choice-list{display:grid;gap:8px}.vehicle-choice-list button{display:grid;grid-template-columns:1fr auto;align-items:center;text-align:left;background:#fff;border:1px solid var(--line);padding:12px 14px}.vehicle-choice-list strong{font-size:16px}.vehicle-choice-list span{grid-row:2;color:var(--muted);font-size:12px;font-weight:500}.vehicle-choice-list small{grid-column:2;grid-row:1/3;color:#7b8791;font-size:10px}.vehicle-choice-list button[aria-current=true]{border-color:#df7782;background:#fcedef}.vehicle-choice-list button[aria-current=true] small{color:#a72d3a;font-weight:800}
.field{display:grid;gap:7px;margin:0 0 14px;font-weight:700}
.field input,.field select,.field textarea,.read-field{width:100%;background:#f2f4f6;border:1px solid #c9d0d6;padding:12px;border-radius:9px;min-height:44px;color:var(--ink)}
.field textarea{min-height:70px}.read-field{margin:7px 0 14px;font-weight:400}.center{text-align:center}.center button{min-width:200px}
.category-tabs{display:flex;gap:6px;margin-bottom:15px}.category-tabs button{flex:1;font-size:12px;padding:10px 6px}.category-tabs button[aria-pressed=true]{outline:2px solid #4d545a;outline-offset:-2px}
.maintenance-line{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid #e5e9ed;font-size:13px}.maintenance-line span{flex:1}.maintenance-line button{font-size:12px;padding:8px}
.absence-list{display:grid;gap:8px}
.absence-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px 12px;box-shadow:0 1px 2px #26313b08}
.absence-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.absence-head strong{font-size:13px}
.absence-status{flex:0 0 auto;padding:4px 7px;border-radius:999px;background:#e8edf1;color:#4d5964;font-size:10px;font-weight:800}
.absence-status.pending{background:#fff0cf;color:#805700}.absence-status.approved{background:#dff2e4;color:#246635}.absence-status.rejected{background:#f9dfe2;color:#982936}
.absence-meta{display:flex;align-items:center;gap:8px;margin-top:5px;color:#47525d;font-size:12px}
.absence-meta small{margin-left:auto;color:var(--muted);font-size:10px}
.absence-card p{margin:7px 0 0;padding-top:7px;border-top:1px solid #edf0f2;color:var(--muted);font-size:11px;line-height:1.35}
#absence{width:100%;background:#c4cbd2;border:0}
dialog{border:0;border-radius:20px;background:#e8ecef;width:min(94vw,460px);max-height:92dvh;padding:14px}dialog::backdrop{background:#30363c80}
.dialog-head{display:flex;align-items:center;gap:8px;padding:12px;background:#fff;border-radius:12px;margin-bottom:12px}.dialog-head h2{font-size:20px;flex:1;margin:0}.dialog-head button{background:#f1f3f5;border:0;font-size:24px}
#fields{background:#fff;border-radius:12px;padding:14px}#save{width:100%;background:var(--pink);border:0;color:#fff}
#error,#form-error{color:#99232c}#error{background:#fbe7e8;padding:12px;border-radius:9px}[hidden]{display:none!important}
.suggestions{display:grid;gap:4px}.suggestions button{font-size:12px;text-align:left;background:#fff}.notice{font-size:12px;color:var(--muted);line-height:1.5}.alert{background:#fbe7e8;padding:9px;border-radius:8px}.empty{text-align:center;padding:25px;color:var(--muted)}
.PRIVATE_TAXI{background:var(--blue-soft);color:#1767ac}.CONVENTIONAL_TAXI{background:var(--pink-soft);color:#c53545}.ASSISTANCE{background:var(--orange-soft);color:#9b5b00}.CONTRACT{background:var(--green-soft);color:#32713d}.VTC{background:var(--purple-soft);color:#6f43a2}
article.card.PRIVATE_TAXI{background:linear-gradient(135deg,#f7fbff,var(--blue-soft))}article.card.CONVENTIONAL_TAXI{background:linear-gradient(135deg,#fff,var(--pink-soft))}article.card.ASSISTANCE{background:linear-gradient(135deg,#fff,var(--orange-soft))}article.card.CONTRACT{background:linear-gradient(135deg,#fff,var(--green-soft))}article.card.VTC{background:linear-gradient(135deg,#fff,var(--purple-soft))}
.compact-planning #content{gap:8px}
.compact-planning .card{padding:10px 11px;border-radius:12px}
.compact-planning .badge{font-size:13px}.compact-planning .badge.wheelchair{padding:4px 7px;font-size:10px}
.compact-planning .nature{font-size:11px;margin-top:0}
.compact-planning .journey{margin:7px 0 2px;padding-left:17px}
.compact-planning .journey h3{font-size:14px;line-height:1.15;margin:4px 0 2px}
.compact-planning .journey h3:before{left:-6px;width:10px;height:10px;margin-top:3px}
.compact-planning .address{font-size:10.5px;line-height:1.3}
.compact-planning .direction{font-size:15px;line-height:.8;margin:4px 0}
.compact-planning .notes{margin:6px 0;font-size:11px}.compact-planning .timestamps{margin-top:5px;font-size:10px}
.compact-planning .tour-compact-people{margin-top:5px}
.gestion-view #menus{gap:8px;margin-bottom:10px}.gestion-view #quick-actions{margin:-1px 0 10px}.gestion-view #quick-fuel{min-height:42px;padding:9px;font-size:13px}.gestion-view #quick-fuel span{font-size:18px}
@media(min-width:700px){body{padding:22px 0}.app-shell{min-height:calc(100dvh - 44px);border-radius:28px;overflow:hidden;border:1px solid #d9dfe4}}
/* Courbure commune aux surfaces rectangulaires de la vue chauffeur. */
#main-tabs,#main-tabs button,#day-tabs button,#create-course,.card,details,
.badge.wheelchair,.tour-passengers,.tour-passengers span,.tour-passenger-head button,
.tour-add-only button,.tour-compact-people>button,.tour-compact-popover,
.course-passengers,.course-passenger-head button,.course-passenger-list span,
.attendance-row button,.tour-notes,.tour-notes textarea,.tour-notes button,
.journey-stop .validate-stop,.actions button,#quick-fuel,.options button,
.vehicle-choice-list button,.field input,.field select,.field textarea,.read-field,
.category-tabs button,.maintenance-line button,.absence-card,#absence,dialog,
.dialog-head,.dialog-head button,#fields,#save,#error,.suggestions button,.alert,
.compact-planning .card{border-radius:var(--radius)}

@media(max-width:360px){.app-header{padding-inline:10px}.brand-logo{width:52px;height:52px}.brand strong{font-size:18px}#main-tabs button{font-size:14px}#day-tabs button{font-size:11px}.actions{flex-direction:column}}
