@charset "UTF-8";
:root{--ink:#203d37;--green:#146653;--mint:#e6f2ed;--muted:#7a8985;--line:#e5ebe8;--blue:#497ca1;--purple:#7967a7;--amber:#ac7c33;--red:#b36350;--shadow:0 8px 32px #183d3220}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:#f4f7f5;font-family:Inter,"Segoe UI",Arial,sans-serif;font-size:13px}button,input,select,textarea{font:inherit}button{cursor:pointer;min-height:34px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:7px 12px;font-weight:600}button:hover{background:#f0f5f2}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid #55a38d;outline-offset:3px}input,select,textarea{color:var(--ink);border:1px solid #dce4de;border-radius:8px;padding:10px;background:#fff}a{color:var(--green)}h1,h2,h3,p{margin:0}h2{font-size:19px;letter-spacing:-.5px}h3{font-size:12px;font-weight:650}small{font-size:11px}.eyebrow{font-size:9px;letter-spacing:1.7px;font-weight:750;color:var(--muted);margin-bottom:6px}.brand{text-decoration:none;font-size:23px;letter-spacing:2px;font-weight:800;line-height:1}.brand span{display:block;font-size:7px;letter-spacing:1.45px;margin-top:7px;font-weight:600}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#0b5143}.quiet{border:0;background:transparent;font-size:11px}.icon-button{padding:0;width:33px;min-height:33px;border-color:transparent;font-size:21px;background:transparent}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}
header{height:74px;display:flex;align-items:center;padding:0 28px;gap:38px;background:white;border-bottom:1px solid var(--line)}.workspace-title strong{font-size:16px;font-weight:650;display:block;letter-spacing:-.3px}.workspace-title span{display:block;font-size:10px;color:var(--muted);margin-top:5px}.header-tools{margin-left:auto;display:flex;align-items:center;gap:9px}.date-switch{display:flex;gap:3px;padding:3px;border:1px solid var(--line);border-radius:9px}.date-switch button{border:0}.date-switch input{border:0;width:138px;font-size:12px;padding:4px}.notice{padding:10px 28px;background:#fff2d7;border-bottom:1px solid #eedbb5;color:#77551f}.summary{display:grid;grid-template-columns:1fr 1fr 1.12fr 1.3fr 1fr;background:white;border-bottom:1px solid var(--line);height:97px;padding:17px 28px}.summary article,.attention-card{display:flex;align-items:center;gap:13px;padding:0 25px;border:0;border-right:1px solid var(--line);border-radius:0;text-align:left;background:none}.summary article:first-child{padding-left:0}.attention-card{border-right:0;padding-right:0}.summary small{display:block;color:#7a8881;font-size:10px;font-weight:600}.summary strong{display:block;font-size:25px;letter-spacing:-.8px;font-weight:650;margin:3px 0}.summary div>span{font-size:9px;color:var(--muted)}.metric-symbol{font-size:23px;border-radius:11px;width:39px;height:41px;display:grid;place-items:center;flex-shrink:0}.green{background:#ebf4ec;color:#39806a}.blue{background:#edf3f8;color:var(--blue)}.purple{background:#f1edf8;color:var(--purple)}.amber{background:#f8f1e5;color:var(--amber)}.red{background:#f8eded;color:var(--red)}
.operations{height:calc(100dvh - 171px);min-height:460px;position:relative;overflow:hidden;background:#e7ece6}#map{position:absolute;inset:0}#map canvas{outline:none}.panel{background:#fff;border:1px solid #dce5dd;border-radius:14px;box-shadow:var(--shadow)}.team-panel{position:absolute;left:20px;top:20px;bottom:60px;width:274px;display:flex;flex-direction:column;z-index:3}.panel-heading{padding:21px 18px 14px;display:flex;align-items:center;justify-content:space-between}.counter{font-size:11px;background:#edf2ef;color:#7b8982;border-radius:5px;padding:2px 6px;vertical-align:middle;margin-left:5px;letter-spacing:0}.team-controls{padding:0 14px 10px;border-bottom:1px solid var(--line)}.search{display:flex;align-items:center;background:#f6f8f6;border-radius:8px;padding-left:10px;gap:4px}.search>span{font-size:21px;color:#8e9b93}.search input{width:100%;border:0;background:none;padding:11px 5px;font-size:11px}.filter-row{display:flex;gap:6px;margin-top:12px}.filter{font-size:10px;border:0;border-radius:7px;min-height:27px;padding:5px 10px;color:#74837d}.filter.active{color:var(--green);background:#e9f3ed}.drivers{overflow-y:auto;flex:1;min-height:60px;padding:7px}.driver{width:100%;display:block;text-align:left;padding:12px 10px;border:1px solid transparent;border-radius:9px;margin:3px 0;background:none}.driver.selected{background:#edf5ef;border-color:#bdd5c5}.driver-top{display:flex;align-items:center;gap:10px}.avatar{height:34px;width:34px;border-radius:50%;display:grid;place-items:center;color:white;font-size:10px;font-weight:700;flex-shrink:0;background:var(--green)}.driver-identity{min-width:0;flex:1}.driver-identity strong{font-size:11px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.driver-identity small{font-size:9px;color:var(--muted);display:block;margin-top:5px;font-weight:400}.driver-distance{font-size:11px;font-weight:700}.driver-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:12px;font-size:9px;color:var(--muted);font-weight:400}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px;background:#abb4ac}.status-dot.fresh{background:#31866e}.status-dot.warning{background:#cb8b31}.team-footer{padding:13px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:center;gap:3px}.team-footer>.primary{width:100%;font-size:11px;margin-bottom:5px}.team-footer>small{width:100%;text-align:center;color:#94a096;font-size:9px;margin-top:6px}.empty{padding:25px 15px;color:var(--muted);line-height:1.7;font-size:12px}.map-toolbar{position:absolute;top:20px;left:314px;display:flex;align-items:center;background:#fff;box-shadow:var(--shadow);padding:4px;border:1px solid #dce5dd;border-radius:10px;gap:3px;z-index:2}.map-toolbar button,.map-toolbar select{font-size:10px;min-height:30px;border:0;padding:6px 10px}.map-toolbar select{padding-right:3px;width:78px}.map-toolbar button[aria-pressed="true"]{background:var(--mint);color:var(--green)}.map-status{position:absolute;left:314px;top:72px;border-radius:6px;background:#ffffffeb;padding:7px 10px;display:flex;align-items:center;gap:7px;font-size:8px;letter-spacing:.8px;color:#73847b;z-index:2}.live-dot{width:5px;height:5px;border-radius:50%;background:#4c8b77}.floating-button{position:absolute;top:20px;left:20px;z-index:4;box-shadow:var(--shadow);font-size:11px}.team-hidden .map-toolbar{left:120px}.team-hidden .map-status{left:120px}.map-legend{position:absolute;bottom:13px;left:22px;z-index:2;display:flex;gap:17px;align-items:center;padding:9px 12px;border-radius:8px;background:#fffffff0;color:#73847b;font-size:9px}.map-legend span{display:flex;align-items:center;gap:6px}.legend-route{width:17px;height:3px;background:#246e5f;border-radius:3px}.legend-stop{width:7px;height:7px;border-radius:50%;background:#cb963e}.legend-old{width:7px;height:7px;border-radius:50%;background:#9ba5a0}.maplibregl-ctrl-attrib{font-size:9px!important}.maplibregl-ctrl-bottom-right{max-width:50%}.maplibregl-ctrl-top-right{top:77px}.detail-open .maplibregl-ctrl-top-right{right:383px}.map-error{position:absolute;bottom:70px;left:35%;padding:12px 18px;background:#fff5df;border:1px solid #e1c997;border-radius:9px;z-index:4;max-width:380px;font-size:11px;line-height:1.6}
.detail-panel{position:absolute;right:20px;top:20px;bottom:60px;width:352px;z-index:3;display:flex;flex-direction:column}.detail-heading{display:flex;align-items:center;gap:10px;padding:20px 18px 13px}.detail-heading>.avatar{width:39px;height:39px;font-size:12px}.detail-heading h2{font-size:17px;max-width:228px;overflow:hidden;text-overflow:ellipsis}.detail-heading .eyebrow{font-size:8px;letter-spacing:1px}.detail-heading .icon-button{margin-left:auto;flex-shrink:0}.detail-actions{display:flex;gap:7px;padding:0 18px 15px}.detail-actions button{font-size:10px;min-height:29px;flex:1}.detail-actions button[aria-pressed="true"]{background:var(--mint);color:var(--green)}.tabs{display:flex;padding:0 15px;border-bottom:1px solid var(--line)}.tabs button{flex:1;border:0;border-radius:0;font-size:10px;color:#8d998f;background:none;padding:12px 0}.tabs button[aria-selected="true"]{border-bottom:2px solid var(--green);color:var(--green)}.detail-content{overflow-y:auto;padding:0 19px 20px;flex:1}.hero-distance{padding:22px 0 17px}.hero-distance small{color:var(--muted);display:block;font-size:10px}.hero-distance strong{font-size:37px;font-weight:600;letter-spacing:-1.5px;display:block;margin:5px 0}.hero-distance>span{font-size:10px;color:#85958d}.info-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:10px;overflow:hidden}.info-grid>div{padding:13px 12px;border-bottom:1px solid var(--line)}.info-grid>div:nth-child(odd){border-right:1px solid var(--line)}.info-grid>div:nth-last-child(-n+2){border-bottom:0}.info-grid small{color:var(--muted);font-size:9px;display:block}.info-grid strong{display:block;font-size:17px;font-weight:600;margin-top:6px;letter-spacing:-.3px}.section-title{display:flex;justify-content:space-between;align-items:center;margin:23px 0 13px}.section-title>span{font-size:10px;color:var(--muted)}.section-title>strong{font-size:13px}.time-bar{display:flex;height:7px;overflow:hidden;border-radius:6px;background:#edf1ee;margin-bottom:12px}.time-bar>span{height:100%;min-width:1px}.breakdown>div{display:flex;justify-content:space-between;gap:10px;margin:10px 0;font-size:10px}.breakdown label{color:var(--muted);display:flex;gap:7px;align-items:center}.breakdown label i{width:6px;height:6px;border-radius:2px;display:inline-block}.breakdown strong{font-size:10px;font-weight:600}.info-note{font-size:10px;line-height:1.7;color:#8a968e;margin:17px 0}.wide-button{width:100%;font-size:10px;padding:10px;margin:6px 0}.stops-summary{padding:22px 0 18px}.stops-summary small{color:var(--muted);font-size:10px}.stops-summary strong{font-size:32px;letter-spacing:-1px;display:block;margin:5px 0;color:#9d722a}.stops-summary p{font-size:10px;color:var(--muted);line-height:1.7}.stop-card{padding:16px 0;border-bottom:1px solid var(--line)}.stop-heading{display:flex;justify-content:space-between;align-items:center;font-size:11px}.stop-heading>strong{color:#a27631;font-size:13px}.stop-card p{font-size:10px;color:var(--muted);margin:7px 0;line-height:1.5}.stop-card small{font-size:9px;color:#97a197;display:block}.stop-actions{display:flex;gap:6px;margin-top:11px}.stop-actions button{font-size:9px;min-height:26px;padding:5px 10px}.stop-number{width:21px;height:21px;background:#faf1df;display:inline-grid;place-items:center;border-radius:50%;margin-right:6px;color:#a87e39;font-size:10px}.timeline{border-left:1px solid #dce6df;margin-left:5px;padding-left:15px}.event{margin:13px 0;position:relative}.event:before{content:'';width:5px;height:5px;border:2px solid white;background:#a8bfb0;border-radius:50%;position:absolute;left:-20px;top:3px}.event b{font-size:10px;display:block}.event span{font-size:10px;color:var(--muted);display:block;margin-top:4px;line-height:1.5}.history-day{width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:13px 0;display:flex;justify-content:space-between;font-size:11px}.history-day small{font-size:9px;display:block;color:var(--muted);margin-top:5px}.device-info{margin:0}.device-info>div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:11px 0;font-size:10px}.device-info dt{color:var(--muted)}.device-info dd{margin:0;max-width:185px;overflow-wrap:anywhere;text-align:right}.replay{position:absolute;left:314px;right:392px;bottom:30px;display:flex;align-items:center;gap:12px;padding:14px 16px;z-index:3}.operations:not(.detail-open) .replay{right:20px}.team-hidden .replay{left:20px}.replay-main{flex:1;min-width:0}.play-button{border-radius:50%;width:35px;min-width:35px;height:35px;border:0;background:var(--green);color:white;font-size:10px}.play-button:hover{background:#195e4f}.replay-top{display:flex;align-items:center;gap:10px;font-size:10px}.replay-top strong{font-size:10px}.replay-top>span{margin-left:auto;font-variant-numeric:tabular-nums}.text-button{border:0;min-height:18px;padding:0;background:none;font-size:9px;color:var(--green)}.replay input[type=range]{appearance:none;width:100%;height:4px;padding:0;margin:13px 0 8px;cursor:pointer;border:0;background:#dce9df;accent-color:var(--green)}.replay input[type=range]::-webkit-slider-thumb{appearance:none;width:12px;height:12px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px #fff}.replay-times{display:flex;justify-content:space-between;font-size:8px;color:var(--muted)}.replay select{font-size:9px;padding:5px 2px;border:0;width:47px}.maplibregl-popup-content{font:12px Inter,"Segoe UI",sans-serif;border-radius:10px;padding:15px;box-shadow:var(--shadow);color:var(--ink)}.maplibregl-popup-content button{display:block;width:100%;margin:6px 0;font-size:11px}.maplibregl-popup-content p{margin:6px 0;font-size:11px;color:var(--muted)}.operations.expanded{position:fixed;inset:0;height:100dvh;z-index:50}.replay-label-old{color:#ab7631}
dialog{border:1px solid var(--line);border-radius:17px;padding:31px;max-width:480px;width:calc(100% - 30px);box-shadow:0 25px 100px #152f4440;max-height:85dvh;overflow:auto;color:var(--ink)}dialog::backdrop{background:#173b365c;backdrop-filter:blur(3px)}dialog label,.login-card label{display:block;font-size:11px;font-weight:600;margin:16px 0}dialog label input,dialog label select,dialog label textarea,.login-card input{display:block;width:100%;margin-top:8px}dialog h2{font-size:23px;margin:8px 0 17px}dialog p{font-size:12px;line-height:1.8;color:var(--muted);margin:11px 0}dialog small{font-size:10px;color:var(--muted);line-height:1.7}.close{position:absolute;top:12px;right:12px;border:0;font-size:22px;padding:0 6px}.access-row{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.access-row small{display:block;margin-top:5px}#enrol-code{font-size:25px;letter-spacing:5px}#login-error,#enrol-error,#stop-error,#access-error{color:var(--red)}.login{min-height:100dvh;display:grid;grid-template-columns:1.1fr .9fr;background:#eef3ee;align-items:center;gap:12%;padding:8% 12%}.login-copy .brand{display:block;margin-bottom:70px}.login-copy h1{font-size:55px;font-weight:600;letter-spacing:-2.5px;line-height:1.1}.login-copy>p{margin-top:25px;color:#819286;font-size:14px;line-height:1.9}.login-card{background:white;padding:42px;border-radius:19px;box-shadow:var(--shadow);position:relative}.login-card h2{font-size:28px;letter-spacing:-.8px;margin:15px 0 30px}.login-card .primary{width:100%;margin:15px 0;font-size:12px;padding:13px;display:flex;justify-content:space-between}.login-card>small{color:var(--muted);font-size:10px}.login-lines{margin-top:45px;width:210px;height:65px;border-bottom:2px solid #759a84;border-right:2px solid #759a84;border-radius:0 0 65px 0;transform:skewX(-30deg);opacity:.35}
@media(min-width:1800px){.team-panel{width:300px}.map-toolbar,.map-status,.replay{left:340px}.detail-panel{width:386px}.replay{right:426px}.detail-open .maplibregl-ctrl-top-right{right:416px}}@media(max-width:1200px){header{padding:0 18px;gap:25px}.summary{padding:16px 18px}.summary article,.attention-card{padding:0 15px;gap:8px}.metric-symbol{width:30px;height:35px;font-size:20px}.summary strong{font-size:21px}.team-panel{left:12px;width:237px}.detail-panel{right:12px;width:317px}.map-toolbar,.map-status,.replay{left:265px}.replay{right:345px}.map-toolbar button,.map-toolbar select{padding:5px 7px}.detail-open .maplibregl-ctrl-top-right{right:340px}.replay-top strong{display:none}.header-tools{gap:4px}.workspace-title span{max-width:180px;white-space:nowrap;overflow:hidden}.detail-content{padding:0 16px 20px}}
@media(max-width:950px){.workspace-title{display:none}.summary{grid-template-columns:repeat(4,1fr);height:89px}.attention-card{display:none}.summary article{padding:0 12px}.summary article:last-of-type{border:0}.summary strong{font-size:20px}.summary div>span{font-size:8px}.operations{height:calc(100dvh - 163px);min-height:460px}.detail-open .team-panel{display:none}.detail-open .map-toolbar,.detail-open .map-status,.detail-open .replay{left:12px}.detail-open #open-team{display:block!important;top:112px}.detail-panel{width:310px}.detail-open .replay{right:338px}.map-toolbar button span{display:none}.map-legend{font-size:8px;gap:10px}}
@media(max-width:650px){header{height:63px;padding:0 13px;gap:10px}.brand{font-size:19px}.brand span{font-size:6px;letter-spacing:.9px}.header-tools{gap:2px}.header-tools #help,.header-tools #refresh{display:none}.date-switch{padding:1px}.date-switch input{width:118px;font-size:11px}.date-switch button{padding:2px 7px;min-height:28px}.date-switch #today{display:none}.summary{height:82px;padding:10px 9px;grid-template-columns:repeat(3,1fr)}.summary article{padding:0 9px;gap:5px}.summary article:nth-child(3){border:0}.summary article:nth-child(4){display:none}.metric-symbol{display:none}.summary strong{font-size:21px}.summary small{font-size:9px}.summary div>span{font-size:8px}.operations{height:calc(100dvh - 145px);min-height:700px}.team-panel{top:82px;left:10px;bottom:50px;width:232px}.map-toolbar,.map-status{left:10px}.map-toolbar{top:10px}.map-status{top:53px}.detail-panel{left:10px;right:10px;top:340px;bottom:16px;width:auto;min-height:330px}.detail-open .maplibregl-ctrl-top-right{right:0;top:90px}.detail-heading{padding:12px 14px 10px}.detail-actions{padding:0 14px 8px}.tabs{padding:0 14px}.tabs button{padding:8px 0}.detail-content{padding:0 14px 15px}.hero-distance{padding:15px 0}.hero-distance strong{font-size:28px}.info-grid strong{font-size:16px}.replay,.detail-open .replay,.team-hidden .replay{top:240px;left:10px;right:10px;bottom:auto;padding:11px}.map-legend{bottom:2px;left:7px;padding:4px;z-index:1}.detail-open .map-legend{display:none}.maplibregl-ctrl-bottom-right{max-width:100%}.team-hidden .map-toolbar{left:10px;top:57px}.team-hidden .map-status{left:10px;top:99px}.detail-open #open-team{top:100px}.map-error{left:10px;right:10px;top:140px;bottom:auto}.login{display:block;padding:30px 20px}.login-copy .brand{margin-bottom:35px}.login-copy h1{font-size:39px}.login-copy>p{font-size:12px}.login-lines{display:none}.login-card{margin-top:35px;padding:28px}.login-card h2{font-size:24px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Coordination and observed-stationarity review */
.stationary-primary{display:grid;gap:10px;padding:14px;background:#f3f7f4;border-radius:12px;margin:12px 0}.stationary-primary>div{display:flex;justify-content:space-between;gap:8px}.stationary-primary small{color:#5a6d63}.stop-filter{display:block;margin:18px 0}.stop-filter select{margin-top:6px;width:100%}.review-flag{color:#8d601e;font-weight:650}.explanation-row{display:grid;gap:3px;border-left:3px solid #dbe6dd;padding:5px 9px;margin:8px 0;font-size:12px}.explanation-row small{color:#61716b}.coordination-dialog{width:min(680px,95vw);max-width:95vw}.instruction-card{border:1px solid #dde6df;border-radius:12px;padding:16px;margin:14px 0}.instruction-card>small{display:block}.instruction-card details{font-size:12px;margin-top:10px}.target-driver{display:flex!important;align-items:center;gap:10px;padding:5px 0}.target-driver input{width:auto!important;margin:0!important}.interval-times{display:grid;grid-template-columns:1fr 1fr;gap:12px}.interval-row{border:1px solid #dce5de;background:#f8faf8;border-radius:10px;padding:12px;margin:12px 0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.interval-row label{min-width:0}.interval-row label:nth-child(n+3){grid-column:1/-1}.interval-row input,.interval-row select{width:100%;min-width:0}.coordination-dialog fieldset{border:1px solid #dce5de;border-radius:10px;margin:15px 0}#instruction-drivers{max-height:180px;overflow:auto}#instruction-editor{border-top:1px solid #dce5de;margin-top:18px;padding-top:12px}#instruction-error,#coordination-error{color:#a43532}#stop-review-history small{display:block}#coordination{white-space:nowrap}@media(max-width:700px){.header-tools{flex-wrap:wrap}#coordination{font-size:11px;padding:6px}.interval-times{gap:7px}}

.planner-link{display:inline-flex;align-items:center;gap:6px;text-decoration:none;white-space:nowrap;padding:10px 12px;border:1px solid #cad6d1;border-radius:10px;color:#123d36;font:inherit;font-size:13px;font-weight:600}.planner-link:hover{background:#edf4f0}.planner-link[hidden]{display:none}
