:root{--paper:#fffaf3;--paper-2:#f6efe1;--paper-3:#ece2cc;--ink:#1a1a1a;--ink-2:#3a342a;--muted:#7a7062;--line:#d9cdb3;--line-2:#e8dec6;--accent:#a67c3a;--accent-2:#7a8b3c;--warn:#b86a3c;--ok:#5e7a3a;--shadow:0 1px 0 rgba(0,0,0,.04),0 4px 12px rgba(80,60,20,.05)}[data-theme=dark]{--paper:#14130f;--paper-2:#1c1a14;--paper-3:#25221a;--ink:#f3ead7;--ink-2:#d4c9a8;--muted:#8a7f6a;--line:#2e2a20;--line-2:#3a3526;--accent:#d4a361;--accent-2:#b8c074;--warn:#d99064;--ok:#97b06b;--shadow:0 1px 0 rgba(0,0,0,.4),0 4px 12px rgba(0,0,0,.3)}[data-palette=pdr]{--paper:#fff;--paper-2:#eef6fb;--paper-3:#d4ebf5;--ink:#0d1b2e;--ink-2:#1a3a52;--muted:#5a7e96;--line:#b4d4e6;--line-2:#cfe6f2;--accent:#29abe2;--accent-2:#1a7fa4;--warn:#d95a1a;--ok:#1a9e6a;--shadow:0 1px 0 rgba(0,0,0,.04),0 4px 12px rgba(13,27,46,.08)}[data-palette=pdr] .topbar{background:#29abe2;border-bottom-color:#1a9acf}[data-palette=pdr] .brand,[data-palette=pdr] .nav-btn,[data-palette=pdr] .nav-group-label{color:hsla(0,0%,100%,.92)}[data-palette=pdr] .nav-btn:hover{background:hsla(0,0%,100%,.14)}[data-palette=pdr] .nav-btn.active{background:hsla(0,0%,100%,.18);color:#fff}[data-palette=pdr] .nav-btn.active:after{background:#fff}[data-palette=pdr] .brand-mark{background:#fff;color:#29abe2}[data-palette=pdr] .user-chip{border-color:hsla(0,0%,100%,.35);color:#fff}[data-palette=pdr] .user-chip .role-tag{color:hsla(0,0%,100%,.65)}[data-palette=pdr] .user-chip .avatar{background:#1a7fa4}[data-palette=pdr] .topbar-ghost{color:hsla(0,0%,100%,.8)!important}[data-palette=pdr] .topbar-ghost:hover{background:hsla(0,0%,100%,.14)!important;color:#fff!important}[data-palette=pdr] button.primary{background:#1a7fa4;border-color:#1a7fa4;color:#fff}[data-palette=pdr] button.primary:hover{background:#166b8a}[data-palette=pdr][data-theme=dark]{--paper:#0d1b2e;--paper-2:#132436;--paper-3:#1a2f44;--ink:#e8f4fb;--ink-2:#b8d4e6;--muted:#6a98b4;--line:#1e3650;--line-2:#254460;--accent:#29abe2;--accent-2:#1a9acf}[data-palette=pdr][data-theme=dark] .topbar{background:#0a1626;border-bottom-color:#1e3650}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--paper);color:var(--ink)}body{font-family:IBM Plex Sans,system-ui,sans-serif;font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;min-height:100vh}.mono{font-family:IBM Plex Mono,ui-monospace,monospace;font-feature-settings:"tnum" 1}.num{font-family:IBM Plex Mono,ui-monospace,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}button{font:inherit;color:inherit;cursor:pointer;border:1px solid var(--line);background:var(--paper);padding:8px 12px;border-radius:2px;transition:background .1s}button:hover{background:var(--paper-2)}button.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}button.primary:hover{background:var(--ink-2)}button.ghost{border-color:transparent;background:transparent}button.ghost:hover{background:var(--paper-2)}button.danger{color:var(--warn);border-color:var(--line)}button:disabled{opacity:.45;cursor:not-allowed}input,select,textarea{font:inherit;color:inherit;background:var(--paper);border:1px solid var(--line);padding:7px 10px;border-radius:2px;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}label{display:block;font-size:12px;font-weight:500;color:var(--muted);margin-bottom:5px;text-transform:uppercase;letter-spacing:.08em}a{color:var(--ink)}.app{display:grid;grid-template-rows:auto 1fr;min-height:100vh}.topbar{gap:24px;padding:0 20px;height:56px;border-bottom:1px solid var(--line);background:var(--paper);position:-webkit-sticky;position:sticky;top:0;z-index:200}.brand,.topbar{display:flex;align-items:center}.brand{gap:10px;font-weight:600;letter-spacing:-.01em;text-decoration:none;color:inherit}.brand-mark{width:22px;height:22px;border-radius:2px;background:var(--ink);color:var(--paper);display:grid;place-items:center;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:700}.brand-mark:before{content:"MX"}.nav{display:flex;gap:2px;flex:1 1;overflow-x:auto;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav-group-label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding:0 10px;align-self:center}.nav-btn{border:none;background:transparent;padding:8px 12px;border-radius:2px;color:var(--ink-2);white-space:nowrap;position:relative;cursor:pointer}.nav-btn.active,.nav-btn:hover{background:var(--paper-2)}.nav-btn.active{color:var(--ink)}.nav-btn.active:after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;background:var(--ink)}.topbar-right{gap:10px}.topbar-right,.user-chip{display:flex;align-items:center}.user-chip{gap:8px;padding:4px 10px 4px 4px;border:1px solid var(--line);border-radius:2px}.avatar{width:26px;height:26px;border-radius:50%;background:var(--accent);color:var(--paper);display:grid;place-items:center;font-size:11px;font-weight:600}.role-tag{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.notif-btn,.topbar-ghost{position:relative}.icon-label{font-size:13px;white-space:nowrap}.notif-badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 3px;border-radius:8px;box-sizing:border-box;background:var(--accent);color:#fff;font-size:10px;font-weight:700;line-height:16px;display:grid;place-items:center;border:1.5px solid var(--paper)}.notif-panel{position:absolute;top:56px;right:16px;width:340px;background:var(--paper);border:1px solid var(--line);border-radius:2px;box-shadow:var(--shadow);z-index:300}.notif-item{padding:12px 16px;border-bottom:1px solid var(--line-2);cursor:pointer}.notif-item.unread,.notif-item:hover{background:var(--paper-2)}.notif-item:last-child{border-bottom:none}.page{padding:28px 36px 80px;max-width:1400px;margin:0 auto;width:100%}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px;flex-wrap:wrap}.page-title{font-size:28px;font-weight:600;letter-spacing:-.02em;margin:0}.page-sub{color:var(--muted);margin-top:4px;font-size:13px}.page-actions{display:flex;gap:8px}.card{background:var(--paper);border:1px solid var(--line);border-radius:2px}.card.accent{background:var(--paper-2)}.card-head{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}.card-title{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);font-weight:600}.card-body{padding:18px}.row{align-items:center}.col,.row{display:flex;gap:12px}.col{flex-direction:column}.grid{display:grid;grid-gap:16px;gap:16px}.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.split{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);grid-gap:24px;gap:24px}.spacer{flex:1 1}.stop-list{display:flex;flex-direction:column}.stop{display:grid;grid-template-columns:28px 1fr auto;align-items:center;grid-gap:12px;gap:12px;padding:10px 0}.stop-dot{width:22px;height:22px;border-radius:50%;background:var(--paper);border:1.5px solid var(--ink);display:grid;place-items:center;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:600;position:relative;z-index:1}.stop-dot.end,.stop-dot.start{background:var(--ink);color:var(--paper)}.stop-leg{display:grid;grid-template-columns:28px 1fr;grid-gap:12px;gap:12px;padding:2px 0;color:var(--muted);font-size:12px}.stop-leg-bar{width:28px;display:flex;justify-content:center}.stop-leg-bar:before{content:"";width:1.5px;background:var(--line);height:18px;display:block}.stop-pill{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--line);background:var(--paper);border-radius:2px;cursor:pointer;transition:background .1s}.stop-pill:hover{background:var(--paper-2)}.stop-pill .code{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--muted)}.wh-picker{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.wh-tile{padding:10px 12px;border:1px solid var(--line);background:var(--paper);border-radius:2px;text-align:left;cursor:pointer}.wh-tile:hover{background:var(--paper-2)}.wh-tile .code{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--muted);display:block;margin-bottom:2px}.wh-tile .name{font-weight:500;font-size:13px}.leg-card{border:1px solid var(--line);border-radius:2px;margin-bottom:6px;overflow:hidden}.leg-card-head{display:flex;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;background:var(--paper)}.leg-card-head:hover{background:var(--paper-2)}.leg-miles{font-size:22px;font-weight:500}.leg-cost,.leg-miles{font-family:IBM Plex Mono,monospace}.leg-cost{font-size:14px;color:var(--ok)}.leg-detail{padding:12px 14px;background:var(--paper-2);border-top:1px solid var(--line);font-size:13px}.stats-strip{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:2px;margin-bottom:20px}.stats-strip .stat{border-right:1px solid var(--line)}.stats-strip .stat:last-child{border-right:none}.stat-label{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin-bottom:6px}.stat-value{font-family:IBM Plex Mono,monospace;font-size:26px;font-weight:500;letter-spacing:-.02em;line-height:1}.stat-sub{color:var(--muted);font-size:12px;margin-top:6px}.table{width:100%;border-collapse:collapse;font-size:13px}.table td,.table th{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line)}.table th{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);font-weight:600;background:var(--paper);position:-webkit-sticky;position:sticky;top:0;z-index:1}.table tbody tr:hover{background:var(--paper-2);cursor:pointer}.table td.num,.table th.num{text-align:right;font-family:IBM Plex Mono,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.matrix-table{border-collapse:collapse;font-family:IBM Plex Mono,monospace;font-size:12px}.matrix-table td,.matrix-table th{padding:8px 10px;border:1px solid var(--line);text-align:center;min-width:64px}.matrix-table th{background:var(--paper-2);color:var(--muted);font-weight:600;font-size:10px;letter-spacing:.12em}.matrix-table td.diag{background:var(--paper-2);color:var(--line)}.matrix-table td.editable:hover{background:var(--paper-2);cursor:text}.matrix-table td input{padding:2px 4px;text-align:center;border:1px solid var(--accent);background:var(--paper);width:52px}.badge{display:inline-flex;align-items:center;gap:6px;font-family:IBM Plex Mono,monospace;font-size:10px;text-transform:uppercase;letter-spacing:.12em;padding:3px 7px;border-radius:2px;background:var(--paper-2);color:var(--muted);border:1px solid var(--line)}.badge.ok{color:var(--ok)}.badge.warn{color:var(--warn)}.badge.bad{color:var(--danger,#c0392b)}.badge.dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.gps-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ok,#2e7d32);margin-right:5px;vertical-align:middle;animation:gps-pulse 1.4s ease-in-out infinite}@keyframes gps-pulse{0%,to{opacity:1;box-shadow:0 0 0 0 rgba(46,125,50,.5)}50%{opacity:.55;box-shadow:0 0 0 5px rgba(46,125,50,0)}}.tabs{display:flex;border-bottom:1px solid var(--line);margin-bottom:16px}.tab{padding:10px 14px;background:transparent;color:var(--muted);border:none;border-bottom:2px solid transparent;cursor:pointer}.tab.active{color:var(--ink);border-bottom-color:var(--ink)}.bar-chart{display:flex;align-items:flex-end;gap:4px;height:80px}.bar{flex:1 1;background:var(--ink);border-radius:1px 1px 0 0;min-height:2px;position:relative}.bar:hover{background:var(--accent)}.bar-label{font-family:IBM Plex Mono,monospace;font-size:9px;color:var(--muted);text-align:center;margin-top:4px}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:2px;font-size:13px;box-shadow:var(--shadow);z-index:999;animation:toast-in .2s ease-out}@keyframes toast-in{0%{transform:translate(-50%,8px);opacity:0}to{transform:translate(-50%);opacity:1}}.empty{padding:40px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:2px}.keyline{height:1px;background:var(--line);margin:18px 0}.form-row{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.form-row.inline{flex-direction:row;align-items:center;gap:12px}.field-error{font-size:12px;color:var(--warn);margin-top:4px}.section-title{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);font-weight:600;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid var(--line)}.detail-panel{position:-webkit-sticky;position:sticky;top:72px;height:-moz-fit-content;height:fit-content}.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--paper);border-top:1px solid var(--line);z-index:200;height:60px}.bottom-nav-items{display:flex;height:100%}.bottom-nav-btn{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:none;background:transparent;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.1em;cursor:pointer}.bottom-nav-btn.active{color:var(--ink)}.map-container{width:100%;height:100%;min-height:360px;border-radius:2px;overflow:hidden}.map-sidebar{width:340px;flex-shrink:0;display:flex;flex-direction:column;gap:12px;position:-webkit-sticky;position:sticky;top:72px;max-height:calc(100vh - 80px)}.scroll-hint{display:none}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.audit-table-wrapper{display:block}.audit-cards-wrapper{display:none}.audit-card{padding:12px 16px;border-bottom:1px solid var(--line)}.audit-card:last-child{border-bottom:none}.audit-card-header{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:4px}.audit-card-user{font-size:13px;font-weight:500;color:var(--ink)}.audit-card-user span{color:var(--muted);font-weight:400}.audit-card-details{margin-top:4px;word-break:break-all}.audit-card-details,.audit-time{font-size:11px;color:var(--muted)}.audit-time{margin-left:auto}.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.mobile-only,.show-mobile{display:none}.topbar-mobile{display:none;align-items:center;gap:10px;margin-left:auto}.topbar-mobile .avatar{cursor:pointer}.hamburger{font-size:20px;line-height:1;padding:6px 10px}.mobile-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:1100}.mobile-drawer{position:fixed;top:0;left:0;bottom:0;width:280px;max-width:85vw;background:var(--paper);border-right:1px solid var(--line);z-index:1101;transform:translateX(-100%);transition:transform .25s ease;overflow-y:auto;display:flex;flex-direction:column}.mobile-drawer.open{transform:translateX(0)}.drawer-head{align-items:flex-start;padding:18px;border-bottom:1px solid var(--line)}.drawer-head,.drawer-link{display:flex;justify-content:space-between}.drawer-link{align-items:center;gap:8px;width:100%;text-align:left;border:none;background:transparent;padding:14px 18px;font-size:14px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);border-bottom:1px solid var(--line-2);border-radius:0}.drawer-link.active,.drawer-link:hover{background:var(--paper-2)}.drawer-link.active{color:var(--ink);font-weight:600}.drawer-foot{margin-top:auto;border-top:1px solid var(--line);padding:8px;display:flex;flex-direction:column;gap:4px}@media (max-width:920px){.split{grid-template-columns:1fr}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr 1fr}.page{padding:20px 16px 80px}.map-sidebar{display:none}}@media (max-width:768px){.page{padding:16px 12px 80px}.page-head{flex-wrap:wrap;gap:8px}.page-head h1,.page-title{font-size:24px}.page-actions{width:100%;justify-content:flex-end;flex-wrap:wrap}.page-actions>select{width:100%}.stats-strip{grid-template-columns:1fr 1fr;width:100%}.stats-strip .stat{padding:12px!important;border-right:1px solid var(--line);min-width:0;overflow:hidden}.stats-strip .stat:nth-child(2n){border-right:none}.stats-strip .stat:nth-child(-n+2){border-bottom:1px solid var(--line)}.stat-value{font-size:20px;overflow-wrap:anywhere}.card{border-radius:8px}.split{grid-template-columns:1fr}.detail-panel{position:static!important;top:auto;height:auto;width:100%;max-width:100%;overflow:hidden;box-sizing:border-box}.card-head{flex-wrap:wrap}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr!important}.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.hide-mobile{display:none!important}.form-row input,.form-row select,.form-row textarea{width:100%;box-sizing:border-box}.stack-mobile{flex-direction:column!important;align-items:stretch!important}.mobile-full,.stack-mobile>*{width:100%!important}.topbar{gap:12px;padding:0 14px}.topbar .nav,.topbar .topbar-right{display:none}.mobile-only,.topbar-mobile{display:flex}.bottom-nav{display:none!important}.today-layout{flex-direction:column}.map-sidebar{display:flex;width:100%;position:static;max-height:none}.today-map{height:250px!important}.map-legend{display:none!important}.wh-picker{grid-template-columns:1fr 1fr}.stop{grid-template-columns:28px 1fr;row-gap:8px}.stop-controls{grid-column:1/-1;flex-wrap:wrap}.stop-controls input[type=datetime-local]{flex:1 1;min-width:0;width:auto!important}.today-actions{flex-direction:column;align-items:stretch}.today-actions>*{width:100%}.submit-day-btn{position:fixed;left:12px;right:12px;bottom:12px;width:auto;z-index:150;box-shadow:var(--shadow)}.range-row{overflow-x:auto;-webkit-overflow-scrolling:touch}.range-row button{flex:0 0 auto}.route-cell{max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabs.tabs-fill .tab{flex:1 1;text-align:center}.show-mobile{display:inline}.audit-table-wrapper{display:none}.audit-cards-wrapper,.scroll-hint{display:block}.scroll-hint{text-align:center;font-size:11px;color:var(--muted);padding:4px;animation:fadeOut 3s forwards;animation-delay:1s}.pagination{flex-wrap:wrap;justify-content:center!important;gap:8px}body,html{overflow-x:clip}.app,body,body>*,html{max-width:100vw}.app{overflow-x:clip}.topbar,main{max-width:100vw}main{overflow-x:hidden}.bar-chart,.card,.card-body,.page,.stats-strip,.table-wrapper,main{min-width:0}.card{overflow:hidden}input,select,textarea{max-width:100%;box-sizing:border-box}.row{flex-wrap:wrap}.range-row{flex-wrap:nowrap!important}.modal-card{width:100%!important;max-width:100%!important;border-radius:16px 16px 0 0!important;position:fixed!important;left:0!important;right:0!important;bottom:0!important;top:auto!important;max-height:90vh!important;overflow-y:auto!important;animation:sheet-up .25s ease-out}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.toggle{position:relative;display:inline-block;width:36px;height:20px}.toggle input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;inset:0;background:var(--line);border-radius:20px;cursor:pointer;transition:background .2s}.toggle-slider:before{content:"";position:absolute;width:14px;height:14px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:transform .2s}.toggle input:checked+.toggle-slider{background:var(--accent)}.toggle input:checked+.toggle-slider:before{transform:translateX(16px)}.test-result{display:flex;align-items:center;gap:8px;font-size:13px;padding:10px 12px;border-radius:2px;margin-top:10px}.test-result.ok{background:color-mix(in srgb,var(--ok) 10%,transparent);color:var(--ok);border:1px solid color-mix(in srgb,var(--ok) 30%,transparent)}.test-result.fail{background:color-mix(in srgb,var(--warn) 10%,transparent);color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 30%,transparent)}.live-map-container{display:flex;height:calc(100vh - 56px);overflow:hidden}.live-map-sidebar{width:300px;flex-shrink:0;overflow-y:auto;border-right:1px solid var(--line)}.live-map-main{flex:1 1;position:relative;min-width:0}.driver-card{padding:12px 16px;border-bottom:1px solid var(--line);cursor:pointer}.driver-card:hover{background:var(--paper-2)}.driver-card.selected{border-left:3px solid var(--accent)}.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0}.status-dot.online{background:#22c55e;animation:live-pulse 2s infinite}.status-dot.idle{background:#eab308}.status-dot.offline{background:#6b7280}.status-dot.no_signal{background:#374151}.live-marker{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:#fff;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:700;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.3)}.live-marker-online{animation:live-pulse 2s infinite}@keyframes live-pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.4)}70%{box-shadow:0 0 0 8px rgba(34,197,94,0)}to{box-shadow:0 0 0 0 rgba(34,197,94,0)}}@media (max-width:768px){.live-map-container{flex-direction:column;height:calc(100vh - 56px)}.live-map-sidebar{width:100%;height:260px}.live-map-main{height:350px}}