:root{--navy: #1f3a56;--navy-2: #264a6b;--blue: #2e6fa6;--blue-light: #7fb2e0;--tint: #eaf1f7;--tint-2: #f4f8fb;--line: #d7e1ec;--line-strong: #c9d4df;--ink: #1a2733;--ink-2: #4a5b6b;--muted: #8b9aa8;--bg: #eef2f6;--card: #ffffff;--new: #2f8f5b;--new-bg: #e6f4ec;--changed: #c9781a;--changed-bg: #fbeed9;--cancel: #c0392b;--cancel-bg: #fbe4e1;--confirm: #2e6fa6;--confirm-bg: #e5eff8;--radius: 14px;--radius-sm: 9px;--shadow: 0 1px 2px rgba(20, 40, 60, .06), 0 4px 16px rgba(20, 40, 60, .06);--maxw: 720px;--header-h: 56px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink)}button{font-family:inherit;cursor:pointer}a{color:inherit;text-decoration:none}.app{max-width:var(--maxw);margin:0 auto;min-height:100%;background:var(--bg);display:flex;flex-direction:column;box-shadow:0 0 40px #14283c0f}.appbar{position:sticky;top:0;z-index:20;height:var(--header-h);background:var(--navy);color:#fff;display:flex;align-items:center;gap:10px;padding:0 14px;padding-top:env(safe-area-inset-top)}.appbar h1{font-size:16px;margin:0;font-weight:650;letter-spacing:.2px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.appbar .sub{font-size:12px;color:var(--blue-light);font-weight:500}.appbar .iconbtn{background:#ffffff1f;border:none;color:#fff;width:34px;height:34px;border-radius:9px;font-size:16px;display:grid;place-items:center}.appbar .back{font-size:20px;background:transparent}.content{flex:1;padding:14px 14px 90px}.content.flush{padding:0 0 90px}.userbar{display:flex;align-items:center;gap:7px;flex-wrap:nowrap;background:var(--tint);border-bottom:1px solid var(--line);padding:8px 12px;font-size:12.5px;color:var(--ink-2)}.userbar>span:not(.pill){white-space:nowrap}.userbar select{font-family:inherit;font-size:12.5px;font-weight:600;color:var(--navy);border:1px solid var(--line-strong);border-radius:8px;padding:5px 7px;background:#fff;min-width:0;max-width:130px}@media (max-width: 400px){.userbar .label{display:none}}.userbar .rolechip{margin-left:auto}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700;margin:18px 2px 8px}.section-title:first-child{margin-top:4px}.tripcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:13px 14px;margin-bottom:10px;box-shadow:var(--shadow);display:block;position:relative}.tripcard .row{display:flex;align-items:center;gap:8px}.tripcard h3{margin:0;font-size:15.5px;font-weight:650;letter-spacing:.1px}.tripcard .meta{color:var(--ink-2);font-size:12.5px;margin-top:3px;display:flex;gap:10px;flex-wrap:wrap}.tripcard .tail{font-variant-numeric:tabular-nums;font-weight:650;color:var(--blue)}.tripcard .chevron{color:var(--muted);font-size:18px;margin-left:auto}.tripcard.archived{opacity:.72}.dot{width:9px;height:9px;border-radius:50%;background:var(--blue-light);box-shadow:0 0 0 3px var(--tint);display:inline-block}.dot.change{background:var(--changed);box-shadow:0 0 0 3px var(--changed-bg)}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;padding:3px 8px;border-radius:999px;white-space:nowrap}.badge.new{color:var(--new);background:var(--new-bg)}.badge.change{color:var(--changed);background:var(--changed-bg)}.badge.cancel{color:var(--cancel);background:var(--cancel-bg)}.badge.confirm{color:var(--confirm);background:var(--confirm-bg)}.badge.count{color:var(--navy);background:var(--tint)}.badge.outstanding{color:#fff;background:var(--changed)}.pill{font-size:11px;font-weight:700;color:var(--ink-2);background:var(--tint-2);border:1px solid var(--line);padding:2px 8px;border-radius:999px}.update{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin:0 0 12px}.update.change{border-color:#eccb98}.update.cancel{border-color:#eec0ba}.update .u-head{display:flex;align-items:center;gap:8px;padding:11px 13px 9px}.update.change .u-head{background:linear-gradient(0deg,#fff,var(--changed-bg))}.update.cancel .u-head{background:linear-gradient(0deg,#fff,var(--cancel-bg))}.update .u-head .who{font-size:12px;color:var(--ink-2)}.update .u-head .who b{color:var(--ink);font-weight:650}.update .u-head .when{margin-left:auto;font-size:11.5px;color:var(--muted);white-space:nowrap}.u-route{padding:4px 13px 2px;display:flex;align-items:baseline;gap:8px;font-weight:700;font-size:17px}.u-route .arrow{color:var(--blue)}.u-route .tail{font-size:12.5px;color:var(--blue);font-weight:700;align-self:center}.fields{padding:8px 13px 12px;display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}.field{min-width:0}.field .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700}.field .v{font-size:14px;font-weight:600;color:var(--ink);margin-top:1px;word-break:break-word}.field.full{grid-column:1 / -1}.field.dim .v{color:var(--muted);font-weight:500}.field.changed .k{color:var(--changed)}.field .old{color:var(--cancel);text-decoration:line-through;font-weight:500;font-size:13px;margin-right:6px}.field .new{color:var(--changed);font-weight:800}.field.changed .v{background:var(--changed-bg);border-radius:6px;padding:1px 5px;display:inline-block}.ackbar{display:flex;align-items:center;gap:10px;padding:10px 13px;border-top:1px solid var(--line);background:var(--tint-2)}.ackbar .summary{font-size:12.5px;font-weight:700;color:var(--ink-2)}.ackbar .summary .n{color:var(--navy)}.ackbar .spacer{flex:1}.progress{height:6px;border-radius:4px;background:var(--line);overflow:hidden;width:84px}.progress>span{display:block;height:100%;background:var(--new)}.btn{border:none;border-radius:10px;font-weight:700;font-size:13.5px;padding:9px 14px;background:var(--navy);color:#fff}.btn:active{transform:translateY(1px)}.btn.sm{padding:7px 12px;font-size:12.5px}.btn.ghost{background:#fff;color:var(--navy);border:1px solid var(--line-strong)}.btn.ack{background:var(--new)}.btn.confirm{background:var(--confirm)}.btn.block{width:100%}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.done{background:var(--new-bg);color:var(--new)}.chat{display:flex;gap:9px;margin:0 0 10px}.chat.me{flex-direction:row-reverse}.bubble{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 11px;max-width:78%;box-shadow:var(--shadow)}.chat.me .bubble{background:var(--tint);border-color:#cfe0f0}.bubble .name{font-size:11.5px;font-weight:700;color:var(--blue);margin-bottom:2px}.bubble .body{font-size:14px;color:var(--ink);line-height:1.35;white-space:pre-wrap;word-break:break-word}.bubble .time{font-size:10.5px;color:var(--muted);margin-top:3px}.bubble .attach{font-size:12.5px;color:var(--blue);font-weight:600;margin-top:4px;display:inline-flex;gap:5px;align-items:center}.daydiv{text-align:center;margin:10px 0}.daydiv span{font-size:11px;color:var(--muted);background:var(--bg);padding:2px 10px;font-weight:700}.avatar{width:30px;height:30px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-size:11.5px;font-weight:800;color:#fff;background:var(--blue);letter-spacing:.3px}.avatar.lg{width:38px;height:38px;font-size:13px}.avatar.sm{width:24px;height:24px;font-size:10px}.field-group{margin-bottom:13px}label.lbl{display:block;font-size:12.5px;font-weight:700;color:var(--ink-2);margin-bottom:5px}label.lbl .req{color:var(--cancel);margin-left:3px}.input,.select,.textarea{width:100%;font-family:inherit;font-size:15px;color:var(--ink);border:1px solid var(--line-strong);border-radius:10px;padding:11px 12px;background:#fff}.input:focus,.select:focus,.textarea:focus{outline:2px solid var(--blue-light);border-color:var(--blue)}.select.sm{width:auto;font-size:12.5px;padding:6px 8px;border-radius:8px}.select.sm:disabled{opacity:.6}.textarea{min-height:64px;resize:vertical}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.seg{display:flex;gap:8px}.seg button{flex:1;padding:11px 8px;border-radius:10px;border:1px solid var(--line-strong);background:#fff;font-weight:700;font-size:13.5px;color:var(--ink-2)}.seg button.on.new{background:var(--new-bg);color:var(--new);border-color:var(--new)}.seg button.on.change{background:var(--changed-bg);color:var(--changed);border-color:var(--changed)}.seg button.on.cancel{background:var(--cancel-bg);color:var(--cancel);border-color:var(--cancel)}.formhint{font-size:12px;color:var(--muted);margin:-4px 0 12px}.missing{font-size:12.5px;color:var(--cancel);font-weight:600;margin-top:8px}.footer-bar{position:sticky;bottom:0;background:var(--card);border-top:1px solid var(--line);padding:10px 12px calc(10px + env(safe-area-inset-bottom));display:flex;gap:8px;align-items:center}.footer-bar .input{border-radius:999px}.roster-item{display:flex;align-items:center;gap:11px;padding:11px 4px;border-bottom:1px solid var(--line)}.roster-item .name{font-weight:650;font-size:14px}.roster-item .role{font-size:11.5px;color:var(--muted)}.roster-item .status{margin-left:auto;font-size:12px;font-weight:700}.status.ok{color:var(--new)}.status.pending{color:var(--changed)}.adm-list{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.adm-row{display:flex;align-items:center;gap:10px;padding:11px 13px;border-bottom:1px solid var(--line)}.adm-row:last-child{border-bottom:none}.adm-row .tail{font-weight:700;color:var(--blue);font-variant-numeric:tabular-nums;min-width:64px}.adm-row .grow{flex:1}.adm-row .role{font-size:11.5px;color:var(--muted)}.chk{display:flex;align-items:center;gap:8px;padding:8px 0;font-size:14px}.chk input{width:18px;height:18px}.fab{position:fixed;bottom:calc(18px + env(safe-area-inset-bottom));z-index:30;left:50%;transform:translate(calc(var(--maxw) / 2 - 74px));background:var(--navy);color:#fff;border:none;border-radius:999px;padding:13px 18px;font-weight:750;font-size:14px;box-shadow:0 6px 20px #1f3a5666;display:flex;align-items:center;gap:7px}@media (max-width: 760px){.fab{left:auto;right:16px;transform:none}}.empty{text-align:center;color:var(--muted);padding:40px 20px;font-size:14px}.empty .big{font-size:34px;margin-bottom:8px}.banner{background:var(--tint);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;font-size:12.5px;color:var(--ink-2);margin-bottom:12px;display:flex;gap:8px;align-items:flex-start}.banner b{color:var(--navy)}.link{color:var(--blue);font-weight:650;font-size:13px}.tabs{display:flex;gap:4px;background:var(--tint);border-radius:12px;padding:4px;margin-bottom:12px}.tabs button{flex:1;border:none;background:transparent;padding:8px;border-radius:9px;font-weight:700;font-size:13px;color:var(--ink-2)}.tabs button.on{background:#fff;color:var(--navy);box-shadow:var(--shadow)}.conn{width:9px;height:9px;border-radius:50%;flex:0 0 auto}.conn.on{background:var(--new);box-shadow:0 0 0 3px var(--new-bg)}.conn.off{background:var(--muted);box-shadow:0 0 0 3px #e3e8ee}.icon-mini{background:transparent;border:none;font-size:16px;padding:2px 4px;line-height:1;border-radius:7px}.icon-mini:hover{background:#fff}.netbar{position:fixed;top:0;left:0;right:0;z-index:200;text-align:center;font-size:12px;font-weight:700;color:#fff;padding:5px 12px;padding-top:calc(5px + env(safe-area-inset-top))}.netbar.offline{background:#b5632a}.netbar.queued{background:var(--blue)}.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translate(-50%);background:var(--navy);color:#fff;font-size:13px;font-weight:600;padding:10px 16px;border-radius:10px;box-shadow:0 8px 24px #00000047;z-index:100;max-width:90%}.splash{display:grid;place-items:center;height:100vh;gap:10px}.splash p{font-weight:800;color:var(--navy);letter-spacing:.5px;margin:0}.spinner{width:26px;height:26px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--navy);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login{padding:34px 18px 40px}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:22px}.login-brand h1{margin:0;font-size:24px;color:var(--navy);letter-spacing:.3px}.login-brand p{margin:2px 0 0;color:var(--ink-2);font-size:13px}.login-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:8px}.login-users{display:grid;grid-template-columns:1fr 1fr;gap:10px}.login-user{display:flex;align-items:center;gap:10px;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px;box-shadow:var(--shadow)}.login-user .name{font-weight:650;font-size:13.5px}.login-user .role{font-size:11px;color:var(--muted)}@media (max-width: 380px){.login-users{grid-template-columns:1fr}}.fleetgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.fleettile{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:13px 14px 12px;display:flex;flex-direction:column;min-width:0}.fleet-head{display:flex;align-items:baseline;gap:8px;min-width:0}.fleet-head .tail{font-weight:750;color:var(--blue);font-variant-numeric:tabular-nums}.fleet-head .type{color:var(--ink-2);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fleet-loc{display:flex;align-items:center;gap:9px;margin:10px 0 2px}.fleet-loc .code{font-size:30px;font-weight:800;letter-spacing:1px;color:var(--navy);font-variant-numeric:tabular-nums;line-height:1.05}.fleet-loc.unknown .code{color:var(--muted)}.dot.on-ground{width:10px;height:10px;border-radius:50%;background:var(--new);box-shadow:0 0 0 3px var(--new-bg);flex:none}.fleet-since{font-size:12.5px;color:var(--ink-2);font-weight:600}.fleet-from{font-size:12px;color:var(--muted);margin-top:1px}.fleet-next{margin-top:11px;padding-top:9px;border-top:1px solid var(--line);font-size:12.5px;color:var(--ink);display:flex;gap:8px;align-items:baseline}.fleet-next .label{font-size:10.5px;font-weight:750;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);flex:none}.fleet-next .none{color:var(--muted)}.legblock{margin:0 0 6px}.legblock-head{display:flex;align-items:center;gap:8px;margin:14px 2px 8px}.legblock-head .leg-n{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}.legblock-head .link{margin-left:auto;font-size:12px;background:none;border:none;padding:0}.legblock-old{opacity:.8}.btn.danger{background:var(--cancel);border-color:var(--cancel);color:#fff}.adm-row.wrap{flex-wrap:wrap;row-gap:8px}.badge.bart{color:var(--navy);background:var(--tint);border:1px solid var(--line)}.row-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0}.check{display:flex;align-items:center;gap:8px;font-size:13.5px;min-height:40px}.flagrow .grow{display:flex;flex-direction:column;gap:2px;min-width:180px}.flag-where{font-size:11.5px;color:var(--muted)}.flag-what{font-size:13px;color:var(--changed);font-weight:650}.leg-flags{margin-bottom:8px;border-color:#eccb98}.import-result{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px;margin:12px 0}.ir-title{font-weight:700;font-size:13.5px;margin-bottom:8px}.ir-stats{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:var(--ink-2)}.ir-stats b{color:var(--ink)}.ir-section{margin-top:10px;font-size:12.5px}.ir-section summary{cursor:pointer;font-weight:700;color:var(--navy)}.ir-section ul{margin:6px 0 0;padding-left:18px;color:var(--ink-2)}.ir-section li{margin:3px 0;overflow-wrap:anywhere}
