@font-face{font-family:Nunito;src:url('/assets/nunito.ttf')}*{box-sizing:border-box}body{margin:0;background:#f6f4ee;color:#213b32;font:16px Nunito,system-ui,sans-serif}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;border:1px solid #ccd5cc;border-radius:10px;background:#fff;color:#213b32;padding:11px 16px;font-weight:800;min-height:44px}button:hover{filter:brightness(.95)}button:disabled{opacity:.55;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ba6507;outline-offset:3px}.primary{background:#147447;color:#fff;border-color:#147447}.secondary{background:#5a625e;color:white;border-color:#5a625e}.danger{color:#9f3625}.small{font-size:13px;padding:8px 12px}.muted{color:#5e6d63;font-size:14px}h1,h2,h3,p{margin:0}h1{font-size:30px;line-height:1.15;letter-spacing:-1px}h2{font-size:22px}h3{font-size:17px}a{color:#11663e}label{display:flex;flex-direction:column;gap:5px;font-size:14px;font-weight:800}input,select{padding:10px;border:1px solid #b5c1b7;border-radius:8px;background:#fff;color:#213b32;min-height:44px;min-width:0}input[type=checkbox]{accent-color:#147447;width:19px;min-height:19px}.check{flex-direction:row;align-items:center;gap:10px;font-weight:600}.stack{display:grid;gap:16px}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.between{justify-content:space-between}.logo{width:124px;object-fit:contain}.shell{max-width:1550px;margin:auto;padding:26px 32px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-bottom:24px;border-bottom:1px solid #d8dfd4}.brand{display:flex;align-items:center;gap:24px}.brand span{border-left:1px solid #cad6cb;padding-left:24px;font-size:14px}.badge{display:inline-flex;padding:5px 10px;font-size:12px;border-radius:50px;background:#e5eddf;color:#245238;font-weight:800}.badge.warn{background:#fff0cb;color:#765109}.intro{margin:28px 0 20px}.intro p{margin-top:8px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0}.metric{padding:16px 20px;border:1px solid #dce2d5;background:#fffdf8;border-radius:14px}.metric strong{display:block;font-size:28px;line-height:1.15}.metric span{font-size:13px;color:#5c6d61}.workspace{display:grid;grid-template-columns:365px minmax(0,1fr);gap:20px;align-items:start}.panel{background:#fffdf8;border:1px solid #d8e0d3;border-radius:18px;padding:22px}.controls{display:grid;gap:20px}.controls .primary{width:100%}.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.separator{height:1px;background:#e0e5db}.map-wrap{position:relative;border-radius:16px;overflow:hidden;background:#e9ece3;border:1px solid #d9e1d4}.map{height:430px;background-color:#edf0e7;background-image:linear-gradient(#dfe6d8 1px,transparent 1px),linear-gradient(90deg,#dfe6d8 1px,transparent 1px);background-size:30px 30px}.map-caption{padding:10px 15px;font-size:12px;background:#fffdf8;color:#58665b}.map .leaflet-control-attribution{font-size:10px}.pin{display:grid;place-items:center;border:2px solid white;border-radius:50%;color:white;font:bold 13px Nunito;box-shadow:0 2px 5px #213b3240;width:29px;height:29px;background:#147447}.pin.depot{background:#243b32;border-radius:7px}.route-tabs{display:flex;gap:8px;margin-top:20px;overflow:auto}.route-tab{white-space:nowrap;flex:1;text-align:left;padding:14px}.route-tab.active{border:2px solid #147447;background:#eaf2e6}.route-tab span{display:block;font-size:12px;font-weight:600;margin-top:3px}.route-list{margin-top:14px}.stop{display:flex;gap:12px;padding:16px 0;border-bottom:1px solid #e1e6db;align-items:flex-start}.number{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#e7eee0;font-weight:900}.stop-text{flex:1;min-width:0}.stop-text strong{display:block}.stop-text p{font-size:13px;color:#617061}.stop-tools{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin-top:10px}.stop-tools button{padding:4px 10px;font-size:13px}.stop-tools select{font-size:13px;max-width:160px}.notice{padding:12px 15px;background:#fff3d8;border:1px solid #e7d6ab;border-radius:10px;font-size:13px;color:#715320}.empty{text-align:center;padding:36px 20px;color:#5f6c60}.login{max-width:440px;margin:8vh auto;padding:30px}.login .logo{width:155px;margin-bottom:25px}.login h1{margin-bottom:10px}.login form{margin:25px 0}.login .demo{border-top:1px solid #d9dfd4;padding-top:18px;font-size:13px}.error{color:#9d3123;min-height:20px;font-size:14px}.driver-shell{max-width:700px;margin:0 auto;padding:20px 18px 45px}.driver-shell .topbar{padding-bottom:16px}.driver-shell .logo{width:103px}.driver-shell h1{font-size:25px}.driver-heading{padding:24px 0 16px}.driver-heading .badge{margin-bottom:9px}.driver-map .map{height:330px}.driver-actions{display:grid;grid-template-columns:1fr 4fr;gap:10px;margin:16px 0}.driver-actions button{min-height:64px;font-size:18px}.driver-actions .secondary{font-size:13px;padding:7px}.customer-info{margin-top:18px}.customer-info dl{display:grid;grid-template-columns:130px 1fr;gap:10px;font-size:15px}.customer-info dt{color:#5c6c5f}.customer-info dd{margin:0;font-weight:700}.wide{width:100%}.driver-shell .overview-start{min-height:65px;font-size:20px;margin-top:16px}.offline-bar{margin:13px 0;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}.dot{display:inline-block;width:8px;height:8px;background:#187649;border-radius:50%;margin-right:5px}.offline .dot{background:#936719}.done{background:#e3efdf;color:#205836;border-radius:12px;padding:20px;text-align:center}.preview{width:100%;max-height:250px;object-fit:contain;border-radius:10px}details>summary{cursor:pointer;min-height:44px;padding:10px 0;font-weight:800}dialog{border:1px solid #c6d2c2;border-radius:18px;padding:26px;max-width:480px;width:calc(100% - 32px);background:#fffdf8;color:#213b32}dialog::backdrop{background:#172e2580}dialog h2{margin-bottom:12px}dialog .row{margin-top:20px;justify-content:flex-end}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);padding:12px 20px;background:#203c30;color:white;border-radius:12px;z-index:3000;max-width:90vw;display:none}.leaflet-container{font-family:Nunito}.city-label{font-size:12px;color:#66755c;white-space:nowrap;font-weight:800}.sync-error{color:#9f3625}.list-title{margin-top:20px}.footnote{font-size:12px;color:#63705e;padding-top:24px}.driver-shell .stop{padding:12px 0}@media(max-width:950px){.shell{padding:20px}.workspace{grid-template-columns:300px minmax(0,1fr)}.fields{grid-template-columns:1fr}.stop-tools{max-width:220px}.brand span{display:none}}@media(max-width:700px){.shell{padding:18px 14px}.workspace{grid-template-columns:1fr}.metrics{grid-template-columns:1fr 1fr}.controls{gap:14px}.fields{grid-template-columns:1fr 1fr}.topbar{gap:10px}.topbar .muted{display:none}.intro h1{font-size:27px}.map{height:340px}.panel{padding:18px}.route-tabs{gap:5px}.route-tab{padding:10px;font-size:13px}.login{margin:5vh 15px}.driver-shell{padding:16px 14px 40px}.driver-map .map{height:300px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
 .metrics{grid-template-columns:repeat(5,minmax(0,1fr))}.map-toolbar{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.map-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:13px}.map-legend span{display:flex;align-items:center;gap:7px}.map-legend i,.route-dot{display:inline-block;width:11px;height:11px;border-radius:50%;flex:none}.route-dot{margin-right:7px}.statistics{margin-top:24px}.statistics>p{margin-top:12px}.table-scroll{overflow-x:auto;margin:18px 0}table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}th,td{padding:14px 12px;border-bottom:1px solid #dce2d5;white-space:nowrap}thead{background:#eaf0e5}td small{display:block;color:#5e6d63;font-size:12px}.history-row{padding:10px 0;font-size:14px}.statistics details h3{margin-top:16px}@media(max-width:700px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.metrics .metric:last-child{grid-column:1/-1}}

.gps-panel{background:#fff;border:1px solid #d6e1d2;border-radius:18px;padding:16px;margin:12px 0}.gps-panel .row{flex-wrap:wrap}.gps-panel p{margin-top:8px}.maneuver{display:flex;gap:16px;align-items:center;min-height:90px;padding:12px 0}.maneuver>span{font-size:38px;color:#1765b9;width:48px;flex-shrink:0;text-align:center}.maneuver strong{font-size:21px;line-height:1.25}.maneuver p{font-size:14px;color:#435e56}.gps-note{font-size:12px;color:#577267;line-height:1.5}.gps-car{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border:3px solid white;border-radius:50%;background:#246fcd;color:white;box-shadow:0 2px 12px #173c3066;font-size:24px;transform-origin:center}.live-status{font-size:13px;margin:0 0 10px;color:#456559}.sync-error{color:#a14322!important}.driver-map .map{height:46vh;min-height:280px;max-height:520px}.leaflet-tooltip{font-family:inherit}.driver-shell .topbar{flex-wrap:wrap}.gps-panel button{min-height:44px}

.gps-options{border-top:1px solid #e0e7dd;padding-top:10px}.gps-options summary{cursor:pointer;font-size:13px;min-height:32px}.gps-options .row{margin-top:10px}.gps-panel #gps-quality{font-size:12px}.gps-panel .maneuver{min-height:76px}
