:root{--ink:#161616;--muted:#6b7280;--line:#d7d9dd;--surface:#fff;--bg:#eef0f3;--accent:#111;--success:#168447;--warning:#c57900;--danger:#bd2c2c;--shadow:0 12px 32px rgba(0,0,0,.08);font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink)}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;background:var(--bg);min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}.muted{color:var(--muted)}.eyebrow{font-size:.7rem;font-weight:900;letter-spacing:.14em;margin:0 0 .25rem;color:#757575}.app-shell{max-width:760px;margin:auto;min-height:100vh;padding:0 1rem 6.8rem}.topbar{display:flex;justify-content:space-between;align-items:center;padding:1rem 0 .75rem;position:sticky;top:0;background:rgba(238,240,243,.94);backdrop-filter:blur(12px);z-index:10}.brand-row{display:flex;align-items:center;gap:.75rem}.brand-row img{width:54px;height:54px;object-fit:contain}.brand-row h1{font-size:1.2rem;margin:0}.icon-btn{border:1px solid var(--line);background:#fff;width:42px;height:42px;border-radius:13px;font-size:1.3rem;box-shadow:0 4px 12px rgba(0,0,0,.04)}.presence-card,.gps-card{display:flex;align-items:center;justify-content:space-between;background:#fff;border:1px solid var(--line);border-radius:18px;padding:1rem;margin:.5rem 0;box-shadow:var(--shadow)}.presence-card>div,.gps-card>div{display:flex;align-items:center;gap:.75rem}.presence-card small,.gps-card small{display:block;color:var(--muted);margin-top:.18rem}.presence-dot{width:13px;height:13px;border-radius:50%;background:#aaa;box-shadow:0 0 0 5px #eee}.presence-dot.online{background:var(--success);box-shadow:0 0 0 5px #dcf4e6}.switch-btn{width:58px;height:34px;border:0;border-radius:999px;padding:3px;background:#c8cbd0;transition:.2s}.switch-btn span{display:block;width:28px;height:28px;background:white;border-radius:50%;box-shadow:0 2px 8px rgba(0,0,0,.2);transition:.2s}.switch-btn.on{background:var(--success)}.switch-btn.on span{transform:translateX(24px)}.gps-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#f0f1f3;font-size:1.5rem}.btn{border:0;border-radius:12px;padding:.78rem 1rem;font-weight:800}.btn.large{width:100%;padding:1rem}.btn.small{padding:.55rem .8rem;font-size:.86rem}.btn.primary{background:#111;color:#fff}.btn.secondary{background:#f0f1f3;color:#111;border:1px solid var(--line)}.btn.danger{background:var(--danger);color:#fff}.btn:disabled{opacity:.55;cursor:not-allowed}.panel{display:none}.panel.active{display:block}.section-head{display:flex;align-items:center;justify-content:space-between;padding:1.35rem .15rem .65rem}.section-head h2{margin:0;font-size:1.45rem}.card-list{display:grid;gap:.85rem}.mission-card{background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--shadow)}.mission-head{display:flex;justify-content:space-between;gap:1rem;padding:1rem;border-bottom:1px solid #eceef0}.mission-head h3{margin:.3rem 0 0;font-size:1.1rem}.tracking{font-size:.75rem;font-weight:900;letter-spacing:.08em}.status-chip{display:inline-flex;align-items:center;padding:.35rem .6rem;border-radius:999px;font-size:.72rem;font-weight:900;white-space:nowrap;background:#eee}.status-chip.assigned{background:#fff0cf;color:#7c4b00}.status-chip.accepted{background:#dbeafe;color:#164e9b}.status-chip.picked_up,.status-chip.delivering{background:#e7ddff;color:#5c2ca2}.status-chip.delivered{background:#d9f4e4;color:#176a3e}.status-chip.cancelled{background:#eee;color:#555}.route{padding:1rem}.stop{display:grid;grid-template-columns:24px 1fr;gap:.7rem;position:relative;padding-bottom:1rem}.stop:last-child{padding-bottom:0}.stop:before{content:"";position:absolute;left:9px;top:20px;bottom:-3px;border-left:2px dashed #c7c7c7}.stop:last-child:before{display:none}.stop-dot{width:20px;height:20px;border-radius:50%;background:#111;border:5px solid #ddd}.stop.drop .stop-dot{background:var(--success);border-color:#d9f4e4}.stop small{display:block;color:var(--muted);font-weight:900;font-size:.68rem;letter-spacing:.1em;margin-bottom:.2rem}.stop address{font-style:normal;line-height:1.35;font-weight:650}.mission-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem;padding:0 1rem 1rem}.metric{background:#f5f6f7;border-radius:12px;padding:.7rem;text-align:center}.metric small{display:block;color:var(--muted);font-size:.65rem;font-weight:900}.metric strong{font-size:.9rem}.mission-notes{margin:0 1rem 1rem;padding:.8rem;border-radius:12px;background:#fff8e8;color:#664400;line-height:1.4}.mission-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:.55rem;padding:0 1rem 1rem}.mission-actions .wide{grid-column:1/-1}.reject-btn{background:#fff;color:var(--danger);border:1px solid #e7b4b4}.empty-state{background:#fff;border:1px dashed #c8cbd0;border-radius:20px;text-align:center;padding:2.5rem 1.2rem;color:var(--muted)}.empty-state .emoji{font-size:2.4rem;margin-bottom:.5rem}.empty-state h3{color:#222;margin:.2rem}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(760px,100%);height:76px;display:grid;grid-template-columns:repeat(4,1fr);background:rgba(255,255,255,.96);backdrop-filter:blur(15px);border-top:1px solid var(--line);z-index:20;padding-bottom:env(safe-area-inset-bottom)}.nav-btn{position:relative;border:0;background:none;color:#7b7f86;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;font-weight:800}.nav-btn span{font-size:1.25rem}.nav-btn small{font-size:.7rem}.nav-btn.active{color:#111}.nav-btn b{position:absolute;top:8px;right:24%;background:var(--danger);color:white;border-radius:999px;min-width:19px;height:19px;padding:0 5px;display:grid;place-items:center;font-size:.67rem}.earnings-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem}.earning-tile{background:#fff;border:1px solid var(--line);border-radius:16px;padding:1rem;box-shadow:var(--shadow)}.earning-tile small{color:var(--muted);font-weight:800}.earning-tile strong{display:block;font-size:1.25rem;margin:.35rem 0}.earning-tile span{font-size:.76rem;color:var(--muted)}.rate-card,.profile-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:1rem;margin-top:.8rem;box-shadow:var(--shadow)}.rate-card{display:flex;justify-content:space-between;gap:1rem}.earnings-list{margin-top:.8rem;display:grid;gap:.55rem}.earning-row{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px solid var(--line);border-radius:14px;padding:.8rem}.earning-row small{display:block;color:var(--muted);margin-top:.15rem}.earning-row strong{color:var(--success)}.profile-card dl{margin:0}.profile-card dl>div{display:flex;justify-content:space-between;gap:1rem;padding:.85rem 0;border-bottom:1px solid #eee}.profile-card dt{color:var(--muted)}.profile-card dd{margin:0;text-align:right;font-weight:800}.connection-help{margin-top:1rem;background:#f4f5f6;border-radius:13px;padding:.85rem}.connection-help code{display:block;margin:.45rem 0;overflow-wrap:anywhere;font-weight:800}.connection-help small{color:var(--muted)}.modal[hidden]{display:none}.modal{position:fixed;inset:0;z-index:100;display:grid;align-items:end}.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.58)}.modal-card{position:relative;background:#fff;border-radius:24px 24px 0 0;padding:1rem;max-height:92vh;overflow:auto;width:min(720px,100%);margin:0 auto}.modal-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:1rem}.modal-head h2{margin:.15rem 0}.modal-close{border:0;background:#eee;border-radius:50%;width:36px;height:36px;font-size:1.35rem}.modal-card label{display:block;font-weight:800;margin:.8rem 0}.modal-card input,.modal-card textarea,.login-form input,.login-form select{width:100%;margin-top:.35rem;border:1px solid #bfc3c8;border-radius:12px;padding:.85rem;background:#fff}.modal-card textarea{min-height:78px;resize:vertical}.reason-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.reason-grid button{border:1px solid var(--line);background:#f4f5f6;border-radius:12px;padding:.75rem}.reason-grid button.selected{background:#111;color:#fff}.preview-wrap{border-radius:14px;overflow:hidden;background:#eee}.preview-wrap img{display:block;width:100%;max-height:300px;object-fit:contain}.signature-block{margin:.9rem 0}.signature-head{display:flex;justify-content:space-between;align-items:center}.text-btn{border:0;background:none;text-decoration:underline}.signature-block canvas{width:100%;height:150px;border:2px dashed #aeb2b8;border-radius:14px;background:#fff;touch-action:none;margin-top:.45rem}.signature-block small{color:var(--muted)}.proof-location{display:flex;align-items:center;justify-content:space-between;gap:.8rem;background:#f4f5f6;border-radius:12px;padding:.8rem;margin:.8rem 0}.toast{position:fixed;left:50%;bottom:92px;transform:translate(-50%,25px);opacity:0;background:#111;color:white;padding:.8rem 1rem;border-radius:12px;z-index:200;transition:.2s;max-width:90%;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.error{background:var(--danger)}.login-body{display:grid;place-items:center;padding:1rem}.login-shell{width:min(450px,100%)}.login-card{background:#fff;border:1px solid var(--line);border-radius:24px;padding:1.4rem;box-shadow:var(--shadow)}.login-logo{display:block;width:120px;height:120px;object-fit:contain;margin:0 auto}.login-card h1{text-align:center;margin:.2rem}.login-card>.eyebrow,.login-card>.muted{text-align:center}.login-form label{display:block;font-weight:800;margin:1rem 0}.login-error{background:#ffe5e5;color:#8b1e1e;border-radius:12px;padding:.8rem;margin:1rem 0}.history-proof{display:flex;gap:.5rem;padding:0 1rem 1rem}.history-proof a{flex:1;text-align:center;text-decoration:none}.offline-warning{background:#fff2d9;color:#6f4500;border-radius:12px;padding:.75rem;margin:0 1rem 1rem;font-weight:700}
@media(max-width:520px){.app-shell{padding-left:.65rem;padding-right:.65rem}.brand-row img{width:46px;height:46px}.brand-row h1{font-size:1.05rem}.presence-card,.gps-card{padding:.85rem}.mission-metrics{grid-template-columns:repeat(3,1fr)}.mission-actions{grid-template-columns:1fr}.mission-actions .wide{grid-column:auto}.earnings-grid{grid-template-columns:1fr}.reason-grid{grid-template-columns:1fr}.modal-card{padding:1rem .85rem calc(1rem + env(safe-area-inset-bottom))}}

.login-status{display:block;text-align:center;color:#6b7280;font-weight:700;margin-top:-4px}.login-status[hidden]{display:none}

/* V30 — Paie nette calculée selon le talon du Dispatch */
.net-label{display:block;margin-top:.45rem;font-size:.68rem!important;font-weight:900;color:#18733f!important;text-transform:uppercase;letter-spacing:.07em}.tile-detail{display:grid;gap:.18rem;border-top:1px solid #eceef0;margin-top:.7rem;padding-top:.55rem}.tile-detail b,.tile-detail i,.tile-detail em{font-size:.69rem;font-style:normal;color:#5d626a}.tile-detail em{color:#775400}.payroll-breakdown{background:#fff;border:1px solid var(--line);border-radius:18px;padding:1rem;margin-top:.8rem;box-shadow:var(--shadow)}.payroll-title{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;border-bottom:1px solid #eceef0;padding-bottom:.7rem}.payroll-title h3{margin:.18rem 0 0}.payroll-title>span{background:#111;color:#fff;border-radius:999px;padding:.3rem .55rem;font-size:.72rem;font-weight:900}.payroll-lines{display:grid;margin-top:.3rem}.payroll-line{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.55rem .15rem;border-bottom:1px solid #f0f1f2}.payroll-line span{color:#555b63}.payroll-line strong{white-space:nowrap}.payroll-line.deduction strong,.payroll-line.deductions-total strong{color:#a42e2e}.payroll-line.gross{margin-top:.2rem;background:#f4f5f6;border-radius:10px;padding:.7rem}.payroll-line.gross span,.payroll-line.gross strong{font-weight:900;color:#111}.payroll-line.deductions-total{font-weight:900}.payroll-line.net-total{margin-top:.35rem;background:#111;color:#fff;border-radius:12px;padding:.9rem}.payroll-line.net-total span,.payroll-line.net-total strong{color:#fff;font-size:1.08rem;font-weight:950}.payroll-line.muted-line span{color:var(--muted)}.payroll-note{display:block;color:var(--muted);line-height:1.4;margin-top:.7rem}.earnings-list-head{margin-top:1.15rem}.earnings-list-head h3{margin:.15rem 0}.earning-amounts{text-align:right}.earning-amounts small{margin:0;color:#5e636a}.earning-amounts strong{display:block;margin-top:.18rem;color:var(--success)}
@media(max-width:520px){.payroll-line{font-size:.9rem}.earning-row{align-items:flex-start;gap:.7rem}.earning-amounts{min-width:112px}.payroll-title h3{font-size:1rem}}


/* V53 — Livreur Pro */
.availability-card{display:grid;gap:.8rem}.availability-heading{display:flex;align-items:center;gap:.7rem}.availability-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:.45rem}.availability-btn{border:1px solid #ddd6c3;background:#fff;border-radius:13px;padding:.7rem .35rem;font-weight:900;font-size:.72rem;color:#5d574b}.availability-btn.active.online{background:#eafff0;border-color:#64cf83;color:#116b31}.availability-btn.active.paused{background:#fff8e8;border-color:#efbb50;color:#8c5900}.availability-btn.active.off-shift{background:#eef1f5;border-color:#9aa5b4;color:#334155}.presence-dot.paused{background:#f59e0b;box-shadow:0 0 0 6px rgba(245,158,11,.13)}.diagnostic-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:.45rem;margin:0 1rem 1rem}.diagnostic-strip>div{background:#fff;border:1px solid #e5dfd1;border-radius:12px;padding:.58rem;text-align:center;display:grid;gap:.18rem}.diagnostic-strip span{font-size:.55rem;text-transform:uppercase;color:#80796b;font-weight:900}.diagnostic-strip strong{font-size:.67rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bottom-nav{grid-template-columns:repeat(5,1fr)!important}.driver-message-form{display:grid;gap:.65rem;margin-bottom:1rem}.driver-message-form textarea{min-height:100px}.driver-message-list{display:grid;gap:.65rem}.driver-message-item{border:1px solid #e3dece;border-radius:14px;background:#fff;padding:.75rem}.driver-message-item.dispatch_to_driver{border-left:4px solid #d4af37;background:#fffaf0}.driver-message-item.driver_to_dispatch{border-left:4px solid #3b82f6;background:#f7faff}.driver-message-item.problem{border-left-color:#dc2626;background:#fff5f5}.driver-message-item>div{display:flex;justify-content:space-between;gap:.5rem}.driver-message-item strong{font-size:.76rem}.driver-message-item small{font-size:.6rem;color:#777064}.driver-message-item p{margin:.5rem 0 0;font-size:.75rem;line-height:1.45}@media(max-width:480px){.diagnostic-strip{grid-template-columns:repeat(2,1fr)}.availability-actions{grid-template-columns:1fr}.bottom-nav small{font-size:.54rem}}

.ai-route-note{margin:0 1rem 1rem;padding:.75rem;border-radius:12px;background:#eef7ff;border:1px solid #b8dcff;color:#164e7a;font-weight:800;font-size:.82rem}
