:root{color:#17243a;background:#edf4fb;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif}*{box-sizing:border-box}body{margin:0}.app{min-height:100vh;display:flex}aside{color:#fff;background:linear-gradient(#06356f,#075da7);width:280px;height:100vh;padding:22px;position:sticky;top:0;overflow-y:auto}.brand{align-items:center;gap:12px;margin-bottom:28px;display:flex}.logo{color:#075da7;background:#fff;border-radius:16px;justify-content:center;align-items:center;width:50px;height:50px;font-weight:900;display:flex}.brand b{font-size:22px;display:block}.brand span{opacity:.85;font-size:12px}.nav{color:#d9ecff;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:14px;align-items:center;gap:10px;width:100%;margin:5px 0;padding:12px;font-weight:700;display:flex}.nav svg{width:19px}.nav.active,.nav:hover{color:#fff;background:#ffffff29}.sideNote{background:#ffffff14;border:1px solid #fff3;border-radius:14px;margin-top:24px;padding:12px;font-size:12px;line-height:1.45}main{flex:1;max-width:1420px;margin:0 auto;padding:28px}header{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}h1{color:#06356f;margin:0;font-size:30px}header p{color:#60758b;margin:6px 0 0}button{color:#0b5fa7;cursor:pointer;background:#fff;border:1px solid #cfe0f2;border-radius:11px;justify-content:center;align-items:center;gap:7px;padding:9px 12px;font-weight:800;display:inline-flex}button:hover{filter:brightness(.97)}.primary{color:#fff;background:#0b66b3;border-color:#0b66b3}.dangerBtn{color:#b91c1c;background:#fff1f2;border-color:#fecdd3}.kpis{grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px;display:grid}.card{background:#fff;border:1px solid #d9e6f4;border-radius:20px;padding:18px;box-shadow:0 10px 28px #073a6e12}.kpi strong{color:#063e7a;font-size:38px;display:block}.kpi b{display:block}.kpi span,small{color:#6a7f95;margin-top:4px;font-size:12px;display:block}.kpi.green{background:#f0fff5}.kpi.red{background:#fff1f2}.kpi.blue{background:#f0f7ff}.sectionHead{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.sectionHead h2,h2{color:#064b91;margin:0}.sectionHead span{color:#71869b;font-size:13px}table{border-collapse:collapse;width:100%}th{text-align:left;color:#fff;background:#0b66b3;padding:11px}td{vertical-align:middle;border-bottom:1px solid #e6eef7;padding:12px}tr:hover td{background:#f8fbff}.pill{border:0;border-radius:999px;width:max-content;padding:6px 10px;font-size:12px;font-weight:900}.pill.warn{color:#92400e;background:#fef3c7}.pill.danger{color:#991b1b;background:#fee2e2}.pill.ok{color:#166534;background:#dcfce7}.pill.run{color:#1d4ed8;background:#dbeafe}.pill.done{color:#374151;background:#e5e7eb}.pill.reject{color:#be123c;background:#ffe4e6}.pill.taxi{color:#6b21a8;background:#f3e8ff}.form{grid-template-columns:1fr 1fr;gap:14px;display:grid}label{color:#476174;flex-direction:column;gap:6px;font-size:13px;font-weight:800;display:flex}.wide{grid-column:1/3}input,select,textarea{font:inherit;color:#17243a;background:#fff;border:1px solid #cbdceb;border-radius:12px;padding:11px}textarea{resize:vertical;min-height:88px}.two{grid-template-columns:1fr 1fr;gap:10px;display:grid}.notice{border-radius:14px;grid-column:1/3;padding:13px;font-weight:800}.notice.ok{color:#166534;background:#ecfdf3;border:1px solid #bbf7d0}.notice.danger{color:#991b1b;background:#fff1f2;border:1px solid #fecdd3}.detailGrid{grid-template-columns:1.05fr .95fr;gap:16px;display:grid}.info{background:#f7fbff;border:1px solid #d8e8f8;border-radius:15px;gap:8px;margin-bottom:12px;padding:13px;display:grid}.info b{color:#064b91}.mini{border-bottom:1px solid #edf3f8;grid-template-columns:1fr 1fr auto;align-items:center;gap:8px;padding:10px 0;display:grid}.actions{flex-wrap:wrap;gap:9px;margin-top:12px;display:flex}.driverCard{background:#fbfdff;border:1px solid #dce8f4;border-radius:16px;grid-template-columns:1fr auto;gap:10px;margin:10px 0;padding:14px;display:grid}.driverCard .actions{grid-column:1/3;margin-top:0}.calendar{grid-template-columns:repeat(7,1fr);gap:8px;display:grid}.day{background:#fbfdff;border:1px solid #dce8f4;border-radius:16px;min-height:180px;padding:10px}.event{text-align:left;white-space:normal;border:0;border-radius:11px;width:100%;margin-top:8px;padding:8px;display:block}.grid2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.tag{color:#07569a;background:#eef6ff;border:1px solid #cfe3f7;border-radius:999px;margin:5px;padding:7px 10px;font-size:13px;font-weight:800;display:inline-block}.log{background:#f7fbff;border-left:4px solid #0b66b3;border-radius:0 12px 12px 0;margin:8px 0;padding:9px 11px}.log b{color:#064b91;font-size:12px;display:block}.log span{font-size:13px}.empty{text-align:center;color:#71869b;background:#f7fbff;border-radius:16px;padding:28px}@media (width<=900px){.app{display:block}aside{width:auto;height:auto;position:relative}.kpis,.detailGrid,.grid2,.calendar,.form{grid-template-columns:1fr}.wide,.notice{grid-column:auto}main{padding:16px}header{display:block}}.login{background:linear-gradient(135deg,#06356f,#0b77c8);justify-content:center;align-items:center;min-height:100vh;padding:18px;display:flex}.loginCard{background:#fff;border-radius:24px;width:min(430px,100%);padding:26px;box-shadow:0 18px 50px #0003}.loginCard h1{text-align:center;margin:8px 0 0}.loginCard p{text-align:center;color:#60758b}.big{width:64px;height:64px;margin:0 auto}.acct{text-align:left;background:#f7fbff;width:100%;margin:7px 0;display:block}.acct b{display:block}.acct span{color:#60758b;font-size:12px}.userBox{background:#ffffff21;border:1px solid #fff3;border-radius:14px;align-items:center;gap:10px;margin:-10px 0 16px;padding:10px;display:flex}.userBox b{display:block}.userBox span{opacity:.86;font-size:12px}.logout{color:#fff;background:#ffffff1f;border-color:#fff3;width:100%;margin-top:18px}.login .notice{grid-column:auto;margin:12px 0}.login label{margin:12px 0}.login .primary{width:100%;margin:8px 0 12px}.modal{z-index:20;background:#05162d73;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.modalCard{width:min(720px,96vw);max-height:88vh;overflow:auto}.notice svg{vertical-align:middle;margin-right:6px}.publicApp .calendar{grid-template-columns:repeat(7,1fr)}@media (width<=900px){.modal{align-items:flex-start}.modalCard{margin-top:20px}.publicApp .calendar{grid-template-columns:1fr}}.leaderConflictRow td{border-bottom-color:#fecdd3;background:#fff1f2!important}.leaderConflictRow td:first-child{border-left:5px solid #dc2626}.leaderConflictRow small:after{content:"  · trùng lãnh đạo";color:#b91c1c;font-weight:900}.topActions{margin-bottom:12px}.dangerZone{background:#fff8f8;border-color:#fecdd3;margin-bottom:16px}.summaryBox{box-shadow:none}.compactForm{grid-template-columns:1fr 1fr auto auto;margin:10px 0 14px}.editRow{border-bottom:1px solid #edf3f8;grid-template-columns:1fr 1.2fr .7fr auto auto;align-items:end;gap:8px;padding:10px 0;display:grid}.driverEdit{grid-template-columns:1.4fr 1fr auto auto}.editRow label{margin:0}.notice span{margin-top:6px;display:block}@media (width<=900px){.compactForm,.editRow,.driverEdit{grid-template-columns:1fr}}button:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.2)}.mobileDispatch{max-width:760px;margin:0 auto}.mobileHero{color:#fff;background:linear-gradient(135deg,#06356f,#0b77c8);border-radius:22px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:18px;display:flex;box-shadow:0 12px 32px #073a6e2e}.mobileHero b{font-size:24px;display:block}.mobileHero span{opacity:.9;margin-top:5px;font-size:13px;display:block}.mobileHero button{color:#075da7;background:#fff;border:0}.mobileCard{border-width:2px;margin-bottom:14px}.mobileCard.blocked{background:#fff8f8;border-color:#fecdd3}.mobileCardTop{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.mobileCardTop b{color:#064b91;font-size:18px;display:block}.mobileCardTop span:not(.pill){color:#71869b;margin-top:3px;font-size:13px;display:block}.mobileCard h2{color:#06356f;margin:12px 0;font-size:21px;line-height:1.25}.mobileCard p{color:#30465c;margin:7px 0}.mobilePickers{grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;display:grid}.mobilePickers select{border-radius:15px;padding:14px;font-size:16px}.mobileActions{grid-template-columns:1.4fr 1fr 1fr;gap:9px;margin-top:13px;display:grid}.mobileActions button{border-radius:15px;min-height:48px;font-size:15px}.mobileActions .bigAssign{letter-spacing:.4px;grid-column:1/4;min-height:62px;font-size:20px}.mobileDone{margin-top:18px}.nav span{align-items:center;gap:6px;display:inline-flex}@media (width<=900px){aside{padding:14px}.brand{margin-bottom:12px}.sideNote{display:none}.nav{margin:4px 0;padding:13px 12px}.mobileDispatch{max-width:none}.mobileHero{z-index:5;border-radius:0 0 20px 20px;margin:-16px -16px 14px;position:sticky;top:0}.mobilePickers{grid-template-columns:1fr}.mobileActions{grid-template-columns:1fr 1fr}.mobileActions .bigAssign{grid-column:1/3}.mobileActions button{min-height:54px}table{white-space:nowrap;font-size:13px;display:block;overflow-x:auto}.card{border-radius:18px;padding:15px}h1{font-size:24px}}.driverMobile{max-width:820px;margin:0 auto}.driverHero{background:linear-gradient(135deg,#065f46,#0b77c8)}.driverSummary{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px;display:grid}.mobileSectionTitle{color:#06356f;margin:18px 0 10px;font-size:18px}.driverMobileCard{border-width:2px;margin-bottom:14px;overflow:hidden}.driverMobileCard.today{background:linear-gradient(#f0f9ff,#fff);border-color:#0ea5e9}.driverTripTop{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.driverTripTop b{color:#064b91;font-size:19px;display:block}.driverTripTop span:not(.pill){color:#71869b;margin-top:3px;font-size:13px;display:block}.driverTime{background:#eef7ff;border:1px solid #d3e8fb;border-radius:16px;justify-content:space-between;align-items:center;gap:12px;margin:12px 0;padding:12px 14px;display:flex}.driverTime strong{color:#06356f;font-size:28px}.driverTime span{color:#0b66b3;font-weight:900}.driverRoute{background:#f8fbff;border:1px solid #e2edf8;border-radius:16px;gap:7px;margin:12px 0;padding:12px;display:grid}.driverRoute span{color:#344b61;line-height:1.35}.driverRoute b{color:#064b91}.driverMobileActions{grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px;display:grid}.driverMobileActions button{letter-spacing:.2px;border-radius:16px;min-height:62px;font-size:16px}.driverMobileActions .finishBtn{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.driverMobileActions .finishBtn:not(:disabled):hover{background:#d1fae5}@media (width<=900px){.driverMobile{max-width:none}.driverSummary{grid-template-columns:repeat(3,1fr);gap:8px}.driverSummary .kpi{padding:12px}.driverSummary .kpi strong{font-size:28px}.driverSummary .kpi span{display:none}.driverTime strong{font-size:25px}.driverMobileActions{grid-template-columns:1fr}.driverMobileActions button{min-height:66px;font-size:18px}.driverMobileCard h2{font-size:22px;line-height:1.25}.driverHero{z-index:5;border-radius:0 0 20px 20px;margin:-16px -16px 14px;position:sticky;top:0}}.driverMobileActions.twoActions{grid-template-columns:1fr 1fr}.driverSchedule{margin:16px 0}.scheduleDay{background:#fbfdff;border:1px solid #dce8f4;border-radius:16px;margin:10px 0;padding:12px}.scheduleDay>b{color:#064b91;margin-bottom:8px;display:block}.scheduleTrip{border-top:1px solid #e8f0f8;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:10px 0;display:grid}.scheduleTrip:first-of-type{border-top:0}.scheduleTrip strong{color:#06356f;font-size:15px;display:block}.scheduleTrip span:not(.pill){color:#30465c;margin-top:3px;font-weight:800;display:block}@media (width<=900px){.driverMobileActions.twoActions{grid-template-columns:1fr 1fr}.driverMobileActions.twoActions button{min-height:72px}.scheduleTrip{grid-template-columns:1fr}.scheduleTrip .pill{justify-self:start}.driverSchedule .sectionHead{flex-direction:column;align-items:flex-start}}.mobileMenuToggle{display:none}.navWrap{display:block}@media (width<=900px){aside{grid-template-columns:1fr auto;align-items:start;gap:10px;display:grid}.brand{grid-column:1/2;margin:0}.brand .logo{border-radius:13px;width:42px;height:42px}.brand b{font-size:18px}.brand span{font-size:11px}.userBox{border-radius:12px;grid-column:1/3;margin:2px 0 0;padding:8px}.mobileMenuToggle{color:#fff;background:#ffffff29;border-color:#ffffff47;grid-area:1/2/2/3;align-self:center;min-height:42px;display:inline-flex}.navWrap{border-top:1px solid #ffffff2e;grid-column:1/3;margin-top:6px;padding-top:8px;display:none}.navWrap.open{display:block}.navWrap .logout{margin-top:8px}.publicApp aside{grid-template-columns:1fr auto;display:grid}.publicApp .navWrap{grid-column:1/3}}.configTabs{flex-wrap:wrap;gap:8px;display:flex}.configTab{color:#3a4456;cursor:pointer;background:#f5f8fc;border:1px solid #d7deea;border-radius:10px;align-items:center;gap:6px;padding:9px 14px;font-weight:600;display:flex}.configTab.active{color:#fff;background:#1f5fd6;border-color:#1f5fd6}.configTab svg{flex:none}.changePass{margin-bottom:18px}.changePass form{max-width:420px}.logo{padding:4px;overflow:hidden}.logo img{object-fit:contain;width:100%;height:100%;display:block}.brand{flex-wrap:wrap}.logo{background:#fff;border-radius:10px;width:auto;min-width:150px;height:42px;padding:6px 10px}.logo img{object-fit:contain;width:auto;height:100%}@media (width<=900px){.brand .logo{min-width:130px;height:34px}}@media (width>=901px){aside{flex-direction:column;display:flex}.navWrap{flex-direction:column;flex:1;display:flex}.navWrap .logout{margin-top:auto}}.logoWrap{flex-direction:column;align-items:center;gap:4px;display:flex}.logoCaption{color:#fff;letter-spacing:2px;text-align:center;font-size:14px;font-weight:900}@media (width<=900px){.logoCaption{letter-spacing:1.5px;font-size:12px}}.formDownloads{border-top:1px dashed #d0d7e2;margin-top:12px;padding-top:12px}.formDownloadsTitle{color:#1f4e79;align-items:center;gap:6px;margin-bottom:8px;font-size:13px;font-weight:700;display:flex}.formDownloadsBtns{flex-wrap:wrap;gap:8px;display:flex}.formBtn{color:#1f4e79;cursor:pointer;background:#f3f7fc;border:1px solid #1f4e79;border-radius:8px;align-items:center;gap:6px;padding:7px 12px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.formBtn:hover{color:#fff;background:#1f4e79}.formHint{color:#888;flex-basis:100%;font-size:12px}.formDownloads.compact{margin-top:10px;padding-top:10px}.formDownloads.compact .formBtn{padding:9px 12px;font-size:14px}@media (width<=900px){.formDownloads.compact .formBtn{flex:45%;justify-content:center}}
