/* SCAVL_P5_DR6_HFX1_FIX1_CSS_ASSET_PROOF_20260908 */
:root{
  --red:#d72631;--red-dark:#9e1820;--red-soft:#fff0f1;--black:#12171c;--charcoal:#28323a;
  --ink:#15212b;--muted:#6f7b84;--line:#d9e0e5;--line-strong:#c4ced5;--bg:#f2f4f6;--panel:#fff;
  --yellow:#ffd43b;--green:#3eb759;--grey:#8996a0;--blue:#2a6796;--sidebar:218px;--topbar:58px;
  --shadow:0 8px 24px rgba(19,28,36,.07)
}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}
button,input,select{font:inherit}button{cursor:pointer}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.eyebrow{margin:0;font-size:7px;font-weight:950;letter-spacing:1.15px;color:#8b96a0}.panel{background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 2px 8px rgba(20,31,40,.025)}
.app-shell{height:100vh;display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr)}.sidebar{height:100vh;position:relative;z-index:40;display:flex;flex-direction:column;padding:14px 12px;background:#fff;border-right:1px solid var(--line);overflow:hidden}.sidebar:after{content:"";position:absolute;left:39px;bottom:90px;width:138px;height:112px;background:none;opacity:.028;pointer-events:none}.brand-block{display:flex;gap:9px;align-items:center;padding:3px 6px 11px;border-bottom:1px solid #edf0f2}.brand-symbol{width:39px;height:39px;border-radius:9px;background:var(--red);display:grid;place-items:center;overflow:hidden}.brand-symbol img{width:29px;height:25px;filter:brightness(0) invert(1)}.brand-copy strong{display:block;font-size:14px}.brand-copy span{display:block;color:#7b8790;font-size:8px;margin-top:2px}.env-chip{margin:10px 3px 12px;padding:7px 8px;border-radius:7px;background:#fafafa;border:1px solid #e7ebee;display:flex;align-items:center;gap:6px;font-size:7.3px;color:#66737d}.env-chip i{width:6px;height:6px;border-radius:50%;background:#3db969;box-shadow:0 0 0 3px #e1f5e7}.main-nav{display:grid;gap:3px}.nav-item{border:0;background:transparent;color:#5c6872;padding:8px 8px;border-radius:8px;display:grid;grid-template-columns:20px 1fr;grid-template-rows:auto auto;text-align:left;align-items:center;column-gap:6px;width:100%}.nav-item>span{grid-row:1/3;font-weight:950;color:#a0a8af;text-align:center}.nav-item b{font-size:9px;line-height:1.05}.nav-item small{font-size:6.8px;color:#a0a8af;margin-top:2px}.nav-item:hover{background:#f8f9fa}.nav-item.active{background:var(--red-soft);color:var(--red-dark);box-shadow:inset 3px 0 0 var(--red)}.nav-item.active>span{color:var(--red)}.nav-item.active small{color:#b97378}.nav-item.disabled{opacity:.38;cursor:not-allowed}.sidebar-foot{margin-top:auto;position:relative;z-index:2}.legend-mini{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:7px 4px 9px;padding:8px;border-radius:8px;background:#f8f9fa;border:1px solid #e8ecef}.legend-mini span{font-size:6.5px;color:#68747d;display:flex;gap:4px;align-items:center}.dot{width:6px;height:6px;border-radius:2px;display:inline-block}.dot.good{background:var(--yellow)}.dot.close{background:var(--red)}.dot.gap{background:var(--green)}.dot.stale{background:var(--grey)}.dot.tfl-anchor{background:#174d73}.dot.tfl-stale{background:#aeb9c2}.dot.tfl-timetable{background:#2b9b5b}.dot.tfl-thin{background:#d7a621}.isolation-note{padding:7px 8px;margin:0 3px;border-left:3px solid var(--red);background:#fff7f7;border-radius:6px}.isolation-note b,.isolation-note span{display:block}.isolation-note b{font-size:7.2px;color:#90262d}.isolation-note span{font-size:6.6px;line-height:1.35;color:#8b7779;margin-top:2px}
.main{min-width:0;height:100vh;overflow:hidden}.topbar{height:var(--topbar);display:flex;align-items:center;padding:0 18px;background:#fff;border-bottom:1px solid var(--line)}.top-title h1{font-size:15px;margin:1px 0 0}.top-status{margin-left:auto;display:flex;gap:6px;align-items:center}.build-badge,.feed-state,.clock,.pill{border-radius:999px;font-size:6.8px;font-weight:950;letter-spacing:.45px;padding:5px 8px}.build-badge{background:#f0f2f4;color:#58646d}.feed-state{background:#eef1f3;color:#65717b}.feed-state.live{background:#e3f6e8;color:#23783a}.feed-state.warn{background:#fff4d8;color:#886300}.feed-state.error{background:#ffe8ea;color:#a42b35}.clock{background:#161c21;color:#fff;min-width:68px;text-align:center;font-variant-numeric:tabular-nums}
.workspace{height:calc(100vh - var(--topbar));padding:10px 12px 12px;overflow:hidden}.page{display:none;height:100%;min-height:0;overflow:hidden}.page.active{display:grid}.live-page{grid-template-rows:auto minmax(310px,1fr) minmax(160px,26%);gap:8px}.standard-page{grid-template-rows:auto minmax(0,1fr);gap:9px}.page-fill,.page-fill-panel{min-height:0;overflow:hidden}.page-fill-panel{display:flex;flex-direction:column;padding:11px}
.ops-toolbar{display:grid;grid-template-columns:minmax(620px,1.65fr) minmax(420px,1fr);gap:8px;align-items:stretch}.route-control,.ops-kpis{background:#fff;border:1px solid var(--line);border-radius:9px;min-width:0}.route-control{display:grid;grid-template-columns:42px minmax(190px,1.05fr) 150px minmax(180px,.9fr) 72px;gap:7px;align-items:end;padding:7px 8px}.route-badge{height:34px;border-radius:7px;background:var(--red);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:950}.route-control label{display:grid;gap:2px}.route-control label>span{font-size:6px;font-weight:950;letter-spacing:.65px;color:#75828c}.route-control select,.route-control input,.inline-controls select,.network-filter input,.network-filter select,.p2p-controls select{height:34px;border:1px solid var(--line-strong);border-radius:6px;background:#fff;color:#22303a;padding:0 8px;font-size:9px;outline:none;min-width:0}.route-control select:focus,.route-control input:focus,.inline-controls select:focus,.network-filter input:focus,.network-filter select:focus,.p2p-controls select:focus{border-color:#e36b72;box-shadow:0 0 0 2px #fff0f1}.button{border:0;border-radius:6px;padding:0 11px;height:34px;font-size:7px;font-weight:950;letter-spacing:.35px}.button.primary{background:var(--red);color:#fff}.button.primary:hover{background:var(--red-dark)}.button.secondary{background:#fff;border:1px solid var(--line-strong);color:#52606a}.ops-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:hidden}.ops-kpis article{padding:7px 8px;border-left:1px solid #edf0f2;display:grid;align-content:center}.ops-kpis article:first-child{border-left:0}.ops-kpis span{font-size:5.8px;color:#7a8790;font-weight:950;letter-spacing:.45px}.ops-kpis strong{font-size:15px;line-height:1.05;margin-top:2px;font-variant-numeric:tabular-nums}
.avl-board{min-height:0;overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr)}.board-empty{height:100%;display:grid;place-items:center;align-content:center;text-align:center;color:#89949d;gap:3px}.board-empty .route-icon{width:48px;height:34px;border-radius:7px;background:#f1f3f5;color:#8b96a0;display:grid;place-items:center;font-weight:950;font-size:9px;margin-bottom:4px}.board-empty b{font-size:12px;color:#41505b}.board-empty span{font-size:8px}.avl-header{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:7px 9px;background:linear-gradient(90deg,#fff 0,#fff 72%,#fff7f7 100%);border-bottom:1px solid var(--line);min-height:48px}.route-identity{display:flex;align-items:center;gap:8px;min-width:0}.route-number{min-width:44px;height:32px;border-radius:6px;background:var(--red);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:950;padding:0 8px}.route-identity h3{font-size:13px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:620px}.route-identity p{font-size:6.8px;color:#78848d;margin:1px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:720px}.avl-header-meta{display:flex;gap:5px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.status-chip{border:1px solid var(--line);background:#fff;padding:4px 6px;border-radius:999px;font-size:6px;font-weight:950;color:#65727c}.status-chip.live{background:#e8f7eb;border-color:#ccebd3;color:#27743b}.status-chip.warn{background:#fff5df;border-color:#f3dfaa;color:#8a6400}.status-chip.red{background:#ffebed;border-color:#f3c6ca;color:#a62933}
.operational-avl{position:relative;min-height:0;height:100%;overflow:hidden;background:#eef2f5}.operational-avl:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(215,38,49,.025),transparent 23%,transparent 77%,rgba(215,38,49,.025)),repeating-linear-gradient(90deg,rgba(255,255,255,.72) 0,rgba(255,255,255,.72) 54px,rgba(229,234,238,.72) 54px,rgba(229,234,238,.72) 108px);pointer-events:none}.lane{position:absolute;left:8px;right:8px;height:50%;overflow:hidden}.lane.top{top:0;border-bottom:1px solid rgba(143,155,165,.25)}.lane.bottom{bottom:0}.lane-header{position:absolute;left:7px;width:84px;height:28px;background:#17232c;color:#fff;border-radius:6px;padding:4px 6px;z-index:12;display:grid;align-content:center;box-shadow:0 2px 6px rgba(0,0,0,.12)}.lane.top .lane-header{top:8px}.lane.bottom .lane-header{bottom:8px}.lane-header b{font-size:7px;letter-spacing:.45px}.lane-header span{font-size:5.8px;color:#d8dfe4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lane-rail{position:absolute;left:17px;right:17px;height:3px;background:#27333c;border-radius:3px;box-shadow:0 1px 0 #fff;z-index:3}.lane.top .lane-rail{top:45%}.lane.bottom .lane-rail{bottom:45%}.terminal-cap{position:absolute;width:10px;height:24px;background:#111820;border-radius:2px;z-index:6}.lane.top .terminal-cap{top:calc(45% - 10px)}.lane.bottom .terminal-cap{bottom:calc(45% - 10px)}.terminal-cap.start{left:14px}.terminal-cap.end{right:14px}
.stop-node{position:absolute;transform:translateX(-50%);z-index:5}.lane.top .stop-node{top:calc(45% - 5px)}.lane.bottom .stop-node{bottom:calc(45% - 5px)}.stop-node .marker{display:block;width:11px;height:11px;border-radius:2px;background:#fff;border:1.7px solid #34434e;box-shadow:0 0 0 1px rgba(255,255,255,.55)}.stop-node.terminal .marker,.stop-node.key .marker{background:#202c35;border-color:#202c35}.stop-stem{position:absolute;left:4px;width:2px;background:#aeb8bf}.lane.top .stop-stem{top:10px;height:37px}.lane.bottom .stop-stem{bottom:10px;height:37px}.stop-name{position:absolute;white-space:nowrap;font-size:5.8px;font-weight:760;color:#33414b;max-width:78px;overflow:hidden;text-overflow:ellipsis;writing-mode:vertical-rl;text-orientation:mixed;line-height:1}.lane.top .stop-name{top:14px;left:10px;height:43px}.lane.bottom .stop-name{bottom:14px;right:10px;height:43px;transform:rotate(180deg)}.stop-node.key .stop-name{font-weight:950;color:#111a20}.bus-card{position:absolute;transform:translateX(-50%);width:56px;height:43px;z-index:15;border:1px solid rgba(0,0,0,.16);border-radius:3px;box-shadow:0 2px 5px rgba(14,22,28,.17);padding:3px 4px;text-align:center;color:#10151a;line-height:1.02}.lane.top .bus-card{top:5px}.lane.bottom .bus-card{bottom:5px}.bus-card.good{background:var(--yellow)}.bus-card.close{background:#ef3f48;color:#fff}.bus-card.gap{background:var(--green);color:#072c12}.bus-card.neutral,.bus-card.stale{background:#929da6;color:#fff}.bus-card.offroute{box-shadow:0 0 0 2px #ef7e25,0 2px 5px rgba(14,22,28,.17)}.bus-card b{display:block;font-size:6.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bus-card strong{display:block;font-size:8.6px;margin-top:2px}.bus-card small{display:block;font-size:5.5px;margin-top:2px;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bus-pointer{position:absolute;left:50%;transform:translateX(-50%);width:1px;height:13px;background:rgba(20,25,29,.62)}.lane.top .bus-pointer{bottom:-14px}.lane.bottom .bus-pointer{top:-14px}.bus-pointer:after{content:"";position:absolute;left:-3px;width:7px;height:7px;border-radius:50%;background:currentColor;border:1px solid rgba(0,0,0,.18)}.lane.top .bus-pointer:after{bottom:-2px}.lane.bottom .bus-pointer:after{top:-2px}.lane-empty{position:absolute;left:110px;right:30px;text-align:center;color:#9aa4ac;font-size:6.8px;z-index:2}.lane.top .lane-empty{top:14px}.lane.bottom .lane-empty{bottom:14px}.lane-empty span{background:rgba(255,255,255,.82);border:1px dashed #ccd4da;border-radius:5px;padding:4px 8px}.direction-hidden{position:absolute;inset:0;display:grid;place-items:center;color:#98a3aa;font-size:8px;background:rgba(245,247,248,.82);z-index:20}
.live-bottom-dock{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,.7fr);gap:8px;min-height:0}.compact-panel{padding:8px;min-height:0;display:flex;flex-direction:column}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:7px}.section-head.compact{margin-bottom:5px}.section-head h3{font-size:11px;margin:1px 0}.section-head p:not(.eyebrow){font-size:7px;color:#81909a;margin:1px 0 0}.pill.grey{background:#eef1f3;color:#68757e}.pill.blue{background:#eaf2f9;color:#22557d}.pill.green{background:#e6f6ea;color:#26743b}.pill.amber{background:#fff4dc;color:#8d6600}.pill.red{background:#ffeaec;color:#a32933}.pill.red-soft{background:#fff0f1;color:#9c2a31}.map-surface{min-height:0;flex:1;border-radius:6px;overflow:hidden;background:#eef1f3;border:1px solid #e1e6e9}.source-state{display:flex;align-items:center;gap:7px}.source-state.mini{padding:5px 6px;background:#fafbfb;border:1px solid #edf0f2;border-radius:6px;margin-bottom:5px}.source-state>i{width:8px;height:8px;border-radius:50%;background:var(--grey);box-shadow:0 0 0 3px #edf0f2;flex:0 0 auto}.source-state.live>i{background:#3eb75b;box-shadow:0 0 0 3px #e7f6ea}.source-state.warn>i{background:#e7a51d;box-shadow:0 0 0 3px #fff3d8}.source-state.error>i{background:var(--red);box-shadow:0 0 0 3px #ffe9ea}.source-state b,.source-state small{display:block}.source-state b{font-size:7px}.source-state small{font-size:6px;color:#73808b;margin-top:1px;line-height:1.25}.attention-list{display:grid;gap:4px;overflow:auto;min-height:0}.attention-item{border-left:3px solid #ccd4da;background:#f8f9fa;border-radius:5px;padding:5px 6px}.attention-item.red{border-color:var(--red);background:#fff4f5}.attention-item.amber{border-color:#e3a51e;background:#fffbef}.attention-item.green{border-color:#49b85f;background:#f1faf3}.attention-item b,.attention-item span{display:block}.attention-item b{font-size:7px}.attention-item span{font-size:6px;color:#75818a;margin-top:1px;line-height:1.25}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#fff;border:1px solid var(--line);border-left:4px solid var(--red);border-radius:9px;padding:9px 11px;min-height:58px}.page-head.slim{min-height:52px}.page-head h2{font-size:16px;margin:1px 0}.page-head p:not(.eyebrow){font-size:7.5px;color:#6f7d87;margin:0;line-height:1.3}.page-kpis{display:grid;grid-template-columns:repeat(4,95px);gap:5px}.page-kpis article{border-left:1px solid #e7ebee;padding-left:7px}.page-kpis span,.page-kpis small{display:block;font-size:5.5px;color:#849099}.page-kpis strong{display:block;font-size:15px;margin:1px 0}.inline-controls{display:flex;gap:6px;align-items:center}.inline-controls select{width:260px}.network-panel{min-height:0}.network-filter{display:flex;gap:6px}.network-filter input{width:180px}.network-filter select{width:120px}.network-table-wrap{overflow:auto;min-height:0;flex:1;border:1px solid #e4e8eb;border-radius:7px}.network-table{width:100%;border-collapse:collapse;min-width:860px}.network-table th{position:sticky;top:0;z-index:2;background:#f5f7f8;color:#68747e;font-size:6px;text-transform:uppercase;letter-spacing:.45px;text-align:left;padding:7px;border-bottom:1px solid var(--line)}.network-table td{padding:7px;border-bottom:1px solid #edf0f2;font-size:7.5px;vertical-align:middle}.network-table tbody tr:hover{background:#fffafa}.network-route{display:flex;align-items:center;gap:7px}.route-lozenge{min-width:33px;height:25px;padding:0 5px;border-radius:5px;background:#242f37;color:#fff;display:grid;place-items:center;font-size:7px;font-weight:950}.network-route b{display:block;font-size:8px}.network-route small{display:block;font-size:6px;color:#8b959d;margin-top:1px}.dir-health{display:flex;gap:3px}.dir-health span{font-size:6px;padding:3px 4px;border-radius:4px;background:#f1f3f5}.risk-tag{font-size:6px;font-weight:950;border-radius:999px;padding:4px 6px;display:inline-block}.risk-tag.red{background:#ffeaec;color:#a32933}.risk-tag.amber{background:#fff3d8;color:#8b6500}.risk-tag.green{background:#e8f7eb;color:#27743b}.risk-tag.thin{background:#eef1f3;color:#6c7881}.link-button{border:0;background:#fff0f1;color:#a0222c;border-radius:5px;padding:4px 6px;font-size:6px;font-weight:950}
.route360-content{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:8px}.route360-summary{display:grid;grid-template-columns:1.35fr repeat(4,.55fr);gap:6px}.route360-summary article{background:#fff;border:1px solid var(--line);border-radius:7px;padding:7px}.route360-summary article:first-child{border-left:4px solid var(--red)}.route360-summary span,.route360-summary small{display:block}.route360-summary span{font-size:5.8px;color:#77838c}.route360-summary strong{display:block;font-size:12px;margin:1px 0}.route360-summary small{font-size:5.8px;color:#9aa3aa}.route360-work{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,.7fr);gap:8px;min-height:0}.route360-map-card,.route360-stop-card{padding:8px;display:flex;flex-direction:column;min-height:0}.route360-map-card .map-surface{height:auto}.stop-list{min-height:0;overflow:auto;border:1px solid #e3e8eb;border-radius:6px}.stop-row{display:grid;grid-template-columns:24px 1fr auto;gap:6px;align-items:center;padding:6px 7px;border-bottom:1px solid #edf0f2}.stop-row:last-child{border-bottom:0}.stop-row .seq{width:19px;height:19px;border-radius:50%;display:grid;place-items:center;background:#f1f3f5;font-size:6px;font-weight:950}.stop-row b{font-size:7.5px}.stop-row small{font-size:6px;color:#8b959d}
.p2p-panel{min-height:0}.p2p-controls{display:grid;grid-template-columns:1.05fr .85fr 1.15fr 1.15fr;gap:7px;margin-bottom:8px}.p2p-controls label{display:grid;gap:3px}.p2p-controls label>span{font-size:6px;color:#687580;font-weight:950;letter-spacing:.5px;text-transform:uppercase}.p2p-results{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin-bottom:8px}.p2p-results article{border:1px solid var(--line);border-radius:7px;padding:8px;background:#fafbfb}.p2p-results span,.p2p-results small{display:block}.p2p-results span{font-size:6px;color:#74808a}.p2p-results strong{display:block;font-size:13px;margin:2px 0}.p2p-results small{font-size:6px;color:#99a2a9}.p2p-corridor{padding:10px;border-radius:7px;background:#f7f9fa;border:1px solid #e2e7ea;flex:1;min-height:130px;overflow:hidden}.p2p-line{height:100%;position:relative;min-height:110px}.p2p-line:before{content:"";position:absolute;left:2%;right:2%;top:48%;height:3px;background:#3f4b54}.p2p-stop{position:absolute;top:calc(48% - 6px);transform:translateX(-50%)}.p2p-stop i{display:block;width:13px;height:13px;border-radius:3px;background:#fff;border:2px solid #4f5c66}.p2p-stop.active i{background:var(--red);border-color:var(--red)}.p2p-stop span{position:absolute;top:17px;left:50%;transform:translateX(-50%) rotate(55deg);transform-origin:top center;white-space:nowrap;font-size:5.8px;color:#59656e}.p2p-vehicle{position:absolute;top:calc(48% - 30px);transform:translateX(-50%);background:#232e36;color:#fff;border-radius:4px;padding:3px 5px;font-size:5.8px;font-weight:950}
.risk-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(82px,1fr));gap:5px}.compact-summary{width:min(520px,45vw)}.risk-summary-grid article{border-radius:7px;padding:6px 8px;border:1px solid var(--line);background:#fff}.risk-summary-grid article.red{border-top:3px solid var(--red)}.risk-summary-grid article.amber{border-top:3px solid #e4a11f}.risk-summary-grid article.green{border-top:3px solid #45b75c}.risk-summary-grid article.grey{border-top:3px solid #a5afb7}.risk-summary-grid span{font-size:5.8px;color:#74808a}.risk-summary-grid strong{display:block;font-size:15px;margin:1px 0}.risk-summary-grid small{display:none}.risk-register{min-height:0}.risk-register-list{display:grid;gap:5px;overflow:auto;min-height:0}.risk-row{display:grid;grid-template-columns:48px minmax(140px,1fr) 1.25fr repeat(3,.42fr) auto;gap:7px;align-items:center;border:1px solid #e5e9ec;border-radius:6px;padding:6px}.risk-row b{font-size:7.5px}.risk-row span{font-size:6.5px;color:#74808a}.risk-row .metric{font-weight:850;color:#313d46}.risk-row.red{border-left:4px solid var(--red)}.risk-row.amber{border-left:4px solid #e4a11f}.risk-row.green{border-left:4px solid #45b75c}
.health-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.health-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px;min-height:82px}.health-card .health-icon{width:25px;height:25px;border-radius:6px;display:grid;place-items:center;background:#f0f3f5;margin-bottom:5px;font-size:9px}.health-card.good .health-icon{background:#e7f6ea;color:#2c7b41}.health-card.warn .health-icon{background:#fff4dc;color:#8d6600}.health-card.bad .health-icon{background:#ffeaec;color:#a32933}.health-card b,.health-card span,.health-card small{display:block}.health-card b{font-size:8px}.health-card span{font-size:6.5px;color:#66737d;margin-top:2px}.health-card small{font-size:6px;color:#97a0a8;margin-top:4px;line-height:1.25}.feed-inspector{min-height:0;padding:10px;display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:8px}.feed-inspector-head{display:flex;justify-content:space-between;gap:12px}.feed-inspector-head h3{font-size:11px;margin:1px 0}.feed-inspector-head p:not(.eyebrow){font-size:6.8px;color:#7d8992;margin:2px 0}.feed-slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.feed-slots article{display:flex;align-items:flex-start;gap:7px;padding:7px;border:1px solid #e4e8eb;border-radius:7px;background:#fafbfb}.feed-slots article>span{width:25px;height:25px;border-radius:5px;background:#202a32;color:#fff;display:grid;place-items:center;font-size:6px;font-weight:950}.feed-slots b,.feed-slots small{display:block}.feed-slots b{font-size:7.5px}.feed-slots small{font-size:6.2px;color:#7e8992;line-height:1.25;margin-top:2px}.feed-probe-results{min-height:0;overflow:auto;border:1px solid #e4e8eb;border-radius:7px;background:#f8fafb;padding:7px}.probe-empty{display:grid;place-items:center;height:100%;font-size:7px;color:#82909a}.probe-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.probe-card{background:#fff;border:1px solid #e3e8eb;border-radius:6px;padding:7px}.probe-card.good{border-top:3px solid #42b75a}.probe-card.bad{border-top:3px solid var(--red)}.probe-card.wait{border-top:3px solid #a5afb7}.probe-card b{font-size:7.5px}.probe-card .probe-status{display:block;font-size:6px;font-weight:950;margin:2px 0 5px}.probe-card dl{display:grid;grid-template-columns:74px 1fr;gap:3px 5px;margin:0}.probe-card dt,.probe-card dd{font-size:5.8px;margin:0}.probe-card dt{color:#89949c}.probe-card dd{color:#33414a;overflow-wrap:anywhere}
.leaflet-container{font-family:inherit}.leaflet-control-attribution{font-size:6px!important}.bus-map-marker{min-width:34px;padding:3px 5px;border-radius:5px;font-size:6px;font-weight:950;text-align:center;border:1px solid rgba(0,0,0,.14);box-shadow:0 2px 6px rgba(0,0,0,.22)}.bus-map-marker.good{background:var(--bus-status-color,var(--yellow));color:var(--bus-status-text,#1a1a15)}.bus-map-marker.close{background:var(--bus-status-color,#ef3f48);color:var(--bus-status-text,#fff)}.bus-map-marker.gap{background:var(--bus-status-color,var(--green));color:var(--bus-status-text,#092c12)}.bus-map-marker.neutral,.bus-map-marker.stale{background:var(--bus-status-color,#929da6);color:var(--bus-status-text,#fff)}.bus-popup b,.bus-popup small{display:block}.bus-popup b{font-size:10px}.bus-popup small{font-size:8px;margin-top:2px;color:#65717b}
@media(max-width:1180px){:root{--sidebar:190px}.ops-toolbar{grid-template-columns:1fr}.ops-kpis{display:none}.route-control{grid-template-columns:40px minmax(180px,1fr) 135px minmax(150px,.7fr) 65px}.live-page{grid-template-rows:auto minmax(310px,1fr) minmax(150px,25%)}.live-bottom-dock{grid-template-columns:1.5fr .8fr}.page-kpis{display:none}.route360-work{grid-template-columns:1.35fr .65fr}.compact-summary{width:50vw}}
@media(max-width:820px){html,body{overflow:auto}.app-shell{height:auto;min-height:100vh;grid-template-columns:1fr}.sidebar{height:auto;position:relative}.main-nav{grid-template-columns:repeat(2,1fr)}.sidebar-foot{display:none}.main{height:auto}.topbar{height:56px}.workspace{height:auto;overflow:visible}.page{height:auto;overflow:visible}.page.active{display:block}.live-page>*{margin-bottom:8px}.route-control{grid-template-columns:40px 1fr}.route-control .search-control,.route-control .button{grid-column:auto}.live-bottom-dock,.route360-work{grid-template-columns:1fr}.avl-board{height:480px}.map-surface{height:280px}.standard-page>*{margin-bottom:8px}.network-table-wrap,.risk-register-list,.stop-list,.feed-probe-results{max-height:420px}.p2p-controls{grid-template-columns:1fr 1fr}.p2p-results{grid-template-columns:1fr 1fr}.health-grid,.feed-slots,.probe-grid{grid-template-columns:1fr 1fr}.compact-summary{width:100%;margin-top:8px}.page-head{align-items:flex-start;flex-direction:column}.inline-controls{width:100%}.inline-controls select{flex:1}}
.operational-avl.single .lane{height:100%;top:0;bottom:auto}.operational-avl.single .lane.top .lane-rail{top:50%}.operational-avl.single .lane.bottom .lane-rail{bottom:50%}.operational-avl.single .lane.top .terminal-cap{top:calc(50% - 10px)}.operational-avl.single .lane.bottom .terminal-cap{bottom:calc(50% - 10px)}.operational-avl.single .lane.top .stop-node{top:calc(50% - 5px)}.operational-avl.single .lane.bottom .stop-node{bottom:calc(50% - 5px)}

/* ===== Tirana AVL operational control-room interface ===== */
:root{--tirana-red:#d81f2a;--tirana-navy:#173553;--tirana-blue:#3979b7;--avl-bg:#edf5fc;--avl-grid:#d9e6f1;--avl-rail:#2c6ca5;--avl-dark:#17242f}
.sidebar{background:linear-gradient(180deg,#fff 0,#fbfcfd 74%,#fff7f7 100%)}
.brand-symbol{background:linear-gradient(145deg,#e52632,#b80e1a);box-shadow:0 6px 18px rgba(216,31,42,.18)}
.nav-item.active{background:linear-gradient(90deg,#fff0f1,#fff8f8);box-shadow:inset 4px 0 0 var(--tirana-red)}
.topbar{box-shadow:0 2px 9px rgba(24,45,64,.05);position:relative;z-index:20}
.topbar:after{content:"";position:absolute;right:215px;width:54px;height:42px;background:none;opacity:.035;pointer-events:none}
.workspace{background:linear-gradient(180deg,#f4f7f9,#eef3f6)}
.control-deck{border-top:3px solid var(--tirana-red)}
.route-control{box-shadow:0 5px 15px rgba(23,53,83,.045)}
.route-badge{background:linear-gradient(145deg,var(--tirana-red),#a9141c);box-shadow:0 4px 12px rgba(216,31,42,.18)}
.button.primary{background:linear-gradient(180deg,#e3313c,#c61621);box-shadow:0 4px 10px rgba(216,31,42,.15)}
.ops-kpis{box-shadow:0 5px 15px rgba(23,53,83,.045)}
.ops-kpis article{position:relative}.ops-kpis article:before{content:"";position:absolute;left:8px;right:8px;top:0;height:2px;background:#dfe8ef}.ops-kpis article:first-child:before{background:var(--yellow)}.ops-kpis article:nth-child(2):before{background:var(--tirana-blue)}.ops-kpis article:nth-child(3):before{background:var(--tirana-red)}.ops-kpis article:nth-child(4):before{background:#7f8d99}
.avl-command-board,.p2p-avl-board{border:1px solid #bed0df;box-shadow:0 9px 28px rgba(31,72,105,.09);border-radius:12px}
.avl-header{background:linear-gradient(90deg,#183b5d 0,#225985 36%,#183b5d 100%);color:#fff;border-bottom:0;min-height:54px;padding:8px 11px}
.route-number{background:#fff;color:#173553;border:2px solid rgba(255,255,255,.55);min-width:50px;height:36px;border-radius:8px;font-size:15px}
.route-identity h3{color:#fff;font-size:14px}.route-identity p{color:#cfe1ef;font-size:7.2px}
.avl-header-meta .status-chip{background:rgba(255,255,255,.11);color:#f5f9fc;border-color:rgba(255,255,255,.18)}
.avl-header-meta .status-chip.live{background:#dff5e5;color:#206d36;border-color:#dff5e5}.avl-header-meta .status-chip.warn{background:#fff1c7;color:#7b5800;border-color:#fff1c7}.avl-header-meta .status-chip.red{background:#ffe1e4;color:#a21e28;border-color:#ffe1e4}
.operational-avl{background:var(--avl-bg);border-top:1px solid #cbdce9}
.operational-avl:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.78) 0,rgba(255,255,255,.78) 64px,rgba(219,230,240,.58) 64px,rgba(219,230,240,.58) 128px)}
.avl-watermark{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:52px;font-weight:1000;letter-spacing:8px;color:#17466d;opacity:.018;pointer-events:none;z-index:1}
.lane{left:14px;right:14px}
.lane.top{border-bottom:1px dashed rgba(51,99,138,.24)}
.lane-header{left:8px;width:118px;height:36px;border-radius:7px;background:linear-gradient(135deg,#0f2639,#183e60);box-shadow:0 4px 12px rgba(16,39,57,.18);padding:5px 7px}
.lane-header b{font-size:7.4px;color:#fff}.lane-header span{font-size:6.1px;color:#bcd2e3}
.lane-rail{left:21px;right:21px;height:3px;background:linear-gradient(90deg,#2f73b6,#163d61);box-shadow:0 1px 0 #fff,0 0 0 1px rgba(45,100,146,.08)}
.lane.bottom .lane-rail{background:linear-gradient(90deg,#202a32,#3b4c59)}
.terminal-cap{width:12px;height:27px;background:#173553;border-radius:3px;box-shadow:0 2px 5px rgba(0,0,0,.15)}
.stop-node .marker{width:12px;height:12px;border-radius:3px;border:2px solid #346992;background:#fff}.lane.bottom .stop-node .marker{border-color:#374650}
.stop-node.key .marker{background:#173553;border-color:#173553}.stop-node.terminal .marker{background:#d81f2a;border-color:#d81f2a}
.stop-node.in-section .marker{box-shadow:0 0 0 3px rgba(216,31,42,.14)}.stop-node.section-end .marker{background:#d81f2a;border-color:#d81f2a;box-shadow:0 0 0 4px rgba(216,31,42,.16)}
.stop-stem{background:#a8bfd0}.stop-name{font-size:6px;font-weight:800;color:#203646;max-width:86px}.stop-node.key .stop-name{color:#102636}
.section-band{position:absolute;height:9px;border-radius:999px;background:rgba(216,31,42,.18);border:1px solid rgba(216,31,42,.35);z-index:2}.lane.top .section-band{top:calc(45% - 3px)}.lane.bottom .section-band{bottom:calc(45% - 3px)}
.bus-card{width:64px;height:46px;border:0;border-radius:4px;padding:4px 5px;box-shadow:0 5px 12px rgba(18,30,39,.2);clip-path:polygon(0 0,85% 0,100% 50%,85% 100%,0 100%,8% 50%)}
.bus-card.good{background:#ffd432}.bus-card.close{background:#ed3a45}.bus-card.gap{background:#41b85b}.bus-card.neutral,.bus-card.stale{background:#8e9ba5}
.bus-card b{font-size:7px}.bus-card strong{font-size:9.4px}.bus-card small{font-size:5.7px}.lane.top .bus-card{top:8px}.lane.bottom .bus-card{bottom:8px}
.bus-pointer{height:17px}.lane.top .bus-pointer{bottom:-18px}.lane.bottom .bus-pointer{top:-18px}
.lane-empty{left:150px;right:120px;color:#6f8798}.lane-empty span{border:0;background:rgba(255,255,255,.65);box-shadow:0 1px 3px rgba(0,0,0,.04);letter-spacing:.45px;font-weight:900}
.lane-counters{position:absolute;right:8px;display:flex;gap:4px;z-index:11}.lane.top .lane-counters{top:8px}.lane.bottom .lane-counters{bottom:8px}.lane-counters span{font-size:5.8px;font-weight:900;color:#31536c;background:rgba(255,255,255,.85);border:1px solid #d2e0ea;border-radius:999px;padding:3px 5px}.lane-counters .bunch-count{color:#a52d35}.lane-counters .gap-count{color:#28783d}
.avl-legend{position:absolute;left:50%;bottom:5px;transform:translateX(-50%);display:flex;gap:11px;z-index:20;background:rgba(255,255,255,.9);border:1px solid #d7e1e8;border-radius:999px;padding:4px 9px;box-shadow:0 3px 10px rgba(31,72,105,.06)}
.avl-legend span{font-size:5.6px;font-weight:900;color:#607383;display:flex;align-items:center;gap:4px}.avl-legend i{width:7px;height:7px;border-radius:2px;display:inline-block}.avl-legend i.good{background:var(--yellow)}.avl-legend i.close{background:var(--red)}.avl-legend i.gap{background:var(--green)}.avl-legend i.stale{background:var(--grey)}
.live-page{grid-template-rows:auto minmax(355px,1fr) minmax(210px,31%);gap:9px}
.live-bottom-dock{grid-template-columns:minmax(0,2.15fr) minmax(300px,.75fr);gap:9px}.map-command-card{border-top:3px solid var(--tirana-blue)}
.map-card{overflow:hidden}.map-surface{background:#dfe9ef;border-color:#c8d7e2;min-height:170px;box-shadow:inset 0 0 0 1px #fff}.map-command-card .map-surface,.p2p-map-card .map-surface{min-height:0;height:100%}
.map-head-actions{display:flex;align-items:center;gap:8px}.map-key{font-size:5.8px;color:#72818c;display:flex;align-items:center;gap:4px}.map-key i{width:14px;height:3px;border-radius:3px;display:inline-block}.map-key .dir0{background:#2f73b6}.map-key .dir1{background:#202a32}
.bus-map-marker{min-width:48px;border-radius:6px;padding:4px 6px}.bus-map-marker b,.bus-map-marker span{display:block;line-height:1.05}.bus-map-marker b{font-size:7px}.bus-map-marker span{font-size:5.3px;opacity:.82;margin-top:1px}

/* Point-to-point now uses the same AVL control surface as Live AVL */
.p2p-page{grid-template-rows:auto auto minmax(330px,1fr) minmax(170px,27%);gap:8px}
.p2p-control-deck{display:grid;grid-template-columns:86px minmax(180px,1fr) 190px minmax(180px,1fr) minmax(180px,1fr) 110px;gap:7px;align-items:end;padding:8px 9px;border-top:3px solid var(--tirana-red);box-shadow:0 5px 15px rgba(23,53,83,.045)}
.p2p-route-id{height:36px;background:linear-gradient(145deg,#173553,#254f73);color:#fff;border-radius:7px;display:grid;place-items:center;align-content:center}.p2p-route-id span{font-size:10px;font-weight:1000}.p2p-route-id b{font-size:5.5px;letter-spacing:.7px;color:#cce0ef}
.p2p-control-deck label{display:grid;gap:2px}.p2p-control-deck label>span{font-size:6px;font-weight:950;letter-spacing:.55px;color:#697985}.p2p-control-deck select{height:36px;border:1px solid var(--line-strong);border-radius:6px;background:#fff;padding:0 8px;font-size:8.5px;color:#22303a;min-width:0}
.p2p-mini-state{height:36px;border-radius:7px;background:#f6f8fa;border:1px solid #dfe5e9;padding:5px 7px;display:grid;align-content:center}.p2p-mini-state span{font-size:5.4px;color:#75838e;font-weight:900}.p2p-mini-state strong{font-size:8px;color:#5e6d78}.p2p-mini-state strong.red{color:#b2242f}.p2p-mini-state strong.green{color:#21813b}.p2p-mini-state strong.good{color:#8a6900}
.operational-results{grid-template-columns:1.15fr repeat(4,minmax(0,1fr));gap:6px;margin:0}.operational-results article{min-height:50px;background:#fff;box-shadow:0 2px 7px rgba(23,53,83,.035)}
.p2p-avl-board{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}
.p2p-bottom-dock{display:grid;grid-template-columns:minmax(0,2.15fr) minmax(290px,.75fr);gap:8px;min-height:0}.p2p-map-card{padding:8px;display:flex;flex-direction:column;min-height:0;border-top:3px solid var(--tirana-red)}
.p2p-explain{padding:10px;border-top:3px solid #173553;min-height:0;overflow:hidden}.p2p-explain h3{font-size:11px;margin:3px 0 8px;color:#173553}.p2p-section-detail{display:grid;gap:5px}.p2p-section-detail b{font-size:17px;color:#17242f}.p2p-section-detail span{font-size:7px;color:#5f707d;line-height:1.35}.p2p-section-detail small{font-size:6.4px;color:#8a969f;line-height:1.35}

/* Route 360 map must remain readable rather than collapsing */
.route360-work{grid-template-columns:minmax(0,1.85fr) minmax(280px,.55fr)}.route360-map-card .map-surface{min-height:360px;height:100%}.route360-map-card{border-top:3px solid var(--tirana-blue)}

@media(max-width:1350px){.p2p-control-deck{grid-template-columns:70px minmax(150px,1fr) 155px minmax(150px,1fr) minmax(150px,1fr) 95px}.live-page{grid-template-rows:auto minmax(330px,1fr) minmax(190px,29%)}.bus-card{width:58px}.lane-counters{display:none}}
@media(max-width:1000px){.p2p-control-deck{grid-template-columns:70px 1fr 1fr 1fr}.p2p-mini-state{display:none}.p2p-control-deck label:nth-of-type(3),.p2p-control-deck label:nth-of-type(4){grid-column:auto}.p2p-bottom-dock,.live-bottom-dock{grid-template-columns:1.5fr .8fr}}


/* === V0.4.1 tightening override === */
.live-page{grid-template-rows:auto minmax(282px,.78fr) minmax(255px,.96fr)!important;gap:8px!important}
.avl-header{min-height:46px!important;padding:6px 10px!important}
.route-number{min-width:44px!important;height:32px!important;font-size:13px!important}
.route-identity h3{font-size:13px!important}
.route-identity p{font-size:6.8px!important}
.lane{left:10px!important;right:10px!important}
.lane-header{left:7px!important;width:102px!important;height:30px!important;padding:4px 6px!important}
.lane.top .lane-header{top:6px!important}
.lane.bottom .lane-header{bottom:6px!important}
.lane-header b{font-size:6.9px!important}
.lane-header span{font-size:5.7px!important}
.lane-rail{left:18px!important;right:18px!important;height:3px!important}
.terminal-cap{width:10px!important;height:22px!important}
.stop-node .marker{width:10px!important;height:10px!important;border-width:1.8px!important}
.stop-stem{width:2px!important;background:#b3c5d2!important}
.lane.top .stop-stem{top:9px!important;height:29px!important}
.lane.bottom .stop-stem{bottom:9px!important;height:29px!important}
.stop-name{font-size:5.3px!important;max-width:70px!important}
.lane.top .stop-name{top:12px!important;left:8px!important;height:34px!important}
.lane.bottom .stop-name{bottom:12px!important;right:8px!important;height:34px!important}
.bus-card{width:56px!important;height:40px!important;padding:3px 4px!important;box-shadow:0 4px 10px rgba(18,30,39,.16)!important}
.bus-card b{font-size:6.4px!important}.bus-card strong{font-size:8.6px!important}.bus-card small{font-size:5.2px!important}
.lane.top .bus-card{top:6px!important}.lane.bottom .bus-card{bottom:6px!important}
.bus-pointer{height:13px!important}.lane.top .bus-pointer{bottom:-14px!important}.lane.bottom .bus-pointer{top:-14px!important}
.lane-empty{left:124px!important;right:92px!important}
.lane-counters{right:6px!important}
.lane-counters span{font-size:5.4px!important;padding:2px 5px!important}
.avl-legend{bottom:4px!important;padding:3px 8px!important}
.avl-legend span{font-size:5.3px!important}
.live-bottom-dock{grid-template-columns:minmax(0,2.55fr) minmax(250px,.55fr)!important;gap:8px!important}
.map-command-card{padding:7px!important}
.map-command-card .map-surface{min-height:245px!important;height:100%!important}
.map-surface{border-radius:8px!important}
.bus-map-marker{min-width:56px!important;padding:5px 7px!important;border-radius:7px!important}
.bus-map-marker b{font-size:7.2px!important}.bus-map-marker span{font-size:5.6px!important}
.p2p-page{grid-template-rows:auto auto minmax(282px,.8fr) minmax(240px,.94fr)!important}
.p2p-bottom-dock{grid-template-columns:minmax(0,2.35fr) minmax(260px,.65fr)!important}
.p2p-map-card .map-surface{min-height:225px!important;height:100%!important}
.route360-work{grid-template-columns:minmax(0,2fr) minmax(265px,.52fr)!important}
.route360-map-card .map-surface{min-height:410px!important}
@media(max-width:1350px){.live-page{grid-template-rows:auto minmax(270px,.8fr) minmax(220px,.9fr)!important}.live-bottom-dock{grid-template-columns:minmax(0,2.2fr) minmax(230px,.6fr)!important}.map-command-card .map-surface{min-height:220px!important}.p2p-page{grid-template-rows:auto auto minmax(270px,.8fr) minmax(215px,.9fr)!important}}

.live-page{grid-template-rows:auto 246px minmax(0,1fr)!important;gap:8px!important}
.avl-board.avl-command-board{height:246px!important;min-height:246px!important;max-height:246px!important}
.avl-header{min-height:42px!important;height:42px!important;padding:5px 9px!important;background:linear-gradient(90deg,#f8fbfe 0,#eef5fa 70%,#fff5f5 100%)!important;color:#132838!important;border-bottom:1px solid #c9d8e3!important;box-shadow:inset 4px 0 0 var(--tirana-red)!important}
.route-number{min-width:42px!important;height:30px!important;border:0!important;border-radius:7px!important;background:var(--tirana-red)!important;color:#fff!important;font-size:12px!important}
.route-identity h3{color:#10283b!important;font-size:12.5px!important}.route-identity p{color:#60798d!important;font-size:6.5px!important}
.avl-header-meta .status-chip{background:#fff!important;color:#536b7e!important;border-color:#cfdae2!important;padding:3px 6px!important}
.avl-header-meta .status-chip.live{background:#e5f6e9!important;color:#216f36!important;border-color:#c8e9d0!important}.avl-header-meta .status-chip.warn{background:#fff4d7!important;color:#865f00!important;border-color:#f1dc9d!important}.avl-header-meta .status-chip.red{background:#ffe8ea!important;color:#a21f29!important;border-color:#f4c6ca!important}
.operational-avl{background:#eaf2f8!important;border-top:0!important}
.operational-avl:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.84) 0,rgba(255,255,255,.84) 52px,rgba(220,230,238,.58) 52px,rgba(220,230,238,.58) 104px)!important}
.avl-watermark{font-size:40px!important;letter-spacing:7px!important;opacity:.014!important}
.lane{left:8px!important;right:8px!important;height:50%!important}
.lane.top{top:0!important;border-bottom:1px dashed rgba(60,99,129,.14)!important}.lane.bottom{bottom:0!important}
.lane.top .lane-rail{top:62%!important}.lane.bottom .lane-rail{bottom:62%!important}
.lane-rail{left:15px!important;right:15px!important;height:2px!important;background:#496c87!important;box-shadow:0 1px 0 rgba(255,255,255,.9)!important}.lane.bottom .lane-rail{background:#49606f!important}
.lane-header{left:7px!important;width:105px!important;height:28px!important;border-radius:6px!important;padding:4px 6px!important;background:#152532!important;box-shadow:0 3px 8px rgba(17,38,54,.16)!important}
.lane.top .lane-header{top:4px!important}.lane.bottom .lane-header{bottom:4px!important}.lane-header b{font-size:6.7px!important}.lane-header span{font-size:5.5px!important;color:#c9d6df!important}
.lane.top .terminal-cap{top:calc(62% - 10px)!important}.lane.bottom .terminal-cap{bottom:calc(62% - 10px)!important}.terminal-cap{width:9px!important;height:21px!important;background:#152532!important}
.lane.top .stop-node{top:calc(62% - 4px)!important}.lane.bottom .stop-node{bottom:calc(62% - 4px)!important}.stop-node .marker{width:9px!important;height:9px!important;border:1.6px solid #466e8d!important;border-radius:2px!important}.lane.bottom .stop-node .marker{border-color:#516674!important}.stop-node.key .marker{background:#19364d!important;border-color:#19364d!important}.stop-node.terminal .marker{background:var(--tirana-red)!important;border-color:var(--tirana-red)!important}
.stop-stem{left:3px!important;width:1.5px!important;background:#a8bac7!important}.lane.top .stop-stem{top:8px!important;height:27px!important}.lane.bottom .stop-stem{bottom:8px!important;height:27px!important}
.stop-name{font-size:5px!important;font-weight:850!important;color:#263d4d!important;max-width:64px!important}.lane.top .stop-name{top:10px!important;left:7px!important;height:30px!important}.lane.bottom .stop-name{bottom:10px!important;right:7px!important;height:30px!important}
.bus-card{width:58px!important;height:39px!important;border-radius:3px!important;padding:3px 4px!important;box-shadow:0 3px 7px rgba(18,30,39,.17)!important;clip-path:polygon(0 0,84% 0,100% 50%,84% 100%,0 100%,9% 50%)!important}.lane.top .bus-card{top:4px!important}.lane.bottom .bus-card{bottom:4px!important}.bus-card b{font-size:6.4px!important}.bus-card strong{font-size:8.7px!important}.bus-card small{font-size:5.1px!important}.bus-pointer{height:14px!important}.lane.top .bus-pointer{bottom:-15px!important}.lane.bottom .bus-pointer{top:-15px!important}
.lane-empty{left:122px!important;right:94px!important;font-size:6px!important}.lane.top .lane-empty{top:8px!important}.lane.bottom .lane-empty{bottom:8px!important}.lane-empty span{padding:3px 7px!important}
.lane-counters{right:5px!important;gap:3px!important}.lane.top .lane-counters{top:4px!important}.lane.bottom .lane-counters{bottom:4px!important}.lane-counters span{font-size:5px!important;padding:2px 4px!important}
.avl-legend{display:none!important}
.live-bottom-dock{grid-template-columns:minmax(0,3fr) 260px!important;gap:8px!important;min-height:0!important}
.map-command-card{padding:7px!important;border-top:3px solid var(--tirana-red)!important}.map-command-card .section-head{min-height:28px!important;margin-bottom:5px!important}.map-command-card .map-surface{min-height:0!important;height:100%!important;border:1px solid #b9cbd8!important;box-shadow:inset 0 0 0 1px #fff,0 5px 15px rgba(23,53,83,.06)!important}
.attention-card{padding:7px!important;border-top:3px solid #183b55!important}.attention-card .section-head{margin-bottom:4px!important}.attention-list{gap:3px!important}
.p2p-page{grid-template-rows:auto auto 246px minmax(0,1fr)!important;gap:8px!important}.p2p-avl-board{height:246px!important;min-height:246px!important;max-height:246px!important}.p2p-bottom-dock{grid-template-columns:minmax(0,3fr) 280px!important;gap:8px!important}.p2p-map-card{padding:7px!important}.p2p-map-card .map-surface{min-height:0!important;height:100%!important}.p2p-explain{padding:8px!important}
.route360-work{grid-template-columns:minmax(0,3fr) 280px!important;gap:8px!important}.route360-map-card .map-surface{min-height:0!important;height:100%!important}
.map-key .dir0{background:var(--tirana-red)!important}.map-key .dir1{background:#275f89!important}
@media(max-width:1350px){.live-page{grid-template-rows:auto 236px minmax(0,1fr)!important}.avl-board.avl-command-board{height:236px!important;min-height:236px!important;max-height:236px!important}.live-bottom-dock{grid-template-columns:minmax(0,2.6fr) 230px!important}.p2p-page{grid-template-rows:auto auto 236px minmax(0,1fr)!important}.p2p-avl-board{height:236px!important;min-height:236px!important;max-height:236px!important}}


/* === Tirana AVL V0.6.1 — compact OCC + stable-map refresh === */
.live-page{grid-template-rows:auto 214px minmax(0,1fr)!important;gap:7px!important}
.avl-board.avl-command-board{height:214px!important;min-height:214px!important;max-height:214px!important;border-radius:10px!important}
.avl-header{min-height:38px!important;height:38px!important;padding:4px 8px!important}
.route-number{min-width:39px!important;height:27px!important;font-size:11.5px!important}
.route-identity{gap:6px!important}.route-identity h3{font-size:11.8px!important}.route-identity p{font-size:6.1px!important}
.avl-header-meta{gap:3px!important}.avl-header-meta .status-chip{font-size:5.4px!important;padding:2px 5px!important}
.operational-avl{background:#edf4f9!important}
.operational-avl:before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.88) 0,rgba(255,255,255,.88) 50px,rgba(218,228,236,.60) 50px,rgba(218,228,236,.60) 100px)!important}
.avl-watermark{font-size:34px!important;letter-spacing:6px!important;opacity:.012!important}
.lane{left:7px!important;right:7px!important;height:50%!important}
.lane.top .lane-rail{top:70%!important}.lane.bottom .lane-rail{bottom:70%!important}
.lane-rail{left:14px!important;right:14px!important;height:2px!important;background:#234e6d!important}.lane.bottom .lane-rail{background:#354956!important}
.lane-header{width:96px!important;height:25px!important;padding:3px 5px!important;border-radius:5px!important}
.lane.top .lane-header{top:3px!important}.lane.bottom .lane-header{bottom:3px!important}
.lane-header b{font-size:6.3px!important}.lane-header span{font-size:5.1px!important}
.lane.top .terminal-cap{top:calc(70% - 9px)!important}.lane.bottom .terminal-cap{bottom:calc(70% - 9px)!important}.terminal-cap{width:8px!important;height:19px!important}
.lane.top .stop-node{top:calc(70% - 4px)!important}.lane.bottom .stop-node{bottom:calc(70% - 4px)!important}
.stop-node .marker{width:8px!important;height:8px!important;border-width:1.4px!important}
.stop-stem{left:3px!important;width:1px!important}.lane.top .stop-stem{top:7px!important;height:20px!important}.lane.bottom .stop-stem{bottom:7px!important;height:20px!important}
.stop-name{font-size:4.7px!important;max-width:58px!important}.lane.top .stop-name{top:9px!important;left:6px!important;height:23px!important}.lane.bottom .stop-name{bottom:9px!important;right:6px!important;height:23px!important}
.bus-card{width:55px!important;height:37px!important;padding:3px 4px!important}.lane.top .bus-card{top:3px!important}.lane.bottom .bus-card{bottom:3px!important}
.bus-card b{font-size:6.1px!important}.bus-card strong{font-size:8.2px!important}.bus-card small{font-size:4.9px!important}
.bus-pointer{height:12px!important}.lane.top .bus-pointer{bottom:-13px!important}.lane.bottom .bus-pointer{top:-13px!important}
.lane-empty{left:105px!important;right:82px!important;font-size:5.6px!important}.lane.top .lane-empty{top:6px!important}.lane.bottom .lane-empty{bottom:6px!important}
.lane-counters{right:4px!important;gap:2px!important}.lane.top .lane-counters{top:3px!important}.lane.bottom .lane-counters{bottom:3px!important}.lane-counters span{font-size:4.8px!important;padding:2px 3px!important}
.live-bottom-dock{grid-template-columns:minmax(0,1fr) 230px!important;gap:7px!important;min-height:0!important}
.map-command-card{padding:6px!important;border-top:3px solid var(--tirana-red)!important;box-shadow:0 8px 22px rgba(17,55,83,.09)!important}
.map-command-card .section-head{min-height:25px!important;margin-bottom:4px!important}.map-command-card .section-head h3{font-size:10.5px!important}
.map-command-card .map-surface{min-height:290px!important;height:100%!important;border:1px solid #9fb7c8!important}
.attention-card{padding:6px!important}.attention-card .section-head h3{font-size:10px!important}.attention-item{padding:4px 5px!important}.attention-item b{font-size:6.4px!important}.attention-item span{font-size:5.6px!important}
.p2p-page{grid-template-rows:auto auto 214px minmax(0,1fr)!important;gap:7px!important}.p2p-avl-board{height:214px!important;min-height:214px!important;max-height:214px!important}.p2p-bottom-dock{grid-template-columns:minmax(0,1fr) 250px!important;gap:7px!important}.p2p-map-card .map-surface{min-height:275px!important;height:100%!important}
.route360-work{grid-template-columns:minmax(0,1fr) 260px!important;gap:7px!important}.route360-map-card .map-surface{min-height:470px!important;height:100%!important}
@media(max-width:1350px){.live-page{grid-template-rows:auto 204px minmax(0,1fr)!important}.avl-board.avl-command-board{height:204px!important;min-height:204px!important;max-height:204px!important}.live-bottom-dock{grid-template-columns:minmax(0,1fr) 210px!important}.map-command-card .map-surface{min-height:245px!important}.p2p-page{grid-template-rows:auto auto 204px minmax(0,1fr)!important}.p2p-avl-board{height:204px!important;min-height:204px!important;max-height:204px!important}}

/* === Tirana AVL V0.6.1 — secure access + in-place section analysis === */
.route-control{grid-template-columns:42px minmax(180px,1.05fr) 145px minmax(150px,.75fr) 102px 72px!important}
.section-button{white-space:nowrap;border-color:#9eb3c2!important;color:#173553!important;background:#f7fafc!important}
.section-button:hover{background:#edf5fa!important}
.health-grid{grid-template-columns:repeat(5,minmax(0,1fr))!important}

.user-menu{display:flex;align-items:center;gap:4px;height:30px}.user-button{height:30px;border:1px solid #dfe5e9;border-radius:999px;background:#fff;display:grid;grid-template-columns:24px auto;grid-template-rows:1fr 1fr;column-gap:5px;align-items:center;padding:2px 9px 2px 3px;color:#263742;cursor:default}.user-button>span{grid-row:1/3;width:24px;height:24px;border-radius:50%;background:#173553;color:#fff;display:grid;place-items:center;font-size:8px;font-weight:950}.user-button b{font-size:6.7px;line-height:1;align-self:end;text-align:left;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-button small{font-size:5.2px;color:#82909a;line-height:1;align-self:start;text-align:left}.logout-button{width:28px;height:28px;border:1px solid #dfe5e9;background:#fff;border-radius:50%;font-size:11px;color:#667681}.logout-button:hover{color:var(--red);border-color:#efc4c7;background:#fff7f7}

.login-overlay[hidden]{display:none}.login-overlay{position:fixed;inset:0;z-index:2000;background:linear-gradient(135deg,rgba(244,247,249,.97),rgba(255,255,255,.98));display:grid;place-items:center}.login-overlay:before{content:"";position:absolute;inset:0;background:none;opacity:.025;pointer-events:none}.login-card{position:relative;width:min(430px,calc(100vw - 32px));background:#fff;border:1px solid #dbe2e7;border-radius:16px;box-shadow:0 22px 70px rgba(20,40,55,.14);padding:22px}.login-brand{display:flex;align-items:center;gap:12px;padding-bottom:18px;border-bottom:1px solid #edf1f3}.login-symbol{width:54px;height:54px;border-radius:13px;background:var(--red);display:grid;place-items:center;box-shadow:0 8px 20px rgba(215,38,49,.17)}.login-symbol img{width:40px;filter:brightness(0) invert(1)}.login-brand h2{font-size:22px;margin:2px 0 1px;color:#14232e}.login-brand span{font-size:8px;color:#7f8c95}.login-card form{display:grid;gap:12px;margin-top:18px}.login-card label{display:grid;gap:5px}.login-card label>span{font-size:6.5px;font-weight:950;letter-spacing:.75px;color:#687985}.login-card input{height:42px;border:1px solid #cfd8de;border-radius:8px;padding:0 11px;font-size:10px;outline:none}.login-card input:focus{border-color:#d9545c;box-shadow:0 0 0 3px #fff0f1}.login-submit{height:42px!important;font-size:8px!important;margin-top:2px}.login-message{min-height:16px;font-size:7px;color:#798791;text-align:center}.login-security{margin-top:14px;padding-top:12px;border-top:1px solid #edf1f3;font-size:6.4px;color:#97a1a9;text-align:center}

.section-drawer{position:fixed;z-index:900;right:-410px;top:calc(var(--topbar) + 10px);width:390px;max-width:calc(100vw - 30px);height:auto;max-height:calc(100vh - var(--topbar) - 20px);overflow:auto;background:#fff;border:1px solid #cfdbe3;border-right:0;border-radius:12px 0 0 12px;box-shadow:-16px 20px 55px rgba(20,45,65,.16);padding:13px;transition:right .22s ease}.section-drawer.open{right:0}.section-drawer-head{display:flex;justify-content:space-between;gap:10px;padding-bottom:11px;border-bottom:1px solid #e9eef1}.section-drawer-head h3{font-size:15px;margin:2px 0 1px;color:#173553}.section-drawer-head span{font-size:6.8px;color:#7b8993;line-height:1.35}.drawer-close{width:30px;height:30px;border:1px solid #dce3e8;background:#fff;border-radius:50%;font-size:20px;color:#64747f;line-height:1}.drawer-close:hover{background:#fff2f3;color:var(--red)}.section-drawer-controls{display:grid;gap:8px;margin-top:11px}.section-drawer-controls label{display:grid;gap:3px}.section-drawer-controls label>span{font-size:6px;font-weight:950;letter-spacing:.6px;color:#6b7b86}.section-drawer-controls select{height:36px;border:1px solid #cfd8de;border-radius:7px;background:#fff;padding:0 8px;font-size:8.5px;color:#22333f}.section-metrics{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}.section-metrics article{border:1px solid #e1e7eb;background:#f8fafb;border-radius:7px;padding:7px}.section-metrics span,.section-metrics strong{display:block}.section-metrics span{font-size:5.7px;color:#7e8c96;font-weight:950;letter-spacing:.45px}.section-metrics strong{font-size:11px;color:#18364e;margin-top:2px}.section-status{margin-top:8px;border-left:3px solid var(--red);background:#fff7f7;border-radius:6px;padding:8px}.section-status b,.section-status span{display:block}.section-status b{font-size:8px;color:#9f2630}.section-status span{font-size:6.5px;color:#78858e;margin-top:2px;line-height:1.35}.clear-section{width:100%;margin-top:10px}

@media(max-width:1350px){.route-control{grid-template-columns:40px minmax(160px,1fr) 130px minmax(130px,.7fr) 90px 65px!important}.health-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}.user-button b,.user-button small{display:none}.user-button{grid-template-columns:24px;padding-right:3px}}
@media(max-width:820px){.health-grid{grid-template-columns:1fr 1fr!important}.section-drawer{top:8px;right:-100%;width:96vw;max-height:calc(100vh - 16px);border-radius:12px}.section-drawer.open{right:2vw}.user-menu{display:none}}

/* === Access administration foundation === */
.sidebar:after{display:none!important}
.brand-block.municipality-brand{display:block!important;padding:4px 5px 10px!important;text-align:left}
.municipality-logo{display:block;width:174px;max-width:100%;height:auto;object-fit:contain;object-position:left center;margin:0 0 3px}
.municipality-brand .brand-copy{padding-left:4px}
.municipality-brand .brand-copy strong{font-size:11px;color:#18242d}.municipality-brand .brand-copy span{font-size:6.8px}
.login-overlay:before{display:none!important}
.municipality-login-brand{display:grid!important;grid-template-columns:145px 1fr!important;gap:15px!important}
.municipality-login-logo{width:145px;max-height:84px;object-fit:contain;object-position:left center}
.admin-only-nav[hidden]{display:none!important}

.access-admin-layout{display:grid;grid-template-columns:minmax(270px,.72fr) minmax(0,1.65fr);gap:9px;min-height:0}
.access-user-list-panel,.access-editor-panel{padding:10px;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.access-users-list{min-height:0;overflow:auto;display:grid;gap:5px}
.access-user-row{width:100%;border:1px solid #e0e6ea;background:#fff;border-radius:8px;padding:8px;display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:7px;align-items:center;text-align:left;color:#22313c}
.access-user-row:hover{border-color:#c4d4df;background:#f9fbfc}.access-user-row.active{border-color:#d72631;box-shadow:inset 3px 0 0 #d72631;background:#fff7f7}
.access-user-row .user-avatar{width:30px;height:30px;border-radius:50%;background:#173553;color:#fff;display:grid;place-items:center;font-size:8px;font-weight:950}
.access-user-row b,.access-user-row span,.access-user-row small{display:block}.access-user-row b{font-size:7.8px}.access-user-row span{font-size:6.2px;color:#73828d;margin-top:1px}.access-user-row small{font-size:5.8px;color:#9a6468;margin-top:2px}
.access-user-row .route-count{font-size:6px;font-weight:950;color:#31536c;background:#edf4f8;padding:4px 6px;border-radius:999px;white-space:nowrap}
.access-editor-panel{overflow:auto}.access-user-form{display:grid;gap:9px;min-height:0}.access-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.access-user-form label{display:grid;gap:3px}.access-user-form label>span{font-size:5.8px;font-weight:950;letter-spacing:.6px;color:#687985}.access-user-form input,.access-user-form select{height:36px;border:1px solid #cad5dc;border-radius:7px;padding:0 8px;background:#fff;font-size:8.5px;color:#22333e}
.access-user-form input:focus,.access-user-form select:focus{outline:none;border-color:#d9545c;box-shadow:0 0 0 2px #fff0f1}.password-field{grid-column:1/-1}.password-field small{font-size:5.8px;color:#87939c}
.city-access-field{grid-column:1/-1}.city-access-toggle-card{height:auto!important;min-height:54px;border:1px solid #ccd8df;border-radius:8px;background:#f7fafc;padding:8px 10px!important;display:flex!important;align-items:center;gap:9px}.city-access-toggle-card input{width:17px!important;height:17px!important;min-width:17px;padding:0!important;margin:0!important;accent-color:#d72631}.city-access-toggle-card div{min-width:0}.city-access-toggle-card b,.city-access-toggle-card small{display:block}.city-access-toggle-card b{font-size:7.4px;color:#173553}.city-access-toggle-card b span{font-size:inherit!important;color:inherit!important;letter-spacing:0!important}.city-access-toggle-card small{font-size:5.8px;color:#71818c;line-height:1.35;margin-top:2px}.access-user-row.unallocated{opacity:.72}.access-user-row.unallocated .route-count{background:#f0f2f4;color:#77858e}
.route-allocation-head{display:flex;justify-content:space-between;align-items:end;gap:10px;border-top:1px solid #e8edf0;padding-top:8px}.route-allocation-head b,.route-allocation-head span{display:block}.route-allocation-head b{font-size:7px;color:#173553}.route-allocation-head span{font-size:6px;color:#7c8992;margin-top:2px}.route-allocation-head>div:last-child{display:flex;gap:4px}
.route-allocation-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;max-height:330px;overflow:auto;padding:2px}.route-access-check{border:1px solid #dce4e9;border-radius:7px;background:#f9fbfc;padding:6px;display:flex!important;grid-template-columns:none!important;align-items:center;gap:6px;cursor:pointer}.route-access-check:hover{border-color:#b9ccd8}.route-access-check input{width:14px;height:14px;margin:0;accent-color:#d72631}.route-access-check div{min-width:0}.route-access-check b,.route-access-check small{display:block}.route-access-check b{font-size:7px;color:#1f3341}.route-access-check small{font-size:5.5px;color:#82909a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.route-access-check.disabled{opacity:.48;cursor:not-allowed}
.access-save-row{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid #e9eef1;padding-top:8px}.access-save-row>span{font-size:6.4px;color:#687984}.access-save-row>span.error{color:#b3242e}.access-save-row>span.success{color:#287a3e}.access-save-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px}.access-editor-empty{flex:1;display:grid;place-items:center;align-content:center;text-align:center;color:#85929b;gap:3px}.access-editor-empty b{font-size:11px;color:#455660}.access-editor-empty span{font-size:7px;max-width:330px;line-height:1.4}

@media(max-width:1350px){.municipality-logo{width:155px}.route-allocation-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.access-admin-layout{grid-template-columns:250px minmax(0,1fr)}}
@media(max-width:820px){.municipality-logo{width:190px}.access-admin-layout{display:block}.access-user-list-panel{max-height:350px;margin-bottom:8px}.route-allocation-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.access-form-grid{grid-template-columns:1fr}}


/* === Stable-map access foundation === */
.sidebar:after,.topbar:after,.login-overlay:before{display:none!important;background:none!important}
.municipality-logo{width:184px!important;max-height:106px!important;object-fit:contain!important;object-position:left center!important}
.municipality-brand .brand-copy{display:none!important}
.municipality-login-logo{width:170px!important;max-height:100px!important}

/* === Tirana AVL V0.8.1 — ADEM Signature branding + editable admin + locked map viewport === */
.brand-block.signature-brand{display:grid!important;justify-items:center!important;gap:4px!important;padding:0 3px 9px!important;text-align:center!important}
.brand-art-frame{position:relative;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at 50% 48%,rgba(25,25,25,.08) 0,rgba(215,38,49,.035) 54%,transparent 78%)}
.brand-art-frame:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 52%,rgba(255,255,255,.24) 69%,rgba(255,255,255,.92) 97%)}
.brand-art-frame img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;-webkit-mask-image:radial-gradient(ellipse at center,#000 58%,rgba(0,0,0,.92) 70%,rgba(0,0,0,.25) 88%,transparent 100%);mask-image:radial-gradient(ellipse at center,#000 58%,rgba(0,0,0,.92) 70%,rgba(0,0,0,.25) 88%,transparent 100%)}
.sidebar-art{width:150px;height:150px;border-radius:22px;margin:-3px auto -6px}.signature-brand .brand-copy{display:block!important;padding:0!important}.signature-brand .brand-copy strong{font-size:11px!important;color:#17242e!important}.signature-brand .brand-copy span{font-size:6.5px!important;color:#7f8b94!important}
.signature-login-brand{display:grid!important;grid-template-columns:188px minmax(0,1fr)!important;gap:18px!important;align-items:center!important}.login-art{width:188px;height:188px;border-radius:32px}.signature-login-brand h2{font-size:25px!important;margin:2px 0 2px!important}.signature-login-brand span{display:block;font-size:8px!important;color:#637682!important}.signature-login-brand small{display:block;font-size:6px;color:#9aa5ad;margin-top:6px}.login-card{width:min(620px,calc(100vw - 32px))!important}

.access-admin-layout{grid-template-columns:minmax(245px,.65fr) minmax(470px,1.45fr) minmax(285px,.72fr)!important;gap:8px!important}
.access-user-list-panel,.access-editor-panel,.branding-admin-panel{min-height:0!important}.branding-admin-panel{padding:10px;display:flex;flex-direction:column;overflow:auto;border-top:3px solid var(--red)}
.view-allocation-head{display:flex;justify-content:space-between;align-items:end;gap:10px;border-top:1px solid #e8edf0;padding-top:8px}.view-allocation-head b,.view-allocation-head span{display:block}.view-allocation-head b{font-size:7px;color:#173553}.view-allocation-head span{font-size:6px;color:#7c8992;margin-top:2px}.view-allocation-head>div:last-child{display:flex;gap:4px}
.view-allocation-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.view-access-check{border:1px solid #dce4e9;border-radius:7px;background:#f9fbfc;padding:6px;display:flex!important;align-items:center;gap:6px;cursor:pointer;min-width:0}.view-access-check:hover{border-color:#b9ccd8}.view-access-check input{width:14px!important;height:14px!important;margin:0!important;accent-color:#d72631;flex:0 0 auto}.view-access-check div{min-width:0}.view-access-check b,.view-access-check small{display:block}.view-access-check b{font-size:6.8px;color:#1f3341}.view-access-check small{font-size:5.2px;color:#82909a;white-space:normal;line-height:1.2;margin-top:1px}.view-access-check.disabled{opacity:.48;cursor:not-allowed}
.branding-preview{width:100%;aspect-ratio:1/1;max-height:300px;border-radius:18px;margin:2px 0 9px;background-color:#fff}.admin-art img{object-fit:cover}.branding-form{display:grid;gap:8px}.branding-form label{display:grid;gap:3px}.branding-form label>span{font-size:5.8px;font-weight:950;letter-spacing:.6px;color:#687985}.branding-form input[type="text"],.branding-form input:not([type]){height:36px;border:1px solid #cad5dc;border-radius:7px;padding:0 8px;background:#fff;font-size:8.5px;color:#22333e}.branding-form input[type="file"]{border:1px dashed #c9d5dd;border-radius:8px;padding:8px;background:#fafcfd;font-size:7px}.branding-file small{font-size:5.8px;color:#87939c;line-height:1.35}.branding-save-row{display:grid;gap:6px;border-top:1px solid #e9eef1;padding-top:8px}.branding-save-row span{font-size:6.2px;color:#687984;line-height:1.35}.branding-save-row .button{width:100%}

/* Hard viewport rule: no observer-driven invalidate or automatic re-centre during live refresh. */
.map-surface.leaflet-container{contain:layout paint;will-change:auto}.leaflet-fade-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-zoom-animated{transition:none!important}

@media(max-width:1500px){.access-admin-layout{grid-template-columns:230px minmax(430px,1fr) 260px!important}.view-allocation-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.sidebar-art{width:132px;height:132px}.branding-preview{max-height:240px}}
@media(max-width:1180px){.access-admin-layout{grid-template-columns:230px minmax(0,1fr)!important}.branding-admin-panel{grid-column:1/-1;max-height:280px}.branding-preview{width:170px;max-height:170px;float:left}.branding-form{grid-template-columns:1fr 1fr}.branding-file,.branding-save-row{grid-column:1/-1}}
@media(max-width:820px){.signature-login-brand{grid-template-columns:1fr!important;text-align:center}.login-art{width:170px;height:170px;margin:auto}.access-admin-layout{display:block!important}.branding-admin-panel{margin-top:8px;max-height:none}.view-allocation-grid{grid-template-columns:1fr 1fr}}

/* ===== Enterprise administration & configurable control room foundation ===== */
:root{--map-stop-label-px:11px;--map-vehicle-label-px:11px;--avl-stop-label-px:6px;--avl-bus-scale:1;--avl-board-height:214px}
.sidebar-foot{padding-top:4px}.isolation-note{display:none!important}.env-chip{display:none!important}
.city-switcher{display:flex;align-items:center;gap:7px;height:34px;min-width:150px;padding:0 10px;border:1px solid #dfe5e9;border-radius:999px;background:#fff}.city-switcher>span{font-size:6.4px;font-weight:950;letter-spacing:.65px;color:#84919a}.city-switcher select{border:0;background:transparent;font-size:9px;font-weight:900;color:#263743;outline:none;min-width:96px;max-width:185px;padding-right:3px}.main-language-toggle{flex:0 0 auto;margin-right:3px}
.stop-name{font-size:var(--avl-stop-label-px)!important}.bus-card{transform:translateX(-50%) scale(var(--avl-bus-scale))!important}.avl-command-board{height:var(--avl-board-height)!important;min-height:var(--avl-board-height)!important;max-height:var(--avl-board-height)!important}
.operational-stop-label{background:rgba(255,255,255,.92)!important;border:1px solid rgba(24,61,92,.18)!important;border-radius:4px!important;box-shadow:0 2px 8px rgba(10,36,56,.10)!important;color:#16334a!important;font-size:var(--map-stop-label-px)!important;font-weight:850!important;padding:2px 4px!important;white-space:nowrap!important}.operational-stop-label:before{display:none!important}.bus-map-marker b{font-size:var(--map-vehicle-label-px)!important}.bus-map-marker span{font-size:calc(var(--map-vehicle-label-px) * .72)!important}

.admin-page{grid-template-rows:auto auto minmax(0,1fr);gap:8px}.admin-page-head{margin:0}.admin-city-context{min-width:150px;background:#fff;border:1px solid #dfe6eb;border-radius:8px;padding:7px 10px;display:grid;align-content:center}.admin-city-context span{font-size:5.8px;color:#82909a;font-weight:950;letter-spacing:.6px}.admin-city-context strong{font-size:11px;margin-top:2px;color:#183a56}.admin-tabs{display:flex;gap:5px;padding:5px;background:#eaf0f4;border:1px solid #d5e0e7;border-radius:9px}.admin-tab{border:0;background:transparent;border-radius:6px;padding:8px 13px;font-size:6.8px;font-weight:950;letter-spacing:.55px;color:#617483}.admin-tab.active{background:#173b59;color:#fff;box-shadow:0 3px 8px rgba(17,51,76,.15)}.admin-workspace{min-height:0}.admin-tab-panel{display:none;height:100%;min-height:0;overflow:hidden}.admin-tab-panel.active{display:flex;flex-direction:column}.admin-panel-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.admin-panel-toolbar h3{font-size:12px;margin:1px 0}.admin-panel-toolbar p:not(.eyebrow){font-size:7px;color:#7c8a94;margin:1px 0}.access-only-layout{grid-template-columns:minmax(260px,.62fr) minmax(0,2fr)!important;height:calc(100% - 46px)}
.city-admin-layout{display:grid;grid-template-columns:260px minmax(360px,.82fr) minmax(440px,1.3fr);gap:8px;min-height:0;flex:1}.city-list-panel,.city-editor-panel,.feed-config-panel{padding:10px;min-height:0;overflow:hidden}.city-admin-list{display:grid;gap:5px;overflow:auto;min-height:0;max-height:calc(100vh - 235px)}.city-admin-row{border:1px solid #dfe5e9;background:#fff;border-radius:7px;padding:8px;display:grid;grid-template-columns:38px 1fr auto;gap:7px;align-items:center;text-align:left}.city-admin-row:hover{border-color:#b7cbd8}.city-admin-row.active{border-color:#d72631;box-shadow:inset 3px 0 0 #d72631;background:#fff7f7}.city-admin-code{height:30px;border-radius:6px;background:#173b59;color:#fff;display:grid;place-items:center;font-size:7px;font-weight:1000;text-transform:uppercase}.city-admin-row b{display:block;font-size:8px}.city-admin-row span{display:block;font-size:6.2px;color:#82909a;margin-top:2px}.city-admin-row i{width:7px;height:7px;border-radius:50%;background:#8c99a2}.city-admin-row i.live{background:#39b55a}.city-form{display:grid;gap:8px}.city-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.city-form-grid label,.feed-provider-row label,.feed-config-grid label,.config-group>label{display:grid;gap:3px}.city-form-grid label.wide,.feed-config-grid label.wide{grid-column:1/-1}.city-form-grid label>span,.feed-provider-row label>span,.feed-config-grid label>span,.config-group>label>span{font-size:5.8px;font-weight:950;letter-spacing:.55px;color:#6d7d89}.city-form-grid input,.city-form-grid select,.feed-provider-row input,.feed-config-grid input,.feed-config-grid select,.config-group input,.config-group select{height:34px;border:1px solid #cbd6dd;border-radius:6px;background:#fff;padding:0 8px;font-size:8px;color:#213440;outline:none}.city-form-grid input:focus,.feed-config-grid input:focus,.feed-config-grid select:focus,.config-group input:focus,.config-group select:focus{border-color:#d72631;box-shadow:0 0 0 2px #fff0f1}.city-save-row,.feed-save-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:7px;border-top:1px solid #edf0f2}.city-save-row span,.feed-import-status{font-size:6.5px;color:#71818c}.feed-config-panel{border-top:3px solid #173b59}.feed-provider-row{margin-bottom:8px}.feed-config-grid{display:grid;grid-template-columns:minmax(0,1fr) 190px 110px;gap:7px;align-items:end}.feed-config-grid small{font-size:5.7px;color:#87939c;line-height:1.3}.feed-config-grid .feed-action{height:34px}.feed-config-grid label.wide{grid-column:1/-1}.city-data-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:8px}.city-data-summary article{background:#f6f9fb;border:1px solid #e0e7ec;border-radius:6px;padding:6px}.city-data-summary article span{display:block;font-size:5.4px;color:#85929b;font-weight:900}.city-data-summary article b{display:block;font-size:9px;color:#1e3a4f;margin-top:2px}.city-data-summary article small{display:block;font-size:5.5px;color:#87939c;margin-top:2px}
.display-admin-grid{display:grid;grid-template-columns:repeat(3,minmax(240px,1fr)) minmax(260px,.9fr);gap:8px;min-height:0;flex:1}.config-group,.display-preview-panel{padding:10px;min-height:0;overflow:auto}.config-group>label{padding:8px 0;border-bottom:1px solid #edf1f3}.config-group>label:last-child{border-bottom:0}.config-group input[type=range]{height:auto;padding:0;accent-color:#d72631}.config-group output{font-size:7px;font-weight:950;color:#173b59;justify-self:end;margin-top:-17px}.toggle-row{grid-template-columns:18px 1fr!important;align-items:start!important}.toggle-row input{width:15px;height:15px;accent-color:#d72631;margin-top:2px}.toggle-row b,.toggle-row small{display:block}.toggle-row b{font-size:7px}.toggle-row small{font-size:5.8px;color:#82909a;margin-top:2px;line-height:1.3}.config-save-message{font-size:6.5px;padding:7px;border-radius:6px;background:#f6f8fa;color:#637582}.display-preview-panel{border-top:3px solid #d72631}.display-preview-map{height:210px;position:relative;background:linear-gradient(135deg,#e7eef2,#f9fbfc);border:1px solid #d5e1e8;border-radius:8px;overflow:hidden}.preview-route-line{position:absolute;left:10%;right:10%;top:50%;height:6px;background:#1f608e;border-radius:999px;box-shadow:0 0 0 3px #fff}.preview-stop{position:absolute;top:47%;padding:3px 5px;background:#fff;border:1px solid #bfcfd9;border-radius:4px;font-size:11px;font-weight:850;color:#19364b}.preview-stop.p1{left:20%}.preview-stop.p2{right:17%}.preview-bus{position:absolute;left:48%;top:24%;background:#ffd43b;border-radius:5px;padding:6px 9px;font-weight:900;box-shadow:0 4px 10px rgba(0,0,0,.14);line-height:1.08}.preview-bus b,.preview-bus span,.preview-bus small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-bus span,.preview-bus small{margin-top:2px}.display-preview-panel>p{font-size:6px;color:#7f8e98}.branding-admin-single{height:100%;display:grid;grid-template-columns:minmax(480px,760px);justify-content:center;align-items:start}.branding-admin-single .branding-admin-panel{min-height:0}
@media(max-width:1450px){.city-admin-layout{grid-template-columns:230px minmax(320px,.8fr) minmax(360px,1.15fr)}.display-admin-grid{grid-template-columns:1fr 1fr}.display-preview-panel{grid-column:1/-1}.city-data-summary{grid-template-columns:1fr 1fr}}
/* PRIOR ENTERPRISE ADMIN FOUNDATION */

.fullscreen-button{height:30px;border:1px solid #ccd7de;background:#fff;border-radius:999px;padding:0 9px;display:flex;align-items:center;gap:5px;color:#314858;font-size:6.2px;font-weight:950;letter-spacing:.35px;white-space:nowrap}
.install-app-button{height:30px;border:1px solid #b9d6c2;background:#edf9f0;border-radius:999px;padding:0 9px;display:flex;align-items:center;gap:5px;color:#1e6f38;font-size:6.2px;font-weight:950;letter-spacing:.35px;white-space:nowrap;cursor:pointer}.install-app-button:hover{background:#1e6f38;color:#fff;border-color:#1e6f38}.install-app-button span{font-size:11px;line-height:1}.install-app-button b{font-size:6.2px}.install-app-button[hidden]{display:none!important}
.fullscreen-button:hover,.fullscreen-button.active{background:#173b59;color:#fff;border-color:#173b59}.fullscreen-icon{font-size:12px;line-height:1}.fullscreen-button b{font-size:6.2px}
html.occ-fullscreen .app-shell{grid-template-columns:58px minmax(0,1fr)!important}
html.occ-fullscreen .sidebar{display:flex!important;width:58px!important;height:100vh!important;position:relative!important;overflow:visible!important;padding:7px 6px!important;background:#fff!important;border-right:1px solid #dfe5e9!important}
html.occ-fullscreen .sidebar:after{display:none!important}
html.occ-fullscreen .brand-block{min-height:44px!important;padding:0 0 7px!important;display:flex!important;justify-content:center!important;border-bottom:1px solid #edf0f2!important}
html.occ-fullscreen .sidebar-art{width:42px!important;height:42px!important;margin:0!important;border-radius:9px!important}
html.occ-fullscreen .signature-brand .brand-copy{display:none!important}
html.occ-fullscreen .main-nav{display:flex!important;flex-direction:column!important;align-items:center!important;gap:4px!important;padding-top:7px!important}
html.occ-fullscreen .nav-item{position:relative!important;display:flex!important;align-items:center!important;justify-content:center!important;width:44px!important;height:40px!important;min-height:40px!important;padding:0!important;border-radius:8px!important;overflow:visible!important}
html.occ-fullscreen .nav-item>span{display:block!important;width:auto!important;grid-row:auto!important;font-size:15px!important;line-height:1!important;color:#87939c!important}
html.occ-fullscreen .nav-item.active>span{color:var(--red)!important}
html.occ-fullscreen .nav-item b{position:absolute!important;left:51px!important;top:50%!important;z-index:120!important;display:block!important;width:max-content!important;max-width:190px!important;transform:translateY(-50%) translateX(-4px)!important;padding:7px 9px!important;border:1px solid #d8e0e5!important;border-radius:7px!important;background:#17242e!important;color:#fff!important;box-shadow:0 6px 18px rgba(16,34,48,.18)!important;font-size:8px!important;line-height:1!important;letter-spacing:.1px!important;white-space:nowrap!important;opacity:0!important;visibility:hidden!important;pointer-events:none!important;transition:opacity .12s ease,transform .12s ease!important}
html.occ-fullscreen .nav-item:hover b,html.occ-fullscreen .nav-item:focus-visible b{opacity:1!important;visibility:visible!important;transform:translateY(-50%) translateX(0)!important}
html.occ-fullscreen .nav-item small{display:none!important}
html.occ-fullscreen .nav-item.active{background:var(--red-soft)!important;box-shadow:inset 3px 0 0 var(--red)!important}
html.occ-fullscreen .nav-item.disabled{opacity:.32!important}
html.occ-fullscreen .sidebar-foot{display:none!important}
html.occ-fullscreen .topbar{height:48px!important;padding:0 10px!important}
html.occ-fullscreen .workspace{height:calc(100vh - 48px)!important;padding:6px 7px 7px!important}
html.occ-fullscreen .live-page{gap:5px!important}
html.occ-fullscreen .panel{border-radius:7px!important}
html.occ-fullscreen .top-title h1{font-size:14px!important}
html.occ-fullscreen .build-badge{display:none!important}

.feed-config-panel{overflow:auto!important}.schedule-config-block{margin-top:10px;padding-top:9px;border-top:2px solid #d9e4eb}.schedule-config-block .section-head p:not(.eyebrow){max-width:620px}.schedule-config-grid{display:grid;grid-template-columns:minmax(150px,1fr) 150px 140px 140px;gap:7px;align-items:end}.schedule-config-grid label{display:grid;gap:3px}.schedule-config-grid label.wide{grid-column:1/-1}.schedule-config-grid label>span{font-size:5.8px;font-weight:950;letter-spacing:.55px;color:#6d7d89}.schedule-config-grid input,.schedule-config-grid select{height:34px;border:1px solid #cbd6dd;border-radius:6px;background:#fff;padding:0 8px;font-size:8px;color:#213440;outline:none}.schedule-config-grid input:focus,.schedule-config-grid select:focus{border-color:#d72631;box-shadow:0 0 0 2px #fff0f1}.schedule-config-grid small{font-size:5.7px;color:#87939c;line-height:1.3}.schedule-actions{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;margin-top:8px;padding-top:7px;border-top:1px solid #edf0f2}.template-link{font-size:5.9px;font-weight:950;color:#1b5d8f;text-decoration:none;border:1px solid #cbdbe6;border-radius:6px;padding:7px 8px;background:#f7fbfd}.template-link:hover{background:#edf6fb}.schedule-foundation-note{margin-top:7px;border-left:3px solid #173b59;background:#f5f9fc;border-radius:5px;padding:6px 7px}.schedule-foundation-note b,.schedule-foundation-note span{display:block}.schedule-foundation-note b{font-size:6.1px;color:#173b59;letter-spacing:.45px}.schedule-foundation-note span{font-size:5.8px;color:#73838e;margin-top:2px;line-height:1.35}
.health-grid{grid-template-columns:repeat(6,minmax(0,1fr))!important}
@media(max-width:1500px){.schedule-config-grid{grid-template-columns:1fr 140px 130px 130px}.health-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:1000px){.fullscreen-button b{display:none}.schedule-config-grid{grid-template-columns:1fr 1fr}.schedule-config-grid label.wide{grid-column:1/-1}.schedule-actions{grid-template-columns:1fr auto}.schedule-actions .feed-import-status{grid-column:1/-1;grid-row:2}.health-grid{grid-template-columns:1fr 1fr!important}}



.operational-avl{background:#f4f6f8!important;border-top:1px solid #dce3e8!important}
.operational-avl:before{display:none!important;background:none!important}
.avl-watermark{display:none!important}
.lane.top{border-bottom:1px solid #dce3e8!important}
.lane-rail{box-shadow:none!important;background:#244e6e!important}
.lane.bottom .lane-rail{background:#303b44!important}
.stop-stem{background:#b5c1c9!important}
.stop-name{writing-mode:horizontal-tb!important;text-orientation:mixed!important;width:58px!important;max-width:58px!important;height:auto!important;overflow:hidden!important;text-overflow:clip!important;white-space:nowrap!important;line-height:1!important;letter-spacing:.05px!important;font-weight:850!important;color:#233744!important}
.lane.top .stop-name{top:11px!important;left:7px!important;transform:rotate(-90deg)!important;transform-origin:0 0!important}
.lane.bottom .stop-name{bottom:11px!important;left:7px!important;right:auto!important;transform:rotate(90deg)!important;transform-origin:0 100%!important}
.stop-node.key .stop-name{color:#102c40!important;font-weight:950!important}
.stop-node.terminal .stop-name{color:#a71f29!important}
.lane-empty span{background:#fff!important;border:1px solid #dfe5e9!important;box-shadow:none!important}
.operational-stop-label{background:rgba(255,255,255,.96)!important;border:1px solid #cfd8df!important;border-radius:4px!important;box-shadow:0 1px 4px rgba(20,40,55,.12)!important;color:#1f3443!important;font-weight:800!important}
.operational-stop-label:before{display:none!important}
.stop-popup b,.stop-popup small{display:block}.stop-popup small{margin-top:3px;color:#687781;font-size:10px}

/* AVL PLATFORM V0.13.30-4 BUILD MARKER — FULL-SCREEN NAVIGATION RAIL */

/* ===== AVL PLATFORM V0.13.30 — GTFS-distance corridor board ===== */
:root{--corridor-navy:#0f2d55;--corridor-blue:#1769b0;--corridor-line:#d8e1ea;--corridor-soft:#f7faff;--corridor-pair:#edf6ff}
.live-page{grid-template-rows:auto var(--avl-board-height) minmax(0,1fr)!important;gap:8px!important}
.ops-toolbar{grid-template-columns:1fr!important;gap:7px!important}
.route-control{grid-template-columns:50px minmax(220px,1fr) 180px minmax(220px,.85fr) 118px 92px!important;padding:8px 10px!important;border-radius:11px!important;box-shadow:none!important}
.route-badge{height:38px!important;border-radius:8px!important;font-size:14px!important}
.route-control select,.route-control input{height:38px!important;font-size:10px!important;border-radius:8px!important}.route-control .button{height:38px!important;border-radius:8px!important;font-size:7.4px!important}
.ops-kpis{grid-template-columns:repeat(7,minmax(0,1fr))!important;border-radius:11px!important;box-shadow:none!important;min-height:64px!important}
.ops-kpis article{padding:8px 11px!important;min-width:0!important}.ops-kpis article:before{display:none!important}.ops-kpis span{font-size:6.5px!important;color:#637488!important}.ops-kpis strong{font-size:17px!important;color:#0e2238!important}.ops-kpis small{font-size:5.8px!important;color:#8a98a7!important;margin-top:2px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.avl-board.avl-command-board{height:var(--avl-board-height)!important;min-height:var(--avl-board-height)!important;max-height:var(--avl-board-height)!important;border:1px solid #d7e0e9!important;border-radius:12px!important;box-shadow:none!important;background:#fff!important;display:block!important;overflow:hidden!important}
.distance-avl{height:100%;display:grid;grid-template-rows:38px minmax(0,1fr);background:#fff;color:#102235}
.distance-avl-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 14px 4px;border-bottom:1px solid #eef2f6;background:#fff}
.gtfs-alignment-note{display:flex;align-items:center;gap:7px;min-width:0;font-size:6.7px;color:#5c6d7f;white-space:nowrap}.gtfs-alignment-note>i{width:14px;height:14px;border:1px solid #8da2b8;border-radius:50%;font-style:normal;font-size:8px;font-weight:900;display:grid;place-items:center;color:#315c86;flex:0 0 auto}.gtfs-alignment-note span{overflow:hidden;text-overflow:ellipsis}.gtfs-alignment-note b{color:#1769b0;font-size:6.5px;letter-spacing:.15px;flex:0 0 auto}
.distance-avl-legend{display:flex;gap:14px;align-items:center;flex:0 0 auto}.distance-avl-legend span{display:flex;align-items:center;gap:5px;font-size:6.4px;font-weight:850;color:#607284;white-space:nowrap}.distance-avl-legend i{display:inline-block;width:15px;height:7px;border-radius:2px}.distance-avl-legend i.gap{background:#36b34a}.distance-avl-legend i.good{background:#f5c400}.distance-avl-legend i.close{background:#e3272d}.distance-avl-legend i.stale{background:#aab5c1}
.distance-avl-body{position:relative;display:grid;grid-template-rows:1fr 1fr;min-height:0;padding:0 12px 4px 0;background:#fff}.distance-avl.single .distance-avl-body{grid-template-rows:1fr}.corridor-guide-layer{position:absolute;left:122px;right:22px;top:0;bottom:0;pointer-events:none;z-index:1}.corridor-pair-guide{position:absolute;top:28px;bottom:27px;border-left:1px dashed #c8d9e9;opacity:.9}.corridor-lane{display:grid;grid-template-columns:122px minmax(0,1fr);min-height:0;position:relative;z-index:2}.corridor-lane.inbound{padding-top:3px}.corridor-lane.outbound{padding-bottom:3px}
.corridor-dir{align-self:center;margin:0 12px 0 14px;background:#102c51;color:#fff;border-radius:7px;padding:7px 8px;box-shadow:0 2px 7px rgba(15,45,85,.13);min-width:0}.corridor-dir b{display:flex;gap:5px;align-items:center;font-size:7.5px;letter-spacing:.25px}.corridor-dir b em{font-style:normal;color:#8db3d7}.corridor-dir span{display:block;margin-top:3px;font-size:6.1px;color:#d6e3ef;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.corridor-track{position:relative;min-width:0;height:100%;margin-right:10px}.corridor-rail{position:absolute;left:0;right:0;height:2px;background:#0f2d55;z-index:2}.inbound .corridor-rail{top:var(--avl-inbound-rail-pct,50%)}.outbound .corridor-rail{top:var(--avl-outbound-rail-pct,35%)}.corridor-rail:before,.corridor-rail:after{content:"";position:absolute;top:-3px;width:8px;height:8px;border-radius:50%;background:#0f2d55}.corridor-rail:before{left:-1px}.corridor-rail:after{right:-1px}
.corridor-stop{position:absolute;transform:translateX(-50%);z-index:5}.inbound .corridor-stop{top:calc(var(--avl-inbound-rail-pct,50%) - 4px)}.outbound .corridor-stop{top:calc(var(--avl-outbound-rail-pct,35%) - 4px)}.corridor-stop-dot{display:block;width:9px;height:9px;border-radius:50%;background:#0f2d55;border:1px solid #0f2d55;box-shadow:0 0 0 2px #fff}.corridor-stop.terminal .corridor-stop-dot{width:11px;height:11px;margin:-1px 0 0 -1px;background:#d72631;border-color:#d72631}.corridor-stop.paired .corridor-stop-dot{background:#124d83;border-color:#124d83}.corridor-stop.in-section .corridor-stop-dot{box-shadow:0 0 0 4px rgba(215,38,49,.12)}.corridor-stop.section-end .corridor-stop-dot{background:#d72631;border-color:#d72631}
.corridor-stop-copy{position:absolute;left:50%;transform:translateX(-50%);text-align:center;width:86px;line-height:1.04;color:#152d46;pointer-events:none}.inbound .corridor-stop-copy{bottom:12px}.outbound .corridor-stop-copy{top:13px}.corridor-stop-copy b{display:block;font-size:var(--avl-stop-label-px);font-weight:900;white-space:normal;max-height:24px;overflow:hidden}.corridor-stop-copy small{display:block;margin-top:3px;font-size:5.9px;color:#5e7590;font-variant-numeric:tabular-nums}.corridor-stop.terminal .corridor-stop-copy b{color:#9c1d27}.corridor-stop.paired .corridor-stop-copy b{color:#0d58a0}
.corridor-section-band{position:absolute;height:8px;background:rgba(215,38,49,.13);border:1px solid rgba(215,38,49,.22);border-radius:99px;z-index:1}.inbound .corridor-section-band{top:calc(var(--avl-inbound-rail-pct,50%) - 3px)}.outbound .corridor-section-band{top:calc(var(--avl-outbound-rail-pct,35%) - 3px)}
.corridor-bus{position:absolute;transform:translateX(-50%) scale(var(--avl-bus-scale));transform-origin:center;z-index:12;width:var(--avl-bus-card-width-px,72px);min-height:var(--avl-bus-card-height-px,48px);border:0;border-radius:4px;padding:5px 9px 5px 8px;text-align:left;line-height:1.08;clip-path:polygon(0 0,80% 0,100% 50%,80% 100%,0 100%,0 0);box-shadow:0 2px 6px rgba(14,28,42,.12);color:#111}.inbound .corridor-bus,.outbound .corridor-bus{top:auto;bottom:auto}.corridor-bus b,.corridor-bus span,.corridor-bus small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.corridor-bus b{font-size:var(--avl-bus-line1-px,9px);font-weight:1000}.corridor-bus span{font-size:var(--avl-bus-line2-px,7.5px);font-weight:850;margin-top:2px}.corridor-bus small{font-size:var(--avl-bus-line3-px,7.2px);font-weight:800;margin-top:2px}.corridor-bus.good{background:var(--bus-status-color,#f3c900);color:var(--bus-status-text,#111)}.corridor-bus.close{background:var(--bus-status-color,#ea2d32);color:var(--bus-status-text,#fff)}.corridor-bus.gap{background:var(--bus-status-color,#3db84e);color:var(--bus-status-text,#082d10)}.corridor-bus.prediction{background:var(--bus-status-color,#174a73);color:var(--bus-status-text,#fff)}.corridor-bus.stale,.corridor-bus.neutral{background:var(--bus-status-color,#aeb8c4);color:var(--bus-status-text,#1b2732)}.corridor-bus.offroute{outline:2px solid #f08028;outline-offset:1px}
.corridor-empty{position:absolute;left:50%;transform:translateX(-50%);font-size:6px;font-weight:850;letter-spacing:.3px;color:#8493a2;background:#f8fafc;border:1px solid #e1e7ed;border-radius:999px;padding:4px 8px;white-space:nowrap}.inbound .corridor-empty{top:50%}.outbound .corridor-empty{top:48%}
.distance-avl.single .corridor-lane{grid-row:1/-1}.distance-avl.single .corridor-track{height:100%}.distance-avl.single .inbound .corridor-rail{top:var(--avl-inbound-rail-pct,50%)}.distance-avl.single .outbound .corridor-rail{top:var(--avl-outbound-rail-pct,35%)}.distance-avl.single .inbound .corridor-stop{top:calc(var(--avl-inbound-rail-pct,50%) - 4px)}.distance-avl.single .outbound .corridor-stop{top:calc(var(--avl-outbound-rail-pct,35%) - 4px)}.distance-avl.single .inbound .corridor-bus,.distance-avl.single .outbound .corridor-bus{top:auto;bottom:auto}
.live-bottom-dock{grid-template-columns:minmax(0,1fr) 260px!important;gap:8px!important}.map-command-card{border-top:0!important;padding:8px!important}.map-command-card .section-head h3{font-size:11px!important}.attention-card{border-top:0!important}.map-surface{border:1px solid #d7e0e9!important;background:#f5f8fb!important}
html.occ-fullscreen .live-page{grid-template-rows:auto var(--avl-board-height) minmax(0,1fr)!important}
@media(max-width:1350px){.route-control{grid-template-columns:48px minmax(190px,1fr) 150px minmax(160px,.7fr) 102px 78px!important}.ops-kpis{grid-template-columns:repeat(7,minmax(92px,1fr))!important;overflow-x:auto!important}.corridor-guide-layer{left:112px}.corridor-lane{grid-template-columns:112px minmax(0,1fr)}.corridor-stop-copy{width:72px}.distance-avl-legend{gap:8px}.gtfs-alignment-note span{display:none}}

/* AVL PLATFORM V0.13.30 BUILD MARKER — GTFS DISTANCE ALIGNED CORRIDOR */

/* AVL PLATFORM V0.13.30 — LIVE OPERATIONS FOUNDATION */
.shortfall-tag{display:inline-block;margin-left:3px;padding:2px 4px;border-radius:999px;background:#ffeaec;color:#a32933;font-size:5.8px;font-weight:950}

/* AVL PLATFORM V0.13.30 — readable stop labels + road traffic overlay */
.inbound .corridor-stop-copy{bottom:calc(var(--avl-stop-label-clearance-effective-px,var(--avl-stop-label-clearance-px,18px)) + (var(--label-tier,0) * var(--avl-stop-label-tier-gap-effective-px,var(--avl-stop-label-tier-gap-px,20px))))}
.outbound .corridor-stop-copy{top:calc(var(--avl-stop-label-clearance-effective-px,var(--avl-stop-label-clearance-px,18px)) + (var(--label-tier,0) * var(--avl-stop-label-tier-gap-effective-px,var(--avl-stop-label-tier-gap-px,20px))))}
.corridor-stop-copy{width:92px;overflow:visible}
.corridor-stop-copy b{max-height:26px;text-shadow:0 0 3px #fff,0 0 3px #fff;background:rgba(255,255,255,.72);border-radius:3px;padding:0 1px}
.traffic-state{flex:0 0 auto;padding:3px 6px;border-radius:999px;border:1px solid #d8e1ea;background:#f7f9fb;color:#68798a;font-size:5.8px;font-weight:900;white-space:nowrap}.traffic-state.live{background:#edf9f0;border-color:#b8e0c1;color:#18783a}.traffic-state.degraded{background:#fff7e7;border-color:#ecd39a;color:#8a5b00}.traffic-state.offline{background:#fff0f1;border-color:#efb5ba;color:#a3232c}.traffic-state.waiting{background:#f4f7fa;color:#708090}
.corridor-traffic-band{position:absolute;left:0;right:0;height:5px;z-index:3;pointer-events:none}.inbound .corridor-traffic-band{top:calc(var(--avl-inbound-rail-pct,50%) + 10px)}.outbound .corridor-traffic-band{top:calc(var(--avl-outbound-rail-pct,35%) - 11px)}.corridor-traffic-band>em{position:absolute;left:2px;top:6px;font-style:normal;font-size:5px;font-weight:900;color:#76889a;letter-spacing:.15px;white-space:nowrap}.corridor-traffic-band>i{position:absolute;top:0;height:5px;border-radius:2px;box-shadow:0 0 0 1px rgba(255,255,255,.72)}.corridor-traffic-band .traffic-normal{background:#20a052}.corridor-traffic-band .traffic-slow{background:#f0a202}.corridor-traffic-band .traffic-traffic_jam{background:#d7263d}
.traffic-map-tooltip{font-size:9px!important;font-weight:900!important;color:#1b2e42!important;border:1px solid #d8e1ea!important;box-shadow:0 2px 8px rgba(0,0,0,.10)!important}
@media(max-width:1500px){.traffic-state{display:none}.corridor-stop-copy{width:82px}}

.map-key .traffic-normal-key,.map-key .traffic-slow-key,.map-key .traffic-jam-key{width:9px!important;height:4px!important;border-radius:1px!important}.map-key .traffic-normal-key{background:#20a052!important}.map-key .traffic-slow-key{background:#f0a202!important}.map-key .traffic-jam-key{background:#d7263d!important}

/* AVL PLATFORM V0.13.30 — configured-branding-only startup */
[data-brand-logo]:not([src]),[data-brand-logo][data-brand-empty="true"]{visibility:hidden!important;opacity:0!important}

/* AVL PLATFORM V0.13.30 — TRAFFIC INTELLIGENCE + DELAY DISPLAY */
.ops-kpis{grid-template-columns:repeat(8,minmax(0,1fr))!important}
.corridor-dir-traffic{display:block;margin-top:3px;font-size:5.5px;font-weight:850;color:#ffd66b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.corridor-delay-label{position:absolute;transform:translateX(-50%);min-width:25px;padding:2px 4px;border-radius:999px;background:#fff;border:1px solid #e0c075;color:#735000;font-style:normal;font-size:5.6px;font-weight:1000;text-align:center;line-height:1;white-space:nowrap;box-shadow:0 1px 4px rgba(15,45,85,.12);z-index:8}
.inbound .corridor-delay-label{top:calc(8px + (var(--delay-tier,0) * 10px))}.outbound .corridor-delay-label{top:calc(-15px - (var(--delay-tier,0) * 10px))}
.corridor-delay-label.severity-medium{background:#fff5df;border-color:#e3a33a;color:#8b5600}.corridor-delay-label.severity-high{background:#fff0f1;border-color:#df7b83;color:#a51f2a}
.traffic-delay-map-label{display:grid;place-items:center;min-width:38px;height:17px;padding:0 5px;border-radius:999px;background:#fff;border:1px solid #d7a345;color:#815700;font-size:8px;font-weight:1000;box-shadow:0 2px 6px rgba(15,45,85,.18);white-space:nowrap}
.traffic-delay-map-label.severity-medium{background:#fff4d9;border-color:#e19a22;color:#845200}.traffic-delay-map-label.severity-high{background:#fff0f1;border-color:#d95c66;color:#a11c27}
@media(max-width:1350px){.ops-kpis{grid-template-columns:repeat(8,minmax(92px,1fr))!important}}

/* V0.13.30 AI OCC Copilot Lite */
.ai-occ-panel{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);display:grid;gap:7px}.ai-occ-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.ai-occ-head>div{display:grid;gap:2px}.ai-occ-head span{font-size:8px;font-weight:900;letter-spacing:.13em;color:var(--muted)}.ai-occ-head b{font-size:9px;color:var(--navy)}.ai-analyse-button{padding:7px 10px!important;font-size:8px!important;background:#0b294d!important;color:#fff!important;border-color:#0b294d!important}.ai-occ-question input{width:100%;height:30px;border:1px solid var(--line);border-radius:7px;padding:0 9px;font-size:9px;background:#fff}.ai-occ-result{border:1px solid #d8e2ec;background:#f8fbfd;border-radius:8px;padding:8px;display:grid;gap:5px;min-height:44px}.ai-occ-result small{font-size:8px;color:var(--muted);line-height:1.4}.ai-occ-result .ai-severity{font-size:8px;font-weight:900;letter-spacing:.1em}.ai-occ-result .ai-severity.CRITICAL{color:#c91c2b}.ai-occ-result .ai-severity.WATCH{color:#9c6b00}.ai-occ-result .ai-severity.STABLE{color:#148348}.ai-occ-result b{font-size:10px;color:var(--navy);line-height:1.3}.ai-occ-result p{font-size:9px;line-height:1.45;margin:0;color:#334155}.ai-occ-result ul{margin:0;padding-left:14px;font-size:8px;color:#475569}.ai-occ-meta{font-size:7.5px!important;color:#718096!important}.ai-admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ai-admin-grid .config-group{min-height:0}.ai-usage-metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.ai-usage-metrics article{border:1px solid var(--line);border-radius:8px;padding:8px;background:#fafcff}.ai-usage-metrics span{display:block;font-size:7px;font-weight:900;color:var(--muted);letter-spacing:.1em}.ai-usage-metrics strong{font-size:15px;color:var(--navy)}.ai-safety-card p,.ai-safety-card li{font-size:9px;line-height:1.5;color:#475569}.ai-safety-card ul{padding-left:18px;margin:8px 0 0}@media(max-width:1000px){.ai-admin-grid{grid-template-columns:1fr}}


/* AVL PLATFORM V0.13.30 — EXPANDABLE LIVE ROUTE MAP */
.map-expand-button{height:24px!important;min-width:84px!important;padding:0 8px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:5px!important;border-radius:6px!important;font-size:6.4px!important;white-space:nowrap!important;background:#fff!important;color:#173b59!important;border:1px solid #bdcad6!important;box-shadow:none!important}
.map-expand-button span{font-size:11px;line-height:1}.map-expand-button b{font-size:6.4px;letter-spacing:.04em}.map-expand-button:hover{background:#f2f7fb!important}.map-expand-button.active{background:#173b59!important;color:#fff!important;border-color:#173b59!important}
.map-command-card.map-expanded{position:fixed!important;inset:10px!important;z-index:5000!important;width:auto!important;height:auto!important;max-width:none!important;min-width:0!important;min-height:0!important;margin:0!important;padding:10px!important;border-radius:12px!important;background:#fff!important;box-shadow:0 20px 70px rgba(5,24,44,.35)!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}
.map-command-card.map-expanded .section-head{flex:0 0 auto;margin-bottom:8px!important;align-items:center!important}.map-command-card.map-expanded .section-head h3{font-size:14px!important}.map-command-card.map-expanded .eyebrow{font-size:7px!important}.map-command-card.map-expanded .map-surface{flex:1 1 auto!important;height:auto!important;min-height:0!important;border-radius:9px!important}.map-command-card.map-expanded .map-key{font-size:7px!important}.map-command-card.map-expanded .pill{font-size:7px!important}.map-command-card.map-expanded .map-expand-button{height:30px!important;min-width:104px!important}.map-command-card.map-expanded .map-expand-button b{font-size:7px!important}
html.live-map-expanded,html.live-map-expanded body{overflow:hidden!important}.live-map-expand-backdrop{display:none}
@media(max-width:820px){.map-head-actions{flex-wrap:wrap!important}.map-expand-button{min-width:74px!important}.map-command-card.map-expanded{inset:6px!important;padding:8px!important;border-radius:9px!important}.map-command-card.map-expanded .map-key{display:none!important}}

/* AVL PLATFORM V0.13.30 — NETWORK TRAFFIC + SERVICE RISK INTELLIGENCE */
.network-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.network-scan-button{height:30px!important;padding:0 10px!important;font-size:7px!important;white-space:nowrap!important}
.network-scan-state{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border:1px solid #d8e1ea;border-radius:999px;background:#f7f9fb;color:#6b7c8e;font-size:6.2px;font-weight:900;letter-spacing:.04em;white-space:nowrap}
.network-scan-state.scanning{background:#fff7e7;border-color:#ecd39a;color:#875a00}.network-scan-state.ready{background:#edf9f0;border-color:#b8e0c1;color:#18783a}
.network-traffic-pair{display:inline-block;min-width:68px;color:#7b8794;font-size:7px;font-weight:900;white-space:nowrap}.network-traffic-pair.ready{color:#173b59}
.network-worst-traffic{display:block;max-width:150px;font-size:6.5px;font-weight:800;line-height:1.25;color:#536779;white-space:normal}
.network-row-actions{display:flex;gap:4px;flex-wrap:wrap}.network-row-actions .link-button{white-space:nowrap}
.network-table{min-width:1380px}.network-table th:nth-child(8),.network-table td:nth-child(8){min-width:150px}
@media(max-width:1050px){.network-head-actions{justify-content:flex-start}.network-scan-state{order:3}.network-table{min-width:1280px}}

/* AVL PLATFORM V0.13.30 — THREE-ROUTE OCC MONITOR */
.triple-monitor-page{overflow:auto;padding-bottom:10px}
.triple-monitor-head{padding-bottom:8px}.triple-monitor-status{align-self:center;border:1px solid #cfdbe7;border-radius:999px;padding:8px 12px;font-size:8px;font-weight:900;letter-spacing:.45px;color:#587087;background:#f7fafc;white-space:nowrap}.triple-monitor-status.busy{color:#9a6500;background:#fff7df;border-color:#f0d18a}.triple-monitor-status.ready{color:#126d39;background:#eaf8ef;border-color:#b9dfc7}
.triple-route-selector-panel{padding:8px 10px;margin-bottom:8px}.triple-route-selectors{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr)) 132px;gap:8px;align-items:end}.triple-route-selectors label{display:grid;gap:4px}.triple-route-selectors label>span{font-size:7px;font-weight:900;letter-spacing:.5px;color:#667b8f}.triple-route-selectors select{height:38px;border:1px solid #c8d4df;border-radius:8px;padding:0 10px;background:#fff;color:#102235;font-size:10px;font-weight:700}
.triple-route-stack{display:grid;gap:8px;min-height:0}.triple-route-card{overflow:hidden;padding:0;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.triple-route-card:hover{border-color:#8fb1cf;box-shadow:0 4px 15px rgba(15,45,85,.10)}.triple-route-card.loading{cursor:default}.triple-card-head{min-height:42px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 10px;border-bottom:1px solid #e5edf4;background:#fbfdff}.triple-route-title{display:flex;align-items:center;gap:8px;min-width:0}.triple-route-title .route-lozenge{min-width:42px;height:31px;border-radius:8px;display:grid;place-items:center;background:#d92131;color:#fff;font-size:12px;font-weight:900;box-shadow:0 4px 10px rgba(217,33,49,.15)}.triple-route-title>div{min-width:0}.triple-route-title b{display:block;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.triple-route-title small{display:block;font-size:6.5px;color:#75879a;margin-top:2px}.triple-card-metrics{display:flex;align-items:center;gap:12px;flex:0 0 auto}.triple-card-metrics>span{display:grid;gap:1px;min-width:58px}.triple-card-metrics small{font-size:5.8px;color:#718599;font-weight:850;letter-spacing:.35px}.triple-card-metrics b{font-size:9px;color:#18324d}.triple-card-metrics b.red{color:#c91f2c}.triple-card-metrics b.amber{color:#a36d00}.triple-card-metrics b.green{color:#17783e}.triple-card-metrics b.thin{color:#75879a}.triple-map-button{height:30px!important;padding:0 12px!important;font-size:7.5px!important;position:relative;z-index:8}.triple-monitor-board{height:var(--avl-compact-board-height,188px);min-height:var(--avl-compact-board-height,188px);background:#fff;--avl-bus-safe-height-px:44px}.triple-monitor-board .distance-avl{grid-template-rows:minmax(0,1fr)}.triple-monitor-board .distance-avl-head{display:none}.triple-monitor-board .distance-avl-body{padding-bottom:0}.triple-monitor-board .corridor-dir{margin-left:9px;margin-right:8px;padding:5px 6px}.triple-monitor-board .corridor-lane{grid-template-columns:108px minmax(0,1fr)}.triple-monitor-board .corridor-guide-layer{left:108px}.triple-monitor-board .corridor-dir b{font-size:6.7px}.triple-monitor-board .corridor-dir span{font-size:5.4px}.triple-monitor-board .corridor-dir-traffic{font-size:5px}.triple-monitor-board .corridor-stop-copy{font-size:var(--avl-stop-label-px);transform:translateX(-50%) scale(.9);transform-origin:center}.triple-monitor-board .corridor-bus{transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .88))}.triple-card-loading,.triple-monitor-empty{min-height:150px;display:grid;place-items:center;color:#718599;font-size:10px;font-weight:800;background:#f8fbfd;border:1px dashed #cbd8e4;border-radius:10px}
@media(max-width:1250px){.triple-route-selectors{grid-template-columns:repeat(3,minmax(150px,1fr)) 110px}.triple-card-metrics{gap:7px}.triple-card-metrics>span{min-width:48px}}

/* AVL PLATFORM V0.13.30 — OCC ALERT CENTRE + ROUTE WATCHLIST */
.alert-centre-page{overflow:auto;padding-bottom:10px}.alert-centre-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(300px,.75fr);gap:10px;min-height:0}.alert-list-panel,.route-watchlist-panel{padding:10px;min-height:0}.alert-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.alert-head-actions select{height:30px;border:1px solid #cbd7e2;border-radius:7px;background:#fff;padding:0 8px;font-size:7px;font-weight:800;color:#17324e}.alert-head-actions .button{height:30px!important;padding:0 9px!important;font-size:6.8px!important}.alert-list{display:grid;gap:7px;margin-top:8px}.occ-alert{display:grid;grid-template-columns:112px minmax(0,1fr) 92px auto;gap:9px;align-items:center;border:1px solid #d9e3ec;border-left-width:4px;border-radius:9px;padding:8px;background:#fff}.occ-alert.critical{border-left-color:#d91f30;background:#fffafb}.occ-alert.watch{border-left-color:#e5a512;background:#fffdf7}.occ-alert.acknowledged{opacity:.58;background:#f7f9fb;border-left-color:#94a3b8}.alert-route{display:flex;align-items:center;gap:6px;min-width:0}.alert-route .route-lozenge{min-width:40px;height:29px;border-radius:8px;display:grid;place-items:center;background:#d92131;color:#fff;font-weight:900;font-size:10px}.alert-type{font-size:6px;font-weight:900;letter-spacing:.35px;color:#718096;text-transform:uppercase}.alert-copy{min-width:0}.alert-copy b{display:block;font-size:10px;color:#17324e;margin-bottom:2px}.alert-copy p{margin:0;font-size:8px;line-height:1.35;color:#42566b}.alert-copy small{display:block;margin-top:3px;font-size:6.5px;color:#74879a}.occ-crr-routing{display:inline-flex;align-items:center;max-width:100%;margin-top:5px;padding:3px 6px;border-radius:999px;border:1px solid #dce5ec;background:#f1f5f8;color:#526779;font-size:5.8px;font-weight:950;letter-spacing:.25px;line-height:1.2;white-space:normal}.occ-crr-routing.mine{background:#e8f7ed;border-color:#bfe8cd;color:#176d3b}.occ-crr-routing.assigned{background:#eaf2fb;border-color:#c8dced;color:#24567f}.occ-crr-routing.escalated{background:#fff4cf;border-color:#f1d98b;color:#7a5a00}.occ-crr-routing.unavailable{background:#ffe9eb;border-color:#f1c0c6;color:#a51f2c}.alert-severity{justify-self:end;display:inline-flex;align-items:center;justify-content:center;min-width:78px;height:24px;border-radius:999px;font-size:6.5px;font-weight:950;letter-spacing:.45px}.alert-severity.critical{background:#fff0f2;color:#b51626;border:1px solid #efbac0}.alert-severity.watch{background:#fff7df;color:#8a5d00;border:1px solid #efd491}.alert-actions{display:flex;gap:4px;justify-content:flex-end;flex-wrap:wrap}.alert-actions .link-button{white-space:nowrap}.alert-actions .ack{color:#176d3b}.alert-empty{min-height:80px;display:grid;place-items:center;text-align:center;border:1px dashed #cbd8e4;border-radius:9px;background:#f9fbfd;color:#74879a;font-size:8px;font-weight:800;padding:14px}.watchlist-add{display:grid;grid-template-columns:minmax(0,1fr) 62px;gap:6px;margin:8px 0}.watchlist-add select{height:34px;border:1px solid #c9d5e0;border-radius:8px;padding:0 8px;background:#fff;font-size:8px;font-weight:750;color:#17324e}.watchlist-add .button{height:34px!important;font-size:7px!important}.watchlist-routes{display:grid;gap:6px}.watch-route{display:grid;grid-template-columns:42px minmax(0,1fr) auto 24px;align-items:center;gap:7px;border:1px solid #d8e2eb;border-left-width:4px;border-radius:8px;padding:7px;background:#fff;cursor:pointer}.watch-route.red{border-left-color:#d91f30}.watch-route.amber{border-left-color:#e5a512}.watch-route.green{border-left-color:#28a35a}.watch-route.thin{border-left-color:#9aa9b8}.watch-route:hover{box-shadow:0 3px 12px rgba(20,52,82,.08)}.watch-route .route-lozenge{height:28px;border-radius:7px;display:grid;place-items:center;background:#d92131;color:#fff;font-size:9px;font-weight:900}.watch-route b{display:block;font-size:8.5px;color:#17324e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.watch-route small{display:block;font-size:6.2px;color:#718096;margin-top:2px}.watch-remove{width:24px;height:24px;border:0;background:transparent;color:#7e8fa0;font-size:16px;line-height:1;cursor:pointer;border-radius:5px}.watch-remove:hover{background:#eef3f7;color:#b51626}.watchlist-note{display:block;margin-top:8px;font-size:6.5px;line-height:1.4;color:#718096}
@media(max-width:1180px){.alert-centre-grid{grid-template-columns:1fr}.occ-alert{grid-template-columns:96px minmax(0,1fr) 84px}.alert-actions{grid-column:2/-1}.route-watchlist-panel{min-height:220px}}

/* AVL PLATFORM V0.13.30 — OCC DIRECTION CONVENTION: INBOUND B→A TOP / OUTBOUND A→B BOTTOM */
.corridor-lane.inbound .corridor-bus{clip-path:polygon(20% 0,100% 0,100% 100%,20% 100%,0 50%);padding-left:11px;padding-right:6px}
.corridor-lane.outbound .corridor-bus{clip-path:polygon(0 0,80% 0,100% 50%,80% 100%,0 100%,0 0);padding-left:7px;padding-right:8px}
/* V0.13.30 GTFS route-family branching */
.route-family-config-block{margin-top:14px;padding-top:12px;border-top:1px solid #dfe8f0}.route-family-config-block textarea{width:100%;min-height:78px;border:1px solid #cbd8e4;border-radius:8px;padding:9px 10px;font:700 10px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;color:#17324c;background:#fbfdff;resize:vertical}
.route-family-quick-builder{margin:10px 0 12px;padding:10px;border:1px solid #d7e4ef;border-radius:12px;background:#f8fbfe}.route-family-builder-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}.route-family-builder-head b{display:block;font-size:10px;letter-spacing:.06em;color:#17324c}.route-family-builder-head small{display:block;margin-top:2px;font-size:9px;color:#6c7f90}.route-family-route-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;max-height:220px;overflow:auto;padding:2px 3px 6px}.route-family-route-card{display:flex;align-items:flex-start;gap:8px;min-width:0;padding:8px 9px;border:1px solid #d8e4ed;border-radius:9px;background:#fff;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.route-family-route-card:hover{border-color:#9fbcd2;box-shadow:0 2px 8px rgba(17,58,91,.08)}.route-family-route-card input{margin-top:2px;accent-color:#d7192d}.route-family-route-card span{min-width:0;flex:1}.route-family-route-card b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:#17324c}.route-family-route-card small{display:block;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:8px;color:#728496}.route-family-route-card.already-grouped{background:#f0f4f7;cursor:not-allowed;opacity:.72}.route-family-compat{display:inline-flex;align-items:center;white-space:nowrap;border-radius:999px;background:#e9f8ee;color:#18733a;padding:2px 5px;font-size:7px;font-style:normal;font-weight:800}.route-family-builder-fields{display:grid;grid-template-columns:minmax(110px,.55fr) minmax(180px,1.4fr) auto auto;gap:8px;align-items:end;margin-top:9px}.route-family-builder-fields label span{display:block;margin-bottom:4px;font-size:8px;font-weight:800;letter-spacing:.06em;color:#5f7487}.route-family-builder-fields input{width:100%;height:36px;border:1px solid #cbd8e4;border-radius:8px;padding:0 9px;font-size:10px;font-weight:700;color:#17324c;background:#fff}.route-family-advanced{margin:8px 0}.route-family-advanced summary{cursor:pointer;font-size:9px;font-weight:800;color:#35526b}.route-family-advanced p{margin:6px 0;font-size:8px;color:#718395}@media(max-width:1100px){.route-family-route-picker{grid-template-columns:repeat(2,minmax(0,1fr))}.route-family-builder-fields{grid-template-columns:1fr 1.5fr;}.route-family-builder-fields .button{width:100%}}@media(max-width:720px){.route-family-route-picker{grid-template-columns:1fr}.route-family-builder-fields{grid-template-columns:1fr}}
.family-avl{height:100%;display:grid;grid-template-rows:40px minmax(0,1fr);background:#fff;color:#102235}.family-avl-head{min-height:40px}.family-legend{display:flex;align-items:center;gap:6px;font-size:7px}.family-colour{width:16px;height:5px;border-radius:3px}.family-colour.f0{background:#d92532}.family-colour.f1{background:#0f6cb5}.family-colour.f2{background:#7a4fb7}.family-colour.f3{background:#009688}.family-avl-body{display:grid;grid-template-rows:1fr 1fr;min-height:0}.family-direction{display:grid;grid-template-columns:132px minmax(0,1fr);min-height:0;border-bottom:1px solid #eef2f6}.family-direction:last-child{border-bottom:0}.family-direction-head{padding:7px 7px 5px 10px;background:#fbfdff;border-right:1px solid #edf2f6;overflow:hidden;margin-left:9px;margin-right:8px;border-radius:10px}.family-direction-head>b{display:block;font-size:8px;color:#092c55}.family-direction-head>span{display:block;font-size:5.8px;color:#62778b;margin-top:2px}.family-direction-head>div{display:grid;gap:2px;margin-top:5px}.family-direction-head>div span{font-size:5.4px;color:#344f68;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.family-track{position:relative;min-width:0;overflow:hidden}.family-rails{position:absolute;top:0;bottom:0;left:38px;right:auto;width:calc(100% - 76px);max-width:calc(100% - 76px);height:100%;z-index:1;overflow:visible;display:block}.family-trunk-rail,.family-branch-rail,.family-branch-connector{stroke:#12365e;stroke-width:3;vector-effect:non-scaling-stroke;stroke-linecap:round;filter:drop-shadow(0 0 0 rgba(0,0,0,0))}.family-branch-rail.f0{stroke:#d92532}.family-branch-rail.f1{stroke:#0f6cb5}.family-branch-rail.f2{stroke:#7a4fb7}.family-branch-rail.f3{stroke:#009688}.family-branch-point{fill:#fff;stroke:#d92532;stroke-width:3;vector-effect:non-scaling-stroke}.family-split-label{position:absolute;top:45%;transform:translate(-50%,-50%);z-index:8;background:#fff;border:1px solid #d9e4ee;border-radius:9px;padding:2px 5px;font-size:5.6px;font-weight:900;color:#c6212f;white-space:nowrap}.family-stop{position:absolute;transform:translate(-50%,-50%);z-index:7;pointer-events:auto;cursor:help}.family-stop i{display:block;width:9px;height:9px;border-radius:50%;background:#0f2d55;border:1px solid #0f2d55;box-shadow:0 0 0 2px #fff}.family-stop b{position:absolute;left:50%;transform:translateX(-50%);font-size:var(--avl-stop-label-px);font-weight:900;white-space:nowrap;color:#152d46;text-shadow:0 0 3px #fff,0 0 3px #fff;background:rgba(255,255,255,.72);border-radius:3px;padding:0 1px;line-height:1.04;pointer-events:none}.family-direction.inbound .family-stop b{bottom:var(--avl-stop-label-clearance-px,18px)}.family-direction.outbound .family-stop b{top:var(--avl-stop-label-clearance-px,18px)}.family-stop.branch b{font-size:calc(var(--avl-stop-label-px) - .4px)}.family-bus{z-index:15!important;transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .9))!important;transform-origin:top center}.family-bus.inbound{clip-path:polygon(20% 0,100% 0,100% 100%,20% 100%,0 50%);padding-left:11px;padding-right:6px}.family-bus.outbound{clip-path:polygon(0 0,80% 0,100% 50%,80% 100%,0 100%);padding-left:7px;padding-right:8px}.family-bus.direction-uncertain{outline:2px dashed #f08c00;outline-offset:2px}.corridor-bus.direction-uncertain{outline:2px dashed #f08c00;outline-offset:2px}
.triple-monitor-board .family-avl{grid-template-rows:minmax(0,1fr)}.triple-monitor-board .family-avl-head{display:none}.triple-monitor-board .family-direction{grid-template-columns:110px minmax(0,1fr)}.triple-monitor-board .family-direction-head{padding-left:6px}.triple-monitor-board .family-stop b{font-size:calc(var(--avl-stop-label-px) - .8px)}.triple-monitor-board .family-bus{transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .74))!important;transform-origin:top center}

/* V0.13.30 family traffic + operator-tunable bus vertical offsets */
.family-traffic-delay{position:absolute;z-index:18;transform:translate(-50%,-50%);padding:2px 4px;border-radius:999px;background:#fff;border:1px solid #efc46b;color:#8a5800;font-size:5.2px;font-weight:950;white-space:nowrap;box-shadow:0 1px 3px rgba(18,42,66,.1)}
.family-traffic-delay.severity-high{border-color:#ef959c;color:#b01e2a}.family-traffic-delay.severity-medium{border-color:#efc46b;color:#8a5800}.family-traffic-delay.severity-low{border-color:#d5dde5;color:#5f7182}
.family-rails polyline{pointer-events:none}.family-legend .traffic-state{margin-left:6px}.family-loop-avl .distance-avl-body{grid-template-rows:1fr 1fr}.loop-family-lane{min-height:0}.loop-family-lane .corridor-track{overflow:hidden}.loop-family-lane .corridor-traffic-band{z-index:4}.loop-family-lane .corridor-bus{z-index:12}.loop-family-lane.inbound .corridor-bus{clip-path:polygon(20% 0,100% 0,100% 100%,20% 100%,0 50%);padding-left:11px;padding-right:6px}.loop-family-lane.outbound .corridor-bus{clip-path:polygon(0 0,80% 0,100% 50%,80% 100%,0 100%);padding-left:7px;padding-right:8px}

/* AVL PLATFORM V0.13.30 — FAMILY BUS OFFSET SYNC + AUTO-FIT ROUTE FAMILY AXIS */
.family-track{--family-edge-pad-px:38px}

/* ===== V0.13.30 Trip Times / Stop Predictions ===== */
.trip-times-page{grid-template-rows:auto auto minmax(0,1fr);gap:9px}.trip-times-head{align-items:center}.trip-source-badges{display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.trip-times-controls{padding:9px 10px}.trip-filter-grid{display:grid;grid-template-columns:minmax(220px,1.25fr) 190px minmax(260px,1.3fr) 145px;gap:8px;align-items:end}.trip-filter-grid label{display:grid;gap:3px}.trip-filter-grid label>span{font-size:6px;font-weight:950;letter-spacing:.65px;color:#71808b}.trip-filter-grid select{height:36px;border:1px solid var(--line-strong);border-radius:6px;background:#fff;color:#22303a;padding:0 9px;font-size:8.5px;min-width:0}.trip-times-layout{display:grid;grid-template-columns:minmax(280px,.68fr) minmax(680px,2fr);gap:9px;min-height:0}.current-trip-list-panel,.trip-prediction-panel{min-height:0;overflow:hidden}.current-trip-list-panel{display:flex;flex-direction:column}.current-trip-list-panel .section-head{padding:9px 10px;border-bottom:1px solid var(--line)}.trip-count-badge{min-width:28px;height:24px;border-radius:999px;background:#eef2f5;color:#31495d;display:grid;place-items:center;font-size:8px;font-weight:950}.current-trip-list{overflow:auto;padding:7px;display:grid;gap:6px;align-content:start}.current-trip-card{position:relative;width:100%;border:1px solid #d9e2e8;background:#fff;border-radius:8px;padding:8px 46px 8px 9px;text-align:left;display:grid;grid-template-columns:auto 1fr;gap:2px 7px;min-height:66px;color:#263845}.current-trip-card:hover{border-color:#b9cad6;background:#f9fbfc}.current-trip-card.active{border-color:#db4b54;box-shadow:inset 3px 0 0 var(--red);background:#fff8f8}.trip-vehicle-id{font-size:11px;font-weight:1000;color:#132f49}.trip-dir{font-size:6px;font-weight:950;color:#6a7a86;align-self:center}.current-trip-card b{grid-column:1/3;font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.current-trip-card small{grid-column:1/3;font-size:6.4px;color:#75838e}.prediction-confidence{position:absolute;right:8px;top:9px;border-radius:999px;padding:4px 5px;font-size:6px;font-style:normal;font-weight:950}.prediction-confidence.high{background:#e5f6e9;color:#21713a}.prediction-confidence.medium{background:#fff3d4;color:#886300}.prediction-confidence.low{background:#ffe8ea;color:#a32a34}.trip-prediction-panel{display:grid;grid-template-rows:auto minmax(0,1fr) auto}.trip-prediction-summary{padding:9px 10px;border-bottom:1px solid var(--line)}.trip-summary-main{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.trip-summary-main h3{margin:1px 0 2px;font-size:13px}.trip-summary-main span{font-size:7px;color:#71808b}.prediction-mode{border-radius:999px;padding:5px 7px;font-size:6px;font-weight:950;white-space:nowrap}.prediction-mode.live{background:#e3f6e8;color:#24743a}.prediction-mode.stale{background:#fff3d8;color:#8a6200}.prediction-mode.estimate{background:#eef1f4;color:#64717c}.trip-summary-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:8px}.trip-summary-kpis article{border:1px solid #e1e6ea;border-radius:7px;padding:7px 8px;min-width:0;background:#fbfcfd}.trip-summary-kpis span{display:block;font-size:5.8px;letter-spacing:.55px;font-weight:950;color:#7d8992}.trip-summary-kpis strong{display:block;margin-top:2px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#173553}.trip-summary-kpis small{display:block;margin-top:2px;font-size:6px;color:#7b8790;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trip-stop-table-wrap{overflow:auto;min-height:0}.trip-stop-table{width:100%;border-collapse:separate;border-spacing:0;font-size:7.4px}.trip-stop-table thead th{position:sticky;top:0;z-index:4;background:#f3f6f8;color:#657580;font-size:6px;letter-spacing:.55px;font-weight:950;text-align:left;padding:7px 8px;border-bottom:1px solid #d8e0e6}.trip-stop-table tbody td{padding:7px 8px;border-bottom:1px solid #edf1f3;vertical-align:middle;font-variant-numeric:tabular-nums}.trip-stop-table tbody tr.passed{background:#fafcfa}.trip-stop-table tbody tr.next{background:#fff6d9;box-shadow:inset 4px 0 0 #e6ad00}.trip-stop-table tbody tr.predicted{background:#fff}.trip-stop-table tbody tr.unobserved{background:#fbfbfc;color:#7a8790}.trip-stop-table tbody tr:hover{background:#f4f8fb}.trip-stop-table td:nth-child(1){width:32px;color:#82909a}.trip-stop-table td:nth-child(2){min-width:190px}.trip-stop-table td:nth-child(n+3){white-space:nowrap}.next-stop-marker{display:inline-block;margin-left:7px;padding:2px 4px;border-radius:999px;background:#e6ad00;color:#fff;font-size:5.5px;font-weight:1000;vertical-align:middle}.variance-pill,.stop-status{display:inline-block;border-radius:999px;padding:3px 5px;font-size:5.8px;font-weight:950}.variance-pill.late{background:#ffe7e9;color:#a62933}.variance-pill.early{background:#e8f6eb;color:#24723a}.variance-pill.ontime{background:#fff3cb;color:#7c5b00}.stop-status.next{background:#173553;color:#fff}.stop-status.passed{background:#e8f6eb;color:#24723a}.stop-status.predicted{background:#eaf1f8;color:#315d82}.stop-status.unobserved{background:#eef0f2;color:#727d86}.trip-prediction-foot{padding:7px 10px;background:#f7f9fa;border-top:1px solid #e1e6e9;font-size:6.2px;line-height:1.45;color:#6d7a84}.trip-times-empty{padding:16px;color:#7a8790;font-size:7.5px;text-align:center}.trip-loading-cell{text-align:center!important;padding:22px!important;color:#71808b!important}
@media(max-width:1180px){.trip-times-layout{grid-template-columns:320px minmax(0,1fr)}.trip-filter-grid{grid-template-columns:1fr 170px 1fr 135px}.trip-summary-kpis{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.trip-filter-grid,.trip-times-layout{grid-template-columns:1fr}.trip-summary-kpis{grid-template-columns:1fr 1fr}.current-trip-list-panel{max-height:320px}.trip-stop-table-wrap{max-height:520px}}

/* AVL PLATFORM V0.13.30 — LEAFLET MAP REFLOW / TILE STABILITY */
.map-surface.leaflet-container{contain:none!important;overflow:hidden!important}


/* ===== AVL PLATFORM V0.13.30 — FAST OCC VEHICLE INSPECTOR ===== */
.vehicle-inspector-backdrop{position:fixed;inset:0;z-index:4200;background:rgba(7,23,38,.26);display:flex;justify-content:flex-end;align-items:stretch;padding:10px;opacity:0;pointer-events:none;transition:opacity .1s linear;overscroll-behavior:contain}
.vehicle-inspector-backdrop.open{opacity:1;pointer-events:auto}.vehicle-inspector{width:min(540px,96vw);height:100%;background:#f7f9fb;border:1px solid rgba(255,255,255,.9);border-radius:16px;box-shadow:-14px 0 42px rgba(5,25,44,.20),0 8px 24px rgba(5,25,44,.13);display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;transform:translate3d(22px,0,0);transition:transform .14s cubic-bezier(.2,.8,.2,1);will-change:transform;contain:layout paint}.vehicle-inspector-backdrop.open .vehicle-inspector{transform:translate3d(0,0,0)}
.vehicle-inspector-head{display:grid;grid-template-columns:52px minmax(0,1fr) auto 32px;gap:10px;align-items:center;padding:13px 14px;background:linear-gradient(115deg,#0c3157 0%,#123e69 65%,#0d2d50 100%);color:#fff;border-bottom:3px solid var(--red)}.vehicle-inspector-route{height:46px;border-radius:11px;background:#d92532;display:grid;place-items:center;font-size:14px;font-weight:1000;box-shadow:0 5px 16px rgba(0,0,0,.18)}.vehicle-inspector-heading{min-width:0}.vehicle-inspector-heading .eyebrow{color:#aec9e0;margin:0 0 2px}.vehicle-inspector-heading h3{font-size:18px;margin:0;line-height:1.05}.vehicle-inspector-heading>span{display:block;margin-top:4px;font-size:7px;color:#d5e3ee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vehicle-inspector-state{align-self:start;margin-top:2px;border-radius:999px;padding:5px 7px;font-size:6px;font-weight:1000;letter-spacing:.5px;background:#dff4e5;color:#176e35}.vehicle-inspector-state.stale{background:#eef1f4;color:#63717c}.vehicle-inspector-state.critical{background:#ffe6e8;color:#a71f2a}.vehicle-inspector-close{width:30px;height:30px;border-radius:8px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:#fff;font-size:20px;line-height:1;cursor:pointer}.vehicle-inspector-close:hover{background:rgba(255,255,255,.18)}
.vehicle-inspector-body{overflow:auto;padding:10px;display:grid;gap:8px;align-content:start}.vehicle-inspector-hero,.vehicle-inspector-section{background:#fff;border:1px solid #dde5eb;border-radius:11px;box-shadow:0 2px 8px rgba(16,42,67,.045)}.vehicle-inspector-hero{padding:10px 11px;display:flex;justify-content:space-between;gap:12px;align-items:center}.vehicle-identity{display:flex;gap:10px;align-items:center;min-width:0}.vehicle-identity>div:last-child{min-width:0}.vehicle-identity p{font-size:5.6px;font-weight:950;letter-spacing:.7px;color:#7b8b97;margin:0}.vehicle-identity h4{font-size:16px;color:#112f4b;margin:2px 0 1px}.vehicle-identity>div:last-child>span{font-size:7px;color:#667986}.vehicle-icon{width:78px;min-width:78px;height:42px;clip-path:polygon(0 0,82% 0,100% 50%,82% 100%,0 100%);display:grid;grid-template-rows:auto auto;align-content:center;padding:5px 16px 5px 8px;color:#12212c;background:#f2c500}.vehicle-icon.good{background:var(--bus-status-color,#f2c500);color:var(--bus-status-text,#12212c)}.vehicle-icon.close{background:var(--bus-status-color,#ee333e);color:var(--bus-status-text,#fff)}.vehicle-icon.gap{background:var(--bus-status-color,#2eb257);color:var(--bus-status-text,#073317)}.vehicle-icon.neutral,.vehicle-icon.stale{background:var(--bus-status-color,#aab4bd);color:var(--bus-status-text,#25333d)}.vehicle-icon span{font-size:5.5px;font-weight:950}.vehicle-icon b{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vehicle-status-stack{display:grid;gap:5px;justify-items:end}.vehicle-status-pill{border-radius:999px;padding:5px 7px;font-size:6px;font-weight:1000;white-space:nowrap}.vehicle-status-pill.red{background:#ffe5e7;color:#a91f2a}.vehicle-status-pill.green{background:#e5f6e9;color:#1f733a}.vehicle-status-pill.amber{background:#fff2c9;color:#7f5d00}.vehicle-status-pill.neutral{background:#edf1f4;color:#63727d}
.vehicle-inspector-section{padding:9px 10px}.vehicle-section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}.vehicle-section-title>span{font-size:6px;font-weight:1000;letter-spacing:.65px;color:#697c8b}.vehicle-section-title>em{font-size:5.5px;font-style:normal;font-weight:950;color:#748491;border-radius:999px;background:#f0f3f5;padding:3px 5px}.vehicle-metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.vehicle-metric-grid article{min-width:0;border:1px solid #edf0f2;border-radius:8px;padding:7px;background:#fbfcfd}.vehicle-metric-grid small,.vehicle-confidence-grid span,.vehicle-next-stop small{display:block;font-size:5.2px;font-weight:950;letter-spacing:.45px;color:#7a8994}.vehicle-metric-grid strong{display:block;margin-top:2px;font-size:12px;color:#123454;white-space:nowrap}.vehicle-metric-grid span{display:block;margin-top:2px;font-size:5.8px;color:#75838d;line-height:1.3}.vehicle-inspector-section.prediction{border-left:4px solid #173c61}.vehicle-next-stop{display:grid;grid-template-columns:1.5fr 1fr;gap:7px}.vehicle-next-stop>div{border-radius:9px;background:#f5f8fa;padding:9px}.vehicle-next-stop strong{display:block;font-size:15px;margin-top:2px;color:#123454;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vehicle-next-stop span{display:block;font-size:6.4px;margin-top:3px;color:#667987}.vehicle-eta{text-align:right}.vehicle-confidence{display:grid;grid-template-columns:1fr auto;gap:3px 8px;align-items:center;margin-top:7px}.vehicle-confidence>span{font-size:6px;color:#6e7e89}.vehicle-confidence>b{font-size:7px;color:#173957}.vehicle-confidence>i{grid-column:1/3;height:5px;background:#e7ecef;border-radius:999px;overflow:hidden}.vehicle-confidence>i>u{display:block;height:100%;background:#2da755;border-radius:inherit;text-decoration:none}.vehicle-prediction-loading{display:flex;gap:8px;align-items:center;padding:10px;background:#f6f8fa;border-radius:8px;color:#71818d;font-size:6.5px}.vehicle-prediction-loading i{width:14px;height:14px;border:2px solid #cdd7df;border-top-color:#173c61;border-radius:50%;animation:vehicle-spin .75s linear infinite}.vehicle-prediction-error{padding:10px;border-radius:8px;background:#fff3f4;color:#9c2a34;font-size:6.5px}@keyframes vehicle-spin{to{transform:rotate(360deg)}}
.vehicle-confidence-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.vehicle-confidence-grid article{border:1px solid #edf1f3;border-radius:8px;padding:7px;min-width:0}.vehicle-confidence-grid b{display:block;font-size:11px;margin-top:2px;color:#153752;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vehicle-confidence-grid b.mono{font-size:7px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.vehicle-confidence-grid small{display:block;font-size:5.6px;color:#7a8790;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vehicle-flag-list{display:grid;gap:5px}.vehicle-flag-list article{display:flex;gap:7px;align-items:flex-start;border-radius:8px;padding:7px 8px;background:#f8fafb}.vehicle-flag-list article>i{width:8px;height:8px;border-radius:50%;margin-top:2px;background:#28a451}.vehicle-flag-list article.red>i{background:#dc2d3a}.vehicle-flag-list article.amber>i{background:#e6ad00}.vehicle-flag-list b{display:block;font-size:6.5px;color:#2b4357}.vehicle-flag-list span{display:block;font-size:5.8px;color:#71818d;margin-top:2px;line-height:1.35}
.vehicle-inspector-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;padding:10px;background:#fff;border-top:1px solid #dce4ea}.vehicle-action{height:48px!important;display:grid!important;align-content:center!important;gap:2px!important;padding:0 8px!important}.vehicle-action span{font-size:7px;font-weight:1000}.vehicle-action small{font-size:5.4px;font-weight:700;opacity:.72;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vehicle-map-tooltip{font-family:inherit;font-size:7px;font-weight:850}.bus-popup{display:none!important}
@media(max-width:700px){.vehicle-inspector-backdrop{padding:0}.vehicle-inspector{width:100vw;max-width:none;border-radius:0}.vehicle-inspector-head{grid-template-columns:46px minmax(0,1fr) auto 30px}.vehicle-metric-grid{grid-template-columns:1fr 1fr}.vehicle-confidence-grid{grid-template-columns:1fr}.vehicle-next-stop{grid-template-columns:1fr}.vehicle-eta{text-align:left}.vehicle-inspector-actions{grid-template-columns:1fr}.vehicle-action{height:42px!important}}

/* AVL PLATFORM V0.13.30 — SELECTED BUS JOURNEY INTELLIGENCE */
.live-bottom-dock{grid-template-columns:minmax(0,1fr) 390px!important;gap:8px!important}
.live-journey-card{padding:7px!important;border:1px solid #d9e2e9!important;background:#f8fafc!important;min-width:0;overflow:hidden}
.live-journey-head{margin-bottom:5px!important}.live-journey-head h3{font-size:11px!important}
.live-journey-tools{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:6px}.live-journey-tools .button{height:32px!important;font-size:7px!important;font-weight:950!important;padding:0 7px!important}.live-journey-tools .primary{background:#0b294d!important;border-color:#0b294d!important;color:#fff!important}
.live-journey-panel{min-height:0;overflow:auto;display:flex;flex-direction:column;gap:6px;padding-right:1px;scrollbar-width:thin}
.journey-empty{display:grid;gap:4px;align-content:center;justify-items:start;border:1px dashed #cdd8e0;border-radius:9px;background:#fff;padding:14px 12px;color:#647786}.journey-empty.compact{padding:10px}.journey-empty b{font-size:10px;color:#173957}.journey-empty span{font-size:7px;line-height:1.45}.journey-route-overview{display:grid;gap:7px}.journey-route-callout{border-left:4px solid #173c61;border-radius:8px;background:#fff;padding:9px}.journey-route-callout span,.journey-route-metrics span{display:block;font-size:5.4px;font-weight:950;letter-spacing:.6px;color:#7b8a95}.journey-route-callout b{display:block;font-size:12px;color:#153956;margin:2px 0}.journey-route-callout small,.journey-route-metrics small{display:block;font-size:5.8px;color:#778793;line-height:1.35}.journey-route-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.journey-route-metrics article{min-width:0;background:#fff;border:1px solid #e1e7eb;border-radius:8px;padding:7px}.journey-route-metrics strong{display:block;font-size:10px;color:#163b5a;margin:2px 0;white-space:normal;overflow-wrap:anywhere}
.journey-selected-summary{display:grid;gap:5px}.journey-selected-id{display:flex;gap:8px;align-items:center;background:#fff;border:1px solid #dce5eb;border-radius:9px;padding:7px}.journey-selected-id>div{min-width:0}.journey-selected-id b{display:block;font-size:12px;color:#133754}.journey-selected-id small{display:block;font-size:6px;color:#70818e;margin-top:2px}.journey-bus-chip{min-width:42px;height:34px;border-radius:7px;display:grid;place-items:center;padding:0 5px;font-size:8px;font-weight:1000;background:#f0c400;color:#18252d}.journey-bus-chip.good{background:var(--bus-status-color,#f0c400);color:var(--bus-status-text,#18252d)}.journey-bus-chip.close{background:var(--bus-status-color,#e62f3c);color:var(--bus-status-text,#fff)}.journey-bus-chip.gap{background:var(--bus-status-color,#31ad58);color:var(--bus-status-text,#092f18)}.journey-bus-chip.stale,.journey-bus-chip.neutral{background:var(--bus-status-color,#aab5be);color:var(--bus-status-text,#20303a)}
.journey-live-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.journey-live-strip span{min-width:0;border:1px solid #e5eaee;background:#fff;border-radius:6px;padding:5px;font-size:5.1px;color:#72828e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.journey-live-strip b{color:#173a57;font-size:7px}
.journey-next-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;border:1px solid #d8e4ed;border-left:4px solid #173c61;border-radius:9px;background:#fff;padding:8px}.journey-next-card span{display:block;font-size:5.4px;font-weight:950;letter-spacing:.7px;color:#718592}.journey-next-card b{display:block;font-size:12px;color:#113957;margin:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.journey-next-card small{font-size:6px;color:#6f7f8a}.journey-next-card>strong{font-size:11px;color:#b02330;background:#fff1f2;border-radius:999px;padding:6px 8px;white-space:nowrap}
.journey-terminal-line{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:5px;align-items:center;background:#f0f5f8;border-radius:7px;padding:6px 7px;font-size:5.8px;color:#6f808d}.journey-terminal-line b{font-size:8px;color:#173a57}.journey-terminal-line .prediction-mode{font-size:5px!important;padding:4px 5px!important;white-space:nowrap}
.journey-stop-table-wrap{min-height:88px;max-height:205px;overflow:auto;border:1px solid #dfe6eb;border-radius:8px;background:#fff}.journey-stop-table{width:100%;border-collapse:collapse;table-layout:fixed}.journey-stop-table th{position:sticky;top:0;z-index:2;background:#f3f6f8;font-size:5.2px;color:#70808c;text-align:left;padding:5px 4px;border-bottom:1px solid #dfe5e9}.journey-stop-table th:first-child{width:36%}.journey-stop-table td{font-size:5.9px;padding:5px 4px;border-bottom:1px solid #edf1f3;vertical-align:middle}.journey-stop-table td b{display:block;font-size:6.3px;color:#173957;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.journey-stop-table td small{display:block;font-size:4.8px;color:#85939d;margin-top:1px}.journey-stop-table tr.passed{opacity:.68}.journey-stop-table tr.next{background:#fff8d9;box-shadow:inset 3px 0 #e5ac00}.journey-stop-table tr.next td b{color:#8a6200}.journey-stop-table tr.predicted{background:#fbfdfe}.journey-variance{display:inline-block;border-radius:999px;padding:3px 4px;font-size:5px;font-weight:950}.journey-variance.late{background:#ffe8ea;color:#aa2632}.journey-variance.early{background:#e7f7eb;color:#1d783d}.journey-variance.ontime{background:#fff3cf;color:#836000}
.journey-prediction-loading{display:flex;align-items:center;gap:8px;border:1px solid #dfe6eb;border-radius:8px;background:#fff;padding:12px}.journey-prediction-loading i{width:14px;height:14px;border-radius:50%;border:2px solid #d1dce4;border-top-color:#173c61;animation:vehicle-spin .75s linear infinite}.journey-prediction-loading b{display:block;font-size:8px;color:#173957}.journey-prediction-loading span{display:block;font-size:5.8px;color:#73838e;margin-top:2px}.journey-inline-error{padding:7px;border-radius:7px;background:#fff0f1;color:#9e2731;font-size:6px}.journey-actions{display:grid;grid-template-columns:1fr 1fr .7fr;gap:5px}.journey-actions .button{height:29px!important;padding:0 5px!important;font-size:5.8px!important;font-weight:950!important}
.occ-tool-backdrop{position:fixed;inset:0;z-index:4150;background:rgba(7,23,38,.24);display:flex;justify-content:flex-end;align-items:stretch;padding:10px;opacity:0;pointer-events:none;transition:opacity .1s linear}.occ-tool-backdrop.open{opacity:1;pointer-events:auto}.occ-tool-drawer{width:min(500px,96vw);height:100%;display:grid;grid-template-rows:auto minmax(0,1fr);background:#f7f9fb;border:1px solid rgba(255,255,255,.9);border-radius:15px;box-shadow:-14px 0 40px rgba(5,25,44,.18);overflow:hidden;transform:translate3d(20px,0,0);transition:transform .14s cubic-bezier(.2,.8,.2,1)}.occ-tool-backdrop.open .occ-tool-drawer{transform:translate3d(0,0,0)}.occ-tool-head{display:grid;grid-template-columns:minmax(0,1fr) auto 32px;gap:9px;align-items:center;padding:12px 13px;background:#113956;color:#fff;border-bottom:3px solid #d92532}.occ-tool-head h3{font-size:15px;margin:1px 0}.occ-tool-head .eyebrow{color:#b9cede}.occ-tool-close{width:30px;height:30px;border-radius:8px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:#fff;font-size:20px;cursor:pointer}.occ-tool-body{min-height:0;overflow:auto;padding:10px}.occ-tool-body .source-state.mini{padding:8px}.occ-tool-body .attention-list{gap:7px}.occ-tool-body .attention-item{padding:8px}.occ-tool-body .attention-item b{font-size:8px}.occ-tool-body .attention-item span{font-size:7px}.ai-occ-panel.drawer{margin:0;padding:0;border:0;gap:9px}.ai-occ-panel.drawer .ai-occ-question input{height:38px;font-size:9px}.ai-occ-panel.drawer .ai-occ-result{min-height:180px;padding:12px}.ai-occ-panel.drawer .ai-occ-result small{font-size:8.5px}
@media(max-width:1350px){.live-bottom-dock{grid-template-columns:minmax(0,1fr) 330px!important}.journey-live-strip{grid-template-columns:1fr 1fr}.journey-route-metrics{grid-template-columns:1fr 1fr}.journey-terminal-line{grid-template-columns:1fr 1fr}.journey-terminal-line .prediction-mode{grid-column:1/3;width:max-content}}
@media(max-width:820px){.live-bottom-dock{grid-template-columns:1fr!important}.live-journey-card{min-height:420px}.occ-tool-backdrop{padding:0}.occ-tool-drawer{width:100vw;max-width:none;border-radius:0}.journey-stop-table-wrap{max-height:260px}}

/* ===== AVL PLATFORM V0.13.30 — OPERATIONAL WORKSPACE REDESIGN ===== */
.live-bottom-dock{grid-template-columns:minmax(0,1fr)!important;gap:8px!important}.map-command-card{min-width:0}.map-head-actions{flex-wrap:wrap;justify-content:flex-end}.occ-quick-button{height:28px!important;padding:0 9px!important;font-size:6.2px!important;font-weight:950!important}.occ-quick-button.primary{background:#0b294d!important;border-color:#0b294d!important;color:#fff!important}
.family-kpi-breakdown{margin-top:7px;border:1px solid #dbe4ea;border-radius:9px;background:#fff;overflow:hidden}.family-kpi-breakdown[hidden]{display:none!important}.family-kpi-head{display:grid;grid-template-columns:minmax(140px,1.5fr) 62px 82px 82px 90px 90px 76px;background:#f3f6f8;border-bottom:1px solid #dce4e9;color:#6d7c87;font-size:5.7px;font-weight:950;letter-spacing:.55px}.family-kpi-row{display:grid;grid-template-columns:minmax(140px,1.5fr) 62px 82px 82px 90px 90px 76px;align-items:center;min-height:29px;border-bottom:1px solid #edf1f3;font-size:6.5px;color:#2e4354}.family-kpi-row:last-child{border-bottom:0}.family-kpi-head>span,.family-kpi-row>span{padding:6px 8px;min-width:0}.family-kpi-row .branch-name{font-size:8px;font-weight:1000;color:#153a58}.family-kpi-row .risk-pill{display:inline-flex;width:max-content;border-radius:999px;padding:3px 6px;font-size:5.5px;font-weight:950}.family-kpi-row .risk-pill.critical{background:#ffe8ea;color:#a52632}.family-kpi-row .risk-pill.watch{background:#fff2cf;color:#856100}.family-kpi-row .risk-pill.normal,.family-kpi-row .risk-pill.thin{background:#e9f6ed;color:#26703e}.family-kpi-caption{padding:6px 8px;background:#fbfcfd;font-size:5.7px;color:#71808b;border-top:1px solid #edf1f3}

.journey-dialog-backdrop{position:fixed;inset:0;z-index:4300;background:rgba(7,23,38,.26);display:grid;place-items:center;padding:28px;opacity:0;pointer-events:none;transition:opacity .1s linear}.journey-dialog-backdrop.open{opacity:1;pointer-events:auto}.journey-dialog{width:min(1420px,88vw);height:min(820px,88vh);display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:#f7f9fb;border:1px solid rgba(255,255,255,.94);border-radius:16px;box-shadow:0 26px 80px rgba(4,22,39,.28);overflow:hidden;transform:translate3d(0,10px,0) scale(.992);transition:transform .14s cubic-bezier(.2,.8,.2,1)}.journey-dialog-backdrop.open .journey-dialog{transform:translate3d(0,0,0) scale(1)}.journey-dialog-head{display:grid;grid-template-columns:minmax(0,1fr) auto 34px;gap:10px;align-items:center;padding:12px 14px;background:#123a5d;color:#fff;border-bottom:3px solid #d92532}.journey-dialog-head .eyebrow{color:#b9cede}.journey-dialog-head h3{font-size:16px;margin:1px 0}.journey-dialog-head>div>span{display:block;font-size:6.5px;color:#c6d6e2}.journey-dialog-close{width:32px;height:32px;border-radius:8px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:#fff;font-size:20px;cursor:pointer}.journey-dialog-body{min-height:0;overflow:auto;padding:12px}.journey-dialog-actions{display:grid;grid-template-columns:1fr 1fr 1fr 1.1fr 1.1fr;gap:7px;padding:10px 12px;background:#fff;border-top:1px solid #dce4ea}.journey-dialog-actions .button{height:38px!important;font-size:6.8px!important;font-weight:1000!important}.journey-dialog-body .journey-selected-summary{grid-template-columns:minmax(280px,.8fr) minmax(520px,1.7fr);gap:9px;align-items:stretch}.journey-dialog-body .journey-selected-id{min-height:66px}.journey-dialog-body .journey-selected-id b{font-size:16px}.journey-dialog-body .journey-live-strip{grid-template-columns:repeat(4,1fr);align-content:stretch}.journey-dialog-body .journey-live-strip span{display:grid;align-content:center;min-height:66px;font-size:6.2px}.journey-dialog-body .journey-live-strip b{display:block;font-size:12px;margin-top:3px}.journey-dialog-body .journey-next-card{margin-top:9px;min-height:78px;padding:11px 13px}.journey-dialog-body .journey-next-card b{font-size:18px}.journey-dialog-body .journey-next-card span{font-size:6.4px}.journey-dialog-body .journey-next-card small{font-size:7.5px}.journey-dialog-body .journey-next-card>strong{font-size:15px;padding:8px 10px}.journey-dialog-body .journey-terminal-line{margin-top:8px;padding:8px 10px;font-size:7px}.journey-dialog-body .journey-terminal-line b{font-size:10px}.journey-dialog-body .journey-stop-table-wrap{margin-top:9px;max-height:none;min-height:280px;overflow:auto}.journey-dialog-body .journey-stop-table th{font-size:6.4px;padding:7px 8px}.journey-dialog-body .journey-stop-table td{font-size:7.6px;padding:7px 8px}.journey-dialog-body .journey-stop-table td b{font-size:8.3px}.journey-dialog-body .journey-stop-table td small{font-size:5.8px}.journey-dialog-body .journey-stop-table th:first-child{width:36%}.journey-dialog-body .journey-actions{display:none!important}.journey-dialog-body .journey-safe-error{min-height:180px;align-content:center}.journey-dialog-body .journey-prediction-loading{min-height:180px}

.trip-times-page{grid-template-rows:auto auto auto minmax(0,1fr);gap:9px}.trip-filter-grid.route-wide{grid-template-columns:minmax(250px,1.45fr) 210px 190px 155px}.trip-mode-switch{height:36px;display:grid;grid-template-columns:1fr 1fr;border:1px solid #ccd8e1;border-radius:7px;overflow:hidden;background:#f4f7f9}.trip-mode-switch button{border:0;background:transparent;color:#60717f;font-size:7px;font-weight:1000;letter-spacing:.45px}.trip-mode-switch button.active{background:#123a5d;color:#fff}.trip-route-summary{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:7px}.trip-route-summary article{border:1px solid #dfe6eb;background:#fff;border-radius:8px;padding:7px 8px;min-width:0}.trip-route-summary span{display:block;font-size:5.6px;font-weight:950;letter-spacing:.55px;color:#788791}.trip-route-summary strong{display:block;font-size:12px;color:#173957;margin-top:2px}.trip-route-summary small{display:block;font-size:5.7px;color:#7c8992;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trip-route-workspace{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-height:0;overflow:hidden}.trip-route-table-head{padding:8px 10px;border-bottom:1px solid var(--line)}.trip-route-table-wrap{overflow:auto;min-height:0}.trip-route-table{width:100%;border-collapse:separate;border-spacing:0;font-size:7.2px}.trip-route-table th{position:sticky;top:0;z-index:4;background:#f3f6f8;color:#64747f;font-size:5.8px;letter-spacing:.5px;font-weight:950;text-align:left;padding:7px 8px;border-bottom:1px solid #d8e0e6;white-space:nowrap}.trip-route-table td{padding:7px 8px;border-bottom:1px solid #edf1f3;vertical-align:middle;font-variant-numeric:tabular-nums}.trip-route-table tbody tr[data-trip-route-vehicle]{cursor:pointer}.trip-route-table tbody tr[data-trip-route-vehicle]:hover{background:#f4f8fb}.trip-route-table td:first-child b{display:block;font-size:9px;color:#143957}.trip-route-table td small{display:block;font-size:5.5px;color:#7b8993;margin-top:1px}.trip-route-table .late-text{color:#ad2632;font-weight:950}.trip-route-table .early-text{color:#22743d;font-weight:950}.trip-route-table .on-text{color:#8a6500;font-weight:950}.trip-route-table .mode-chip{display:inline-flex;border-radius:999px;padding:3px 5px;font-size:5.4px;font-weight:950;background:#eef2f5;color:#60707c}.trip-route-table .mode-chip.live{background:#e6f6eb;color:#24743b}.trip-route-table .mode-chip.stale{background:#fff1d5;color:#886200}.trip-route-table.performance-trips{min-width:1280px}.trip-route-table.stops{min-width:1180px}.trip-route-table.stops td:first-child{min-width:190px}.trip-route-table.stops tr.direction-break td{background:#eef4f8;color:#16436a;font-weight:950;font-size:6px;letter-spacing:.55px}.trip-route-empty{padding:22px!important;text-align:center;color:#7b8992!important}

@media(max-width:1180px){.family-kpi-head,.family-kpi-row{grid-template-columns:minmax(120px,1.2fr) 54px 74px 74px 80px 80px 68px}.journey-dialog{width:94vw;height:90vh}.trip-filter-grid.route-wide{grid-template-columns:1fr 180px 170px 140px}.trip-route-summary{grid-template-columns:repeat(4,1fr)}}
@media(max-width:820px){.journey-dialog-backdrop{padding:0}.journey-dialog{width:100vw;height:100vh;border-radius:0}.journey-dialog-actions{grid-template-columns:1fr 1fr}.journey-dialog-body .journey-selected-summary{grid-template-columns:1fr}.trip-filter-grid.route-wide{grid-template-columns:1fr}.trip-route-summary{grid-template-columns:1fr 1fr}.family-kpi-breakdown{overflow:auto}.family-kpi-head,.family-kpi-row{min-width:660px}}
.family-kpi-row .risk-pill.red{background:#ffe8ea;color:#a52632}.family-kpi-row .risk-pill.amber{background:#fff2cf;color:#856100}.family-kpi-row .risk-pill.green{background:#e9f6ed;color:#26703e}
.vehicle-inspector-backdrop{z-index:4500}.occ-tool-backdrop{z-index:4600}
.ops-kpis.family{grid-template-columns:repeat(6,minmax(0,1fr))!important}
@media(max-width:1350px){.ops-kpis.family{grid-template-columns:repeat(6,minmax(92px,1fr))!important}}

/* AVL PLATFORM V0.13.30 — SHARED OCC WORKFLOW */
.occ-alert.workflow-active{background:#fbfcfd;border-left-color:#5b7b96}.occ-alert.resolved{opacity:.64;background:#f6f8fa;border-left-color:#94a3b8}.occ-alert .alert-severity.status-open{background:#fff0f2;color:#b51626;border-color:#efbac0}.occ-alert.watch .alert-severity.status-open{background:#fff7df;color:#8a5d00;border-color:#efd491}.occ-alert .alert-severity.status-acknowledged{background:#eef6ff;color:#205d91;border-color:#bfd6ea}.occ-alert .alert-severity.status-assigned{background:#edf3ff;color:#304f9c;border-color:#c7d3ef}.occ-alert .alert-severity.status-monitoring{background:#eaf8f1;color:#176d3b;border-color:#bde1cd}.occ-alert .alert-severity.status-resolved{background:#eef1f4;color:#607285;border-color:#d0d8df}.alert-actions .manage{color:#173f63;font-weight:950}.occ-schema-warning{min-height:150px;align-content:center;gap:5px}.occ-schema-warning b{font-size:11px;color:#b51626}.occ-schema-warning span{max-width:620px;font-size:7.5px;line-height:1.5;color:#607285}.network-scan-state.error{background:#fff0f2;color:#b51626;border-color:#efbac0}
.occ-workflow-backdrop{position:fixed;inset:0;z-index:4700;background:rgba(7,23,38,.32);display:grid;place-items:center;padding:28px;opacity:0;pointer-events:none;transition:opacity .12s linear}.occ-workflow-backdrop.open{opacity:1;pointer-events:auto}.occ-workflow-dialog{width:min(1180px,88vw);height:min(760px,86vh);display:grid;grid-template-rows:auto minmax(0,1fr);background:#f7f9fb;border:1px solid rgba(255,255,255,.96);border-radius:15px;box-shadow:0 26px 80px rgba(4,22,39,.3);overflow:hidden;transform:translateY(8px) scale(.994);transition:transform .14s cubic-bezier(.2,.8,.2,1)}.occ-workflow-backdrop.open .occ-workflow-dialog{transform:none}.occ-workflow-head{display:grid;grid-template-columns:minmax(0,1fr) auto 34px;gap:10px;align-items:center;padding:12px 14px;background:#123a5d;color:#fff;border-bottom:3px solid #d92532}.occ-workflow-head .eyebrow{color:#b9cede}.occ-workflow-head h3{font-size:15px;margin:1px 0}.occ-workflow-head>div>span{display:block;font-size:6.5px;color:#c6d6e2}.occ-workflow-status{min-width:92px;text-align:center}.occ-workflow-status.status-open{background:#fff0f2;color:#b51626}.occ-workflow-status.status-acknowledged{background:#eef6ff;color:#205d91}.occ-workflow-status.status-assigned{background:#edf3ff;color:#304f9c}.occ-workflow-status.status-monitoring{background:#eaf8f1;color:#176d3b}.occ-workflow-status.status-resolved{background:#eef1f4;color:#607285}.occ-workflow-body{min-height:0;overflow:auto;padding:11px;display:grid;grid-template-columns:minmax(0,1.18fr) minmax(310px,.82fr);grid-template-rows:auto minmax(0,1fr);gap:10px}.occ-workflow-detail{grid-column:1/-1;display:grid;grid-template-columns:1.2fr 1.2fr 1fr 1fr .45fr;gap:7px}.occ-workflow-detail article{border:1px solid #d9e3ec;background:#fff;border-radius:9px;padding:9px;min-width:0}.occ-workflow-detail span{display:block;font-size:5.8px;font-weight:950;letter-spacing:.45px;color:#7b8da0}.occ-workflow-detail b{display:block;margin-top:4px;font-size:8px;line-height:1.4;color:#17324e}.occ-workflow-control,.occ-workflow-history-panel{border:1px solid #d9e3ec;background:#fff;border-radius:10px;padding:10px;min-height:0}.occ-workflow-control{display:grid;align-content:start;gap:8px}.occ-workflow-control label{display:grid;gap:4px}.occ-workflow-control label>span{font-size:6px;font-weight:950;letter-spacing:.45px;color:#718096}.occ-workflow-control select,.occ-workflow-control textarea{width:100%;border:1px solid #cbd7e2;border-radius:8px;background:#fff;color:#17324e;font:inherit}.occ-workflow-control select{height:36px;padding:0 9px;font-size:8px;font-weight:800}.occ-workflow-control textarea{min-height:110px;resize:vertical;padding:9px;font-size:8px;line-height:1.45}.occ-workflow-actions{display:flex;gap:6px;flex-wrap:wrap}.occ-workflow-actions .button{height:34px!important;font-size:6.5px!important;padding:0 9px!important}.occ-workflow-history-panel{display:grid;grid-template-rows:auto minmax(0,1fr)}.occ-workflow-history{overflow:auto;display:grid;align-content:start;gap:6px;padding-right:2px}.occ-workflow-history article{display:grid;grid-template-columns:92px minmax(0,1fr) auto;gap:7px;align-items:center;border:1px solid #e0e7ed;border-radius:8px;padding:7px;background:#fbfcfd}.occ-workflow-history article>span{font-size:6px;font-weight:950;color:#274f71}.occ-workflow-history article>b{font-size:7.5px;color:#17324e}.occ-workflow-history article>small{font-size:6px;color:#718096}.occ-workflow-history article>p{grid-column:2/-1;margin:0;font-size:7px;line-height:1.35;color:#5f7284}.occ-history-empty{min-height:100px;display:grid;place-items:center;text-align:center;color:#7b8da0;font-size:7px;font-weight:800;border:1px dashed #d4dee7;border-radius:8px;background:#fafcfd}
@media(max-width:980px){.occ-workflow-body{grid-template-columns:1fr}.occ-workflow-detail{grid-template-columns:1fr 1fr}.occ-workflow-dialog{width:94vw;height:90vh}}

/* AVL PLATFORM V0.13.30 GTFS-RT CONTEXT */
.service-alert-strip{display:flex;align-items:stretch;gap:6px;padding:6px 8px;border-bottom:1px solid #efd28c;background:#fff8df;min-height:42px}.service-alert-strip>div{min-width:145px;display:flex;flex-direction:column;justify-content:center}.service-alert-strip>div b{font-size:6.3px;letter-spacing:.55px;color:#7c5600}.service-alert-strip>div span{font-size:5.7px;color:#8d7a4e;margin-top:2px}.service-alert-strip article{flex:1;min-width:0;border:1px solid #edd89c;background:#fffdf5;border-radius:7px;padding:5px 7px;display:flex;flex-direction:column;justify-content:center}.service-alert-strip article.severe{border-color:#e8a1a7;background:#fff2f3}.service-alert-strip article strong{font-size:6.8px;color:#624b13;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.service-alert-strip article.severe strong{color:#a02631}.service-alert-strip article small{font-size:5.5px;color:#8a7953;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:900px){.service-alert-strip{flex-wrap:wrap}.service-alert-strip>div{width:100%}.service-alert-strip article{min-width:220px}}

/* AVL PLATFORM V0.13.30 — MISSING SERVICE / LOST TRIP INTELLIGENCE */
.service-delivery-strip{display:flex;align-items:stretch;gap:6px;padding:6px 8px;border-bottom:1px solid #d8e3ec;background:#f6f9fb;min-height:42px}.service-delivery-strip>div:first-child{min-width:170px;display:flex;flex-direction:column;justify-content:center}.service-delivery-strip>div:first-child b{font-size:6.3px;letter-spacing:.55px;color:#173f63}.service-delivery-strip>div:first-child span{font-size:5.7px;color:#6f8293;margin-top:2px}.service-delivery-strip.critical{background:#fff2f3;border-bottom-color:#edb8bd}.service-delivery-strip.watch{background:#fff9e8;border-bottom-color:#ecdba7}.service-delivery-counts{display:flex;align-items:center;gap:5px;flex-wrap:wrap;min-width:230px}.service-delivery-counts span{border:1px solid #d6e0e8;background:#fff;border-radius:999px;padding:4px 6px;font-size:5.5px;font-weight:900;color:#617486;white-space:nowrap}.service-delivery-counts b{font-size:6.2px;color:#173f63}.service-delivery-strip article{flex:1;min-width:0;border:1px solid #d9e3eb;background:#fff;border-radius:7px;padding:5px 7px;display:flex;flex-direction:column;justify-content:center}.service-delivery-strip article.critical{border-color:#e8a1a7;background:#fff6f7}.service-delivery-strip article.watch{border-color:#e7d18f;background:#fffdf5}.service-delivery-strip article strong{font-size:6.8px;color:#17324e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.service-delivery-strip article.critical strong{color:#a02631}.service-delivery-strip article small{font-size:5.5px;color:#718096;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.service-delivery-tag{display:inline-flex;align-items:center;border-radius:999px;padding:3px 6px;font-size:5.8px;font-weight:950;letter-spacing:.25px;border:1px solid #d5dee7;background:#f5f7f9;color:#647789}.service-delivery-tag.ok{background:#edf8f1;border-color:#c9e5d3;color:#27704a}.service-delivery-tag.watch{background:#fff7df;border-color:#ecd395;color:#8b6107}.service-delivery-tag.critical{background:#fff0f2;border-color:#edbbc1;color:#b01f2e}.service-delivery-tag.waiting{background:#f1f4f6;border-color:#d7dee4;color:#788897}@media(max-width:900px){.service-delivery-strip{flex-wrap:wrap}.service-delivery-strip>div:first-child{width:100%}.service-delivery-counts{width:100%}.service-delivery-strip article{min-width:220px}}

/* Full-screen OCC navigation rail must remain available at every viewport width. */
html.occ-fullscreen .app-shell{height:100vh!important;grid-template-columns:58px minmax(0,1fr)!important}
html.occ-fullscreen .main{height:100vh!important;min-width:0!important;overflow:hidden!important}
html.occ-fullscreen .workspace{overflow:hidden!important}


/* AVL PLATFORM V0.13.30-4 BUILD MARKER — COMPACT AVL CONTEXT / MAXIMUM BUS VISIBILITY */
/* Service-delivery and GTFS-RT alert context must never consume the flexible AVL lane row. */
.distance-avl{grid-template-rows:auto 34px minmax(0,1fr)!important}
.distance-avl-context{grid-row:1;display:flex;align-items:stretch;min-width:0;min-height:0;max-height:32px;overflow:hidden;background:#f6f9fb}
.distance-avl-context:empty{display:none}
.distance-avl>.distance-avl-head{grid-row:2;min-height:34px!important;height:34px!important;padding-top:4px!important;padding-bottom:3px!important}
.distance-avl>.distance-avl-body{grid-row:3;min-height:0!important}
.distance-avl-context>.service-delivery-strip,.distance-avl-context>.service-alert-strip{flex:1 1 0;min-width:0;min-height:30px!important;height:30px!important;max-height:30px!important;padding:3px 8px!important;gap:5px!important;overflow:hidden;border-bottom:1px solid #d8e3ec}
.distance-avl-context>.service-delivery-strip>div:first-child{min-width:150px!important}
.distance-avl-context>.service-delivery-strip>div:first-child span,.distance-avl-context>.service-alert-strip>div span{font-size:5.2px!important;margin-top:1px!important}
.distance-avl-context>.service-delivery-counts{min-width:210px!important;gap:4px!important;flex-wrap:nowrap!important;overflow:hidden}
.distance-avl-context>.service-delivery-counts span{padding:2px 5px!important;font-size:5.2px!important}
.distance-avl-context>.service-delivery-strip article,.distance-avl-context>.service-alert-strip article{padding:3px 6px!important;min-height:22px!important;overflow:hidden}
.distance-avl-context>.service-delivery-strip article strong,.distance-avl-context>.service-alert-strip article strong{font-size:6.2px!important}
.distance-avl-context>.service-delivery-strip article small,.distance-avl-context>.service-alert-strip article small{font-size:5.1px!important;margin-top:1px!important}
.distance-avl-context>.service-alert-strip>div{min-width:130px!important}
@media(max-width:1100px){.distance-avl-context>.service-delivery-strip>div:first-child span,.distance-avl-context>.service-alert-strip>div span{display:none}.distance-avl-context>.service-delivery-strip>div:first-child{min-width:125px!important}.distance-avl-context>.service-delivery-counts{min-width:190px!important}}

/* AVL PLATFORM V0.13.30-4 BUILD MARKER — COMPACT FAMILY SUMMARY / MAXIMUM FAMILY AVL VISIBILITY */
.ops-toolbar.family-summary-active{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr)!important;gap:6px!important;align-items:stretch!important}
.ops-toolbar.family-summary-active .route-control{grid-column:1/-1!important}
.ops-toolbar.family-summary-active .ops-kpis.family{grid-column:1!important;grid-row:2!important;min-height:46px!important;height:46px!important;overflow:hidden!important;border-radius:9px!important}
.ops-toolbar.family-summary-active .ops-kpis.family article{padding:5px 7px!important;align-content:center!important}
.ops-toolbar.family-summary-active .ops-kpis.family span{font-size:5.35px!important;line-height:1!important;letter-spacing:.32px!important}
.ops-toolbar.family-summary-active .ops-kpis.family strong{font-size:13px!important;line-height:1!important;margin-top:2px!important}
.ops-toolbar.family-summary-active .ops-kpis.family small{display:none!important}
.ops-toolbar.family-summary-active .family-kpi-breakdown{grid-column:2!important;grid-row:2!important;margin-top:0!important;min-height:46px!important;height:46px!important;display:grid!important;grid-template-columns:86px minmax(0,1fr)!important;align-items:stretch!important;border-radius:9px!important;overflow:hidden!important;background:#fff!important}
.family-kpi-title{display:grid;align-content:center;gap:2px;padding:5px 8px;background:#f3f6f8;border-right:1px solid #dce4e9;min-width:0}
.family-kpi-title span{font-size:5.2px;font-weight:950;letter-spacing:.55px;color:#6d7c87;white-space:nowrap}
.family-kpi-title b{font-size:7px;font-weight:1000;color:#153a58;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.family-kpi-inline{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);min-width:0;height:100%}
.family-branch-chip{display:grid;grid-template-columns:auto auto auto minmax(0,1fr) auto;gap:5px;align-items:center;padding:4px 7px;border-right:1px solid #edf1f3;min-width:0;background:#fff}
.family-branch-chip:last-child{border-right:0}
.family-branch-chip>b{font-size:7.8px;font-weight:1000;color:#153a58;white-space:nowrap}
.family-branch-chip>span{display:grid;gap:1px;min-width:0;font-size:6px;font-weight:850;color:#2e4354;white-space:nowrap}
.family-branch-chip>span em{font-style:normal;font-size:4.5px;font-weight:950;letter-spacing:.35px;color:#8a98a7;line-height:1}
.family-branch-chip .risk-pill{display:inline-flex;align-items:center;justify-content:center;width:max-content;max-width:58px;border-radius:999px;padding:3px 5px;font-size:5px;font-weight:950;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.family-branch-chip .risk-pill.red,.family-branch-chip .risk-pill.critical{background:#ffe8ea;color:#a52632}
.family-branch-chip .risk-pill.amber,.family-branch-chip .risk-pill.watch{background:#fff2cf;color:#856100}
.family-branch-chip .risk-pill.green,.family-branch-chip .risk-pill.normal,.family-branch-chip .risk-pill.thin{background:#e9f6ed;color:#26703e}
@media(max-width:1350px){
  .ops-toolbar.family-summary-active{grid-template-columns:1fr!important}
  .ops-toolbar.family-summary-active .ops-kpis.family,.ops-toolbar.family-summary-active .family-kpi-breakdown{grid-column:1!important}
  .ops-toolbar.family-summary-active .ops-kpis.family{grid-row:2!important}
  .ops-toolbar.family-summary-active .family-kpi-breakdown{grid-row:3!important;height:44px!important;min-height:44px!important}
}
@media(max-width:900px){
  .ops-toolbar.family-summary-active .family-kpi-breakdown{overflow-x:auto!important;grid-template-columns:76px minmax(620px,1fr)!important}
}

/* AVL PLATFORM V0.13.30-6 BUILD MARKER — FAMILY BUS SINGLE-ROUTE VERTICAL ALIGNMENT + CLAMP */
.family-direction.family-branches-2 .family-bus{transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .86))!important;transform-origin:center center}
.family-direction.family-branches-3 .family-bus,.family-direction.family-branches-4 .family-bus{transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .80))!important;transform-origin:center center}
.family-bus.edge-left,.family-bus.edge-right{z-index:19!important}
.family-stop.edge-left b{left:-3px;transform:none;text-align:left}
.family-stop.edge-right b{left:auto;right:-3px;transform:none;text-align:right}
.triple-monitor-board .family-direction.family-branches-2 .family-bus,.triple-monitor-board .family-direction.family-branches-3 .family-bus,.triple-monitor-board .family-direction.family-branches-4 .family-bus{transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .70))!important;transform-origin:center center}

/* AVL PLATFORM V0.13.33-2 BUILD MARKER · ROUTE SERVICE STANDARDS + LIVE EWT */
.route-service-standard-block{margin-top:12px;padding-top:10px;border-top:2px solid #d9e4eb}.route-service-standard-grid{display:grid;grid-template-columns:minmax(210px,1.4fr) minmax(150px,.8fr) 120px 120px 120px;gap:7px;align-items:end}.route-service-standard-grid label{display:grid;gap:3px}.route-service-standard-grid label>span{font-size:5.8px;font-weight:950;letter-spacing:.55px;color:#6d7d89}.route-service-standard-grid select,.route-service-standard-grid input{height:34px;border:1px solid #cbd6dd;border-radius:6px;background:#fff;padding:0 8px;font-size:8px;color:#213440;outline:none}.route-service-standard-grid .wide{min-width:0}.route-service-standard-grid .high-frequency-field{display:none}.route-service-standard-block.high-frequency .route-service-standard-grid .on-time-field{display:none}.route-service-standard-block.high-frequency .route-service-standard-grid .high-frequency-field{display:grid}.service-standard-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding-top:7px;border-top:1px solid #edf0f2}.service-standards-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:7px;max-height:180px;overflow:auto}.service-standard-row{border:1px solid #e0e7ec;background:#f8fbfd;border-radius:7px;padding:6px 7px;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:6px;align-items:center;text-align:left}.service-standard-row:hover{border-color:#b9cfdd}.service-standard-row.active{border-color:#d72631;background:#fff7f7}.service-standard-row b{font-size:7px}.service-standard-row span{font-size:5.7px;color:#71818c}.service-standard-row i{font-style:normal;font-size:5.7px;font-weight:950;border-radius:9px;padding:3px 5px;background:#e9f0f5;color:#39556b}.service-standard-row i.hf{background:#e8f3ff;color:#125b92}.service-standard-row i.default{background:#f1f3f5;color:#74818a}.ops-kpis .ewt-pass strong{color:#17833a!important}.ops-kpis .ewt-fail strong{color:#c81f2c!important}.ops-kpis .ewt-thin strong{color:#7a8790!important}.service-standard-chip{display:inline-flex;align-items:center;gap:4px;font-size:5.6px;font-weight:950;border-radius:10px;padding:3px 6px;background:#eef4f8;color:#36546c}.service-standard-chip.hf{background:#e6f2ff;color:#0e5e98}.family-branch-chip .standard-line{font-size:5.3px!important;font-weight:900;color:#4d6477}.family-branch-chip .standard-line em{font-size:4.9px!important;color:#82909c}
@media(max-width:1500px){.route-service-standard-grid{grid-template-columns:1fr 160px 110px 110px 110px}.service-standards-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1000px){.route-service-standard-grid{grid-template-columns:1fr 1fr}.route-service-standard-grid .wide{grid-column:1/-1}.service-standards-list{grid-template-columns:1fr}}

/* AVL PLATFORM V0.13.33-2-1 BUILD MARKER · COMPACT LF/HF KPI ROW + MISSING-SERVICE ON-TIME % */
.ops-kpis.lf{grid-template-columns:repeat(9,minmax(0,1fr))!important;min-height:56px!important;height:56px!important;overflow:hidden!important}
.ops-kpis.hf{grid-template-columns:repeat(10,minmax(0,1fr))!important;min-height:56px!important;height:56px!important;overflow:hidden!important}
.ops-kpis.lf article,.ops-kpis.hf article{padding:6px 8px!important;min-width:0!important;overflow:hidden!important}
.ops-kpis.lf span,.ops-kpis.hf span{font-size:5.8px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.ops-kpis.lf strong,.ops-kpis.hf strong{font-size:15px!important;line-height:1!important;margin-top:2px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.ops-kpis.lf small,.ops-kpis.hf small{font-size:5.25px!important;line-height:1.05!important;margin-top:2px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.avl-service-mode{flex:0 0 auto;display:inline-grid;place-items:center;height:20px;min-width:28px;padding:0 7px;border-radius:999px;font-size:7px;font-weight:1000;letter-spacing:.55px;border:1px solid #cbd9e5;background:#eef4f8;color:#264b67}
.avl-service-mode.lf{background:#eef4f8;color:#244c69;border-color:#c7d8e4}
.avl-service-mode.hf{background:#e7f4ff;color:#0c609c;border-color:#acd3ef}
.avl-service-mode.mixed{background:#fff4da;color:#805b00;border-color:#ead18b}
.distance-avl-head>.avl-service-mode,.family-avl-head>.avl-service-mode{margin-right:2px}
@media(max-width:1350px){
  .ops-kpis.lf{grid-template-columns:repeat(9,minmax(76px,1fr))!important;overflow-x:auto!important}
  .ops-kpis.hf{grid-template-columns:repeat(10,minmax(96px,1fr))!important;overflow-x:auto!important}
}

/* AVL PLATFORM V0.14.0-1 BUILD MARKER · ADVANCED DETERMINISTIC CONTROL INTELLIGENCE */
.control-context-line{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0 7px;padding:7px 9px;border:1px solid #dbe5ed;border-radius:9px;background:#fff}.control-context-line span{font-size:6.5px;letter-spacing:.12em;font-weight:900;color:#72899b}.control-context-line b{font-size:8px;color:#123b59;text-align:right}.control-intelligence-content{display:grid;gap:8px}.control-decision{border:1px solid #d6e2ea;border-left:4px solid #9aaab8;border-radius:10px;background:#fff;padding:10px}.control-decision.red{border-left-color:#d92532;background:#fff7f8}.control-decision.amber{border-left-color:#d79a00;background:#fffaf0}.control-decision.blue{border-left-color:#206792;background:#f4f9fc}.control-decision.green{border-left-color:#28a957;background:#f4fbf6}.control-decision.grey{border-left-color:#96a5b1;background:#f7f9fb}.control-decision-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}.control-decision-top span,.control-decision-top b{font-size:6.5px;font-weight:900;letter-spacing:.08em}.control-decision-top span{color:#49677d}.control-decision-top b{color:#173f5d}.control-decision h4{margin:0 0 5px;font-size:12px;line-height:1.25;color:#123b59}.control-decision p{margin:0;font-size:8px;line-height:1.45;color:#547084}.control-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.control-action-grid article{min-width:0;border:1px solid #dbe5ed;border-radius:9px;background:#fff;padding:9px}.control-action-grid span{display:block;margin-bottom:5px;font-size:6.5px;letter-spacing:.1em;font-weight:900;color:#788f9f}.control-action-grid b{display:block;font-size:8px;line-height:1.45;color:#173d58}.control-evidence{border:1px solid #dbe5ed;border-radius:9px;background:#fff;padding:9px}.control-section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.control-section-title span,.control-section-title b{font-size:6.5px;letter-spacing:.09em;font-weight:900}.control-section-title span{color:#173d58}.control-section-title b{color:#288950}.control-evidence ul{display:grid;grid-template-columns:1fr 1fr;gap:5px 12px;margin:0;padding:0;list-style:none}.control-evidence li{position:relative;padding-left:9px;font-size:7.5px;line-height:1.35;color:#536f83}.control-evidence li:before{content:'';position:absolute;left:0;top:.45em;width:4px;height:4px;border-radius:50%;background:#2b6f96}.control-safety{display:flex;gap:8px;align-items:flex-start;border:1px solid #d7e6dc;border-radius:9px;background:#f4faf6;padding:8px}.control-safety b{white-space:nowrap;font-size:6.5px;letter-spacing:.08em;color:#20894a}.control-safety span{font-size:7px;line-height:1.35;color:#587265}.control-secondary-head{display:flex;align-items:end;justify-content:space-between;gap:8px;margin:5px 1px 0}.control-secondary-head span{font-size:6.5px;letter-spacing:.1em;font-weight:900;color:#173d58}.control-secondary-head small{font-size:6.5px;color:#8193a0}
@media(max-width:620px){.control-action-grid,.control-evidence ul{grid-template-columns:1fr}.control-decision h4{font-size:11px}}

/* V0.14.0-1 governed bus status colours */
.status-colour-fields{display:grid;grid-template-columns:repeat(5,minmax(110px,1fr));gap:7px;grid-column:1/-1}.status-colour-fields label{display:grid;grid-template-columns:34px 1fr;align-items:center;gap:8px;border:1px solid #dbe3ea;border-radius:8px;padding:6px 8px;background:#fff}.status-colour-fields input[type=color]{width:34px;height:28px;padding:1px;border:1px solid #cbd6df;border-radius:6px;background:#fff}.status-colour-fields b{display:block;font-size:7px;color:#17344d}.status-colour-fields small{display:block;font-size:5.8px;color:#71818e;margin-top:1px}.status-colour-note{grid-column:1/-1;font-size:6.2px;color:#647687}.distance-avl-legend i{background:var(--legend-colour)!important}@media(max-width:1400px){.status-colour-fields{grid-template-columns:repeat(3,minmax(120px,1fr))}}@media(max-width:1000px){.status-colour-fields{grid-template-columns:repeat(2,minmax(120px,1fr))}}

/* TIRANA LIVE V0.17.2 BUILD MARKER · CONFIGURABLE BUS LABELS + READABILITY */
.communications-page{min-height:0}.comms-page-head{align-items:center}.comms-page-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.comms-overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-height:0}.comms-overview-card{padding:14px;min-height:220px}.comms-overview-card .section-head{margin-bottom:10px}.comms-big-metric{display:flex;align-items:end;gap:10px;padding:8px 0 12px}.comms-big-metric strong{font-size:36px;line-height:1;color:#173b59}.comms-big-metric span{font-size:11px;font-weight:800;color:#647688;letter-spacing:.08em;padding-bottom:4px}.comms-compact-list{display:grid;gap:7px;max-height:310px;overflow:auto}.comms-presence-row,.comms-list-row{border:1px solid #dbe4eb;border-radius:9px;background:#fff;padding:9px 10px;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;width:100%}.comms-presence-row{cursor:pointer}.comms-presence-row:hover{border-color:#91a9bc;background:#f8fbfd}.comms-presence-row span,.comms-list-row span{display:grid;gap:2px;min-width:0}.comms-presence-row b,.comms-list-row b{font-size:12px;color:#173b59}.comms-presence-row small,.comms-list-row small{font-size:10px;color:#687b8c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.comms-list-row em{font-size:9px;font-style:normal;white-space:nowrap}.online-dot{width:9px;height:9px;border-radius:50%;background:#1e9a64;box-shadow:0 0 0 3px #e2f5ec;flex:none}.comms-monitor-card p{font-size:12px;line-height:1.5;color:#5a6e80}.comms-capability-row{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #e5ebef;padding:9px 0;font-size:11px}.comms-capability-row span{font-weight:700;color:#65788a}.comms-capability-row b{font-size:10px;color:#173b59}.button.full{width:100%;margin-top:8px}
.mobile-admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.mobile-admin-warning{display:flex;align-items:center;gap:14px;border-radius:10px;padding:11px 14px;margin:0 0 12px;border:1px solid}.mobile-admin-warning b{font-size:12px;letter-spacing:.06em;white-space:nowrap}.mobile-admin-warning span{font-size:11px;line-height:1.45}.mobile-admin-warning.gps-off{background:#f2f5f7;border-color:#cfd8df;color:#465966}.mobile-admin-warning.gps-shadow{background:#fff7df;border-color:#ead392;color:#6f5918}.mobile-admin-warning.gps-fused{background:#e9f7ef;border-color:#a7dac0;color:#155f41}.mobile-gps-advanced{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mobile-gps-advanced.disabled{opacity:.48;filter:grayscale(.2)}.mobile-admin-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:10px}.mobile-device-list-panel,.mobile-calibration-panel{grid-column:1/-1}.mobile-device-list{display:grid;gap:7px;max-height:360px;overflow:auto}.mobile-device-row{display:grid;grid-template-columns:1.25fr 1.15fr 1fr auto;gap:12px;align-items:center;border:1px solid #dce5eb;border-radius:9px;padding:9px 10px;background:#fff}.mobile-device-row>div{display:grid;gap:2px;min-width:0}.mobile-device-row b{font-size:11px;color:#173b59}.mobile-device-row small{font-size:9px;color:#6a7c8b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-calibration-summary{min-height:100px}.gps-off-calibration{display:grid;gap:5px;padding:18px;border-radius:9px;background:#f3f5f6;border:1px dashed #cbd5dc}.gps-off-calibration b{font-size:13px;color:#394d5c}.gps-off-calibration span{font-size:11px;color:#6a7b88}.calibration-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.calibration-kpis article{border:1px solid #dce5eb;border-radius:8px;padding:8px;display:grid;gap:2px}.calibration-kpis span{font-size:9px;font-weight:800;color:#708392}.calibration-kpis strong{font-size:17px;color:#173b59}.calibration-table{display:grid;gap:2px}.calibration-row{display:grid;grid-template-columns:1.1fr repeat(5,1fr);gap:8px;padding:7px 8px;border-bottom:1px solid #edf1f3;font-size:10px}.calibration-row.head{background:#f4f7f9;border-radius:6px;font-size:9px;color:#5f7384}.toggle-row{display:flex!important;align-items:center!important;gap:9px!important}.toggle-row input{width:auto!important}.toggle-row span{font-size:11px!important;font-weight:700!important}
.vehicle-inspector-comms-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:8px 12px 12px;border-top:1px solid #dbe4ea;background:#f7fafb}.vehicle-comms-action{min-height:49px;display:grid!important;gap:2px;align-content:center}.vehicle-comms-action span{font-weight:850;font-size:10px}.vehicle-comms-action small{font-size:8px;opacity:.78}.vehicle-comms-action.transmit{background:linear-gradient(135deg,#7a5200,#ad7600)!important;border-color:#8b5e00!important;color:#fff!important}.vehicle-comms-action.transmit small{color:rgba(255,255,255,.88)}
@media(max-width:1100px){.comms-overview-grid,.mobile-admin-grid{grid-template-columns:1fr}.mobile-device-list-panel,.mobile-calibration-panel{grid-column:auto}.mobile-device-row{grid-template-columns:1fr 1fr}.vehicle-inspector-comms-actions{grid-template-columns:1fr}}

/* V0.15.1 fitted-device / self-service driver platform */
.driver-platform-page{min-height:0}.driver-platform-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.75fr);gap:12px;align-items:start}.driver-platform-hero,.driver-platform-online,.driver-platform-test{padding:16px}.driver-platform-hero{grid-column:1/-1}.driver-flow{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);gap:10px;align-items:center;margin-top:12px}.driver-flow article{min-height:112px;border:1px solid #dce5eb;border-radius:10px;background:#fff;padding:12px;display:grid;grid-template-columns:30px minmax(0,1fr);column-gap:9px;align-content:start}.driver-flow article span{grid-row:1/3;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#123a5d;color:#fff;font-weight:900;font-size:12px}.driver-flow article b{font-size:11px;color:#173b59;letter-spacing:.05em}.driver-flow article small{font-size:10px;color:#677b8c;line-height:1.45;margin-top:5px}.driver-flow>i{font-style:normal;color:#8298aa;font-size:22px}.driver-flow-note{margin:10px 0 0;padding:9px 11px;border-radius:8px;background:#eef6fb;color:#294b65;font-size:11px;font-weight:700}.driver-platform-online-list{display:grid;gap:7px;max-height:360px;overflow:auto}.driver-platform-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 10px;border:1px solid #dce5eb;border-radius:9px;background:#fff}.driver-platform-row>span{display:grid;gap:2px;min-width:0}.driver-platform-row b{font-size:11px;color:#173b59}.driver-platform-row small{font-size:9px;color:#687b8c}.mobile-admin-help{font-size:10px;line-height:1.45;color:#667b8c;margin:5px 0 10px}.mobile-admin-help strong{color:#173b59}.mobile-device-row .shift-live{color:#15865a}.mobile-device-row .shift-off{color:#788b99}.driver-platform-test p{font-size:11px;line-height:1.55;color:#5e7284}.driver-platform-test .button{margin:10px 0 6px}@media(max-width:1100px){.driver-platform-grid{grid-template-columns:1fr}.driver-platform-hero{grid-column:auto}.driver-flow{grid-template-columns:1fr}.driver-flow>i{transform:rotate(90deg);justify-self:center;line-height:16px}}

/* V0.15.1-2 SINGLE AVL TRAFFIC-LINE UNIFICATION
   Make single-route AVL use the same integrated traffic-line approach feel as branched/multi AVL.
   The live road-traffic colouring now rides on the corridor line instead of on a separate parallel strip. */
.distance-avl.single .corridor-rail{
  background:#20a052;
  height:6px;
  border-radius:4px;
}
.distance-avl.single .corridor-rail:before,
.distance-avl.single .corridor-rail:after{
  top:-2px;
  width:10px;
  height:10px;
  background:#20a052;
}
.distance-avl.single .corridor-traffic-band{
  left:0;
  right:0;
  height:6px;
  z-index:3;
}
.distance-avl.single .inbound .corridor-traffic-band,
.distance-avl.single .outbound .corridor-traffic-band{
  top:calc(42% - 2px);
}
.distance-avl.single .corridor-traffic-band>em{
  display:none;
}
.distance-avl.single .corridor-traffic-band>i{
  top:0;
  height:6px;
  border-radius:4px;
  box-shadow:0 0 0 1px rgba(255,255,255,.78);
}
.distance-avl.single .corridor-delay-label{
  z-index:4;
}


/* V0.15.1-3 STANDARD + FAMILY TRAFFIC RAIL UNIFICATION
   All ordinary (non-family) route boards now use the same principle as family boards:
   one visible corridor rail, with live traffic segments painted directly on that rail. */
.distance-avl.standard-route .corridor-rail{
  height:6px;
  border-radius:4px;
  background:#0f2d55;
}
.distance-avl.standard-route .corridor-rail:before,
.distance-avl.standard-route .corridor-rail:after{
  top:-2px;
  width:10px;
  height:10px;
}
.distance-avl.standard-route .corridor-traffic-band{
  left:0;
  right:0;
  height:6px;
  z-index:3;
}
.distance-avl.standard-route .inbound .corridor-traffic-band{
  top:var(--avl-inbound-rail-pct,50%);
}
.distance-avl.standard-route .outbound .corridor-traffic-band{
  top:var(--avl-outbound-rail-pct,35%);
}
.distance-avl.standard-route .corridor-traffic-band>em{
  display:none;
}
.distance-avl.standard-route .corridor-traffic-band>i{
  top:0;
  height:6px;
  border-radius:4px;
  box-shadow:0 0 0 1px rgba(255,255,255,.78);
}
.distance-avl.standard-route.single .inbound .corridor-traffic-band{top:var(--avl-inbound-rail-pct,50%)}
.distance-avl.standard-route.single .outbound .corridor-traffic-band{top:var(--avl-outbound-rail-pct,35%)}
.distance-avl.standard-route.single .corridor-rail{
  background:#0f2d55;
}

/* V0.15.2 DRIVER DEVICE INVENTORY */
.driver-platform-device-fleet{grid-column:1/-1;padding:14px}
.driver-device-note{margin:0 0 10px;font-size:10px;line-height:1.45;color:#637789}
.driver-platform-device-list{display:grid;gap:7px;max-height:320px;overflow:auto}
.driver-device-card{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(110px,.7fr) minmax(180px,1fr) auto;gap:12px;align-items:center;border:1px solid #dce5eb;border-radius:9px;background:#fff;padding:9px 10px}
.driver-device-card.online{border-color:#a8dbc4;background:#fbfffd}
.driver-device-card>div{display:grid;gap:2px;min-width:0}
.driver-device-card>div:first-child b{font-size:11px;color:#173b59}
.driver-device-card small{font-size:9px;color:#718493;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.driver-device-card span{font-size:8px;font-weight:850;letter-spacing:.05em;color:#7a8c9b}
.driver-device-card strong{font-size:10px;color:#173b59}
.driver-device-card em{font-style:normal;white-space:nowrap}
@media(max-width:900px){.driver-device-card{grid-template-columns:1fr 1fr}.driver-platform-device-fleet{grid-column:auto}}

/* V0.15.3 unified Device / Bus / Direct Phone registry */
.mobile-device-master{grid-column:1/-1}
.mobile-device-master-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.mobile-device-master-actions{display:flex;gap:8px;align-items:center}
.mobile-device-crud-row{grid-template-columns:1.15fr .8fr .95fr 1.1fr auto}
.mobile-device-actions{display:flex!important;flex-direction:row!important;gap:6px!important;justify-content:flex-end}
.link-button.danger{color:#b7182a;border-color:#efc4c9;background:#fff7f8}
.link-button.danger:hover{background:#ffecef}
@media(max-width:1200px){.mobile-device-master-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mobile-device-crud-row{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.mobile-device-master-grid,.mobile-device-crud-row{grid-template-columns:1fr}.mobile-device-actions{justify-content:flex-start}}

/* V0.15.4 employee-number driver directory */
.mobile-driver-list{display:grid;gap:7px;margin-top:12px;max-height:300px;overflow:auto}
.mobile-driver-row{display:grid;grid-template-columns:minmax(220px,1fr) auto auto;gap:10px;align-items:center;border:1px solid #dce5eb;border-radius:9px;padding:9px 10px;background:#fff}
.mobile-driver-row>div{display:grid;gap:2px}.mobile-driver-row b{font-size:10px;color:#173b59}.mobile-driver-row small{font-size:8px;color:#718493}
@media(max-width:760px){.mobile-driver-row{grid-template-columns:1fr}.mobile-driver-row .link-button{justify-self:start}}
.desktop-ringtone-controls{margin:10px 0;display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:end;padding:9px;border:1px solid #e1e7eb;border-radius:9px;background:#fbfcfd}.desktop-ringtone-controls label{display:grid;gap:4px;font-size:7px;font-weight:900;color:#6d7a84}.desktop-ringtone-controls select{height:31px;border:1px solid #d5dde3;border-radius:7px;background:#fff;padding:0 7px;font-size:8px}.desktop-ringtone-controls input[type=range]{width:100%}#desktopIncomingCallWarning{animation:desktop-ring-flash 1s infinite}@keyframes desktop-ring-flash{50%{box-shadow:0 0 0 5px rgba(227,39,45,.13)}}
.incoming-answer-button{background:#169b62!important;border-color:#169b62!important;color:#fff!important;animation:desktop-ring-flash 1s infinite}


/* ================================================================
   TIRANA LIVE V0.15.5.3 · DEFINITIVE VIEWPORT / SCROLL REPAIR
   Keeps Live AVL geometry fixed, but no operational/admin workspace
   is allowed to clip content merely because viewport height is small.
   ================================================================ */

/* Generic non-Live-AVL fallback: if a standard workspace exceeds the
   viewport, the page itself is allowed to scroll. */
.page.standard-page.active{
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}

/* 3-ROUTE MONITOR
   It has THREE direct rows (heading, selectors, route stack).
   The generic standard-page definition only described two rows and
   caused the selectors/first route board to collide at some heights. */
.triple-monitor-page{
  grid-template-rows:auto auto minmax(0,1fr)!important;
  min-height:0!important;
  overflow:hidden!important;
}
.triple-monitor-head,
.triple-route-selector-panel{
  position:relative;
  z-index:4;
  flex:none;
}
.triple-route-selector-panel{
  min-height:0;
}
.triple-route-stack{
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  align-content:start;
  grid-auto-rows:minmax(228px,auto);
  padding-right:4px;
  padding-bottom:4px;
}
.triple-route-card{
  min-height:224px;
}
.triple-monitor-board{
  min-height:178px;
}

/* PLATFORM ADMIN
   Header and tabs remain visible. The ACTIVE admin tab owns the
   vertical scroll, so MOBILE & COMMS, Cities, Users, Display, etc.
   can always reach their final controls without browser zooming. */
.admin-page{
  min-height:0!important;
  overflow:hidden!important;
}
.admin-workspace{
  min-height:0!important;
  overflow:hidden!important;
}
.admin-tab-panel{
  min-height:0!important;
}
.admin-tab-panel.active{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  padding-right:4px;
  padding-bottom:10px;
}
.admin-tab-panel.active > :last-child{
  margin-bottom:2px;
}

/* MAIN COMMUNICATIONS PAGE
   Keep the page heading visible and scroll the operational cards.
   This is separate from the standalone /comms window. */
.communications-page{
  min-height:0!important;
  overflow:hidden!important;
}
.communications-page .comms-overview-grid{
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  align-content:start;
  padding-right:4px;
  padding-bottom:6px;
}
.communications-page .comms-overview-card{
  min-height:220px;
}

/* DRIVER PLATFORM can grow as the registered fleet grows. */
.driver-platform-page{
  min-height:0!important;
  overflow:hidden!important;
}
.driver-platform-page .driver-platform-grid{
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  align-content:start;
  padding-right:4px;
  padding-bottom:8px;
}

/* Full-screen mode must retain the same scroll ownership.  The Live AVL
   itself remains fixed; admin/comms/3-route inner workspaces still scroll. */
html.occ-fullscreen .admin-tab-panel.active,
html.occ-fullscreen .communications-page .comms-overview-grid,
html.occ-fullscreen .driver-platform-page .driver-platform-grid,
html.occ-fullscreen .triple-route-stack{
  overflow-y:auto!important;
}

/* Smaller-height OCC monitors: never compress route boards over controls. */
@media (min-width:821px) and (max-height:760px){
  .triple-route-stack{grid-auto-rows:minmax(218px,auto)}
  .triple-route-card{min-height:214px}
}

/* At browser zoom / narrow viewport, preserve scroll rather than clipping. */
@media (max-width:820px){
  .admin-page,
  .communications-page,
  .driver-platform-page,
  .triple-monitor-page{
    overflow:visible!important;
  }
  .admin-tab-panel.active,
  .communications-page .comms-overview-grid,
  .driver-platform-page .driver-platform-grid,
  .triple-route-stack{
    overflow-y:visible!important;
    padding-right:0;
  }
}

/* V0.15.9 Driver Duty Audit */
.duty-audit-page{min-height:0;overflow:hidden}.duty-audit-head{align-items:center}.duty-head-actions{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.duty-head-actions label,.duty-filters label{display:grid;gap:4px}.duty-head-actions label span,.duty-filters label span{font-size:7px;font-weight:950;color:#718394;letter-spacing:.08em}.duty-head-actions select,.duty-filters select,.duty-filters input{height:34px;border:1px solid #ccd8e1;border-radius:7px;background:#fff;color:#173b59;padding:0 9px;font-size:9px}
.duty-audit-body{min-height:0;overflow-y:auto;scrollbar-gutter:stable;display:grid;gap:9px;padding-right:4px}.duty-definition-banner{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #d4e0e7;border-left:4px solid #173b59;border-radius:9px;background:#f7fafc;padding:9px 11px}.duty-definition-banner>b{font-size:8px;color:#173b59;letter-spacing:.08em}.duty-definition-banner>span{font-size:9px;color:#566d80}.duty-definition-banner>em{font-style:normal}
.duty-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.duty-kpis article{border:1px solid #dbe4ea;border-radius:9px;background:#fff;padding:10px 11px;min-width:0}.duty-kpis span{display:block;font-size:7px;font-weight:950;color:#718394;letter-spacing:.08em}.duty-kpis strong{display:block;font-size:22px;color:#173b59;margin:4px 0 2px}.duty-kpis small{display:block;font-size:8px;color:#7a8b98;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.duty-filter-panel{padding:8px 10px}.duty-filters{display:grid;grid-template-columns:170px 170px minmax(240px,1fr) auto;gap:8px;align-items:end}.duty-search input{width:100%}
.duty-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.65fr);gap:9px;min-height:0}.duty-active-panel,.duty-history-panel,.duty-daily-panel{padding:11px;min-height:0}.duty-history-panel{grid-column:1/-1}.duty-table-wrap{overflow:auto;max-height:320px;border:1px solid #e1e7ec;border-radius:8px}.duty-table-wrap.history{max-height:410px}.duty-table{width:100%;border-collapse:collapse;min-width:980px;background:#fff}.duty-table th{position:sticky;top:0;z-index:2;background:#eef3f6;color:#647789;font-size:7px;letter-spacing:.07em;text-align:left;padding:8px;border-bottom:1px solid #d8e2e8}.duty-table td{padding:8px;border-bottom:1px solid #edf1f4;font-size:9px;color:#415a6d;vertical-align:middle}.duty-table td b{color:#173b59}.duty-table td small{display:block;color:#81909c;margin-top:2px}.duty-duration-live{font-size:11px;color:#173b59}
.duty-daily-bars{display:grid;gap:6px;max-height:250px;overflow:auto}.duty-day-row{display:grid;grid-template-columns:70px minmax(80px,1fr) 48px;gap:6px;align-items:center}.duty-day-row>span{font-size:8px;color:#65798a}.duty-day-row>div{height:8px;background:#edf2f5;border-radius:99px;overflow:hidden}.duty-day-row>div i{display:block;height:100%;background:#2b77aa;border-radius:99px}.duty-day-row>b{font-size:9px;color:#173b59;text-align:right}.duty-day-row>small{grid-column:2/4;font-size:7px;color:#8797a3;margin-top:-4px}
.duty-route-summary{margin-top:10px;border-top:1px solid #e4eaee;padding-top:8px;display:grid;gap:5px}.duty-route-summary h4{font-size:8px;color:#607486;letter-spacing:.08em;margin:0 0 3px}.duty-route-summary>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 8px;border:1px solid #e2e8ed;border-radius:7px;padding:6px 8px;background:#fff}.duty-route-summary span{font-size:9px;font-weight:850;color:#173b59}.duty-route-summary b{font-size:9px;color:#173b59}.duty-route-summary small{grid-column:1/-1;font-size:7px;color:#83939f}
@media(max-width:1200px){.duty-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.duty-dashboard-grid{grid-template-columns:1fr}.duty-history-panel{grid-column:auto}}@media(max-width:820px){.duty-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.duty-filters{grid-template-columns:1fr 1fr}.duty-search{grid-column:1/-1}.duty-definition-banner{grid-template-columns:1fr}.duty-definition-banner>em{justify-self:start}}


/* V0.16.0 Communications Intelligence & Audit */
.comms-audit-page{min-height:0;overflow:hidden}.comms-audit-head{align-items:center}.comms-audit-head-actions{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.comms-audit-head-actions label,.comms-audit-filters label{display:grid;gap:4px}.comms-audit-head-actions label span,.comms-audit-filters label span{font-size:7px;font-weight:950;color:#718394;letter-spacing:.08em}.comms-audit-head-actions select,.comms-audit-filters select,.comms-audit-filters input{height:34px;border:1px solid #ccd8e1;border-radius:7px;background:#fff;color:#173b59;padding:0 9px;font-size:9px}.comms-audit-body{min-height:0;overflow-y:auto;scrollbar-gutter:stable;display:grid;gap:9px;padding-right:4px}.comms-audit-definition{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #d4e0e7;border-left:4px solid #286d9f;border-radius:9px;background:#f7fafc;padding:9px 11px}.comms-audit-definition>b{font-size:8px;color:#173b59;letter-spacing:.08em}.comms-audit-definition>span{font-size:9px;color:#566d80}.comms-audit-kpis{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:7px}.comms-audit-kpis article{border:1px solid #dbe4ea;border-radius:9px;background:#fff;padding:9px 9px;min-width:0}.comms-audit-kpis span{display:block;font-size:6.5px;font-weight:950;color:#718394;letter-spacing:.07em}.comms-audit-kpis strong{display:block;font-size:18px;color:#173b59;margin:4px 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.comms-audit-kpis small{display:block;font-size:7px;color:#7a8b98;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.comms-audit-filter-panel{padding:8px 10px}.comms-audit-filters{display:grid;grid-template-columns:145px 145px 155px minmax(240px,1fr) auto;gap:8px;align-items:end}.comms-audit-search input{width:100%}.comms-audit-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(300px,.75fr);gap:9px;min-height:0}.comms-audit-daily-panel,.comms-audit-routes-panel,.comms-audit-controller-panel,.comms-audit-history-panel{padding:11px;min-height:0}.comms-audit-history-panel{grid-column:1/-1}.comms-audit-daily{display:grid;gap:6px;max-height:300px;overflow:auto}.comms-audit-day-row{display:grid;grid-template-columns:70px minmax(80px,1fr) 36px;gap:6px;align-items:center}.comms-audit-day-row>span{font-size:8px;color:#65798a}.comms-audit-day-row>div{height:8px;background:#edf2f5;border-radius:99px;overflow:hidden}.comms-audit-day-row>div i{display:block;height:100%;background:#2878ae;border-radius:99px}.comms-audit-day-row>b{font-size:9px;color:#173b59;text-align:right}.comms-audit-day-row>small{grid-column:2/4;font-size:7px;color:#8797a3;margin-top:-4px}.comms-audit-summary-list{display:grid;gap:6px;max-height:300px;overflow:auto}.comms-audit-summary-list article{display:grid;grid-template-columns:minmax(130px,1.4fr) repeat(3,minmax(70px,.7fr));gap:8px;align-items:center;border:1px solid #e1e8ed;border-radius:8px;padding:8px 9px;background:#fff}.comms-audit-routes-panel .comms-audit-summary-list article{grid-template-columns:minmax(130px,1.4fr) repeat(2,minmax(80px,.7fr))}.comms-audit-summary-list article>div{min-width:0}.comms-audit-summary-list article b{display:block;font-size:9px;color:#173b59;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.comms-audit-summary-list article small{display:block;font-size:7px;color:#7b8d9b;margin-top:2px}.comms-audit-summary-list article>span{text-align:right}.comms-audit-summary-list article>span strong{display:block;font-size:11px;color:#173b59}.comms-audit-table-wrap{overflow:auto;max-height:430px;border:1px solid #e1e7ec;border-radius:8px}.comms-audit-table{width:100%;border-collapse:collapse;min-width:1220px;background:#fff}.comms-audit-table th{position:sticky;top:0;z-index:2;background:#eef3f6;color:#647789;font-size:7px;letter-spacing:.07em;text-align:left;padding:8px;border-bottom:1px solid #d8e2e8}.comms-audit-table td{padding:8px;border-bottom:1px solid #edf1f4;font-size:8.5px;color:#415a6d;vertical-align:middle}.comms-audit-table td b{color:#173b59}.comms-audit-table td small{display:block;color:#81909c;margin-top:2px}.pill.blue{background:#e9f3ff;color:#1766a7;border-color:#bfd9f2}@media(max-width:1300px){.comms-audit-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.comms-audit-grid{grid-template-columns:1fr}.comms-audit-history-panel{grid-column:auto}}@media(max-width:900px){.comms-audit-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.comms-audit-filters{grid-template-columns:1fr 1fr}.comms-audit-search{grid-column:1/-1}.comms-audit-definition{grid-template-columns:1fr}.comms-audit-definition>em{justify-self:start}}

/* TIRANA LIVE V0.16.1 · Historical Replay */
.historical-replay-page{min-height:0;overflow:hidden}.replay-page-head{align-items:center}.replay-head-actions{display:flex;gap:7px;align-items:end;flex-wrap:wrap;justify-content:flex-end}.replay-head-actions label,.replay-transport label{display:grid;gap:4px}.replay-head-actions label span,.replay-transport label span{font-size:7px;font-weight:950;color:#718394;letter-spacing:.08em}.replay-head-actions input,.replay-head-actions select,.replay-transport select{height:34px;border:1px solid #ccd8e1;border-radius:7px;background:#fff;color:#173b59;padding:0 9px;font-size:9px}.replay-head-actions #replayRouteSelect{min-width:170px}.replay-body{min-height:0;overflow-y:auto;scrollbar-gutter:stable;display:grid;gap:9px;padding-right:4px}.replay-definition{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #d4e0e7;border-left:4px solid #286d9f;border-radius:9px;background:#f7fafc;padding:9px 11px}.replay-definition>b{font-size:8px;color:#173b59;letter-spacing:.08em}.replay-definition>span{font-size:9px;color:#566d80}.replay-kpis{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:7px}.replay-kpis article{border:1px solid #dbe4ea;border-radius:9px;background:#fff;padding:9px;min-width:0}.replay-kpis span{display:block;font-size:6.5px;font-weight:950;color:#718394;letter-spacing:.07em}.replay-kpis strong{display:block;font-size:17px;color:#173b59;margin:4px 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.replay-kpis small{display:block;font-size:6.8px;color:#7a8b98;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.replay-control-panel,.replay-board-panel,.replay-vehicle-panel{padding:10px 11px}.replay-transport{display:grid;grid-template-columns:auto auto auto 90px minmax(190px,1fr);gap:7px;align-items:end}.replay-clock{justify-self:end;text-align:right;display:grid;gap:1px}.replay-clock small{font-size:6.5px;font-weight:950;color:#7a8b98;letter-spacing:.08em}.replay-clock strong{font-size:22px;line-height:1;color:#173b59;font-variant-numeric:tabular-nums}.replay-clock span{font-size:7px;color:#718394}.replay-timeline{width:100%;margin:9px 0 2px;accent-color:#276f9f}.replay-range-labels{display:grid;grid-template-columns:90px 1fr 90px;gap:8px;font-size:7px;color:#718394}.replay-range-labels span:nth-child(2){text-align:center}.replay-range-labels span:last-child{text-align:right}.replay-board{display:grid;gap:10px;min-height:165px}.replay-lane{border:1px solid #d9e3ea;border-left:4px solid #9aa9b8;border-radius:9px;background:#fff;padding:8px 9px 13px;overflow:hidden}.replay-lane.red{border-left-color:#d91f30}.replay-lane.amber{border-left-color:#e5a512}.replay-lane.green{border-left-color:#28a35a}.replay-lane-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.replay-lane-head b{display:block;font-size:8.5px;color:#173b59}.replay-lane-head small{display:block;font-size:6.5px;color:#7c8e9d;margin-top:2px}.replay-lane-head>div:last-child{display:flex;gap:9px;font-size:6.5px;font-weight:850;color:#718394;white-space:nowrap}.replay-track{position:relative;height:72px;margin:8px 14px 0}.replay-rail{position:absolute;left:0;right:0;top:38px;height:3px;background:#6d8193;border-radius:99px}.replay-stop{position:absolute;top:31px;width:2px;height:17px;background:#173b59;transform:translateX(-1px);z-index:2}.replay-stop span{position:absolute;top:20px;left:50%;transform:translateX(-50%);font-style:normal;font-size:5.8px;font-weight:800;color:#718394;white-space:nowrap;max-width:88px;overflow:hidden;text-overflow:ellipsis}.replay-bus{position:absolute;top:19px;transform:translateX(-50%);z-index:4;min-width:35px;height:26px;border-radius:6px;border:2px solid #fff;box-shadow:0 1px 4px rgba(17,43,66,.22);display:grid;place-items:center;padding:1px 4px;background:#7d8e9d;color:#fff}.replay-bus.red{background:#d91f30}.replay-bus.green{background:#29a45b}.replay-bus.amber{background:#d8a113;color:#183044}.replay-bus b{font-size:6.5px;line-height:1}.replay-bus small{font-size:5.2px;line-height:1;opacity:.9}.replay-table-wrap{overflow:auto;max-height:330px;border:1px solid #e1e7ec;border-radius:8px}.replay-table{width:100%;border-collapse:collapse;min-width:980px;background:#fff}.replay-table th{position:sticky;top:0;z-index:2;background:#eef3f6;color:#647789;font-size:7px;letter-spacing:.06em;text-align:left;padding:8px;border-bottom:1px solid #d8e2e8}.replay-table td{padding:7px 8px;border-bottom:1px solid #edf1f4;font-size:8.3px;color:#415a6d;vertical-align:middle}.replay-table td b{color:#173b59}.replay-table td small{display:block;color:#81909c;margin-top:2px}.replay-flag{display:inline-flex;padding:3px 5px;border-radius:5px;background:#fff0f2;color:#b51626;border:1px solid #efbac0;font-size:5.8px;font-weight:900;margin:1px}
@media(max-width:1350px){.replay-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.replay-head-actions{max-width:58%}.replay-head-actions #replayRouteSelect{min-width:140px}}
@media(max-width:950px){.replay-page-head{align-items:flex-start}.replay-head-actions{max-width:none;width:100%;justify-content:flex-start}.replay-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.replay-transport{grid-template-columns:repeat(3,auto) 90px;}.replay-clock{grid-column:1/-1;justify-self:stretch;text-align:center}.replay-definition{grid-template-columns:1fr}.replay-definition>em{justify-self:start}.replay-track{margin-left:9px;margin-right:9px}.replay-stop span{display:none}}

/* V0.16.2 complete platform-view permission registry */
.view-access-check.role-only{background:#f2f5f7;border-style:dashed}.view-access-check.role-only b{color:#526777}.view-access-check.role-only small{color:#8a98a3}

.view-schema-notice{margin:6px 0 8px;border:1px solid #e6c96a;border-left:4px solid #d89d19;border-radius:7px;background:#fff9e8;padding:7px 9px;display:grid;gap:2px}.view-schema-notice[hidden]{display:none}.view-schema-notice b{font-size:7px;color:#7c5a08;letter-spacing:.06em}.view-schema-notice span{font-size:6px;color:#7b6b3f;line-height:1.35}.view-schema-notice code{font-size:6px;font-weight:800}

/* V0.16.6 governed English / Albanian language control */
.language-toggle{display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid #d7e0e7;border-radius:999px;background:#fff;box-shadow:0 1px 4px rgba(10,34,54,.06);flex:0 0 auto}
.language-toggle button{min-width:30px;height:25px;padding:0 7px;border:0;border-radius:999px;background:transparent;color:#607386;font:800 10px/1 system-ui,sans-serif;letter-spacing:.05em;cursor:pointer}
.language-toggle button.active{background:#102f49;color:#fff}
.login-card{position:relative}.login-language-toggle{position:absolute;right:18px;top:18px;z-index:3}
.driver-language-toggle,.comms-language-toggle{margin-right:6px}
@media(max-width:900px){.language-toggle button{min-width:28px;height:24px}.login-language-toggle{right:12px;top:12px}}

/* V0.16.6 startup splash: exact user-approved artwork embedded at /assets/tirana-live-loading.png. */
.startup-splash{position:fixed;inset:0;z-index:100000;display:flex;align-items:flex-end;justify-content:center;padding:clamp(22px,4vh,48px);background-color:#07151f;background-image:linear-gradient(180deg,rgba(3,10,17,.03) 0%,rgba(3,10,17,.02) 58%,rgba(3,10,17,.7) 100%),url('/assets/tirana-live-loading.png');background-size:cover;background-position:center center;background-repeat:no-repeat;opacity:1;visibility:visible;transition:opacity .45s ease,visibility .45s ease}
.startup-splash.ready{opacity:0;visibility:hidden;pointer-events:none}.startup-splash[hidden]{display:none}
.startup-splash-status{width:min(620px,92vw);display:grid;grid-template-columns:auto 1fr;gap:12px 14px;align-items:center;padding:13px 16px 12px;border:1px solid rgba(255,255,255,.18);border-radius:18px;background:rgba(4,17,28,.72);box-shadow:0 16px 55px rgba(0,0,0,.32);color:#fff}
.startup-spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.22);border-top-color:#e51d2a;border-radius:50%;animation:tiranaSplashSpin .85s linear infinite}.startup-status-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.startup-status-copy strong{font:800 13px/1.2 system-ui,sans-serif;letter-spacing:.02em}.startup-status-copy span{font:500 10px/1.35 system-ui,sans-serif;color:rgba(255,255,255,.76)}
.startup-progress{grid-column:1/-1;height:3px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.14)}.startup-progress i{display:block;width:6%;height:100%;border-radius:inherit;background:#e51d2a;transition:width .3s ease}
@keyframes tiranaSplashSpin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.startup-spinner{animation:none}.startup-splash,.startup-progress i{transition:none}}

/* TIRANA LIVE V0.16.6 READABILITY PASS
   User-validated desktop OCC screens: Trip Times, Network/Risk and Data Health.
   Deliberately targeted: raises the smallest operational evidence text without globally scaling the AVL/map workspace. */
.standard-page .eyebrow{font-size:8px!important;line-height:1.25!important}
.standard-page .section-head h3{font-size:12px!important}
.standard-page .section-head p:not(.eyebrow){font-size:8.2px!important;line-height:1.35!important}
.standard-page .page-head p:not(.eyebrow){font-size:8.5px!important;line-height:1.4!important}
.standard-page .page-kpis span,.standard-page .page-kpis small{font-size:6.8px!important;line-height:1.25!important}

/* Trip Times / operational performance tables */
.trip-route-summary article{padding:9px 10px!important;min-height:58px!important}
.trip-route-summary span{font-size:6.9px!important;line-height:1.3!important}
.trip-route-summary strong{font-size:13px!important}
.trip-route-summary small{font-size:6.8px!important;line-height:1.3!important}
.trip-route-table{font-size:8.5px!important}
.trip-route-table th{font-size:7.1px!important;line-height:1.3!important;padding:9px 9px!important}
.trip-route-table td{font-size:8.5px!important;line-height:1.35!important;padding:9px 9px!important}
.trip-route-table td:first-child b{font-size:10.5px!important;line-height:1.2!important}
.trip-route-table td small{font-size:6.8px!important;line-height:1.35!important;margin-top:2px!important}
.trip-route-table .mode-chip{font-size:6.7px!important;padding:4px 7px!important}
.trip-route-table.stops tr.direction-break td{font-size:7.2px!important}
.trip-mode-switch button{font-size:8px!important}

/* Network Monitor and shared route rows */
.network-table th{font-size:7.2px!important;line-height:1.3!important;padding:9px 8px!important}
.network-table td{font-size:8.6px!important;line-height:1.35!important;padding:9px 8px!important}
.network-route b{font-size:9.5px!important;line-height:1.25!important}
.network-route small{font-size:7.2px!important;line-height:1.3!important}
.route-lozenge{font-size:8px!important;min-height:27px!important}
.dir-health span{font-size:7.2px!important;padding:4px 5px!important}
.risk-tag{font-size:7.1px!important;padding:5px 7px!important}
.link-button{font-size:7.2px!important;padding:5px 7px!important}
.network-traffic-pair{font-size:7.7px!important}
.network-worst-traffic{font-size:7.5px!important;line-height:1.35!important}
.network-scan-state{font-size:7.2px!important;min-height:27px!important}

/* Risk Intelligence */
.risk-summary-grid article{padding:8px 10px!important}
.risk-summary-grid span{font-size:7px!important;line-height:1.3!important}
.risk-summary-grid strong{font-size:16px!important}
.risk-register-list{gap:7px!important}
.risk-row{min-height:44px!important;padding:8px 9px!important;gap:9px!important}
.risk-row b{font-size:9px!important;line-height:1.25!important}
.risk-row span{font-size:7.8px!important;line-height:1.35!important}
.risk-row .metric{font-size:8px!important}

/* Data Health / source evidence */
.health-card{padding:10px!important;min-height:102px!important}
.health-card .health-icon{width:29px!important;height:29px!important;font-size:10px!important}
.health-card b{font-size:9.8px!important;line-height:1.25!important}
.health-card span{font-size:7.8px!important;line-height:1.35!important;margin-top:3px!important}
.health-card small{font-size:7.2px!important;line-height:1.4!important;margin-top:5px!important}
.feed-inspector{padding:12px!important;gap:10px!important}
.feed-inspector-head h3{font-size:13px!important}
.feed-inspector-head p:not(.eyebrow){font-size:8.2px!important;line-height:1.4!important}
.feed-slots{gap:8px!important}
.feed-slots article{padding:9px!important;gap:9px!important;min-height:64px!important}
.feed-slots article>span{width:29px!important;height:29px!important;font-size:7px!important}
.feed-slots b{font-size:9px!important;line-height:1.25!important}
.feed-slots small{font-size:7.4px!important;line-height:1.4!important;margin-top:3px!important}
.probe-empty{font-size:8.2px!important}
.probe-card{padding:9px!important}
.probe-card b{font-size:9px!important}
.probe-card .probe-status{font-size:7.2px!important}
.probe-card dt,.probe-card dd{font-size:7px!important;line-height:1.35!important}

/* Shared source / warning evidence blocks */
.standard-page .source-state b{font-size:8.5px!important;line-height:1.25!important}
.standard-page .source-state small{font-size:7.2px!important;line-height:1.4!important}
.standard-page .attention-item{padding:7px 8px!important}
.standard-page .attention-item b{font-size:8.5px!important;line-height:1.25!important}
.standard-page .attention-item span{font-size:7.3px!important;line-height:1.4!important}
.standard-page .occ-schema-warning span{font-size:8.2px!important;line-height:1.5!important}

/* Route-family KPI breakdown used by dense monitoring workspaces */
.family-kpi-head{font-size:6.8px!important;line-height:1.25!important;min-height:31px!important}
.family-kpi-row{font-size:7.7px!important;min-height:36px!important}
.family-kpi-head>span,.family-kpi-row>span{padding:8px 8px!important}
.family-kpi-row .branch-name{font-size:9px!important}
.family-kpi-row .risk-pill{font-size:6.5px!important;padding:4px 7px!important}
.family-kpi-caption{font-size:6.8px!important;line-height:1.35!important;padding:8px 9px!important}
/* Trip Times control labels and source-status chips are part of the same readability requirement. */
.trip-times-page .trip-filter-grid label>span{font-size:7.2px!important;line-height:1.25!important}
.trip-times-page .trip-filter-grid select{font-size:9.2px!important}
.trip-times-page .trip-source-badges .pill{font-size:7.2px!important;padding:6px 9px!important}
.trip-times-page .trip-count-badge{font-size:9px!important}
.trip-times-page .trip-route-table-head .section-head h3{font-size:12.5px!important}


/* V0.17.2 · SECURE ACCESS / MFA */
.mfa-overlay{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;padding:24px;background:rgba(5,15,28,.86)}
.mfa-overlay[hidden]{display:none}
.mfa-card{width:min(560px,94vw);background:#fff;border:1px solid #d9e0e8;border-radius:22px;box-shadow:0 30px 90px rgba(0,0,0,.35);padding:28px;color:#172536}
.mfa-card h2{margin:4px 0 8px;font-size:25px}.mfa-card>p:not(.eyebrow){margin:0 0 18px;color:#536273;font-size:13px;line-height:1.5}
.mfa-card form{display:grid;gap:12px}.mfa-card label{display:grid;gap:6px}.mfa-card label[hidden]{display:none!important}.mfa-card label>span{font-size:9px;font-weight:800;letter-spacing:.08em;color:#607083}.mfa-card input{min-height:48px;border:1px solid #cfd8e3;border-radius:10px;padding:0 14px;font-size:20px;letter-spacing:.22em;text-align:center;font-weight:800}
.mfa-card #mfaMessage{min-height:20px;font-size:9px;line-height:1.4;font-weight:750;color:#596b7b}
.mfa-enrolment{display:grid;grid-template-columns:180px 1fr;gap:18px;align-items:center;padding:16px;margin:14px 0 18px;border:1px solid #dbe5ef;border-radius:14px;background:#f7fafc}.mfa-enrolment[hidden]{display:none}.mfa-enrolment img{width:180px;height:180px;object-fit:contain;background:#fff;border-radius:8px}.mfa-enrolment div{display:grid;gap:7px}.mfa-enrolment b{font-size:12px}.mfa-enrolment span{font-size:10px;line-height:1.45;color:#617184}.mfa-enrolment code{word-break:break-all;font-size:9px;background:#eaf0f6;padding:8px;border-radius:7px}

/* V0.17.2 · CONFIGURABLE AVL BUS LABELS */
.bus-label-admin-block{margin-top:8px;border:1px solid #dbe4ea;border-radius:8px;background:#f9fbfc;padding:8px;display:grid;gap:7px}.bus-label-admin-head{display:grid;gap:2px}.bus-label-admin-head b{font-size:7px;color:#173b59;letter-spacing:.05em}.bus-label-admin-head small{font-size:5.8px;color:#7b8a95;line-height:1.35}.bus-label-admin-block>label{display:grid;grid-template-columns:44px minmax(0,1fr) minmax(90px,.72fr) 36px;gap:6px;align-items:center}.bus-label-admin-block>label>span{font-size:5.8px;font-weight:1000;letter-spacing:.55px;color:#6d7d89}.bus-label-admin-block select{height:32px;border:1px solid #cbd6dd;border-radius:6px;background:#fff;padding:0 7px;font-size:7.4px;color:#213440;min-width:0}.bus-label-admin-block input[type=range]{width:100%;accent-color:#d72631}.bus-label-admin-block output{font-size:6.4px;font-weight:950;color:#173b59;text-align:right;margin:0}.config-group .bus-label-admin-block+label{margin-top:2px}
@media(max-width:1450px){.bus-label-admin-block>label{grid-template-columns:42px minmax(0,1fr) minmax(80px,.7fr) 34px}}




/* AVL GEOMETRY ADMIN PREVIEW BASE · V0.17.4
   Preview styling only. Live geometry is owned by avl_geometry.js and the final master rules below. */
.triple-monitor-board .corridor-stop-copy{font-size:var(--avl-stop-label-px);transform:translateX(-50%) scale(.9);transform-origin:center}
.family-split-label{transform:translate(-50%,-50%)}
.admin-toolbar-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.avl-geometry-admin-grid{display:grid;grid-template-columns:minmax(360px,.8fr) minmax(560px,1.35fr);gap:10px;min-height:0}
.avl-geometry-controls{align-content:start}.geometry-governance-note{display:grid;gap:3px;border:1px solid #b9d9c5;background:#f2fbf5;border-radius:8px;padding:8px 9px;margin-bottom:4px}.geometry-governance-note b{font-size:6.5px;color:#176b39;letter-spacing:.05em}.geometry-governance-note span{font-size:6px;line-height:1.45;color:#5d7385}

/* MUNICIPALITY_BOARD1_A5_HFX2 geometry audit: explicit purpose groups; no duplicated branch authority. */
.geometry-control-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;align-items:start}.geometry-control-section{min-width:0;margin:0;padding:9px;border:1px solid #dce6ed;border-radius:9px;background:#fbfdfe;display:grid;gap:7px}.geometry-control-section legend{padding:0 5px;font-size:6.5px;font-weight:1000;letter-spacing:.07em;color:#1b4b69}.geometry-control-section.branch{border-color:#c5daec;background:#f5faff}.geometry-readonly-fact{display:grid;gap:3px;border:1px solid #bcd5e7;border-radius:7px;background:#eef7fd;padding:7px 8px}.geometry-readonly-fact b{font-size:6px;color:#17658b;letter-spacing:.05em}.geometry-readonly-fact span{font-size:5.8px;line-height:1.4;color:#5c7485}.geometry-control-section label{margin:0}.geometry-control-section small{line-height:1.35}@media(max-width:1450px){.geometry-control-groups{grid-template-columns:1fr}}
.avl-geometry-preview-panel{padding:10px;min-height:520px}.geometry-preview-help{margin:0 0 8px;font-size:7px;line-height:1.45;color:#66798a}.avl-geometry-preview{display:grid;gap:8px}.geometry-preview-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.geometry-preview-board{border:1px solid #d6e0e8;border-radius:9px;background:#fff;overflow:hidden;min-height:210px}.geometry-preview-board.split{grid-column:1/-1;min-height:250px}.geometry-preview-caption{height:38px;padding:6px 8px;border-bottom:1px solid #e6edf2;background:#f9fbfc;display:flex;align-items:center;justify-content:space-between;gap:8px}.geometry-preview-caption b{font-size:7px;color:#173b59;letter-spacing:.04em}.geometry-preview-caption span{font-size:5.8px;color:#768897}.geometry-preview-dual{display:grid;grid-template-rows:1fr 1fr;height:170px}.geometry-preview-board.compact .geometry-preview-dual{height:150px}.geometry-preview-lane{position:relative;overflow:hidden;border-bottom:1px solid #eef2f5}.geometry-preview-lane:last-child{border-bottom:0}.geometry-preview-lane .g-dir,.geometry-family-lane .g-dir{position:absolute;left:6px;top:5px;z-index:5;font-size:5.5px;font-style:normal;font-weight:950;color:#173b59}.g-rail{position:absolute;left:72px;right:10px;top:var(--rail);height:4px;background:#20a052;border-radius:4px}.g-stop{position:absolute;top:calc(var(--rail) - 4px);width:8px;height:8px;border-radius:50%;background:#0f2d55;box-shadow:0 0 0 2px #fff;font-style:normal}.g-stop.s1{left:28%}.g-stop.s2{left:56%}.g-stop.s3{left:84%}.geometry-preview-lane.inbound .g-stop b{position:absolute;left:50%;bottom:var(--clear);transform:translateX(-50%);white-space:nowrap;font-size:6px;color:#173b59}.geometry-preview-lane.outbound .g-stop b{position:absolute;left:50%;top:var(--clear);transform:translateX(-50%);white-space:nowrap;font-size:6px;color:#173b59}.geometry-preview-lane.inbound .g-stop.tier b{bottom:calc(var(--clear) + var(--tier))}.geometry-preview-lane.outbound .g-stop.tier b{top:calc(var(--clear) + var(--tier))}.g-bus,.g-family-bus{position:absolute;z-index:8;left:68%;top:clamp(3px,calc(var(--rail) + 8px + var(--bus-shift)),calc(100% - 34px));transform:translateX(-50%);min-width:55px;min-height:31px;background:#29d344;color:#061d0b;clip-path:polygon(0 0,82% 0,100% 50%,82% 100%,0 100%);padding:4px 8px;font-size:6px;font-style:normal;font-weight:1000;line-height:1.05}.geometry-preview-lane.inbound .g-bus{clip-path:polygon(18% 0,100% 0,100% 100%,18% 100%,0 50%)}.g-bus small,.g-family-bus small{display:block;margin-top:2px;font-size:5.5px}.geometry-preview-board.compact{transform-origin:top center}.geometry-preview-board.compact .geometry-preview-caption{height:34px}.geometry-preview-board.compact .g-dir{font-size:5px}.geometry-family-dual{display:grid;grid-template-rows:1fr 1fr;height:210px}.geometry-family-lane{position:relative;overflow:hidden;border-bottom:1px solid #eef2f5}.geometry-family-lane:last-child{border-bottom:0}.geometry-family-lane svg{position:absolute;left:72px;right:10px;top:0;width:calc(100% - 82px);height:100%;overflow:visible}.g-family-trunk{stroke:#20a052;stroke-width:5;vector-effect:non-scaling-stroke}.g-family-connector,.g-family-branch{stroke-width:4;vector-effect:non-scaling-stroke}.g-family-connector.f1,.g-family-branch.f1{stroke:#d92532}.g-family-connector.f2,.g-family-branch.f2{stroke:#0f6cb5}.g-family-point{fill:#fff;stroke:#d92532;stroke-width:3;vector-effect:non-scaling-stroke}.g-family-bus{left:68%;min-width:56px}.g-family-label{position:absolute;transform:translate(-50%,-50%);font-size:5.8px;color:#b91f2e;background:#fff;border:1px solid #dce5ec;border-radius:999px;padding:2px 4px;white-space:nowrap}.geometry-preview-values{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.geometry-preview-values span{border:1px solid #dce5ec;background:#f8fafc;border-radius:999px;padding:4px 6px;font-size:5.8px;color:#657887}.geometry-preview-values b{color:#173b59}.avl-geometry-controls input[type=range]{accent-color:#d72631}
@media(max-width:1200px){.avl-geometry-admin-grid{grid-template-columns:1fr}.avl-geometry-preview-panel{min-height:480px}}
@media(max-width:760px){.geometry-preview-grid{grid-template-columns:1fr}.geometry-preview-board.split{grid-column:auto}.avl-geometry-preview-panel{padding:8px}}
/* Compact monitor keeps only its real context row plus the shared AVL body.
   The hidden full-AVL information header must not reserve 34px and compress lanes. */
.triple-monitor-board .distance-avl{grid-template-rows:auto minmax(0,1fr)!important}
.triple-monitor-board .distance-avl>.distance-avl-head{display:none!important}
.triple-monitor-board .distance-avl>.distance-avl-body{grid-row:2!important;min-height:0!important}


/* TIRANA LIVE V0.17.4 BUILD MARKER · ACCESS & SECURITY VERIFICATION · UI FROZEN
   Final pre-UAT geometry reset:
   - one rail/stop/bus anchor model for standard, loop and split-family AVL;
   - full Live AVL and Trip Times AVL use the configurable full viewport height;
   - 3-Route cards use an independently configurable compact viewport height only;
   - standard and family bus cards share the same scale within each viewport;
   - offset 0 is physical rail-touch, with no legacy clamp/base/stack offset;
   - map vehicle marker scale controls the complete Leaflet marker, not text alone. */
:root{
  --avl-board-height:375px;
  --avl-inbound-rail-pct:50%;
  --avl-outbound-rail-pct:35%;
  --avl-family-branch-spread-pct:36;
  --avl-compact-board-height:220px;
  --avl-compact-bus-scale:.72;
  --avl-rail-touch-overlap-px:1px;
  --map-vehicle-scale:.85;
}

/* The configured full height owns the complete AVL window on every full renderer. */
.live-page{grid-template-rows:auto var(--avl-board-height) minmax(0,1fr)!important}
.avl-board.avl-command-board,
.p2p-avl-board{
  height:var(--avl-board-height)!important;
  min-height:var(--avl-board-height)!important;
  max-height:var(--avl-board-height)!important;
  overflow:hidden!important;
}
.p2p-page{grid-template-rows:auto auto var(--avl-board-height) minmax(0,1fr)!important}
html.occ-fullscreen .live-page{grid-template-rows:auto var(--avl-board-height) minmax(0,1fr)!important}

/* Compact monitor height is explicit. Cards grow with it and the stack scrolls instead of clipping. */
.triple-route-stack{
  grid-auto-rows:minmax(calc(var(--avl-compact-board-height) + 44px),auto)!important;
}
.triple-route-card{
  min-height:calc(var(--avl-compact-board-height) + 44px)!important;
  overflow:hidden!important;
}
.triple-monitor-board{
  height:var(--avl-compact-board-height)!important;
  min-height:var(--avl-compact-board-height)!important;
  max-height:var(--avl-compact-board-height)!important;
  overflow:hidden!important;
}
.triple-monitor-board .distance-avl,
.triple-monitor-board .family-avl{height:100%!important;min-height:0!important;overflow:hidden!important}
.triple-monitor-board .distance-avl-body,
.triple-monitor-board .family-avl-body{height:100%!important;min-height:0!important}

/* One exact edge-to-rail anchor. Inline --avl-bus-rail-pct comes from avl_geometry.js. */
.corridor-lane .corridor-bus.avl-rail-bus.inbound,
.family-direction .family-bus.avl-rail-bus.inbound{
  top:auto!important;
  bottom:calc(100% - var(--avl-bus-rail-pct,50%) - var(--avl-rail-touch-overlap-px,1px) - var(--avl-bus-offset-px,0px))!important;
  transform-origin:center bottom!important;
}
.corridor-lane .corridor-bus.avl-rail-bus.outbound,
.family-direction .family-bus.avl-rail-bus.outbound{
  bottom:auto!important;
  top:calc(var(--avl-bus-rail-pct,50%) + var(--avl-rail-touch-overlap-px,1px) + var(--avl-bus-offset-px,0px))!important;
  transform-origin:center top!important;
}

/* Full AVL: family and standard cards are the same physical card scale. */
.corridor-lane .corridor-bus.avl-rail-bus,
.family-direction .family-bus.avl-rail-bus,
.family-direction.family-branches-2 .family-bus.avl-rail-bus,
.family-direction.family-branches-3 .family-bus.avl-rail-bus,
.family-direction.family-branches-4 .family-bus.avl-rail-bus{
  transform:translateX(-50%) scale(var(--avl-bus-scale,1))!important;
}

/* 3-Route: one compact scale for standard AND family cards. Geometry/anchors remain unchanged. */
.triple-monitor-board .corridor-lane .corridor-bus.avl-rail-bus,
.triple-monitor-board .family-direction .family-bus.avl-rail-bus,
.triple-monitor-board .family-direction.family-branches-2 .family-bus.avl-rail-bus,
.triple-monitor-board .family-direction.family-branches-3 .family-bus.avl-rail-bus,
.triple-monitor-board .family-direction.family-branches-4 .family-bus.avl-rail-bus{
  transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * var(--avl-compact-bus-scale,.72)))!important;
}
.triple-monitor-board .corridor-lane .corridor-bus.avl-rail-bus.inbound,
.triple-monitor-board .family-direction .family-bus.avl-rail-bus.inbound{transform-origin:center bottom!important}
.triple-monitor-board .corridor-lane .corridor-bus.avl-rail-bus.outbound,
.triple-monitor-board .family-direction .family-bus.avl-rail-bus.outbound{transform-origin:center top!important}

/* Split/combined route tracks use the entire governed direction viewport; no renderer-specific band. */
.family-avl{height:100%!important;min-height:0!important;overflow:hidden!important}
.family-avl-body{height:100%!important;min-height:0!important;grid-template-rows:minmax(0,1fr) minmax(0,1fr)!important}
.family-direction{min-height:0!important;overflow:hidden!important}
.family-track{min-height:0!important;height:100%!important;overflow:hidden!important}
.family-rails{height:100%!important;top:0!important;bottom:0!important}
.family-bus{--avl-family-bus-stack-offset-px:0px!important}

/* Admin geometry preview is a visualisation of the same rail-touch invariant. */
.geometry-preview-lane.inbound .g-bus,
.geometry-family-lane.inbound .g-family-bus{
  top:auto!important;
  bottom:calc(100% - var(--rail) - var(--avl-rail-touch-overlap-px,1px) - var(--bus-shift))!important;
  transform-origin:center bottom!important;
}
.geometry-preview-lane.outbound .g-bus,
.geometry-family-lane.outbound .g-family-bus{
  bottom:auto!important;
  top:calc(var(--rail) + var(--avl-rail-touch-overlap-px,1px) + var(--bus-shift))!important;
  transform-origin:center top!important;
}

/* Leaflet bus marker: fixed icon dimensions and fixed minimum widths are removed. */
.tirana-vehicle-map-icon{background:transparent!important;border:0!important}
.bus-map-marker{
  box-sizing:border-box!important;
  width:var(--map-bus-width,56px)!important;
  min-width:var(--map-bus-width,56px)!important;
  max-width:var(--map-bus-width,56px)!important;
  height:var(--map-bus-height,29px)!important;
  min-height:0!important;
  max-height:var(--map-bus-height,29px)!important;
  padding:calc(3px * var(--map-bus-scale,.85)) calc(5px * var(--map-bus-scale,.85))!important;
  border-radius:calc(6px * var(--map-bus-scale,.85))!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:1px!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  line-height:1!important;
}
.bus-map-marker b,
.bus-map-marker span{
  display:block!important;
  max-width:100%!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  line-height:1!important;
}
.bus-map-marker b{font-size:var(--map-vehicle-label-px)!important}
.bus-map-marker span{font-size:calc(var(--map-vehicle-label-px) * .68)!important;margin-top:0!important}
.preview-bus{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;white-space:nowrap}

@media(max-width:1350px) and (min-width:821px){
  .live-page{grid-template-rows:auto var(--avl-board-height) minmax(0,1fr)!important}
  .avl-board.avl-command-board,.p2p-avl-board{height:var(--avl-board-height)!important;min-height:var(--avl-board-height)!important;max-height:var(--avl-board-height)!important}
  .p2p-page{grid-template-rows:auto auto var(--avl-board-height) minmax(0,1fr)!important}
}

/* TIRANA LIVE V0.17.4 BUILD MARKER · COMPACT 3-ROUTE TOOLBAR
   The page identity and the three route selectors share one horizontal bar.
   Route boards gain vertical room; AVL geometry and route-card rendering are untouched. */
.triple-monitor-page{
  grid-template-rows:auto minmax(0,1fr)!important;
  gap:8px!important;
}
.triple-monitor-toolbar{
  display:grid;
  grid-template-columns:minmax(190px,260px) minmax(0,1fr);
  align-items:end;
  gap:12px;
  padding:7px 9px;
  margin:0;
  min-height:56px;
  border-left:4px solid var(--red);
  overflow:visible;
  position:relative;
  z-index:5;
}
.triple-monitor-identity{
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:8px;
  min-width:0;
  height:100%;
}
.triple-monitor-copy{min-width:0;flex:1}
.triple-monitor-copy .eyebrow{margin:0 0 1px;font-size:6.5px!important;line-height:1.1!important}
.triple-monitor-copy h2{margin:0;font-size:13px;line-height:1.05;white-space:nowrap}
.triple-monitor-toolbar .triple-monitor-status{
  align-self:center;
  padding:5px 8px;
  font-size:6.5px;
  flex:0 0 auto;
}
.triple-monitor-toolbar .triple-route-selectors{
  display:grid;
  grid-template-columns:repeat(3,minmax(135px,1fr)) 122px;
  gap:7px;
  align-items:end;
  min-width:0;
}
.triple-monitor-toolbar .triple-route-selectors label{gap:2px;min-width:0}
.triple-monitor-toolbar .triple-route-selectors label>span{font-size:6px;line-height:1.1}
.triple-monitor-toolbar .triple-route-selectors select{height:34px;padding:0 9px;font-size:9.5px}
.triple-monitor-toolbar #refreshTripleMonitorButton{height:34px!important;min-height:34px!important;padding:0 10px!important;font-size:7px!important;white-space:nowrap}

@media (max-width:1180px){
  .triple-monitor-toolbar{grid-template-columns:minmax(165px,200px) minmax(0,1fr);gap:8px;padding:6px 7px}
  .triple-monitor-toolbar .triple-route-selectors{grid-template-columns:repeat(3,minmax(118px,1fr)) 108px;gap:5px}
  .triple-monitor-copy h2{font-size:12px}
  .triple-monitor-toolbar .triple-route-selectors select{font-size:8.5px;padding:0 7px}
}

@media (max-width:820px){
  .triple-monitor-toolbar{display:grid;grid-template-columns:1fr;align-items:stretch}
  .triple-monitor-toolbar .triple-route-selectors{grid-template-columns:1fr 1fr}
  .triple-monitor-toolbar #refreshTripleMonitorButton{grid-column:1/-1}
}

/* TIRANA LIVE V0.17.4.3 BUILD MARKER · PREDICTIVE EWT CONTROL GUARDRAILS · AVL UI FROZEN */

/* V0.17.4.1 driver-to-OCC platform message popup */
.platform-driver-message-popup{position:fixed;right:18px;top:78px;z-index:10050;width:min(390px,calc(100vw - 36px));filter:drop-shadow(0 16px 28px rgba(15,45,70,.2))}
.platform-driver-message-popup[hidden]{display:none!important}
.platform-driver-message-card{border:1px solid #ffbf55;border-left:5px solid #e2212b;border-radius:12px;background:#fff;padding:14px 15px;display:grid;gap:7px}
.platform-driver-message-card>span{font-size:10px;font-weight:900;letter-spacing:.12em;color:#b21f29}
.platform-driver-message-card>strong{font-size:16px;color:#0d304d}
.platform-driver-message-card>p{margin:0;font-size:14px;line-height:1.35;color:#18384f;overflow-wrap:anywhere}
.platform-driver-message-card>small{font-size:11px;color:#64798a}
.platform-driver-message-card>div{display:flex;gap:8px;justify-content:flex-end;margin-top:3px}
@media(max-width:820px){.platform-driver-message-popup{top:64px;right:10px;width:calc(100vw - 20px)}}


/* V0.17.4.2 · GOVERNED HF SERVICE MANAGEMENT + ROUTE/FAMILY STANDARD VISIBILITY */
.service-standard-row.family-group{border-width:2px;border-color:#9fb8c9;background:#f2f8fc;box-shadow:inset 3px 0 0 #173f5d}.service-standard-row.family-group.active{border-color:#d72631;background:#fff5f6;box-shadow:inset 3px 0 0 #d72631}.service-standard-row.family-group b:before{content:'GROUP · ';font-size:5px;letter-spacing:.08em;color:#60798b}.service-management-button{background:#eaf7ef!important;border-color:#8ccca3!important;color:#126537!important}.service-management-button:hover{background:#dcf2e5!important;border-color:#55ad75!important}.service-management-drawer{width:min(980px,97vw)!important}.service-management-content{display:grid;gap:9px}.service-plan-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.service-plan-metrics article,.service-member-grid article{min-width:0;border:1px solid #dbe5ed;border-radius:9px;background:#fff;padding:9px}.service-plan-metrics article.fail{border-color:#efc2c7;background:#fff7f8}.service-plan-metrics article.pass{border-color:#c8e5d1;background:#f5fbf7}.service-plan-metrics article.mixed{border-color:#ead8a8;background:#fff9e9}.service-plan-metrics span,.service-member-grid span{display:block;font-size:6px;font-weight:950;letter-spacing:.08em;color:#718797;text-transform:uppercase}.service-plan-metrics strong,.service-member-grid strong{display:block;margin-top:4px;font-size:14px;line-height:1.05;color:#173d58;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.service-plan-metrics article.fail strong{color:#c8202c}.service-plan-metrics article.pass strong{color:#17833a}.service-plan-metrics article.mixed strong{color:#9a6800}.service-plan-metrics small,.service-member-grid small{display:block;margin-top:4px;font-size:6.6px;line-height:1.32;color:#687e8d}.service-member-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.service-direction-plan{display:grid;gap:7px;border:1px solid #dbe5ed;border-radius:10px;background:#f9fbfc;padding:9px}.service-runtime-line{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.service-runtime-line span{border:1px solid #e2e9ee;border-radius:7px;background:#fff;padding:6px 7px;font-size:6.4px;color:#69808f}.service-runtime-line b{font-size:7.2px;color:#173d58}.service-plan-table{display:grid;gap:4px}.service-plan-table article{display:grid;grid-template-columns:26px minmax(130px,1.3fr) 82px 82px minmax(120px,1fr);gap:7px;align-items:center;border:1px solid #e0e7ec;border-radius:7px;background:#fff;padding:6px 7px}.service-plan-table article>span{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#eef4f8;font-size:7px;font-weight:950;color:#244b67}.service-plan-table article>b{font-size:7.5px;color:#173d58;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.service-plan-table article>em{font-size:7px;font-style:normal;color:#6f8493}.service-plan-table article>strong{font-size:8px;color:#174c70}.service-plan-table article>i{font-style:normal;font-size:6.8px;font-weight:950;color:#177344}.service-plan-table article>i:has(+ *){color:#177344}.service-management-content .control-evidence{margin-top:0}.service-management-content .control-safety{margin-bottom:2px}
@media(max-width:1200px){.service-plan-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.service-runtime-line{grid-template-columns:1fr 1fr}.service-plan-table article{grid-template-columns:24px minmax(110px,1fr) 70px 70px minmax(100px,1fr)}}
@media(max-width:820px){.service-management-drawer{width:100vw!important}.service-plan-metrics{grid-template-columns:1fr 1fr}.service-member-grid,.service-runtime-line{grid-template-columns:1fr}.service-plan-table article{grid-template-columns:24px minmax(0,1fr) 68px}.service-plan-table article>em{display:none}.service-plan-table article>i{grid-column:2/-1}.ops-kpis.hf{grid-template-columns:repeat(10,minmax(105px,1fr))!important;overflow-x:auto!important}}

/* TIRANA LIVE V0.17.4.3 BUILD MARKER · PREDICTIVE EWT CONTROL GUARDRAILS · AVL UI FROZEN */
.service-capacity-warning{border-color:#efc2c7!important;background:#fff7f8!important}.service-plan-table article{grid-template-columns:26px minmax(130px,1.2fr) 74px 74px minmax(120px,.8fr);align-items:start}.service-plan-table article>small{grid-column:2/-1;margin-top:-2px;font-size:6.2px;line-height:1.25;color:#6b7f8d}.service-member-grid article small+small{margin-top:2px}.service-management-content .control-decision h4{margin:5px 0 3px}.service-management-content .control-decision p{margin:0}.service-management-content .control-decision>small{display:block;margin-top:5px;font-size:6.5px;color:#6a7e8c}
@media(max-width:820px){.service-plan-table article{grid-template-columns:24px minmax(0,1fr) 66px}.service-plan-table article>small{grid-column:2/-1}.service-plan-table article>i{grid-column:2/-1}}


/* TIRANA LIVE V0.17.4.4 · HF FORWARD GAP BUS-CARD ROW */
/* TIRANA LIVE V0.17.4.7 · HF FORWARD HEADWAY BUS-CARD ROW */
.corridor-bus.hf-gap-card{padding-top:4px;padding-bottom:4px}
.corridor-bus .hf-gap-line{display:block;font-style:normal;font-size:6.35px;font-weight:1000;line-height:1.02;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.05px}
.triple-monitor-board .corridor-bus .hf-gap-line{font-size:5.9px;margin-top:.5px}
/* TIRANA LIVE V0.17.4.21 BUILD MARKER · LONDON TRIP + HEADWAY + MAP ANCHORS · GOVERNED DATA RETENTION · PROTECTED AVL FOUNDATIONS PRESERVED */

/* TIRANA LIVE V0.17.4.7.3 · AUTHORITATIVE LAST-GOOD GTFS-RT RECOVERY */
.predictive-control-block{display:grid;gap:8px;border:1px solid #9db5c7;border-radius:11px;background:#f6fafc;padding:9px}.predictive-control-block.pending{border-style:dashed}.predictive-control-block.fail{border-color:#e6b8bd;background:#fff8f8}.predictive-control-hero{display:grid;grid-template-columns:minmax(220px,1fr) minmax(420px,1.8fr);gap:9px;align-items:stretch;border:1px solid #b8d0df;border-radius:10px;background:#173f5d;color:#fff;padding:10px}.predictive-control-hero>div:first-child span{display:block;font-size:6px;font-weight:950;letter-spacing:.09em;color:#b9d8ea}.predictive-control-hero>div:first-child b{display:block;margin-top:4px;font-size:13px}.predictive-control-hero>div:first-child small{display:block;margin-top:4px;font-size:6.5px;color:#d4e4ee}.predictive-hero-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.predictive-hero-metrics span{display:grid;gap:3px;border:1px solid rgba(255,255,255,.18);border-radius:7px;background:rgba(255,255,255,.06);padding:6px;font-size:5.8px;font-weight:900;letter-spacing:.05em}.predictive-hero-metrics b{font-size:8px;color:#fff}.predictive-direction{display:grid;gap:7px;border:1px solid #d5e1e9;border-radius:9px;background:#fff;padding:8px}.predictive-comparison{display:grid;grid-template-columns:1fr 1fr;gap:7px}.predictive-comparison article{border:1px solid #e1e8ed;border-radius:8px;padding:7px;background:#fff8f8}.predictive-comparison article.recommended{background:#f3fbf6;border-color:#bfe1c9}.predictive-comparison span{display:block;font-size:6px;font-weight:950;letter-spacing:.07em;color:#728694}.predictive-comparison strong{display:block;margin-top:3px;font-size:14px;color:#be2531}.predictive-comparison .recommended strong{color:#16713a}.predictive-comparison small{display:block;margin-top:3px;font-size:6.3px;color:#647a88}.predictive-control-table{display:grid;gap:4px}.predictive-control-table article{display:grid;grid-template-columns:24px minmax(150px,1.3fr) 70px 70px 70px minmax(150px,1fr);gap:6px;align-items:center;border:1px solid #e0e7ec;border-radius:7px;padding:6px;background:#fff}.predictive-control-table article>span{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#edf3f7;font-size:6.5px;font-weight:950}.predictive-control-table article>div b{display:block;font-size:7.2px;color:#173d58}.predictive-control-table article>div small{display:block;font-size:5.8px;color:#708390;margin-top:2px}.predictive-control-table article>em{font-style:normal;font-size:6.7px;color:#758793}.predictive-control-table article>strong{font-size:7.5px;color:#173d58}.predictive-control-table article>i{font-style:normal;font-size:6.3px;font-weight:950}.predictive-control-table article>i.green{color:#177344}.predictive-control-table article>i.amber{color:#a46500}.predictive-control-table article>i.red{color:#c51e2c}.predictive-control-table article>small{grid-column:2/-1;font-size:6px;color:#6c808d;margin-top:-2px}.predictive-governance{display:grid;gap:3px;border-left:3px solid #173f5d;background:#eef5f9;padding:7px 8px;font-size:6.4px;color:#5f7583}.predictive-governance b{font-size:6.7px;color:#173f5d}.predictive-governance small{font-size:5.8px;color:#718591}.predictive-loading{display:flex;align-items:center;gap:7px;padding:8px;font-size:6.5px;color:#617987}.predictive-loading i{width:12px;height:12px;border:2px solid #c7d6e0;border-top-color:#173f5d;border-radius:50%;animation:spin .8s linear infinite}
@media(max-width:1000px){.predictive-control-hero{grid-template-columns:1fr}.predictive-hero-metrics{grid-template-columns:1fr 1fr}.predictive-control-table article{grid-template-columns:22px minmax(120px,1fr) 60px 60px minmax(120px,1fr)}.predictive-control-table article>strong:nth-of-type(2){display:none}}
@media(max-width:700px){.predictive-comparison{grid-template-columns:1fr}.predictive-control-table article{grid-template-columns:22px minmax(0,1fr) 60px}.predictive-control-table article>em,.predictive-control-table article>strong:nth-of-type(2){display:none}.predictive-control-table article>i{grid-column:2/-1}.predictive-hero-metrics{grid-template-columns:1fr 1fr}}


/* V0.17.4.7.3 · explicit confidence components + provisional readiness */
.predictive-confidence-evidence{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;border:1px solid #d7e3eb;border-radius:8px;background:#f7fafc;padding:6px}.predictive-confidence-evidence span{display:flex;justify-content:space-between;gap:6px;align-items:center;border:1px solid #e4ebf0;border-radius:6px;background:#fff;padding:5px 6px;font-size:5.7px;font-weight:950;letter-spacing:.04em;color:#6d8190}.predictive-confidence-evidence b{font-size:6.6px;color:#173f5d}.predictive-confidence-evidence small{grid-column:1/-1;font-size:5.6px;color:#9a5c00}.predictive-confidence-evidence.compact{padding:4px}.predictive-confidence-evidence.compact span{padding:4px 5px}.predictive-control-table article.provisional{border-color:#e3c57b;background:#fffaf0}.predictive-control-table article.provisional>strong{color:#8b6200}.predictive-control-table article.provisional>i{color:#8b6200}.service-plan-metrics article strong{line-height:1.05}
@media(max-width:900px){.predictive-confidence-evidence{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.predictive-confidence-evidence{grid-template-columns:1fr 1fr}}

/* TIRANA LIVE V0.17.4.21 · GOVERNED 1-5 DAY TELEMETRY RETENTION */
.data-retention-config-block{margin-top:12px;padding-top:10px;border-top:2px solid #d9e4eb}.data-retention-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.data-retention-grid label{display:grid;gap:3px}.data-retention-grid label>span{font-size:5.8px;font-weight:950;letter-spacing:.55px;color:#6d7d89}.data-retention-grid select{height:34px;border:1px solid #cbd6dd;border-radius:6px;background:#fff;padding:0 8px;font-size:8px;color:#213440;outline:none}.data-retention-grid small{font-size:5.7px;color:#87939c;line-height:1.35}.data-retention-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:8px}.data-retention-summary article{border:1px solid #dfe7ec;border-radius:7px;background:#f8fbfd;padding:7px}.data-retention-summary article span,.data-retention-summary article b,.data-retention-summary article small{display:block}.data-retention-summary article span{font-size:5.4px;color:#7c8b95;font-weight:950;letter-spacing:.4px}.data-retention-summary article b{font-size:8px;color:#173b59;margin-top:2px}.data-retention-summary article small{font-size:5.5px;color:#84919a;margin-top:2px;line-height:1.3}.data-retention-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;margin-top:8px;padding-top:7px;border-top:1px solid #edf0f2}.data-retention-actions .feed-import-status{margin-right:auto}.historical-replay-page .retention-window-note{display:inline-flex;align-items:center;border-radius:10px;padding:3px 7px;background:#eef7ff;color:#1a5d8b;font-size:5.8px;font-weight:950}

/* TIRANA LIVE V0.17.4.21 · CITY-AWARE DISPLAY MAPPING + SAFE NON-DEFAULT CITY REMOVAL */
.button.danger{background:#fff4f5;border:1px solid #e6aeb4;color:#a81d29}.button.danger:hover{background:#ffe8ea;border-color:#d8757e}.button.danger:disabled{opacity:.5;cursor:not-allowed}
.city-danger-zone{margin-top:10px;padding:10px;border:1px solid #e8b8bd;border-left:4px solid var(--red);border-radius:8px;background:#fff8f8;display:flex;align-items:center;justify-content:space-between;gap:12px}.city-danger-zone[hidden]{display:none!important}.city-danger-zone>div{min-width:0}.city-danger-zone b,.city-danger-zone span{display:block}.city-danger-zone b{font-size:7px;letter-spacing:.08em;color:#a51f2a}.city-danger-zone span{margin-top:3px;font-size:6.4px;line-height:1.35;color:#765c60}.city-danger-zone .button{flex:0 0 auto;white-space:nowrap}
.city-mapping-note{margin:0 0 9px;padding:8px 10px;border:1px solid #c9dce9;border-left:4px solid #1d668f;border-radius:8px;background:#f4f9fc;display:grid;gap:3px}.city-mapping-note b{font-size:7px;letter-spacing:.07em;color:#174b6c}.city-mapping-note span{font-size:6.5px;line-height:1.4;color:#5f7584}
@media(max-width:780px){.city-danger-zone{align-items:stretch;flex-direction:column}.city-danger-zone .button{width:100%}}
/* TIRANA LIVE V0.17.4.21 BUILD MARKER · LONDON TRIP + HEADWAY + MAP ANCHORS */
.feed-provider-fields{display:contents}
.feed-provider-fields[hidden]{display:none!important}
#tflProviderFields input[readonly]{background:var(--surface-soft,#f7f9fb);font-weight:700;color:var(--ink,#10263b)}
/* TIRANA LIVE V0.17.4.21 BUILD MARKER · CITY DATA MAPPING · SERVICE DAY TIMING · SAFE CITY REMOVAL · FOUNDATION PRESERVED */

/* TIRANA LIVE V0.17.4.21 BUILD MARKER · LONDON TRIP + HEADWAY + MAP ANCHORS */
body[data-city-provider="tfl_unified"] .operational-stop-label{max-width:150px;overflow:hidden;text-overflow:ellipsis}

/* TIRANA LIVE V0.17.4.21 · LONDON PREDICTION-ANCHOR MAP VISIBILITY */
.tfl-prediction-anchor .bus-map-marker{border:2px solid rgba(255,255,255,.96);box-shadow:0 3px 10px rgba(15,45,85,.38)}


/* TIRANA LIVE V0.17.4.21 BUILD MARKER · 1-5 DAY GOVERNED RETENTION */
.access-editor-empty[hidden],
.access-user-form[hidden]{display:none!important}
.admin-tab-panel[data-admin-panel="users"] .access-admin-layout{min-height:0!important;height:auto!important;flex:1 1 auto!important;overflow:hidden!important}
.admin-tab-panel[data-admin-panel="users"] .access-editor-panel{min-height:0!important;max-height:100%!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain;scrollbar-gutter:stable;padding-bottom:0!important}
.admin-tab-panel[data-admin-panel="users"] .access-user-form{display:grid!important;grid-auto-rows:max-content;align-content:start;min-height:max-content!important;padding-bottom:8px}
.admin-tab-panel[data-admin-panel="users"] .route-allocation-grid{min-height:110px;max-height:300px;overflow-y:auto!important;overscroll-behavior:contain;scrollbar-gutter:stable}
.admin-tab-panel[data-admin-panel="users"] .access-save-row{position:sticky;bottom:0;z-index:20;background:#fff;padding:9px 0 8px;box-shadow:0 -8px 14px rgba(255,255,255,.94)}
.tfl-prediction-anchor{z-index:1!important}
.tfl-prediction-anchor .bus-map-marker{outline:2px solid rgba(13,53,84,.24);box-shadow:0 4px 12px rgba(15,45,85,.46)!important}


/* TIRANA LIVE V0.17.4.21 BUILD MARKER · PLATFORM READINESS + GOVERNED MULTI-CITY GOOGLE TRAFFIC */
.traffic-toggle-button{min-width:78px;padding:7px 10px;font-size:9px}.traffic-toggle-button[aria-pressed="false"]{opacity:.62}.traffic-governance-row{border-top:1px solid #e7edf2;padding-top:10px}.readiness-check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.readiness-check{border:1px solid #dfe7ed;border-radius:9px;padding:10px;background:#fff;display:flex;flex-direction:column;gap:4px}.readiness-check.ready{border-left:4px solid #20a052}.readiness-check.warning{border-left:4px solid #f0a202}.readiness-check.action_required{border-left:4px solid #d7263d}.readiness-check span,.readiness-city-metrics span{font-size:9px;color:#637786}.readiness-check b,.readiness-city-metrics b{font-size:10px;color:#102f4d}.readiness-city-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.readiness-city-card{border:1px solid #dfe7ed;border-radius:10px;padding:11px;background:#fff}.readiness-city-card header{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.readiness-city-card header div{display:flex;flex-direction:column}.readiness-city-card header b{font-size:13px}.readiness-city-card header small{font-size:9px;color:#758795}.readiness-city-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:10px}.readiness-city-metrics span{background:#f7fafc;border-radius:7px;padding:7px;display:flex;flex-direction:column;gap:2px}.readiness-issues{display:block;color:#b81f2e;margin-top:8px}.readiness-ok{display:block;color:#158345;margin-top:8px}@media(max-width:1050px){.readiness-check-grid,.readiness-city-grid{grid-template-columns:1fr}.readiness-city-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* TIRANA LIVE V0.17.4.21 BUILD MARKER · CITY DATA MAPPING · SERVICE DAY TIMING · SAFE CITY REMOVAL */

/* TIRANA LIVE V0.17.4.21 BUILD MARKER · DUBLIN NTA GTFS/GTFS-RT · 60 SECOND GOVERNED PROVIDER HUB · EXISTING CITIES PROTECTED */
/* TIRANA LIVE V0.17.4.21 BUILD MARKER · DUBLIN NTA GTFS/GTFS-RT · PLATFORM READINESS + GOOGLE TRAFFIC */

.provider-data-attribution{margin:10px 0 12px;padding:9px 12px;border:1px solid #c7d7e2;border-radius:10px;background:#f7fafc;font-size:11px;line-height:1.45;color:#284151}.provider-data-attribution a{font-weight:800;text-decoration:underline}.provider-data-attribution span{margin-left:6px}
/* V0.17.4.23 Intelligence Centre Phase 1 */
.performance-tabs{margin-bottom:8px;height:42px;align-items:center}.performance-tabs .admin-tab{padding:8px 18px}.performance-tabs{background:#f4f7fa}
.dashboard-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px}
.dashboard-grid .kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.dashboard-grid .kpi-grid article{background:#fff;border:1px solid #e7edf5;border-radius:12px;padding:18px}
.dashboard-grid .kpi-grid span{display:block;font-size:11px;color:#64748b;text-transform:uppercase}
.dashboard-grid .kpi-grid strong{font-size:28px;color:#1e293b}

/* TIRANA LIVE V0.17.4.31 COMPATIBILITY LAYOUT · PERFORMANCE CENTRE REBUILD */
.performance-centre-page{grid-template-rows:auto auto minmax(0,1fr)!important;gap:8px!important;overflow:hidden!important;background:#f4f7f9}
.performance-page-head{min-height:0!important;padding:10px 12px!important;align-items:center!important;border-left:4px solid var(--red);background:#fff}
.performance-page-head h2{font-size:18px!important;line-height:1.1;margin:2px 0 3px}
.performance-page-head p:not(.eyebrow){font-size:9px!important;margin:0;color:#667b89}
.performance-head-controls{display:grid;justify-items:end;gap:7px;min-width:470px}
.performance-context-badges{display:flex;justify-content:flex-end;gap:5px;flex-wrap:wrap}
.performance-range{display:flex;gap:6px;align-items:center}.performance-range .button{height:31px;min-width:62px;padding:0 11px;font-size:7px}.performance-range .button.primary{box-shadow:0 3px 8px rgba(215,38,61,.18)}
.performance-tabs{height:38px!important;margin:0!important;padding:4px 6px!important;border:1px solid #d8e2e8;border-radius:8px;background:#eef3f6!important;display:flex;gap:4px;overflow-x:auto;flex:0 0 auto}
.performance-tabs .admin-tab{height:28px!important;min-width:92px;padding:0 14px!important;font-size:7px!important;border-radius:7px!important;white-space:nowrap}
.performance-tabs .admin-tab.active{background:#153f5d!important;color:#fff!important;border-color:#153f5d!important;box-shadow:0 2px 6px rgba(21,63,93,.18)}
.performance-workspace{overflow:auto!important;padding:0 2px 8px 0;scrollbar-gutter:stable}.performance-workspace>.pc-view{display:grid;gap:9px;align-content:start;min-height:100%}.performance-workspace>.pc-view[hidden]{display:none!important}
.performance-kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.performance-kpi-grid article{min-width:0;border:1px solid #dbe5eb;border-radius:10px;background:#fff;padding:11px 12px;box-shadow:0 1px 2px rgba(21,56,78,.03)}.performance-kpi-grid article span{display:block;font-size:6.7px!important;font-weight:900;letter-spacing:.06em;color:#71828e}.performance-kpi-grid article strong{display:block;margin-top:4px;font-size:21px;line-height:1;color:#102f4d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.performance-kpi-grid article small{display:block;margin-top:5px;font-size:6.5px!important;color:#8a98a2;line-height:1.25}.performance-kpi-grid article.risk-kpi{border-left:3px solid var(--red)}
.performance-kpi-grid.compact{grid-template-columns:repeat(6,minmax(0,1fr))}.performance-kpi-grid.compact article{padding:10px}.performance-kpi-grid.compact article strong{font-size:18px}
.performance-overview-grid,.performance-two-col{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,.85fr);gap:9px}.performance-overview-grid .panel,.performance-two-col .panel,.performance-trend-card,.performance-route-preview,.performance-route-table-card{padding:11px!important;border-radius:10px!important;min-width:0}
.performance-live-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin-top:8px}.performance-live-metrics article{background:#f6f9fb;border:1px solid #e1e8ed;border-radius:8px;padding:8px}.performance-live-metrics span{display:block;font-size:6px;font-weight:900;letter-spacing:.04em;color:#758792}.performance-live-metrics strong{display:block;font-size:15px;color:#173b59;margin-top:3px}
.performance-condition{margin-top:8px;padding:8px 10px;border-left:3px solid #8fa4b2;border-radius:6px;background:#f7fafc;display:grid;gap:2px}.performance-condition.critical{border-left-color:#d7263d;background:#fff5f6}.performance-condition.watch{border-left-color:#e69b00;background:#fffaf0}.performance-condition.stable{border-left-color:#23975a;background:#f3fbf6}.performance-condition b{font-size:9px;color:#203d51}.performance-condition span{font-size:7px;color:#6d7e89;line-height:1.35}
.performance-insight-copy{display:grid;gap:7px;padding:10px 0 12px}.performance-insight-copy b{font-size:13px;line-height:1.25;color:#143a57}.performance-insight-copy p{margin:0;font-size:8.4px;line-height:1.5;color:#5f7483}.performance-insight-card .button{justify-self:start}
.performance-trend-chart{min-height:132px;display:flex;align-items:flex-end;gap:5px;padding:10px 6px 3px;overflow-x:auto;border-top:1px solid #edf1f4}.performance-trend-bar{flex:1 0 34px;min-width:28px;max-width:64px;height:112px;display:grid;grid-template-rows:1fr auto;gap:5px;align-items:end}.performance-trend-bar .bar-zone{height:100%;display:flex;align-items:flex-end;justify-content:center;border-bottom:1px solid #dbe4ea}.performance-trend-bar i{display:block;width:70%;min-height:2px;border-radius:4px 4px 1px 1px;background:#1f6d99}.performance-trend-bar.watch i{background:#e69b00}.performance-trend-bar.critical i{background:#d7263d}.performance-trend-bar label{font-size:6px;color:#748591;text-align:center;white-space:nowrap}.performance-trend-bar b{position:absolute;opacity:0;pointer-events:none}.performance-trend-chart .probe-empty{margin:auto}
.performance-table-wrap{width:100%;overflow:auto;max-height:340px;border:1px solid #e3eaef;border-radius:8px}.performance-table{width:100%;border-collapse:collapse;font-size:8px;background:#fff}.performance-table th{position:sticky;top:0;z-index:1;background:#f3f7f9;color:#657987;text-align:left;font-size:6.5px!important;letter-spacing:.04em;text-transform:uppercase;padding:8px 9px;border-bottom:1px solid #dbe5eb;white-space:nowrap}.performance-table td{padding:8px 9px;border-bottom:1px solid #edf2f5;color:#314b5d;white-space:nowrap}.performance-table tr:last-child td{border-bottom:0}.performance-table td.detail-cell{white-space:normal;min-width:240px;max-width:440px;line-height:1.35}.performance-route-name{font-weight:900;color:#123b59}.performance-status{display:inline-flex;align-items:center;border-radius:999px;padding:3px 7px;font-size:6px;font-weight:900;letter-spacing:.04em;background:#edf3f6;color:#607583}.performance-status.red,.performance-status.critical{background:#ffebee;color:#b22133}.performance-status.amber,.performance-status.watch{background:#fff3da;color:#a66d00}.performance-status.green,.performance-status.stable{background:#e8f7ee;color:#187b47}.performance-status.thin,.performance-status.info{background:#edf3f6;color:#607583}
.performance-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:2px 2px 0}.performance-section-head h3{font-size:15px!important;margin:2px 0}.performance-section-head p:not(.eyebrow){margin:3px 0 0;font-size:8px;line-height:1.4;color:#687d8a;max-width:780px}
.performance-issue-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.performance-issue-item{border:1px solid #e0e8ed;border-radius:8px;background:#f8fafb;padding:9px}.performance-issue-item span{display:block;font-size:6.2px;font-weight:900;color:#738591}.performance-issue-item strong{display:block;font-size:17px;color:#193d58;margin-top:3px}.performance-issue-item.has-risk{border-left:3px solid #d7263d;background:#fff7f7}
.performance-evidence-list{display:grid;gap:6px}.performance-evidence-row{display:grid;grid-template-columns:minmax(120px,1fr) auto;gap:12px;align-items:center;border-bottom:1px solid #edf1f4;padding:7px 2px}.performance-evidence-row:last-child{border-bottom:0}.performance-evidence-row span{font-size:7.5px;color:#637986}.performance-evidence-row b{font-size:8px;color:#163b57;text-align:right}
.performance-ai-question{display:grid;gap:5px;margin:8px 0}.performance-ai-question span{font-size:6.5px;font-weight:900;color:#71838e;letter-spacing:.05em}.performance-ai-question input{height:36px;border:1px solid #cfdbe2;border-radius:8px;background:#fff;padding:0 10px;font-size:9px;outline:none}.performance-ai-question input:focus{border-color:#2b709c;box-shadow:0 0 0 2px rgba(43,112,156,.09)}.performance-ai-result{margin-top:10px;min-height:120px;border:1px solid #e0e8ed;border-radius:8px;background:#f8fafc;padding:11px;font-size:8px;line-height:1.45;color:#4c6474}.performance-ai-result b{display:block;font-size:10px;color:#183e5b;margin:6px 0}.performance-ai-result p{margin:6px 0}.performance-ai-result ul{margin:6px 0 0;padding-left:16px}.performance-ai-result .ai-severity{font-size:6px}.performance-ai-result small{font-size:6.8px;color:#71828d}
@media(max-width:1200px){.performance-kpi-grid,.performance-kpi-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr))}.performance-live-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.performance-overview-grid,.performance-two-col{grid-template-columns:1fr}.performance-head-controls{min-width:0}}
@media(max-width:820px){.performance-centre-page{display:block!important}.performance-page-head{align-items:flex-start!important}.performance-head-controls{width:100%;justify-items:start}.performance-context-badges{justify-content:flex-start}.performance-range{width:100%;overflow-x:auto}.performance-kpi-grid,.performance-kpi-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.performance-live-metrics,.performance-issue-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.performance-workspace{overflow:visible!important}.performance-table-wrap{max-height:none}}

/* TIRANA LIVE V0.17.4.33 BUILD MARKER · PERFORMANCE COMMAND CENTRE + KM INTELLIGENCE */
.performance-centre-page{grid-template-rows:auto auto minmax(0,1fr)!important;gap:8px!important;padding:8px!important;background:#f2f6f8!important}
.performance-page-head{padding:10px 12px!important;min-height:72px!important;border-left:3px solid #e3272d!important}
.performance-workspace{padding:0!important;overflow:auto!important;min-height:0!important}
.pc-view{display:grid;gap:8px;align-content:start!important;padding-bottom:8px}.pc-view[hidden]{display:none!important}
.performance-kpi-grid.v32-top-kpis,.performance-kpi-grid.v32-km-kpis{grid-template-columns:repeat(8,minmax(0,1fr))!important}
.performance-kpi-grid.v32-top-kpis article,.performance-kpi-grid.v32-km-kpis article{padding:10px 11px!important;min-height:68px}
.performance-kpi-grid.v32-top-kpis article strong,.performance-kpi-grid.v32-km-kpis article strong{font-size:19px!important}
.performance-service-progress-card{padding:10px 12px!important}.performance-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.performance-progress-head h3{margin:2px 0 0;font-size:13px}.performance-progress-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.performance-progress-grid>div{display:grid;grid-template-columns:1fr auto;gap:5px 10px;align-items:center}.performance-progress-grid span{font-size:7px;font-weight:900;letter-spacing:.08em;color:#687d8a}.performance-progress-grid b{font-size:12px;color:#102f4d}.performance-progress-track{grid-column:1/-1;height:7px;border-radius:99px;background:#e5edf2;overflow:hidden}.performance-progress-track i{display:block;height:100%;width:0;border-radius:99px;background:#0c476d;transition:width .25s ease}
.performance-quality-strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.performance-quality-strip article{border:1px solid #d9e4ea;background:#fff;border-radius:9px;padding:8px 10px;min-height:55px}.performance-quality-strip article span{display:block;font-size:6.5px;font-weight:900;letter-spacing:.07em;color:#71828e}.performance-quality-strip article strong{display:block;margin-top:4px;font-size:16px;color:#102f4d}.performance-quality-strip article small{display:block;margin-top:2px;font-size:6.2px!important;color:#8a98a2}
.v32-overview-lower{grid-template-columns:.82fr 1.18fr!important}.v32-km-lower{grid-template-columns:1.25fr .75fr!important}.performance-trend-card,.performance-route-preview{min-height:185px!important}.performance-trend-chart{min-height:120px!important;height:120px!important}.performance-trend-bar small{display:block;text-align:center;font-size:6px;color:#71828e;margin-top:1px}.compact-route-table{max-height:152px!important}.route-deep-table{max-height:calc(100vh - 250px)!important;min-height:300px}.issue-deep-table{max-height:calc(100vh - 350px)!important;min-height:260px}
.performance-route-table-panel{padding:8px!important}.performance-table{font-size:8px!important}.performance-table th{font-size:6.2px!important;white-space:nowrap;padding:8px!important}.performance-table td{padding:7px 8px!important;white-space:nowrap}.performance-table .detail-cell{white-space:normal;min-width:180px;max-width:340px}.metric-risk-text{color:#c51f27}
.performance-section-head{margin:0!important;padding:2px 4px!important}.performance-section-head p:not(.eyebrow){font-size:7px!important;color:#72838d;margin-top:2px}.performance-two-col{gap:8px!important}.performance-issue-grid{gap:7px!important}.performance-issue-item{min-height:55px!important}.performance-evidence-row{padding:8px 0!important}
.performance-command-card,.performance-insight-card{min-height:142px!important}.performance-overview-grid{grid-template-columns:1.35fr .65fr!important}
@media(max-width:1450px){.performance-kpi-grid.v32-top-kpis,.performance-kpi-grid.v32-km-kpis{grid-template-columns:repeat(4,minmax(0,1fr))!important}.performance-quality-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.v32-overview-lower,.v32-km-lower{grid-template-columns:1fr!important}}
@media(max-width:900px){.performance-kpi-grid.v32-top-kpis,.performance-kpi-grid.v32-km-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}.performance-quality-strip,.performance-progress-grid{grid-template-columns:1fr 1fr}.performance-overview-grid{grid-template-columns:1fr!important}}
/* V0.17.4.33 READABILITY TUNING · performance-only typography */
.performance-centre-page .eyebrow{font-size:8px!important;letter-spacing:.12em!important}
.performance-centre-page .performance-page-head h2{font-size:20px!important;line-height:1.12!important}
.performance-centre-page .performance-page-head p:not(.eyebrow){font-size:8.5px!important;line-height:1.35!important}
.performance-centre-page .performance-tabs .admin-tab{font-size:8px!important;min-height:30px!important}
.performance-centre-page .performance-range .button{font-size:8px!important;min-height:32px!important}
.performance-centre-page .performance-kpi-grid.v32-top-kpis article>span,
.performance-centre-page .performance-kpi-grid.v32-km-kpis article>span{font-size:7.5px!important}
.performance-centre-page .performance-kpi-grid.v32-top-kpis article>small,
.performance-centre-page .performance-kpi-grid.v32-km-kpis article>small{font-size:7px!important}
.performance-centre-page .performance-quality-strip article span{font-size:7.3px!important}
.performance-centre-page .performance-quality-strip article small{font-size:6.8px!important}
.performance-centre-page .performance-live-metrics span{font-size:7px!important}
.performance-centre-page .performance-condition span{font-size:7.8px!important}
.performance-centre-page .performance-progress-grid span{font-size:7.5px!important}
.performance-centre-page .performance-table{font-size:9px!important}
.performance-centre-page .performance-table th{font-size:7px!important;padding:8px 9px!important}
.performance-centre-page .performance-table td{font-size:9px!important;padding:8px 9px!important}
.performance-centre-page .performance-section-head h3{font-size:15px!important}
.performance-centre-page .performance-section-head p:not(.eyebrow){font-size:8px!important;line-height:1.4!important}
.performance-centre-page .performance-issue-item span{font-size:7.2px!important}
.performance-centre-page .performance-evidence-row span{font-size:8px!important}
.performance-centre-page .performance-evidence-row b{font-size:8.5px!important}

/* TIRANA LIVE V0.17.4.35 BUILD MARKER · STATE-OF-THE-ART PERFORMANCE CENTRE · COMMAND + NETWORK + AI */
.performance-centre-v34{display:none!important;padding:10px 12px 12px!important;overflow:hidden!important;background:#f5f8fa!important}.performance-centre-v34.active{display:block!important}
.performance-centre-v34 .pc-v34-shell{height:100%;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:8px}
.pc-v34-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:11px 14px;border:1px solid #dfe8ed;border-left:3px solid #e32931;border-radius:12px;background:#fff;box-shadow:0 1px 2px rgba(15,45,64,.025)}
.pc-v34-title{min-width:0}.pc-v34-title .eyebrow{margin:0 0 3px!important;color:#667d8d}.pc-v34-title-row{display:flex;align-items:center;gap:8px}.pc-v34-title h2{font-size:19px!important;line-height:1.05;margin:0!important;color:#102b40}.pc-v34-title p:not(.eyebrow){font-size:7.5px!important;color:#758794;margin:4px 0 0!important;line-height:1.35}.pc-live-dot{font-size:6px;font-weight:950;letter-spacing:.08em;color:#178849;background:#e9f7ee;border:1px solid #ceeada;border-radius:999px;padding:4px 7px}
.pc-v34-header-actions{display:grid;justify-items:end;gap:7px}.pc-v34-range{display:flex;gap:6px}.pc-v34-range .button{height:31px!important;min-width:61px!important;border-radius:8px!important;font-size:7px!important;font-weight:900!important;letter-spacing:.03em}
.pc-v34-tabs{display:flex;gap:6px;padding:5px;border:1px solid #dbe5eb;border-radius:10px;background:#eef3f6;overflow-x:auto}.pc-v34-tab{min-width:190px;height:42px;padding:6px 12px;border:1px solid transparent;border-radius:8px;background:transparent;color:#526a7a;display:grid;grid-template-columns:24px 1fr;grid-template-rows:auto auto;column-gap:7px;align-items:center;text-align:left;cursor:pointer}.pc-v34-tab>span{grid-row:1/3;width:24px;height:24px;border-radius:7px;display:grid;place-items:center;background:#f7fafb;color:#57768b;font-size:13px}.pc-v34-tab b{font-size:7.8px;letter-spacing:.04em}.pc-v34-tab small{font-size:6.4px;color:#8a9aa5}.pc-v34-tab.active{background:#fff;color:#103c5a;border-color:#cfdde5;box-shadow:0 2px 7px rgba(17,56,82,.08)}.pc-v34-tab.active>span{background:#e9f1f7;color:#0e4d76}.pc-v34-workspace{min-height:0!important;overflow:auto!important;padding:0!important;scrollbar-gutter:stable}.pc-v34-workspace>.pc-view{display:grid;gap:9px;align-content:start;min-height:100%;padding:0 2px 8px 0}.pc-v34-workspace>.pc-view[hidden]{display:none!important}

/* Command centre */
.pc-hero-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.pc-hero-card{position:relative;min-width:0;min-height:120px;border:1px solid #dce6ec;border-radius:12px;background:#fff;padding:14px 14px 12px;box-shadow:0 1px 2px rgba(18,51,72,.025);overflow:hidden}.pc-hero-card>div:first-child{padding-right:54px}.pc-hero-card span{display:block;font-size:7px;font-weight:900;letter-spacing:.075em;color:#637887}.pc-hero-card strong{display:block;margin-top:6px;font-size:30px;line-height:1;color:#0d4d78}.pc-hero-card small{display:block;margin-top:5px;font-size:7.2px;color:#7b8d98}.pc-hero-card .pc-hero-icon{position:absolute;right:15px;top:14px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#edf4ff;color:#1d68ba;font-size:19px;font-weight:900}.pc-hero-card footer{display:flex;justify-content:space-between;gap:12px;margin-top:15px;padding-top:9px;border-top:1px solid #eef2f5}.pc-hero-card footer span{font-size:6.5px;font-weight:700;color:#758793;letter-spacing:0}.pc-hero-card footer b{font-size:10px;color:#17394f}.pc-hero-card.loss strong,.pc-hero-card.risk strong{color:#d61f34}.pc-hero-card.loss .pc-hero-icon,.pc-hero-card.risk .pc-hero-icon{background:#fff0f2;color:#d61f34}.pc-hero-card.fleet strong{color:#16844b}.pc-hero-card.fleet .pc-hero-icon{background:#ecf8f0;color:#16844b}.pc-card-progress{position:absolute;left:14px;right:14px;bottom:9px;height:4px;border-radius:99px;background:#e8eef2;overflow:hidden}.pc-card-progress i{display:block;height:100%;width:0;border-radius:99px;background:#1865b0;transition:width .25s ease}.pc-hero-card.fleet .pc-card-progress i{background:#1f9b59}
.pc-service-day-card{display:grid;grid-template-columns:175px minmax(0,1fr) 135px;align-items:center;gap:18px;padding:12px 16px!important;border-radius:12px!important}.pc-service-day-label{display:flex;gap:10px;align-items:center}.pc-service-day-label>span{width:28px;height:28px;border-radius:8px;background:#edf4fb;display:grid;place-items:center;color:#1c6194}.pc-service-day-label b{display:block;font-size:7px;letter-spacing:.06em;color:#536d7e}.pc-service-day-label small{display:block;margin-top:3px;font-size:7px;color:#7b8d98}.pc-service-track{display:grid;grid-template-columns:110px minmax(65px,1fr) 110px minmax(65px,1fr) 110px;align-items:start}.pc-service-stage{position:relative;text-align:center}.pc-service-stage>i{display:block;width:18px;height:18px;border-radius:50%;margin:0 auto 5px;background:#1965b4;border:4px solid #e7f0fb;box-shadow:0 0 0 1px #9fc1e6}.pc-service-stage.delivered>i{background:#1c9957;border-color:#e8f6ee;box-shadow:0 0 0 1px #a8d5bc}.pc-service-stage span{font-size:6.5px;font-weight:900;letter-spacing:.06em;color:#557184}.pc-service-stage b{display:block;font-size:11px;color:#143a54;margin-top:3px}.pc-service-stage small{font-size:6.2px;color:#8a99a3}.pc-service-line{height:4px;background:#dce7ef;margin-top:8px;position:relative;overflow:hidden}.pc-service-line i{display:block;height:100%;width:0;background:#1b65b0}.pc-service-line.delivered i{background:#259458}.pc-overall-delivery{border-left:1px solid #e3eaef;padding-left:15px}.pc-overall-delivery span{font-size:6.2px;font-weight:900;letter-spacing:.06em;color:#687e8c}.pc-overall-delivery strong{display:block;font-size:22px;color:#123d5b;margin-top:4px}.pc-overall-delivery small{font-size:6.4px;color:#80919b}
.pc-command-grid{display:grid;grid-template-columns:minmax(350px,1.15fr) minmax(320px,1fr) minmax(280px,.78fr) minmax(260px,.76fr);gap:9px}.pc-command-grid>.panel{padding:12px!important;border-radius:12px!important;min-width:0;min-height:310px}.pc-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.pc-card-head h3{font-size:12px!important;margin:2px 0 0!important;color:#12344e}.pc-card-head p:not(.eyebrow){font-size:6.7px!important;color:#7b8c96;margin:3px 0 0!important;line-height:1.35}.pc-link-button{border:1px solid #cfdae1;background:#fff;border-radius:7px;padding:6px 8px;font-size:6.3px;font-weight:900;color:#1a567e;cursor:pointer;white-space:nowrap}.pc-mini-table-head,.pc-attention-row{display:grid;grid-template-columns:30px 1fr 75px 68px 65px 50px;gap:6px;align-items:center}.pc-mini-table-head{margin-top:9px;padding:7px 6px;border-bottom:1px solid #dce5eb;background:#f4f7f9;border-radius:7px 7px 0 0}.pc-mini-table-head span{font-size:5.7px;font-weight:900;color:#718491}.pc-attention-row{padding:8px 6px;border-bottom:1px solid #edf2f5}.pc-attention-row:last-child{border-bottom:0}.pc-attention-row>span,.pc-attention-row>b{font-size:7.5px;color:#355063}.pc-attention-row .rank{width:22px;height:22px;border-radius:6px;background:#f4f7f9;display:grid;place-items:center;font-weight:900}.pc-attention-row .route{font-weight:950;color:#0f466c}.pc-attention-row .trend{font-size:13px;color:#dd3343;letter-spacing:-2px}.pc-live-map{height:230px;border:1px solid #e1e8ed;border-radius:9px;overflow:hidden;background:linear-gradient(135deg,#f6f9fb,#eef4f7);margin-top:9px}.pc-live-map .leaflet-control-attribution{font-size:7px!important}.pc-live-map .leaflet-control-zoom a{width:24px;height:24px;line-height:24px}.pc-map-legend{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding-top:8px}.pc-map-legend span{display:flex;align-items:center;gap:5px;font-size:6.4px;color:#657c8b}.pc-map-legend i,.pc-trend-legend i{width:7px;height:7px;border-radius:50%;display:inline-block}.pc-map-legend i.critical{background:#e52b3b}.pc-map-legend i.watch{background:#eba310}.pc-map-legend i.stable{background:#25a15c}.pc-map-legend i.thin{background:#98a8b2}.pc-priority-list{margin-top:8px;display:grid}.pc-priority-row{display:grid;grid-template-columns:55px 1fr 70px 70px;gap:7px;align-items:center;padding:9px 3px;border-bottom:1px solid #edf2f5}.pc-priority-row:last-child{border-bottom:0}.pc-priority-row b{font-size:8px;color:#0c466c}.pc-priority-row span{font-size:7px;color:#5f7584}.pc-priority-row .lost{font-weight:900;color:#cc2838}.pc-ai-summary-lead{display:grid;grid-template-columns:36px 1fr;gap:9px;margin-top:10px;padding:9px;border-radius:9px;background:#faf7ff}.pc-ai-summary-icon{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:#efe8ff;color:#7251c9;font-size:8px;font-weight:950}.pc-ai-summary-lead b{font-size:9px;line-height:1.25;color:#203b50}.pc-ai-summary-lead p{margin:4px 0 0;font-size:7px;line-height:1.45;color:#6e7f8b}.pc-ai-highlight-list{display:grid;gap:1px;margin:8px 0}.pc-ai-highlight{padding:8px 2px;border-bottom:1px solid #edf1f4}.pc-ai-highlight:last-child{border-bottom:0}.pc-ai-highlight b{display:block;font-size:8px;color:#1c4059}.pc-ai-highlight small{display:block;margin-top:3px;font-size:6.6px;line-height:1.35;color:#788a95}.pc-command-quality{grid-template-columns:repeat(7,minmax(0,1fr))!important}.pc-command-quality article{min-height:52px!important;padding:8px 9px!important}.pc-command-quality article strong{font-size:14px!important}

/* Network performance */
.pc-section-banner{display:flex;justify-content:space-between;gap:12px;align-items:flex-end;padding:2px 2px 0}.pc-section-banner h3{font-size:16px!important;margin:2px 0!important}.pc-section-banner p:not(.eyebrow){font-size:7.2px;color:#728591;margin:2px 0 0}.pc-section-controls{display:flex;gap:6px}.pc-network-kpis{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.pc-network-kpis article{border:1px solid #dbe5eb;border-radius:10px;background:#fff;padding:11px 12px;min-height:72px}.pc-network-kpis article span{display:block;font-size:6.5px;font-weight:900;letter-spacing:.07em;color:#687d8a}.pc-network-kpis article strong{display:block;margin-top:5px;font-size:18px;color:#123b59}.pc-network-kpis article small{display:block;margin-top:5px;font-size:6.3px;color:#8797a1}.pc-network-kpis article.loss{border-left:3px solid #df2f3d}.pc-network-kpis article.loss strong{color:#cc2434}.pc-supply-flow-card{display:grid;grid-template-columns:1fr 1px 1fr;gap:18px;padding:13px 16px!important;border-radius:12px!important}.pc-flow-divider{background:#e1e8ed}.pc-flow-group>b{display:block;text-align:center;font-size:6.5px;letter-spacing:.11em;color:#607888;margin-bottom:8px}.pc-flow-row{display:grid;grid-template-columns:1fr 14px 1fr 14px 1fr 14px 1fr;align-items:stretch}.pc-flow-row>em{display:grid;place-items:center;font-style:normal;color:#82949f;font-size:13px}.pc-flow-step{padding:11px 8px;border-radius:8px;text-align:center;clip-path:polygon(0 8%,94% 0,100% 50%,94% 100%,0 92%,6% 50%)}.pc-flow-step span{display:block;font-size:5.8px;font-weight:900;letter-spacing:.05em;color:#557184}.pc-flow-step strong{display:block;margin-top:5px;font-size:15px;color:#123c5a}.pc-flow-step.planned{background:#eaf3ff}.pc-flow-step.due{background:#f0f5f8}.pc-flow-step.operated{background:#eaf7ef}.pc-flow-step.lost{background:#fff0f2}.pc-flow-step.lost strong{color:#d42c3c}.pc-flow-delivery{display:flex;justify-content:center;gap:8px;align-items:center;margin-top:9px;padding-top:7px;border-top:1px solid #e3eaef}.pc-flow-delivery span{font-size:6.2px;font-weight:900;color:#647d8c}.pc-flow-delivery b{font-size:13px;color:#0d4c76}.pc-network-grid{display:grid;grid-template-columns:minmax(520px,1.35fr) minmax(280px,.72fr) minmax(300px,.78fr);gap:9px;align-items:stretch}.pc-network-grid>.panel{padding:11px!important;border-radius:12px!important;min-width:0}.pc-network-route-card{grid-row:span 2;min-height:420px}.pc-route-filter-chips{display:flex;gap:4px;flex-wrap:wrap}.pc-route-filter-chips button{border:1px solid #dae3e9;background:#f7f9fb;color:#6a7f8d;border-radius:999px;padding:5px 7px;font-size:5.8px;font-weight:900;cursor:pointer}.pc-route-filter-chips button.active{background:#173f5c;color:#fff;border-color:#173f5c}.pc-network-route-table{margin-top:8px;border:1px solid #e1e8ed;border-radius:9px;overflow:auto;max-height:410px}.pc-network-table-head,.pc-network-route-row{display:grid;grid-template-columns:26px 52px 90px 68px 60px 75px minmax(110px,1fr) 70px;gap:6px;align-items:center;padding:8px 8px}.pc-network-table-head{position:sticky;top:0;z-index:2;background:#f3f7f9;border-bottom:1px solid #dbe5eb}.pc-network-table-head span{font-size:5.7px;font-weight:900;color:#667c89}.pc-network-route-row{border-bottom:1px solid #edf2f5;background:#fff}.pc-network-route-row:last-child{border-bottom:0}.pc-network-route-row span,.pc-network-route-row b{font-size:7.1px;color:#4b6475}.pc-network-route-row .rank{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:#f3f6f8;font-size:6.2px;font-weight:900}.pc-network-route-row .route{font-weight:950;color:#0c466c}.pc-delivery-meter{display:grid;grid-template-columns:1fr 35px;gap:5px;align-items:center}.pc-delivery-meter i{height:5px;border-radius:99px;background:#e3ece8;overflow:hidden;position:relative}.pc-delivery-meter i:after{content:"";position:absolute;inset:0 auto 0 0;width:var(--value,0%);background:#29985b;border-radius:99px}.pc-delivery-meter b{font-size:6.8px}.pc-hbar-chart{display:grid;gap:7px;margin-top:10px}.pc-hbar-row{display:grid;grid-template-columns:46px minmax(80px,1fr) 56px;gap:7px;align-items:center}.pc-hbar-row b{font-size:7px;color:#173d58}.pc-hbar-track{height:8px;border-radius:99px;background:#eef2f5;overflow:hidden}.pc-hbar-track i{display:block;height:100%;width:var(--bar,0%);border-radius:99px;background:#d72b3b}.pc-hbar-row span{font-size:6.7px;text-align:right;color:#526a79}.pc-trend-legend{display:flex;gap:10px;margin:9px 0 3px}.pc-trend-legend span{font-size:6px;color:#687d8a;display:flex;align-items:center;gap:4px}.pc-trend-legend i.scheduled{background:#2d6fb0}.pc-trend-legend i.operated{background:#2e995b}.pc-trend-legend i.lost{background:#db2f3e}.pc-daily-bars{height:190px;display:flex;align-items:flex-end;gap:9px;padding:8px 4px 2px;border-bottom:1px solid #dfe6eb;overflow-x:auto}.pc-daily-group{min-width:40px;flex:1;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr auto;gap:2px 3px;height:100%;align-items:end;position:relative}.pc-daily-group i{display:block;border-radius:4px 4px 1px 1px;min-height:2px}.pc-daily-group .scheduled{background:#2870b4;height:var(--scheduled)}.pc-daily-group .operated{background:#2f9b5c;height:var(--operated)}.pc-daily-group .lost-dot{position:absolute;left:50%;bottom:var(--lost);width:6px;height:6px;border-radius:50%;border:2px solid #fff;background:#d62c3c;box-shadow:0 0 0 1px #d62c3c}.pc-daily-group label{grid-column:1/3;text-align:center;font-size:5.8px;color:#748793;white-space:nowrap}.pc-hotspot-card .pc-live-map{height:240px}.pc-health-donut-wrap,.pc-donut-layout{display:flex;align-items:center;justify-content:center;gap:18px;min-height:210px}.pc-donut{width:142px;height:142px;border-radius:50%;position:relative;display:grid;place-items:center;align-content:center;background:conic-gradient(#e4e9ed 0 100%)}.pc-donut:after{content:"";position:absolute;inset:23px;border-radius:50%;background:#fff}.pc-donut b,.pc-donut span{position:relative;z-index:1}.pc-donut b{font-size:22px;color:#173b56}.pc-donut span{font-size:7px;color:#70838f}.pc-donut-legend{display:grid;gap:8px;min-width:120px}.pc-donut-legend span{display:grid;grid-template-columns:8px 1fr auto;gap:6px;align-items:center;font-size:6.7px;color:#607887}.pc-donut-legend i{width:8px;height:8px;border-radius:2px}.pc-donut-legend b{font-size:6.8px;color:#17394f}

/* AI intelligence */
.pc-ai-brief-header{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px 14px;border:1px solid #dce6ec;border-radius:12px;background:#fff}.pc-ai-badge{width:38px;height:38px;border-radius:9px;display:grid;place-items:center;background:#e82b38;color:#fff;font-size:10px;font-weight:950;box-shadow:0 5px 12px rgba(216,41,57,.14)}.pc-ai-brief-header h3{margin:1px 0 0!important;font-size:16px!important}.pc-ai-brief-header p:not(.eyebrow){font-size:7.4px;color:#70828e;margin:4px 0 0!important}.pc-ai-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.pc-ai-kpis article{background:#fff;border:1px solid #dce5eb;border-radius:10px;padding:11px 12px}.pc-ai-kpis span{display:block;font-size:6.4px;font-weight:900;letter-spacing:.06em;color:#6a7e8b}.pc-ai-kpis strong{display:block;font-size:18px;color:#173b57;margin-top:5px}.pc-ai-kpis article:nth-child(-n+4) strong{color:#cc2a39}.pc-ai-kpis small{display:block;font-size:6.2px;color:#8797a0;margin-top:4px}.pc-ai-recommendations{padding:3px 0}.pc-ai-prompt-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:8px}.pc-ai-prompt-grid button{border:1px solid #dce6ec;border-radius:10px;background:#fff;padding:11px;text-align:left;cursor:pointer;min-height:105px;display:flex;flex-direction:column;align-items:flex-start;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.pc-ai-prompt-grid button:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(15,55,82,.07);border-color:#bbcedb}.pc-ai-prompt-grid span{font-size:7px;font-weight:950;color:#24465e}.pc-ai-prompt-grid small{font-size:6.6px;color:#7b8d98;line-height:1.4;margin-top:7px}.pc-ai-prompt-grid b{font-size:6.3px;color:#1764a1;margin-top:auto;padding-top:10px}.pc-ai-grid-v34{display:grid;grid-template-columns:minmax(250px,.8fr) minmax(270px,.9fr) minmax(170px,.45fr) minmax(230px,.65fr) minmax(300px,.9fr);gap:9px;align-items:stretch}.pc-ai-grid-v34>.panel{padding:11px!important;border-radius:12px!important;min-width:0;min-height:280px}.pc-risk-stack{display:grid;gap:9px;margin-top:12px}.pc-risk-stack article{border-radius:10px;padding:13px;display:grid;gap:3px}.pc-risk-stack article.critical{background:#fff1f3;border:1px solid #ffd3d9}.pc-risk-stack article.watch{background:#fff8e7;border:1px solid #f6e0aa}.pc-risk-stack strong{font-size:24px;color:#d52b3b}.pc-risk-stack article.watch strong{color:#cc8600}.pc-risk-stack span{font-size:8px;font-weight:900;color:#334f61}.pc-risk-stack small{font-size:6.4px;color:#7d8e98}.pc-ai-assistant{display:flex;flex-direction:column}.pc-ai-assistant>p{font-size:7px;line-height:1.45;color:#6d808c;margin:9px 0}.pc-ai-suggestions{display:grid;gap:6px;margin-bottom:9px}.pc-ai-suggestions button{border:1px solid #dce4ea;border-radius:8px;background:#fff;padding:7px 8px;font-size:6.7px;color:#4c6677;text-align:left;cursor:pointer}.pc-ai-suggestions button:hover{border-color:#aebfca;background:#f8fafc}.performance-centre-v34 .performance-ai-question{display:grid;gap:5px;margin-top:auto}.performance-centre-v34 .performance-ai-question textarea{width:100%;resize:vertical;min-height:58px;border:1px solid #cfdbe2;border-radius:8px;background:#fff;padding:8px 9px;font:inherit;font-size:7px;line-height:1.4;color:#29485b;outline:none}.performance-centre-v34 .performance-ai-question textarea:focus{border-color:#2b709c;box-shadow:0 0 0 2px rgba(43,112,156,.09)}.performance-centre-v34 .performance-ai-result{min-height:72px;max-height:215px;overflow:auto;background:#f9fbfc}.pc-issue-evidence-card{padding:11px!important;border-radius:12px!important}.pc-issue-table{font-size:8px!important}.pc-issue-table th{font-size:6px!important}.pc-v34-compat-data{display:none!important}

/* State badges and compact risk */
.pc-risk-pill{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:3px 7px;font-size:5.7px;font-weight:950;letter-spacing:.03em;white-space:nowrap}.pc-risk-pill.critical{background:#ffe9ec;color:#c42133}.pc-risk-pill.watch{background:#fff2d7;color:#a96e00}.pc-risk-pill.stable{background:#e7f6ed;color:#167945}.pc-risk-pill.thin{background:#edf2f5;color:#687e8c}

@media(max-width:1500px){.pc-command-grid{grid-template-columns:1fr 1fr}.pc-command-grid>.panel{min-height:285px}.pc-network-grid{grid-template-columns:1.2fr .8fr}.pc-network-route-card{grid-row:span 3}.pc-health-summary-card{grid-column:2}.pc-ai-grid-v34{grid-template-columns:repeat(3,minmax(0,1fr))}.pc-ai-assistant{grid-column:3;grid-row:1/3}.pc-ai-prompt-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.pc-network-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1120px){.pc-hero-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-service-day-card{grid-template-columns:1fr}.pc-overall-delivery{border-left:0;border-top:1px solid #e3eaef;padding:9px 0 0}.pc-command-grid,.pc-network-grid{grid-template-columns:1fr}.pc-command-grid>.panel{min-height:0}.pc-network-route-card{grid-row:auto}.pc-health-summary-card{grid-column:auto}.pc-network-kpis,.pc-ai-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.pc-supply-flow-card{grid-template-columns:1fr}.pc-flow-divider{height:1px}.pc-command-quality{grid-template-columns:repeat(4,minmax(0,1fr))!important}.pc-ai-grid-v34{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-ai-assistant{grid-column:auto;grid-row:auto}.pc-ai-prompt-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.performance-centre-v34{padding:7px!important;overflow:visible!important}.pc-v34-shell{display:block!important}.pc-v34-header{align-items:flex-start;flex-direction:column}.pc-v34-header-actions{justify-items:start;width:100%}.pc-v34-range{width:100%;overflow-x:auto}.pc-v34-tabs{margin:7px 0}.pc-v34-tab{min-width:155px}.pc-v34-workspace{overflow:visible!important}.pc-hero-kpis,.pc-network-kpis,.pc-ai-kpis,.pc-ai-grid-v34,.pc-ai-prompt-grid{grid-template-columns:1fr}.pc-command-grid{grid-template-columns:1fr}.pc-service-track{grid-template-columns:1fr}.pc-service-line{height:28px;width:4px;margin:0 auto}.pc-service-stage{margin:5px 0}.pc-flow-row{grid-template-columns:1fr}.pc-flow-row>em{transform:rotate(90deg);height:16px}.pc-flow-step{clip-path:none}.pc-command-quality{grid-template-columns:repeat(2,minmax(0,1fr))!important}.pc-network-table-head,.pc-network-route-row{min-width:700px}.pc-mini-table-head,.pc-attention-row{min-width:520px}.pc-attention-table{overflow:auto}}
/* TIRANA LIVE V0.17.4.35 BUILD MARKER · PERFORMANCE COMMAND CENTRE + KM INTELLIGENCE */

/* TIRANA LIVE V0.17.4.35 BUILD MARKER · PERFORMANCE INTERACTIVE FILTERS */
.pc-focus-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px!important;border-radius:12px!important}.pc-focus-copy{display:grid;gap:2px}.pc-focus-copy strong{font-size:10px;color:#12344e;letter-spacing:.04em}.pc-focus-copy small{font-size:7px;color:#708490}.pc-focus-chips{display:flex;gap:7px;flex-wrap:wrap;align-items:center}.pc-focus-chip{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border-radius:999px;border:1px solid #d5e0e7;background:#f7fafc;color:#355369;font-size:6.5px;font-weight:900;letter-spacing:.04em}.pc-focus-chip.active{background:#eef5ff;border-color:#bfd3ea;color:#154f79}.pc-focus-chip.clear{background:#fff0f2;border-color:#f0c8cf;color:#b32538;cursor:pointer}.pc-clickable{cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.pc-clickable:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(16,47,73,.08)}.pc-clickable:active{transform:translateY(0)}.pc-attention-row.pc-clickable:hover,.pc-priority-row.pc-clickable:hover,.pc-network-route-row.pc-clickable:hover,.pc-hbar-row.pc-clickable:hover,.performance-issue-item.pc-clickable:hover,.pc-issue-table tr.pc-clickable:hover{background:#f8fbfd}.pc-issue-table tr.pc-clickable{cursor:pointer}.pc-analyse-card{position:relative}
@media(max-width:1120px){.pc-focus-toolbar{flex-direction:column;align-items:flex-start}}

/* V0.17.4.35 PERFORMANCE DASHBOARD */
.pc-dashboard-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:4px 2px 2px}.pc-dashboard-head h3{font-size:17px;margin:2px 0;color:#12344e}.pc-dashboard-head p:not(.eyebrow){font-size:8px;color:#708490;margin:3px 0}.pc-dashboard-kpis{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-top:7px}.pc-dashboard-kpi{position:relative;min-height:92px;background:#fff;border:1px solid #dbe5eb;border-radius:11px;padding:11px;display:grid;align-content:start;gap:4px}.pc-dashboard-kpi span{font-size:6px;font-weight:950;letter-spacing:.08em;color:#5f7787}.pc-dashboard-kpi strong{font-size:17px;color:#123c5c}.pc-dashboard-kpi small{font-size:6.2px;color:#81919b}.pc-dashboard-kpi em{font-style:normal;font-size:5.6px;font-weight:900;color:#2c6f9d;margin-top:auto;opacity:.65}.pc-dashboard-kpi:hover{border-color:#9cc4df}.pc-dashboard-grid{display:grid;grid-template-columns:1.2fr .9fr;gap:9px;margin-top:9px}.pc-dashboard-grid>.panel{padding:12px!important;border-radius:12px!important;min-width:0}.pc-dashboard-trend-chart{display:grid;gap:6px;margin-top:8px}.pc-dashboard-trend-row{display:grid;grid-template-columns:70px repeat(3,1fr);gap:8px;padding:8px;border-bottom:1px solid #edf2f5;font-size:7px}.pc-dashboard-trend-row b{color:#174d72}.pc-dashboard-route-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:9px}.pc-dashboard-route-kpis article{border:1px solid #e1e8ed;background:#f8fafb;border-radius:8px;padding:8px}.pc-dashboard-route-kpis span{display:block;font-size:5.7px;font-weight:900;color:#6f8290}.pc-dashboard-route-kpis strong{display:block;margin-top:3px;font-size:12px;color:#123f5f}.pc-dashboard-route-issues{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:7px}.pc-dashboard-route-list{display:grid;margin-top:8px}.pc-dashboard-route-row{display:grid;grid-template-columns:70px 1fr 1fr 1fr 80px;gap:8px;align-items:center;padding:8px;border-bottom:1px solid #edf2f5;font-size:7px}.pc-dashboard-route-row b{color:#114c73}.pc-dashboard-shortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:9px}.pc-dashboard-shortcuts button{border:1px solid #dbe5eb;background:#fff;border-radius:9px;padding:10px;text-align:left;cursor:pointer}.pc-dashboard-shortcuts button:hover{border-color:#9cc4df;background:#f8fbfd}.pc-dashboard-shortcuts b{display:block;font-size:8px;color:#174d72}.pc-dashboard-shortcuts small{display:block;margin-top:4px;font-size:6.5px;color:#6e8290}
@media(max-width:1300px){.pc-dashboard-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:900px){.pc-dashboard-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-dashboard-grid{grid-template-columns:1fr}.pc-dashboard-route-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* TIRANA LIVE V0.17.4.35 HOTFIX2 · OVERLAP + DISTINCT PERFORMANCE DASHBOARD */
.pc-focus-toolbar{align-items:flex-start;flex-wrap:wrap;gap:14px;padding:14px 16px!important;min-height:74px;margin:8px 0 12px;overflow:visible}.pc-focus-toolbar .button{margin-left:auto}.pc-focus-copy{min-width:280px;max-width:640px}.pc-focus-copy strong{font-size:11px;line-height:1.15}.pc-focus-copy .eyebrow{margin-bottom:2px}.pc-focus-copy small{font-size:7.3px;line-height:1.35}.pc-focus-chips{flex:1 1 320px;justify-content:flex-end}.pc-focus-toolbar > *{position:relative;z-index:1}.pc-section-banner,.pc-dashboard-head{margin-top:2px}
.pc-performance-dashboard{display:grid;gap:10px}.pc-performance-dashboard .pc-dashboard-head{padding:14px 16px;border:1px solid #d6e2ea;border-radius:14px;background:linear-gradient(180deg,#f9fcfe 0%,#f2f7fb 100%);box-shadow:0 6px 20px rgba(16,47,73,.04)}.pc-dashboard-head h3{font-size:18px}.pc-dashboard-head p:not(.eyebrow){max-width:760px;line-height:1.45}.pc-dashboard-kpis{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:9px;margin-top:2px}.pc-dashboard-kpi{grid-column:span 2;position:relative;min-height:96px;background:#fff;border:1px solid #dbe5eb;border-radius:12px;padding:12px;display:grid;align-content:start;gap:5px;box-shadow:0 2px 8px rgba(16,47,73,.03)}.pc-dashboard-kpi.major{grid-column:span 3;min-height:112px;padding:14px}.pc-dashboard-kpi span{font-size:6px;font-weight:950;letter-spacing:.08em;color:#5f7787}.pc-dashboard-kpi strong{font-size:17px;color:#123c5c;line-height:1.05}.pc-dashboard-kpi.major strong{font-size:22px}.pc-dashboard-kpi small{font-size:6.2px;color:#81919b}.pc-dashboard-kpi em{font-style:normal;font-size:5.7px;font-weight:900;color:#2c6f9d;margin-top:auto;opacity:.7}.pc-dashboard-kpi.hero{overflow:hidden}.pc-dashboard-kpi.hero:before{content:'';position:absolute;inset:0 auto 0 0;width:6px;border-radius:12px 0 0 12px;background:#2f6fad}.pc-dashboard-kpi.hero-blue{background:linear-gradient(180deg,#fbfdff 0%,#f1f7fe 100%)}.pc-dashboard-kpi.hero-red{background:linear-gradient(180deg,#fffdfd 0%,#fff2f3 100%)}.pc-dashboard-kpi.hero-red:before{background:#d93044}.pc-dashboard-kpi.hero-green{background:linear-gradient(180deg,#fbfffd 0%,#effaf3 100%)}.pc-dashboard-kpi.hero-green:before{background:#229b57}.pc-dashboard-kpi.hero-amber{background:linear-gradient(180deg,#fffef9 0%,#fff7ea 100%)}.pc-dashboard-kpi.hero-amber:before{background:#d38b15}.pc-dashboard-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:10px;margin-top:0}.pc-dashboard-grid>.panel{padding:12px!important;border-radius:13px!important;min-width:0}.pc-dashboard-trend{background:linear-gradient(180deg,#fff 0%,#fbfdff 100%)}.pc-dashboard-trend-chart{display:grid;gap:8px;margin-top:10px}.pc-dashboard-trend-row.visual{grid-template-columns:98px 1fr;align-items:center;background:#fafcfd;border:1px solid #ebf0f3;border-radius:10px;padding:10px}.pc-dashboard-trend-date{display:grid;gap:3px}.pc-dashboard-trend-date b{font-size:8px;color:#164b71}.pc-dashboard-trend-date small{font-size:6px;color:#7c8b95;text-transform:uppercase}.pc-dashboard-trend-meters{display:grid;gap:7px}.pc-dashboard-trend-meters label{display:grid;grid-template-columns:34px 1fr auto;gap:7px;align-items:center;font-size:6.5px}.pc-dashboard-trend-meters label span{font-weight:900;color:#6c808f}.pc-dashboard-trend-meters label i,.pc-mini-meter i{display:block;position:relative;height:8px;background:#e7eef3;border-radius:999px;overflow:hidden}.pc-dashboard-trend-meters label i:after,.pc-mini-meter i:after{content:'';position:absolute;inset:0 auto 0 0;width:var(--pct);border-radius:999px}.pc-dashboard-trend-meters label i.trip:after,.pc-mini-meter i:after{background:#2f6fad}.pc-dashboard-trend-meters label i.km:after{background:#37a35b}.pc-dashboard-trend-meters label i.loss:after{background:#de4255}.pc-dashboard-trend-meters label b{font-size:7px;color:#143e5e}.pc-dashboard-empty-state{border:1px dashed #d4e2ea;border-radius:12px;background:#f8fbfd;padding:16px 18px;display:grid;gap:4px;min-height:96px;align-content:center}.pc-dashboard-empty-state b{font-size:10px;color:#154b72}.pc-dashboard-empty-state p{margin:0;font-size:7px;color:#6f8290;line-height:1.45}.pc-dashboard-empty-state.compact{min-height:unset;padding:10px 12px;margin-top:8px}.pc-dashboard-route-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:10px}.pc-dashboard-route-kpis article{border:1px solid #e1e8ed;background:#f8fafb;border-radius:9px;padding:9px}.pc-dashboard-route-kpis span{display:block;font-size:5.7px;font-weight:900;color:#6f8290}.pc-dashboard-route-kpis strong{display:block;margin-top:3px;font-size:12px;color:#123f5f}.pc-dashboard-issue-head{display:grid;gap:2px;margin-bottom:6px}.pc-dashboard-issue-head b{font-size:8px;color:#164b71}.pc-dashboard-issue-head small{font-size:6.5px;color:#7b8c96}.pc-dashboard-route-issues{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:8px}.pc-dashboard-route-spotlight{display:grid;gap:5px;text-align:left;border:1px solid #dce5eb;background:linear-gradient(180deg,#fff 0%,#fbfdff 100%);border-radius:11px;padding:11px}.pc-dashboard-route-spotlight b{font-size:7px;color:#164d74}.pc-dashboard-route-spotlight strong{font-size:18px;color:#123e5f}.pc-dashboard-route-spotlight span{font-size:6.4px;color:#72848f}.pc-dashboard-route-list{display:grid;margin-top:8px;border:1px solid #e8eef2;border-radius:12px;overflow:hidden}.pc-dashboard-route-row{display:grid;grid-template-columns:58px 1.2fr .9fr .8fr 82px;gap:8px;align-items:center;padding:9px 10px;border-bottom:1px solid #edf2f5;font-size:7px;background:#fff}.pc-dashboard-route-row:last-child{border-bottom:none}.pc-dashboard-route-row:nth-child(even){background:#fbfdfe}.pc-dashboard-route-row b{color:#114c73}.pc-mini-meter{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center}.pc-mini-meter u{text-decoration:none;font-size:6.6px;color:#234f71;font-weight:900}.pc-dashboard-shortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:9px}.pc-dashboard-shortcuts button{display:grid;grid-template-columns:26px 1fr;grid-template-rows:auto auto;column-gap:10px;row-gap:2px;border:1px solid #dbe5eb;background:#fff;border-radius:10px;padding:11px;text-align:left;cursor:pointer;align-items:start}.pc-dashboard-shortcuts button:hover{border-color:#9cc4df;background:#f8fbfd}.pc-shortcut-icon{grid-row:1 / span 2;display:grid;place-items:center;width:26px;height:26px;border-radius:8px;background:#eef5fb;color:#164b72;font-weight:900;font-size:12px}.pc-dashboard-shortcuts b{display:block;font-size:8px;color:#174d72}.pc-dashboard-shortcuts small{display:block;margin-top:2px;font-size:6.4px;color:#6e8290}.pc-dashboard-analysis,.pc-dashboard-route{background:linear-gradient(180deg,#fff 0%,#fbfdff 100%)}
@media(max-width:1450px){.pc-dashboard-kpis{grid-template-columns:repeat(8,minmax(0,1fr))}.pc-dashboard-kpi{grid-column:span 2}.pc-dashboard-kpi.major{grid-column:span 4}}
@media(max-width:1150px){.pc-focus-chips{justify-content:flex-start}.pc-focus-toolbar .button{margin-left:0}.pc-dashboard-grid{grid-template-columns:1fr}.pc-dashboard-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.pc-dashboard-kpi{grid-column:span 2}.pc-dashboard-kpi.major{grid-column:span 2}.pc-dashboard-route-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.pc-dashboard-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-dashboard-kpi,.pc-dashboard-kpi.major{grid-column:span 1}.pc-dashboard-shortcuts{grid-template-columns:1fr}.pc-dashboard-route-row{grid-template-columns:48px 1fr .9fr .8fr 74px}.pc-dashboard-route-issues{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-dashboard-trend-row.visual{grid-template-columns:1fr}}

/* TIRANA LIVE V0.17.4.35 HOTFIX3 · FINAL LAYOUT STABILISER */
.pc-v34-tabs{margin-bottom:8px}
.pc-focus-toolbar{display:grid!important;grid-template-columns:minmax(320px,1fr) auto auto;align-items:center!important;gap:10px!important;padding:8px 12px!important;min-height:0!important;height:auto!important;margin:0 0 10px!important;overflow:hidden!important;position:relative;z-index:4;box-sizing:border-box}
.pc-focus-copy{display:grid!important;gap:2px;align-content:center;min-width:0!important;max-width:none!important}.pc-focus-copy .eyebrow{margin:0!important;font-size:6px!important;line-height:1.1}.pc-focus-copy strong{font-size:10px!important;line-height:1.15!important;white-space:normal}.pc-focus-copy small{font-size:6.5px!important;line-height:1.25!important;margin:0}.pc-focus-chips{display:flex!important;flex:0 1 auto!important;flex-wrap:wrap;justify-content:flex-end;gap:6px;min-width:0}.pc-focus-chip{padding:5px 8px!important;font-size:6px!important;line-height:1}.pc-focus-toolbar .button{margin:0!important;justify-self:end;align-self:center;height:28px;padding:0 10px;font-size:6px;white-space:nowrap}.pc-focus-toolbar > *{position:static!important;z-index:auto!important}
.pc-v34-workspace{overflow:auto!important;min-height:0!important;padding:0!important}.pc-v34-workspace>.pc-view{align-content:start!important;min-height:0!important;padding:0 0 10px 0!important}.pc-v34-workspace>.pc-view>:first-child{margin-top:0!important}
.pc-section-banner,.pc-dashboard-head{position:relative;z-index:1;margin:0 0 6px!important;padding-top:0!important}.pc-section-banner{padding:0 2px 0 2px!important}.pc-dashboard-head{padding:10px 12px!important}
.pc-hero-kpis,.pc-network-kpis,.pc-dashboard-kpis{margin-top:0!important}.pc-performance-dashboard{gap:8px!important}.pc-performance-dashboard .pc-dashboard-head{background:linear-gradient(180deg,#f8fbfd 0%,#f2f7fb 100%)!important;border:1px solid #d9e4eb!important;border-radius:12px!important;box-shadow:none!important}.pc-performance-dashboard .pc-dashboard-head .eyebrow{font-size:6px!important}.pc-performance-dashboard .pc-dashboard-head h3{font-size:16px!important;line-height:1.15;margin:2px 0!important}.pc-performance-dashboard .pc-dashboard-head p:not(.eyebrow){font-size:7px!important;margin:2px 0 0!important;max-width:720px}
.pc-command-centre .pc-hero-kpis{padding-top:0}.pc-network-performance .pc-network-kpis{padding-top:0}
@media (max-width:1180px){.pc-focus-toolbar{grid-template-columns:1fr auto!important}.pc-focus-chips{justify-content:flex-start}.pc-focus-toolbar .button{grid-column:2}.pc-focus-copy{grid-column:1/-1}}
@media (max-width:760px){.pc-focus-toolbar{grid-template-columns:1fr!important}.pc-focus-chips{justify-content:flex-start}.pc-focus-toolbar .button{justify-self:start;width:auto}}

/* TIRANA LIVE V0.17.4.35 HOTFIX4 · TRUE FOUR-ROW PERFORMANCE SHELL */
.performance-centre-v34 .pc-v34-shell{
  height:100%!important;
  min-height:0!important;
  display:grid!important;
  grid-template-rows:auto auto auto minmax(0,1fr)!important;
  gap:8px!important;
  overflow:hidden!important;
}
.performance-centre-v34 .pc-v34-header{grid-row:1!important;position:relative!important;z-index:5}
.performance-centre-v34 .pc-v34-tabs{grid-row:2!important;position:relative!important;z-index:4;margin:0!important}
.performance-centre-v34 .pc-focus-toolbar{grid-row:3!important;position:relative!important;z-index:3;margin:0!important;align-self:start!important}
.performance-centre-v34 .pc-v34-workspace{grid-row:4!important;position:relative!important;z-index:1;min-height:0!important;overflow:auto!important;scrollbar-gutter:stable;padding:0!important}
.performance-centre-v34 .pc-v34-workspace>.pc-view{position:relative!important;z-index:1;min-height:0!important;align-content:start!important;padding-top:0!important;margin-top:0!important}
.performance-centre-v34 .pc-v34-workspace>.pc-view>.pc-dashboard-head,
.performance-centre-v34 .pc-v34-workspace>.pc-view>.pc-section-banner,
.performance-centre-v34 .pc-v34-workspace>.pc-view>.pc-hero-kpis,
.performance-centre-v34 .pc-v34-workspace>.pc-view>.pc-ai-brief-header{margin-top:0!important;transform:none!important;position:relative!important;top:auto!important}
.performance-centre-v34 .pc-focus-toolbar{background:#fff!important;border:1px solid #dbe5eb!important;border-radius:10px!important;box-shadow:none!important;padding:8px 12px!important;min-height:46px!important;max-height:none!important;overflow:visible!important}
.performance-centre-v34 .pc-focus-copy{align-self:center!important}.performance-centre-v34 .pc-focus-copy strong{display:block!important}.performance-centre-v34 .pc-focus-chips{align-self:center!important}
@media(max-width:1180px){.performance-centre-v34 .pc-v34-shell{grid-template-rows:auto auto auto minmax(0,1fr)!important}.performance-centre-v34 .pc-focus-toolbar{grid-template-columns:1fr auto!important}.performance-centre-v34 .pc-focus-copy{grid-column:1!important}.performance-centre-v34 .pc-focus-chips{grid-column:2!important;justify-content:flex-end!important}.performance-centre-v34 .pc-focus-toolbar .button{grid-column:2!important}}
@media(max-width:760px){.performance-centre-v34 .pc-focus-toolbar{grid-template-columns:1fr!important}.performance-centre-v34 .pc-focus-copy,.performance-centre-v34 .pc-focus-chips,.performance-centre-v34 .pc-focus-toolbar .button{grid-column:1!important}.performance-centre-v34 .pc-focus-chips{justify-content:flex-start!important}}
/* TIRANA LIVE V0.17.4.35 HOTFIX5 · PREMIUM PERFORMANCE DASHBOARD HIERARCHY */
.pc-performance-dashboard .pc-dashboard-kpis{display:block!important;margin:0!important}
.pc-dashboard-hero-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 10px}
.pc-dashboard-hero-grid .pc-dashboard-kpi{grid-column:auto!important;min-height:116px!important;padding:15px 16px!important;border-radius:14px!important;box-shadow:0 3px 10px rgba(14,49,73,.035)!important}
.pc-dashboard-hero-grid .pc-dashboard-kpi span{font-size:6.4px!important}.pc-dashboard-hero-grid .pc-dashboard-kpi strong{font-size:25px!important;letter-spacing:-.015em}.pc-dashboard-hero-grid .pc-dashboard-kpi small{font-size:6.5px!important}.pc-dashboard-hero-grid .pc-dashboard-kpi em{font-size:5.8px!important;margin-top:12px!important}
.pc-dashboard-groups{display:grid;grid-template-columns:1.45fr .8fr 1fr;gap:10px;align-items:start}
.pc-dashboard-group{min-width:0;background:#fff;border:1px solid #dbe5eb;border-radius:13px;overflow:hidden;box-shadow:0 2px 8px rgba(16,47,73,.025)}
.pc-dashboard-group>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 11px;border-bottom:1px solid #e8eef2;background:#f7fafc}
.pc-dashboard-group>header>div{display:grid;gap:2px}.pc-dashboard-group>header span{font-size:7px;font-weight:950;letter-spacing:.08em;color:#153f5d}.pc-dashboard-group>header small{font-size:6px;color:#7b8d98}
.pc-dashboard-group>header button{border:1px solid #d4e0e8;background:#fff;color:#245f86;border-radius:999px;padding:5px 7px;font-size:5.7px;font-weight:950;cursor:pointer;white-space:nowrap}.pc-dashboard-group>header button:hover{background:#eef6fb;border-color:#aac9dd}
.pc-dashboard-group-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}
.pc-dashboard-group-fleet .pc-dashboard-group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-dashboard-group-reliability .pc-dashboard-group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.pc-dashboard-mini-kpi{position:relative;min-height:78px;padding:10px 11px;border-right:1px solid #edf2f5;border-bottom:1px solid #edf2f5;background:#fff;display:grid;align-content:start;gap:4px}.pc-dashboard-mini-kpi:nth-child(3n){border-right:0}.pc-dashboard-group-fleet .pc-dashboard-mini-kpi:nth-child(2n),.pc-dashboard-group-reliability .pc-dashboard-mini-kpi:nth-child(2n){border-right:0}.pc-dashboard-mini-kpi:hover{background:#f9fcfe}.pc-dashboard-mini-kpi.loss{background:#fffafa}.pc-dashboard-mini-kpi.loss strong{color:#c82d3d}
.pc-dashboard-mini-kpi span{font-size:5.8px;font-weight:950;letter-spacing:.06em;color:#6c808d}.pc-dashboard-mini-kpi strong{font-size:14px;line-height:1.05;color:#123f5e}.pc-dashboard-mini-kpi small{font-size:5.8px;color:#8796a0;line-height:1.25}
.pc-dashboard-group-service>header{box-shadow:inset 4px 0 0 #2f6fad}.pc-dashboard-group-fleet>header{box-shadow:inset 4px 0 0 #2f9b5c}.pc-dashboard-group-reliability>header{box-shadow:inset 4px 0 0 #7762bd}
.pc-dashboard-grid{margin-top:10px!important}.pc-dashboard-trend,.pc-dashboard-route,.pc-dashboard-routes,.pc-dashboard-analysis{border-radius:13px!important}
@media(max-width:1450px){.pc-dashboard-groups{grid-template-columns:1.2fr .8fr}.pc-dashboard-group-reliability{grid-column:1/-1}.pc-dashboard-group-reliability .pc-dashboard-group-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.pc-dashboard-group-reliability .pc-dashboard-mini-kpi:nth-child(2n){border-right:1px solid #edf2f5}.pc-dashboard-group-reliability .pc-dashboard-mini-kpi:nth-child(4n){border-right:0}}
@media(max-width:1100px){.pc-dashboard-hero-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-dashboard-groups{grid-template-columns:1fr}.pc-dashboard-group-reliability{grid-column:auto}.pc-dashboard-group-reliability .pc-dashboard-group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-dashboard-group-reliability .pc-dashboard-mini-kpi:nth-child(2n){border-right:0}}
@media(max-width:720px){.pc-dashboard-hero-grid{grid-template-columns:1fr}.pc-dashboard-group-grid,.pc-dashboard-group-fleet .pc-dashboard-group-grid,.pc-dashboard-group-reliability .pc-dashboard-group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-dashboard-mini-kpi:nth-child(3n){border-right:1px solid #edf2f5}.pc-dashboard-mini-kpi:nth-child(2n){border-right:0!important}}

/* TIRANA LIVE V0.17.4.35 HOTFIX6 · ROUTE FOCUS RIBBON + INTERACTION POLISH */
.performance-centre-v34 .pc-focus-toolbar[hidden]{display:none!important}
.performance-centre-v34 .pc-focus-toolbar{grid-template-columns:minmax(250px,.72fr) minmax(0,1.5fr) auto!important;background:linear-gradient(90deg,#f7fbfe 0%,#ffffff 45%,#fbfdff 100%)!important;border:1px solid #cbdce7!important;border-left:4px solid #1d6b9c!important;min-height:44px!important;padding:7px 10px!important;animation:pcFocusIn .16s ease-out}
.performance-centre-v34 .pc-focus-copy .eyebrow{color:#47748f!important}.performance-centre-v34 .pc-focus-copy strong{color:#103f60!important;font-size:9px!important}.performance-centre-v34 .pc-focus-copy small{color:#718591!important}.performance-centre-v34 .pc-focus-chips{justify-content:flex-start!important;gap:5px!important}.performance-centre-v34 .pc-focus-chip{background:#fff!important;border-color:#d4e1e8!important;color:#31566d!important;padding:5px 7px!important}.performance-centre-v34 .pc-focus-chip.active{background:#eaf4fb!important;border-color:#9ec2d8!important;color:#0f567e!important}.performance-centre-v34 .pc-focus-toolbar .pc-risk-pill{align-self:center}
.pc-attention-row.selected,.pc-priority-row.selected,.pc-network-route-row.selected,.pc-hbar-row.selected,.pc-dashboard-route-row.selected,.pc-dashboard-route-spotlight.selected{background:#edf6fb!important;box-shadow:inset 3px 0 0 #1e6d9e!important}.pc-network-route-row.selected .route,.pc-dashboard-route-row.selected b,.pc-priority-row.selected b,.pc-attention-row.selected .route{color:#074c77!important}.pc-dashboard-route-spotlight.selected{border-color:#9bc4db!important}.pc-clickable{transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease}.pc-clickable:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(18,61,88,.07)}
.pc-v34-tab{transition:background-color .14s ease,border-color .14s ease,box-shadow .14s ease,color .14s ease}.pc-v34-tab:hover{background:#f8fbfd;border-color:#d4e1e8}.pc-v34-tab.active{box-shadow:0 3px 9px rgba(17,56,82,.09)}
.pc-dashboard-route-kpis article,.pc-dashboard-mini-kpi,.pc-hero-card,.pc-network-kpis article{transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.pc-dashboard-route-kpis article:hover,.pc-dashboard-mini-kpi:hover,.pc-hero-card:hover,.pc-network-kpis article:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(16,47,73,.055);border-color:#c7dce8}
@keyframes pcFocusIn{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:1180px){.performance-centre-v34 .pc-focus-toolbar{grid-template-columns:1fr auto!important}.performance-centre-v34 .pc-focus-copy{grid-column:1/-1!important}.performance-centre-v34 .pc-focus-chips{grid-column:1!important}.performance-centre-v34 .pc-focus-toolbar .button{grid-column:2!important}}
@media(max-width:760px){.performance-centre-v34 .pc-focus-toolbar{grid-template-columns:1fr!important}.performance-centre-v34 .pc-focus-copy,.performance-centre-v34 .pc-focus-chips,.performance-centre-v34 .pc-focus-toolbar .button{grid-column:1!important}.performance-centre-v34 .pc-focus-toolbar .button{justify-self:start!important}}

/* TIRANA LIVE V0.17.4.35 HOTFIX7 · NETWORK PULSE VISUAL UPGRADE */
.pc-network-pulse-grid{grid-template-columns:1.35fr 1fr 1fr .95fr!important;align-items:stretch}.pc-hero-card{min-height:154px!important;padding:15px 16px 14px!important;background:linear-gradient(180deg,#ffffff 0%,#fbfdfe 100%)!important}.pc-hero-card.pulse-major{background:linear-gradient(180deg,#f8fbff 0%,#f4f8fc 100%)!important}.pc-hero-card.loss{background:linear-gradient(180deg,#fff8f8 0%,#fff4f5 100%)!important}.pc-hero-card.fleet{background:linear-gradient(180deg,#f8fdf9 0%,#f2faf5 100%)!important}.pc-hero-card.risk{background:linear-gradient(180deg,#fffaf1 0%,#fff6ea 100%)!important}.pc-hero-card-main{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.pc-hero-card-main>div:first-child{min-width:0}.pc-hero-card strong{font-size:31px!important}.pc-hero-trend-row{display:grid;grid-template-columns:86px 1fr;gap:10px;align-items:center;margin-top:10px;padding:9px 10px;border:1px solid #e7eef3;border-radius:10px;background:rgba(255,255,255,.72)}.pc-hero-spark{height:32px;display:grid;place-items:center;color:#1d68ba}.pc-hero-spark svg{width:74px;height:24px}.pc-hero-trend-copy b{display:block;font-size:10px;color:#17394f;line-height:1.2}.pc-hero-trend-copy small{margin-top:2px!important;font-size:6.8px!important;line-height:1.3}.pc-hero-card footer.triple{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.pc-impact-stack{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}.pc-impact-stat{padding:8px 9px;border:1px solid #f1dfe3;border-radius:10px;background:rgba(255,255,255,.65)}.pc-impact-stat span{font-size:6px!important}.pc-impact-stat b{display:block;font-size:11px;color:#17394f;margin-top:3px}.pc-contributor-bar{margin-top:10px}.pc-contributor-bar label{display:flex;justify-content:space-between;gap:8px;font-size:6.5px;font-weight:900;color:#7f6c74}.pc-contributor-bar .track{height:8px;border-radius:999px;background:#f3e3e6;overflow:hidden;margin-top:5px}.pc-contributor-bar .track i{display:block;height:100%;width:0;background:linear-gradient(90deg,#e12d40,#f16f79);border-radius:999px;transition:width .25s ease}.pc-contributor-bar>span{display:block;margin-top:5px;font-size:7px;color:#cc2938;font-weight:900}.pc-fleet-visual{display:grid;grid-template-columns:84px 1fr;gap:12px;align-items:center;margin-top:10px}.pc-fleet-gauge{--gauge:0%;width:84px;height:84px;border-radius:50%;background:conic-gradient(#1f9b59 var(--gauge),#dfebe4 0);display:grid;place-items:center;padding:8px}.pc-fleet-gauge>div{width:100%;height:100%;border-radius:50%;background:#fff;display:grid;place-items:center;text-align:center}.pc-fleet-gauge b{font-size:15px;color:#17784a;line-height:1}.pc-fleet-gauge small{font-size:5.7px;color:#76907f;margin-top:2px}.pc-fleet-breakdown{display:grid;gap:7px}.pc-fleet-breakdown span{display:flex;justify-content:space-between;gap:8px;padding:7px 9px;border-radius:9px;background:rgba(255,255,255,.68);border:1px solid #dfebe4;font-size:6.5px;font-weight:900;color:#607d69}.pc-fleet-breakdown b{font-size:10px;color:#17394f}.pc-risk-stack{display:flex;gap:5px;height:12px;margin-top:15px}.pc-risk-stack i{display:block;height:100%;border-radius:99px}.pc-risk-stack i.critical{width:var(--critical,33%);background:#df3347}.pc-risk-stack i.watch{width:var(--watch,33%);background:#f0ad1a}.pc-risk-stack i.stable{width:var(--stable,34%);background:#2ea161}.pc-risk-legend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:10px}.pc-risk-legend span{padding:7px 8px;border-radius:9px;background:rgba(255,255,255,.7);border:1px solid #efe6d6;font-size:6.2px;font-weight:900;color:#776f63}.pc-risk-legend b{display:block;font-size:11px;color:#17394f;margin-top:2px}.pc-network-pulse-card{padding:14px 16px!important;background:linear-gradient(180deg,#ffffff 0%,#f7fafc 100%)!important}.pc-service-day-header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:10px}.pc-network-pulse-card .pc-overall-delivery{border-left:0!important;padding-left:0!important;text-align:right}.pc-service-track.pulse{grid-template-columns:110px minmax(50px,1fr) 110px minmax(50px,1fr) 110px minmax(50px,1fr) 110px!important}.pc-service-stage.remaining>i{background:#6d78c9;border-color:#eef0ff;box-shadow:0 0 0 1px #cdd2f4}.pc-service-stage.remaining b{color:#35458b}.pc-service-stage.remaining small{color:#7a82a6}.pc-service-line.remaining i{background:linear-gradient(90deg,#8992d7,#6975c6)}.pc-service-line.now-marker{position:relative}.pc-service-line.now-marker u{position:absolute;top:-16px;left:50%;transform:translateX(-50%);font-size:5.8px;font-weight:900;letter-spacing:.08em;color:#1d68ba;text-decoration:none;padding:2px 5px;border-radius:999px;background:#edf4ff;border:1px solid #d8e7fb}.pc-network-pulse-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.pc-pulse-chip{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:999px;background:#f3f7fa;border:1px solid #dfe9ef}.pc-pulse-chip span{font-size:5.8px;font-weight:900;letter-spacing:.08em;color:#728693}.pc-pulse-chip b{font-size:8px;color:#163c59}.pc-observation-ribbon{display:grid;grid-template-columns:36px 1fr auto;gap:12px;align-items:center;padding:10px 14px!important;background:linear-gradient(90deg,#fbf7ff 0%,#f7fbff 100%)!important;border:1px solid #e7e3f7!important}.pc-observation-icon{width:32px;height:32px;border-radius:10px;background:#efe8ff;color:#6f50c4;display:grid;place-items:center;font-weight:900}.pc-observation-copy span{display:block;font-size:6px;font-weight:900;letter-spacing:.08em;color:#7d6eb2}.pc-observation-copy b{display:block;font-size:10px;color:#19384f;line-height:1.25}.pc-observation-copy small{display:block;margin-top:3px;font-size:6.8px;color:#6f8090;line-height:1.35}.pc-command-quality{background:transparent!important;border:none!important;padding:0!important}.pc-command-quality article{background:#fff;border:1px solid #dce6ec;border-radius:12px}.pc-command-grid{margin-top:2px}
@media(max-width:1320px){.pc-network-pulse-grid{grid-template-columns:1fr 1fr!important}.pc-fleet-visual{grid-template-columns:72px 1fr}.pc-fleet-gauge{width:72px;height:72px}.pc-impact-stack,.pc-risk-legend{grid-template-columns:1fr 1fr 1fr}.pc-service-day-header{flex-direction:column;align-items:flex-start}.pc-network-pulse-card .pc-overall-delivery{text-align:left}}
@media(max-width:900px){.pc-network-pulse-grid{grid-template-columns:1fr!important}.pc-hero-trend-row,.pc-fleet-visual{grid-template-columns:1fr}.pc-impact-stack,.pc-risk-legend{grid-template-columns:1fr}.pc-observation-ribbon{grid-template-columns:1fr}.pc-service-track.pulse{grid-template-columns:1fr!important}}

/* TIRANA LIVE V0.17.4.35 HOTFIX8 · PAGE ISOLATION GUARD */
.performance-centre-v34:not(.active){display:none!important}
.performance-centre-v34.active{display:block!important}
/* TIRANA AVL V0.25.19.9.4.8.6.8.4 · RUNNING TIME FULL-WINDOW WORKSPACE */
.performance-centre-v34.pc-running-expanded{padding:0!important;background:#f4f7f9!important}
.performance-centre-v34.pc-running-expanded .pc-v34-shell{height:100%!important;min-height:0!important;gap:6px!important;grid-template-rows:auto auto minmax(0,1fr)!important}
.performance-centre-v34.pc-running-expanded .pc-v34-header{min-height:52px!important;padding:7px 12px!important;border-radius:0 0 10px 10px!important}
.performance-centre-v34.pc-running-expanded .pc-v34-header-actions{display:none!important}
.performance-centre-v34.pc-running-expanded .pc-v34-tabs{margin:0 6px!important;border-radius:9px!important;flex:0 0 auto!important}
.performance-centre-v34.pc-running-expanded .pc-v34-workspace{height:100%!important;min-height:0!important;overflow:hidden!important;padding:0!important}
.performance-centre-v34.pc-running-expanded .pc-running-time{box-sizing:border-box;width:100%!important;max-width:none!important;height:100%!important;min-height:0!important;overflow:auto!important;align-content:stretch!important;grid-template-rows:auto auto minmax(max(360px,calc(100vh - 430px)),1fr) auto auto auto!important;gap:8px!important;padding:0 6px 10px!important;scrollbar-gutter:stable}
.performance-centre-v34.pc-running-expanded .pc-runtime-head{width:100%!important;box-sizing:border-box;margin:0!important}
.performance-centre-v34.pc-running-expanded .pc-runtime-kpis{width:100%!important}
.performance-centre-v34.pc-running-expanded .pc-runtime-chart-card{box-sizing:border-box;width:100%!important;min-height:max(360px,calc(100vh - 430px))!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}
.performance-centre-v34.pc-running-expanded .pc-runtime-chart-card>.pc-card-head{flex:0 0 auto}
.performance-centre-v34.pc-running-expanded .pc-runtime-chart{flex:1 1 auto!important;min-height:300px!important;height:auto!important;display:flex!important;align-items:stretch!important}
.performance-centre-v34.pc-running-expanded .pc-runtime-chart>svg{width:100%!important;height:100%!important;min-height:300px!important;flex:1 1 auto}
.performance-centre-v34.pc-running-expanded .pc-runtime-chart>.pc-runtime-loading{width:100%!important;height:100%!important;min-height:100%!important;flex:1 1 100%!important;align-self:stretch!important;display:grid!important;place-items:center!important;margin:0!important}
.performance-centre-v34.pc-running-expanded .pc-runtime-hour-strip{flex:0 0 auto}
.performance-centre-v34.pc-running-expanded .pc-runtime-grid,.performance-centre-v34.pc-running-expanded .pc-runtime-ai,.performance-centre-v34.pc-running-expanded .pc-runtime-policy{width:100%!important;box-sizing:border-box}
html.occ-fullscreen .performance-centre-v34.pc-running-expanded .pc-running-time{grid-template-rows:auto auto minmax(max(400px,calc(100vh - 360px)),1fr) auto auto auto!important}
html.occ-fullscreen .performance-centre-v34.pc-running-expanded .pc-runtime-chart-card{min-height:max(400px,calc(100vh - 360px))!important}
@media(max-width:1100px){.performance-centre-v34.pc-running-expanded .pc-running-time{grid-template-rows:auto auto minmax(360px,1fr) auto auto auto!important}.performance-centre-v34.pc-running-expanded .pc-runtime-chart-card{min-height:360px!important}}
@media(max-width:700px){.performance-centre-v34.pc-running-expanded .pc-v34-header{border-radius:0!important}.performance-centre-v34.pc-running-expanded .pc-v34-tabs{margin:0!important}.performance-centre-v34.pc-running-expanded .pc-running-time{padding:0 2px 8px!important;overflow:visible!important;height:auto!important}.performance-centre-v34.pc-running-expanded .pc-v34-workspace{overflow:auto!important}.performance-centre-v34.pc-running-expanded .pc-runtime-chart-card{min-height:390px!important}}

/* TIRANA LIVE V0.17.4.35 HOTFIX9 · AI DECISION ROOM */
.pc-ai-decision-room{gap:10px!important}.pc-ai-command-header{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;border:1px solid #dce6ec;border-radius:14px;background:linear-gradient(135deg,#fbfdff 0%,#f8f6ff 100%);box-shadow:0 4px 16px rgba(31,54,77,.035)}.pc-ai-command-brand{display:grid;grid-template-columns:44px minmax(0,1fr);gap:11px;align-items:center}.pc-ai-command-brand h3{font-size:17px!important;margin:1px 0!important;color:#183a54}.pc-ai-command-brand p:not(.eyebrow){font-size:7.3px;color:#70828e;margin:3px 0 0!important;line-height:1.4}.pc-ai-command-state{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}.pc-ai-decision-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.pc-ai-decision-kpis article{position:relative;overflow:hidden;min-height:105px;padding:13px 14px;border:1px solid #dce5eb;border-radius:12px;background:#fff;display:grid;align-content:start;gap:5px}.pc-ai-decision-kpis article:before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:#4f7895}.pc-ai-decision-kpis article.loss{background:linear-gradient(180deg,#fff 0%,#fff5f6 100%)}.pc-ai-decision-kpis article.loss:before,.pc-ai-decision-kpis article.risk:before{background:#db3142}.pc-ai-decision-kpis article.fleet{background:linear-gradient(180deg,#fff 0%,#f3faf6 100%)}.pc-ai-decision-kpis article.fleet:before{background:#28985a}.pc-ai-decision-kpis article.health{background:linear-gradient(180deg,#fff 0%,#f3f8fd 100%)}.pc-ai-decision-kpis article.health:before{background:#2e71af}.pc-ai-decision-kpis article>span{font-size:6.3px;font-weight:950;letter-spacing:.08em;color:#6b7f8d}.pc-ai-decision-kpis article>strong{font-size:23px;line-height:1.05;color:#173c58}.pc-ai-decision-kpis article.loss>strong,.pc-ai-decision-kpis article.risk>strong{color:#d42d3f}.pc-ai-decision-kpis article small{font-size:6.6px;color:#7d8d97}.pc-ai-decision-kpis article small b{font-size:8px;color:#314f63}.pc-ai-decision-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(370px,.82fr);gap:10px;align-items:stretch}.pc-ai-decision-grid>.panel{padding:13px!important;border-radius:13px!important}.pc-ai-priority-queue{display:flex;flex-direction:column;min-height:390px}.pc-ai-priority-list{display:grid;margin-top:10px;border:1px solid #e2e9ee;border-radius:11px;overflow:hidden}.pc-ai-priority-row{display:grid;grid-template-columns:30px minmax(115px,1.4fr) minmax(75px,.8fr) minmax(70px,.7fr) minmax(70px,.7fr) 24px;gap:8px;align-items:center;border:0;border-bottom:1px solid #edf2f5;background:#fff;padding:9px 10px;text-align:left;cursor:pointer}.pc-ai-priority-row:last-child{border-bottom:0}.pc-ai-priority-row:hover{background:#f8fbfd}.pc-ai-priority-row.selected{background:#eef6ff;box-shadow:inset 4px 0 0 #1e6eaa}.pc-ai-priority-row .rank{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;background:#f1f5f7;color:#456277;font-size:7px;font-weight:950}.pc-ai-priority-row .route b,.pc-ai-priority-row .metric b{display:block;font-size:8px;color:#173e5a}.pc-ai-priority-row .route small,.pc-ai-priority-row .metric small{display:block;margin-top:2px;font-size:5.8px;color:#82929c}.pc-ai-priority-row .arrow{font-size:15px;color:#66869a}.pc-ai-decision-summary{margin-top:auto;padding:11px 12px;border-radius:11px;background:linear-gradient(90deg,#f8f6ff,#f7fbff);border:1px solid #e5e2f3}.pc-ai-decision-summary span{display:block;font-size:5.8px;font-weight:950;letter-spacing:.08em;color:#7868ad}.pc-ai-decision-summary b{display:block;margin-top:4px;font-size:9px;color:#1b3d55;line-height:1.35}.pc-ai-decision-summary small{display:block;margin-top:4px;font-size:6.4px;color:#71828e;line-height:1.35}.pc-ai-assistant-large{min-height:390px;background:linear-gradient(180deg,#fff 0%,#f9fbfd 100%)}.pc-ai-suggestion-pills{display:flex!important;gap:6px!important;flex-wrap:wrap;margin:9px 0 10px!important}.pc-ai-suggestion-pills button{border-radius:999px!important;padding:6px 9px!important;background:#f5f8fa!important;font-size:6.2px!important}.pc-ai-run-row{display:flex;align-items:center;gap:9px;margin-top:8px}.pc-ai-run-row small{font-size:5.9px;color:#83919b;line-height:1.3}.pc-ai-result-large{min-height:125px!important;max-height:300px!important;margin-top:10px!important;border-radius:10px!important}.pc-ai-actions-panel{padding:12px 13px;border:1px solid #dce5eb;border-radius:13px;background:#fff}.pc-ai-prompt-grid-v2{grid-template-columns:repeat(5,minmax(0,1fr))!important}.pc-ai-prompt-grid-v2 button{min-height:92px;background:linear-gradient(180deg,#fff,#fbfdfe)}.pc-ai-evidence-cockpit{display:grid;grid-template-columns:1.05fr 1.15fr .72fr .85fr;gap:9px}.pc-ai-evidence-cockpit>.panel{padding:11px!important;border-radius:12px!important;min-width:0;min-height:270px}.pc-ai-evidence-cockpit .pc-donut-layout{min-height:190px}.pc-ai-evidence-cockpit .pc-risk-stack{margin-top:10px}.pc-issue-evidence-card{margin-top:0!important}.pc-issue-evidence-card .pc-card-head p:not(.eyebrow){font-size:6.6px!important;color:#7a8b95;margin:3px 0 0!important}
@media(max-width:1400px){.pc-ai-decision-grid{grid-template-columns:1fr}.pc-ai-assistant-large{min-height:320px}.pc-ai-evidence-cockpit{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-ai-prompt-grid-v2{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:960px){.pc-ai-command-header{align-items:flex-start;flex-direction:column}.pc-ai-command-state{justify-content:flex-start}.pc-ai-decision-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-ai-priority-row{min-width:650px}.pc-ai-priority-list{overflow:auto}.pc-ai-evidence-cockpit{grid-template-columns:1fr}.pc-ai-prompt-grid-v2{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:650px){.pc-ai-decision-kpis{grid-template-columns:1fr}.pc-ai-prompt-grid-v2{grid-template-columns:1fr!important}.pc-ai-command-brand{grid-template-columns:1fr}.pc-ai-command-state{display:grid;grid-template-columns:1fr}}

/* V0.18 OCC KPI VISUAL FOUNDATION - safe visual only */
/* V0.18 OCC KPI COMPACT ROUTE CARDS - visual only */
#liveKpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;align-items:stretch;}
#liveKpis article{min-height:68px!important;padding:8px 10px!important;border-radius:10px!important;border:1px solid #dce6ec;background:#fff;box-shadow:0 2px 8px rgba(20,50,70,.04);display:grid;align-content:center;gap:3px;}
#liveKpis article span{font-size:7px!important;font-weight:950;letter-spacing:.07em;color:#637887;}
#liveKpis article strong{font-size:18px!important;line-height:1;color:#153b56;}
#liveKpis article small{font-size:7px!important;line-height:1.25;color:#71838e;}
#liveKpis.lf article strong{color:#173c58;}
#liveKpis.hf article strong{color:#145d7d;}
#liveKpis.family article strong{color:#36557a;}
/* route monitor/family panels keep cards compact */
.route-monitor #liveKpis article,.multi-route #liveKpis article{min-height:58px!important;padding:7px 8px!important;}
.route-monitor #liveKpis article strong,.multi-route #liveKpis article strong{font-size:16px!important;}

/* V0.18 HOTFIX — LIVE KPI CARDS FULL VISIBILITY + SLIGHTLY LARGER */
.ops-kpis.lf,
.ops-kpis.hf,
.ops-kpis.family{
  min-height:auto!important;
  height:auto!important;
  overflow:visible!important;
  align-items:stretch!important;
}
#liveKpis{
  grid-auto-rows:minmax(78px,auto)!important;
  align-items:stretch!important;
}
#liveKpis article{
  min-height:78px!important;
  padding:10px 11px!important;
  align-content:start!important;
  gap:4px!important;
}
#liveKpis article span{
  font-size:7.2px!important;
  line-height:1.15!important;
}
#liveKpis article strong{
  font-size:19px!important;
  line-height:1.02!important;
  margin-top:1px!important;
}
#liveKpis article small{
  font-size:6.8px!important;
  line-height:1.22!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  display:-webkit-box!important;
  -webkit-line-clamp:2!important;
  -webkit-box-orient:vertical!important;
}
#liveKpis.lf article,
#liveKpis.hf article,
#liveKpis.family article{
  min-height:78px!important;
  padding:10px 11px!important;
}
@media(max-width:1500px){
  #liveKpis{grid-auto-rows:minmax(74px,auto)!important}
  #liveKpis article,
  #liveKpis.lf article,
  #liveKpis.hf article,
  #liveKpis.family article{
    min-height:74px!important;
    padding:9px 10px!important;
  }
}

/* V0.18 HOTFIX — 3-ROUTE MONITOR COMPACT KPI CARDS */
.triple-card-head{
  min-height:56px!important;
  padding:7px 10px!important;
  align-items:center!important;
}
.triple-route-title{
  flex:1 1 auto!important;
  min-width:220px!important;
}
.triple-card-metrics{
  display:grid!important;
  grid-template-columns:70px minmax(120px,1fr) minmax(110px,1fr) 78px 52px!important;
  gap:6px!important;
  align-items:stretch!important;
  flex:0 1 620px!important;
  min-width:0!important;
}
.triple-card-metrics>span{
  min-width:0!important;
  min-height:40px!important;
  padding:5px 7px!important;
  border:1px solid #dce6ec!important;
  border-radius:8px!important;
  background:#fff!important;
  display:grid!important;
  align-content:center!important;
  gap:2px!important;
  box-shadow:0 1px 3px rgba(20,50,70,.025)!important;
}
.triple-card-metrics small{
  font-size:5.9px!important;
  line-height:1.05!important;
  color:#687d8c!important;
  font-weight:950!important;
  letter-spacing:.35px!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.triple-card-metrics b{
  font-size:10.5px!important;
  line-height:1.08!important;
  color:#163c59!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.triple-card-metrics>span:last-of-type{
  background:#fbfcfd!important;
}
.triple-map-button{
  width:52px!important;
  min-width:52px!important;
  height:40px!important;
  padding:0 7px!important;
  align-self:stretch!important;
  border-radius:8px!important;
  font-size:7px!important;
}
.triple-route-title .route-lozenge{
  min-width:44px!important;
  height:34px!important;
  font-size:11px!important;
}
.triple-route-title b{
  font-size:9.5px!important;
}
.triple-route-title small{
  font-size:6.2px!important;
}
@media(max-width:1500px){
  .triple-card-metrics{
    grid-template-columns:62px minmax(105px,1fr) minmax(100px,1fr) 70px 48px!important;
    flex-basis:540px!important;
    gap:5px!important;
  }
  .triple-card-metrics>span{padding:5px 6px!important}
  .triple-card-metrics b{font-size:9.8px!important}
  .triple-map-button{width:48px!important;min-width:48px!important}
}
@media(max-width:1180px){
  .triple-card-head{align-items:flex-start!important;flex-wrap:wrap!important}
  .triple-card-metrics{width:100%!important;flex-basis:100%!important;grid-template-columns:repeat(4,minmax(0,1fr)) 52px!important}
}


/* V018 HOTFIX - KPI SINGLE LINE RAIL */
#liveKpis{
 display:flex!important;
 flex-wrap:nowrap!important;
 overflow-x:auto!important;
 overflow-y:hidden!important;
 gap:8px!important;
}
#liveKpis article{
 flex:0 0 150px!important;
 min-height:76px!important;
}
#liveKpis article small{
 white-space:nowrap!important;
 overflow:hidden!important;
 text-overflow:ellipsis!important;
}

/* V0.18 FINAL KPI RAIL - FIT WITHOUT HORIZONTAL SCROLL */
#liveKpis{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(108px,1fr))!important;overflow:hidden!important;gap:6px!important;}
#liveKpis article{min-width:0!important;min-height:70px!important;padding:8px 8px!important;}
#liveKpis article span{font-size:6.2px!important;}
#liveKpis article strong{font-size:16px!important;}
#liveKpis article small{font-size:5.8px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;}
@media(max-width:1200px){#liveKpis article{padding:6px!important;}#liveKpis article strong{font-size:14px!important;}}


/* V0.18 KPI FINAL RAIL - FIT WITHOUT HORIZONTAL SCROLL */
#liveKpis{
 display:grid!important;
 grid-template-columns:repeat(auto-fit,minmax(92px,1fr))!important;
 overflow:hidden!important;
 width:100%!important;
}
#liveKpis article{
 min-width:0!important;
 min-height:68px!important;
 padding:7px 7px!important;
}
#liveKpis article span{
 font-size:6px!important;
}
#liveKpis article strong{
 font-size:16px!important;
}
#liveKpis article small{
 font-size:5.5px!important;
 white-space:nowrap!important;
 overflow:hidden!important;
 text-overflow:ellipsis!important;
}
@media(max-width:1300px){
 #liveKpis article strong{font-size:14px!important}
 #liveKpis article{padding:6px!important}
}


/* V0.18 AI OCC COPILOT PREMIUM PRESENTATION */
.ai-occ-result{
 border:1px solid #cbdbe8!important;
 background:linear-gradient(180deg,#ffffff 0%,#f5faff 100%)!important;
 border-radius:16px!important;
 padding:14px!important;
 gap:10px!important;
 box-shadow:0 8px 22px rgba(15,45,85,.08)!important;
}
.ai-occ-brand{
 display:flex;
 align-items:center;
 gap:10px;
 padding:10px 12px;
 border-radius:12px;
 background:linear-gradient(135deg,#102c51,#1769b0);
 color:#fff;
}
.ai-occ-brand span{font-size:26px}
.ai-occ-brand b{display:block;font-size:12px;letter-spacing:.08em}
.ai-occ-brand small{display:block;font-size:7px;opacity:.85}
.ai-occ-result label{
 display:block;
 font-size:7px;
 font-weight:1000;
 letter-spacing:.12em;
 color:#5f7385;
 margin-bottom:4px;
}
.ai-finding,.ai-cause,.ai-action,.ai-evidence{
 border:1px solid #dce7ef;
 border-radius:12px;
 padding:10px;
 background:#fff;
}
.ai-finding b{font-size:14px!important;color:#173c58!important}
.ai-cause p,.ai-action p{font-size:11px!important;line-height:1.45!important}
.ai-evidence ul{margin:0;padding-left:18px;font-size:10px}
.ai-occ-result .ai-severity{
 font-size:10px!important;
 padding:5px 8px;
 border-radius:999px;
 background:#eef4f8;
 display:inline-block;
}


/* V0.18 REGRESSION FIX - DISPLAY CONTROL VALUE CONTAINMENT */
.display-avl-control, .config-control, .slider-control, .range-control {
  min-width:0!important;
  overflow:hidden!important;
}
.display-avl-control input[type="range"],
.config-control input[type="range"],
.slider-control input[type="range"],
.range-control input[type="range"]{
  max-width:100%!important;
}
.display-avl-control output,
.config-control output,
.slider-control output,
.range-control output,
.range-value,
.range-badge{
  position:relative!important;
  right:auto!important;
  max-width:100%!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
}

/* ========================================================================
   V0.18.1 ROUTE-BY-ROUTE SERVICE DELIVERY REPORT
   Read/reporting surface only. No Live AVL rail, map, EWT/MPS or traffic CSS.
   ======================================================================== */
.route-report-page{grid-template-rows:minmax(0,1fr);gap:0!important;overflow:hidden}
.route-report-shell{height:100%;min-height:0;display:grid;grid-template-rows:auto auto auto minmax(0,1fr);gap:8px;overflow:hidden}
.route-report-titlebar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:2px 2px 0}
.route-report-titlebar h2{font-size:18px;margin:2px 0 2px;color:#12233b}
.route-report-titlebar p:not(.eyebrow){font-size:7.5px;color:#718091;margin:0;max-width:820px;line-height:1.35}
.route-report-title-state{display:flex;align-items:center;gap:6px;white-space:nowrap}
.route-report-controls{padding:9px 10px;border-color:#dce2ec;box-shadow:0 5px 16px rgba(37,51,86,.04)}
.route-report-filter-grid{display:grid;grid-template-columns:minmax(260px,1.15fr) 150px 145px minmax(350px,1fr) 148px;gap:8px;align-items:stretch}
.route-report-filter-grid>label,.route-report-service-day,.route-report-direction{border:1px solid #dce3ed;border-radius:9px;background:#fff;padding:6px 8px;min-width:0}
.route-report-filter-grid>label{display:grid;gap:3px}.route-report-filter-grid label>span,.route-report-service-day>span,.route-report-direction>span{font-size:5.8px;letter-spacing:.65px;font-weight:1000;color:#788496}
.route-report-filter-grid select,.route-report-filter-grid input{width:100%;height:30px;border:0;outline:0;background:transparent;color:#1d2d45;font-size:9px;font-weight:800;min-width:0}
.route-report-route-filter{border-color:#b8a9ff!important;box-shadow:inset 0 0 0 1px rgba(102,68,217,.08)}
.route-report-service-day{display:grid;align-content:center}.route-report-service-day b{font-size:10px;color:#1d2d45}.route-report-service-day small{font-size:6px;color:#8792a1;margin-top:2px}
.route-report-direction{display:grid;gap:4px}.route-report-direction>div{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px}.route-report-direction button{height:30px;border:1px solid #dce3ed;border-radius:7px;background:#f8f9fc;color:#4b5870;font-size:7px;font-weight:950}.route-report-direction button.active{background:linear-gradient(135deg,#7453e8,#5836cf);border-color:#6040d5;color:#fff;box-shadow:0 4px 10px rgba(95,63,211,.18)}
.route-report-export-wrap{position:relative;display:flex;align-items:stretch}.route-report-export-button{width:100%;height:100%;min-height:48px;background:linear-gradient(135deg,#14a892,#05977f)!important;color:#fff!important;border:0!important}.route-report-export-button span{margin-left:6px}
.route-report-export-menu{position:absolute;right:0;top:calc(100% + 6px);width:230px;z-index:80;background:#fff;border:1px solid #d8e0e9;border-radius:10px;box-shadow:0 14px 34px rgba(21,42,70,.16);padding:5px}.route-report-export-menu button{display:grid;width:100%;text-align:left;border:0;background:#fff;border-radius:7px;padding:8px 9px;color:#26364c}.route-report-export-menu button:hover{background:#f4f8fb}.route-report-export-menu b{font-size:7.5px}.route-report-export-menu small{font-size:6px;color:#7b8998;margin-top:2px}
.route-report-secondary-controls{display:flex;align-items:center;gap:14px;margin-top:8px;padding-top:7px;border-top:1px solid #edf0f4;min-width:0}.report-switch{display:flex!important;align-items:center;gap:6px;font-size:7px!important;font-weight:850!important;color:#536175!important;white-space:nowrap}.report-switch input{accent-color:#6544d9}.route-report-data-note{font-size:6.5px;color:#7c8998;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.route-report-secondary-controls .button{height:28px}
.route-report-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}.route-report-kpis article{min-width:0;background:#fff;border:1px solid #dde4ec;border-radius:10px;padding:8px 10px;box-shadow:0 3px 10px rgba(32,54,83,.035)}.route-report-kpis span{display:block;font-size:5.7px;color:#788599;font-weight:1000;letter-spacing:.55px}.route-report-kpis strong{display:block;margin-top:2px;font-size:17px;color:#20314b;line-height:1.05;font-variant-numeric:tabular-nums}.route-report-kpis small{display:block;margin-top:3px;font-size:5.8px;color:#8e99a6}.route-report-kpis article.missing strong{color:#e14149}.route-report-kpis article.partial strong{color:#e99a18}.route-report-kpis article.good strong{color:#198c55}.route-report-kpis article.info strong{color:#246fc6}.route-report-kpis article.purple strong{color:#6a48d8}
.route-report-main-grid{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:8px;overflow:hidden}.route-report-matrix-panel{min-width:0;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;border-color:#cfd8e5}.route-report-matrix-head{display:flex;justify-content:space-between;align-items:center;padding:8px 9px;border-bottom:1px solid #e7ebf1}.route-report-matrix-head h3{font-size:11px;margin:2px 0 0;color:#1c2f49}.route-report-matrix-meta{display:flex;gap:5px}
.route-report-table-wrap{min-height:0;overflow:auto;position:relative;background:#fff}.route-report-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:7px;color:#27364b}.route-report-table th,.route-report-table td{height:36px;min-width:88px;padding:5px 6px;border-right:1px solid #e3e8ef;border-bottom:1px solid #e3e8ef;text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums}.route-report-table th{position:sticky;top:0;z-index:12;height:57px;background:#f7f9fc;color:#3a4b63;font-size:6.2px;font-weight:1000;vertical-align:bottom}.route-report-table th small{display:block;color:#8a96a5;font-size:5.2px;margin-top:2px;max-width:88px;overflow:hidden;text-overflow:ellipsis}.route-report-table th.stop-head{writing-mode:vertical-rl;transform:rotate(180deg);height:96px;min-width:52px;max-width:52px;padding:7px 4px}.route-report-table th.stop-head span{display:block;max-height:78px;overflow:hidden;text-overflow:ellipsis}.route-report-table th.stop-head small{writing-mode:horizontal-tb;transform:rotate(180deg);margin:0 0 3px;color:#76849a}.route-report-table td.stop-cell{min-width:72px;max-width:72px;padding:4px}.route-report-table td.stop-cell b{display:block;font-size:6.8px;font-weight:850}.route-report-table td.stop-cell small{display:block;font-size:5.2px;margin-top:2px;color:#76849a}.route-report-table td.stop-cell.on_time b{color:#1b8b58}.route-report-table td.stop-cell.early{background:#f1f7ff}.route-report-table td.stop-cell.early b{color:#2574bf}.route-report-table td.stop-cell.late{background:#fff7e9}.route-report-table td.stop-cell.late b{color:#cb7910}.route-report-table td.stop-cell.missing{background:#fff0f1;color:#df333d;font-weight:1000;font-size:8px}.route-report-table td.stop-cell.partial{background:#fff8e8;color:#d18413}.route-report-table td.stop-cell.not_due,.route-report-table td.stop-cell.pending,.route-report-table td.stop-cell.no_data{color:#a0a9b4;background:#fafbfc}.route-report-table tr{cursor:pointer}.route-report-table tbody tr:hover td{background-color:#f7f9fd}.route-report-table tbody tr.selected td{box-shadow:inset 0 1px 0 #7151df,inset 0 -1px 0 #7151df}.route-report-table tbody tr.trip-missing td{background-color:#fff5f5}.route-report-table tbody tr.trip-partial td{background-color:#fffaf1}
.route-report-table th.frozen,.route-report-table td.frozen{position:sticky;z-index:10;background:#fff}.route-report-table th.frozen{z-index:20;background:#f7f9fc}.route-report-table .frozen-1{left:0;min-width:82px}.route-report-table .frozen-2{left:82px;min-width:88px}.route-report-table .frozen-3{left:170px;min-width:78px}.route-report-table .frozen-4{left:248px;min-width:78px;box-shadow:3px 0 6px rgba(31,50,78,.05)}.route-report-table tbody tr.trip-missing td.frozen{background:#fff5f5}.route-report-table tbody tr.trip-partial td.frozen{background:#fffaf1}.route-report-table tbody tr.selected td.frozen{background:#f8f6ff}
.route-trip-status{display:inline-flex;align-items:center;justify-content:center;min-width:58px;padding:4px 6px;border-radius:999px;font-size:5.6px;font-weight:1000;letter-spacing:.35px}.route-trip-status.operated{background:#e7f6ee;color:#198955}.route-trip-status.missing{background:#ffe9eb;color:#d92f39}.route-trip-status.partial{background:#fff1d8;color:#c47709}.route-trip-status.in_progress{background:#edf4ff;color:#2c6dba}.route-trip-status.not_due{background:#f1f3f5;color:#7c8792}.route-trip-status.no_data{background:#eef0f2;color:#687580}.route-trip-status.expected{background:#f0edff;color:#6647d5}
.route-report-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px;border-top:1px solid #e5eaf0;background:#fbfcfd}.route-report-legend,.route-report-pagination{display:flex;align-items:center;gap:10px}.route-report-legend span{display:flex;align-items:center;gap:4px;font-size:5.8px;color:#69788a}.report-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.report-dot.operated{background:#2bab6d}.report-dot.missing{background:#e23c46}.report-dot.partial{background:#eda427}.report-dot.nodata{background:#98a4ae}.report-dot.expected{background:#7050db}.route-report-pagination{font-size:6.2px;color:#6d7a8b}.route-report-pagination select{height:24px;border:1px solid #d8dfe7;border-radius:5px;background:#fff;font-size:6.5px}.route-report-pagination button{width:25px;height:25px;border:1px solid #d8dfe7;border-radius:5px;background:#fff;color:#5d6b7c;font-weight:1000}.route-report-pagination button:disabled{opacity:.35;cursor:default}
.route-report-investigation{min-height:0;overflow:auto;padding:10px;border-color:#d7deea;background:linear-gradient(180deg,#fff 0%,#fbfcff 100%)}.route-report-investigation-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding-bottom:8px;border-bottom:1px solid #e8ecf2}.route-report-investigation-head h3{font-size:13px;margin:2px 0;color:#1e3048}.route-report-investigation-empty{padding:20px 8px;text-align:center;font-size:7px;line-height:1.5;color:#8a96a4}.route-report-trip-facts{display:grid;grid-template-columns:1fr 1fr;margin-top:8px;border:1px solid #e1e6ee;border-radius:9px;overflow:hidden}.route-report-trip-facts article{padding:7px 8px;border-right:1px solid #edf0f4;border-bottom:1px solid #edf0f4}.route-report-trip-facts article:nth-child(even){border-right:0}.route-report-trip-facts span{display:block;font-size:5.4px;color:#8190a1;font-weight:900}.route-report-trip-facts b{display:block;margin-top:2px;font-size:8px;color:#293c56}.route-report-expected-stops,.route-report-ai-card{margin-top:9px;border:1px solid #e0e5ee;border-radius:9px;background:#fff;padding:9px}.route-report-side-head{display:flex;align-items:center;justify-content:space-between;font-size:6px;color:#59687a;letter-spacing:.5px}.route-report-stop-timeline{margin-top:7px;display:grid;gap:0;max-height:270px;overflow:auto}.route-report-stop-item{position:relative;display:grid;grid-template-columns:45px 13px 1fr;gap:5px;align-items:center;min-height:28px;font-size:6.2px}.route-report-stop-item:before{content:"";position:absolute;left:51px;top:-8px;bottom:18px;width:1px;background:#d8dee7}.route-report-stop-item:first-child:before{top:14px}.route-report-stop-item:last-child:before{bottom:14px}.route-report-stop-item i{width:8px;height:8px;border:1.5px solid #53667e;border-radius:50%;background:#fff;z-index:2}.route-report-stop-item.actual i{border-color:#279867;background:#e5f7ef}.route-report-stop-item.missing i{border-color:#dd3c47;background:#ffebed}.route-report-stop-item b{font-size:6.4px;color:#35465d}.route-report-stop-item small{display:block;color:#8895a5;font-size:5.4px;margin-top:1px}.route-report-stop-item>span{font-variant-numeric:tabular-nums;color:#647286}.route-report-ai-card{background:linear-gradient(135deg,#faf8ff,#f5f2ff);border-color:#d9ceff}.route-report-ai-card p{font-size:6.6px;line-height:1.55;color:#4e5970;margin:8px 0 0}.route-report-side-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:9px}.route-report-side-actions .button{height:31px}
.route-report-page.expected-mode .route-report-table td.stop-cell b{color:#6247cf}.route-report-page.expected-mode .route-report-table td.stop-cell{background:#fbfaff}.route-report-page.expected-mode .route-report-table tbody tr:hover td{background:#f7f4ff}
@media(max-width:1450px){.route-report-filter-grid{grid-template-columns:minmax(220px,1fr) 130px 120px minmax(300px,1fr) 130px}.route-report-main-grid{grid-template-columns:minmax(0,1fr) 280px}.route-report-kpis strong{font-size:15px}}
@media(max-width:1180px){.route-report-main-grid{grid-template-columns:minmax(0,1fr)}.route-report-investigation{display:none}.route-report-filter-grid{grid-template-columns:1.3fr .7fr .7fr 1.3fr}.route-report-export-wrap{grid-column:4}.route-report-kpis{grid-template-columns:repeat(3,1fr)}}
.route-report-table-wrap.headers-unfrozen .route-report-table th{position:static}
.report-switch:has(input:disabled){opacity:.5;cursor:not-allowed}
.route-report-table td.frozen small{display:block;margin-top:2px;color:#8a96a5;font-size:5.2px}
.route-report-table .pill{font-size:5.2px;padding:3px 5px;min-width:48px;justify-content:center}

/* V0.24.13 SINGLE AVL STABLE REFRESH + SELECTED BUS JOURNEY
   Keeps V0.24.12 persistent AVL layout; live data refresh preserves lower table position.
   Adds a Tirana-specific selected-bus Expected / Actual journey view without changing trip evidence authority.

   V0.24.12 SINGLE AVL PERSISTENT BOARD + LOWER WORKSPACE REBUILD
   Rebuilt from accepted V0.24.9. The AVL board never switches; only the lower supporting panel changes. */
.live-lower-shell{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:7px;overflow:hidden}
.live-lower-toolbar{display:flex;align-items:center;gap:8px;min-width:0;padding:6px 7px;border:1px solid #d7e0e9;border-radius:10px;background:#f6f9fb;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}
.live-lower-tabs{display:flex;align-items:stretch;gap:6px;flex:0 0 auto}
.live-lower-tabs button{height:42px;min-width:142px;border:1px solid transparent;border-radius:8px;background:#eaf0f4;color:#536b7d;padding:5px 12px;text-align:left;cursor:pointer}
.live-lower-tabs button b,.live-lower-tabs button small{display:block;white-space:nowrap}.live-lower-tabs button b{font-size:7.4px;letter-spacing:.45px}.live-lower-tabs button small{font-size:5.8px;margin-top:2px;color:#7b8b97}
.live-lower-tabs button.active{background:#0e527d;border-color:#083a5c;color:#fff;box-shadow:0 3px 10px rgba(14,82,125,.16)}.live-lower-tabs button.active small{color:#dbeaf3}
.live-lower-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-width:max-content;margin-left:auto;flex:0 0 auto}.live-lower-actions>*{flex:0 0 auto;white-space:nowrap}
.live-lower-route-context{max-width:230px;overflow:hidden;text-overflow:ellipsis}.network-event-context-launch{background:linear-gradient(180deg,#e3313c,#c61621)!important;color:#fff!important;box-shadow:0 4px 10px rgba(216,31,42,.15)!important}.network-event-context-launch:hover{background:#b9121c!important}.triple-event-button{height:30px!important;padding:0 10px!important;font-size:7.5px!important;position:relative;z-index:9}.live-lower-actions .button,.live-lower-actions .map-expand-button{height:30px!important;min-height:30px!important;padding:0 9px!important;font-size:6px!important}
.live-lower-view{min-height:0;overflow:hidden}.live-lower-view.active{display:flex}.live-lower-map .map-command-card{width:100%;height:100%;min-height:0;display:flex;flex-direction:column}.live-lower-map .map-surface{flex:1 1 auto;min-height:220px!important}
.live-evidence-panel{width:100%;height:100%;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr);overflow:hidden;border-top:3px solid #0e527d;padding:0}
.live-evidence-head{padding:8px 10px;margin:0!important;border-bottom:1px solid #dfe6eb;align-items:center}.live-evidence-head h3{font-size:12px!important}.live-evidence-head p:not(.eyebrow){font-size:6.4px!important}.live-lower-refresh{height:29px!important;padding:0 10px!important;font-size:6px!important}
.live-evidence-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;padding:7px 9px;border-bottom:1px solid #e3e9ed;background:#fbfcfd}.live-evidence-summary article{min-width:0;border:1px solid #e0e7ec;border-radius:7px;background:#fff;padding:6px 7px}.live-evidence-summary span,.live-evidence-summary strong,.live-evidence-summary small{display:block}.live-evidence-summary span{font-size:5.4px;font-weight:950;letter-spacing:.45px;color:#788792}.live-evidence-summary strong{font-size:11px;color:#153b59;margin-top:1px}.live-evidence-summary small{font-size:5.4px;color:#7d8a93;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.live-evidence-table-wrap{min-height:0;overflow:auto}.live-lower-table{width:100%;margin:0}.live-lower-table.performance-trips{min-width:1280px}.live-lower-table.stops{min-width:1180px}
.live-lower-table td:first-child small{display:block;font-size:5.4px;color:#7b8993;margin-top:1px}.live-lower-table tr.direction-break td{background:#eef4f8;color:#16436a;font-weight:950;font-size:6px;letter-spacing:.55px}
@media(max-width:1350px){.live-lower-tabs button{min-width:120px}.live-lower-actions .button,.live-lower-actions .map-expand-button{padding:0 7px!important}.live-lower-route-context{max-width:165px}.live-evidence-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:820px){.live-lower-shell{overflow:visible}.live-lower-toolbar{position:sticky;top:0;z-index:30}.live-lower-tabs button{min-width:116px}.live-lower-view{min-height:360px}.live-evidence-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.live-lower-map .map-surface{min-height:320px!important}}


/* ========================================================================
   V0.18.2 ROUTE REPORT READABILITY PASS
   UI-only. Scoped strictly to Route-by-Route Report. No AVL/map/traffic/KPI
   calculation logic is changed by this block.
   ======================================================================== */
.route-report-titlebar h2{font-size:20px}
.route-report-titlebar p:not(.eyebrow){font-size:9.5px;line-height:1.45}
.route-report-filter-grid label>span,.route-report-service-day>span,.route-report-direction>span{font-size:7.2px;letter-spacing:.55px}
.route-report-filter-grid select,.route-report-filter-grid input{font-size:11px;font-weight:850}
.route-report-service-day b{font-size:12px}.route-report-service-day small{font-size:7.2px}
.route-report-direction button{font-size:9px}
.route-report-export-menu b{font-size:9px}.route-report-export-menu small{font-size:7.2px}
.report-switch{font-size:8.5px!important}.route-report-data-note{font-size:8px}.route-report-secondary-controls .button{font-size:8px}
.route-report-kpis span{font-size:7.2px}.route-report-kpis strong{font-size:19px}.route-report-kpis small{font-size:7px;line-height:1.3}
.route-report-matrix-head h3{font-size:13px}.route-report-matrix-head .eyebrow{font-size:7px}
.route-report-table{font-size:8.8px}
.route-report-table th,.route-report-table td{height:42px;padding:6px 7px}
.route-report-table th{height:68px;font-size:7.8px;line-height:1.2}
.route-report-table th small{font-size:6.5px;max-width:98px}
.route-report-table th.stop-head{height:116px;min-width:60px;max-width:60px;padding:8px 5px;font-size:7.4px;line-height:1.15}
.route-report-table th.stop-head span{max-height:96px}
.route-report-table th.stop-head small{font-size:6.4px;margin:0 0 4px}
.route-report-table td.stop-cell{min-width:78px;max-width:78px;padding:5px}
.route-report-table td.stop-cell b{font-size:8.8px;font-weight:900}
.route-report-table td.stop-cell small{font-size:6.7px;line-height:1.2}
.route-report-table td.stop-cell.missing{font-size:10px}
.route-report-table .frozen-1{left:0;min-width:92px}.route-report-table .frozen-2{left:92px;min-width:100px}.route-report-table .frozen-3{left:192px;min-width:92px}.route-report-table .frozen-4{left:284px;min-width:94px}
.route-report-table td.frozen b{font-size:9px}.route-report-table td.frozen small{font-size:6.8px}
.route-report-table .pill{font-size:6.9px;padding:4px 7px;min-width:58px}
.route-trip-status{min-width:66px;padding:5px 7px;font-size:6.8px}
.route-report-legend span{font-size:7px}.route-report-pagination{font-size:7.4px}.route-report-pagination select{font-size:7.5px}
.route-report-investigation{padding:12px}.route-report-investigation-head h3{font-size:15px}.route-report-investigation-empty{font-size:8.8px;line-height:1.55}
.route-report-trip-facts article{padding:8px 9px}.route-report-trip-facts span{font-size:6.8px}.route-report-trip-facts b{font-size:9.5px}
.route-report-side-head{font-size:7.4px}.route-report-stop-item{grid-template-columns:50px 14px 1fr;gap:6px;min-height:32px;font-size:7.5px}.route-report-stop-item:before{left:57px}.route-report-stop-item b{font-size:7.6px}.route-report-stop-item small{font-size:6.5px}.route-report-ai-card p{font-size:7.8px;line-height:1.6}.route-report-side-actions .button{font-size:7.5px}
@media(max-width:1450px){.route-report-kpis strong{font-size:17px}.route-report-table{font-size:8.2px}.route-report-table td.stop-cell b{font-size:8.2px}.route-report-investigation-head h3{font-size:14px}}


/* ========================================================================
   V0.18.3 EXPECTED + ACTUAL COMPARISON
   Report-only presentation enhancement. The Expected tab keeps official GTFS
   as schedule authority and shows already-derived AVL actual passage evidence
   underneath. No Live AVL, GTFS, map, traffic, matching, EWT or MPS logic.
   ======================================================================== */
.report-dot.actual{background:#198c55}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual{min-width:104px;max-width:104px;padding:5px 6px;background:#fbfaff}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .expected-time{display:flex;align-items:center;justify-content:center;gap:4px;line-height:1.15}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .expected-time em{font-style:normal;font-size:6px;font-weight:1000;letter-spacing:.35px;color:#7455d8;background:#f0edff;border:1px solid #ddd5ff;border-radius:999px;padding:2px 3px}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .expected-time b{display:inline;font-size:9px;color:#5e43c7}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time{display:block;margin-top:4px;padding-top:3px;border-top:1px solid #ece8fb;font-size:6.8px;font-weight:900;color:#607084;line-height:1.2}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time.on_time,.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time.observed{color:#198c55}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time.early{color:#2574bf}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time.late{color:#c8740d}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time.missing{color:#d92f39}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time.partial{color:#c47709}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time.no_data,.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time.not_due,.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time.pending{color:#8793a1}
.route-report-page.expected-mode .route-report-table td.frozen.frozen-4 small.expected-actual-status{display:block;margin-top:4px;font-size:6.3px;font-weight:1000;line-height:1.15;color:#657389}
.route-report-page.expected-mode .route-report-table td.frozen.frozen-4 small.expected-actual-status.red{color:#d92f39}.route-report-page.expected-mode .route-report-table td.frozen.frozen-4 small.expected-actual-status.amber{color:#c47709}.route-report-page.expected-mode .route-report-table td.frozen.frozen-4 small.expected-actual-status.green{color:#198955}.route-report-page.expected-mode .route-report-table td.frozen.frozen-4 small.expected-actual-status.blue{color:#2c6dba}
@media(max-width:1450px){.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual{min-width:98px;max-width:98px}.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .expected-time b{font-size:8.5px}.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time{font-size:6.4px}}

/* ========================================================================
   V0.18.4 ROUTE REPORT STOP HEADER READABILITY
   UI-only report presentation. Stop names are horizontal/wrapped by default,
   with a compact alternative and an optional collapsible investigation panel.
   No AVL, GTFS, traffic, map, vehicle matching, EWT or MPS logic is changed.
   ======================================================================== */
.route-report-matrix-meta{align-items:center;flex-wrap:wrap;justify-content:flex-end}
.route-report-density-toggle{display:inline-flex;align-items:center;padding:2px;border:1px solid #dce3ed;border-radius:7px;background:#f7f9fc}
.route-report-density-toggle button,.route-report-panel-toggle{height:24px;border:0;border-radius:5px;background:transparent;color:#647286;font-size:6.8px;font-weight:1000;letter-spacing:.3px;padding:0 7px;white-space:nowrap}
.route-report-density-toggle button.active{background:#6747d7;color:#fff;box-shadow:0 2px 6px rgba(96,64,207,.2)}
.route-report-panel-toggle{border:1px solid #dce3ed;background:#fff;color:#42536b}
.route-report-panel-toggle:hover{border-color:#b9aaff;color:#5f43ce;background:#faf8ff}

/* All stop headers remain horizontal. Readable is the default production view. */
.route-report-page .route-report-table th.stop-head{writing-mode:horizontal-tb;transform:none;vertical-align:middle;white-space:normal;text-align:center}
.route-report-page .route-report-table th.stop-head small{writing-mode:horizontal-tb;transform:none;margin:0 0 5px;line-height:1}
.route-report-page .route-report-table th.stop-head .stop-name{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere;word-break:normal;white-space:normal;margin:0 auto}

.route-report-page.readable-mode .route-report-table th.stop-head{height:84px;min-width:112px;max-width:112px;padding:8px 8px;font-size:9px;line-height:1.22}
.route-report-page.readable-mode .route-report-table th.stop-head small{font-size:7px}
.route-report-page.readable-mode .route-report-table th.stop-head .stop-name{-webkit-line-clamp:3;max-width:98px;max-height:34px}
.route-report-page.readable-mode .route-report-table td.stop-cell{min-width:112px;max-width:112px;padding:6px 7px}
.route-report-page.readable-mode .route-report-table td.stop-cell b{font-size:9px}
.route-report-page.readable-mode .route-report-table td.stop-cell small{font-size:7px}
.route-report-page.expected-mode.readable-mode .route-report-table th.stop-head{min-width:124px;max-width:124px}
.route-report-page.expected-mode.readable-mode .route-report-table th.stop-head .stop-name{max-width:110px}
.route-report-page.expected-mode.readable-mode .route-report-table td.stop-cell.expected-actual{min-width:124px;max-width:124px;padding:6px 7px}
.route-report-page.expected-mode.readable-mode .route-report-table td.stop-cell.expected-actual .expected-time b{font-size:9.5px}
.route-report-page.expected-mode.readable-mode .route-report-table td.stop-cell.expected-actual .actual-time{font-size:7.2px}

/* Compact keeps the matrix dense without returning to unreadable vertical text. */
.route-report-page.compact-mode .route-report-table th.stop-head{height:74px;min-width:78px;max-width:78px;padding:6px 5px;font-size:7.4px;line-height:1.15}
.route-report-page.compact-mode .route-report-table th.stop-head small{font-size:6.2px;margin-bottom:4px}
.route-report-page.compact-mode .route-report-table th.stop-head .stop-name{-webkit-line-clamp:3;max-width:70px;max-height:28px}
.route-report-page.compact-mode .route-report-table td.stop-cell{min-width:78px;max-width:78px;padding:5px}
.route-report-page.expected-mode.compact-mode .route-report-table th.stop-head{min-width:104px;max-width:104px}
.route-report-page.expected-mode.compact-mode .route-report-table th.stop-head .stop-name{max-width:94px}
.route-report-page.expected-mode.compact-mode .route-report-table td.stop-cell.expected-actual{min-width:104px;max-width:104px}

/* Give the stop matrix the full workspace when the controller hides Trip Investigation. */
.route-report-page.investigation-collapsed .route-report-main-grid{grid-template-columns:minmax(0,1fr)}
.route-report-page.investigation-collapsed .route-report-investigation{display:none}

@media(max-width:1450px){
  .route-report-page.readable-mode .route-report-table th.stop-head{min-width:106px;max-width:106px;font-size:8.5px}
  .route-report-page.readable-mode .route-report-table td.stop-cell{min-width:106px;max-width:106px}
  .route-report-page.expected-mode.readable-mode .route-report-table th.stop-head,.route-report-page.expected-mode.readable-mode .route-report-table td.stop-cell.expected-actual{min-width:118px;max-width:118px}
}
@media(max-width:1180px){.route-report-panel-toggle{display:none}}

/* V0.18.8 · governed performance timing points */
.service-timing-point-config{margin:12px 0 4px;padding:12px;border:1px solid #d8e1ec;border-radius:14px;background:#f8fbff}
.service-timing-point-head,.service-timing-point-title{display:flex;align-items:center;justify-content:space-between;gap:12px}
.service-timing-point-head>div{display:grid;gap:3px}.service-timing-point-head small{color:#607087;line-height:1.35;max-width:920px}
.qsi-route-close-assist{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:9px 0 10px;padding:9px 10px;border:1px solid #b7d4e7;border-radius:10px;background:#eef8fe}.qsi-route-close-assist>div{display:grid;gap:2px}.qsi-route-close-assist b{font-size:8px;letter-spacing:.06em;color:#15577f}.qsi-route-close-assist span{font-size:7px;line-height:1.4;color:#536f82}.qsi-route-close-assist.review{border-color:#e8c77d;background:#fff9ec}.qsi-route-close-assist.review b{color:#8a5a00}.qsi-route-close-assist[hidden]{display:none!important}
.service-timing-point-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:10px}
.service-timing-point-columns section{min-width:0;padding:10px;border:1px solid #dbe4ef;border-radius:12px;background:#fff}
.service-timing-point-title .button{min-height:26px;padding:4px 9px;font-size:10px}
.service-timing-point-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 8px;margin-top:8px;max-height:180px;overflow:auto;padding-right:3px}
.service-timing-point-list label{display:flex;align-items:center;gap:7px;min-width:0;padding:5px 7px;border:1px solid #e4eaf2;border-radius:8px;background:#fbfdff;cursor:pointer}
.service-timing-point-list label:hover{border-color:#a9bce0;background:#f5f8ff}.service-timing-point-list input{flex:0 0 auto;margin:0}.service-timing-point-list span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:700;color:#152946}.service-timing-point-list small{flex:0 0 auto;color:#78879a;font-size:9px}
.service-timing-point-note{margin-top:9px;padding:8px 10px;border-radius:9px;background:#eef4ff;color:#405575;font-size:10px;line-height:1.4}
.service-timing-point-config.family-disabled{opacity:.72}.service-timing-point-config.family-disabled .service-timing-point-columns{display:none}
@media(max-width:1100px){.service-timing-point-columns{grid-template-columns:1fr}.service-timing-point-list{grid-template-columns:1fr}}

/* V0.20.8 public legal/about links on the secured login surface. */
.login-public-links{display:flex;justify-content:center;align-items:center;gap:7px;margin-top:10px;font-size:10px;font-weight:800;letter-spacing:.08em;color:#7b8c9c}
.login-public-links a{color:#4d6a82;text-decoration:none}.login-public-links a:hover{text-decoration:underline;color:#173b59}

/* V0.21.0 · governed grouped navigation builder */
.admin-tabs{overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.admin-tab{flex:0 0 auto}
.main-nav{flex:1 1 auto;min-height:0;align-content:start;padding-right:2px;overscroll-behavior:contain}
.main-nav[data-scroll-mode="auto"]{overflow-y:auto;overflow-x:hidden}.main-nav[data-scroll-mode="always"]{overflow-y:scroll;overflow-x:hidden;scrollbar-gutter:stable}.main-nav[data-scroll-mode="off"]{overflow:hidden}
.nav-group{display:grid;gap:2px;min-width:0}.nav-group[hidden]{display:none!important}
.nav-group-toggle{position:relative;border:1px solid transparent;background:transparent;color:#465662;padding:8px;border-radius:8px;display:grid;grid-template-columns:20px minmax(0,1fr) 14px;grid-template-rows:auto auto;text-align:left;align-items:center;column-gap:6px;width:100%;cursor:pointer;transition:background .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease}
.nav-group-toggle>span{grid-row:1/3;color:#72818d;text-align:center;font-weight:950}.nav-group-toggle b{font-size:9px;line-height:1.05}.nav-group-toggle small{font-size:6.8px;color:#94a0a9;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-group-toggle em{grid-column:3;grid-row:1/3;font-style:normal;color:#81909a;font-size:10px;transition:transform .18s ease,color .16s ease}.nav-group-toggle:hover{background:#f0f7fb;border-color:#d6e8f3}.nav-group.open>.nav-group-toggle{background:linear-gradient(90deg,#dff1fb,#eef8fd);border-color:#a8d2e9;color:#0b4d7a;box-shadow:inset 3px 0 0 #1689c8}.nav-group.open>.nav-group-toggle>span,.nav-group.open>.nav-group-toggle em{color:#1689c8}.nav-group.open>.nav-group-toggle small{color:#5c829b}.nav-group.open>.nav-group-toggle em{transform:rotate(180deg)}
.nav-group-children{display:grid;gap:2px;margin:0 0 2px 8px;padding:2px 0 3px 6px;border-left:1px solid #dce5eb}.nav-group-children[hidden]{display:none!important}.nav-group-children .nav-item{padding-top:7px;padding-bottom:7px;grid-template-columns:18px 1fr}.nav-group-children .nav-item b{font-size:8.5px}.nav-group-children .nav-item small{font-size:6.5px}
.nav-item.nav-custom-link{text-decoration:none;box-sizing:border-box;cursor:pointer}.nav-item.nav-custom-link:after{content:'↗';grid-column:2;grid-row:1/3;justify-self:end;align-self:center;color:#93a1ab;font-size:8px}.nav-item.nav-custom-link b,.nav-item.nav-custom-link small{padding-right:12px}
.nav-group.has-active>.nav-group-toggle{color:#0b4d7a;box-shadow:inset 3px 0 0 #1689c8}.nav-group.has-active>.nav-group-toggle>span{color:#1689c8}.nav-group.has-active:not(.open)>.nav-group-toggle{background:#f3f9fd;border-color:#d6e8f3}.nav-group.has-active>.nav-group-toggle small{color:#64839a}

.navigation-admin-toolbar{align-items:flex-start}.navigation-admin-toolbar .admin-toolbar-actions{flex-wrap:wrap;justify-content:flex-end;max-width:620px}
.navigation-governance-note{display:flex;align-items:center;gap:12px;margin-bottom:8px;padding:9px 11px;border:1px solid #b8d6c1;border-left:4px solid #2e9c55;border-radius:9px;background:#f2fbf5;color:#315a3e}.navigation-governance-note b{flex:0 0 auto;font-size:8px;letter-spacing:.35px}.navigation-governance-note span{font-size:7px;line-height:1.4}
.navigation-admin-layout{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:10px;min-height:0;flex:1}.navigation-builder-panel,.navigation-safety-panel{min-height:0;padding:11px}.navigation-builder-panel{display:flex;flex-direction:column;overflow:hidden}.navigation-builder-controls{display:flex;align-items:end;justify-content:space-between;gap:12px;padding-bottom:8px;border-bottom:1px solid #e1e8ed}.navigation-builder-controls label{display:grid;gap:4px;min-width:260px}.navigation-builder-controls label>span{font-size:6.6px;font-weight:950;letter-spacing:.45px;color:#617380}.navigation-builder-controls select{height:34px;border:1px solid #cfdbe3;border-radius:7px;background:#fff;padding:0 9px;font-size:9px;color:#173b59}.navigation-builder-controls small{font-size:6.6px;color:#7f8d97}.navigation-builder-help{margin:7px 0;padding:7px 9px;background:#f5f8fa;border-radius:7px;color:#6d7d88;font-size:6.8px;line-height:1.45}
.navigation-builder-rows{min-height:0;overflow-y:auto;overflow-x:hidden;display:grid;gap:5px;padding:2px 3px 10px 0;overscroll-behavior:contain;scrollbar-gutter:stable}.navigation-editor-row{display:grid;grid-template-columns:24px minmax(110px,.75fr) minmax(150px,1fr) 36px 118px 72px 100px;gap:6px;align-items:center;padding:7px;border:1px solid #dce5eb;border-radius:9px;background:#fff}.navigation-editor-row[data-depth="1"]{margin-left:20px;border-left:3px solid #c6d7e2;background:#fbfdfe}.navigation-editor-row.is-group{background:#edf4f8;border-color:#c3d4df}.navigation-editor-row.dragging{opacity:.42}.navigation-editor-row.drag-over{box-shadow:0 0 0 2px #2b6d99 inset}.navigation-drag-handle{border:0;background:transparent;color:#80909b;font-size:14px;cursor:grab}.navigation-editor-field{display:grid;gap:2px;min-width:0}.navigation-editor-field span{font-size:5.6px;font-weight:950;color:#7a8993;letter-spacing:.35px}.navigation-editor-field input,.navigation-editor-field select{min-width:0;width:100%;height:29px;border:1px solid #cfdbe3;border-radius:6px;background:#fff;padding:0 7px;font-size:8px;color:#193a55;box-sizing:border-box}.navigation-editor-field.url{grid-column:2/5}.navigation-editor-row.has-url{grid-template-columns:24px minmax(120px,.72fr) minmax(170px,1fr) 36px 118px 72px 100px;grid-auto-rows:auto}.navigation-editor-row.has-url .navigation-editor-field.url{grid-row:2}.navigation-editor-row.has-url .navigation-editor-actions{grid-row:1/3}.navigation-editor-kind{display:grid;gap:2px;text-align:center}.navigation-editor-kind b{font-size:7px;color:#274b65}.navigation-editor-kind small{font-size:5.6px;color:#82909a}.navigation-editor-enabled{display:flex;align-items:center;justify-content:center;gap:4px;font-size:6px;font-weight:900;color:#647680}.navigation-editor-actions{display:flex;justify-content:flex-end;gap:3px}.navigation-editor-actions button{width:28px;height:28px;border:1px solid #ccd8e0;border-radius:6px;background:#fff;color:#33556d;font-size:10px;font-weight:900;cursor:pointer}.navigation-editor-actions button:hover{background:#edf5fa}.navigation-editor-actions button.danger{color:#b42531;border-color:#efc8cc}.navigation-editor-actions button:disabled{opacity:.35;cursor:not-allowed}
.navigation-safety-panel{overflow-y:auto}.navigation-safety-panel ul{margin:8px 0 12px;padding-left:17px;color:#536873;font-size:7.5px;line-height:1.65}.navigation-safety-lock{display:grid;gap:3px;padding:9px;border-radius:8px;background:#fff2f3;border:1px solid #f0cbd0;color:#7d3038}.navigation-safety-lock b{font-size:7px}.navigation-safety-lock span{font-size:6.8px;line-height:1.45}.navigation-preview-summary{margin-top:10px;padding:9px;border-radius:8px;background:#eff6fb;color:#3b5e75;font-size:7px;line-height:1.5}

html.occ-fullscreen .main-nav{overflow-y:auto!important;overflow-x:visible!important;scrollbar-width:none!important}.occ-fullscreen .main-nav::-webkit-scrollbar{display:none}.occ-fullscreen .nav-group{display:flex!important;flex-direction:column!important;align-items:center!important;width:100%!important}.occ-fullscreen .nav-group-toggle{display:flex!important;align-items:center!important;justify-content:center!important;width:44px!important;height:40px!important;min-height:40px!important;padding:0!important;border-radius:8px!important}.occ-fullscreen .nav-group-toggle>span{font-size:15px!important}.occ-fullscreen .nav-group-toggle b,.occ-fullscreen .nav-group-toggle small,.occ-fullscreen .nav-group-toggle em{display:none!important}.occ-fullscreen .nav-group-children{margin:0!important;padding:2px 0!important;border:0!important;align-items:center!important}.occ-fullscreen .nav-group-children .nav-item{margin:2px 0!important}

@media(max-width:1450px){.navigation-admin-layout{grid-template-columns:minmax(0,1fr) 240px}.navigation-editor-row{grid-template-columns:22px minmax(100px,.7fr) minmax(130px,1fr) 34px 100px 64px 96px}.navigation-admin-toolbar .admin-toolbar-actions{max-width:520px}}
@media(max-width:1050px){.navigation-admin-layout{grid-template-columns:1fr}.navigation-safety-panel{max-height:220px}.navigation-editor-row{grid-template-columns:22px minmax(100px,.7fr) minmax(130px,1fr) 34px 100px 64px 96px}}
@media(max-width:820px){.main-nav{overflow:visible!important}.nav-group{grid-column:1/-1}.nav-group-children{grid-template-columns:repeat(2,minmax(0,1fr));margin-left:0}.navigation-admin-toolbar{display:grid}.navigation-admin-toolbar .admin-toolbar-actions{justify-content:flex-start;max-width:none}.navigation-editor-row,.navigation-editor-row.has-url{grid-template-columns:22px minmax(110px,1fr) minmax(130px,1fr);grid-auto-rows:auto}.navigation-editor-row>*{grid-column:auto!important;grid-row:auto!important}.navigation-editor-row[data-depth="1"]{margin-left:8px}.navigation-editor-actions{grid-column:2/4!important;justify-content:flex-start}}

/* V0.21.1 · governed Supabase language packs and dynamic language buttons */
/* V0.21.2 · language template accessibility hotfix */
.language-button-host{display:contents}.language-toggle select{height:25px;max-width:92px;border:0;border-radius:999px;background:#eef3f6;color:#365269;padding:0 7px;font:800 9px/1 system-ui,sans-serif;cursor:pointer;outline:none}.language-toggle select:focus{box-shadow:0 0 0 2px rgba(29,90,133,.18)}
.language-schema-message{margin-bottom:10px;padding:9px 11px;border:1px solid #cbdce8;border-left:4px solid #477a9f;border-radius:9px;background:#f4f9fc;color:#38576b;font-size:8px;line-height:1.45}.language-schema-message.ready{border-color:#b9ddc3;border-left-color:#2c9b52;background:#f2fbf5;color:#315a3e}.language-schema-message.required{border-color:#efc5ca;border-left-color:#d92638;background:#fff5f6;color:#842b35}
.language-import-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.language-import-grid label{display:grid;gap:4px;min-width:0}.language-import-grid label>span{font-size:6.5px;font-weight:950;letter-spacing:.42px;color:#667785}.language-import-grid input,.language-import-grid select{width:100%;height:34px;box-sizing:border-box;border:1px solid #cbd8e1;border-radius:7px;background:#fff;padding:0 9px;color:#173b59;font-size:8.5px;font-weight:750;outline:none}.language-import-grid input:focus,.language-import-grid select:focus{border-color:#6d9bbb;box-shadow:0 0 0 2px rgba(52,113,157,.12)}.language-file-field{grid-column:span 2}.language-file-field input{padding:6px 8px}
.language-confirmation{display:flex;align-items:flex-start;gap:8px;margin:10px 0;padding:9px 11px;border:1px solid #e8cf8d;border-radius:9px;background:#fff9e9;color:#69501b;font-size:7.5px;line-height:1.45}.language-confirmation input{margin:1px 0 0;flex:0 0 auto}.language-import-actions{margin-top:8px}.language-import-result{min-height:68px;max-height:190px;overflow:auto;margin:8px 0 0;padding:10px;border:1px solid #d7e1e8;border-radius:8px;background:#0e293e;color:#d8edf9;font:700 8px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}
.language-template-downloads{grid-column:span 3;display:grid;gap:4px;align-content:end;min-width:0}.language-template-downloads>span{font-size:6.5px;font-weight:950;letter-spacing:.42px;color:#667785}.language-template-actions{display:flex;gap:6px;flex-wrap:wrap}.language-template-actions .button{min-height:34px;padding:6px 10px;font-size:6.5px;line-height:1.15}.language-template-downloads small{color:#6d7d89;font-size:6.5px;line-height:1.35}.language-confirmation{align-items:center;padding:8px 10px;font-size:8px}.language-confirmation input[type="checkbox"]{appearance:auto;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;margin:0!important;padding:0!important;flex:0 0 14px}
.language-pack-rows{display:grid;gap:8px}.language-pack-row{display:grid;grid-template-columns:minmax(170px,.8fr) minmax(0,3fr) auto;gap:9px;align-items:end;padding:10px;border:1px solid #dce5eb;border-radius:10px;background:#fbfdfe}.language-pack-row.is-builtin{grid-template-columns:minmax(180px,1fr) repeat(4,minmax(80px,.55fr));align-items:center;background:#f3f7f9}.language-pack-identity{min-width:0;align-self:center}.language-pack-identity b{display:block;color:#153a56;font-size:10px}.language-pack-identity small{display:block;margin-top:3px;color:#758895;font-size:6.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.language-pack-edit-grid{display:grid;grid-template-columns:repeat(8,minmax(72px,1fr));gap:6px}.language-pack-row label{display:grid;gap:3px;min-width:0}.language-pack-row label>span{font-size:5.8px;font-weight:950;letter-spacing:.35px;color:#73838e}.language-pack-row input,.language-pack-row select{min-width:0;width:100%;height:30px;box-sizing:border-box;border:1px solid #cdd9e1;border-radius:6px;background:#fff;padding:0 7px;color:#24475f;font-size:7.5px}.language-pack-metric{text-align:center}.language-pack-metric span{display:block;color:#7b8a94;font-size:5.7px;font-weight:950;letter-spacing:.3px}.language-pack-metric b{display:block;margin-top:3px;color:#173b59;font-size:9px}.language-pack-actions{display:flex;gap:5px;justify-content:flex-end}.language-pack-actions .button{min-height:30px;padding:5px 9px;font-size:6.5px}.language-pack-actions .danger{border-color:#e7b9bf;color:#b22433;background:#fff}
@media(max-width:1400px){.language-import-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.language-pack-row{grid-template-columns:160px minmax(0,1fr)}.language-pack-edit-grid{grid-template-columns:repeat(4,minmax(82px,1fr))}.language-pack-actions{grid-column:1/-1;justify-content:flex-start}}
@media(max-width:820px){.language-import-grid{grid-template-columns:1fr 1fr}.language-file-field,.language-template-downloads{grid-column:1/-1}.language-pack-row,.language-pack-row.is-builtin{grid-template-columns:1fr 1fr}.language-pack-row:not(.is-builtin){grid-template-columns:1fr}.language-pack-row:not(.is-builtin) .language-pack-identity,.language-pack-row:not(.is-builtin) .language-pack-edit-grid,.language-pack-row:not(.is-builtin) .language-pack-actions{grid-column:1}.language-pack-edit-grid{grid-template-columns:1fr 1fr}.language-pack-identity,.language-pack-actions{grid-column:1/-1}.language-toggle .language-button-host{display:none}.language-toggle select{display:block}}

/* V0.21.3 · revisioned Albanian runtime translations + targeted ID editor */
.language-confirmation-inline{display:inline-flex!important;align-items:center!important;gap:5px!important;width:auto!important;min-height:34px!important;margin:0!important;padding:5px 9px!important;border-radius:7px!important;box-sizing:border-box}.language-confirmation-inline span{font-size:6.5px!important;letter-spacing:.25px!important;white-space:nowrap}.language-confirmation-inline input[type="checkbox"]{width:13px!important;height:13px!important;min-width:13px!important;min-height:13px!important;flex:0 0 13px!important}.language-confirmation-note{margin:5px 0 0;padding:0 2px;color:#7a6a40;font-size:6.3px;line-height:1.35}.language-pack-row.is-builtin{grid-template-columns:minmax(180px,1fr) repeat(4,minmax(75px,.48fr)) auto}.language-pack-row.is-builtin .language-pack-actions{grid-column:auto}
.language-entry-editor{grid-column:1/-1;margin-top:3px;padding:10px;border:1px solid #b9cfdf;border-radius:9px;background:#f6fbfe;box-shadow:0 5px 15px rgba(20,61,91,.06)}.language-entry-editor[hidden]{display:none!important}.language-entry-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}.language-entry-editor-head>div{display:grid;gap:3px}.language-entry-editor-head b{font-size:8px;letter-spacing:.25px;color:#173b59}.language-entry-editor-head small{font-size:6.5px;line-height:1.4;color:#607789}.language-entry-editor-grid{display:grid;grid-template-columns:150px auto minmax(220px,1fr) minmax(220px,1fr) auto;gap:7px;align-items:end}.language-entry-editor-grid label{display:grid;gap:3px}.language-entry-editor-grid textarea{width:100%;min-height:54px;resize:vertical;box-sizing:border-box;border:1px solid #cbd8e1;border-radius:7px;background:#fff;padding:7px;color:#173b59;font:700 8px/1.4 system-ui,sans-serif}.language-entry-editor-grid textarea[readonly]{background:#edf3f6;color:#526978}.language-entry-editor-grid .button{min-height:32px;padding:5px 9px;font-size:6.5px}.language-entry-editor-message{min-height:14px;margin-top:6px;color:#3f657f;font-size:7px;font-weight:750}.language-entry-source,.language-entry-target{align-self:stretch}
@media(max-width:1400px){.language-pack-row.is-builtin{grid-template-columns:minmax(160px,1fr) repeat(4,minmax(72px,.45fr));}.language-pack-row.is-builtin .language-pack-actions{grid-column:1/-1;justify-content:flex-start}.language-entry-editor-grid{grid-template-columns:140px auto 1fr 1fr}.language-entry-editor-grid>[data-language-entry-save]{grid-column:1/-1;justify-self:start}}
@media(max-width:900px){.language-template-actions{align-items:stretch}.language-confirmation-inline{min-height:30px!important}.language-entry-editor-grid{grid-template-columns:1fr 1fr}.language-entry-source,.language-entry-target{grid-column:1/-1}.language-entry-editor-grid>[data-language-entry-save]{grid-column:1/-1}.language-pack-row.is-builtin{grid-template-columns:1fr 1fr}.language-pack-row.is-builtin .language-pack-actions{grid-column:1/-1}}

/* V0.21.3 SAFE HOTFIX · AUTHORITATIVE CIRCULAR GTFS ROUTE PRESENTATION
   Physical GTFS loop routes remain independent route_ids and use one closed oval AVL.
   This renderer is shared by Live AVL, 3-Route Monitor and P2P because all call operationalBoard(). */
.distance-avl.circular-route>.distance-avl-body{display:block!important;padding:0 12px 4px 0!important;overflow:hidden!important}
.circular-route-lane{display:grid;grid-template-columns:122px minmax(0,1fr);height:100%;min-height:0;position:relative}
.circular-dir{align-self:center;z-index:8}
.circular-track{position:relative;height:100%;min-width:0;min-height:0;overflow:hidden;margin-right:10px}
.circular-rails{position:absolute;inset:0;width:100%;height:100%;z-index:1;overflow:visible}
.circular-base-rail{fill:none;stroke:#0f2d55;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.circular-traffic-segment{fill:none;stroke:var(--circular-traffic,#20a052);stroke-width:6;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 1px #fff)}
.circular-section-highlight{fill:none;stroke:#d72631;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;opacity:.20;vector-effect:non-scaling-stroke}
.circular-stop{position:absolute;z-index:6;transform:translate(-50%,-50%);pointer-events:auto}
.circular-stop>i{display:block;width:9px;height:9px;border-radius:50%;background:#0f2d55;border:1px solid #0f2d55;box-shadow:0 0 0 2px #fff}
.circular-stop.terminal>i{width:13px;height:13px;margin:-2px;background:#d72631;border-color:#d72631;box-shadow:0 0 0 3px #fff,0 0 0 4px rgba(215,38,49,.22)}
.circular-stop>b{position:absolute;display:block;min-width:max-content;max-width:92px;font-size:var(--avl-stop-label-px);font-weight:900;line-height:1.05;color:#17324c;background:rgba(255,255,255,.84);border-radius:3px;padding:1px 2px;text-shadow:0 0 3px #fff,0 0 3px #fff;white-space:normal;pointer-events:none}
.circular-stop.terminal>b{color:#a01826;font-weight:1000}
.circular-stop>b.bottom{left:50%;bottom:14px;transform:translateX(-50%);text-align:center}
.circular-stop>b.top{left:50%;top:14px;transform:translateX(-50%);text-align:center}
.circular-stop>b.left{left:14px;top:50%;transform:translateY(-50%);text-align:left}
.circular-stop>b.right{right:14px;top:50%;transform:translateY(-50%);text-align:right}
.circular-bus{top:0;bottom:auto;z-index:14!important;transform:translate(-50%,-50%) scale(var(--avl-bus-scale,1))!important;transform-origin:center!important}
.circular-terminal-caption{position:absolute;left:9.5%;top:50%;transform:translate(-50%,18px);z-index:7;max-width:110px;text-align:center;font-size:5.6px;font-weight:1000;color:#9d1f2b;background:#fff;border:1px solid #e8c4c9;border-radius:999px;padding:2px 5px;white-space:nowrap}
.circular-empty{top:50%!important;transform:translate(-50%,-50%)!important;z-index:10}
@media(max-width:1350px){.circular-route-lane{grid-template-columns:112px minmax(0,1fr)}.circular-stop>b{max-width:80px}}
.triple-monitor-board .circular-route-lane{grid-template-columns:108px minmax(0,1fr)}
.triple-monitor-board .circular-dir{margin-left:9px;margin-right:8px;padding:5px 6px}
.triple-monitor-board .circular-dir b{font-size:6.7px}.triple-monitor-board .circular-dir span{font-size:5.4px}
.triple-monitor-board .circular-stop>b{font-size:5.1px;max-width:62px;padding:0 1px}
.triple-monitor-board .circular-stop>i{width:7px;height:7px}.triple-monitor-board .circular-stop.terminal>i{width:10px;height:10px;margin:-1px}
.triple-monitor-board .circular-terminal-caption{font-size:4.8px;transform:translate(-50%,13px)}
.triple-monitor-board .circular-bus{transform:translate(-50%,-50%) scale(calc(var(--avl-bus-scale,1) * var(--avl-compact-bus-scale,.72)))!important;transform-origin:center!important}

/* V0.21.3 CIRCULAR ROUTE INTEGRITY V3 · sequence-aware travel direction */
.circular-bus.travel-left{clip-path:polygon(20% 0,100% 0,100% 100%,20% 100%,0 50%);padding-left:11px;padding-right:6px}
.circular-bus.travel-right{clip-path:polygon(0 0,80% 0,100% 50%,80% 100%,0 100%,0 0);padding-left:7px;padding-right:8px}
.circular-bus .circular-travel-arrow{position:absolute;right:4px;top:3px;display:grid;place-items:center;width:12px;height:12px;border-radius:999px;background:rgba(255,255,255,.82);color:#102d50;font-style:normal;font-size:8px;font-weight:1000;line-height:1;pointer-events:none;box-shadow:0 0 0 1px rgba(15,45,85,.12)}
.circular-bus.travel-left .circular-travel-arrow{left:4px;right:auto}
.circular-bus.travel-left>b,.circular-bus.travel-left>span,.circular-bus.travel-left>small,.circular-bus.travel-left>.hf-gap-line{padding-left:7px}
.circular-bus.travel-right>b,.circular-bus.travel-right>span,.circular-bus.travel-right>small,.circular-bus.travel-right>.hf-gap-line{padding-right:7px}
.triple-monitor-board .circular-bus .circular-travel-arrow{width:10px;height:10px;font-size:6.5px;top:2px}


/* PHASE 1 CRR STEP 2A · READ-ONLY WORKER VERIFICATION · reapplied on accepted Circular V3 + report-logo baseline */
.crr-verify-panel{display:grid;gap:18px;padding:20px}
.crr-verify-notice{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border:1px solid rgba(25,118,210,.24);border-radius:12px;background:rgba(25,118,210,.06)}
.crr-verify-notice b{white-space:nowrap;font-size:12px;letter-spacing:.08em}
.crr-verify-notice span{font-size:13px;line-height:1.45;color:var(--muted,#667085)}
.crr-verify-grid{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1fr) auto;gap:14px;align-items:end}
.crr-verify-grid label{display:grid;gap:7px}
.crr-verify-grid label>span{font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--muted,#667085)}
.crr-verify-grid select,.crr-verify-grid input{min-height:42px;width:100%}
.crr-verify-result{min-height:150px}
.crr-verify-card{display:grid;gap:16px;padding:18px;border:1px solid var(--line,#dfe4ea);border-radius:14px;background:var(--panel,#fff)}
.crr-verify-card.assigned{border-color:rgba(24,153,95,.35)}
.crr-verify-card.unassigned{border-color:rgba(227,153,18,.4)}
.crr-verify-card.error{border-color:rgba(196,58,58,.35)}
.crr-verify-card-head{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.crr-verify-card-head div,.crr-verify-owner{display:grid;gap:4px}
.crr-verify-card-head span,.crr-verify-owner span{font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--muted,#667085)}
.crr-verify-card-head b{font-size:17px}
.crr-verify-owner strong{font-size:24px;line-height:1.15}
.crr-verify-owner small,.crr-verify-safeguards span{font-size:12px;line-height:1.5;color:var(--muted,#667085)}
.crr-verify-safeguards{display:grid;gap:5px;padding-top:12px;border-top:1px solid var(--line,#dfe4ea)}
.crr-verify-safeguards b{font-size:11px;letter-spacing:.08em}
@media (max-width:900px){.crr-verify-grid{grid-template-columns:1fr}.crr-verify-card-head{grid-template-columns:1fr}.crr-verify-notice{display:grid}}


/* CRR Phase 1 Step 2B — Manager role + read-only route responsibility */
.manager-operator-scope{border:1px solid #b7d1e8;border-radius:12px;padding:12px;background:#f7fbff;display:block}.manager-operator-scope[hidden]{display:none!important}.manager-scope-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.manager-scope-head div{display:grid;gap:3px}.manager-scope-head span:first-child{font-size:10px;font-weight:800;letter-spacing:.09em;color:#284a68}.manager-scope-head b{font-size:12px;color:#0a2945}.manager-operator-scope p{margin:8px 0 10px;font-size:11px;color:#537086}.manager-operator-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}.manager-operator-check{display:flex;gap:9px;align-items:flex-start;border:1px solid #ccdbe7;border-radius:9px;padding:9px;background:#fff;cursor:pointer}.manager-operator-check input{margin-top:3px}.manager-operator-check div{display:grid;gap:2px}.manager-operator-check b{font-size:11px}.manager-operator-check small{font-size:9px;color:#6b7f90}.manager-operator-check.disabled{opacity:.55;cursor:not-allowed}
.crr-subtab-panel[hidden]{display:none!important}.crr-audit-panel{margin-top:0!important}.crr-audit-buttons{flex-wrap:wrap}
.crr-operations-page .page-head{align-items:flex-end}.crr-operations-page .inline-controls label{display:grid;gap:4px}.crr-operations-page .inline-controls label span{font-size:8px;font-weight:800;letter-spacing:.08em;color:#60798c}.crr-operations-page input[type="datetime-local"]{min-width:210px}.crr-operational-panel{overflow:hidden}.crr-operational-banner{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:12px 14px;border-bottom:1px solid #d7e2eb;background:#f7fbfe}.crr-operational-banner div{display:grid;gap:3px}.crr-operational-banner b{font-size:12px;color:#082d50}.crr-operational-banner span:not(.pill){font-size:10px;color:#5d7182}.crr-operational-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:10px 14px}.crr-operational-kpis article{border:1px solid #d8e3ec;border-radius:9px;padding:8px 10px;background:#fff;display:grid;gap:2px}.crr-operational-kpis span{font-size:8px;letter-spacing:.08em;font-weight:800;color:#63788b}.crr-operational-kpis b{font-size:15px;color:#082d50}.crr-operational-table-wrap{overflow:auto;max-height:calc(100vh - 355px);border-top:1px solid #e2e9ef}.crr-operational-table{width:100%;border-collapse:collapse;font-size:10px}.crr-operational-table th{position:sticky;top:0;z-index:1;background:#edf4f9;color:#173d5d;text-align:left;font-size:8px;letter-spacing:.05em;padding:8px;border-bottom:1px solid #bdcfdd}.crr-operational-table td{padding:8px;border-bottom:1px solid #e1e9ef;vertical-align:top}.crr-operational-table td>small{display:block;color:#6b7d8a;margin-top:2px}.crr-operational-safeguard{display:flex;gap:12px;padding:10px 14px;background:#f7fbff;border-top:1px solid #d4e2ed;font-size:9px;color:#597085}.crr-operational-safeguard b{color:#0a3558;white-space:nowrap}@media(max-width:900px){.crr-operational-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.crr-operational-banner,.crr-operational-safeguard{align-items:flex-start;flex-direction:column}}

/* Phase 1 CRR Step 2C — Controller Start / Resume Control Shift */
.crr-shift-panel{margin-bottom:10px;overflow:hidden;border-color:#bdd4e6}.crr-shift-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:13px 14px;background:#f4f9fd;border-bottom:1px solid #d6e4ee}.crr-shift-head h3{margin:2px 0 3px;color:#082d50;font-size:15px}.crr-shift-head p:not(.eyebrow){margin:0;color:#5b7285;font-size:9px;line-height:1.4}.crr-shift-body{padding:12px 14px}.crr-shift-start-grid{display:grid;grid-template-columns:minmax(220px,.55fr) minmax(0,1.45fr);gap:12px;align-items:start}.crr-shift-end-card,.crr-shift-routes-card,.crr-shift-active-summary{border:1px solid #d6e3ec;border-radius:10px;background:#fff;padding:11px}.crr-shift-end-card{display:grid;gap:8px}.crr-shift-end-card label{display:grid;gap:5px}.crr-shift-end-card label span,.crr-shift-routes-card>span,.crr-shift-active-summary span{font-size:8px;font-weight:900;letter-spacing:.07em;color:#60798b}.crr-shift-end-card input{width:100%;min-height:38px}.crr-shift-help{font-size:8px;line-height:1.45;color:#6c7f8d}.crr-shift-routes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:8px}.crr-shift-route{display:grid;grid-template-columns:auto 1fr;gap:7px;align-items:start;border:1px solid #d9e4ec;border-radius:8px;padding:8px;background:#fbfdff;min-width:0}.crr-shift-route input{margin-top:2px}.crr-shift-route b,.crr-shift-route small{display:block}.crr-shift-route b{font-size:9px;color:#123b5c}.crr-shift-route small{font-size:7px;color:#718491;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crr-shift-route.assigned{background:#f3f5f7;opacity:.72}.crr-shift-route.mine{border-color:#8fc9aa;background:#f1fbf5}.crr-shift-actions{display:flex;align-items:center;gap:10px;margin-top:10px}.crr-shift-actions .button{min-width:190px}.crr-shift-message{font-size:9px;color:#526b7e}.crr-shift-message.error{color:#bd2535}.crr-shift-message.good{color:#12804b}.crr-shift-active-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.crr-shift-active-summary b{display:block;margin-top:4px;font-size:13px;color:#082d50}.crr-shift-active-summary small{display:block;margin-top:3px;font-size:8px;color:#6c7d89}.crr-shift-active-routes{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}.crr-shift-route-pill{display:inline-flex;align-items:center;gap:5px;border:1px solid #96cfad;background:#eefaf3;color:#116c40;border-radius:999px;padding:5px 8px;font-size:8px;font-weight:900}.crr-shift-physical-note{margin-top:9px;padding-top:8px;border-top:1px solid #e3eaf0;font-size:8px;color:#617889}.crr-shift-physical-note b{color:#123d5e}@media(max-width:1050px){.crr-shift-start-grid{grid-template-columns:1fr}.crr-shift-routes{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.crr-shift-head{flex-direction:column}.crr-shift-routes,.crr-shift-active-grid{grid-template-columns:1fr}.crr-shift-actions{align-items:stretch;flex-direction:column}.crr-shift-actions .button{width:100%}}

/* Phase 1 CRR Step 2C1 — manage live route responsibility inside active shift */
.crr-live-route-manager{margin-top:12px;border:1px solid #cddde8;border-radius:10px;background:#f9fcfe;overflow:hidden}.crr-live-route-manager-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;padding:10px 11px;border-bottom:1px solid #dbe6ee;background:#f1f7fb}.crr-live-route-manager-head>div{display:grid;gap:3px}.crr-live-route-manager-head>div>span{font-size:8px;font-weight:900;letter-spacing:.08em;color:#60798b}.crr-live-route-manager-head>div>b{font-size:11px;color:#0b3557}.crr-live-route-manager-head .crr-shift-message{max-width:52%;text-align:right}.crr-live-route-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px}.crr-live-route-card{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #d7e3eb;border-radius:9px;padding:9px 10px;background:#fff;min-width:0}.crr-live-route-card.mine{border-color:#7fc29e;background:#f2fbf6}.crr-live-route-card.available{border-color:#b8d4e8;background:#f7fbfe}.crr-live-route-card.other{background:#f4f6f8;opacity:.78}.crr-live-route-copy{display:grid;gap:2px;min-width:0}.crr-live-route-copy>span{font-size:10px;font-weight:1000;color:#0b3557}.crr-live-route-copy>b{font-size:8px;letter-spacing:.07em;color:#557084}.crr-live-route-card.mine .crr-live-route-copy>b{color:#117044}.crr-live-route-card.available .crr-live-route-copy>b{color:#a96b00}.crr-live-route-copy>small{font-size:8px;color:#6d808e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crr-live-route-action{flex:0 0 auto}.crr-live-route-action .button.small{min-height:30px;padding:6px 9px;font-size:8px;white-space:nowrap}@media(max-width:900px){.crr-live-route-manager-head{flex-direction:column}.crr-live-route-manager-head .crr-shift-message{max-width:none;text-align:left}.crr-live-route-grid{grid-template-columns:1fr}.crr-live-route-card{align-items:flex-start;flex-direction:column}.crr-live-route-action{width:100%}.crr-live-route-action .button.small{width:100%}}

/* CRR Phase 1 Step 2D — atomic Controller-to-Controller transfer */
.crr-live-route-action{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.crr-transfer-backdrop{position:fixed;inset:0;z-index:14000;background:rgba(4,24,42,.48);display:flex;align-items:center;justify-content:center;padding:22px}.crr-transfer-dialog{width:min(620px,96vw);max-height:min(720px,90vh);overflow:auto;border:1px solid #b9cfdf;border-radius:14px;background:#fff;box-shadow:0 24px 70px rgba(4,30,52,.28)}.crr-transfer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:16px 17px 14px;border-bottom:1px solid #dbe6ee;background:#f4f9fd}.crr-transfer-head>div{display:grid;gap:4px}.crr-transfer-head span{font-size:8px;font-weight:1000;letter-spacing:.09em;color:#5e788b}.crr-transfer-head h3{margin:0;color:#082d50;font-size:17px}.crr-transfer-head p{margin:0;color:#607789;font-size:9px;line-height:1.45}.crr-transfer-head .icon-button{flex:0 0 auto;width:32px;height:32px;border:1px solid #c9d9e4;border-radius:9px;background:#fff;color:#153d5c;font-size:20px;line-height:1;cursor:pointer}.crr-transfer-body{display:grid;gap:12px;padding:16px 17px}.crr-transfer-loading{padding:16px;border:1px dashed #c8dae7;border-radius:9px;background:#f8fbfd;color:#5c7486;font-size:9px;text-align:center}.crr-transfer-field{display:grid;gap:6px}.crr-transfer-field>span{font-size:8px;font-weight:1000;letter-spacing:.08em;color:#557084}.crr-transfer-field select,.crr-transfer-field input{width:100%;min-height:40px;border:1px solid #c5d7e3;border-radius:8px;background:#fff;color:#0b3557;padding:8px 10px;font:inherit}.crr-transfer-field small{font-size:8px;line-height:1.45;color:#6b7f8e}.crr-transfer-message{display:grid;gap:4px;font-size:9px;color:#526b7e}.crr-transfer-message.warn{padding:11px;border:1px solid #ecd391;border-radius:9px;background:#fff9e9;color:#856111}.crr-transfer-message.error{padding:11px;border:1px solid #e7b4bc;border-radius:9px;background:#fff4f5;color:#b42537}.crr-transfer-message b,.crr-transfer-message span{display:block}.crr-transfer-actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 17px 16px;border-top:1px solid #e2eaf0}.crr-transfer-actions .button{min-width:150px}@media(max-width:720px){.crr-transfer-backdrop{padding:10px}.crr-transfer-actions{flex-direction:column-reverse}.crr-transfer-actions .button{width:100%}.crr-live-route-action{width:100%;justify-content:stretch}.crr-live-route-action .button.small{flex:1 1 140px}}


/* CRR Phase 1 Step 2D1 — compact operator scope + governed Manager/Admin release */
.access-form-grid .manager-operator-scope.wide{grid-column:1/-1}
.manager-operator-scope{padding:9px 10px}
.manager-operator-scope p{margin:5px 0 7px;font-size:9px;line-height:1.35}
.manager-scope-head{gap:8px}
.manager-scope-head span:first-child{font-size:8px}.manager-scope-head b{font-size:10px}
.manager-operator-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px}
.manager-operator-check{min-height:44px;padding:6px 8px;gap:7px;align-items:center}
.access-user-form .manager-operator-check input[type="checkbox"]{appearance:auto;width:15px!important;height:15px!important;min-width:15px!important;min-height:15px!important;margin:0!important;padding:0!important;flex:0 0 15px}
.manager-operator-check b{font-size:9px;line-height:1.2}.manager-operator-check small{font-size:7px;line-height:1.2}
.crr-governed-release-button{white-space:nowrap;min-height:28px!important;padding:5px 8px!important;font-size:7px!important}
.crr-operational-table td.crr-action-cell{white-space:nowrap}
.crr-action-stack{display:inline-flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.crr-supervisor-override-button{white-space:nowrap;min-height:28px!important;padding:5px 8px!important;font-size:7px!important}
.crr-governed-note{padding:9px 11px;border:1px solid #e6c878;border-radius:8px;background:#fff9e8;color:#755a14;font-size:8px;line-height:1.45}
@media(max-width:1000px){.manager-operator-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.manager-operator-grid{grid-template-columns:1fr}}

/* Performance Command Centre merge: one live/TODAY workspace, historical analysis stays in the other tabs. */
.pc-command-performance-detail{padding:12px!important;border-radius:13px!important;background:linear-gradient(180deg,#fff 0%,#fbfdff 100%)}
.pc-command-performance-detail .pc-command-performance-head{padding:0 0 10px!important;margin:0!important;border:0!important;background:transparent!important;box-shadow:none!important}
.pc-command-performance-detail .pc-command-performance-head h3{font-size:16px!important;margin:2px 0!important}
.pc-command-performance-detail .pc-command-performance-head p:not(.eyebrow){font-size:7px!important;margin:2px 0 0!important;color:#708490}
.pc-command-dashboard-kpis{display:block!important;margin:0!important}
@media(max-width:760px){.pc-command-performance-detail{padding:9px!important}.pc-command-performance-detail .pc-command-performance-head{display:grid;gap:8px}}


/* ==================================================================
   TIRANA AVL · GOVERNED IN-APP CONFIRMATION DIALOGS
   Replaces browser-native confirm/prompt warnings with the existing
   Tirana AVL modal visual language. UI-only; no action semantics changed.
   ================================================================== */
.platform-confirm-backdrop{z-index:16000;background:rgba(4,24,42,.56)}
.platform-confirm-dialog{width:min(560px,94vw);overflow:hidden}
.platform-confirm-body{gap:14px}
.platform-confirm-copy{display:grid;gap:9px;padding:12px 13px;border:1px solid #d6e2ea;border-radius:10px;background:#f8fbfd;color:#425e73;font-size:10px;line-height:1.55}
.platform-confirm-copy p{margin:0}
.platform-confirm-metric{display:grid;justify-items:center;gap:4px;padding:14px 16px;border:2px solid #dca7ab;border-radius:12px;background:#fff5f5;text-align:center}
.platform-confirm-metric>span{font-size:9px;font-weight:1000;letter-spacing:.08em;color:#7d2830}
.platform-confirm-metric>div{display:flex;align-items:baseline;justify-content:center;gap:8px;line-height:1}
.platform-confirm-metric strong{font-size:40px;line-height:1;font-weight:1000;letter-spacing:-.04em;color:#b31f2a}
.platform-confirm-metric b{font-size:15px;font-weight:1000;color:#7d2830}
.platform-confirm-metric small{font-size:8px;line-height:1.4;font-weight:850;color:#6f4b4f}
.platform-confirm-metric.impact{border-color:#b8cedd;background:#f3f8fb}.platform-confirm-metric.impact>span,.platform-confirm-metric.impact b{color:#244d6b}.platform-confirm-metric.impact strong{color:#123f63}.platform-confirm-metric.impact small{color:#5c7485}
.platform-confirm-typed input{font-weight:850;letter-spacing:.04em}
.platform-confirm-dialog .crr-transfer-actions .button:disabled{opacity:.45;cursor:not-allowed}
.platform-notice-dialog .crr-transfer-actions{justify-content:flex-end}.platform-notice-dialog .crr-transfer-actions .button{min-width:152px}
@media(max-width:720px){.platform-confirm-dialog{width:min(560px,100%)}.platform-confirm-copy{font-size:11px}.platform-confirm-metric strong{font-size:34px}.platform-confirm-metric b{font-size:13px}}

.crr-handback-bar{margin-top:10px;display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid #d5e1e9;border-radius:10px;padding:10px 11px;background:#f8fbfd}.crr-handback-bar.ready{border-color:#93cdaa;background:#f1fbf5}.crr-handback-bar.blocked{border-color:#ead39a;background:#fffaf0}.crr-handback-bar>div:first-child{display:grid;gap:3px}.crr-handback-bar>div:first-child>span{font-size:8px;font-weight:1000;letter-spacing:.08em;color:#557084}.crr-handback-bar>div:first-child>b{font-size:10px;color:#0b3557}.crr-handback-bar>div:first-child>small{font-size:8px;color:#6d808e}.crr-handback-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}.crr-handback-actions .button{min-width:175px}.crr-handback-blockers{display:grid;gap:7px}.crr-handback-blocker{border:1px solid #e3cf9c;border-radius:9px;background:#fffaf0;padding:9px 10px;display:grid;gap:5px}.crr-handback-blocker>div{display:flex;align-items:center;justify-content:space-between;gap:10px}.crr-handback-blocker span{font-size:10px;font-weight:1000;color:#0b3557}.crr-handback-blocker b{font-size:8px;letter-spacing:.08em;color:#9b6511}.crr-handback-blocker small{font-size:8px;line-height:1.45;color:#6c5d3a}@media(max-width:720px){.crr-handback-bar{align-items:stretch;flex-direction:column}.crr-handback-actions{align-items:stretch;flex-direction:column}.crr-handback-actions .button{width:100%}}


/* CRR Phase 1 Step 2H - Historical Responsibility / immutable audit UI */
.crr-audit-panel{overflow:hidden;margin-top:12px}.crr-audit-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:13px 14px;border-bottom:1px solid #d7e2eb;background:#f7fbfe}.crr-audit-head>div{display:grid;gap:3px}.crr-audit-head h3{margin:0;color:#082d50}.crr-audit-head p{margin:0;color:#607789;font-size:9px;line-height:1.45}.crr-audit-controls{display:grid;grid-template-columns:minmax(185px,1fr) minmax(185px,1fr) minmax(180px,1fr) minmax(180px,1fr) minmax(170px,.9fr) auto;gap:8px;align-items:end;padding:10px 14px;border-bottom:1px solid #e1e9ef;background:#fff}.crr-audit-controls label{display:grid;gap:4px}.crr-audit-controls label>span{font-size:8px;font-weight:900;letter-spacing:.08em;color:#5b7386}.crr-audit-controls input,.crr-audit-controls select{width:100%;min-height:36px;border:1px solid #c8d8e3;border-radius:8px;background:#fff;color:#0b3557;padding:7px 9px;font:inherit}.crr-audit-buttons{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}.crr-audit-summary{padding:9px 14px;background:#f8fbfd;border-bottom:1px solid #e1e9ef;color:#5e7485;font-size:9px}.crr-audit-section{padding:0 14px 12px}.crr-audit-section>.section-head{padding:11px 0 7px;margin:0}.crr-audit-section>.section-head h3{font-size:12px}.crr-audit-table-wrap{overflow:auto;max-height:290px;border:1px solid #d8e3ec;border-radius:9px;background:#fff}.crr-audit-table{width:100%;border-collapse:collapse;font-size:9px;min-width:1050px}.crr-audit-table th{position:sticky;top:0;z-index:1;background:#edf4f9;color:#173d5d;text-align:left;font-size:8px;letter-spacing:.05em;padding:8px;border-bottom:1px solid #bdcfdd}.crr-audit-table td{padding:8px;border-bottom:1px solid #e4ebf0;vertical-align:top;color:#173a57}.crr-audit-table td small{display:block;margin-top:2px;color:#6b7d8a}.crr-audit-table tr:last-child td{border-bottom:0}@media(max-width:1250px){.crr-audit-controls{grid-template-columns:repeat(3,minmax(0,1fr))}.crr-audit-buttons{justify-content:flex-start}}@media(max-width:760px){.crr-audit-head{flex-direction:column}.crr-audit-controls{grid-template-columns:1fr}.crr-audit-buttons .button{flex:1 1 120px}}

/* ROUTE TOPOLOGY INTELLIGENCE V1 · governed core/extension presentation */
.family-core-terminus{stroke:#d92532;stroke-width:4;vector-effect:non-scaling-stroke;stroke-linecap:round}
.family-core-terminus-dot{fill:#fff;stroke:#d92532;stroke-width:3;vector-effect:non-scaling-stroke}
.family-core-terminus-label{position:absolute;transform:translate(-50%,-50%);z-index:10;background:#fff7f8;border:1px solid #e7b7bc;border-radius:999px;padding:2px 6px;font-size:5.5px;font-weight:1000;color:#b4212e;white-space:nowrap;pointer-events:none}
.route-topology-block{margin-top:12px;border:1px solid #dce5eb;border-radius:12px;background:#fff;overflow:hidden}
.route-topology-toolbar{display:grid;grid-template-columns:minmax(220px,1.5fr) repeat(2,minmax(150px,.8fr)) auto;gap:8px;align-items:end;padding:12px;border-bottom:1px solid #e6edf2;background:#f8fbfd}
.route-topology-toolbar label,.route-topology-grid label,.topology-direction-grid label{display:grid;gap:4px;font-size:6.2px;font-weight:950;letter-spacing:.06em;color:#456277;text-transform:uppercase}
.route-topology-toolbar select,.route-topology-grid select,.topology-direction-grid select,.topology-direction-grid input,.route-topology-note{width:100%;min-width:0;border:1px solid #cddae4;border-radius:8px;background:#fff;color:#173e5a;padding:8px 9px;font-size:8px;font-weight:800}
.route-topology-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:12px;border-bottom:1px solid #edf2f5}
.route-topology-summary article{border:1px solid #e1e9ef;border-radius:10px;padding:8px 9px;background:#fff}
.route-topology-summary span{display:block;font-size:5.8px;font-weight:950;letter-spacing:.06em;color:#708391}
.route-topology-summary b{display:block;margin-top:4px;font-size:9px;color:#173e5a}
.route-topology-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;padding:12px}
.route-topology-evidence{margin:0 12px 12px;padding:9px 10px;border:1px solid #e1e9ef;border-radius:9px;background:#fbfdff;font-size:6.5px;line-height:1.45;color:#5c7182}
.topology-direction-wrap{padding:0 12px 12px}
.topology-direction-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.topology-direction-card{border:1px solid #e1e9ef;border-radius:10px;padding:9px;background:#fff}
.topology-direction-card>div:first-child{display:flex;justify-content:space-between;gap:8px;margin-bottom:7px}.topology-direction-card b{font-size:8px;color:#173e5a}.topology-direction-card small{font-size:5.8px;color:#718391}
.topology-direction-fields{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.route-topology-actions{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:10px 12px;border-top:1px solid #edf2f5;background:#fbfdff}
.route-topology-actions .feed-import-status{max-width:72%}
@media(max-width:1200px){.route-topology-toolbar{grid-template-columns:1fr 1fr}.route-topology-summary,.route-topology-grid{grid-template-columns:1fr 1fr}}
/* Realtime Source Orchestrator V1 */
.realtime-orchestrator-box{grid-column:1/-1;border:1px solid #cbdde8;border-left:4px solid #0f7a5a;border-radius:8px;background:linear-gradient(135deg,#f7fbfd,#f1faf7);padding:9px;margin-top:3px}.realtime-orchestrator-box .section-head{margin-bottom:7px}.realtime-orchestrator-box .section-head h3{font-size:10px}.realtime-orchestrator-box .section-head p:not(.eyebrow){font-size:6px;color:#71828f;max-width:720px}.realtime-orchestrator-grid{grid-template-columns:minmax(180px,.9fr) 170px minmax(260px,1.5fr)}.realtime-source-card{margin-top:8px;border:1px solid #d8e4ea;border-radius:7px;background:#fff;padding:8px}.realtime-source-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.realtime-source-title>b{font-size:7px;letter-spacing:.6px;color:#173b59}.toggle-row.compact span{font-size:7px!important}.mobile-admin-warning.gps-fallback{background:#edf5fb;border-color:#9ec6df;color:#184f73}

/* Step 2J1F · governed static GTFS automatic refresh */
.gtfs-static-refresh-box{grid-column:1/-1;border:1px solid #c9dce7;border-left:4px solid #0b7d63;border-radius:8px;background:linear-gradient(135deg,#f9fcfd 0%,#f1faf6 100%);padding:9px;display:grid;gap:8px}
.gtfs-static-refresh-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.gtfs-static-refresh-head>div{min-width:0}.gtfs-static-refresh-head b{display:block;font-size:8px;color:#173b59;margin-top:1px}.gtfs-static-refresh-head small{display:block;font-size:5.8px;color:#71828f;line-height:1.35;margin-top:3px;max-width:760px}.gtfs-static-refresh-grid{display:grid;grid-template-columns:minmax(210px,1fr) 150px minmax(240px,1.2fr);gap:8px;align-items:center}.gtfs-static-refresh-grid .toggle-row{height:34px;border:1px solid #d7e3e9;border-radius:6px;background:#fff;padding:0 9px;display:flex;align-items:center;gap:7px}.gtfs-static-refresh-grid .toggle-row input{width:15px;height:15px;accent-color:#0b7d63}.gtfs-static-refresh-grid .toggle-row span{font-size:6.2px;font-weight:950;letter-spacing:.45px;color:#173b59}.gtfs-static-refresh-status{border-top:1px solid #dbe8ed;padding-top:6px;font-size:5.9px;line-height:1.35;color:#657985}.gtfs-static-refresh-box.is-manual{border-left-color:#d59b23;background:linear-gradient(135deg,#fffdf8,#fff8e7)}.gtfs-static-refresh-box.is-pending{border-left-color:#d72631;background:linear-gradient(135deg,#fffafa,#fff1f2)}
@media(max-width:1100px){.gtfs-static-refresh-grid{grid-template-columns:1fr}.gtfs-static-refresh-head{align-items:center}}

/* Municipality Authority Admin account recovery v1 */
.login-recovery-link{appearance:none;border:0;background:transparent;color:#245f87;font:inherit;font-size:11px;font-weight:800;letter-spacing:.06em;text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:8px 4px;margin:0 auto;display:block}.login-recovery-link:hover{color:#173b59}.admin-recovery-request-card p:not(.eyebrow){color:#586f80;line-height:1.45}.admin-account-recovery-panel{margin-top:18px;border:1px solid #c7d6e0;border-radius:12px;background:#f7fafc;padding:16px;display:grid;gap:14px}.admin-account-recovery-panel[hidden]{display:none}.admin-recovery-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.admin-recovery-panel-head>div{display:grid;gap:3px}.admin-recovery-panel-head span:not(.pill){font-size:11px;font-weight:900;letter-spacing:.08em;color:#456276}.admin-recovery-panel-head b{font-size:14px;color:#173b59}.admin-recovery-panel-note{margin:0;color:#566d7d;line-height:1.45;font-size:12px}.admin-recovery-status-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.admin-recovery-status-grid>div{background:#fff;border:1px solid #d7e1e8;border-radius:9px;padding:10px;display:grid;gap:4px}.admin-recovery-status-grid span{font-size:9px;font-weight:900;letter-spacing:.08em;color:#718594}.admin-recovery-status-grid b{font-size:12px;color:#173b59}.admin-recovery-actions{display:flex;flex-wrap:wrap;gap:8px}.admin-break-glass-box{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end;border-top:1px solid #d9e2e8;padding-top:12px}.admin-break-glass-box label{display:grid;gap:6px}.admin-break-glass-box textarea{width:100%;box-sizing:border-box;resize:vertical;min-height:72px;border:1px solid #bfcfd9;border-radius:8px;padding:9px;font:inherit}.admin-break-glass-box small{grid-column:1/-1;color:#6a7882}.admin-recovery-message{font-size:12px;font-weight:700;color:#486276;min-height:18px}@media(max-width:900px){.admin-recovery-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-break-glass-box{grid-template-columns:1fr}}

/* TIRANA AVL · USER DIRECTORY V2 PHASE 1 · GOVERNED STAFF DIRECTORY */
.admin-tab-panel[data-admin-panel="users"]{overflow:hidden!important}
.user-directory-toolbar{margin-bottom:6px!important}.user-directory-toolbar>div{min-width:0}.user-directory-toolbar p:not(.eyebrow){max-width:920px}
.user-directory-role-tabs{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:6px;flex:0 0 auto}
.directory-role-tab{min-width:0;height:42px;border:1px solid #dbe4ea;border-radius:9px;background:#fff;padding:5px 8px;display:flex;align-items:center;justify-content:space-between;gap:6px;color:#526775;cursor:pointer;text-align:left}
.directory-role-tab:hover{border-color:#b8cad6;background:#f9fbfc}.directory-role-tab.active{border-color:#173b59;background:#173b59;color:#fff;box-shadow:0 4px 10px rgba(23,59,89,.14)}
.directory-role-tab span{font-size:6.4px;font-weight:950;letter-spacing:.55px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.directory-role-tab b{font-size:12px;line-height:1}
.user-directory-controls{display:grid;grid-template-columns:minmax(190px,1.65fr) repeat(5,minmax(105px,.72fr));gap:6px;margin-bottom:7px;padding:7px;border:1px solid #dfe7ec;border-radius:9px;background:#f8fafc;flex:0 0 auto}
.user-directory-controls label{display:grid;gap:3px;min-width:0}.user-directory-controls label>span{font-size:5.6px;font-weight:950;letter-spacing:.55px;color:#6f7f8b}.user-directory-controls input,.user-directory-controls select{height:32px;min-width:0;border:1px solid #cbd7df;border-radius:7px;background:#fff;padding:0 8px;font-size:7.7px;color:#213440;outline:none}.user-directory-controls input:focus,.user-directory-controls select:focus{border-color:#d9545c;box-shadow:0 0 0 2px #fff0f1}
.admin-tab-panel[data-admin-panel="users"] .access-only-layout.user-directory-layout{grid-template-columns:minmax(300px,.78fr) minmax(235px,.58fr) minmax(520px,1.75fr)!important;gap:8px!important;height:auto!important;min-height:0!important;flex:1 1 auto!important;overflow:hidden!important}
.admin-tab-panel[data-admin-panel="users"] .access-user-list-panel,.admin-tab-panel[data-admin-panel="users"] .access-user-detail-panel,.admin-tab-panel[data-admin-panel="users"] .access-editor-panel{min-height:0!important;max-height:100%!important}
.access-user-detail-panel{padding:10px;overflow:auto;display:flex;flex-direction:column;border-top:3px solid #173b59}
.access-user-detail-empty{flex:0 0 auto;display:grid;align-content:start;text-align:left;gap:4px;color:#82909a;padding:10px;border:1px dashed #cfdbe3;border-radius:8px;background:#f8fbfd}.access-user-detail-empty[hidden]{display:none!important}.access-user-detail-empty b{font-size:10px;color:#465865}.access-user-detail-empty span{font-size:6.3px;line-height:1.4;max-width:230px}
.access-user-detail-content{display:grid;gap:8px;align-content:start}.access-user-detail-content[hidden]{display:none!important}
.directory-person-card{display:grid;grid-template-columns:42px minmax(0,1fr);gap:9px;align-items:center;padding:9px;border:1px solid #dce5ea;border-radius:9px;background:#f8fbfd}.directory-person-avatar{width:42px;height:42px;border-radius:12px;background:#173b59;color:#fff;display:grid;place-items:center;font-size:14px;font-weight:950}.directory-person-card b,.directory-person-card span,.directory-person-card small{display:block;overflow:hidden;text-overflow:ellipsis}.directory-person-card b{font-size:9px;white-space:nowrap;color:#182f41}.directory-person-card span{font-size:6.2px;font-weight:950;letter-spacing:.45px;color:#d72631;margin-top:2px}.directory-person-card small{font-size:5.9px;color:#748590;margin-top:2px;white-space:normal;line-height:1.3}
.directory-detail-list{display:grid;gap:0;margin:0;border:1px solid #e0e7eb;border-radius:9px;overflow:hidden}.directory-detail-list>div{display:grid;grid-template-columns:minmax(90px,.85fr) minmax(0,1.15fr);gap:7px;padding:7px 8px;border-bottom:1px solid #edf1f4;background:#fff}.directory-detail-list>div:last-child{border-bottom:0}.directory-detail-list dt{font-size:5.4px;font-weight:950;letter-spacing:.5px;color:#7e8b94}.directory-detail-list dd{margin:0;font-size:6.5px;font-weight:850;color:#253b4a;text-align:right;overflow-wrap:anywhere}
.directory-governance-note{padding:8px 9px;border-left:3px solid #1f608e;border-radius:7px;background:#f2f8fc;font-size:6.2px;line-height:1.45;color:#5d7280}.directory-governance-note.driver{border-left-color:#8a5a00;background:#fff9ed;color:#715a2a}.directory-governance-note.admin{border-left-color:#d72631;background:#fff5f6;color:#735257}
.directory-pagination{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:6px;padding-top:7px;border-top:1px solid #e8edf0;margin-top:7px}.directory-pagination span{text-align:center;font-size:6.2px;font-weight:950;letter-spacing:.45px;color:#687985}.directory-pagination .button{padding:6px 8px;min-width:52px}
.access-user-row.driver{border-left:3px solid #d39a22}.access-user-row.admin{border-left:3px solid #d72631}.access-user-row .directory-id{font-size:6.1px!important;color:#6f7f8a!important}.access-user-row .directory-category{color:#5e7180!important;font-weight:900}.access-user-row .route-count{max-width:120px;overflow:hidden;text-overflow:ellipsis}
.access-user-form.driver-directory-lock .city-access-field,.access-user-form.driver-directory-lock .view-allocation-head,.access-user-form.driver-directory-lock #viewAllocationGrid,.access-user-form.driver-directory-lock #viewSchemaNotice,.access-user-form.driver-directory-lock .route-allocation-head,.access-user-form.driver-directory-lock #routeAllocationGrid,.access-user-form.driver-directory-lock #managerOperatorScopeField{opacity:.45!important;pointer-events:none!important}.access-user-form.driver-directory-lock #accessRole,.access-user-form.driver-directory-lock #accessCityAllocated{pointer-events:none!important;background:#f1f4f6!important}
@media(max-width:1500px){.admin-tab-panel[data-admin-panel="users"] .access-only-layout.user-directory-layout{grid-template-columns:minmax(275px,.72fr) minmax(215px,.52fr) minmax(470px,1.6fr)!important}.user-directory-controls{grid-template-columns:minmax(170px,1.4fr) repeat(5,minmax(92px,.7fr))}}
@media(max-width:1260px){.user-directory-role-tabs{grid-template-columns:repeat(4,minmax(0,1fr))}.user-directory-controls{grid-template-columns:repeat(3,minmax(0,1fr))}.user-directory-controls .directory-search{grid-column:span 2}.admin-tab-panel[data-admin-panel="users"] .access-only-layout.user-directory-layout{grid-template-columns:290px minmax(0,1fr)!important;grid-template-rows:minmax(260px,.75fr) minmax(180px,.55fr)!important;overflow:auto!important}.admin-tab-panel[data-admin-panel="users"] .access-user-list-panel{grid-column:1;grid-row:1}.admin-tab-panel[data-admin-panel="users"] .access-user-detail-panel{grid-column:1;grid-row:2}.admin-tab-panel[data-admin-panel="users"] .access-editor-panel{grid-column:2;grid-row:1/3}}
@media(max-width:820px){.user-directory-role-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.user-directory-controls{grid-template-columns:1fr 1fr}.user-directory-controls .directory-search{grid-column:1/-1}.admin-tab-panel[data-admin-panel="users"] .access-only-layout.user-directory-layout{display:block!important;overflow:auto!important}.admin-tab-panel[data-admin-panel="users"] .access-user-list-panel,.admin-tab-panel[data-admin-panel="users"] .access-user-detail-panel,.admin-tab-panel[data-admin-panel="users"] .access-editor-panel{max-height:none!important;margin-bottom:8px}.access-user-detail-panel{min-height:260px!important}}

/* GTFS GHOST BUS V1 -------------------------------------------------------
   Missing scheduled trips are planning/evidence overlays only. They never
   participate in live vehicle, headway, punctuality, fleet or kilometre maths. */
.distance-avl-legend i.missing{
  background:rgba(215,38,49,.06)!important;
  border:var(--ghost-bus-line-width,2px) var(--ghost-bus-border-style,dashed) var(--ghost-bus-color,#d72631)!important;
  box-sizing:border-box!important;
}
.corridor-bus.ghost-bus{
  background:transparent!important;
  color:var(--ghost-bus-color,#d72631)!important;
  box-shadow:none!important;
  border:0!important;
  z-index:11!important;
  cursor:help!important;
  isolation:isolate;
}
.corridor-bus.ghost-bus .ghost-bus-outline{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  z-index:0;
  overflow:visible;
  pointer-events:none;
}
.corridor-bus.ghost-bus .ghost-bus-outline polygon{
  fill:rgba(255,255,255,.86);
  stroke:var(--ghost-bus-color,#d72631);
  stroke-width:var(--ghost-bus-line-width,2px);
  stroke-dasharray:var(--ghost-bus-dasharray,6 5);
  stroke-linecap:round;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
}
.corridor-bus.ghost-bus .ghost-bus-copy{
  position:absolute;
  inset:8px 10px;
  display:grid;
  align-content:center;
  justify-items:center;
  gap:1px;
  text-align:center;
  z-index:2;
  pointer-events:none;
}
.corridor-bus.ghost-bus .ghost-bus-line{
  display:block;
  max-width:100%;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  line-height:1.03;
  text-shadow:0 1px 0 rgba(255,255,255,.95),0 0 6px rgba(255,255,255,.72);
}
.corridor-bus.ghost-bus .ghost-bus-line-1{
  font-size:var(--avl-marker-primary-px,12px);
  font-weight:1000;
  letter-spacing:.03em;
}
.corridor-bus.ghost-bus .ghost-bus-line-2{
  font-size:var(--avl-marker-secondary-px,10px);
  font-weight:900;
  letter-spacing:.035em;
}
.corridor-bus.ghost-bus .ghost-bus-line-3{
  font-size:var(--avl-marker-metric-px,10px);
  font-weight:900;
  letter-spacing:.04em;
}
.corridor-bus.ghost-bus .ghost-bus-line-4{
  color:var(--ghost-bus-color,#d72631)!important;
  font-size:var(--avl-marker-status-px,11px);
  font-weight:1000!important;
  letter-spacing:.055em;
}
.circular-bus.ghost-bus .ghost-bus-copy{
  inset:10px 10px 8px;
}
.corridor-bus.ghost-bus.driver-confirmed .ghost-bus-line-4{
  color:#7b4a00!important;
}
.corridor-bus.ghost-bus .circular-travel-arrow{
  z-index:3;
  border:var(--ghost-bus-line-width,2px) var(--ghost-bus-border-style,dashed) var(--ghost-bus-color,#d72631);
  color:var(--ghost-bus-color,#d72631);
}
.tirana-ghost-map-icon{background:transparent!important;border:0!important}
.bus-map-marker.ghost-map-marker{
  background:rgba(255,255,255,.9)!important;
  color:var(--ghost-bus-color,#d72631)!important;
  border:var(--ghost-bus-line-width,2px) var(--ghost-bus-border-style,dashed) var(--ghost-bus-color,#d72631)!important;
  box-shadow:0 2px 7px rgba(120,20,30,.16)!important;
}
.bus-map-marker.ghost-map-marker span{font-weight:1000!important;color:var(--ghost-bus-color,#d72631)!important;opacity:1!important}
.ghost-map-tooltip{border-color:var(--ghost-bus-color,#d72631)!important}

/* GTFS GHOST BUS ADMIN STYLE V1 ------------------------------------------
   Presentation-only controls. Missing-service evidence and all operational
   calculations remain unchanged. */
.corridor-bus.ghost-bus{transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * var(--ghost-bus-scale,.9)))!important}
.family-bus.ghost-bus{transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .9 * var(--ghost-bus-scale,.9)))!important}
.triple-monitor-board .corridor-bus.ghost-bus{transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .88 * var(--ghost-bus-scale,.9)))!important}
.circular-bus.ghost-bus{transform:translate(-50%,-50%) scale(calc(var(--avl-bus-scale,1) * var(--ghost-bus-scale,.9)))!important}
.triple-monitor-board .circular-bus.ghost-bus{transform:translate(-50%,-50%) scale(calc(var(--avl-bus-scale,1) * var(--avl-compact-bus-scale,.72) * var(--ghost-bus-scale,.9)))!important}
.ghost-display-config input[type=color]{width:100%;height:34px;border:1px solid #d8e1e7;border-radius:7px;background:#fff;padding:3px;cursor:pointer}
.ghost-admin-preview-wrap{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;margin-top:4px;padding:9px;border:1px solid #e1e8ed;border-radius:8px;background:#f8fbfd}.ghost-admin-preview-wrap>span{font-size:7px;font-weight:950;color:#718493;letter-spacing:.08em}.ghost-admin-preview{justify-self:center;min-width:76px;padding:6px 10px;text-align:center;background:rgba(255,255,255,.9);color:var(--preview-ghost-color,#d72631);border:var(--preview-ghost-width,2px) var(--preview-ghost-style,dashed) var(--preview-ghost-color,#d72631);border-radius:5px;transform:scale(var(--preview-ghost-scale,.9));transform-origin:center}.ghost-admin-preview b,.ghost-admin-preview small{display:block;white-space:nowrap}.ghost-admin-preview b{font-size:8px}.ghost-admin-preview small{font-size:7px;font-weight:1000;margin-top:2px}

/* DRIVER PLATFORM V2 · DRIVER PRESENCE FALLBACK ---------------------------
   Operational visibility only. These markers are deliberately separate from
   live vehicle arrays and therefore never change service/payment calculations. */
.corridor-bus.driver-presence-bus{
  background:transparent!important;
  color:#145b8c!important;
  box-shadow:none!important;
  border:0!important;
  z-index:12!important;
  cursor:pointer!important;
  isolation:isolate;
  transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * var(--ghost-bus-scale,.9)))!important;
}
.family-bus.driver-presence-bus{transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .9 * var(--ghost-bus-scale,.9)))!important}
.triple-monitor-board .corridor-bus.driver-presence-bus{transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .88 * var(--ghost-bus-scale,.9)))!important}
.circular-bus.driver-presence-bus{transform:translate(-50%,-50%) scale(calc(var(--avl-bus-scale,1) * var(--ghost-bus-scale,.9)))!important}
.corridor-bus.driver-presence-bus .ghost-bus-outline{position:absolute;inset:0;width:100%;height:100%;z-index:0;overflow:visible;pointer-events:none}
.corridor-bus.driver-presence-bus .ghost-bus-outline polygon{fill:rgba(240,249,255,.9);stroke:#145b8c;stroke-width:2px;stroke-dasharray:5 4;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.corridor-bus.driver-presence-bus>b,.corridor-bus.driver-presence-bus>span,.corridor-bus.driver-presence-bus>small{position:relative;z-index:2;text-shadow:0 1px 0 rgba(255,255,255,.95)}
.corridor-bus.driver-presence-bus>small{color:#145b8c!important;font-weight:1000!important;letter-spacing:.2px}
.corridor-bus.driver-presence-bus .circular-travel-arrow{z-index:3;border:2px dashed #145b8c;color:#145b8c}
.bus-map-marker.driver-presence-map-marker{background:rgba(240,249,255,.94)!important;color:#145b8c!important;border:2px dashed #145b8c!important;box-shadow:0 2px 7px rgba(20,91,140,.16)!important}
.bus-map-marker.driver-presence-map-marker span{font-weight:1000!important;color:#145b8c!important;opacity:1!important}
.tirana-driver-presence-map-icon{background:transparent!important;border:0!important}.driver-presence-map-tooltip{border-color:#145b8c!important}
.corridor-bus.ghost-bus.driver-confirmed .ghost-bus-outline polygon{fill:rgba(255,248,235,.93)}
.bus-map-marker.ghost-map-marker.driver-confirmed{background:rgba(255,248,235,.95)!important}
.vehicle-inspector-section.driver-duty{border-left:3px solid #145b8c}.driver-duty-grid article{background:#f5fbff}

/* TIRANA LIVE · MUNICIPALITY FLEET SERVICE SPEC COMPLIANCE V1 ------------
   Live presentation and governed service-spec input only. It does not alter
   service delivery, EWT, punctuality, kilometres or payment calculations. */
.pc-fleet-compliance{gap:9px!important}
.pc-fleet-compliance-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px!important;background:linear-gradient(135deg,#f8fbfe 0%,#fff 62%,#f6faff 100%)!important;border-left:4px solid #1769a0!important}
.pc-fleet-compliance-head h3{margin:2px 0;font-size:17px;color:#0c3655}.pc-fleet-compliance-head p:not(.eyebrow){margin:2px 0 0;font-size:7.4px;line-height:1.35;color:#708491;max-width:720px}
.pc-fleet-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.pc-fleet-head-actions .button{height:30px;font-size:6.5px}
.pc-fleet-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.pc-fleet-kpis article{position:relative;overflow:hidden;min-height:88px;background:#fff;border:1px solid #d9e4eb;border-radius:12px;padding:12px 13px;display:grid;align-content:start;gap:4px;box-shadow:0 2px 7px rgba(16,54,82,.035)}
.pc-fleet-kpis article:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#2678b8}.pc-fleet-kpis article.verified:before{background:#159257}.pc-fleet-kpis article.driver:before{background:#266fd0}.pc-fleet-kpis article.shortfall:before{background:#df2935}.pc-fleet-kpis article.coverage:before{background:#7251b5}
.pc-fleet-kpis span{font-size:6.3px;font-weight:1000;letter-spacing:.09em;color:#5f7484}.pc-fleet-kpis strong{font-size:25px;line-height:1.05;color:#0e3655}.pc-fleet-kpis .verified strong{color:#14804d}.pc-fleet-kpis .driver strong{color:#2464ba}.pc-fleet-kpis .shortfall strong{color:#cc2430}.pc-fleet-kpis .coverage strong{color:#6849a7}.pc-fleet-kpis small{font-size:6.2px;color:#82929d;margin-top:2px}
.pc-fleet-evidence-note{display:grid;grid-template-columns:22px auto 1fr;gap:7px;align-items:center;border:1px solid #cfe0ee;background:#f3f9fd;border-radius:9px;padding:8px 10px;color:#26587a}.pc-fleet-evidence-note>span{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#2879b8;color:#fff;font-size:8px;font-weight:1000}.pc-fleet-evidence-note b{font-size:7px}.pc-fleet-evidence-note p{margin:0;font-size:6.8px;line-height:1.35;color:#547184}
.pc-fleet-unconfigured{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;border:1px solid #efcf87;border-left:4px solid #e8a91d;background:#fff9ea;border-radius:9px;padding:9px 11px}.pc-fleet-unconfigured b{font-size:7.3px;color:#81580a}.pc-fleet-unconfigured span{font-size:6.7px;line-height:1.35;color:#806d44}
.pc-fleet-main-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(255px,.55fr);gap:9px;min-height:0}.pc-fleet-route-panel,.pc-fleet-exceptions,.pc-fleet-operator-panel,.pc-fleet-admin{padding:11px!important;border-radius:12px!important;min-width:0}
.pc-fleet-table-wrap{overflow:auto;max-height:390px;border:1px solid #dce6ec;border-radius:9px;margin-top:8px}.pc-fleet-table-wrap.operator{max-height:260px}
.pc-fleet-table{width:100%;border-collapse:collapse;font-size:7.3px;background:#fff}.pc-fleet-table thead{position:sticky;top:0;z-index:2;background:#f2f7fa}.pc-fleet-table th{padding:8px 7px;text-align:left;font-size:5.9px;letter-spacing:.06em;text-transform:uppercase;color:#5c7485;border-bottom:1px solid #ccdbe5;white-space:nowrap}.pc-fleet-table td{padding:8px 7px;border-bottom:1px solid #edf2f5;color:#28485f;vertical-align:middle;white-space:nowrap}.pc-fleet-table tr:last-child td{border-bottom:0}.pc-fleet-table tbody tr:hover{background:#f8fbfd}.pc-fleet-table tbody tr.at-risk{background:#fffafb}.pc-fleet-route-badge{display:inline-grid;place-items:center;min-width:28px;height:25px;padding:0 6px;border-radius:7px;background:#143e5e;color:#fff;font-size:7px}.pc-fleet-driver-value{color:#2464ba!important}.metric-good-text{color:#12804c!important}
.pc-fleet-status{display:inline-flex;align-items:center;justify-content:center;min-width:72px;padding:4px 6px;border-radius:999px;font-size:5.6px;font-weight:1000;letter-spacing:.045em}.pc-fleet-status.green{background:#e7f7ed;color:#12733f}.pc-fleet-status.amber{background:#fff3d9;color:#946408}.pc-fleet-status.red{background:#ffe8eb;color:#b51f2b}.pc-fleet-status.grey{background:#edf2f5;color:#637886}
.pc-fleet-mini-track{height:3px;border-radius:99px;background:#e5edf2;overflow:hidden;margin-top:3px;min-width:55px}.pc-fleet-mini-track i{display:block;height:100%;background:#168b50;border-radius:99px}
.pc-fleet-exception-list{display:grid;gap:7px;margin-top:8px}.pc-fleet-exception-list article{display:grid;grid-template-columns:38px 1fr;gap:8px;align-items:center;padding:9px;border:1px solid #e0e7ec;border-radius:9px;background:#f9fbfc}.pc-fleet-exception-list article strong{font-size:17px;color:#123d5d}.pc-fleet-exception-list article b{display:block;font-size:7px;color:#24465d}.pc-fleet-exception-list article small{display:block;margin-top:2px;font-size:6px;line-height:1.25;color:#7b8c97}.pc-fleet-exception-list article.driver{background:#f2f7ff;border-color:#cfe0f4}.pc-fleet-exception-list article.driver strong{color:#2464ba}.pc-fleet-exception-list article.risk{background:#fff7f8;border-color:#f2d1d5}.pc-fleet-exception-list article.risk strong{color:#c32631}.pc-fleet-exception-list article.watch{background:#fffaf0;border-color:#ecdcae}.pc-fleet-exception-list article.watch strong{color:#a16b00}.pc-fleet-exception-list article.ok strong{color:#16804d}
.pc-fleet-admin{border-left:4px solid #1c6593!important;background:linear-gradient(180deg,#fbfdff,#f7fafc)!important}.pc-fleet-admin-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}.pc-fleet-admin-actions .button{font-size:6.3px;min-height:29px}.pc-fleet-admin-help{margin-top:8px;border:1px solid #dce6ec;background:#fff;border-radius:8px;padding:8px;font-size:6.5px;color:#607685}.pc-fleet-admin-message{margin:7px 0 0;font-size:6.5px;color:#385b72;font-weight:800}
@media(max-width:1200px){.pc-fleet-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.pc-fleet-main-grid{grid-template-columns:1fr}.pc-fleet-exceptions{order:-1}.pc-fleet-exception-list{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:760px){.pc-fleet-compliance-head{align-items:flex-start;flex-direction:column}.pc-fleet-head-actions{justify-content:flex-start}.pc-fleet-kpis{grid-template-columns:1fr 1fr}.pc-fleet-evidence-note{grid-template-columns:22px 1fr}.pc-fleet-evidence-note p{grid-column:1/-1}.pc-fleet-exception-list{grid-template-columns:1fr 1fr}.pc-fleet-table-wrap{max-height:none}.pc-fleet-kpis article{min-height:78px}.pc-fleet-kpis strong{font-size:21px}}

/* Driver Report Issue V1 · OCC Incident Case Management V1 */
.occ-centre-tabs{display:flex;align-items:center;gap:6px;margin:0 0 9px;padding:4px;border:1px solid #d7e1e9;border-radius:10px;background:#eef3f7;width:max-content;max-width:100%}.occ-centre-tab{height:32px;border:1px solid transparent;border-radius:8px;background:transparent;color:#5d7286;padding:0 12px;font-size:6.6px;font-weight:950;letter-spacing:.35px;cursor:pointer;white-space:nowrap}.occ-centre-tab:hover{background:#fff}.occ-centre-tab.active{background:#fff;border-color:#c9d7e2;color:#153f62;box-shadow:0 2px 8px rgba(17,55,85,.09)}.occ-centre-tab span{display:inline-grid;place-items:center;min-width:20px;height:18px;margin-left:5px;padding:0 5px;border-radius:999px;background:#e8eef3;color:#294e6d;font-size:6px}.occ-centre-tab.active span{background:#dcebf7;color:#124a72}
.occ-incident-workspace{display:grid;gap:9px;min-height:0}#occAlertQueueView[hidden],#occIncidentCaseView[hidden],.occ-incident-workspace[hidden]{display:none!important}.incident-case-status{cursor:pointer;font-family:inherit}.incident-case-status:hover{filter:brightness(.97);box-shadow:0 2px 7px rgba(15,55,85,.08)}.occ-incident-toolbar{display:grid;grid-template-columns:minmax(300px,1fr) auto;gap:12px;align-items:end;border:1px solid #d6e2eb;border-left:4px solid #1f6a96;border-radius:10px;background:#fff;padding:10px 11px}.occ-incident-toolbar h3{margin:1px 0 2px;font-size:12px;color:#17324e}.occ-incident-toolbar p:not(.eyebrow){margin:0;max-width:760px;font-size:6.8px;line-height:1.45;color:#657b8e}.occ-incident-filters{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}.occ-incident-filters input,.occ-incident-filters select{height:32px;border:1px solid #cbd7e2;border-radius:8px;background:#fff;color:#17324e;padding:0 9px;font-size:7px;font-weight:800}.occ-incident-filters input{width:235px}.occ-incident-filters .button{height:32px!important;padding:0 10px!important;font-size:6.5px!important}
.occ-incident-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.occ-incident-kpis article{position:relative;overflow:hidden;border:1px solid #d8e3ec;border-radius:9px;background:#fff;padding:9px 10px;min-height:66px}.occ-incident-kpis article:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:#9aa9b8}.occ-incident-kpis article.red:before{background:#d72631}.occ-incident-kpis article.amber:before{background:#e0a21b}.occ-incident-kpis article.blue:before{background:#2877ad}.occ-incident-kpis article.green:before{background:#29995a}.occ-incident-kpis article.purple:before{background:#745cc5}.occ-incident-kpis span{display:block;font-size:5.7px;font-weight:950;letter-spacing:.45px;color:#72869a}.occ-incident-kpis b{display:block;margin-top:3px;font-size:18px;line-height:1;color:#17324e}.occ-incident-kpis small{display:block;margin-top:5px;font-size:5.8px;line-height:1.35;color:#72869a}
.occ-incident-layout{display:grid;grid-template-columns:minmax(380px,.86fr) minmax(0,1.6fr);gap:9px;min-height:520px}.occ-incident-list-panel,.occ-incident-case-panel{padding:10px;min-height:0}.occ-incident-list-panel{display:grid;grid-template-rows:auto minmax(0,1fr)}.occ-incident-list{display:grid;align-content:start;gap:6px;overflow:auto;padding-right:3px;margin-top:7px}.occ-incident-row{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:8px;align-items:center;border:1px solid #dbe4eb;border-left:4px solid #d39b18;border-radius:9px;background:#fff;padding:8px;cursor:pointer;transition:.12s ease}.occ-incident-row.critical{border-left-color:#d72631}.occ-incident-row.watch{border-left-color:#d39b18}.occ-incident-row:hover,.occ-incident-row.selected{border-color:#8eb5d0;box-shadow:0 3px 14px rgba(15,55,85,.08);transform:translateY(-1px)}.occ-incident-row.selected{background:#f4f9fc}.occ-incident-code{display:grid;place-items:center;width:42px;height:42px;border-radius:9px;background:#eef3f7;color:#17415f;font-size:10px;font-weight:950}.occ-incident-row.critical .occ-incident-code{background:#fff0f2;color:#b51626}.occ-incident-copy{min-width:0}.occ-incident-copy b{display:block;font-size:8.5px;color:#17324e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.occ-incident-copy span{display:block;margin-top:2px;font-size:6.7px;color:#50677c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.occ-incident-copy small{display:block;margin-top:3px;font-size:5.8px;color:#7a8b9d}.occ-incident-row-status{display:grid;justify-items:end;gap:4px}.occ-incident-row-status .pill{font-size:5.5px}.occ-incident-photo-chip{font-size:5.4px;font-weight:950;color:#2b628b;background:#edf6fc;border:1px solid #c8deec;border-radius:999px;padding:3px 6px}
.occ-incident-case-panel{overflow:auto}.occ-incident-case-empty{min-height:440px;display:grid;place-items:center;align-content:center;text-align:center;gap:6px;border:1px dashed #ccd9e4;border-radius:10px;background:#f9fbfc;color:#74879a;padding:24px}.occ-incident-case-empty b{font-size:11px;color:#274d6b}.occ-incident-case-empty span{max-width:560px;font-size:7px;line-height:1.5}
.occ-case{display:grid;gap:9px}.occ-case-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start;border-radius:10px;background:#123a5d;color:#fff;border-bottom:3px solid #d92532;padding:11px 12px}.occ-case-head.watch{border-bottom-color:#e2a51d}.occ-case-head .eyebrow{color:#b9cede}.occ-case-head h3{font-size:14px;margin:2px 0}.occ-case-head p{margin:0;font-size:6.5px;color:#cfdee8}.occ-case-head-actions{display:flex;gap:5px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.occ-case-head-actions .pill{min-width:82px;text-align:center}.occ-case-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.occ-case-card{border:1px solid #d9e3ec;border-radius:9px;background:#fff;padding:8px;min-width:0}.occ-case-card span{display:block;font-size:5.5px;font-weight:950;letter-spacing:.4px;color:#73879a}.occ-case-card b{display:block;margin-top:4px;font-size:8.5px;line-height:1.35;color:#17324e;overflow-wrap:anywhere}.occ-case-card small{display:block;margin-top:3px;font-size:5.8px;color:#72869a;line-height:1.35}.occ-case-card.wide{grid-column:span 2}.occ-case-card.location-card{border-color:#b8d8e9;background:#f5fbfe}.occ-case-section{border:1px solid #d9e3ec;border-radius:10px;background:#fff;padding:9px}.occ-case-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.occ-case-section-head b{font-size:8.5px;color:#17324e}.occ-case-section-head small{font-size:5.8px;color:#718096}.occ-case-evidence{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(260px,.95fr);gap:8px}.occ-case-note{min-height:128px;border:1px solid #e0e7ed;border-radius:8px;background:#f8fafc;padding:9px}.occ-case-note span{display:block;font-size:5.6px;font-weight:950;color:#7b8da0}.occ-case-note p{margin:5px 0 0;font-size:8px;line-height:1.5;color:#354f66;white-space:pre-wrap}.occ-case-photo{min-height:128px;display:grid;place-items:center;border:1px solid #dce5ec;border-radius:8px;background:#f6f9fb;overflow:hidden}.occ-case-photo img{display:block;width:100%;max-height:280px;object-fit:contain;background:#0f2333}.occ-case-photo-empty{display:grid;place-items:center;text-align:center;gap:4px;color:#7b8da0;font-size:6.5px;padding:12px}.occ-case-photo-empty b{font-size:8px;color:#486176}.occ-case-actions{display:flex;gap:6px;flex-wrap:wrap}.occ-case-actions .button{height:34px!important;font-size:6.4px!important;padding:0 10px!important}.occ-case-controller-note{width:100%;min-height:70px;border:1px solid #cbd7e2;border-radius:8px;background:#fff;padding:8px;font:inherit;font-size:7.2px;color:#17324e;resize:vertical}.occ-case-audit{display:grid;gap:5px;max-height:210px;overflow:auto}.occ-case-audit article{display:grid;grid-template-columns:90px minmax(0,1fr) auto;gap:7px;align-items:center;border:1px solid #e0e7ed;border-radius:8px;background:#fbfcfd;padding:7px}.occ-case-audit span{font-size:5.7px;font-weight:950;color:#2d5879}.occ-case-audit b{font-size:7px;color:#17324e}.occ-case-audit small{font-size:5.7px;color:#74879a}.occ-case-audit p{grid-column:2/-1;margin:0;font-size:6.5px;color:#5e7386}.occ-case-policy{border:1px solid #bcdcec;border-radius:8px;background:#edf8fd;color:#285a78;padding:7px 9px;font-size:6.2px;line-height:1.45}.occ-case-policy b{color:#174866}.occ-case-location-layout{display:grid;grid-template-columns:minmax(360px,1.25fr) minmax(260px,.75fr);gap:9px;min-height:245px}.occ-case-location-map{min-height:245px;border:1px solid #cfdde7;border-radius:9px;overflow:hidden;background:#eef3f7}.occ-case-location-map .leaflet-container{font:inherit}.occ-case-location-copy{display:grid;align-content:start;gap:7px;border:1px solid #dce5ec;border-radius:9px;background:#f8fbfd;padding:12px}.occ-case-location-copy>span{font-size:5.7px;font-weight:950;letter-spacing:.45px;color:#71869a}.occ-case-location-copy>b{font-size:11px;line-height:1.35;color:#17324e}.occ-case-location-copy>strong{font-size:9px;color:#1f6f9a}.occ-case-location-copy>p{margin:0;font-size:7px;line-height:1.5;color:#60758a}.occ-case-location-copy>div{display:flex;gap:6px;flex-wrap:wrap;margin-top:3px}.occ-case-location-copy .button{height:34px!important;font-size:6.3px!important;padding:0 10px!important}.occ-case-location-empty{min-height:245px;display:grid;place-items:center;align-content:center;text-align:center;gap:5px;color:#71869a;padding:16px}.occ-case-location-empty b{font-size:9px;color:#34536d}.occ-case-location-empty span{font-size:6.5px;line-height:1.4}
@media(max-width:1180px){.occ-case-location-layout{grid-template-columns:1fr}.occ-incident-toolbar{grid-template-columns:1fr}.occ-incident-filters{justify-content:flex-start}.occ-incident-layout{grid-template-columns:1fr}.occ-incident-list{max-height:360px}.occ-incident-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.occ-case-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.occ-case-evidence{grid-template-columns:1fr}}
@media(max-width:760px){.occ-centre-tabs{width:100%;overflow:auto}.occ-incident-kpis{grid-template-columns:1fr 1fr}.occ-incident-filters{display:grid;grid-template-columns:1fr 1fr}.occ-incident-filters input{width:auto;grid-column:1/-1}.occ-case-grid{grid-template-columns:1fr}.occ-case-card.wide{grid-column:auto}.occ-case-head{grid-template-columns:1fr}.occ-case-head-actions{justify-content:flex-start}}

/* Trip Cause / Lost KM Attribution V1 */
.trip-cause-section{border-color:#b9d6e7;background:linear-gradient(180deg,#fbfdff,#f7fbfd)}
.trip-cause-loading,.trip-cause-schema{min-height:72px;display:grid;place-items:center;align-content:center;gap:5px;border:1px dashed #c8d8e4;border-radius:9px;background:#f8fbfd;color:#60778a;text-align:center;padding:12px;font-size:7px}.trip-cause-schema b{font-size:9px;color:#173b57}.trip-cause-schema code{font-weight:900;color:#1d597d}
.trip-cause-banner{display:flex;align-items:center;gap:9px;border:1px solid #d7e4ed;border-radius:9px;background:#fff;padding:8px 10px;margin-bottom:8px}.trip-cause-banner>div{display:grid;gap:2px}.trip-cause-banner b{font-size:9px;color:#17324e}.trip-cause-banner small{font-size:6px;color:#71869a}
.trip-cause-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.trip-cause-metrics article{border:1px solid #dce6ed;border-radius:8px;background:#fff;padding:8px;min-width:0}.trip-cause-metrics article.loss{border-color:#f0c1c5;background:#fff8f8}.trip-cause-metrics span{display:block;font-size:5.4px;font-weight:950;letter-spacing:.35px;color:#72879a}.trip-cause-metrics b{display:block;margin-top:4px;font-size:11px;color:#17324e}.trip-cause-metrics article.loss b{color:#b51f2b}.trip-cause-metrics small{display:block;margin-top:3px;font-size:5.7px;line-height:1.35;color:#71869a}
.trip-cause-evidence{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:7px}.trip-cause-evidence>div{border:1px solid #dce6ed;border-radius:8px;background:#f8fbfd;padding:8px}.trip-cause-evidence span{display:block;font-size:5.4px;font-weight:950;color:#74899c}.trip-cause-evidence b{display:block;margin-top:3px;font-size:8.5px;color:#194b6c}.trip-cause-evidence p{margin:4px 0 0;font-size:6.2px;line-height:1.45;color:#60778a}
.trip-cause-editor{display:grid;grid-template-columns:minmax(220px,.45fr) minmax(0,1.55fr);gap:7px;margin-top:7px}.trip-cause-editor label{display:grid;gap:4px;font-size:5.5px;font-weight:950;color:#70869a;letter-spacing:.3px}.trip-cause-editor select,.trip-cause-editor textarea{width:100%;border:1px solid #cbd9e3;border-radius:8px;background:#fff;color:#17324e;font:inherit;font-size:7px;padding:8px}.trip-cause-editor select{height:38px}.trip-cause-editor textarea{min-height:60px;resize:vertical}.trip-cause-editor select:disabled,.trip-cause-editor textarea:disabled{background:#f1f5f8;color:#72869a}
.trip-cause-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.trip-cause-actions .button{height:34px!important;font-size:6.2px!important;padding:0 10px!important}.trip-cause-error{margin-bottom:7px;border-color:#efb5ba;background:#fff4f5;color:#9b1d28}
@media(max-width:1180px){.trip-cause-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.trip-cause-editor{grid-template-columns:1fr}}
@media(max-width:760px){.trip-cause-metrics,.trip-cause-evidence{grid-template-columns:1fr 1fr}}

/* Trip Cause V1 Hotfix2: make pending/final governance visually unambiguous. */
.trip-cause-actions .button:disabled{opacity:.38;filter:grayscale(.45);cursor:not-allowed;box-shadow:none;pointer-events:none}.trip-cause-metrics article.no-loss{border-color:#bfe4cf;background:#f4fcf7}.trip-cause-metrics article.no-loss b{color:#147a45}

/* RUNNING TIME ANALYSIS V1 · timetable sufficiency */
.pc-running-time{--rt-navy:#113f61;--rt-blue:#3177d7;--rt-purple:#7354dc;--rt-red:#e13443;--rt-amber:#d88a0d;--rt-green:#16965c}.pc-runtime-head{display:flex;align-items:center;justify-content:space-between;gap:16px;border-left:4px solid #5b54d7;padding:13px 16px}.pc-runtime-head h3{margin:2px 0 3px;font-size:20px;color:#0d3552}.pc-runtime-head p{margin:0;color:#687d8c;font-size:10px;max-width:980px}.pc-runtime-head-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}.pc-runtime-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.pc-runtime-kpis article{background:#fff;border:1px solid #d8e3e9;border-radius:11px;padding:11px 13px;box-shadow:0 1px 3px rgba(18,55,78,.03);min-height:78px}.pc-runtime-kpis span{display:block;font-size:7.5px;font-weight:800;letter-spacing:.08em;color:#607585}.pc-runtime-kpis strong{display:block;margin-top:6px;font-size:24px;line-height:1;color:#0d4266}.pc-runtime-kpis small{display:block;margin-top:6px;font-size:8px;color:#82929d}.pc-runtime-kpis .p85{border-left:3px solid var(--rt-purple)}.pc-runtime-kpis .gap{border-left:3px solid var(--rt-red)}.pc-runtime-kpis .risk{border-left:3px solid var(--rt-amber)}.pc-runtime-chart-card{padding:13px}.pc-runtime-legend{display:flex;gap:12px;font-size:8px;font-weight:800}.pc-runtime-legend span:before{content:'';display:inline-block;width:15px;height:3px;border-radius:3px;margin-right:5px;vertical-align:middle}.pc-runtime-legend .sched:before{background:var(--rt-navy)}.pc-runtime-legend .actual:before{background:var(--rt-blue)}.pc-runtime-legend .p85:before{background:var(--rt-purple)}.pc-runtime-chart{min-height:300px;background:linear-gradient(180deg,#fbfdff,#f7fafc);border:1px solid #e0e8ed;border-radius:10px;padding:4px}.pc-runtime-chart svg{width:100%;height:300px;display:block;overflow:visible}.pc-runtime-chart .grid line{stroke:#dce5eb;stroke-width:1}.pc-runtime-chart .grid text,.pc-runtime-chart svg>text{font-size:10px;fill:#6f8391}.pc-runtime-chart path{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.pc-runtime-chart path.scheduled{stroke:var(--rt-navy)}.pc-runtime-chart path.actual{stroke:var(--rt-blue)}.pc-runtime-chart path.p85{stroke:var(--rt-purple);stroke-dasharray:7 4}.pc-runtime-chart .gap{stroke-width:5;opacity:.55}.pc-runtime-chart .gap.bad{stroke:var(--rt-red)}.pc-runtime-chart .gap.watch{stroke:var(--rt-amber)}.pc-runtime-chart .gap.good{stroke:var(--rt-green)}.pc-runtime-chart .gap.over{stroke:#3c8fb7}.pc-runtime-hour-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(95px,1fr));gap:6px;margin-top:8px}.pc-runtime-hour-strip article{border:1px solid #dbe5eb;border-radius:8px;padding:7px 8px;background:#fff}.pc-runtime-hour-strip span,.pc-runtime-hour-strip small{display:block;font-size:8px}.pc-runtime-hour-strip strong{display:block;font-size:14px;margin:2px 0}.pc-runtime-hour-strip .under-scheduled strong{color:var(--rt-red)}.pc-runtime-hour-strip .watch strong{color:var(--rt-amber)}.pc-runtime-hour-strip .balanced strong{color:var(--rt-green)}.pc-runtime-hour-strip .over-scheduled strong{color:#24779f}.pc-runtime-grid{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(280px,.8fr);gap:9px}.pc-runtime-table-wrap{overflow:auto;max-height:465px}.pc-runtime-table{width:100%;border-collapse:collapse;font-size:9px}.pc-runtime-table th{position:sticky;top:0;background:#edf4f8;color:#486173;font-size:7px;text-transform:uppercase;letter-spacing:.04em;padding:8px 9px;z-index:2}.pc-runtime-table td{border-top:1px solid #e4ebef;padding:8px 9px;white-space:nowrap}.pc-runtime-table td:first-child b{font-size:10px;color:#0e4163}.pc-runtime-table td:first-child small{display:block;font-size:7.5px;color:#7c8e9a}.runtime-gap{font-size:11px}.runtime-gap.under-scheduled{color:var(--rt-red)}.runtime-gap.watch{color:var(--rt-amber)}.runtime-gap.balanced{color:var(--rt-green)}.runtime-gap.over-scheduled{color:#24779f}.runtime-status{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:6.5px;font-weight:900;letter-spacing:.04em}.runtime-status.under-scheduled{background:#ffe8eb;color:#b7192a}.runtime-status.watch{background:#fff2d8;color:#985e00}.runtime-status.balanced{background:#e6f7ed;color:#117845}.runtime-status.over-scheduled{background:#e8f3f9;color:#176184}.runtime-status.data-thin{background:#edf1f3;color:#6a7b85}.pc-runtime-priority{display:grid;gap:7px}.pc-runtime-priority button{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;width:100%;border:1px solid #e0e7ec;border-radius:9px;padding:9px;background:#fff;text-align:left;cursor:pointer}.pc-runtime-priority button>span{width:28px;height:28px;border-radius:8px;background:#edf3f7;display:grid;place-items:center;font-weight:900}.pc-runtime-priority button b{display:block;font-size:9px;color:#143f5a}.pc-runtime-priority button small{display:block;font-size:7.5px;color:#81919b;margin-top:2px}.pc-runtime-priority button>strong{font-size:13px}.pc-runtime-priority button.under-scheduled>strong{color:var(--rt-red)}.pc-runtime-priority button.watch>strong{color:var(--rt-amber)}.pc-runtime-good{padding:18px;border:1px solid #cfe8da;background:#f1fbf5;border-radius:10px;color:#1c6e49}.pc-runtime-good b,.pc-runtime-good span{display:block}.pc-runtime-good span{font-size:9px;margin-top:4px}.pc-runtime-policy{display:flex;gap:10px;align-items:flex-start;border:1px solid #b9daee;background:#edf8ff;border-radius:9px;padding:9px 12px;color:#3d647d;font-size:8px}.pc-runtime-policy>b{color:#0f4e76;white-space:nowrap}.pc-runtime-policy strong{color:#0d4266}.pc-running-time .pc-clickable:hover{background:#f5faff}.pc-runtime-table tr.pc-clickable{cursor:pointer}
@media(max-width:1100px){.pc-runtime-kpis{grid-template-columns:repeat(3,1fr)}.pc-runtime-grid{grid-template-columns:1fr}.pc-runtime-head{align-items:flex-start;flex-direction:column}}
@media(max-width:700px){.pc-runtime-kpis{grid-template-columns:repeat(2,1fr)}.pc-runtime-chart{overflow:auto}.pc-runtime-chart svg{min-width:800px}.pc-runtime-policy{display:block}.pc-runtime-policy>b{display:block;margin-bottom:5px}}

/* ENGINEERING OPERATIONS V1 ------------------------------------------------
   Linked technical-response workflow for the same Driver/OCC incident.
   Presentation only: OCC/CRR ownership, service evidence, LMRA and payment
   calculations remain governed by their existing modules. */
.engineering-page{--eng-navy:#123f5e;--eng-blue:#2d74b7;--eng-red:#d8303f;--eng-amber:#d58a12;--eng-green:#178b57;gap:9px;align-content:start}
.engineering-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;border-left:4px solid var(--eng-blue)}
.engineering-page-head h2{margin:2px 0 3px}.engineering-page-head p:not(.eyebrow){max-width:980px}
.engineering-head-state{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.engineering-kpis{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:7px}
.engineering-kpis article{position:relative;min-width:0;min-height:76px;overflow:hidden;border:1px solid #dbe5eb;border-radius:10px;background:#fff;padding:9px 10px;box-shadow:0 1px 4px rgba(19,55,80,.035)}
.engineering-kpis article:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#8296a5}.engineering-kpis article.red:before{background:var(--eng-red)}.engineering-kpis article.amber:before{background:var(--eng-amber)}.engineering-kpis article.blue:before{background:var(--eng-blue)}.engineering-kpis article.green:before{background:var(--eng-green)}
.engineering-kpis span{display:block;font-size:6px;font-weight:950;letter-spacing:.07em;color:#617788;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engineering-kpis b{display:block;margin-top:5px;font-size:20px;line-height:1;color:var(--eng-navy)}.engineering-kpis small{display:block;margin-top:5px;font-size:6px;line-height:1.3;color:#82929e}
.engineering-command{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 12px!important}.engineering-command-copy h3{margin:1px 0 2px;font-size:13px;color:var(--eng-navy)}.engineering-command-copy p:not(.eyebrow){margin:0;font-size:7px;color:#728594}
.engineering-filters{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.engineering-filters input,.engineering-filters select{height:32px;border:1px solid #cfdbe3;border-radius:7px;background:#fff;color:#173d58;font:inherit;font-size:7px;padding:0 9px}.engineering-filters input{width:260px}.engineering-filters select{min-width:150px}
.engineering-layout{display:grid;grid-template-columns:minmax(300px,.72fr) minmax(0,1.28fr);gap:9px;min-height:590px}.engineering-queue-panel,.engineering-detail-panel{padding:10px!important;min-width:0;min-height:0}.engineering-queue-panel{display:grid;grid-template-rows:auto minmax(0,1fr)}
.engineering-case-list{min-height:0;max-height:720px;overflow:auto;border:1px solid #dfe8ed;border-radius:9px;background:#f7fafc}
.engineering-case-row{width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:8px;align-items:center;border:0;border-bottom:1px solid #e4ebef;background:#fff;padding:9px;text-align:left;cursor:pointer;color:#1f465f}.engineering-case-row:last-child{border-bottom:0}.engineering-case-row:hover{background:#f5faff}.engineering-case-row.selected{background:#edf7ff;box-shadow:inset 3px 0 0 var(--eng-blue)}
.engineering-case-code{width:40px;height:38px;border-radius:8px;display:grid;place-items:center;background:#edf3f7;color:#245979;font-size:9px;font-weight:1000}.engineering-case-row.mc .engineering-case-code{background:#fff0e2;color:#a75a05}.engineering-case-row.rtc .engineering-case-code{background:#ffe9ec;color:#b81f2d}
.engineering-case-row>div{min-width:0}.engineering-case-row b{display:block;font-size:8.5px;color:#153d5a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engineering-case-row span{display:block;margin-top:2px;font-size:6.5px;color:#687f90;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engineering-case-row small{display:block;margin-top:2px;font-size:5.8px;color:#8a99a4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engineering-case-row>strong{align-self:start;display:inline-flex;padding:4px 6px;border-radius:999px;font-size:5.5px;line-height:1;font-weight:1000;letter-spacing:.035em;white-space:nowrap}.engineering-case-row>strong.grey{background:#edf1f3;color:#667985}.engineering-case-row>strong.amber{background:#fff1d5;color:#956000}.engineering-case-row>strong.blue{background:#e7f2fc;color:#1f6397}.engineering-case-row>strong.red{background:#ffe7ea;color:#ad1d2a}.engineering-case-row>strong.green{background:#e6f6ec;color:#147546}
.engineering-detail-panel{overflow:auto;max-height:760px}.engineering-empty{min-height:360px;display:grid;place-items:center;align-content:center;gap:5px;text-align:center;color:#6d8291;border:1px dashed #ccd9e1;border-radius:9px;background:#f8fbfd;padding:20px}.engineering-empty b{font-size:10px;color:#1a4662}.engineering-empty span{max-width:520px;font-size:7px;line-height:1.45}
.engineering-case-detail{display:grid;gap:8px}.engineering-case-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;border:1px solid #d8e4eb;border-left:4px solid var(--eng-blue);border-radius:10px;background:linear-gradient(135deg,#f8fbfe,#fff);padding:11px 12px}.engineering-case-head.MC{border-left-color:var(--eng-amber)}.engineering-case-head.RTC{border-left-color:var(--eng-red)}.engineering-case-head h3{margin:2px 0;font-size:15px;color:#113e5c}.engineering-case-head p:not(.eyebrow){margin:0;font-size:6.7px;color:#718491}.engineering-quick-actions{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.engineering-quick-actions .button{height:30px!important;font-size:6px!important;padding:0 9px!important}
.engineering-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.engineering-summary-grid article{min-width:0;border:1px solid #dfe7ec;border-radius:8px;background:#fff;padding:8px}.engineering-summary-grid span{display:block;font-size:5.5px;font-weight:950;letter-spacing:.06em;color:#758896}.engineering-summary-grid b{display:block;margin-top:4px;font-size:8.5px;color:#173f5a;overflow-wrap:anywhere}.engineering-summary-grid small{display:block;margin-top:3px;font-size:5.8px;line-height:1.35;color:#7d8f9b}
.engineering-section{border:1px solid #dce6ec;border-radius:9px;background:#fff;padding:9px}.engineering-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.engineering-section-head>div{display:grid;gap:2px}.engineering-section-head span{font-size:5.5px;font-weight:950;letter-spacing:.07em;color:#748896}.engineering-section-head b{font-size:9px;color:#173f5a}.engineering-section-head>small{font-size:6px;color:#85949f;text-align:right}
.engineering-evidence{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(150px,.55fr);gap:8px}.engineering-evidence>div{border:1px solid #e0e8ed;border-radius:8px;background:#f8fbfd;padding:8px}.engineering-evidence span{display:block;font-size:5.5px;font-weight:950;color:#708597}.engineering-evidence b{display:block;margin-top:3px;font-size:8.5px;color:#173f5a}.engineering-evidence p{margin:4px 0 0;font-size:6.5px;line-height:1.45;color:#647b8c}.engineering-photo{display:grid;place-items:center;min-height:110px;overflow:hidden}.engineering-photo img{max-width:100%;max-height:180px;object-fit:contain;border-radius:7px}
.engineering-impact-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.engineering-impact-grid article{border:1px solid #dfe7ec;border-radius:8px;background:#f8fbfd;padding:8px}.engineering-impact-grid span{display:block;font-size:5.2px;font-weight:950;color:#758896}.engineering-impact-grid b{display:block;margin-top:4px;font-size:9px;color:#153f5b}.engineering-impact-grid article.loss b{color:#b71d2b}.engineering-impact-grid small{display:block;margin-top:3px;font-size:5.7px;color:#80909c}
.engineering-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.engineering-form-grid label{display:grid;gap:4px;min-width:0}.engineering-form-grid label.wide{grid-column:1/-1}.engineering-form-grid label>span{font-size:5.5px;font-weight:950;letter-spacing:.05em;color:#6f8392}.engineering-form-grid input,.engineering-form-grid textarea{width:100%;box-sizing:border-box;border:1px solid #cddae3;border-radius:7px;background:#fff;color:#173e59;font:inherit;font-size:7px;padding:7px 8px}.engineering-form-grid input{height:34px}.engineering-form-grid textarea{resize:vertical;min-height:52px;line-height:1.4}.engineering-form-grid input:disabled,.engineering-form-grid textarea:disabled{background:#f1f5f7;color:#758794}
.engineering-save-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:7px}.engineering-save-row span{font-size:6px;color:#728594}.engineering-save-row .button{height:32px!important;font-size:6px!important}
.engineering-workflow-actions{display:flex;gap:6px;flex-wrap:wrap}.engineering-workflow-actions .button{height:32px!important;font-size:6px!important;padding:0 10px!important}.engineering-workflow-actions .button:disabled{opacity:.38;cursor:not-allowed}
.engineering-audit{display:grid;gap:5px;max-height:180px;overflow:auto}.engineering-audit article{display:grid;grid-template-columns:minmax(120px,.8fr) minmax(120px,1fr) auto;gap:8px;align-items:center;border-bottom:1px solid #edf1f3;padding:6px 2px}.engineering-audit article:last-child{border-bottom:0}.engineering-audit span{font-size:6px;font-weight:950;color:#285c7d}.engineering-audit b{font-size:7px;color:#173f5a}.engineering-audit small{font-size:5.8px;color:#81919d;white-space:nowrap}
.engineering-owner-safeguard{display:grid;grid-template-columns:auto 1fr;gap:9px;align-items:start;border:1px solid #bcd8e8;border-left:4px solid #2174aa;border-radius:9px;background:#eff8fd;padding:9px 11px;color:#3b627a}.engineering-owner-safeguard b{font-size:6.5px;white-space:nowrap;color:#114f75}.engineering-owner-safeguard span{font-size:6.5px;line-height:1.4}.engineering-owner-safeguard.inline{margin-top:0}
@media(max-width:1450px){.engineering-kpis{grid-template-columns:repeat(5,minmax(0,1fr))}.engineering-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1100px){.engineering-page-head,.engineering-command{align-items:flex-start;flex-direction:column}.engineering-head-state,.engineering-filters{justify-content:flex-start}.engineering-layout{grid-template-columns:1fr;min-height:0}.engineering-case-list,.engineering-detail-panel{max-height:none}.engineering-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.engineering-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.engineering-impact-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.engineering-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.engineering-filters{display:grid;grid-template-columns:1fr}.engineering-filters input,.engineering-filters select{width:100%;min-width:0}.engineering-summary-grid,.engineering-impact-grid,.engineering-form-grid,.engineering-evidence{grid-template-columns:1fr}.engineering-form-grid label.wide{grid-column:auto}.engineering-case-head{grid-template-columns:1fr}.engineering-quick-actions{justify-content:flex-start}.engineering-owner-safeguard{grid-template-columns:1fr}.engineering-audit article{grid-template-columns:1fr}.engineering-save-row{align-items:flex-start;flex-direction:column}}

/* ENGINEERING OPERATIONS V1.1 ------------------------------------------------
   Readability + grid-track hotfix.
   The generic .standard-page has two direct rows; Engineering has five. Its
   KPI track could collapse to 0px and visually cover the Technical Case Queue.
   Give Engineering explicit rows and slightly larger operational typography. */
.engineering-page{
  grid-template-rows:auto auto auto minmax(560px,auto) auto!important;
  gap:11px!important;
}
.engineering-kpis{
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:9px;
  position:relative;
}
.engineering-kpis article{min-height:82px;padding:11px 12px}
.engineering-kpis span{font-size:7.4px;line-height:1.2}
.engineering-kpis b{margin-top:6px;font-size:22px;line-height:1.05}
.engineering-kpis small{margin-top:6px;font-size:7.2px;line-height:1.35}
.engineering-command{position:relative;z-index:1;padding:12px 14px!important;min-height:58px}
.engineering-command-copy h3{font-size:14px}
.engineering-command-copy p:not(.eyebrow){font-size:8.5px;line-height:1.4}
.engineering-filters{gap:8px}
.engineering-filters input,.engineering-filters select{height:36px;font-size:9px;padding:0 10px}
.engineering-filters input{width:290px}
.engineering-filters select{min-width:165px}
.engineering-layout{grid-template-columns:minmax(330px,.72fr) minmax(0,1.28fr);gap:11px;min-height:560px}
.engineering-queue-panel,.engineering-detail-panel{padding:12px!important}
.engineering-case-list{max-height:760px}
.engineering-case-row{grid-template-columns:46px minmax(0,1fr) auto;gap:10px;padding:11px}
.engineering-case-code{width:44px;height:42px;font-size:10px}
.engineering-case-row b{font-size:10.2px;line-height:1.25}
.engineering-case-row span{margin-top:3px;font-size:8px;line-height:1.3}
.engineering-case-row small{margin-top:3px;font-size:7px;line-height:1.3}
.engineering-case-row>strong,.engineering-case-row>em{font-size:6.8px!important;padding:5px 7px!important}
.engineering-detail-panel{max-height:800px}
.engineering-case-detail{gap:10px}
.engineering-case-head{padding:13px 14px}
.engineering-case-head h3{font-size:16px}
.engineering-case-head p:not(.eyebrow){font-size:8px;line-height:1.35}
.engineering-quick-actions .button{height:34px!important;font-size:7.5px!important;padding:0 11px!important}
.engineering-summary-grid{gap:9px}
.engineering-summary-grid article{padding:10px}
.engineering-summary-grid span{font-size:6.8px}
.engineering-summary-grid b{margin-top:5px;font-size:10px;line-height:1.25}
.engineering-summary-grid small{font-size:7px;line-height:1.4}
.engineering-section{padding:11px}
.engineering-section-head{margin-bottom:9px}
.engineering-section-head span{font-size:6.8px}
.engineering-section-head b{font-size:10.5px}
.engineering-section-head>small{font-size:7.2px}
.engineering-evidence{gap:10px}
.engineering-evidence>div{padding:10px}
.engineering-evidence span{font-size:6.8px}
.engineering-evidence b{font-size:9.8px}
.engineering-evidence p{font-size:7.8px;line-height:1.5}
.engineering-impact-grid{gap:8px}
.engineering-impact-grid article{padding:10px}
.engineering-impact-grid span{font-size:6.5px}
.engineering-impact-grid b{font-size:10px}
.engineering-impact-grid small{font-size:7px;line-height:1.35}
.engineering-form-grid{gap:9px}
.engineering-form-grid label{gap:5px}
.engineering-form-grid label>span{font-size:6.8px}
.engineering-form-grid input,.engineering-form-grid textarea{font-size:8.5px;padding:8px 9px}
.engineering-form-grid input{height:38px}
.engineering-form-grid textarea{min-height:58px}
.engineering-save-row span{font-size:7.5px}
.engineering-save-row .button,.engineering-workflow-actions .button{height:35px!important;font-size:7.5px!important}
.engineering-audit span{font-size:7.2px}
.engineering-audit b{font-size:8.5px}
.engineering-audit small{font-size:7px}
.engineering-owner-safeguard{padding:11px 13px}
.engineering-owner-safeguard b,.engineering-owner-safeguard span{font-size:7.8px;line-height:1.45}
@media(min-width:1900px){.engineering-kpis{grid-template-columns:repeat(9,minmax(0,1fr))}}
@media(max-width:1450px){.engineering-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1100px){.engineering-page{grid-template-rows:auto!important}.engineering-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.engineering-layout{min-height:0}}
@media(max-width:700px){.engineering-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ENGINEERING OPERATIONS V1.2 ----------------------------------------------
   Mechanic-first simplification. The governed detailed statuses remain intact
   for audit/reporting, but the main field workflow is reduced to four actions
   plus the recovery exception path. */
.engineering-mechanic-main{border-left:4px solid var(--eng-blue);background:linear-gradient(135deg,#f7fbfe,#fff)}
.engineering-mechanic-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.engineering-mechanic-action{min-height:58px;border:1px solid #b9cedb;border-radius:10px;background:#fff;padding:10px 12px;text-align:left;cursor:pointer;box-shadow:0 1px 3px rgba(19,55,80,.04);transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}
.engineering-mechanic-action:hover{transform:translateY(-1px);box-shadow:0 3px 9px rgba(19,55,80,.09)}
.engineering-mechanic-action b{display:block;font-size:11px;line-height:1.2;color:#123f5e;letter-spacing:.01em}
.engineering-mechanic-action small{display:block;margin-top:4px;font-size:7.5px;line-height:1.35;color:#718594}
.engineering-mechanic-action.primary{border-color:#75acd0;background:#eef8ff}
.engineering-mechanic-action.primary b{color:#0e5e90}
.engineering-mechanic-action.secondary{border-color:#c7d6df;background:#fff}
.engineering-mechanic-action.success{border-color:#7fc5a2;background:#eef9f3}
.engineering-mechanic-action.success b{color:#116d43}
.engineering-mechanic-action.danger{border-color:#efadb5;background:#fff3f4}
.engineering-mechanic-action.danger b{color:#af1f2e}
.engineering-mechanic-action:disabled{opacity:.5;cursor:not-allowed;transform:none}
.engineering-mechanic-hint{display:flex;align-items:center;gap:9px;margin-top:9px;border-top:1px solid #e5edf2;padding-top:8px;color:#6c8190}
.engineering-mechanic-hint b{font-size:7px;color:#245b7d;white-space:nowrap}
.engineering-mechanic-hint span{font-size:7.5px;line-height:1.4}
.engineering-mechanic-readonly,.engineering-mechanic-complete{border:1px dashed #cbd9e2;border-radius:9px;background:#f7fafc;padding:14px;text-align:center;color:#6f8493;font-size:8px}
.engineering-mechanic-complete{border-style:solid;border-color:#a8d9bf;background:#f0faf5}
.engineering-mechanic-complete b{display:block;font-size:10px;color:#126f45}
.engineering-mechanic-complete span{display:block;margin-top:4px;font-size:7.5px;color:#678579}
.engineering-advanced-workflow{border:1px solid #dde7ec;border-radius:9px;background:#f8fafb;overflow:hidden}
.engineering-advanced-workflow>summary{cursor:pointer;list-style:none;padding:10px 12px;font-size:7px;font-weight:950;letter-spacing:.06em;color:#6f8492;user-select:none}
.engineering-advanced-workflow>summary::-webkit-details-marker{display:none}
.engineering-advanced-workflow>summary:after{content:'SHOW';float:right;color:#2d6f99}
.engineering-advanced-workflow[open]>summary:after{content:'HIDE'}
.engineering-advanced-workflow>.engineering-section{border:0;border-top:1px solid #dde7ec;border-radius:0}
@media(max-width:700px){.engineering-mechanic-actions{grid-template-columns:1fr}.engineering-mechanic-action{min-height:54px}.engineering-mechanic-hint{align-items:flex-start;flex-direction:column}}
.engineering-technical-details{border:1px solid #dde7ec;border-radius:9px;background:#f8fafb;overflow:hidden}
.engineering-technical-details>summary{cursor:pointer;list-style:none;padding:11px 12px;font-size:7.5px;font-weight:950;letter-spacing:.055em;color:#365f79;user-select:none}
.engineering-technical-details>summary::-webkit-details-marker{display:none}
.engineering-technical-details>summary span{margin-left:8px;font-weight:700;letter-spacing:0;color:#8797a2}
.engineering-technical-details>summary:after{content:'OPEN';float:right;color:#2d6f99}
.engineering-technical-details[open]>summary:after{content:'CLOSE'}
.engineering-technical-details>.engineering-section{border:0;border-top:1px solid #dde7ec;border-radius:0}


/* V0.23.0 UNIFIED INCIDENT + OPERATIONAL TIMELINE */
.incident-timeline-page{grid-template-rows:auto auto auto minmax(560px,auto) auto!important;gap:10px!important;min-width:0}
.incident-timeline-head{border-left:3px solid #245f91!important}
.incident-timeline-head-state{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.incident-timeline-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;min-width:0}
.incident-timeline-kpis article{background:#fff;border:1px solid #d4e0e8;border-radius:10px;padding:12px 14px;min-height:76px;box-shadow:0 4px 12px rgba(22,59,89,.05);position:relative;overflow:hidden}
.incident-timeline-kpis article:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#70889a}.incident-timeline-kpis article.red:before{background:#dc2f3f}.incident-timeline-kpis article.amber:before{background:#d89d16}.incident-timeline-kpis article.blue:before{background:#3179ba}.incident-timeline-kpis article.green:before{background:#24895b}
.incident-timeline-kpis span{display:block;font-size:8.5px;font-weight:800;letter-spacing:.08em;color:#526d80}.incident-timeline-kpis b{display:block;font-size:23px;line-height:1.1;color:#073a60;margin:5px 0}.incident-timeline-kpis small{font-size:8px;color:#708697}
.incident-timeline-command{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px!important}.incident-timeline-command h3{margin:2px 0 3px;font-size:14px}.incident-timeline-command p{margin:0;color:#657c8c;font-size:9px}
.incident-timeline-filters{display:grid;grid-template-columns:minmax(260px,1.4fr) minmax(170px,.85fr) minmax(180px,.9fr) auto;gap:8px;align-items:center;min-width:min(720px,62vw)}.incident-timeline-filters input,.incident-timeline-filters select{height:38px;border:1px solid #cbd9e3;border-radius:8px;background:#fff;padding:0 12px;color:#163b59;font-size:10px}
.incident-timeline-layout{display:grid;grid-template-columns:minmax(390px,.75fr) minmax(700px,1.65fr);gap:10px;min-height:560px;min-width:0}.incident-timeline-list-panel,.incident-timeline-detail-panel{min-width:0;overflow:hidden}.incident-timeline-list{height:calc(100% - 50px);min-height:500px;overflow:auto;border:1px solid #dbe5ec;border-radius:8px;background:#f8fbfd}
.incident-timeline-row{display:grid;grid-template-columns:46px minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px;border-bottom:1px solid #dde7ee;background:#fff;cursor:pointer;border-left:3px solid transparent}.incident-timeline-row:hover{background:#f3f9fc}.incident-timeline-row.selected{background:#eaf5fb;border-left-color:#2777b3}.incident-timeline-code{width:42px;height:42px;border-radius:9px;display:grid;place-items:center;font-weight:900;font-size:9px;background:#eaf2f7;color:#164768}.incident-timeline-code.mc{background:#fff0df;color:#9a5b00}.incident-timeline-code.rtc{background:#fde6e9;color:#a51029}.incident-timeline-code.inf{background:#e7f2ff;color:#1b5c94}.incident-timeline-code.tr{background:#eef0ff;color:#4e4c91}
.incident-timeline-row-copy{min-width:0}.incident-timeline-row-copy b{display:block;font-size:10.6px;color:#073a60;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.incident-timeline-row-copy span{display:block;font-size:8.7px;color:#5e7484;margin:3px 0}.incident-timeline-row-copy small{display:block;font-size:7.8px;color:#81929e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.incident-timeline-row-state{text-align:right;min-width:128px}.incident-timeline-row-state small{display:block;margin-top:4px;color:#728795;font-size:7.5px;max-width:145px}
.incident-timeline-detail-panel{overflow:auto;padding:12px!important;background:#f8fbfd!important}.incident-timeline-empty{min-height:500px;display:grid;place-items:center;align-content:center;gap:5px;text-align:center;color:#718895;border:1px dashed #cbdbe6;border-radius:10px}.incident-timeline-empty b{font-size:11px;color:#183e5a}.incident-timeline-empty span{font-size:9px;max-width:480px}
.incident-timeline-detail{display:grid;gap:10px;min-width:0}.incident-timeline-hero{display:flex;justify-content:space-between;gap:16px;align-items:center;background:#fff;border:1px solid #d5e1e9;border-left:4px solid #2878b6;border-radius:10px;padding:14px 16px}.incident-timeline-hero span{font-size:8px;letter-spacing:.12em;font-weight:800;color:#6a8292}.incident-timeline-hero h3{margin:3px 0;font-size:17px;color:#06395d}.incident-timeline-hero p{margin:0;font-size:9px;color:#607787}.incident-timeline-hero-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.incident-timeline-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.incident-timeline-summary-grid article{background:#fff;border:1px solid #d8e3ea;border-radius:8px;padding:10px;text-align:center}.incident-timeline-summary-grid span,.incident-evidence-cards span{font-size:7.4px;font-weight:800;letter-spacing:.08em;color:#698090}.incident-timeline-summary-grid b,.incident-evidence-cards b{display:block;font-size:10.4px;color:#083b60;margin:3px 0}.incident-timeline-summary-grid small,.incident-evidence-cards small{font-size:7.5px;color:#7b8f9d}
.incident-chain{background:#fff;border:1px solid #d4e1e9;border-radius:10px;padding:12px}.incident-chain-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.incident-chain-head span{font-size:7.7px;letter-spacing:.1em;font-weight:900;color:#6b8393}.incident-chain-head b{font-size:9px;color:#153f5c}.incident-chain-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.incident-chain-stage{border:1px solid #d7e2ea;border-radius:8px;padding:9px;text-align:center;background:#f7fafc}.incident-chain-stage span{display:block;font-size:7.2px;font-weight:900;letter-spacing:.07em;color:#788c99}.incident-chain-stage b{display:block;font-size:8.8px;margin-top:4px;color:#173e5a}.incident-chain-stage.driver{border-top:3px solid #7258aa}.incident-chain-stage.occ{border-top:3px solid #d13b4e}.incident-chain-stage.engineering{border-top:3px solid #2d7cba}.incident-chain-stage.route-report{border-top:3px solid #248a68}.incident-chain-stage.cause{border-top:3px solid #c68c19}.incident-chain-stage.lmra{border-top:3px solid #4b758f}
.incident-timeline-detail-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.75fr);gap:10px}.incident-timeline-history,.incident-timeline-evidence{background:#fff;border:1px solid #d6e2e9;border-radius:10px;padding:12px;min-width:0}.incident-timeline-events{display:grid;gap:0;padding:4px 0 4px 4px}.incident-timeline-event{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;position:relative;padding-bottom:13px}.incident-timeline-event:not(:last-child):before{content:"";position:absolute;left:8px;top:16px;bottom:-1px;width:1px;background:#d4e0e7}.incident-timeline-event-dot{width:10px;height:10px;border-radius:50%;margin-top:4px;background:#70899b;border:2px solid #fff;box-shadow:0 0 0 1px #cbd9e2;z-index:1}.incident-timeline-event.driver .incident-timeline-event-dot{background:#7258aa}.incident-timeline-event.occ .incident-timeline-event-dot{background:#d13b4e}.incident-timeline-event.engineering .incident-timeline-event-dot{background:#2d7cba}.incident-timeline-event.route-report .incident-timeline-event-dot{background:#248a68}.incident-timeline-event.lmra .incident-timeline-event-dot{background:#4b758f}.incident-timeline-event.evidence .incident-timeline-event-dot{background:#c68c19}.incident-timeline-event-copy>div{display:flex;justify-content:space-between;gap:8px}.incident-timeline-event-copy>div span{font-size:7.3px;letter-spacing:.08em;font-weight:900;color:#647d8e}.incident-timeline-event-copy>div small{font-size:7.3px;color:#8395a0}.incident-timeline-event-copy b{display:block;font-size:9.8px;color:#123f5e;margin:2px 0}.incident-timeline-event-copy p{font-size:8px;line-height:1.45;color:#617887;margin:2px 0}.incident-timeline-event-copy em{font-size:7.5px;font-style:normal;color:#82939e}
.incident-evidence-cards{display:grid;grid-template-columns:1fr 1fr;gap:7px}.incident-evidence-cards article{border:1px solid #dce5eb;border-radius:8px;padding:9px;background:#f9fbfc;text-align:center}.incident-timeline-actions{display:flex;gap:7px;margin-top:10px}.incident-timeline-actions .button{flex:1;min-height:36px}.incident-timeline-readonly{margin-top:9px;padding:9px;border-radius:8px;background:#eef7fb;border-left:3px solid #2b78ad}.incident-timeline-readonly b{font-size:7.8px;color:#0b4d74;margin-right:6px}.incident-timeline-readonly span{font-size:7.8px;color:#577483}.incident-timeline-policy{background:#eef8fb;border:1px solid #c9dfe9;border-radius:8px;padding:8px 12px;color:#527082;font-size:8px}.incident-timeline-policy b{color:#0a4b72;margin-right:8px}
@media(max-width:1450px){.incident-timeline-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.incident-timeline-layout{grid-template-columns:minmax(340px,.7fr) minmax(620px,1.4fr)}.incident-timeline-detail-grid{grid-template-columns:1fr}.incident-chain-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1050px){.incident-timeline-command{align-items:stretch;flex-direction:column}.incident-timeline-filters{min-width:0;grid-template-columns:1fr 1fr}.incident-timeline-layout{grid-template-columns:1fr}.incident-timeline-list{min-height:300px;max-height:420px}.incident-timeline-summary-grid{grid-template-columns:1fr 1fr}}

/* V0.24.0 TRAFFIC + NETWORK EVENT LOGBOOK */
.network-event-page{grid-template-rows:auto auto auto minmax(560px,auto) auto!important;gap:10px!important;min-width:0;--net-red:#d43142;--net-amber:#d79512;--net-blue:#2776b3;--net-green:#23865b}
.network-event-head{border-left:3px solid var(--net-amber)!important}.network-event-head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.network-event-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;min-width:0}.network-event-kpis article{background:#fff;border:1px solid #d4e0e8;border-radius:10px;padding:12px 14px;min-height:78px;box-shadow:0 4px 12px rgba(22,59,89,.05);position:relative;overflow:hidden}.network-event-kpis article:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#71889a}.network-event-kpis article.red:before{background:var(--net-red)}.network-event-kpis article.amber:before{background:var(--net-amber)}.network-event-kpis article.blue:before{background:var(--net-blue)}.network-event-kpis article.green:before{background:var(--net-green)}.network-event-kpis span{display:block;font-size:8.5px;font-weight:800;letter-spacing:.08em;color:#526d80}.network-event-kpis b{display:block;font-size:24px;line-height:1.1;color:#073a60;margin:5px 0}.network-event-kpis small{font-size:8px;color:#708697}
.network-event-command{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px!important}.network-event-command h3{margin:2px 0 3px;font-size:14px}.network-event-command p{margin:0;color:#657c8c;font-size:9px}.network-event-filters{display:grid;grid-template-columns:minmax(230px,1.35fr) minmax(180px,1fr) minmax(130px,.7fr) minmax(145px,.75fr) auto;gap:8px;align-items:center;min-width:min(920px,68vw)}.network-event-filters input,.network-event-filters select{height:38px;border:1px solid #cbd9e3;border-radius:8px;background:#fff;padding:0 11px;color:#163b59;font-size:9.5px}
.network-event-layout{display:grid;grid-template-columns:minmax(390px,.72fr) minmax(720px,1.55fr);gap:10px;min-height:560px;min-width:0}.network-event-list-panel,.network-event-detail-panel{min-width:0;overflow:hidden}.network-event-list{height:calc(100% - 50px);min-height:500px;overflow:auto;border:1px solid #dbe5ec;border-radius:8px;background:#f8fbfd}.network-event-row{display:grid;grid-template-columns:46px minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px;border-bottom:1px solid #dde7ee;background:#fff;cursor:pointer;border-left:3px solid transparent}.network-event-row:hover{background:#f3f9fc}.network-event-row.selected{background:#eaf5fb;border-left-color:var(--net-blue)}.network-event-type-icon{width:42px;height:42px;border-radius:9px;display:grid;place-items:center;font-weight:900;font-size:16px;background:#edf3f7;color:#355b75}.network-event-type-icon.road_closure,.network-event-type-icon.external_rtc{background:#fde7ea;color:#aa1830}.network-event-type-icon.congestion,.network-event-type-icon.roadworks,.network-event-type-icon.obstruction,.network-event-type-icon.bus_lane_obstruction{background:#fff0db;color:#9b5f00}.network-event-type-icon.police_activity,.network-event-type-icon.emergency_services{background:#e7f1ff;color:#245f9b}.network-event-row-copy{min-width:0}.network-event-row-copy b{display:block;font-size:10.7px;color:#073a60;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.network-event-row-copy span{display:block;font-size:8.6px;color:#5e7484;margin:3px 0}.network-event-row-copy small{display:block;font-size:7.7px;color:#81929e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.network-event-row-state{text-align:right;min-width:92px}.network-event-row-state small{display:block;margin-top:5px;font-size:7.5px;font-weight:900;letter-spacing:.07em}.network-event-row-state .severity-critical{color:#b91d33}.network-event-row-state .severity-high{color:#aa6900}.network-event-row-state .severity-medium{color:#2c668f}.network-event-row-state .severity-low{color:#44745f}
.network-event-detail-panel{overflow:auto;padding:12px!important;background:#f8fbfd!important}.network-event-empty{min-height:500px;display:grid;place-items:center;align-content:center;gap:5px;text-align:center;color:#718895;border:1px dashed #cbdbe6;border-radius:10px}.network-event-empty b{font-size:11px;color:#183e5a}.network-event-empty span{font-size:9px;max-width:480px}.network-event-detail{display:grid;gap:10px;min-width:0}.network-event-hero{display:flex;justify-content:space-between;gap:16px;align-items:center;background:#fff;border:1px solid #d5e1e9;border-left:4px solid var(--net-amber);border-radius:10px;padding:14px 16px}.network-event-hero span{font-size:8px;letter-spacing:.12em;font-weight:800;color:#6a8292}.network-event-hero h3{margin:3px 0;font-size:17px;color:#06395d}.network-event-hero p{margin:0;font-size:9px;line-height:1.45;color:#607787}.network-event-hero-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.network-event-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.network-event-summary-grid article{background:#fff;border:1px solid #d8e3ea;border-radius:8px;padding:10px;text-align:center}.network-event-summary-grid span{font-size:7.4px;font-weight:800;letter-spacing:.08em;color:#698090}.network-event-summary-grid b{display:block;font-size:10.2px;color:#083b60;margin:3px 0}.network-event-summary-grid small{font-size:7.5px;color:#7b8f9d}
.network-event-context-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,.7fr);gap:10px}.network-event-map-card,.network-event-photo-card,.network-event-history,.network-event-actions{background:#fff;border:1px solid #d6e2e9;border-radius:10px;padding:12px;min-width:0}.network-event-mini-map{height:250px;border-radius:8px;overflow:hidden;border:1px solid #d5e2e9;background:#edf4f7}.network-event-map-empty{height:250px;display:grid;place-items:center;border:1px dashed #cbdbe4;border-radius:8px;color:#768c99;font-size:9px;background:#f8fbfc}.network-event-photo{height:250px;border:1px solid #dbe5eb;border-radius:8px;overflow:hidden;background:#f8fbfc}.network-event-photo img{width:100%;height:100%;object-fit:cover}.network-event-no-photo{height:100%;display:grid;place-items:center;align-content:center;gap:4px;color:#778b98;text-align:center}.network-event-no-photo b{color:#204a66;font-size:11px}.network-event-no-photo span{font-size:8px}.network-event-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.network-event-actions>div:first-child b{display:block;color:#0a4164;font-size:9px}.network-event-actions>div:first-child span{display:block;margin-top:2px;color:#6d8290;font-size:8px}.network-event-actions>div:last-child{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.network-event-actions .button{min-height:36px}.network-event-updates{display:grid;gap:0}.network-event-update{padding:9px 4px;border-bottom:1px solid #e1e8ed}.network-event-update:last-child{border-bottom:0}.network-event-update>div{display:flex;justify-content:space-between;gap:8px}.network-event-update span{font-size:7.5px;letter-spacing:.08em;font-weight:900;color:#647d8e}.network-event-update small{font-size:7.4px;color:#8395a0}.network-event-update b{display:block;font-size:9.5px;color:#123f5e;margin:2px 0}.network-event-update p{font-size:8px;line-height:1.45;color:#617887;margin:2px 0}.network-event-readonly,.network-event-policy{background:#eef8fb;border:1px solid #c9dfe9;border-radius:8px;padding:8px 12px;color:#527082;font-size:8px}.network-event-readonly b,.network-event-policy b{color:#0a4b72;margin-right:8px}
.network-event-dialog-backdrop{position:fixed;inset:0;z-index:13000;background:rgba(5,29,47,.54);display:grid;place-items:center;padding:22px}.network-event-dialog-backdrop[hidden]{display:none!important}.network-event-dialog{width:min(980px,96vw);max-height:92vh;overflow:auto;background:#fff;border-radius:14px;border:1px solid #cbdbe5;box-shadow:0 24px 70px rgba(4,28,46,.3);padding:16px}.network-event-update-dialog{width:min(720px,94vw)}.network-event-dialog-head{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid #e0e8ed;padding-bottom:10px;margin-bottom:12px}.network-event-dialog-head span{font-size:8px;font-weight:900;letter-spacing:.1em;color:#5f7a8b}.network-event-dialog-head h3{margin:2px 0;font-size:17px;color:#06395d}.network-event-dialog-head p{margin:0;color:#6b8190;font-size:8.5px}.network-event-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.network-event-form-grid label,.network-event-route-picker{display:grid;gap:5px}.network-event-form-grid label>span,.network-event-route-picker>div>span{font-size:7.5px;font-weight:900;letter-spacing:.08em;color:#587185}.network-event-form-grid input,.network-event-form-grid select,.network-event-form-grid textarea,.network-event-route-picker>input{border:1px solid #cbd9e2;border-radius:8px;background:#fff;padding:9px 10px;font-size:10px;color:#163b59;min-height:38px}.network-event-form-grid textarea{min-height:86px;resize:vertical}.network-event-form-grid .wide,.network-event-route-picker.wide{grid-column:1/-1}.network-event-form-grid label small,.network-event-route-picker small{font-size:7.5px;color:#7d8f9b}.network-event-route-picker{padding:10px;border:1px solid #d7e3ea;border-radius:9px;background:#f9fbfc}.network-event-route-picker>div{display:flex;align-items:center;justify-content:space-between;gap:8px}.network-event-route-picker.disabled{opacity:.55;pointer-events:none}.network-event-route-chips{display:flex;gap:6px;flex-wrap:wrap;max-height:128px;overflow:auto;padding:3px}.network-event-route-chip{border:1px solid #c9d8e1;border-radius:999px;background:#fff;color:#31576f;padding:6px 9px;font-size:8px;font-weight:800;cursor:pointer}.network-event-route-chip.selected{background:#0c5b87;color:#fff;border-color:#0c5b87}.network-event-route-empty{font-size:8px;color:#7a8e9a}.network-event-dialog-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;border-top:1px solid #e0e8ed;margin-top:14px;padding-top:12px}.network-event-dialog-actions>span{margin-right:auto;color:#b02b3a;font-size:8.5px;max-width:55%}
@media(max-width:1450px){.network-event-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.network-event-layout{grid-template-columns:minmax(340px,.7fr) minmax(620px,1.4fr)}.network-event-context-grid{grid-template-columns:1fr}.network-event-summary-grid{grid-template-columns:1fr 1fr}.network-event-filters{min-width:0;grid-template-columns:1.3fr 1fr .7fr .8fr auto}}
@media(max-width:1050px){.network-event-head,.network-event-command,.network-event-actions{align-items:stretch;flex-direction:column}.network-event-head-actions{justify-content:flex-start}.network-event-filters{grid-template-columns:1fr 1fr}.network-event-layout{grid-template-columns:1fr}.network-event-list{min-height:300px;max-height:420px}.network-event-form-grid{grid-template-columns:1fr 1fr}.network-event-summary-grid{grid-template-columns:1fr 1fr}}


/* V0.24.1 NETWORK EVENT MAP LOCATION PICKER */
.network-event-location-picker{grid-column:1/-1;display:grid;gap:8px;padding:10px;border:1px solid #d2e0e8;border-radius:10px;background:#f8fbfd}.network-event-location-picker[hidden]{display:none!important}.network-event-location-picker-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.network-event-location-picker-head>div:first-child{display:grid;gap:3px}.network-event-location-picker-head span{font-size:7.5px;font-weight:900;letter-spacing:.08em;color:#587185}.network-event-location-picker-head small{font-size:7.8px;color:#728895}.network-event-location-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.network-event-location-actions .button{min-height:34px;padding:6px 10px}.network-event-editor-map{height:320px;border:1px solid #cbdbe4;border-radius:9px;overflow:hidden;background:#eaf2f6;cursor:crosshair}.network-event-editor-map .leaflet-marker-icon{cursor:grab}.network-event-editor-map .leaflet-marker-dragging{cursor:grabbing}.network-event-location-status{padding:7px 9px;border-radius:7px;background:#eef4f7;color:#6c8290;font-size:8px;font-weight:800;letter-spacing:.04em}.network-event-location-status.set{background:#e9f8ee;color:#14613b}.network-event-location-status.error{background:#fff0f1;color:#a42c3d}.network-event-coordinate-fallback{border-top:1px solid #dce6ec;padding-top:7px}.network-event-coordinate-fallback summary{cursor:pointer;color:#607887;font-size:7.5px;font-weight:900;letter-spacing:.07em}.network-event-coordinate-fallback>div{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.network-event-coordinate-fallback label{display:grid;gap:5px}.network-event-coordinate-fallback label>span{font-size:7.5px;font-weight:900;letter-spacing:.08em;color:#587185}.network-event-coordinate-fallback input{border:1px solid #cbd9e2;border-radius:8px;background:#fff;padding:9px 10px;font-size:10px;color:#163b59;min-height:38px}
@media(max-width:700px){.network-event-location-picker-head{align-items:stretch;flex-direction:column}.network-event-location-actions{justify-content:stretch}.network-event-location-actions .button{flex:1}.network-event-editor-map{height:300px}.network-event-coordinate-fallback>div{grid-template-columns:1fr}}

/* V0.24.2 NETWORK EVENT ROUTE-AWARE MAP PINNING */
/* V0.24.3 NETWORK EVENT BASEMAP TILE CSP FIX */
.network-event-route-map-status{padding:7px 9px;border:1px solid #d7e3ea;border-radius:7px;background:#f1f6f9;color:#5d7788;font-size:7.6px;font-weight:900;letter-spacing:.055em}.network-event-route-map-status.loading{background:#fff8e7;color:#8a6415;border-color:#eed9a0}.network-event-route-map-status.set{background:#e9f8ee;color:#14613b;border-color:#bfe6ca}.network-event-route-map-status.error{background:#fff0f1;color:#a42c3d;border-color:#f1c4cb}.network-event-editor-map .leaflet-interactive{cursor:crosshair}.network-event-route-picker{border-color:#bfd6e5;background:#f9fcfe}

/* V0.24.4 NETWORK EVENT AUTOMATIC ROAD + LOCATION */
.network-event-form-grid>label>small{font-size:7.4px;color:#718694;line-height:1.25;margin-top:-1px}

/* V0.24.5 NETWORK EVENT DIVERSION NOTICE + MAP STABILITY */
.network-event-diversion-evidence{background:#fff;border:1px solid #d6e2e9;border-radius:10px;padding:12px;display:grid;gap:10px}.network-event-diversion-evidence .section-head{align-items:flex-start}.network-event-diversion-evidence .section-head p:not(.eyebrow){margin:3px 0 0;font-size:8px;line-height:1.45;color:#6d8290}.network-event-diversion-list{display:grid;gap:7px}.network-event-diversion-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 11px;border:1px solid #d8e3ea;border-radius:9px;background:#f9fcfd}.network-event-diversion-card>div:first-child span{display:block;font-size:7.4px;font-weight:900;letter-spacing:.07em;color:#627b8c}.network-event-diversion-card>div:first-child b{display:block;margin:3px 0;font-size:10.5px;color:#073e62}.network-event-diversion-card>div:first-child small{display:block;font-size:7.8px;color:#788c99}.network-event-diversion-card>div:last-child{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.network-event-diversion-card .button{min-height:32px;padding:5px 9px;font-size:7.5px}.network-event-diversion-empty{display:grid;place-items:center;align-content:center;min-height:92px;padding:14px;border:1px dashed #cbdbe4;border-radius:9px;background:#f8fbfc;text-align:center;color:#718895}.network-event-diversion-empty b{font-size:9px;color:#204a66}.network-event-diversion-empty span{font-size:8px;max-width:620px;line-height:1.45}.network-event-diversion-boundary{padding:8px 10px;border-radius:8px;background:#eef8fb;border:1px solid #c9dfe9;color:#527082;font-size:8px;line-height:1.45}.network-event-diversion-boundary b{color:#0a4b72;margin-right:8px}
.network-event-diversion-dialog{width:min(1220px,97vw);max-height:94vh}.network-event-diversion-controls{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(220px,.8fr) minmax(320px,1.4fr);gap:9px;margin-bottom:9px}.network-event-diversion-controls label{display:grid;gap:5px}.network-event-diversion-controls label>span,.network-event-diversion-driver>span,.network-event-diversion-note>span,.network-event-diversion-skipped-panel>div:first-child>span{font-size:7.5px;font-weight:900;letter-spacing:.08em;color:#587185}.network-event-diversion-controls select,.network-event-diversion-note textarea{border:1px solid #cbd9e2;border-radius:8px;background:#fff;padding:9px 10px;font-size:10px;color:#163b59;min-height:38px}.network-event-diversion-driver{display:grid;align-content:center;gap:2px;padding:8px 10px;border:1px solid #cfe2da;border-radius:8px;background:#f0faf5}.network-event-diversion-driver b{font-size:9.5px;color:#0f6044}.network-event-diversion-driver small{font-size:7.5px;color:#648579}.network-event-diversion-toolbar{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:8px}.network-event-diversion-toolbar .button{min-height:34px}.network-event-diversion-toolbar .button.active{background:#0b5f89;color:#fff;border-color:#0b5f89}.network-event-diversion-status{padding:8px 10px;border:1px solid #d6e2e9;border-radius:8px;background:#f4f8fa;color:#4f7188;font-size:8px;font-weight:900;letter-spacing:.04em;margin-bottom:8px}.network-event-diversion-map{height:420px;border:1px solid #cbdbe4;border-radius:10px;overflow:hidden;background:#eaf2f6;cursor:crosshair}.network-event-diversion-map .leaflet-interactive{cursor:crosshair}.network-event-diversion-skipped-panel{margin-top:9px;border:1px solid #d8e3ea;border-radius:9px;padding:10px;background:#f9fcfd;display:grid;gap:8px}.network-event-diversion-skipped-panel>div:first-child{display:flex;justify-content:space-between;gap:12px;align-items:center}.network-event-diversion-skipped-panel>div:first-child small{font-size:7.5px;color:#788c99;text-align:right}.network-event-diversion-skipped{display:flex;gap:6px;flex-wrap:wrap;max-height:110px;overflow:auto}.network-event-diversion-skipped span{display:inline-flex;align-items:center;gap:5px;padding:5px 7px;border-radius:999px;border:1px solid #d3e0e7;background:#fff;color:#31576f;font-size:7.6px}.network-event-diversion-skipped span b{display:inline-grid;place-items:center;min-width:18px;height:18px;border-radius:999px;background:#e8f1f6;color:#0b4d74;font-size:7px}.network-event-diversion-skipped em{font-size:8px;color:#778b98}.network-event-diversion-note{display:grid;gap:5px;margin-top:9px}.network-event-diversion-note textarea{min-height:74px;resize:vertical}.network-event-diversion-dialog .network-event-dialog-actions{position:sticky;bottom:-16px;background:#fff;padding-bottom:2px;z-index:2}
@media(max-width:900px){.network-event-diversion-controls{grid-template-columns:1fr 1fr}.network-event-diversion-driver{grid-column:1/-1}.network-event-diversion-map{height:360px}.network-event-diversion-card{align-items:flex-start;flex-direction:column}.network-event-diversion-card>div:last-child{justify-content:flex-start}.network-event-diversion-skipped-panel>div:first-child{align-items:flex-start;flex-direction:column}.network-event-diversion-skipped-panel>div:first-child small{text-align:left}}
@media(max-width:620px){.network-event-diversion-controls{grid-template-columns:1fr}.network-event-diversion-map{height:320px}.network-event-diversion-toolbar .button{flex:1 1 42%}}

/* V0.24.6 NETWORK EVENT ROAD-CLOSURE FOCUS + ROAD-SNAPPED DIVERSION */

/* V0.24.7 NETWORK EVENT DIRECTION-GUIDED DIVERSION */
.network-event-travel-arrow{background:transparent!important;border:0!important;pointer-events:none!important}.network-event-travel-arrow>span{width:18px;height:18px;display:grid;place-items:center;border:2px solid #fff;border-radius:999px;background:rgba(255,255,255,.92);box-shadow:0 1px 4px rgba(5,45,70,.34)}.network-event-travel-arrow i{display:block;font-style:normal;font-size:11px;line-height:1;color:#083f63;transform-origin:50% 50%;text-shadow:0 1px 0 #fff}.network-event-diversion-map .network-event-travel-arrow{cursor:default!important}

/* V0.24.8 NETWORK EVENT DIVERSION CONTROL DASHBOARD + CALENDAR */
.network-event-page{grid-template-rows:auto auto auto auto!important}
.network-event-workspace[hidden]{display:none!important}
#networkEventEventsWorkspace{display:grid;grid-template-rows:auto auto minmax(560px,auto);gap:10px;min-width:0}
#networkEventDiversionsWorkspace{display:grid;grid-template-rows:auto auto auto minmax(560px,auto);gap:10px;min-width:0}
.network-event-workspace-tabs{display:flex;align-items:center;gap:7px;padding:5px;border:1px solid #d4e1e8;border-radius:11px;background:#eef4f6;box-shadow:0 2px 7px rgba(16,56,82,.04)}
.network-event-workspace-tabs button{min-height:38px;border:1px solid transparent;border-radius:8px;background:transparent;color:#607684;font-size:8.5px;font-weight:950;letter-spacing:.045em;padding:7px 13px;cursor:pointer}
.network-event-workspace-tabs button:hover{background:#f8fbfc;color:#174665}.network-event-workspace-tabs button.active{background:#fff;color:#0a496f;border-color:#b8d1df;box-shadow:0 2px 7px rgba(20,62,89,.08)}
.network-event-workspace-tabs button span{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:999px;background:#d9e9f1;color:#0a527d;margin-left:5px;font-size:7px}.network-event-workspace-tabs button.active span{background:#e4f5eb;color:#166846}
.network-diversion-control-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px!important}
.network-diversion-view-tabs{display:flex;gap:6px;flex-wrap:wrap}.network-diversion-view-tabs button{min-height:36px;border:1px solid transparent;border-radius:8px;background:#edf3f5;color:#637984;padding:7px 12px;font-size:8px;font-weight:950;letter-spacing:.035em;cursor:pointer}.network-diversion-view-tabs button.active{background:#0e665f;color:#fff;border-color:#0e665f}.network-diversion-view-tabs button:hover:not(.active){background:#f7fafb;color:#174665;border-color:#cbdbe4}
.network-diversion-nav-actions{display:flex;align-items:center;gap:7px}.network-diversion-filter-bar{display:grid;grid-template-columns:minmax(260px,1.4fr) minmax(150px,.65fr) minmax(150px,.65fr) auto;gap:8px;align-items:center;padding:10px 11px!important}.network-diversion-filter-bar input,.network-diversion-filter-bar select{height:38px;border:1px solid #cbd9e3;border-radius:8px;background:#fff;padding:0 11px;color:#163b59;font-size:9.5px}
.network-diversion-dashboard{padding:12px!important;min-width:0;overflow:auto;background:#f8fbfc!important}.network-diversion-dashboard-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:10px}.network-diversion-dashboard-head h3{font-size:14px;margin:2px 0 3px;color:#083b5f}.network-diversion-dashboard-head p{margin:0;font-size:8.5px;color:#6c8190;line-height:1.45}.network-diversion-month-toolbar{display:flex;align-items:center;gap:8px;white-space:nowrap}.network-diversion-month-toolbar b{min-width:130px;text-align:center;color:#164768;font-size:10px}.network-diversion-month-toolbar .button{min-width:34px;padding:5px 8px;font-size:14px}
.network-diversion-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-bottom:5px;padding:0 2px}.network-diversion-calendar-week span{text-align:center;font-size:7px;font-weight:950;letter-spacing:.08em;color:#6d8290}.network-diversion-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;min-width:900px}.network-diversion-calendar-day{min-height:126px;border:1px solid #d6e2e9;border-radius:9px;background:#fff;padding:7px;display:grid;grid-template-rows:auto 1fr;gap:5px}.network-diversion-calendar-day.outside{background:#f3f7f9;border-style:dashed;min-height:0}.network-diversion-calendar-day.today{border-color:#d59a1e;box-shadow:inset 0 0 0 1px #f0c76f}.network-diversion-day-number{display:flex;align-items:center;justify-content:space-between}.network-diversion-day-number>b{font-size:10px;color:#174766}.network-diversion-day-number span{font-size:6.5px;font-weight:950;color:#8b640d}.network-diversion-day-items{display:grid;align-content:start;gap:4px}.network-diversion-day-items>small{font-size:6.8px;color:#788c99;padding-left:4px}.network-diversion-calendar-item{display:grid;gap:1px;text-align:left;border:0;border-left:3px solid #7d919f;border-radius:6px;background:#f1f5f7;padding:5px 6px;cursor:pointer;min-width:0}.network-diversion-calendar-item.active{border-left-color:#23865b;background:#eaf8f0}.network-diversion-calendar-item.draft{border-left-color:#d79512;background:#fff7e6}.network-diversion-calendar-item.ended{border-left-color:#84939d;background:#f1f4f5}.network-diversion-calendar-item:hover{filter:brightness(.98);box-shadow:0 2px 5px rgba(17,55,80,.08)}.network-diversion-calendar-item b{font-size:7.1px;color:#123f5e}.network-diversion-calendar-item span{font-size:6.8px;color:#6b7f8d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.network-diversion-timeline-scroll{overflow:auto;border:1px solid #d7e2e9;border-radius:9px;background:#fff;min-width:0}.network-diversion-timeline-header,.network-diversion-timeline-row{display:grid;grid-template-columns:220px repeat(var(--days),minmax(25px,1fr));min-width:1100px;align-items:stretch}.network-diversion-timeline-header{position:sticky;top:0;z-index:2;background:#eef4f6;border-bottom:1px solid #d4e1e8}.network-diversion-timeline-header>b{padding:8px;font-size:7px;color:#5f7889;letter-spacing:.06em}.network-diversion-timeline-header>span{display:grid;place-items:center;border-left:1px solid #dbe5ea;font-size:6.6px;color:#6e8290;padding:6px 0}.network-diversion-timeline-row{position:relative;min-height:48px;border-bottom:1px solid #e2e9ed;background:repeating-linear-gradient(to right,transparent 0,transparent calc((100% - 220px)/31 - 1px),rgba(212,225,232,.55) calc((100% - 220px)/31 - 1px),rgba(212,225,232,.55) calc((100% - 220px)/31))}.network-diversion-timeline-label{grid-column:1;padding:7px 8px;background:#fff;border-right:1px solid #d8e3e9;z-index:1;display:grid;align-content:center;gap:1px}.network-diversion-timeline-label b{font-size:8px;color:#0b456b}.network-diversion-timeline-label span{font-size:6.9px;color:#5c7585}.network-diversion-timeline-label small{font-size:6.6px;color:#81919c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.network-diversion-timeline-bar{grid-row:1;align-self:center;min-height:30px;margin:8px 2px;border:0;border-radius:6px;padding:4px 7px;text-align:left;cursor:pointer;background:#eaf2f5;border-left:4px solid #7c8f9c;overflow:hidden}.network-diversion-timeline-bar.active{background:#e7f6ed;border-left-color:#23865b}.network-diversion-timeline-bar.draft{background:#fff5dd;border-left-color:#d79512}.network-diversion-timeline-bar.ended{background:#edf1f3;border-left-color:#84939d}.network-diversion-timeline-bar b{display:block;font-size:6.8px;color:#154460}.network-diversion-timeline-bar span{display:block;font-size:6.4px;color:#6b7e89;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.network-diversion-register-wrap{overflow:auto;border:1px solid #d7e2e9;border-radius:9px;background:#fff}.network-diversion-register{width:100%;border-collapse:collapse;min-width:1050px}.network-diversion-register th{position:sticky;top:0;background:#eef4f6;color:#607887;font-size:6.8px;letter-spacing:.07em;text-align:left;padding:9px 8px;border-bottom:1px solid #d4e1e8}.network-diversion-register td{padding:9px 8px;border-bottom:1px solid #e1e8ec;font-size:7.8px;color:#36566c;vertical-align:middle}.network-diversion-register td b{display:block;font-size:8.4px;color:#123f5e}.network-diversion-register td small{display:block;margin-top:2px;font-size:6.8px;color:#7e909c}.network-diversion-register .button{min-height:30px;padding:5px 8px;font-size:7px}
.network-diversion-intelligence{display:grid;grid-template-columns:1fr 1fr;gap:10px}.network-diversion-intelligence>section{border:1px solid #d7e2e9;border-radius:10px;background:#fff;padding:12px;min-height:220px}.network-diversion-intelligence h4{margin:0 0 10px;color:#214b66;font-size:8px;letter-spacing:.08em}.network-diversion-intel-bar{display:grid;grid-template-columns:minmax(110px,.8fr) minmax(180px,1.5fr) 34px;gap:8px;align-items:center;margin:8px 0}.network-diversion-intel-bar span{font-size:7.5px;color:#31566e}.network-diversion-intel-bar i{height:8px;border-radius:999px;background:#e9eff2;overflow:hidden}.network-diversion-intel-bar i b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#1f7b70,#c89b30)}.network-diversion-intel-bar strong{font-size:7.5px;color:#173f5c}.network-diversion-exceptions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.network-diversion-exceptions article{border:1px solid #dce5ea;border-radius:8px;background:#f9fbfc;padding:11px}.network-diversion-exceptions b{font-size:20px;color:#0c456b}.network-diversion-exceptions span{display:block;margin-top:3px;font-size:7.5px;color:#6b8190;line-height:1.35}
.network-event-diversion-card.focus{outline:2px solid #2b88bd;outline-offset:2px;background:#eef8fd}
@media(max-width:1200px){.network-diversion-control-nav{align-items:stretch;flex-direction:column}.network-diversion-nav-actions{justify-content:flex-end}.network-diversion-filter-bar{grid-template-columns:1fr 1fr 1fr auto}.network-diversion-intelligence{grid-template-columns:1fr}}
@media(max-width:760px){.network-event-workspace-tabs{overflow:auto}.network-event-workspace-tabs button{white-space:nowrap}.network-diversion-view-tabs{display:grid;grid-template-columns:1fr 1fr;width:100%}.network-diversion-nav-actions{justify-content:space-between}.network-diversion-filter-bar{grid-template-columns:1fr 1fr}.network-diversion-filter-bar input{grid-column:1/-1}.network-diversion-calendar{min-width:760px}.network-diversion-exceptions{grid-template-columns:1fr}}

/* V0.24.9 NETWORK EVENT DIVERSION CONTROL RESPONSIVE READABILITY */
.network-event-head{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) max-content;
  align-items:start!important;
  gap:12px!important;
  min-width:0;
}
.network-event-head>div:first-child{min-width:0}
.network-event-head-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:wrap;
  min-width:0;
  max-width:470px;
}
.network-event-head-actions>.button,
.network-event-head-actions>.pill{
  flex:0 0 auto;
  white-space:nowrap;
}
.network-event-workspace-tabs{
  flex-wrap:wrap;
  overflow:visible;
  min-width:0;
}
.network-event-workspace-tabs button{
  flex:0 0 auto;
  min-height:40px;
  min-width:max-content;
  padding:8px 15px;
  white-space:nowrap;
  font-size:8.8px;
}
.network-diversion-control-nav{
  display:grid;
  grid-template-columns:minmax(0,1fr) max-content;
  align-items:center;
  gap:10px;
  min-width:0;
}
.network-diversion-view-tabs{
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap:wrap;
  min-width:0;
}
.network-diversion-view-tabs button{
  flex:0 0 auto;
  min-height:40px;
  min-width:max-content;
  padding:8px 14px;
  white-space:nowrap;
  font-size:8.4px;
}
.network-diversion-nav-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  flex-wrap:wrap;
  min-width:max-content;
}
.network-diversion-nav-actions .button,
.network-diversion-nav-actions .pill{white-space:nowrap;flex:0 0 auto}
.network-diversion-filter-bar{min-width:0}
.network-diversion-filter-bar>*{min-width:0}
#networkDiversionState{white-space:nowrap;min-width:max-content}
@media(max-width:1480px){
  .network-event-head{grid-template-columns:1fr}
  .network-event-head-actions{justify-content:flex-start;max-width:none;width:100%}
  .network-diversion-control-nav{grid-template-columns:1fr}
  .network-diversion-nav-actions{justify-content:flex-start;min-width:0}
}
@media(max-width:980px){
  .network-event-workspace-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  .network-event-workspace-tabs button{width:100%;min-width:0}
  .network-diversion-view-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  .network-diversion-view-tabs button{width:100%;min-width:0}
  .network-diversion-filter-bar{grid-template-columns:1fr 1fr}
  .network-diversion-filter-bar input{grid-column:1/-1}
}
@media(max-width:620px){
  .network-event-workspace-tabs{grid-template-columns:1fr}
  .network-diversion-view-tabs{grid-template-columns:1fr}
  .network-diversion-nav-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .network-diversion-nav-actions>*{width:100%;justify-content:center;text-align:center}
}


/* V0.24.13 stable lower workspace refresh + current bus journey */
.live-lower-table.bus-journey{min-width:920px}
.live-lower-table tbody tr[data-live-lower-vehicle]{cursor:pointer}
.live-lower-table tbody tr[data-live-lower-vehicle]:hover td{background:#f1f7fb}
.live-lower-table tbody tr.live-selected-trip-row td{background:#e9f5fb}
.live-lower-table.bus-journey .live-bus-stop-row.passed td{background:#f7fbf8}
.live-lower-table.bus-journey .live-bus-stop-row.next td{background:#fff8dc;font-weight:800}
.live-lower-table.bus-journey .live-bus-stop-row.predicted td{background:#f4f7fb}
.live-lower-table.bus-journey td:nth-child(1){width:42px;text-align:center}
.live-lower-table.bus-journey td:nth-child(2) small{display:block;font-size:5.4px;color:#718391;margin-top:2px}
.corridor-bus.live-selected-bus{outline:3px solid #0e527d!important;outline-offset:3px;z-index:12!important;filter:drop-shadow(0 3px 5px rgba(14,82,125,.24))}
.live-bus-summary article:first-child{border-left:3px solid #0e527d}


/* V0.24.14 · TIRANA AVL DIRECTIONAL VEHICLE MARKERS · presentation only */
:root{
  --tirana-marker-green:#2f9e44;
  --tirana-marker-amber:#f2b705;
  --tirana-marker-red:#df2f3a;
  --tirana-marker-purple:#7447c7;
  --tirana-marker-grey:#98a3ad;
}
.corridor-bus.tirana-vehicle-marker{
  width:max(76px,var(--avl-bus-card-width-px,72px));
  min-height:max(48px,var(--avl-bus-card-height-px,48px));
  height:auto;
  border:0!important;
  border-radius:3px!important;
  background:var(--tirana-marker-colour,var(--tirana-marker-grey))!important;
  color:var(--tirana-marker-text,#fff)!important;
  padding:4px 12px 4px 10px!important;
  line-height:1.0!important;
  filter:drop-shadow(0 2px 3px rgba(13,34,54,.24));
  box-shadow:none!important;
  overflow:visible;
  isolation:isolate;
}
.corridor-bus.tirana-vehicle-marker.direction-right,
.family-bus.tirana-vehicle-marker.direction-right{
  clip-path:polygon(6% 0,76% 0,100% 50%,76% 100%,6% 100%,0 82%,0 18%)!important;
  padding-left:9px!important;
  padding-right:15px!important;
}
.corridor-bus.tirana-vehicle-marker.direction-left,
.family-bus.tirana-vehicle-marker.direction-left{
  clip-path:polygon(24% 0,94% 0,100% 18%,100% 82%,94% 100%,24% 100%,0 50%)!important;
  padding-left:15px!important;
  padding-right:9px!important;
}
.corridor-bus.tirana-vehicle-marker::before{
  content:"";
  position:absolute;
  inset:2px;
  z-index:0;
  pointer-events:none;
  clip-path:inherit;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.62);
  opacity:.95;
}
.corridor-bus.tirana-vehicle-marker>*{position:relative;z-index:1}
.corridor-bus.tirana-vehicle-marker .tirana-marker-vehicle,
.corridor-bus.tirana-vehicle-marker .tirana-marker-run,
.corridor-bus.tirana-vehicle-marker .tirana-marker-value,
.corridor-bus.tirana-vehicle-marker .tirana-marker-status{
  display:block;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  text-align:center;
  margin:0;
  padding:0;
}
.corridor-bus.tirana-vehicle-marker .tirana-marker-vehicle{font-size:9px!important;font-weight:1000!important;line-height:1.0}
.corridor-bus.tirana-vehicle-marker .tirana-marker-run{font-size:6.2px!important;font-weight:850!important;line-height:1.05;margin-top:1px!important;opacity:.96}
.corridor-bus.tirana-vehicle-marker .tirana-marker-value{font-size:10px!important;font-weight:1000!important;line-height:1.02;margin-top:1px!important;letter-spacing:-.15px}
.corridor-bus.tirana-vehicle-marker .tirana-marker-status{font-size:5.7px!important;font-weight:1000!important;line-height:1.0;margin-top:1px!important;letter-spacing:.28px;opacity:.98}
/* Tone classes describe semantics only; actual colours come from Platform Admin through inline CSS variables. */
.corridor-bus.tirana-vehicle-marker.marker-tone-healthy,
.corridor-bus.tirana-vehicle-marker.marker-tone-warning,
.corridor-bus.tirana-vehicle-marker.marker-tone-critical,
.corridor-bus.tirana-vehicle-marker.marker-tone-diversion,
.corridor-bus.tirana-vehicle-marker.marker-tone-stale{opacity:1}
.corridor-bus.tirana-vehicle-marker.direction-uncertain{outline:2px dashed #ff8a00!important;outline-offset:2px!important}
.corridor-bus.tirana-vehicle-marker.live-selected-bus{outline:3px solid #0e527d!important;outline-offset:3px!important;filter:drop-shadow(0 3px 5px rgba(14,82,125,.28))}

/* V0.25.19.9.4.8.6 · Street Bus Card option mirrors the street-map double-decker style. */
:root[data-avl-marker-style="street_bus_card"] .corridor-bus.tirana-vehicle-marker,
:root[data-avl-marker-style="street_bus_card"] .family-bus.tirana-vehicle-marker{
  width:max(118px,var(--avl-bus-card-width-px,136px))!important;
  height:max(76px,var(--avl-bus-card-height-px,76px))!important;
  min-height:max(76px,var(--avl-bus-card-height-px,76px))!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  clip-path:none!important;
  box-shadow:none!important;
  padding:0!important;
  filter:drop-shadow(0 4px 8px rgba(13,34,54,.22));
}
:root[data-avl-marker-style="street_bus_card"] .corridor-bus.tirana-vehicle-marker::before,
:root[data-avl-marker-style="street_bus_card"] .family-bus.tirana-vehicle-marker::before{display:none!important}
.street-bus-card{position:relative;display:block;width:100%;height:100%;min-height:100%;overflow:visible;pointer-events:none;color:var(--street-bus-text,#111);z-index:1}
.street-bus-shell{position:absolute;inset:0;overflow:visible;filter:drop-shadow(0 4px 7px rgba(7,29,46,.25))}
.street-bus-svg{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:visible}
.street-bus-svg-body{fill:var(--street-bus-colour,#f3c900);stroke:color-mix(in srgb,var(--street-bus-colour,#f3c900) 60%,#102b40);stroke-width:2}
.street-bus-svg-roof{fill:color-mix(in srgb,var(--street-bus-colour,#f3c900) 82%,#fff);opacity:.95}
.street-bus-svg-window{fill:#d7efff;stroke:rgba(18,55,78,.38);stroke-width:1.5}
.street-bus-svg-panel{fill:rgba(5,17,28,.93);stroke:rgba(255,255,255,.28);stroke-width:1.2}
.street-bus-svg-vent{fill:none;stroke:rgba(93,69,12,.82);stroke-width:2.2;stroke-linecap:round}
.street-bus-svg-tail{fill:#d71920;stroke:#821016;stroke-width:1}
.street-bus-svg-tyre{fill:#101820;stroke:#05080a;stroke-width:1.3}
.street-bus-svg-rim{fill:#cfd5db;stroke:#59636c;stroke-width:1}
.street-bus-card.direction-right .street-bus-svg{transform:scaleX(-1);transform-origin:center}
.street-bus-screen{position:absolute;left:26%;right:15%;top:18%;bottom:25%;padding:2px 5px;display:grid;grid-template-rows:auto auto auto auto minmax(0,1fr);gap:1px;color:#f8fbff;text-align:center;align-content:start;z-index:2}
.street-bus-card.direction-left .street-bus-screen{left:15%;right:26%}
.street-bus-line{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.02;letter-spacing:-.02em}
.street-bus-line-1{font-size:var(--avl-marker-primary-px,12px);font-weight:1000}
.street-bus-line-2{font-size:var(--avl-marker-secondary-px,10px);font-weight:850;opacity:.97}
.street-bus-line-3{font-size:var(--avl-marker-metric-px,10px);font-weight:1000}
.street-bus-line-4{font-size:var(--avl-marker-status-px,11px);font-weight:1000;letter-spacing:.01em}
.street-bus-footer{display:flex;justify-content:space-between;gap:8px;align-items:flex-end;font-size:var(--avl-marker-footer-px,7px);font-weight:900;line-height:1.05;text-transform:uppercase;opacity:.95;margin-top:1px}
.street-bus-footer span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.street-bus-badges{position:absolute;left:10px;right:10px;top:-7px;display:flex;justify-content:flex-end;gap:4px;z-index:3}
.street-bus-chip{display:inline-flex;align-items:center;justify-content:center;max-width:44%;padding:2px 6px;border-radius:999px;background:#0f2d55;color:#fff;font-size:6.5px;font-weight:1000;letter-spacing:.03em;box-shadow:0 1px 2px rgba(0,0,0,.18);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.street-bus-chip.incident{background:var(--street-bus-incident,#7447c7)}
.street-bus-card .tirana-driver-present-dot{position:absolute;left:8px;top:-8px;z-index:4}
.street-bus-card.is-selected{filter:drop-shadow(0 0 5px rgba(14,82,125,.52))}
.street-bus-card.is-selected .street-bus-svg-body{stroke:#0e527d;stroke-width:4}

/* Small service-direction arrows are drawn on the rail without changing stop or bus positions. */
.corridor-flow-arrow{
  position:absolute;
  z-index:4;
  width:13px;
  height:12px;
  transform:translate(-50%,-50%);
  display:grid;
  place-items:center;
  color:#0f2d55;
  background:rgba(255,255,255,.92);
  border-radius:999px;
  font-size:9px;
  line-height:1;
  font-weight:1000;
  pointer-events:none;
  box-shadow:0 0 0 1px rgba(15,45,85,.08);
}
.corridor-lane.inbound .corridor-flow-arrow{top:var(--avl-inbound-rail-pct,50%)}
.corridor-lane.outbound .corridor-flow-arrow{top:var(--avl-outbound-rail-pct,35%)}
.triple-monitor-board .corridor-flow-arrow{width:10px;height:10px;font-size:7px}

/* Map uses the same Tirana vehicle language, scaled down; geographic coordinates remain unchanged. */
.tirana-directional-map-icon{background:transparent!important;border:0!important}
.bus-map-marker.tirana-map-vehicle{
  width:var(--map-bus-width,76px);
  height:var(--map-bus-height,46px);
  min-width:0!important;
  box-sizing:border-box;
  background:var(--tirana-marker-colour,var(--tirana-marker-grey))!important;
  color:var(--tirana-marker-text,#fff)!important;
  border:0!important;
  border-radius:2px!important;
  padding:4px 12px 3px 10px!important;
  line-height:1!important;
  text-align:center!important;
  filter:drop-shadow(0 2px 3px rgba(13,34,54,.26));
  box-shadow:none!important;
  position:relative;
  isolation:isolate;
}
.bus-map-marker.tirana-map-vehicle.direction-right{clip-path:polygon(6% 0,76% 0,100% 50%,76% 100%,6% 100%,0 82%,0 18%);padding-right:14px!important}
.bus-map-marker.tirana-map-vehicle.direction-left{clip-path:polygon(24% 0,94% 0,100% 18%,100% 82%,94% 100%,24% 100%,0 50%);padding-left:14px!important;padding-right:9px!important}
.bus-map-marker.tirana-map-vehicle::before{content:"";position:absolute;inset:2px;z-index:0;clip-path:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.62);pointer-events:none}
.bus-map-marker.tirana-map-vehicle>*{position:relative;z-index:1;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0}
.bus-map-marker.tirana-map-vehicle .tirana-marker-vehicle{font-size:7.6px;font-weight:1000;line-height:1}
.bus-map-marker.tirana-map-vehicle .tirana-marker-run{font-size:5.4px;font-weight:850;line-height:1;margin-top:1px}
.bus-map-marker.tirana-map-vehicle .tirana-marker-value{font-size:8.5px;font-weight:1000;line-height:1;margin-top:1px}
.bus-map-marker.tirana-map-vehicle .tirana-marker-status{font-size:5px;font-weight:1000;line-height:1;margin-top:1px;letter-spacing:.22px}
/* Map tone classes also inherit the admin-governed marker colour and text variables. */
.bus-map-marker.tirana-map-vehicle.marker-tone-healthy,
.bus-map-marker.tirana-map-vehicle.marker-tone-warning,
.bus-map-marker.tirana-map-vehicle.marker-tone-critical,
.bus-map-marker.tirana-map-vehicle.marker-tone-diversion,
.bus-map-marker.tirana-map-vehicle.marker-tone-stale{opacity:1}
.tirana-map-flow-arrow-icon{background:transparent!important;border:0!important;pointer-events:none!important}
.tirana-map-flow-arrow{display:grid;width:14px;height:14px;place-items:center;color:var(--flow-colour,#0f2d55);font-size:10px;font-weight:1000;line-height:1;text-shadow:0 0 2px #fff,0 0 3px #fff;transform-origin:center center;pointer-events:none}
.vehicle-map-tooltip .tirana-vehicle-tooltip{display:grid;gap:2px;min-width:170px;font-size:7px;font-weight:750;line-height:1.2}
.vehicle-map-tooltip .tirana-vehicle-tooltip b{font-size:8px;color:#0f2d55}
.vehicle-map-tooltip .tirana-vehicle-tooltip span{display:block;color:#42586b}
.vehicle-map-tooltip .tirana-vehicle-tooltip em{font-style:normal;font-weight:1000;color:#0f2d55;margin-top:2px}

@media(max-width:1180px){
  .corridor-bus.tirana-vehicle-marker{width:max(70px,var(--avl-bus-card-width-px,72px));padding-top:3px!important;padding-bottom:3px!important}
  .corridor-bus.tirana-vehicle-marker .tirana-marker-run{font-size:5.8px!important}
  .corridor-bus.tirana-vehicle-marker .tirana-marker-value{font-size:9.2px!important}
}

/* V0.24.14 safety refinements: preserve missing-service legend and exact rail anchoring. */
.distance-avl-legend i.diversion{background:var(--legend-colour,var(--tirana-marker-purple))!important;border:0!important}
.corridor-flow-arrow{background:transparent!important;color:#fff!important;box-shadow:none!important;text-shadow:0 0 2px #0f2d55,0 0 3px #0f2d55}
.bus-map-marker.tirana-map-vehicle .tirana-marker-vehicle{font-size:7.6px!important}
.bus-map-marker.tirana-map-vehicle .tirana-marker-run{font-size:5.4px!important}
.bus-map-marker.tirana-map-vehicle .tirana-marker-value{font-size:8.5px!important}
.bus-map-marker.tirana-map-vehicle .tirana-marker-status{font-size:5px!important}


/* V0.24.15 · ADMIN-GOVERNED VEHICLE STATUS COLOURS · semantic categories fixed, colour values editable in Platform Admin. */
/* V0.25.0 · ROADSIDE CONTROLLER launcher remains outside the historic permission-managed Navigation Builder matrix. */
.roadside-launch{text-decoration:none}
.roadside-launch[hidden]{display:none!important}


/* V0.25.4 · Roadside mobile access readiness in User Directory */
.view-access-check.derived-roadside{background:#f3f8fb;border-style:dashed;cursor:default}.view-access-check.derived-roadside input{accent-color:#1285b4}.view-access-check.derived-roadside.ready{border-color:#7cc598;background:#effaf2}.view-access-check.derived-roadside.ready b{color:#176f38}.view-access-check.derived-roadside.blocked{opacity:.72}.mobile-field-access{margin:7px 0 9px;border:1px solid #b9d7e6;border-left:4px solid #1685b5;border-radius:9px;background:#f5fbfe;padding:9px;display:grid;gap:7px}.mobile-field-access-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.mobile-field-access-head>div{display:flex;flex-direction:column}.mobile-field-access-head span:not(.pill){font-size:6px;color:#5f7c8d;letter-spacing:.1em}.mobile-field-access-head b{font-size:8px;color:#173b50}.mobile-field-access>p{margin:0;font-size:6.2px;line-height:1.4;color:#617984}.mobile-field-status-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.mobile-field-status-grid article{border:1px solid #d4e5ed;border-radius:7px;background:#fff;padding:6px;min-width:0}.mobile-field-status-grid span,.mobile-field-status-grid b{display:block}.mobile-field-status-grid span{font-size:5.1px;color:#7b8f9b;letter-spacing:.08em}.mobile-field-status-grid b{font-size:6.6px;color:#173b50;margin-top:2px;white-space:normal}.mobile-field-link-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px}.mobile-field-link-row input{min-width:0;height:31px;border:1px solid #cbdce5;background:#fff;border-radius:7px;padding:0 8px;color:#365567;font-size:6.4px}.mobile-field-link-row .button{height:31px;padding:0 9px;font-size:6px;white-space:nowrap}.mobile-field-steps{font-size:5.8px;line-height:1.45;color:#5d7481}.mobile-field-steps b{color:#0f709c}@media(max-width:1100px){.mobile-field-status-grid{grid-template-columns:1fr 1fr}.mobile-field-link-row{grid-template-columns:1fr 1fr}.mobile-field-link-row input{grid-column:1/-1}}@media(max-width:820px){.mobile-field-status-grid{grid-template-columns:1fr 1fr}.mobile-field-link-row{grid-template-columns:1fr}.mobile-field-link-row input{grid-column:auto}.mobile-field-link-row .button{width:100%}}

/* V0.25.5 · User Directory selected-user detail visibility hotfix: hidden empty state must never occupy the governance panel. */


/* V0.25.12 · TfL-inspired operational spreadsheet tables. Presentation only; evidence engines unchanged. */
.tfl-trip-matrix{display:grid;gap:10px;min-width:0;margin:0 0 10px}.tfl-matrix-section{border:1px solid #cbd8e2;border-radius:10px;overflow:hidden;background:#fff;box-shadow:0 2px 8px rgba(21,55,82,.04)}.tfl-matrix-section>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;background:#eaf1f6;border-bottom:1px solid #cbd8e2}.tfl-matrix-section>header b{font-size:10px;letter-spacing:.03em;color:#123d5c}.tfl-matrix-section>header span{font-size:8px;font-weight:850;color:#617787;white-space:nowrap}.tfl-matrix-scroll{overflow:auto;max-width:100%;scrollbar-gutter:stable}.tfl-matrix-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-variant-numeric:tabular-nums;background:#fff}.tfl-matrix-table th,.tfl-matrix-table td{border-right:1px solid #d9e2e8;border-bottom:1px solid #dfe6eb;padding:7px 9px;text-align:center;white-space:nowrap}.tfl-matrix-table thead th{position:sticky;top:0;z-index:3;background:#f1f5f8;color:#506878;font-size:8px;font-weight:950;letter-spacing:.035em}.tfl-matrix-table thead tr:first-child th{background:#dfe9f0;color:#123d5c}.tfl-matrix-table .matrix-stop-head,.tfl-matrix-table .matrix-stop{position:sticky;left:0;z-index:5;text-align:left;background:#f7fafc;min-width:180px;max-width:240px}.tfl-matrix-table .matrix-stop-head{z-index:7}.tfl-matrix-table .matrix-stop span{display:inline-block;min-width:25px;color:#84939e;font-size:8px;font-weight:850}.tfl-matrix-table .matrix-stop b{font-size:10px;color:#173a56}.tfl-matrix-table .matrix-bus-head{min-width:178px;padding:0!important}.tfl-matrix-table .matrix-bus-head button{width:100%;border:0;background:transparent;padding:8px 10px;cursor:pointer;color:inherit}.tfl-matrix-table .matrix-bus-head button:hover{background:#d2e2ec}.tfl-matrix-table .matrix-bus-head b{display:block;font-size:10.5px;color:#0e3e60}.tfl-matrix-table .matrix-bus-head small{display:block;margin-top:2px;font-size:7.5px;color:#60798a}.tfl-matrix-table .matrix-time{min-width:84px;font-size:10px;color:#263d4c}.tfl-matrix-table .matrix-time b{display:block;font-size:10.5px;color:#112f45}.tfl-matrix-table .matrix-time small{display:block;margin-top:2px;font-size:7px;color:#728591}.tfl-matrix-table tbody tr:nth-child(even) td,.tfl-matrix-table tbody tr:nth-child(even) .matrix-stop{background:#f9fbfc}.tfl-matrix-table .matrix-time.actual{background:#f4faf6}.tfl-matrix-table .matrix-time.predicted{background:#f3f8fc}.tfl-matrix-table .matrix-time.muted{color:#a0adb6}.matrix-empty{display:grid;place-items:center;min-height:82px;border:1px dashed #cad7e0;border-radius:9px;background:#f8fbfd;color:#6c7f8d;font-size:10px;font-weight:750;padding:14px;text-align:center}
.trip-detail-ledger{border:1px solid #d5e0e7;border-radius:9px;background:#fff;overflow:hidden;margin-top:8px}.trip-detail-ledger>summary{cursor:pointer;list-style:none;padding:8px 10px;background:#f5f8fa;color:#466174;font-size:8px;font-weight:950;letter-spacing:.06em;border-bottom:1px solid #e0e7ec}.trip-detail-ledger>summary::-webkit-details-marker{display:none}.trip-detail-ledger>summary:after{content:' +';float:right;font-size:12px}.trip-detail-ledger[open]>summary:after{content:' −'}.trip-detail-ledger .live-evidence-table-wrap{border:0;border-radius:0}.trip-detail-ledger>.trip-route-table{margin:0}
/* Modern spreadsheet readability for Trip Times, Stop Performance and Selected Bus Journey. */
.live-evidence-table-wrap,.trip-route-table-wrap{scrollbar-gutter:stable;overflow:auto}.trip-route-table.live-lower-table,.trip-times-page .trip-route-table{font-variant-numeric:tabular-nums;border-collapse:separate;border-spacing:0;background:#fff}.trip-route-table.live-lower-table th,.trip-times-page .trip-route-table th{position:sticky;top:0;z-index:2;background:#eef3f6!important;color:#506675!important;font-size:8.6px!important;font-weight:950!important;letter-spacing:.025em!important;padding:9px 10px!important;border-right:1px solid #d7e0e6!important;border-bottom:1px solid #cbd7df!important;white-space:nowrap}.trip-route-table.live-lower-table td,.trip-times-page .trip-route-table td{font-size:10.2px!important;line-height:1.35!important;padding:9px 10px!important;border-right:1px solid #e1e7eb!important;border-bottom:1px solid #e3e9ed!important;vertical-align:middle!important}.trip-route-table.live-lower-table tbody tr:nth-child(even):not(.direction-break),.trip-times-page .trip-route-table tbody tr:nth-child(even):not(.direction-break){background:#f9fbfc}.trip-route-table.live-lower-table tbody tr:hover,.trip-times-page .trip-route-table tbody tr:hover{background:#eef6fb}.trip-route-table.live-lower-table td b,.trip-times-page .trip-route-table td b{font-size:10.5px!important}.trip-route-table.live-lower-table td small,.trip-times-page .trip-route-table td small{font-size:7.8px!important;line-height:1.3!important;color:#71828e!important}.trip-route-table .direction-break td{background:#e5eef4!important;color:#184461!important;font-size:8.4px!important;font-weight:950!important;letter-spacing:.055em!important}.trip-route-table.bus-journey th:first-child,.trip-route-table.bus-journey td:first-child{width:42px;text-align:center}.trip-route-table.bus-journey th:nth-child(2),.trip-route-table.bus-journey td:nth-child(2){min-width:190px}.trip-route-table.bus-journey td:nth-child(n+3){font-variant-numeric:tabular-nums;white-space:nowrap}.trip-route-table .late-text{color:#bb2635!important;font-weight:900}.trip-route-table .early-text{color:#177a42!important;font-weight:900}.trip-route-table .on-text{color:#715800!important;font-weight:900}
@media(max-width:900px){.tfl-matrix-section>header{align-items:flex-start;flex-direction:column;gap:3px}.tfl-matrix-table .matrix-stop-head,.tfl-matrix-table .matrix-stop{min-width:145px;max-width:180px}.tfl-matrix-table th,.tfl-matrix-table td{padding:7px}.trip-route-table.live-lower-table th,.trip-times-page .trip-route-table th{font-size:8px!important}.trip-route-table.live-lower-table td,.trip-times-page .trip-route-table td{font-size:9.4px!important}}


/* V0.25.13 · Operational view consolidation. Presentation only. */
.live-service-panel{width:100%;height:100%;min-height:0;display:grid;grid-template-rows:minmax(235px,1.05fr) minmax(225px,.95fr);gap:8px;overflow:hidden;background:transparent}
.live-service-section{min-height:0!important;height:100%!important}
.live-service-section .live-evidence-table-wrap{min-height:0;overflow:auto;scrollbar-gutter:stable both-edges}
.live-service-trips .live-lower-table.performance-trips{min-width:1280px}
.live-service-stops .live-lower-table.stops{min-width:1500px}
.stop-bus-cell{min-width:280px;max-width:420px}
.stop-bus-list{display:flex;align-items:center;gap:4px;flex-wrap:wrap;min-width:250px}
.stop-bus-chip{display:inline-grid;grid-template-columns:auto auto;align-items:center;gap:4px;border:1px solid #cbd8e2;border-radius:6px;background:#fff;color:#173a56;padding:3px 5px;cursor:pointer;font-variant-numeric:tabular-nums;box-shadow:0 1px 2px rgba(20,55,82,.04)}
.stop-bus-chip:hover{background:#eef6fb;border-color:#8fb6ce}
.stop-bus-chip b{font-size:8.5px!important;line-height:1!important}.stop-bus-chip small{font-size:7px!important;line-height:1!important;margin:0!important}
.stop-bus-chip.late small{color:#bb2635!important}.stop-bus-chip.early small{color:#177a42!important}.stop-bus-chip.on small{color:#715800!important}.stop-bus-none{color:#9aa7b0}
.corridor-bus.tirana-vehicle-marker .tirana-marker-status.incident-active,.bus-map-marker.tirana-map-vehicle .tirana-marker-status.incident-active{display:flex!important;align-items:center;justify-content:center;gap:2px;overflow:visible!important;text-overflow:clip!important}
.tirana-marker-incident{display:inline-block!important;flex:0 0 auto;padding:1px 3px!important;border-radius:3px;background:var(--incident-badge-colour,#7447c7)!important;color:#fff!important;font-style:normal!important;font-weight:1000!important;line-height:1!important;letter-spacing:.18px!important;box-shadow:0 0 0 1px rgba(255,255,255,.72)}
.corridor-bus.tirana-vehicle-marker .tirana-marker-status.incident-active>span,.bus-map-marker.tirana-map-vehicle .tirana-marker-status.incident-active>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:820px){.live-service-panel{grid-template-rows:minmax(390px,1fr) minmax(390px,1fr);overflow:visible}.stop-bus-cell{min-width:240px}.stop-bus-list{min-width:220px}}

/* V0.25.14 SERVICE SINGLE-TABLE REPAIR · one evidence grid + stop filter */
.live-service-single{width:100%;height:100%;min-height:0;display:grid;grid-template-rows:auto auto auto minmax(0,1fr);overflow:hidden;background:#fff}
.live-service-head{min-height:52px}
.live-service-filterbar{display:flex;align-items:end;gap:12px;padding:7px 10px;border-bottom:1px solid #dfe6eb;background:#f7fafc;min-width:0}
.live-service-filterbar label{display:grid;gap:3px;min-width:min(520px,58vw)}
.live-service-filterbar label span{font-size:6.5px;font-weight:950;letter-spacing:.08em;color:#617786}
.live-service-filterbar select{width:100%;min-height:32px;border:1px solid #cbd8e2;border-radius:7px;background:#fff;color:#143d5b;padding:0 9px;font-size:9.5px;font-weight:750}
.live-service-filterbar small{font-size:7.4px;line-height:1.35;color:#6d7f8c;padding-bottom:4px}
.live-service-main-scroll{min-height:0;height:100%;overflow:auto;scrollbar-gutter:stable both-edges}
.live-service-table{min-width:1280px}
.live-service-table.stop-filtered{min-width:1040px}
.live-service-table tbody tr[data-live-lower-vehicle]{cursor:pointer}
.live-service-table tbody tr[data-live-lower-vehicle]:hover td{background:#eef6fb}
@media(max-width:820px){.live-service-single{min-height:440px}.live-service-filterbar{align-items:stretch;flex-direction:column}.live-service-filterbar label{min-width:0;width:100%}.live-service-filterbar small{padding-bottom:0}.live-service-table{min-width:1180px}.live-service-table.stop-filtered{min-width:920px}}

/* V0.25.15 Service Regulation & Controller Instructions Foundation */
.vehicle-inspector-actions{grid-template-columns:repeat(5,minmax(0,1fr))}
.vehicle-action.instruct{background:#123f63;border-color:#123f63;color:#fff}
.instruction-backdrop{position:fixed;inset:0;z-index:92;background:rgba(5,24,39,.62);display:none;align-items:center;justify-content:center;padding:18px}
.instruction-backdrop.open{display:flex}
.instruction-dialog{width:min(860px,calc(100vw - 36px));max-height:calc(100dvh - 36px);overflow:hidden;background:#fff;border:1px solid #c9d7e1;border-radius:18px;box-shadow:0 30px 90px rgba(5,24,39,.32);display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.instruction-head{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:17px 18px;border-bottom:1px solid #dbe5eb;background:#f7fafc}
.instruction-head h3{margin:2px 0 2px;color:#103b60;font-size:22px}.instruction-head span:not(.pill){color:#667e91;font-size:9px;font-weight:800}
.instruction-body{padding:15px 18px;overflow:auto}.instruction-context{padding:11px 12px;border:1px solid #cfe0ec;border-radius:10px;background:#eef7fc;color:#234f70;font-size:10px;font-weight:850;line-height:1.45}
.instruction-grid{display:grid;grid-template-columns:1.35fr .65fr 1fr;gap:11px;margin-top:12px}.instruction-grid label{display:grid;gap:5px}.instruction-grid label>span{font-size:7px;font-weight:950;letter-spacing:.09em;color:#657d90}.instruction-grid select,.instruction-grid input,.instruction-grid textarea{width:100%;border:1px solid #c8d6e0;border-radius:9px;background:#fff;color:#123d5e;padding:10px 11px;font-size:11px;font-weight:800}.instruction-grid textarea{resize:vertical;min-height:70px;font-weight:650}.instruction-note{grid-column:1/-1}
.instruction-active{margin-top:12px;padding:10px 12px;border:1px solid #ead58d;border-radius:10px;background:#fff9e7}.instruction-active h4{margin:0 0 7px;color:#725500;font-size:10px}.instruction-active-list{display:grid;gap:7px}.instruction-active-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:8px 9px;background:#fff;border:1px solid #eadfab;border-radius:8px}.instruction-active-row b{display:block;color:#153e60;font-size:11px}.instruction-active-row small{display:block;margin-top:2px;color:#6f8190;font-size:8px}.instruction-active-actions{display:flex;gap:5px}.instruction-active-actions button{border:1px solid #becdd8;border-radius:7px;background:#fff;color:#173f61;padding:6px 8px;font-size:8px;font-weight:950;cursor:pointer}
.instruction-policy{margin-top:12px;padding:9px 11px;border-radius:9px;background:#f4f7f9;color:#63798b;font-size:8.5px;line-height:1.45}.instruction-message{margin-top:9px;padding:8px 10px;border-radius:8px;background:#eef6fb;color:#285979;font-size:9px;font-weight:800}.instruction-message.error{background:#fff0f1;color:#ae2228}.instruction-message.ok{background:#eaf8f1;color:#176a45}.instruction-message.warn{background:#fff8df;color:#7b5c00}
.instruction-actions{display:grid;grid-template-columns:.65fr 1.35fr;gap:9px;padding:12px 18px;border-top:1px solid #dce5eb;background:#f8fafc}.instruction-actions button{min-height:45px}
@media(max-width:760px){.vehicle-inspector-actions{grid-template-columns:1fr 1fr}.instruction-grid{grid-template-columns:1fr 1fr}.instruction-grid label:nth-child(3),.instruction-note{grid-column:1/-1}.instruction-active-row{grid-template-columns:1fr}.instruction-active-actions{justify-content:flex-start}}


/* V0.25.15.1 · CONTROLLER INSTRUCTION VISIBILITY + ACTION PROMINENCE HOTFIX
   Presentation only: keep instruction authority/lifecycle untouched. */
.instruction-backdrop{
  z-index:15000;
  padding:12px;
}
.instruction-dialog{
  max-height:calc(100dvh - 24px);
}
.instruction-body{
  min-height:0;
  overscroll-behavior:contain;
}
.vehicle-inspector-actions{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.vehicle-action.instruct{
  grid-column:1/-1;
  height:60px!important;
  min-height:60px!important;
  border-width:2px!important;
  box-shadow:0 5px 14px rgba(18,63,99,.18);
}
.vehicle-action.instruct span{
  font-size:10px!important;
  letter-spacing:.045em;
}
.vehicle-action.instruct small{
  font-size:7px!important;
  opacity:.9!important;
}
.instruction-actions{
  position:relative;
  z-index:2;
  padding:14px 18px;
}
#operationalInstructionIssue{
  min-height:58px!important;
  font-size:11px!important;
  font-weight:1000!important;
  letter-spacing:.03em;
}
#operationalInstructionCancel{
  min-height:52px!important;
}
@media(max-width:760px){
  .instruction-backdrop{padding:6px;align-items:stretch}
  .instruction-dialog{width:100%;max-height:calc(100dvh - 12px);align-self:center}
  .vehicle-inspector-actions{grid-template-columns:1fr 1fr}
  .vehicle-action.instruct{grid-column:1/-1;height:64px!important;min-height:64px!important}
  .vehicle-action.instruct span{font-size:11px!important}
  .vehicle-action.instruct small{font-size:7.5px!important}
  .instruction-actions{grid-template-columns:.55fr 1.45fr;padding:10px}
  #operationalInstructionIssue{min-height:60px!important;font-size:11.5px!important}
}

/* V0.25.15.2 · ACTIVE CONTROLLER INSTRUCTION VISIBILITY + SYNC */
.tirana-marker-instruction{display:inline-block!important;flex:0 0 auto;padding:1px 3px!important;border-radius:3px;background:#123f63!important;color:#fff!important;font-style:normal!important;font-weight:1000!important;line-height:1!important;letter-spacing:.16px!important;box-shadow:0 0 0 1px rgba(255,255,255,.72)}
.vehicle-active-instruction{border-left:6px solid #e2a400!important;background:#fffaf0!important;padding:14px 15px!important;box-shadow:0 3px 12px rgba(114,83,0,.11)!important}
.vehicle-active-instruction .vehicle-section-title{margin-bottom:10px}.vehicle-active-instruction .vehicle-section-title>span{font-size:8px;letter-spacing:.75px;color:#5f4b08}.vehicle-active-instruction .vehicle-section-title>em{background:#fff0bf;color:#755700;font-size:7px;padding:4px 7px}
.vehicle-active-instruction-main{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;min-height:66px}
.vehicle-active-instruction-main strong{display:block;color:#123f63;font-size:17px;line-height:1.1;letter-spacing:.01em}
.vehicle-active-instruction-main span{display:block;margin-top:5px;color:#6c5a17;font-size:9px;font-weight:950;line-height:1.3}
.vehicle-active-instruction-main small{display:block;margin-top:4px;color:#657783;font-size:8px;line-height:1.35}
.vehicle-active-instruction-main button{min-height:46px;border:1px solid #123f63;border-radius:9px;background:#123f63;color:#fff;padding:0 16px;font-size:8.5px;font-weight:1000;cursor:pointer;white-space:nowrap}
.vehicle-active-instruction p{margin:10px 0 0;padding-top:9px;border-top:1px solid #eadfb7;color:#526776;font-size:8.5px;line-height:1.4}
.vehicle-active-instruction .vehicle-instruction-impact{display:block;margin-top:7px!important;padding:7px 9px;border-radius:7px;background:#fff1c8;color:#654b00!important;font-size:8.5px!important;line-height:1.35;font-weight:1000!important}
.instruction-grid select:disabled,.instruction-grid input:disabled,.instruction-grid textarea:disabled{background:#edf1f4;color:#7b8790;cursor:not-allowed}
#operationalInstructionIssue:disabled{background:#aeb9c2!important;border-color:#aeb9c2!important;cursor:not-allowed!important;box-shadow:none!important}
@media(max-width:760px){.vehicle-active-instruction{padding:13px 14px!important}.vehicle-active-instruction-main{grid-template-columns:1fr;gap:10px}.vehicle-active-instruction-main strong{font-size:18px}.vehicle-active-instruction-main span{font-size:10px}.vehicle-active-instruction-main small{font-size:8.5px}.vehicle-active-instruction-main button{min-height:50px;width:100%;font-size:9.5px}.vehicle-active-instruction .vehicle-instruction-impact{font-size:9px!important}}

/* V0.25.16 governed GTFS service regulation control points */
.service-control-point-block{margin-top:14px;border:1px solid #c9d9e6;border-radius:14px;background:#fff;overflow:hidden}.service-control-point-block .section-head{padding:14px 16px;border-bottom:1px solid #d8e4ed}.service-control-point-toolbar{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(220px,1fr);gap:10px;padding:12px 16px}.service-control-point-toolbar label{display:grid;gap:5px;font-weight:800;color:#173e5f}.service-control-point-toolbar label>span{font-size:10px;letter-spacing:.08em}.service-control-point-toolbar select{min-height:42px;border:1px solid #bdd0df;border-radius:9px;padding:0 10px;background:#fff;color:#123d5d;font-weight:800}.service-control-point-note{margin:0 16px 10px;padding:10px 12px;border-radius:9px;background:#eef6fb;color:#31536e;font-size:12px}.service-control-point-list{max-height:350px;overflow:auto;border-top:1px solid #e0e8ef;border-bottom:1px solid #e0e8ef}.service-control-point-row{display:grid;grid-template-columns:minmax(240px,1fr) minmax(125px,.28fr) minmax(180px,.38fr);align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid #e8eef3}.service-control-point-row:last-child{border-bottom:0}.service-control-point-row:nth-child(even){background:#f8fbfd}.service-control-point-stop{display:grid;gap:2px}.service-control-point-stop b{font-size:13px;color:#103c5d}.service-control-point-stop small{font-size:10px;color:#6a8091}.service-control-point-row label{display:flex;align-items:center;gap:8px;min-height:36px;font-size:11px;font-weight:900;color:#173f60}.service-control-point-row input{width:18px;height:18px}.service-control-point-block .service-standard-actions{padding:12px 16px}@media(max-width:800px){.service-control-point-toolbar{grid-template-columns:1fr}.service-control-point-row{grid-template-columns:1fr 1fr}.service-control-point-stop{grid-column:1/-1}}

/* V0.25.16 passenger stop impact preview */
.instruction-stop-impact{display:grid;gap:7px;padding:11px 12px;border:1px solid #bfd5e4;border-radius:10px;background:#f5fafd;color:#183f5d}.instruction-stop-impact>b{font-size:10px;letter-spacing:.09em}.instruction-stop-impact>span{font-size:12px;font-weight:700}.instruction-stop-chips{display:flex;flex-wrap:wrap;gap:5px;max-height:118px;overflow:auto}.instruction-stop-chips i{font-style:normal;font-size:10px;font-weight:900;padding:5px 7px;border-radius:999px;background:#fce8ea;color:#9f1d28;border:1px solid #f2bec3}.instruction-stop-chips i.resume{background:#e8f7ec;color:#176c35;border-color:#b7dfc2}

/* V0.25.16 Live AVL service-exception visibility from canonical Controller instruction */
.live-bus-stop-row.service-not-served{background:#fff3f4!important}.live-bus-stop-row.service-not-served td{opacity:.78}.live-bus-stop-row.service-not-served td:nth-child(2) b{text-decoration:line-through;text-decoration-thickness:1px}.live-bus-stop-row.service-resume{background:#eef9f1!important}.service-exception-text{color:#a51d2a;font-weight:900}.live-bus-stop-row.service-resume .service-exception-text{color:#176c35}

/* V0.25.16.1 · governed multi-trip vehicle-duty curtailment */
.service-control-point-row{grid-template-columns:minmax(230px,1fr) repeat(3,minmax(135px,.34fr))}
.instruction-curtail-duty{display:grid;gap:10px;padding:11px 12px;border:1px solid #b9cfde;border-radius:11px;background:#f7fbfd;min-height:0}
.instruction-curtail-duty[hidden]{display:none}
.instruction-duty-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.instruction-duty-head>div:first-child{display:grid;gap:4px;min-width:0}.instruction-duty-head b{font-size:11px;letter-spacing:.06em;color:#123d5d}.instruction-duty-head span{font-size:11px;line-height:1.4;color:#4e677a}
.instruction-duty-selection{display:grid;gap:5px;min-width:220px}.instruction-duty-selection em{font-style:normal;font-size:9px;font-weight:1000;padding:6px 8px;border-radius:8px;background:#fff0f1;color:#8d222c;border:1px solid #e8bcc1}.instruction-duty-selection em.resume{background:#eaf7ed;color:#17683a;border-color:#b8ddc4}
.instruction-duty-trips{display:grid;gap:9px;max-height:min(52vh,520px);overflow:auto;padding-right:5px;scrollbar-gutter:stable}
.instruction-duty-trip{border:1px solid #d4e0e8;border-radius:10px;background:#fff;overflow:hidden}.instruction-duty-trip.current{border-width:2px;border-color:#8db3cc}.instruction-duty-trip.full-lost{border-style:dashed;background:#fff7f8}
.instruction-duty-trip>header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:9px 10px;background:#f4f8fb;border-bottom:1px solid #e3ebf1;position:sticky;top:0;z-index:2}.instruction-duty-trip>header>div{display:grid;gap:2px}.instruction-duty-trip>header b{font-size:11px;color:#123e60}.instruction-duty-trip>header span{font-size:9px;color:#6d7e8b}.instruction-duty-trip>header strong{font-size:8px;letter-spacing:.07em;padding:5px 7px;border-radius:6px;background:#e5eef5;color:#315d78;white-space:nowrap}.instruction-duty-trip.full-lost>header strong{background:#f8dfe2;color:#8e232d}
.instruction-duty-stops{display:grid}.instruction-duty-stop{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;border-bottom:1px solid #edf1f4;background:#fff}.instruction-duty-stop:last-child{border-bottom:0}.instruction-duty-stop-main{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;align-items:center}.instruction-duty-stop-main>b,.instruction-duty-stop-main>small{grid-column:1}.instruction-duty-stop b{font-size:10px;color:#173f60}.instruction-duty-stop small{font-size:8px;color:#718390}.instruction-duty-stop-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.instruction-stop-choice{display:grid;gap:3px;justify-items:stretch;min-width:155px}.instruction-duty-stop button{min-height:36px;border:1px solid #2c658d;border-radius:7px;background:#fff;color:#164b70;padding:0 10px;font-size:8px;font-weight:1000}.instruction-duty-stop button.resume{border-color:#348357;color:#17683a}.instruction-duty-stop button.official{background:#edf9f1;border-color:#5ca477;color:#17683a}.instruction-point-tag{display:block;text-align:center;font-size:7px;font-weight:1000;letter-spacing:.035em;border-radius:999px;padding:2px 5px}.instruction-point-tag.official{background:#e7f6eb;color:#17683a;border:1px solid #b9dec4}.instruction-point-tag.warning{background:#fff4d9;color:#7a4b00;border:1px solid #e3bd68}.instruction-stop-state{grid-column:2;grid-row:1 / span 2;justify-self:end;align-self:center;display:inline-flex;align-items:center;min-height:22px;border-radius:999px;padding:3px 7px;font-size:7px;font-weight:1000;letter-spacing:.04em;white-space:nowrap}.instruction-stop-state.upcoming-state{background:#eaf3f9;color:#315f7c;border:1px solid #c6dbe8}.instruction-stop-state.later-state{background:#f0f3f5;color:#5b6d79;border:1px solid #d8e0e5}.instruction-stop-state.passed-state{background:#eef2f4;color:#667984;border:1px solid #d8e0e5}.instruction-stop-state.last-served-state{background:#e8f0f8;color:#174f78;border:1px solid #9fc0d8}.instruction-stop-state.pending-state{background:#fff4d9;color:#7a4b00;border:1px solid #e3bd68}.instruction-stop-state.not-served-state{background:#fde6e8;color:#982a34;border:1px solid #e6aab0}.instruction-stop-state.resume-state{background:#e7f6eb;color:#17683a;border:1px solid #b9dec4}.instruction-duty-stop.pending-affected{background:#fffbef}.instruction-duty-stop.affected{background:#fff0f1}.instruction-duty-stop.affected small{color:#9c2932;font-weight:900}.instruction-duty-stop.selected-start{box-shadow:inset 4px 0 0 #245f87;background:#f4f9fd}.instruction-duty-stop.selected-resume{box-shadow:inset 4px 0 0 #298250;background:#edf9f1}.instruction-duty-stop.passed{opacity:.62}.instruction-duty-stop.passed button{display:none}
.instruction-duty-legend{display:block;margin-top:4px;font-size:9px;line-height:1.55;color:#617887}.instruction-duty-legend i{font-style:normal;font-weight:1000;border-radius:999px;padding:2px 6px;margin-right:3px}.instruction-duty-legend i.upcoming{background:#eaf3f9;color:#315f7c;border:1px solid #c6dbe8}.instruction-duty-legend i.official{background:#e7f6eb;color:#17683a;border:1px solid #b9dec4}.instruction-duty-legend i.warning{background:#fff4d9;color:#7a4b00;border:1px solid #e3bd68}.instruction-duty-legend i.affected{background:#fde6e8;color:#982a34;border:1px solid #e6aab0}
.instruction-impact-warning{display:grid;gap:3px;margin-top:8px;padding:8px 10px;border:1px solid #e0ad4a;border-radius:8px;background:#fff7e6}.instruction-impact-warning b{font-size:9px;color:#7a4b00;letter-spacing:.04em}.instruction-impact-warning span{font-size:10px;color:#6c5428;line-height:1.4}
.instruction-duty-error{display:grid;gap:5px;padding:11px;border-radius:9px;background:#fff0f1;border:1px solid #e8bcc1}.instruction-duty-error b{color:#90212c;font-size:10px}.instruction-duty-error span{color:#70454a;font-size:11px;line-height:1.4}
.instruction-impact-trips{display:grid;gap:5px;max-height:150px;overflow:auto}.instruction-impact-trips i{display:flex;justify-content:space-between;gap:10px;align-items:center;font-style:normal;padding:7px 8px;border-radius:8px;background:#fff0f1;border:1px solid #f0c5c9}.instruction-impact-trips i b{font-size:9px;color:#7e2028}.instruction-impact-trips i span{font-size:8px;font-weight:900;color:#a02c35}.instruction-impact-trips i.resume{background:#eaf7ed;border-color:#b8ddc4}.instruction-impact-trips i.resume b,.instruction-impact-trips i.resume span{color:#17683a}
@media(max-width:800px){.service-control-point-row{grid-template-columns:1fr 1fr}.service-control-point-stop{grid-column:1/-1}.instruction-duty-head{display:grid}.instruction-duty-selection{min-width:0}.instruction-duty-trips{max-height:46vh}.instruction-duty-stop{grid-template-columns:1fr}.instruction-duty-stop-actions{justify-content:flex-start}.instruction-stop-choice{min-width:min(100%,220px)}.instruction-stop-state{justify-self:start;grid-column:1;grid-row:auto;margin-top:3px}}

/* V0.25.16.3 · governed GTFS impact estimate visibility */
.instruction-impact-km{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 12px;align-items:center;margin-top:9px;padding:9px 10px;border:1px solid #bfd0dd;border-radius:9px;background:#f6fafc}
.instruction-impact-km b{font-size:9px;letter-spacing:.04em;color:#244d6b}
.instruction-impact-km strong{font-size:16px;color:#123f63;text-align:right}
.instruction-impact-km small{grid-column:1/-1;font-size:8px;line-height:1.35;color:#6b7d89}
.instruction-active-impact,.vehicle-instruction-impact{margin-top:4px!important;color:#6f5312!important;font-weight:950!important}
@media(max-width:760px){.instruction-impact-km{grid-template-columns:1fr}.instruction-impact-km strong{text-align:left;font-size:15px}}
/* V0.25.17 · governed passenger-service exception evidence. Raw AVL passage remains visible. */
.route-report-table td.stop-cell.not_in_service{background:#fff1f4;color:#9f1d3d;border-left:2px solid #b72b50}
.route-report-table td.stop-cell.not_in_service b{color:#9f1d3d;font-size:8.6px;letter-spacing:.35px}
.route-report-table td.stop-cell.not_in_service small{color:#7b4655;white-space:normal;line-height:1.15}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual.not_in_service{background:#fff1f4}
.route-report-page.expected-mode .route-report-table td.stop-cell.expected-actual .actual-time.not_in_service{color:#9f1d3d;font-weight:1000}
.route-report-stop-item.not-service i{border-color:#b72b50;background:#fff0f3;box-shadow:0 0 0 2px rgba(183,43,80,.08)}
.route-report-stop-item.not-service b{color:#8c2440}.route-report-stop-item.not-service small{color:#9a445c;font-weight:850}

/* V0.25.17.6 Running Time completed-period controls + visible tab loading state */
.pc-runtime-head{align-items:flex-start;flex-wrap:wrap}
.pc-runtime-head-copy{min-width:min(620px,100%);flex:1 1 620px}
.pc-runtime-controls{display:flex;align-items:flex-end;justify-content:flex-end;gap:8px;flex:1 1 620px;flex-wrap:wrap}
.pc-runtime-controls label{display:grid;gap:4px;min-width:144px}
.pc-runtime-controls label>span{font-size:7px;font-weight:900;letter-spacing:.08em;color:#607585}
.pc-runtime-controls input,.pc-runtime-controls select{height:34px;border:1px solid #cfdce4;border-radius:8px;background:#fff;color:#123e5d;font:700 10px/1 'Space Grotesk',system-ui,sans-serif;padding:0 9px;outline:none}
.pc-runtime-controls select{min-width:190px}
.pc-runtime-controls input:focus,.pc-runtime-controls select:focus{border-color:#3177d7;box-shadow:0 0 0 2px rgba(49,119,215,.12)}
.pc-runtime-head-actions{flex:1 1 100%;justify-content:flex-end;border-top:1px solid #e7edf1;padding-top:8px;margin-top:1px}
.pc-v34-tab[data-pc-tab="running"].loading{border-color:#5b54d7;background:linear-gradient(180deg,#f8f7ff,#eef0ff);box-shadow:inset 0 -2px 0 #5b54d7}
.pc-v34-tab[data-pc-tab="running"].loading small{color:#5b54d7;font-weight:900}
.pc-v34-tab[data-pc-tab="running"].loading span{animation:pc-runtime-tab-pulse .8s ease-in-out infinite alternate}
@keyframes pc-runtime-tab-pulse{from{opacity:.45;transform:scale(.92)}to{opacity:1;transform:scale(1.06)}}
.pc-runtime-loading{box-sizing:border-box;width:100%;height:100%;min-height:276px;flex:1 1 100%;align-self:stretch;display:grid;place-items:center;text-align:center;color:#567083}
.pc-runtime-loading>div{width:min(560px,92%);margin:auto;display:grid;gap:7px;justify-items:center;text-align:center}
.pc-runtime-loading i{width:26px;height:26px;border:3px solid #dfe5fb;border-top-color:#5b54d7;border-radius:50%;animation:pc-runtime-spin .8s linear infinite}
.pc-runtime-loading b{color:#173f60;font-size:12px}
.pc-runtime-loading small{font-size:9px;max-width:420px}
@keyframes pc-runtime-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.pc-v34-tab[data-pc-tab="running"].loading span,.pc-runtime-loading i{animation:none}}
@media(max-width:1100px){.pc-runtime-controls{justify-content:flex-start}.pc-runtime-head-actions{justify-content:flex-start}}
@media(max-width:700px){.pc-runtime-controls label,.pc-runtime-controls select,.pc-runtime-controls .button{width:100%;min-width:0}.pc-runtime-controls{display:grid;grid-template-columns:1fr 1fr}.pc-runtime-controls label:nth-child(3),.pc-runtime-controls .button{grid-column:1/-1}}
.pc-live-dot.history{color:#3557a4;background:#eef2ff;border-color:#d9e0ff}

/* V0.25.17.7 Running Time AI diagnostic · read-only, available only after evidence load */
.pc-runtime-ai{padding:14px 16px;border-left:4px solid #2a73c9;background:linear-gradient(135deg,#fff,#f8fbfe)}
.pc-runtime-ai-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.pc-runtime-ai-head h3{margin:2px 0 4px;color:#0d3552;font-size:18px}
.pc-runtime-ai-head p{margin:0;max-width:980px;color:#687d8c;font-size:9px;line-height:1.45}
.pc-runtime-ai-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end}
.pc-runtime-ai-result{margin-top:12px;border-top:1px solid #e1e9ee;padding-top:12px;color:#315267;font-size:9px;line-height:1.5}
.pc-runtime-ai-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.pc-runtime-ai-evidence{display:grid;grid-template-columns:repeat(4,minmax(100px,1fr));gap:7px;flex:1 1 520px}
.pc-runtime-ai-evidence article{padding:8px 10px;border:1px solid #dbe6ec;border-radius:8px;background:#fff}
.pc-runtime-ai-evidence span{display:block;font-size:6.5px;font-weight:900;letter-spacing:.08em;color:#738692}
.pc-runtime-ai-evidence strong{display:block;margin-top:3px;color:#103f60;font-size:13px}
.pc-runtime-ai-answer{margin:12px 0 10px;padding:10px 12px;border-radius:9px;background:#edf7fd;color:#163f59;font-weight:700;font-size:10px}
.pc-runtime-ai-result section{margin:9px 0}.pc-runtime-ai-result section>b{display:block;color:#164c6e;font-size:7px;letter-spacing:.08em}.pc-runtime-ai-result ul{margin:5px 0 0;padding-left:18px}.pc-runtime-ai-result li{margin:3px 0}
.pc-runtime-ai-meta{display:block;margin-top:10px;color:#7d8d98;font-size:7px}
.pc-runtime-ai-working{display:grid;grid-template-columns:22px 1fr;column-gap:9px;align-items:center;padding:12px;border-radius:9px;background:#f1f7fb}.pc-runtime-ai-working i{grid-row:1/3;width:20px;height:20px;border:2px solid #d2e2ec;border-top-color:#1d6fac;border-radius:50%;animation:pc-runtime-ai-spin .8s linear infinite}.pc-runtime-ai-working b{color:#114666}.pc-runtime-ai-working span{color:#70838f;font-size:8px}
@keyframes pc-runtime-ai-spin{to{transform:rotate(360deg)}}
@media(max-width:900px){.pc-runtime-ai-head{flex-direction:column}.pc-runtime-ai-actions{justify-content:flex-start}.pc-runtime-ai-evidence{grid-template-columns:repeat(2,1fr)}}


/* V0.25.17.8 · Windows-style Platform Settings + Admin-governed futuristic AVL marker.
   Presentation only: no AVL positioning, service thresholds, route colours or evidence authority changes. */
:root{--avl-marker-glow-strength:.68}

/* Windows Settings-style Platform Administration shell. */
.admin-page{display:grid!important;grid-template-columns:218px minmax(0,1fr)!important;grid-template-rows:auto minmax(0,1fr)!important;gap:10px!important;align-items:stretch}
.admin-page>.admin-page-head{grid-column:1/-1;grid-row:1;margin:0!important}
.admin-settings-rail{grid-column:1;grid-row:2;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:8px;padding:12px 10px;border:1px solid #d8e2e9;border-radius:10px;background:linear-gradient(180deg,#eef4f8 0%,#e7f0f6 100%);box-shadow:inset -1px 0 0 rgba(255,255,255,.8);overflow:hidden}
.admin-settings-home{display:flex;align-items:center;gap:9px;padding:2px 4px 7px;color:#173b59}.admin-settings-home .admin-settings-back{font:300 26px/1 "Segoe UI",system-ui,sans-serif;color:#527083}.admin-settings-home b{display:block;font:600 16px/1.1 "Segoe UI",system-ui,sans-serif}.admin-settings-home small{display:block;margin-top:3px;color:#778b99;font:500 8px/1.2 "Segoe UI",system-ui,sans-serif}
.admin-settings-search input{width:100%;height:34px;border:1px solid #9fb3c1;border-radius:2px;background:#fff;padding:0 10px;color:#243d50;font:500 10px/1 "Segoe UI",system-ui,sans-serif;outline:none}.admin-settings-search input:focus{border-color:#2979bb;box-shadow:inset 0 -2px 0 #2979bb}
.admin-settings-rail .admin-tabs{min-height:0!important;display:flex!important;flex-direction:column!important;gap:1px!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;overflow-y:auto!important;overflow-x:hidden!important;scrollbar-width:thin}
.admin-settings-rail .admin-tab{position:relative;flex:0 0 auto!important;width:100%;min-height:36px;display:grid;grid-template-columns:24px minmax(0,1fr);align-items:center;gap:8px;border:0!important;border-radius:2px!important;background:transparent!important;padding:7px 9px!important;color:#2c485c!important;text-align:left;font:600 9px/1.15 "Segoe UI",system-ui,sans-serif!important;letter-spacing:0!important;box-shadow:none!important;cursor:pointer}
.admin-settings-rail .admin-tab::before{content:"⚙";display:grid;place-items:center;width:20px;height:20px;color:#315e7a;font:400 14px/1 "Segoe UI Symbol","Segoe UI",system-ui,sans-serif}
.admin-settings-rail .admin-tab[data-admin-tab="users"]::before{content:"♙"}.admin-settings-rail .admin-tab[data-admin-tab="crrverify"]::before{content:"✓"}.admin-settings-rail .admin-tab[data-admin-tab="cities"]::before{content:"⌂"}.admin-settings-rail .admin-tab[data-admin-tab="display"]::before{content:"▣"}.admin-settings-rail .admin-tab[data-admin-tab="navigation"]::before{content:"☷"}.admin-settings-rail .admin-tab[data-admin-tab="geometry"]::before{content:"◇"}.admin-settings-rail .admin-tab[data-admin-tab="mobile"]::before{content:"▤"}.admin-settings-rail .admin-tab[data-admin-tab="branding"]::before{content:"✦"}.admin-settings-rail .admin-tab[data-admin-tab="ai"]::before{content:"✧"}.admin-settings-rail .admin-tab[data-admin-tab="languages"]::before{content:"文"}.admin-settings-rail .admin-tab[data-admin-tab="reports"]::before{content:"▧"}.admin-settings-rail .admin-tab[data-admin-tab="readiness"]::before{content:"◉"}
.admin-settings-rail .admin-tab:hover{background:rgba(255,255,255,.62)!important}.admin-settings-rail .admin-tab.active{background:#d7e5ef!important;color:#123f5d!important}.admin-settings-rail .admin-tab.active::after{content:"";position:absolute;left:0;top:5px;bottom:5px;width:3px;border-radius:2px;background:#1673b8}
.admin-page>.admin-workspace{grid-column:2;grid-row:2;min-width:0!important;min-height:0!important;padding:0 2px 0 0}
.admin-tab-panel.active{padding:2px 5px 12px 0!important}
.admin-panel-toolbar{padding:5px 2px 8px;border-bottom:1px solid #e1e8ed}.admin-panel-toolbar h3{font:600 18px/1.15 "Segoe UI",system-ui,sans-serif!important;color:#143b58}.admin-panel-toolbar p:not(.eyebrow){font-size:9px!important;line-height:1.4}
.admin-tab-panel .panel{border-radius:6px!important;border-color:#d9e2e8!important;box-shadow:0 1px 2px rgba(20,50,70,.035)!important}
.admin-tab-panel label>span,.admin-tab-panel .eyebrow{letter-spacing:.05em!important}
.admin-tab-panel[data-admin-panel="display"] .display-admin-grid{grid-template-columns:repeat(2,minmax(320px,1fr))!important;gap:10px!important;align-content:start}.admin-tab-panel[data-admin-panel="display"] .config-group{overflow:visible!important}.admin-tab-panel[data-admin-panel="display"] .display-preview-panel{grid-column:1/-1;min-height:250px;overflow:visible!important}.admin-tab-panel[data-admin-panel="display"] .display-preview-map{max-width:920px}

/* Marker configuration within Display & AVL. */
.avl-marker-style-config{margin:12px 0;padding:12px;border:1px solid #cfdce5;border-radius:7px;background:#f7fafc}.avl-marker-style-config .section-head.compact{align-items:flex-start;margin-bottom:9px}.avl-marker-style-config h4{margin:2px 0 2px;color:#133f5e;font:700 12px/1.15 "Segoe UI",system-ui,sans-serif}.avl-marker-style-config .section-head p:not(.eyebrow){margin:0;color:#708491;font-size:7px;line-height:1.35}.marker-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px}.marker-config-grid>label{padding:7px 0!important;border-bottom:1px solid #e5ecef!important}.marker-config-grid select{min-height:32px}.marker-config-grid output{float:right;color:#173f5e;font-size:8px;font-weight:900}.status-colour-note{margin-top:9px;padding:8px 9px;border-left:3px solid #2a73c9;background:#edf5fb;color:#506c7f;font-size:7px;line-height:1.4}.marker-admin-preview-wrap{display:grid;gap:6px;margin-top:10px;padding:9px;border:1px solid #dde7ed;border-radius:6px;background:#fff}.marker-admin-preview-wrap>span{font-size:6.5px;font-weight:900;letter-spacing:.06em;color:#6e8190}.marker-admin-preview.corridor-bus{position:relative!important;left:auto!important;top:auto!important;bottom:auto!important;transform:none!important;margin:2px auto 3px!important;z-index:1!important}.legacy-marker-note{display:grid;gap:2px;margin:-3px 0 8px;padding:7px 8px;border-radius:5px;background:#f1f5f8}.legacy-marker-note b{font-size:6.5px;color:#36556b;letter-spacing:.05em}.legacy-marker-note span{font-size:6px;color:#7c8d98}

/* Compact Futuristic AVL Marker V1 · reversible via Admin Marker Style. */
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker{width:max(78px,var(--avl-bus-card-width-px,72px));min-height:max(44px,var(--avl-bus-card-height-px,48px));height:auto;padding:3px 14px 3px 7px!important;border:0!important;border-radius:10px 3px 3px 10px!important;background:linear-gradient(180deg,#0c223b 0%,#071522 58%,#06111c 100%)!important;color:#fff!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.14),inset 0 -10px 18px rgba(0,0,0,.18)!important;filter:drop-shadow(0 2px 3px rgba(4,20,35,.28)) drop-shadow(0 0 calc(5px * var(--avl-marker-glow-strength)) var(--tirana-marker-colour));isolation:isolate;overflow:visible}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker.direction-right,:root[data-avl-marker-style="futuristic_pointer"] .family-bus.tirana-vehicle-marker.direction-right,:root[data-avl-marker-style="futuristic_pointer"] .circular-bus.tirana-vehicle-marker.travel-right{clip-path:polygon(4% 5%,70% 5%,78% 18%,100% 50%,78% 82%,70% 95%,4% 95%,0 82%,0 18%)!important;padding-left:7px!important;padding-right:15px!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker.direction-left,:root[data-avl-marker-style="futuristic_pointer"] .family-bus.tirana-vehicle-marker.direction-left,:root[data-avl-marker-style="futuristic_pointer"] .circular-bus.tirana-vehicle-marker.travel-left{clip-path:polygon(22% 18%,30% 5%,96% 5%,100% 18%,100% 82%,96% 95%,30% 95%,22% 82%,0 50%)!important;padding-left:15px!important;padding-right:7px!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker::before{content:"";position:absolute;inset:1px;z-index:0;clip-path:inherit;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 0 1.5px var(--tirana-marker-colour),inset 0 0 8px rgba(255,255,255,.08);opacity:1}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-shell{position:relative;z-index:2;width:100%;min-height:36px;display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 10px;grid-template-rows:minmax(0,1fr) 10px;grid-template-areas:"id metric beacon" "footer footer beacon";column-gap:3px;row-gap:1px;align-items:center;overflow:visible!important}
:root[data-avl-marker-style="futuristic_pointer"] .direction-left .tirana-future-shell,:root[data-avl-marker-style="futuristic_pointer"] .travel-left .tirana-future-shell{grid-template-columns:10px minmax(0,1fr) minmax(0,1fr);grid-template-areas:"beacon metric id" "beacon footer footer"}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-id{grid-area:id;min-width:0;display:flex!important;flex-direction:column;justify-content:center;text-align:left}:root[data-avl-marker-style="futuristic_pointer"] .direction-left .tirana-future-id,:root[data-avl-marker-style="futuristic_pointer"] .travel-left .tirana-future-id{text-align:right}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-metric{grid-area:metric;min-width:0;display:flex!important;flex-direction:column;justify-content:center;text-align:center;position:relative}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-footer{grid-area:footer;min-width:0;display:flex!important;align-items:center;justify-content:space-between;gap:3px;border-top:1px solid rgba(255,255,255,.15);padding-top:1px!important;font-size:5.2px!important;line-height:1!important;font-weight:950!important;color:#f6fbff}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-direction,:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-confidence{display:block!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-beacon{grid-area:beacon;justify-self:center;align-self:center;width:8px;height:8px;border-radius:50%;background:#fff;border:1.5px solid var(--tirana-marker-colour);box-shadow:0 0 0 2px rgba(255,255,255,.08),0 0 calc(8px * var(--avl-marker-glow-strength)) var(--tirana-marker-colour),inset 0 0 3px var(--tirana-marker-colour)}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-vehicle{display:block!important;font-size:8.4px!important;font-weight:1000!important;line-height:1!important;letter-spacing:-.15px;text-align:inherit!important;overflow:hidden;text-overflow:ellipsis;color:#fff!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-run{display:block!important;margin-top:1px!important;font-size:5.1px!important;font-weight:850!important;line-height:1!important;opacity:.86;text-align:inherit!important;overflow:hidden;text-overflow:ellipsis;color:#dbe7ef!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-value{display:block!important;margin:0!important;font-size:8.8px!important;font-weight:1000!important;line-height:1!important;color:var(--tirana-marker-colour)!important;text-shadow:0 0 4px rgba(0,0,0,.5);overflow:hidden;text-overflow:ellipsis}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-status{display:block!important;margin-top:1px!important;font-size:4.8px!important;font-weight:1000!important;line-height:1!important;letter-spacing:.12px;color:#f5f9fc!important;overflow:hidden;text-overflow:ellipsis}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-badges{position:absolute!important;right:-1px;top:-8px;display:flex!important;gap:2px;overflow:visible!important;z-index:4}.tirana-future-badges .tirana-marker-instruction,.tirana-future-badges .tirana-marker-incident{font-size:4.2px!important;padding:1px 2px!important;max-width:34px;overflow:hidden;text-overflow:ellipsis}
:root[data-avl-marker-style="futuristic_pointer"][data-avl-marker-density="normal"] .corridor-bus.tirana-vehicle-marker{width:max(88px,var(--avl-bus-card-width-px,72px));min-height:max(48px,var(--avl-bus-card-height-px,48px))}
:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle{background:linear-gradient(180deg,#0c223b,#071522)!important;color:#fff!important;border:0!important;border-radius:8px 2px 2px 8px!important;filter:drop-shadow(0 2px 3px rgba(4,20,35,.28)) drop-shadow(0 0 calc(4px * var(--avl-marker-glow-strength)) var(--tirana-marker-colour));overflow:visible!important}
:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle.direction-right{clip-path:polygon(4% 5%,70% 5%,78% 18%,100% 50%,78% 82%,70% 95%,4% 95%,0 82%,0 18%)}:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle.direction-left{clip-path:polygon(22% 18%,30% 5%,96% 5%,100% 18%,100% 82%,96% 95%,30% 95%,22% 82%,0 50%)}
:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-future-shell{min-height:30px;grid-template-rows:minmax(0,1fr) 8px}:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-marker-vehicle{font-size:7px!important}:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-marker-run{font-size:4.5px!important}:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-marker-value{font-size:7.2px!important;color:var(--tirana-marker-colour)!important}:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-marker-status{font-size:4.2px!important}:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-future-footer{font-size:4.2px!important}:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-future-beacon{width:6px;height:6px}

@media(max-width:1180px){.admin-page{grid-template-columns:190px minmax(0,1fr)!important}.admin-tab-panel[data-admin-panel="display"] .display-admin-grid{grid-template-columns:1fr!important}.admin-tab-panel[data-admin-panel="display"] .display-preview-panel{grid-column:auto}.marker-config-grid{grid-template-columns:1fr}}
@media(max-width:820px){.admin-page{display:block!important;overflow:visible!important}.admin-settings-rail{display:block;margin-bottom:8px}.admin-settings-home{display:none}.admin-settings-search{display:block;margin-bottom:7px}.admin-settings-rail .admin-tabs{display:flex!important;flex-direction:row!important;overflow-x:auto!important;overflow-y:hidden!important}.admin-settings-rail .admin-tab{width:auto;min-width:150px;grid-template-columns:20px auto}.admin-page>.admin-workspace{display:block}}


/* V0.25.17.9 · marker fidelity + completed-report AI question controls + Running Time visibility repair. */
.pc-v34-range[hidden]{display:none!important}
.pc-running-time{min-width:0!important;overflow:visible!important}
.pc-running-time>*{min-width:0}
.pc-runtime-grid{grid-template-columns:minmax(0,2fr) minmax(300px,.78fr)!important;align-items:start}
.pc-runtime-table-wrap{width:100%;max-width:100%;overflow:auto!important;scrollbar-gutter:stable}
.pc-runtime-table{min-width:980px}
.pc-runtime-priority{min-width:0}.pc-runtime-priority button{min-width:0}.pc-runtime-priority button>div{min-width:0}.pc-runtime-priority button b,.pc-runtime-priority button small{white-space:normal;overflow-wrap:anywhere}
@media(max-width:1250px){.pc-runtime-grid{grid-template-columns:1fr!important}.pc-runtime-priority{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.pc-runtime-priority{grid-template-columns:1fr}.pc-runtime-table{min-width:900px}}

.pc-runtime-ai-question-grid{display:grid;grid-template-columns:minmax(280px,.85fr) minmax(360px,1.15fr);gap:10px;margin-top:12px;padding:11px;border:1px solid #d9e5ec;border-radius:9px;background:#f8fbfd}
.pc-runtime-ai-question-grid label{display:grid;gap:5px;min-width:0}.pc-runtime-ai-question-grid label>span{font-size:7px;font-weight:900;letter-spacing:.07em;color:#5d7484}.pc-runtime-ai-question-grid select,.pc-runtime-ai-question-grid textarea{width:100%;box-sizing:border-box;border:1px solid #cbd9e2;border-radius:7px;background:#fff;color:#173f5e;font:700 9px/1.35 'Space Grotesk',system-ui,sans-serif;outline:none}.pc-runtime-ai-question-grid select{height:36px;padding:0 9px}.pc-runtime-ai-question-grid textarea{min-height:58px;padding:8px 9px;resize:vertical}.pc-runtime-ai-question-grid select:focus,.pc-runtime-ai-question-grid textarea:focus{border-color:#3177d7;box-shadow:0 0 0 2px rgba(49,119,215,.12)}.pc-runtime-ai-question-note{margin-top:7px;color:#70838f;font-size:7.5px;line-height:1.4}
@media(max-width:900px){.pc-runtime-ai-question-grid{grid-template-columns:1fr}}

/* Approved futuristic marker fidelity: full dark capsule with a thicker governed status surround. */
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker:not(.ghost-bus):not(.driver-presence-bus){
  width:max(98px,var(--avl-bus-card-width-px,72px))!important;
  min-height:max(52px,var(--avl-bus-card-height-px,48px))!important;
  height:max(52px,var(--avl-bus-card-height-px,48px))!important;
  padding:4px 18px 4px 9px!important;
  border:0!important;
  background:var(--tirana-marker-colour)!important;
  box-shadow:0 2px 5px rgba(5,18,29,.30),0 0 calc(8px * var(--avl-marker-glow-strength)) color-mix(in srgb,var(--tirana-marker-colour) 78%,transparent)!important;
  filter:none!important;
}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker:not(.ghost-bus):not(.driver-presence-bus)::before{
  content:"";position:absolute;inset:2.5px;z-index:0;clip-path:inherit;pointer-events:none;border-radius:inherit;
  background:linear-gradient(180deg,#0d263f 0%,#071a2c 52%,#06121f 100%)!important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.20),inset 0 -12px 20px rgba(0,0,0,.18),0 0 0 .5px rgba(3,12,21,.75)!important;
}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker.direction-right:not(.ghost-bus):not(.driver-presence-bus),:root[data-avl-marker-style="futuristic_pointer"] .family-bus.tirana-vehicle-marker.direction-right:not(.ghost-bus):not(.driver-presence-bus),:root[data-avl-marker-style="futuristic_pointer"] .circular-bus.tirana-vehicle-marker.travel-right:not(.ghost-bus):not(.driver-presence-bus){padding-left:9px!important;padding-right:19px!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker.direction-left:not(.ghost-bus):not(.driver-presence-bus),:root[data-avl-marker-style="futuristic_pointer"] .family-bus.tirana-vehicle-marker.direction-left:not(.ghost-bus):not(.driver-presence-bus),:root[data-avl-marker-style="futuristic_pointer"] .circular-bus.tirana-vehicle-marker.travel-left:not(.ghost-bus):not(.driver-presence-bus){padding-left:19px!important;padding-right:9px!important}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-shell{min-height:42px!important;grid-template-columns:minmax(0,1.12fr) minmax(0,.9fr) 12px!important;grid-template-rows:minmax(0,1fr) 12px!important;column-gap:4px!important;row-gap:2px!important}
:root[data-avl-marker-style="futuristic_pointer"] .direction-left .tirana-future-shell,:root[data-avl-marker-style="futuristic_pointer"] .travel-left .tirana-future-shell{grid-template-columns:12px minmax(0,.9fr) minmax(0,1.12fr)!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-vehicle{font-size:10.5px!important;line-height:1.02!important;letter-spacing:-.1px!important;text-overflow:clip!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-run{font-size:6.2px!important;line-height:1.05!important;margin-top:2px!important;opacity:.94!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-value{font-size:10.6px!important;line-height:1.02!important;color:var(--tirana-marker-colour)!important;text-shadow:0 0 5px color-mix(in srgb,var(--tirana-marker-colour) 42%,#000)!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-status{font-size:6.1px!important;line-height:1!important;margin-top:2px!important;color:var(--tirana-marker-colour)!important;letter-spacing:.16px!important}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-footer{font-size:6.2px!important;line-height:1!important;border-top:1px solid rgba(255,255,255,.28)!important;padding-top:2px!important;color:#fff!important}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-beacon{width:10px!important;height:10px!important;border:2px solid #fff!important;background:var(--tirana-marker-colour)!important;box-shadow:0 0 0 2px color-mix(in srgb,var(--tirana-marker-colour) 80%,transparent),0 0 calc(10px * var(--avl-marker-glow-strength)) var(--tirana-marker-colour),inset 0 0 0 2px rgba(255,255,255,.72)!important}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-badges{top:-10px!important}.tirana-future-badges .tirana-marker-instruction,.tirana-future-badges .tirana-marker-incident{font-size:4.6px!important;max-width:46px!important}
:root[data-avl-marker-style="futuristic_pointer"][data-avl-marker-density="normal"] .corridor-bus.tirana-vehicle-marker:not(.ghost-bus):not(.driver-presence-bus){width:max(112px,var(--avl-bus-card-width-px,72px))!important;min-height:max(56px,var(--avl-bus-card-height-px,48px))!important;height:max(56px,var(--avl-bus-card-height-px,48px))!important}

/* Map marker follows the same look but remains deliberately smaller. */
:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle{background:var(--tirana-marker-colour)!important;padding:2px!important}
:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle::before{content:"";position:absolute;inset:2px;z-index:0;clip-path:inherit;background:linear-gradient(180deg,#0d263f,#06121f)}
:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-future-shell{min-height:34px!important;grid-template-rows:minmax(0,1fr) 9px!important}

/* Admin marker preview is a contained single preview, never floating across the Display page. */
.marker-admin-preview-wrap{position:relative!important;min-height:92px!important;overflow:hidden!important;display:grid!important;grid-template-rows:auto 1fr!important;align-items:center!important;justify-items:center!important}
.marker-admin-preview.corridor-bus{position:relative!important;inset:auto!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;transform:none!important;margin:4px auto!important}

/* V0.25.17.9 final readability pass · Windows Settings page must grow with content. */
.admin-tab-panel[data-admin-panel="display"] .display-admin-grid{
  grid-template-columns:minmax(0,1fr)!important;
  width:100%!important;
  max-width:1220px!important;
  margin:0 auto!important;
  flex:0 0 auto!important;
  min-height:max-content!important;
  height:auto!important;
  overflow:visible!important;
  align-content:start!important;
}
.admin-tab-panel[data-admin-panel="display"] .display-admin-grid>.panel{
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
}
.admin-tab-panel[data-admin-panel="display"] .admin-panel-toolbar{
  position:sticky;
  top:0;
  z-index:25;
  background:rgba(255,255,255,.97);
  padding:7px 4px 9px!important;
}
.admin-tab-panel[data-admin-panel="display"] .city-mapping-note{flex:0 0 auto!important}
.admin-tab-panel[data-admin-panel="display"] .display-preview-panel{grid-column:auto!important;min-height:280px!important}
.admin-tab-panel[data-admin-panel="display"] .display-preview-map{width:100%!important;max-width:none!important;height:240px!important}
.admin-tab-panel[data-admin-panel="display"] .avl-marker-style-config{border-left:4px solid #1673b8!important;background:#f8fbfd!important}
.admin-tab-panel[data-admin-panel="display"] .marker-admin-preview-wrap{min-height:118px!important}

/* Final approved capsule proportions: enough width for a complete 9-digit vehicle id and all three information rows. */
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker:not(.ghost-bus):not(.driver-presence-bus){
  width:max(140px,var(--avl-bus-card-width-px,72px))!important;
  min-height:max(60px,var(--avl-bus-card-height-px,48px))!important;
  height:max(60px,var(--avl-bus-card-height-px,48px))!important;
  padding:4px 18px 4px 8px!important;
  background:var(--tirana-marker-colour)!important;
  border-radius:13px 4px 4px 13px!important;
  font-family:"Arial Narrow","Segoe UI",system-ui,sans-serif!important;
  box-shadow:0 3px 7px rgba(5,18,29,.34),0 0 calc(11px * var(--avl-marker-glow-strength)) color-mix(in srgb,var(--tirana-marker-colour) 88%,transparent)!important;
}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker:not(.ghost-bus):not(.driver-presence-bus)::before{
  inset:4px!important;
  background:linear-gradient(180deg,#102b46 0%,#081a2c 48%,#05111d 100%)!important;
  box-shadow:inset 0 0 0 1.2px rgba(255,255,255,.22),inset 0 -14px 22px rgba(0,0,0,.22),0 0 0 .75px #020b12!important;
}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker.direction-right:not(.ghost-bus):not(.driver-presence-bus),
:root[data-avl-marker-style="futuristic_pointer"] .family-bus.tirana-vehicle-marker.direction-right:not(.ghost-bus):not(.driver-presence-bus),
:root[data-avl-marker-style="futuristic_pointer"] .circular-bus.tirana-vehicle-marker.travel-right:not(.ghost-bus):not(.driver-presence-bus){padding-left:8px!important;padding-right:19px!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker.direction-left:not(.ghost-bus):not(.driver-presence-bus),
:root[data-avl-marker-style="futuristic_pointer"] .family-bus.tirana-vehicle-marker.direction-left:not(.ghost-bus):not(.driver-presence-bus),
:root[data-avl-marker-style="futuristic_pointer"] .circular-bus.tirana-vehicle-marker.travel-left:not(.ghost-bus):not(.driver-presence-bus){padding-left:19px!important;padding-right:8px!important}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-shell{
  min-height:48px!important;
  grid-template-columns:minmax(54px,1.25fr) minmax(34px,.82fr) 11px!important;
  grid-template-rows:minmax(0,1fr) 13px!important;
  column-gap:5px!important;
  row-gap:2px!important;
}
:root[data-avl-marker-style="futuristic_pointer"] .direction-left .tirana-future-shell,
:root[data-avl-marker-style="futuristic_pointer"] .travel-left .tirana-future-shell{grid-template-columns:11px minmax(34px,.82fr) minmax(54px,1.25fr)!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-vehicle{font-size:11.2px!important;line-height:1!important;letter-spacing:-.18px!important;overflow:visible!important;text-overflow:clip!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-run{font-size:6.8px!important;line-height:1!important;margin-top:3px!important;overflow:visible!important;text-overflow:clip!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-value{font-size:11.2px!important;line-height:1!important;overflow:visible!important;text-overflow:clip!important}
:root[data-avl-marker-style="futuristic_pointer"] .corridor-bus.tirana-vehicle-marker .tirana-marker-status{font-size:6.7px!important;line-height:1!important;margin-top:3px!important;overflow:visible!important;text-overflow:clip!important}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-footer{font-size:6.8px!important;min-width:0!important;border-top:1px solid rgba(255,255,255,.36)!important;padding-top:2px!important}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-beacon{width:12px!important;height:12px!important;border:2.5px solid #fff!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--tirana-marker-colour) 84%,transparent),0 0 calc(13px * var(--avl-marker-glow-strength)) var(--tirana-marker-colour),inset 0 0 0 2px rgba(255,255,255,.78)!important}
:root[data-avl-marker-style="futuristic_pointer"][data-avl-marker-density="normal"] .corridor-bus.tirana-vehicle-marker:not(.ghost-bus):not(.driver-presence-bus){width:max(154px,var(--avl-bus-card-width-px,72px))!important;min-height:max(64px,var(--avl-bus-card-height-px,48px))!important;height:max(64px,var(--avl-bus-card-height-px,48px))!important}
/* 3-route monitor stays compact enough to avoid crowding while retaining all text. */
:root[data-avl-marker-style="futuristic_pointer"] .triple-monitor-board .corridor-bus.tirana-vehicle-marker:not(.ghost-bus):not(.driver-presence-bus){min-width:132px!important}

/* V0.25.19.0 — Automatic Duty Progression architecture/readiness only. */
.duty-readiness-panel{margin-top:12px}.duty-readiness-badges{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.duty-readiness-warning{display:flex;gap:12px;align-items:flex-start;border:1px solid #f2cf79;border-left:4px solid #e7a20b;background:#fff9e9;border-radius:10px;padding:11px 13px;margin:8px 0 12px}.duty-readiness-warning b{font-size:10px;color:#8a5b00;white-space:nowrap}.duty-readiness-warning span{font-size:10px;line-height:1.45;color:#5f6470}.duty-readiness-controls{display:grid;grid-template-columns:minmax(180px,1fr) minmax(220px,1.25fr) auto;gap:10px;align-items:end;margin:10px 0}.duty-readiness-controls label{display:flex;flex-direction:column;gap:4px}.duty-readiness-controls label>span{font-size:9px;font-weight:800;color:#52697a;letter-spacing:.06em}.duty-readiness-controls input{height:36px;border:1px solid #cfdbe4;border-radius:8px;padding:0 10px;background:#fff;color:#102f4d}.duty-readiness-controls small{font-size:8px;color:#758795}.duty-readiness-meta{font-size:9px;color:#617686;margin:6px 0 9px}.duty-readiness-summary{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:7px;margin-bottom:9px}.duty-readiness-metric{background:#f7fafc;border:1px solid #e1e8ee;border-radius:9px;padding:9px;display:flex;flex-direction:column;gap:3px}.duty-readiness-metric span{font-size:8px;color:#6b7e8d}.duty-readiness-metric b{font-size:15px;color:#123654}.duty-readiness-table-wrap{margin-top:10px;overflow:auto;border:1px solid #e0e8ee;border-radius:10px}.duty-readiness-table{width:100%;border-collapse:collapse;min-width:820px;background:#fff}.duty-readiness-table th{position:sticky;top:0;background:#f4f8fb;color:#607384;font-size:8px;text-align:left;padding:8px;border-bottom:1px solid #dfe7ed}.duty-readiness-table td{font-size:9px;color:#213e56;padding:8px;border-bottom:1px solid #edf2f5}.duty-readiness-table td:first-child{display:flex;flex-direction:column;gap:1px}.duty-readiness-table td small{font-size:8px;color:#81909b}.duty-block-section-head{margin-top:14px}.duty-block-preview{border:1px solid #dfe7ed;border-radius:10px;background:#fbfdfe;padding:10px;max-height:330px;overflow:auto}.duty-block-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px}.duty-block-head b{font-size:12px;color:#123654}.duty-block-head span{font-size:8px;color:#6b7e8d}.duty-block-sequence{display:flex;flex-direction:column;gap:5px}.duty-block-sequence article{display:grid;grid-template-columns:28px 1fr 24px;gap:8px;align-items:center;background:#fff;border:1px solid #e5ebf0;border-radius:8px;padding:7px}.duty-block-sequence article>div{display:flex;flex-direction:column;gap:1px}.duty-block-sequence article b{font-size:9px;color:#153b59}.duty-block-sequence article small{font-size:8px;color:#718391}.duty-seq-no{width:24px;height:24px;border-radius:7px;background:#123e60;color:#fff;font-size:9px;font-weight:800;display:grid;place-items:center}.duty-block-sequence i{font-style:normal;font-size:16px;color:#61798c}.duty-block-sequence strong{font-size:11px;color:#8b5e00;border:1px solid #e8c463;border-radius:5px;padding:3px 5px;text-align:center}@media(max-width:1250px){.duty-readiness-summary{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:850px){.duty-readiness-controls{grid-template-columns:1fr}.duty-readiness-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.duty-readiness-warning{flex-direction:column}}

/* V0.25.19.1 — read-only live Duty Engine shadow; no operational effect. */
.duty-shadow-section-head{margin-top:16px}.duty-shadow-controls{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:end;margin:8px 0}.duty-shadow-controls label{display:flex;flex-direction:column;gap:4px}.duty-shadow-controls label>span{font-size:9px;font-weight:800;color:#52697a;letter-spacing:.06em}.duty-shadow-controls input{height:36px;border:1px solid #cfdbe4;border-radius:8px;padding:0 10px;background:#fff;color:#102f4d}.duty-shadow-controls small{font-size:8px;color:#758795}.duty-shadow-summary{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;margin:8px 0}.duty-shadow-metric{background:#f7fafc;border:1px solid #e1e8ee;border-radius:9px;padding:9px;display:flex;flex-direction:column;gap:3px}.duty-shadow-metric span{font-size:8px;color:#6b7e8d}.duty-shadow-metric b{font-size:15px;color:#123654}.duty-shadow-table-wrap{margin-top:9px;overflow:auto;border:1px solid #e0e8ee;border-radius:10px;max-height:470px}.duty-shadow-table{width:100%;border-collapse:collapse;min-width:1180px;background:#fff}.duty-shadow-table th{position:sticky;top:0;z-index:1;background:#f4f8fb;color:#607384;font-size:8px;text-align:left;padding:8px;border-bottom:1px solid #dfe7ed}.duty-shadow-table td{font-size:9px;color:#213e56;padding:8px;vertical-align:top;border-bottom:1px solid #edf2f5}.duty-shadow-table td b{display:block;color:#153b59}.duty-shadow-table td small{display:block;font-size:8px;line-height:1.4;color:#718391;margin-top:2px}.duty-shadow-evidence{display:flex;flex-wrap:wrap;gap:4px}.duty-shadow-evidence span{font-size:8px;border:1px solid #dfe7ed;background:#f9fbfc;border-radius:5px;padding:2px 4px}.duty-shadow-reason{max-width:320px}.duty-shadow-state.attention{color:#a81f2b}.duty-shadow-state.stand{color:#986600}.duty-shadow-state.ready{color:#137246}.duty-shadow-state.finished{color:#536371}.duty-shadow-state.positioning{color:#6d45a5}@media(max-width:1250px){.duty-shadow-summary{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:850px){.duty-shadow-controls{grid-template-columns:1fr}.duty-shadow-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* V0.25.19.2 canonical duty-state foundation: backend SHADOW persistence only. */
.duty-durable-section-head{margin-top:18px;padding-top:12px;border-top:1px solid #e2e9ee}.duty-durable-table-wrap{max-height:390px}.duty-durable-events-head{margin-top:14px}.duty-durable-events-wrap{max-height:280px}.duty-durable-events{min-width:900px}.duty-shadow-state.trip-complete{color:#1c5f8d}

/* V0.25.19.3 — Canonical ON STAND presentation consumer. Presentation only; no PVR/EWT/LF/Driver authority change. */
.duty-stand-layer{position:absolute;left:122px;right:22px;top:50%;height:0;z-index:24;pointer-events:none}
.duty-stand-terminal-bay{position:absolute;top:-1px;width:104px;height:0;border-top:1px dashed color-mix(in srgb,var(--avl-duty-stand-colour,#1689c8) 58%,transparent)}
.duty-stand-terminal-bay:before{content:"";position:absolute;left:0;right:0;top:-4px;height:8px;background:linear-gradient(90deg,color-mix(in srgb,var(--avl-duty-stand-colour,#1689c8) 4%,transparent),color-mix(in srgb,var(--avl-duty-stand-colour,#1689c8) 14%,transparent),color-mix(in srgb,var(--avl-duty-stand-colour,#1689c8) 4%,transparent));pointer-events:none}
.duty-stand-terminal-bay.left{left:0}.duty-stand-terminal-bay.right{right:0}
.duty-stand-terminal-bay b{position:absolute;top:-10px;padding:2px 7px;border:1px solid color-mix(in srgb,var(--avl-duty-stand-colour,#1689c8) 38%,transparent);border-radius:999px;background:#f7fcff;color:var(--avl-duty-stand-colour,#1689c8);font-size:6.2px;font-weight:1000;letter-spacing:.55px;box-shadow:0 1px 3px rgba(10,68,101,.10)}
.duty-stand-terminal-bay.left b{left:8px}.duty-stand-terminal-bay.right b{right:8px}
.corridor-bus.duty-stand-card{top:0!important;bottom:auto!important;transform:translate(-50%,-50%) scale(var(--avl-bus-scale,1))!important;transform-origin:center!important;pointer-events:auto!important;z-index:28!important;clip-path:none!important;border-radius:12px!important;background:var(--tirana-marker-colour,#1689c8)!important;padding-left:9px!important;padding-right:9px!important}
.corridor-bus.duty-stand-card::before{clip-path:none!important;border-radius:9px!important}
.corridor-bus.duty-stand-card .tirana-future-shell{grid-template-columns:minmax(54px,1.25fr) minmax(34px,.82fr) 11px!important}
.corridor-bus.duty-stand-card .tirana-marker-value{font-size:18px!important;line-height:.9!important;color:var(--tirana-marker-text,#fff)!important;text-shadow:0 0 8px color-mix(in srgb,var(--tirana-marker-colour,#1689c8) 58%,transparent)!important}
.corridor-bus.duty-stand-card .tirana-marker-status{color:var(--tirana-marker-text,#fff)!important;letter-spacing:.35px!important}
.corridor-bus.duty-stand-card .tirana-future-direction{color:var(--tirana-marker-text,#fff)!important;font-weight:1000!important;letter-spacing:.45px!important}
.bus-map-marker.tirana-map-vehicle.marker-tone-stand{clip-path:none!important;border-radius:10px!important;background:var(--tirana-marker-colour,#1689c8)!important}
.bus-map-marker.tirana-map-vehicle.marker-tone-stand::before{clip-path:none!important;border-radius:8px!important}
.bus-map-marker.tirana-map-vehicle.marker-tone-stand .tirana-marker-value{font-size:11px!important;color:var(--tirana-marker-text,#fff)!important}
.bus-map-marker.tirana-map-vehicle.marker-tone-stand .tirana-marker-status{color:var(--tirana-marker-text,#fff)!important}
.vehicle-inspector-state.stand,.vehicle-status-pill.stand{background:#dff4ff;color:#0d6c9e}.vehicle-icon.stand{background:var(--bus-status-color,#1689c8)!important;color:var(--bus-status-text,#fff)!important}.vehicle-inspector-section.prediction.stand-duty{border-color:color-mix(in srgb,var(--duty-state-colour,#1689c8) 35%,transparent);box-shadow:0 2px 10px color-mix(in srgb,var(--duty-state-colour,#1689c8) 8%,transparent)}
@media(max-width:1350px){.duty-stand-layer{left:112px}}
/* V0.25.19.4 READY TO DEPART presentation: same terminal-side duty bay as ON STAND, distinct text label only. */
.corridor-bus.duty-stand-card.duty-ready-card .tirana-marker-value{font-size:14px!important;line-height:.95!important;letter-spacing:.15px!important;color:var(--tirana-marker-text,#fff)!important;text-shadow:0 0 8px color-mix(in srgb,var(--tirana-marker-colour,#0ea5e9) 55%,transparent)!important}
.corridor-bus.duty-stand-card.duty-ready-card .tirana-marker-status{font-size:6.4px!important;color:var(--tirana-marker-text,#fff)!important;letter-spacing:.2px!important}
.vehicle-inspector-section.prediction.ready-duty{border-style:double}


/* V0.25.19.4.1 - responsive AVL viewport fit hotfix.
   Presentation only: reserve the actual configured bus-card footprint at all viewport edges.
   Raw corridor/GTFS/GPS percentages and operational calculations remain unchanged. */
.corridor-track .corridor-bus.avl-rail-bus:not(.duty-stand-card){
  max-width:calc(100% - 4px)!important;
}
.corridor-lane .corridor-bus.avl-rail-bus.inbound,
.family-direction .family-bus.avl-rail-bus.inbound{
  bottom:clamp(0px,calc(100% - var(--avl-bus-rail-pct,50%) - var(--avl-rail-touch-overlap-px,1px) - var(--avl-bus-offset-px,0px)),calc(100% - var(--avl-bus-safe-height-px,54px)))!important;
}
.corridor-lane .corridor-bus.avl-rail-bus.outbound,
.family-direction .family-bus.avl-rail-bus.outbound{
  top:clamp(0px,calc(var(--avl-bus-rail-pct,50%) + var(--avl-rail-touch-overlap-px,1px) + var(--avl-bus-offset-px,0px)),calc(100% - var(--avl-bus-safe-height-px,54px)))!important;
}
.triple-monitor-board{
  --avl-bus-edge-pad-px:var(--avl-compact-bus-edge-pad-px,34px);
  --avl-bus-edge-left-pad-px:var(--avl-compact-bus-edge-left-pad-px,var(--avl-compact-bus-edge-pad-px,34px));
  --avl-bus-edge-right-pad-px:var(--avl-compact-bus-edge-right-pad-px,var(--avl-compact-bus-edge-pad-px,34px));
  --avl-bus-safe-height-px:var(--avl-compact-bus-safe-height-px,42px);
}
/* The terminal-side duty overlay uses the same edge reservation as ordinary buses. */
.duty-stand-layer .duty-stand-card{max-width:calc(100% - 4px)!important;}


/* V0.25.19.5.1 - Admin-governed terminal duty colours + full futuristic marker content slots. */
.duty-marker-admin-colours,.marker-content-admin-block{margin-top:12px;padding:12px;border:1px solid #dfe8ef;border-radius:12px;background:#fbfdff}
.duty-marker-admin-colours{display:grid;grid-template-columns:1fr 1fr;gap:10px}.duty-marker-admin-colours .bus-label-admin-head,.duty-marker-admin-colours .duty-state-admin-previews{grid-column:1/-1}
.duty-marker-admin-colours label{display:grid;grid-template-columns:minmax(130px,1fr) auto;gap:6px 10px;align-items:center}.duty-marker-admin-colours label small{grid-column:1/-1}.duty-marker-admin-colours input[type="color"]{width:54px;height:34px;padding:2px;border:1px solid #cbd8e2;border-radius:8px;background:#fff}
.duty-state-admin-previews{display:flex;gap:10px;flex-wrap:wrap}.duty-state-admin-preview{min-width:150px;padding:8px 12px;border-radius:10px;display:flex;align-items:center;gap:9px;box-shadow:0 2px 8px rgba(15,42,61,.08)}.duty-state-admin-preview b{font-size:18px;line-height:1}.duty-state-admin-preview span{font-size:9px;font-weight:900;letter-spacing:.35px}
.marker-content-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.marker-content-grid label{min-width:0}.marker-content-grid select{width:100%}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-marker-vehicle,:root[data-avl-marker-style="futuristic_pointer"] .tirana-marker-run,:root[data-avl-marker-style="futuristic_pointer"] .tirana-marker-value,:root[data-avl-marker-style="futuristic_pointer"] .tirana-marker-status,:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-direction,:root[data-avl-marker-style="futuristic_pointer"] .tirana-future-confidence{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:900px){.duty-marker-admin-colours,.marker-content-grid{grid-template-columns:1fr}}


/* V0.25.19.6.1 - right-edge marker reserve refinement.
   Presentation only: futuristic marker noses/status content receive extra right-side breathing room
   in normal and compact AVL boards. Raw GTFS/GPS percentage, duty state and KPI authorities are unchanged. */

/* V0.25.19.8 · governed QSI Passenger Journey weighting */
.qsi-pj-profile-config{margin-top:14px;padding:14px;border:1px solid #d8e4ee;border-radius:12px;background:#f9fcff}.qsi-pj-warning{display:flex;gap:10px;align-items:flex-start;margin:10px 0;padding:10px 12px;border:1px solid #f2c66d;border-radius:9px;background:#fff9e9;color:#6f4b00}.qsi-pj-warning b{white-space:nowrap;font-size:11px;letter-spacing:.06em}.qsi-pj-warning span{font-size:11px;line-height:1.45}.qsi-pj-grid{display:grid;grid-template-columns:minmax(220px,1fr) minmax(200px,.7fr);gap:10px}.qsi-pj-grid .wide{grid-column:1/-1}.qsi-pj-grid label,.qsi-pj-custom label{display:flex;flex-direction:column;gap:5px}.qsi-pj-grid label>span,.qsi-pj-custom label>span{font-size:10px;font-weight:800;letter-spacing:.05em}.qsi-pj-grid small{font-size:10px;color:#657786}.qsi-pj-custom{display:grid;grid-template-columns:1fr;gap:8px;margin-top:10px}.qsi-pj-custom textarea{resize:vertical;min-height:58px;font:11px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.qsi-pj-preview{margin-top:10px;overflow:auto}.qsi-pj-table{width:100%;border-collapse:collapse;font-size:10px}.qsi-pj-table th,.qsi-pj-table td{padding:5px 7px;border-bottom:1px solid #e3edf5;text-align:right}.qsi-pj-table th:first-child,.qsi-pj-table td:first-child{text-align:left}.qsi-pj-table thead th{position:sticky;top:0;background:#eef6fb;z-index:1}.qsi-pj-profile-config .service-standard-actions{margin-top:10px}.qsi-pj-day-factors{display:grid;grid-template-columns:minmax(280px,1.6fr) repeat(3,minmax(120px,.55fr));gap:10px;align-items:end;margin:10px 0;padding:10px 12px;border:1px solid #d7e6f1;border-radius:10px;background:#f4f9fc}.qsi-pj-day-factors>div{display:flex;flex-direction:column;gap:4px}.qsi-pj-day-factors>div>b{font-size:10px;letter-spacing:.06em}.qsi-pj-day-factors>div>small,.qsi-pj-day-factors label small{font-size:10px;color:#657786;line-height:1.35}.qsi-pj-day-factors label{display:flex;flex-direction:column;gap:4px}.qsi-pj-day-factors label>span{font-size:10px;font-weight:800;letter-spacing:.05em}.qsi-pj-weighting-shape{margin:8px 0 10px;padding:8px 10px;border-radius:8px;border:1px solid #efca78;background:#fff9e8;color:#6b4a00;font-size:10px;font-weight:800;letter-spacing:.02em}.qsi-pj-weighting-shape.active{border-color:#b7ddc3;background:#f0fbf4;color:#1d6a36}.qsi-pj-profile-config .service-standard-actions{margin-top:10px}@media(max-width:1100px){.qsi-pj-day-factors{grid-template-columns:1fr 1fr 1fr}.qsi-pj-day-factors>div{grid-column:1/-1}}@media(max-width:900px){.qsi-pj-grid{grid-template-columns:1fr}.qsi-pj-day-factors{grid-template-columns:1fr}}


.qsi-pj-reference-ack{display:flex;align-items:flex-start;gap:10px;margin:10px 0;padding:10px 12px;border:1px solid #f0b429;border-radius:8px;background:#fff9e6;font-size:12px;line-height:1.45}
.qsi-pj-reference-ack input{margin-top:2px;flex:0 0 auto}
.qsi-pj-reference-ack[hidden]{display:none!important}
\n\n/* V0.25.19.8.1 · PJ period allocation + marker binding clarity */\n.qsi-pj-periods{border:1px solid #d9e3ed;border-radius:12px;padding:12px;background:#fbfdff;margin-top:10px}\n.qsi-pj-periods[hidden]{display:none!important}\n.qsi-pj-period-toolbar,.qsi-pj-period-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}\n.qsi-pj-period-toolbar small,.qsi-pj-period-head small{color:#5f7386;max-width:780px}\n.qsi-pj-period-table-wrap{overflow:auto}\n.qsi-pj-period-table{width:100%;border-collapse:collapse;min-width:760px}\n.qsi-pj-period-table th,.qsi-pj-period-table td{padding:7px 6px;border-bottom:1px solid #e4ebf2;text-align:left;vertical-align:middle}\n.qsi-pj-period-table th{font-size:10px;letter-spacing:.05em;color:#53697d;text-transform:uppercase}\n.qsi-pj-period-table input,.qsi-pj-period-table select{width:100%;min-width:76px}\n.qsi-pj-period-table tfoot th{font-size:12px}\n.qsi-pj-total.ok{color:#07823c;font-weight:800}.qsi-pj-total.bad{color:#c81d2d;font-weight:800}\n.qsi-pj-period-note{display:block;margin-top:8px;font-size:11px;font-weight:700}.qsi-pj-period-note.ok{color:#07823c}.qsi-pj-period-note.bad{color:#c81d2d}\n.qsi-pj-period-summary{display:grid;gap:3px;margin-bottom:8px}.qsi-pj-period-summary span{font-size:11px;color:#607386}\n.marker-content-admin-block,.bus-label-admin-block{transition:opacity .15s ease,filter .15s ease}\n.marker-config-inactive{opacity:.48;filter:saturate(.55)}\n.marker-config-inactive::before{content:'INACTIVE FOR CURRENT MARKER STYLE';display:inline-block;margin:0 0 8px;padding:3px 7px;border-radius:999px;background:#eef2f6;color:#607184;font-size:9px;font-weight:800;letter-spacing:.05em}\n

/* V0.25.19.8.2 - audited Display & AVL runtime wiring + true whole-board rail geometry.
   Presentation only. GTFS/GPS progress, duty/QSI/passenger-service authorities are unchanged. */
.display-wiring-audit{margin-top:10px;padding:9px 11px;border:1px solid #b9d9c5;border-radius:10px;background:#f2fbf5;display:grid;gap:3px}
.display-wiring-audit b{font-size:8px;letter-spacing:.45px;color:#146b38}.display-wiring-audit span{font-size:7px;line-height:1.45;color:#486b57}

/* Admin-governed direction panel width replaces the old hard-coded 122/112/108px values. */
.corridor-lane{grid-template-columns:var(--avl-direction-panel-width-px,122px) minmax(0,1fr)!important}
.corridor-guide-layer{left:var(--avl-direction-panel-width-px,122px)!important}
.family-direction{grid-template-columns:calc(var(--avl-direction-panel-width-px,122px) + 10px) minmax(0,1fr)!important}
.circular-route-lane{grid-template-columns:var(--avl-direction-panel-width-px,122px) minmax(0,1fr)!important}
.triple-monitor-board .corridor-lane{grid-template-columns:var(--avl-compact-direction-panel-width-px,108px) minmax(0,1fr)!important}
.triple-monitor-board .corridor-guide-layer{left:var(--avl-compact-direction-panel-width-px,108px)!important}
.triple-monitor-board .family-direction{grid-template-columns:calc(var(--avl-compact-direction-panel-width-px,108px) + 2px) minmax(0,1fr)!important}
.triple-monitor-board .circular-route-lane{grid-template-columns:var(--avl-compact-direction-panel-width-px,108px) minmax(0,1fr)!important}

/* The old lane-percent sliders were scoped inside separate half-height rows. These shifts turn the
   Admin centre/separation pair into true full-board coordinates while preserving the legacy rail model. */
.distance-avl:not(.single):not(.circular-route) .corridor-lane.inbound .corridor-track,
.distance-avl:not(.single):not(.circular-route) .corridor-lane.inbound .corridor-dir{transform:translateY(var(--avl-inbound-lane-shift-pct,0%))}
.distance-avl:not(.single):not(.circular-route) .corridor-lane.outbound .corridor-track,
.distance-avl:not(.single):not(.circular-route) .corridor-lane.outbound .corridor-dir{transform:translateY(var(--avl-outbound-lane-shift-pct,0%))}
.family-direction{overflow:visible!important}
.family-direction.inbound .family-track,.family-direction.inbound .family-direction-head{transform:translateY(var(--avl-inbound-lane-shift-pct,0%))}
.family-direction.outbound .family-track,.family-direction.outbound .family-direction-head{transform:translateY(var(--avl-outbound-lane-shift-pct,0%))}

/* Direction-label toggle now has a real runtime consumer and reclaims its reserved width. */
:root[data-direction-labels="hide"] .corridor-dir,
:root[data-direction-labels="hide"] .family-direction-head,
:root[data-direction-labels="hide"] .circular-dir{display:none!important}
:root[data-direction-labels="hide"] .corridor-lane,
:root[data-direction-labels="hide"] .family-direction,
:root[data-direction-labels="hide"] .circular-route-lane,
:root[data-direction-labels="hide"] .triple-monitor-board .corridor-lane,
:root[data-direction-labels="hide"] .triple-monitor-board .family-direction,
:root[data-direction-labels="hide"] .triple-monitor-board .circular-route-lane{grid-template-columns:0 minmax(0,1fr)!important}
:root[data-direction-labels="hide"] .corridor-guide-layer,
:root[data-direction-labels="hide"] .triple-monitor-board .corridor-guide-layer{left:0!important}

/* Rail and stop-point sizes are now governed rather than hard-coded. */
.corridor-rail{height:var(--avl-rail-width-px,2px)!important}
.corridor-rail:before,.corridor-rail:after{width:var(--avl-stop-dot-px,9px)!important;height:var(--avl-stop-dot-px,9px)!important;top:50%!important;transform:translateY(-50%)}
.corridor-stop-dot,.family-stop i,.circular-stop>i{width:var(--avl-stop-dot-px,9px)!important;height:var(--avl-stop-dot-px,9px)!important}
.corridor-stop.terminal .corridor-stop-dot{width:calc(var(--avl-stop-dot-px,9px) + 2px)!important;height:calc(var(--avl-stop-dot-px,9px) + 2px)!important}
.circular-stop.terminal>i{width:calc(var(--avl-stop-dot-px,9px) + 4px)!important;height:calc(var(--avl-stop-dot-px,9px) + 4px)!important}
.family-trunk-rail,.family-branch-rail,.family-branch-connector{stroke-width:var(--avl-family-rail-width-px,3px)!important}
.circular-base-rail,.circular-traffic-segment{stroke-width:max(3px,calc(var(--avl-rail-width-px,2px) * 3))!important}

/* V0.25.19.8.2 stop-dot centring follows the governed dot diameter. */
.inbound .corridor-stop{top:calc(var(--avl-inbound-rail-pct,50%) - var(--avl-stop-dot-half-px,4.5px))!important}
.outbound .corridor-stop{top:calc(var(--avl-outbound-rail-pct,35%) - var(--avl-stop-dot-half-px,4.5px))!important}


/* V0.25.19.8.3 · local PJ guidance + automatic HF/LF service metric clarity */
.qsi-pj-local-guide{margin:10px 0;padding:12px 14px;border:1px solid #bcd8ea;border-radius:10px;background:#f3f9fd;color:#173f64}.qsi-pj-local-guide>b{display:block;font-size:11px;letter-spacing:.08em;margin-bottom:5px}.qsi-pj-local-guide ol{margin:4px 0 6px 20px;padding:0}.qsi-pj-local-guide li,.qsi-pj-local-guide>span{font-size:11px;line-height:1.5}.qsi-pj-period-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.marker-smart-metric-note{margin:0 0 10px;padding:9px 11px;border-left:3px solid #1689c8;background:#f1f8fd;color:#234c6c;font-size:10px;font-weight:750;line-height:1.45}
/* V0.25.19.8.5 Navigation Admin Governance */
.navigation-governance-note strong{margin-left:auto;flex:0 0 auto;padding:5px 8px;border-radius:999px;background:#dceeff;color:#145f9b;font-size:6.4px;letter-spacing:.35px;white-space:nowrap}
.navigation-editor-row{grid-template-columns:24px minmax(110px,.72fr) minmax(150px,1fr) 52px 118px 72px 100px 96px}
.navigation-editor-row.has-url{grid-template-columns:24px minmax(120px,.72fr) minmax(170px,1fr) 52px 118px 72px 100px 96px}
.navigation-editor-field select[data-nav-field="icon"]{font-size:14px;text-align:center;padding:0 2px}
.navigation-role-set{grid-column:2/-1;display:flex;align-items:center;gap:8px;padding:5px 7px;border-top:1px dashed #d8e2e8;background:#f8fbfd;border-radius:6px;min-width:0}
.navigation-role-set>span{flex:0 0 auto;font-size:5.6px;font-weight:950;color:#71828d;letter-spacing:.35px}
.navigation-role-set>div{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.navigation-role-set label{display:inline-flex;align-items:center;gap:3px;padding:3px 5px;border:1px solid #d2dee6;border-radius:999px;background:#fff;color:#31536c;font-size:5.8px;font-weight:900;cursor:pointer;white-space:nowrap}
.navigation-role-set label:has(input:checked){border-color:#7fb4dc;background:#e9f5ff;color:#145f9b}
.navigation-role-set input{margin:0;width:10px;height:10px}
.navigation-role-set.locked{justify-content:space-between;background:#f2f6f8;color:#647680}
.navigation-role-set.locked b{font-size:6px;color:#526b7c}
.navigation-editor-row.has-url .navigation-editor-field.url{grid-column:2/6;grid-row:auto}
.navigation-editor-row.has-url .navigation-editor-actions{grid-row:auto}
@media(max-width:1450px){.navigation-editor-row,.navigation-editor-row.has-url{grid-template-columns:22px minmax(100px,.7fr) minmax(130px,1fr) 48px 100px 64px 92px 88px}}
@media(max-width:1050px){.navigation-editor-row,.navigation-editor-row.has-url{grid-template-columns:22px minmax(100px,.7fr) minmax(130px,1fr) 48px 100px 64px 92px 88px}}
@media(max-width:820px){.navigation-governance-note{align-items:flex-start;flex-wrap:wrap}.navigation-governance-note strong{margin-left:0}.navigation-editor-row,.navigation-editor-row.has-url{grid-template-columns:22px minmax(110px,1fr) minmax(130px,1fr)}.navigation-role-set{grid-column:1/-1!important}.navigation-editor-row.has-url .navigation-editor-field.url{grid-column:1/-1!important}}

/* V0.25.19.9.3 - active Driver Platform duty presence on authoritative live vehicle */
.tirana-vehicle-marker{position:absolute}
.tirana-driver-present-dot{position:absolute!important;top:-5px!important;right:-5px!important;left:auto!important;display:block!important;width:9px!important;height:9px!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;border-radius:50%!important;background:#16a34a!important;border:1.5px solid #fff!important;box-shadow:0 0 0 1.5px rgba(22,163,74,.24),0 1px 3px rgba(0,0,0,.18)!important;transform:none!important;z-index:40!important;pointer-events:none!important;line-height:0!important;font-size:0!important}
.tirana-driver-present-dot.is-duty{background:#22c55e!important}
.bus-map-marker .tirana-driver-present-dot{top:-3px!important;right:-3px!important;left:auto!important;width:7px!important;height:7px!important;transform:none!important}

/* V0.25.19.9.4.7 Mobile & Comms Admin workspace redesign.
   Presentation/governance only: existing device, Driver, GPS and Communications authorities are reused. */
.admin-tab-panel[data-admin-panel="mobile"]{overflow-y:auto!important;overflow-x:hidden!important;scrollbar-gutter:stable;overscroll-behavior:contain}
.mobile-admin-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.mobile-admin-toolbar-status{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap;padding-top:2px}
.mobile-admin-tabs{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;align-items:stretch!important;gap:4px!important;margin:10px 0 12px!important;padding:4px!important;border:1px solid #d8e2e9;border-radius:9px;background:#eef4f8;overflow:hidden;box-sizing:border-box!important;height:46px!important;min-height:46px!important;max-height:46px!important}
.mobile-admin-tabs .mobile-admin-tab{width:100%!important;min-width:0!important;max-width:none!important;height:36px!important;min-height:36px!important;max-height:36px!important;margin:0!important;padding:0 8px!important;box-sizing:border-box!important;line-height:36px!important}
.mobile-admin-tab{border:0;border-radius:6px;background:transparent;color:#385469;font-size:8px;font-weight:1000;letter-spacing:.08em;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mobile-admin-tab:hover{background:#fff}.mobile-admin-tab.active{background:#153f5d;color:#fff;box-shadow:0 2px 7px rgba(21,63,93,.18)}
.mobile-admin-subpanel{display:none}.mobile-admin-subpanel.active{display:block}.mobile-admin-subpanel[hidden]{display:none!important}
.mobile-admin-dashboard-actions,.mobile-admin-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:10px;padding:2px 2px 9px;border-bottom:1px solid #e4eaee}
.mobile-admin-dashboard-actions>div:first-child,.mobile-admin-section-head>div:first-child{min-width:0}.mobile-admin-dashboard-actions h3,.mobile-admin-section-head h3{margin:1px 0 3px;font-size:15px;color:#143b58}.mobile-admin-dashboard-actions p:not(.eyebrow),.mobile-admin-section-head p:not(.eyebrow){margin:0;font-size:8px;line-height:1.45;color:#718493}
.mobile-admin-dashboard-actions>div:last-child,.mobile-admin-section-head>button{flex:0 0 auto}.mobile-admin-dashboard-actions>div:last-child{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.mobile-dashboard-kpis{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr));gap:8px;margin-bottom:8px}
.mobile-dashboard-kpis article,.mobile-dashboard-status-row article{border:1px solid #dce5eb;border-radius:9px;background:#fff;padding:10px 11px;min-width:0}
.mobile-dashboard-kpis span,.mobile-dashboard-status-row span{display:block;font-size:6.5px;font-weight:1000;letter-spacing:.07em;color:#718493}.mobile-dashboard-kpis strong{display:block;margin-top:4px;font-size:23px;color:#143b58}.mobile-dashboard-kpis small,.mobile-dashboard-status-row small{display:block;margin-top:3px;font-size:6.5px;color:#8b99a4}
.mobile-dashboard-status-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.mobile-dashboard-status-row strong{display:block;margin-top:4px;font-size:12px;color:#143b58}
.mobile-dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.mobile-dashboard-table-card{padding:11px;min-height:250px;overflow:hidden!important}.mobile-dashboard-table{display:grid;gap:5px;max-height:315px;overflow:auto;scrollbar-gutter:stable}
.mobile-dashboard-row{display:grid;grid-template-columns:minmax(120px,1.3fr) minmax(90px,.8fr) minmax(110px,1fr) auto;gap:8px;align-items:center;padding:7px 8px;border:1px solid #e0e7ec;border-radius:7px;background:#fff}.mobile-dashboard-row>span{display:grid;gap:2px;min-width:0}.mobile-dashboard-row b{font-size:8px;color:#173b59;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-dashboard-row small{font-size:6.5px;color:#778a98;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-dashboard-row>em{font-style:normal;font-size:6.5px;font-weight:950;letter-spacing:.04em;padding:4px 6px;border-radius:999px;background:#edf1f4;color:#5c6f7c;white-space:nowrap}.mobile-dashboard-row>em.ok{background:#e8f6ee;color:#176a45}.mobile-dashboard-row>em.warn{background:#fff5d9;color:#7b5c00}.mobile-dashboard-row>em.off{background:#f1f3f5;color:#677785}
.mobile-device-workspace{grid-template-columns:1fr!important}.mobile-device-workspace .mobile-device-master,.mobile-device-workspace .mobile-device-list-panel{grid-column:auto!important}.mobile-device-list-panel{overflow:hidden!important}.mobile-device-list{max-height:440px}
.mobile-admin-advanced-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px}.mobile-admin-advanced{padding:0!important;overflow:hidden!important}.mobile-admin-advanced>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 13px;cursor:pointer;background:#f6f9fb;border-bottom:1px solid transparent}.mobile-admin-advanced>summary::-webkit-details-marker{display:none}.mobile-admin-advanced>summary:before{content:'+';display:grid;place-items:center;flex:0 0 20px;width:20px;height:20px;border-radius:50%;background:#dfe9ef;color:#234b67;font-size:14px;font-weight:900}.mobile-admin-advanced[open]>summary:before{content:'-'}.mobile-admin-advanced>summary>span:first-of-type{display:grid;gap:3px;flex:1}.mobile-admin-advanced>summary b{font-size:8px;letter-spacing:.06em;color:#173b59}.mobile-admin-advanced>summary small{font-size:6.5px;line-height:1.35;color:#758997}.mobile-admin-advanced[open]>summary{border-bottom-color:#e2e8ec;background:#eef5f9}.mobile-admin-advanced-body{padding:11px 12px}.mobile-admin-advanced-body .mobile-admin-warning{margin-bottom:8px}.mobile-advanced-inner{padding:0!important;border:0!important;box-shadow:none!important;overflow:visible!important}.mobile-advanced-inner>label{padding-top:0}
.mobile-settings-save-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding:9px 10px;border:1px solid #dce5eb;border-radius:8px;background:#fff}.mobile-settings-save-row .config-save-message{flex:1;margin:0}.mobile-settings-save-row .button{flex:0 0 auto}
#mobileDeviceReassignReason{background:#fffdf5}.mobile-device-row.reassignment-active{border-color:#e8c46b;background:#fffdf6}
@media(max-width:1320px){.mobile-dashboard-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:1050px){.mobile-dashboard-grid,.mobile-admin-advanced-grid{grid-template-columns:1fr}.mobile-dashboard-status-row{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:760px){.mobile-admin-toolbar,.mobile-admin-dashboard-actions,.mobile-admin-section-head,.mobile-settings-save-row{flex-direction:column}.mobile-admin-toolbar-status,.mobile-admin-dashboard-actions>div:last-child{justify-content:flex-start}.mobile-dashboard-kpis{grid-template-columns:1fr 1fr}.mobile-dashboard-status-row{grid-template-columns:1fr}.mobile-dashboard-row{grid-template-columns:1fr 1fr}.mobile-admin-tabs{grid-template-columns:repeat(5,minmax(105px,1fr));overflow-x:auto}.mobile-admin-tab{min-width:105px}.mobile-settings-save-row .button{width:100%}}


/* V0.25.19.9.4.8 · Angled Tab marker style (blueprint-aligned third shape). */
:root{--avl-angled-tab-width:86px;--avl-angled-tab-height:60px;}
.tirana-vehicle-marker .angled-tab-shell{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr);align-items:stretch;width:var(--avl-angled-tab-width);height:var(--avl-angled-tab-height);min-width:var(--avl-angled-tab-width);min-height:var(--avl-angled-tab-height);background:var(--tirana-marker-colour,#facc15);color:var(--tirana-marker-text,#111);border:1px solid rgba(15,23,42,.18);border-radius:9px;box-shadow:0 8px 18px rgba(15,23,42,.18);overflow:visible;clip-path:polygon(0 0,calc(100% - 18px) 0,100% 50%,calc(100% - 18px) 100%,0 100%);}
.tirana-vehicle-marker.direction-left .angled-tab-shell{grid-template-columns:minmax(0,1fr) 18px;clip-path:polygon(18px 0,100% 0,100% 100%,18px 100%,0 50%);}
.tirana-vehicle-marker .angled-tab-icon-strip{display:flex;align-items:center;justify-content:center;border-right:1px solid rgba(15,23,42,.18);background:rgba(255,255,255,.18);}
.tirana-vehicle-marker.direction-left .angled-tab-icon-strip{border-right:none;border-left:1px solid rgba(15,23,42,.18);}
.tirana-vehicle-marker .angled-tab-bus{display:flex;align-items:center;justify-content:center;width:15px;height:15px;color:var(--tirana-marker-text,#111);}
.tirana-vehicle-marker .angled-tab-bus.is-active{color:#16a34a;}
.tirana-vehicle-marker .angled-tab-bus-svg{display:block;width:15px;height:15px;}
.tirana-vehicle-marker .angled-tab-lines{display:flex;flex-direction:column;justify-content:center;gap:1px;min-width:0;padding:5px 18px 5px 8px;font-weight:600;line-height:1.02;letter-spacing:.01em;text-align:center;}
.tirana-vehicle-marker.direction-left .angled-tab-lines{padding:5px 8px 5px 18px;}
.tirana-vehicle-marker .angled-tab-line{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:inherit;}
.tirana-vehicle-marker .angled-tab-line-1{font-size:12px;font-weight:900;}
.tirana-vehicle-marker .angled-tab-line-2{font-size:10px;font-weight:700;opacity:.96;}
.tirana-vehicle-marker .angled-tab-line-3{font-size:10px;font-weight:800;}
.tirana-vehicle-marker .angled-tab-line-4{font-size:11px;font-weight:900;text-transform:uppercase;}
.tirana-vehicle-marker .angled-tab-badges{position:absolute;left:4px;right:22px;top:-9px;display:flex;gap:4px;justify-content:center;pointer-events:none;z-index:3;}
.tirana-vehicle-marker.direction-left .angled-tab-badges{left:22px;right:4px;}
.tirana-vehicle-marker.direction-left .angled-tab-badges .tirana-marker-instruction,.tirana-vehicle-marker.direction-left .angled-tab-badges .tirana-marker-incident,.tirana-vehicle-marker.direction-right .angled-tab-badges .tirana-marker-instruction,.tirana-vehicle-marker.direction-right .angled-tab-badges .tirana-marker-incident{position:static;margin:0;transform:none;}
.tirana-map-vehicle .angled-tab-shell{width:var(--map-bus-width,var(--avl-angled-tab-width));height:var(--map-bus-height,var(--avl-angled-tab-height));min-width:var(--map-bus-width,var(--avl-angled-tab-width));min-height:var(--map-bus-height,var(--avl-angled-tab-height));box-shadow:0 6px 14px rgba(15,23,42,.22);}
.tirana-map-vehicle .angled-tab-line-1{font-size:11px;}
.tirana-map-vehicle .angled-tab-line-2,.tirana-map-vehicle .angled-tab-line-3{font-size:9px;}
.tirana-map-vehicle .angled-tab-line-4{font-size:10px;}

/* V0.25.19.9.4.8.1 · Angled Tab outer-shell isolation.
   The legacy marker wrapper becomes layout-only so the nested blueprint shape is not clipped twice. */
:root[data-avl-marker-style="angled_tab"] .corridor-bus.tirana-vehicle-marker:not(.ghost-bus):not(.driver-presence-bus){
  width:var(--avl-angled-tab-width)!important;
  min-width:var(--avl-angled-tab-width)!important;
  height:var(--avl-angled-tab-height)!important;
  min-height:var(--avl-angled-tab-height)!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  clip-path:none!important;
  overflow:visible!important;
}
:root[data-avl-marker-style="angled_tab"] .bus-map-marker.tirana-map-vehicle{
  width:var(--map-bus-width,var(--avl-angled-tab-width))!important;
  min-width:var(--map-bus-width,var(--avl-angled-tab-width))!important;
  height:var(--map-bus-height,var(--avl-angled-tab-height))!important;
  min-height:var(--map-bus-height,var(--avl-angled-tab-height))!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  clip-path:none!important;
  overflow:visible!important;
}
:root[data-avl-marker-style="angled_tab"] .angled-tab-icon-strip{background:color-mix(in srgb,#fff 42%,var(--tirana-marker-colour,#facc15));}

/* V0.25.19.9.4.8.2 · Display & AVL sub-tabs + fully wired marker typography. */
.display-admin-tabs{display:flex;align-items:center;gap:4px;margin:10px 0 8px;padding:4px;border:1px solid #d8e2e9;border-radius:9px;background:#eef4f8;overflow-x:auto}
.display-admin-tab{min-width:132px;height:34px;border:0;border-radius:6px;background:transparent;color:#385469;font-size:8px;font-weight:1000;letter-spacing:.07em;cursor:pointer;white-space:nowrap}
.display-admin-tab:hover{background:#fff}.display-admin-tab.active{background:#153f5d;color:#fff;box-shadow:0 2px 7px rgba(21,63,93,.18)}
.display-save-global{margin:0 0 10px;border-left:3px solid #2a73c9;background:#edf5fb;color:#506c7f}
.display-admin-subpanel{min-height:0}.display-admin-subpanel[hidden]{display:none!important}.display-admin-subpanel.active{display:block}
.display-subpanel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:4px 0 10px;padding:10px 12px;border:1px solid #dce6ed;border-radius:9px;background:#f8fbfd}
.display-subpanel-heading h3{margin:2px 0 3px;color:#153f5d;font-size:13px}.display-subpanel-heading p:not(.eyebrow){margin:0;max-width:800px;color:#6e8190;font-size:7px;line-height:1.4}
.display-bus-layout{display:grid;grid-template-columns:minmax(260px,.72fr) minmax(520px,1.7fr);gap:10px;align-items:start}.display-duty-colour-card{grid-column:1/-1}
.display-map-layout{display:grid;grid-template-columns:minmax(340px,.8fr) minmax(520px,1.2fr);gap:10px;align-items:start}.display-corridor-layout{display:grid;grid-template-columns:1fr 1fr minmax(280px,.8fr);gap:10px;align-items:start}.display-ghost-layout{display:grid;grid-template-columns:minmax(360px,760px);justify-content:start}
.display-bus-layout>.panel,.display-map-layout>.panel,.display-corridor-layout>.panel,.display-ghost-layout>.panel{padding:12px;overflow:visible!important}.display-corridor-note{padding:12px}.display-corridor-note p{font-size:7px;line-height:1.5;color:#637986}
.display-wiring-audit{margin-top:10px;padding:8px 10px;border-left:3px solid #17864b;border-radius:5px;background:#eefaf3;display:grid;gap:2px}.display-wiring-audit b{font-size:6.4px;letter-spacing:.05em;color:#17693d}.display-wiring-audit span{font-size:6.2px;line-height:1.4;color:#557268}
.display-marker-content-card .avl-marker-style-config{margin:0}.marker-font-size-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px;margin-top:10px;padding-top:9px;border-top:1px solid #dfe8ee}.marker-font-size-grid>label{display:grid;gap:3px;padding:7px 0;border-bottom:1px solid #e7eef2}.marker-font-size-grid>label>span{font-size:5.8px;font-weight:950;letter-spacing:.55px;color:#6d7d89}.marker-font-size-grid input[type=range]{height:auto;padding:0;accent-color:#d72631}.marker-font-size-grid output{font-size:7px;font-weight:950;color:#173b59;justify-self:end;margin-top:-17px}
.marker-non-current-only[hidden],.marker-futuristic-only[hidden]{display:none!important}

/* Multi-style marker font sizes: one city-scoped source of truth for schematic markers. */
:root[data-avl-marker-style="futuristic_pointer"] .tirana-vehicle-marker:not(.duty-stand-card) .tirana-marker-vehicle{font-size:var(--avl-marker-primary-px,12px)!important}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-vehicle-marker:not(.duty-stand-card) .tirana-marker-run{font-size:var(--avl-marker-secondary-px,10px)!important}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-vehicle-marker:not(.duty-stand-card) .tirana-marker-value{font-size:var(--avl-marker-metric-px,10px)!important}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-vehicle-marker:not(.duty-stand-card) .tirana-marker-status{font-size:var(--avl-marker-status-px,11px)!important}
:root[data-avl-marker-style="futuristic_pointer"] .tirana-vehicle-marker:not(.duty-stand-card) .tirana-future-footer{font-size:var(--avl-marker-footer-px,7px)!important}
:root[data-avl-marker-style="angled_tab"] .angled-tab-line-1{font-size:var(--avl-marker-primary-px,12px)!important}
:root[data-avl-marker-style="angled_tab"] .angled-tab-line-2{font-size:var(--avl-marker-secondary-px,10px)!important}
:root[data-avl-marker-style="angled_tab"] .angled-tab-line-3{font-size:var(--avl-marker-metric-px,10px)!important}
:root[data-avl-marker-style="angled_tab"] .angled-tab-line-4{font-size:var(--avl-marker-status-px,11px)!important}
:root[data-avl-marker-style="angled_tab"] .angled-tab-lines{gap:0!important;padding-top:3px!important;padding-bottom:3px!important;line-height:.98!important}
:root[data-avl-marker-style="angled_tab"] .angled-tab-shell{box-shadow:0 8px 18px rgba(15,23,42,.18),0 0 calc(10px * var(--avl-marker-glow-strength,.68)) color-mix(in srgb,var(--tirana-marker-colour,#facc15) 58%,transparent)!important}

/* Street-map text has its own map multiplier while retaining the chosen line proportions. */
:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-marker-vehicle{font-size:var(--map-marker-primary-px,12px)!important}
:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-marker-run{font-size:var(--map-marker-secondary-px,10px)!important}
:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-marker-value{font-size:var(--map-marker-metric-px,10px)!important}
:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-marker-status{font-size:var(--map-marker-status-px,11px)!important}
:root[data-avl-marker-style="futuristic_pointer"] .bus-map-marker.tirana-map-vehicle .tirana-future-footer{font-size:var(--map-marker-footer-px,7px)!important}
:root[data-avl-marker-style="angled_tab"] .bus-map-marker.tirana-map-vehicle .angled-tab-line-1{font-size:var(--map-marker-primary-px,12px)!important}
:root[data-avl-marker-style="angled_tab"] .bus-map-marker.tirana-map-vehicle .angled-tab-line-2{font-size:var(--map-marker-secondary-px,10px)!important}
:root[data-avl-marker-style="angled_tab"] .bus-map-marker.tirana-map-vehicle .angled-tab-line-3{font-size:var(--map-marker-metric-px,10px)!important}
:root[data-avl-marker-style="angled_tab"] .bus-map-marker.tirana-map-vehicle .angled-tab-line-4{font-size:var(--map-marker-status-px,11px)!important}

@media(max-width:1250px){.display-bus-layout,.display-map-layout{grid-template-columns:1fr}.display-corridor-layout{grid-template-columns:1fr 1fr}.display-duty-colour-card{grid-column:auto}.display-corridor-note{grid-column:1/-1}}
@media(max-width:760px){.display-subpanel-heading{flex-direction:column}.display-admin-tab{min-width:116px}.display-corridor-layout{grid-template-columns:1fr}.display-corridor-note{grid-column:auto}.marker-font-size-grid{grid-template-columns:1fr}}

/* V0.25.19.9.4.8.3 · Dedicated street-map bus marker + circular travel-direction integrity. */
.bus-map-marker.tirana-map-vehicle.map-bus-only{
  width:var(--map-bus-width,54px)!important;
  min-width:var(--map-bus-width,54px)!important;
  height:var(--map-bus-height,26px)!important;
  min-height:var(--map-bus-height,26px)!important;
  margin:0!important;padding:0!important;border:0!important;border-radius:0!important;
  background:transparent!important;box-shadow:none!important;clip-path:none!important;
  overflow:visible!important;opacity:1!important;filter:none!important;
}
.map-live-bus{position:relative;width:100%;height:100%;opacity:1!important;filter:none!important;overflow:visible;pointer-events:auto}
.map-live-bus-shell{position:absolute;left:1px;right:1px;top:1px;bottom:4px;background:var(--map-live-bus-colour,#f3c900);color:var(--map-live-bus-text,#111);border:1.5px solid color-mix(in srgb,var(--map-live-bus-colour,#f3c900) 72%,#0f2538);box-shadow:0 3px 8px rgba(7,29,46,.34),inset 0 0 0 1px rgba(255,255,255,.24);clip-path:polygon(0 0,86% 0,100% 22%,100% 100%,0 100%);border-radius:5px 7px 4px 4px}
.map-live-bus.travel-left .map-live-bus-shell{clip-path:polygon(14% 0,100% 0,100% 100%,0 100%,0 22%);border-radius:7px 5px 4px 4px}
.map-live-bus-window-strip{position:absolute;left:7px;right:11px;top:3px;height:5px;border-radius:2px;background:rgba(255,255,255,.84);box-shadow:inset 0 0 0 1px rgba(15,37,56,.15)}
.map-live-bus.travel-left .map-live-bus-window-strip{left:11px;right:7px}
.map-live-bus-shell::after{content:"";position:absolute;right:3px;top:4px;width:5px;height:8px;border-radius:1.5px;background:rgba(255,255,255,.9);box-shadow:inset 0 0 0 1px rgba(15,37,56,.14)}
.map-live-bus.travel-left .map-live-bus-shell::after{right:auto;left:3px}
.map-live-bus-label{position:absolute;left:8px;right:10px;top:10px;bottom:2px;display:flex;align-items:center;justify-content:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--map-bus-label-px,11px)!important;font-weight:1000;line-height:1;color:inherit;text-align:center;text-shadow:0 1px 0 rgba(255,255,255,.22)}
.map-live-bus.travel-left .map-live-bus-label{left:10px;right:8px}
.map-live-bus-wheel{position:absolute;bottom:-3px;width:7px;height:7px;border-radius:50%;background:#142331;border:1px solid #fff;box-shadow:0 1px 2px rgba(0,0,0,.35)}
.map-live-bus-wheel.wheel-a{left:10px}.map-live-bus-wheel.wheel-b{right:10px}
.map-live-driver-present{position:absolute;right:-4px;top:-4px;width:9px;height:9px;border-radius:50%;background:#16a34a;border:2px solid #fff;box-shadow:0 0 0 1px rgba(22,163,74,.28),0 1px 3px rgba(0,0,0,.25);z-index:5}
.map-live-alert{position:absolute;left:-4px;top:-5px;display:grid;place-items:center;width:11px;height:11px;border-radius:50%;background:#6d28d9;color:#fff;border:1.5px solid #fff;font-size:7px;font-weight:1000;font-style:normal;line-height:1;box-shadow:0 1px 3px rgba(0,0,0,.25);z-index:5}
.display-preview-map .preview-bus{overflow:visible!important;display:block!important;transform:none!important;border:0!important;background:transparent!important;box-shadow:none!important}
.display-preview-map .preview-bus .map-live-bus{width:100%;height:100%}

/* A closed loop has one GTFS direction_id, but the on-screen bus tangent changes around the oval.
   The renderer now adds direction-left/right from the loop tangent, so every selected schematic
   marker style mirrors consistently as vehicles move around the circular route. */
.circular-bus.tirana-vehicle-marker.direction-left .angled-tab-shell{grid-template-columns:minmax(0,1fr) 18px;clip-path:polygon(18px 0,100% 0,100% 100%,18px 100%,0 50%)}
.circular-bus.tirana-vehicle-marker.direction-right .angled-tab-shell{grid-template-columns:18px minmax(0,1fr);clip-path:polygon(0 0,calc(100% - 18px) 0,100% 50%,calc(100% - 18px) 100%,0 100%)}

/* V0.25.19.9.4.8.4 · Double-decker street-map bus + Admin opacity/fade. */
.map-live-bus.map-live-double-decker .map-live-bus-shell{
  opacity:var(--map-bus-opacity,1);
  transition:opacity .14s ease;
  border-radius:6px 8px 5px 5px;
  box-shadow:0 4px 10px rgba(7,29,46,.38),inset 0 0 0 1px rgba(255,255,255,.28);
}
.map-live-bus.map-live-double-decker .map-live-bus-upper-deck,
.map-live-bus.map-live-double-decker .map-live-bus-lower-deck{
  position:absolute;
  left:7px;
  right:12px;
  border-radius:2px;
  background:repeating-linear-gradient(90deg,rgba(255,255,255,.92) 0 8px,rgba(31,52,69,.22) 8px 9.5px);
  box-shadow:inset 0 0 0 1px rgba(15,37,56,.15);
  pointer-events:none;
}
.map-live-bus.map-live-double-decker .map-live-bus-upper-deck{top:8%;height:21%}
.map-live-bus.map-live-double-decker .map-live-bus-lower-deck{top:35%;height:19%;opacity:.9}
.map-live-bus.map-live-double-decker.travel-left .map-live-bus-upper-deck,
.map-live-bus.map-live-double-decker.travel-left .map-live-bus-lower-deck{left:12px;right:7px}
.map-live-bus.map-live-double-decker .map-live-bus-label{
  left:7px;
  right:11px;
  top:58%;
  bottom:5%;
  padding:0 2px;
  border-radius:2px;
  background:rgba(255,255,255,.16);
  font-size:var(--map-bus-label-px,11px)!important;
  line-height:1;
  letter-spacing:-.01em;
  text-shadow:0 1px 0 rgba(255,255,255,.25),0 0 1px rgba(0,0,0,.08);
}
.map-live-bus.map-live-double-decker.travel-left .map-live-bus-label{left:11px;right:7px}
.map-live-bus.map-live-double-decker .map-live-bus-shell::after{
  top:9%;
  height:43%;
  width:6px;
  border-radius:2px;
}
.map-live-bus.map-live-double-decker .map-live-bus-wheel{bottom:-4px;width:8px;height:8px}
.map-live-bus.map-live-double-decker .map-live-bus-wheel.wheel-a{left:12px}
.map-live-bus.map-live-double-decker .map-live-bus-wheel.wheel-b{right:12px}


/* V0.25.19.9.4.8.5 · selected bus map focus + explicit deselection */
.live-clear-bus-selection{min-width:70px;border-color:#0e527d!important;color:#0e527d!important;background:#f2f9fd!important;font-weight:900!important}
.live-map-selected-vehicle{max-width:270px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.map-live-bus.is-selected{z-index:20;filter:drop-shadow(0 0 6px rgba(14,82,125,.95)) drop-shadow(0 0 12px rgba(14,82,125,.5))!important}
.map-live-selected-halo{position:absolute;inset:-9px;border:3px solid #0e527d;border-radius:12px;box-shadow:0 0 0 3px rgba(255,255,255,.96),0 0 0 6px rgba(14,82,125,.24);pointer-events:none;z-index:-1;animation:map-selected-bus-pulse 1.25s ease-in-out infinite alternate}
@keyframes map-selected-bus-pulse{from{transform:scale(.96);opacity:.72}to{transform:scale(1.05);opacity:1}}

/* V0.25.19.9.4.8.6.9 · Dwell Time Evidence V1 */
.display-dwell-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.8fr);gap:14px;align-items:start}
.display-dwell-layout .config-group{padding:16px;display:grid;gap:12px}
.display-dwell-layout .config-group label:not(.toggle-row){display:grid;grid-template-columns:minmax(190px,1fr) minmax(110px,.8fr);gap:10px;align-items:center}
.display-dwell-layout .config-group label>span{font-weight:800;color:#123757;font-size:11px;letter-spacing:.04em}
.display-dwell-layout .config-group input[type=number]{width:100%;min-height:38px;border:1px solid #c8d7e4;border-radius:8px;padding:7px 10px;background:#fff;color:#0b2d49;font-weight:800}
.display-dwell-layout .config-group input[type=color]{width:100%;height:38px;border:1px solid #c8d7e4;border-radius:8px;padding:3px;background:#fff}
.pc-dwell-time{display:grid;gap:12px;min-width:0}
.pc-dwell-head{display:flex;justify-content:space-between;gap:18px;align-items:end;padding:16px}
.pc-dwell-head>div:first-child{max-width:760px}
.pc-dwell-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:end;justify-content:flex-end}
.pc-dwell-controls label{display:grid;gap:4px;min-width:135px}
.pc-dwell-controls label>span{font-size:9px;font-weight:900;letter-spacing:.08em;color:#5e7387}
.pc-dwell-controls input,.pc-dwell-controls select{min-height:38px;border:1px solid #c9d8e4;border-radius:8px;padding:7px 10px;background:#fff;font-weight:800;color:#0e3656}
.pc-dwell-evidence-note{display:flex;gap:10px;align-items:center;border:1px solid #cbd9e4;border-left:4px solid #71869a;border-radius:9px;padding:10px 12px;background:#f7fafc;color:#3f576c}
.pc-dwell-evidence-note b{white-space:nowrap;color:#173a59}.pc-dwell-evidence-note.highres{border-left-color:#16a34a;background:#f2fbf5}.pc-dwell-evidence-note.coarse{border-left-color:#eab308;background:#fffbed}.pc-dwell-evidence-note.error{border-left-color:#dc2626;background:#fff4f4}.pc-dwell-evidence-note.loading{opacity:.8}
.pc-dwell-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}
.pc-dwell-kpis article{background:#fff;border:1px solid #cbd9e4;border-radius:10px;padding:12px;min-width:0;box-shadow:0 2px 7px rgba(11,45,73,.04)}
.pc-dwell-kpis article span{display:block;font-size:9px;font-weight:900;letter-spacing:.06em;color:#5d7184}.pc-dwell-kpis article strong{display:block;font-size:24px;line-height:1.12;color:#0b3456;margin-top:5px}.pc-dwell-kpis article small{display:block;color:#718699;margin-top:5px}.pc-dwell-kpis article.p85{border-left:4px solid #7057ee}.pc-dwell-kpis article.risk{border-left:4px solid #dc2626}
.pc-dwell-table-card{padding:14px;min-width:0}.pc-dwell-table-wrap{overflow:auto;max-height:54vh;border:1px solid #d4e0e9;border-radius:8px}.pc-dwell-table{width:100%;border-collapse:collapse;min-width:900px}.pc-dwell-table th{position:sticky;top:0;background:#edf4f8;color:#284a66;text-align:left;font-size:9px;letter-spacing:.06em;padding:9px;z-index:1}.pc-dwell-table td{padding:9px;border-top:1px solid #e3ebf1;color:#25445c}.pc-dwell-table td small{display:block;color:#7a8d9d}.pc-dwell-table tr.dwell-critical td:first-child{border-left:4px solid var(--dwell-critical,#dc2626)}.pc-dwell-table tr.dwell-high td:first-child{border-left:4px solid var(--dwell-high,#f97316)}.pc-dwell-table tr.dwell-watch td:first-child{border-left:4px solid var(--dwell-watch,#eab308)}.pc-dwell-table tr.dwell-normal td:first-child{border-left:4px solid var(--dwell-normal,#16a34a)}
.pc-dwell-legend{display:flex;gap:6px;flex-wrap:wrap}.pc-dwell-legend span,.pc-dwell-severity{border-radius:999px;padding:4px 7px;font-size:8px;font-weight:1000;letter-spacing:.05em;background:#eef3f6;color:#23435f}.pc-dwell-legend .normal,.pc-dwell-severity.dwell-normal{background:color-mix(in srgb,var(--dwell-normal,#16a34a) 18%,white);color:#0b6b2c}.pc-dwell-legend .watch,.pc-dwell-severity.dwell-watch{background:color-mix(in srgb,var(--dwell-watch,#eab308) 23%,white);color:#806500}.pc-dwell-legend .high,.pc-dwell-severity.dwell-high{background:color-mix(in srgb,var(--dwell-high,#f97316) 20%,white);color:#9a4200}.pc-dwell-legend .critical,.pc-dwell-severity.dwell-critical{background:color-mix(in srgb,var(--dwell-critical,#dc2626) 16%,white);color:#a2121b}.pc-dwell-legend .nodata,.pc-dwell-severity.dwell-no-data{background:color-mix(in srgb,var(--dwell-no-data,#94a3b8) 20%,white);color:#59697b}
.pc-dwell-method{display:flex;gap:12px;padding:12px 14px;align-items:flex-start}.pc-dwell-method b{white-space:nowrap;color:#173b5b}.pc-dwell-method span{color:#5f7487}
.pc-dwell-loader{min-height:220px;display:grid;place-items:center;align-content:center;gap:8px;text-align:center;color:#32536d}.pc-dwell-loader i{width:28px;height:28px;border:4px solid #dce5ff;border-top-color:#6558ed;border-radius:50%;animation:spin .8s linear infinite}.pc-dwell-loader span{max-width:620px;color:#6d8294}
.pc-runtime-dwell-context{padding:12px 14px}.pc-runtime-dwell-values{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.pc-runtime-dwell-values article{border:1px solid #d6e2ea;border-radius:8px;padding:9px 10px;background:#f9fbfd}.pc-runtime-dwell-values span{display:block;font-size:8px;font-weight:900;letter-spacing:.07em;color:#63798b}.pc-runtime-dwell-values strong{display:block;margin-top:4px;color:#133c5c;font-size:15px}.pc-runtime-dwell-context>small{display:block;margin-top:8px;color:#657a8c}
.exec-dwell-section .exec-performance-grid article{min-height:58px}
/* Live AVL stop dots: dwell severity changes fill only; terminal, selection, incidents and other semantics retain their separate outline/overlay. */
.corridor-stop.dwell-normal .corridor-stop-dot{background:var(--dwell-normal,#16a34a)!important;box-shadow:0 0 0 2px #fff,0 0 0 3px var(--dwell-normal,#16a34a)!important}
.corridor-stop.dwell-watch .corridor-stop-dot{background:var(--dwell-watch,#eab308)!important;box-shadow:0 0 0 2px #fff,0 0 0 3px var(--dwell-watch,#eab308)!important}
.corridor-stop.dwell-high .corridor-stop-dot{background:var(--dwell-high,#f97316)!important;box-shadow:0 0 0 2px #fff,0 0 0 3px var(--dwell-high,#f97316)!important}
.corridor-stop.dwell-critical .corridor-stop-dot{background:var(--dwell-critical,#dc2626)!important;box-shadow:0 0 0 2px #fff,0 0 0 3px var(--dwell-critical,#dc2626)!important}
.circular-stop.dwell-normal>i{background:var(--dwell-normal,#16a34a)!important}.circular-stop.dwell-watch>i{background:var(--dwell-watch,#eab308)!important}.circular-stop.dwell-high>i{background:var(--dwell-high,#f97316)!important}.circular-stop.dwell-critical>i{background:var(--dwell-critical,#dc2626)!important}
@media(max-width:1100px){.display-dwell-layout{grid-template-columns:1fr}.pc-dwell-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.pc-dwell-head{align-items:stretch;flex-direction:column}.pc-dwell-controls{justify-content:flex-start}.pc-runtime-dwell-values{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.pc-dwell-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-runtime-dwell-values{grid-template-columns:1fr}.display-dwell-layout .config-group label:not(.toggle-row){grid-template-columns:1fr}}

/* ========================================================================
   V0.25.19.9.4.8.6.9.2 · FULL REPORT RESTORE + TARGETED LAYOUT HOTFIX R4
   PRESENTATION ONLY.
   Safety correction after the broad R2 viewport override proved too invasive.
   This release deliberately restores the original R1 page/workspace sizing
   for every unrelated report and applies only the two confirmed local fixes:
   1) inactive Platform Admin must remain hidden;
   2) Route-by-Route Service Delivery owns five explicit rows.
   No global .app-shell/.main/.workspace/.page height or overflow override is
   introduced here.
   ======================================================================== */

/* Confirmed root cause of the thin bottom "window": the Admin redesign had
   display:grid!important on .admin-page, overriding the platform .page hidden
   contract. Only the active Admin page may render. */
.admin-page:not(.active){display:none!important}
@media (min-width:821px){.admin-page.active{display:grid!important}}
@media (max-width:820px){.admin-page.active{display:block!important}}

/* Route Report Service Delivery has five visible direct rows:
   title, Service/LMRA tabs, filters, KPI strip, report matrix. */
.route-report-page:not(.lmra-mode) .route-report-shell{
  grid-template-rows:auto auto auto auto minmax(0,1fr)!important;
  min-height:0!important;
  overflow:hidden!important;
}
/* LMRA has four visible direct rows. */
.route-report-page.lmra-mode .route-report-shell{
  grid-template-rows:auto auto auto minmax(0,1fr)!important;
  min-height:0!important;
  overflow:hidden!important;
}
.route-report-page .route-report-main-grid,
.route-report-page .route-report-matrix-panel,
.route-report-page .route-report-table-wrap,
.route-report-page .route-report-investigation{
  min-height:0!important;
}
.route-report-page .route-report-tabs{
  overflow-x:auto!important;
  overflow-y:hidden!important;
  scrollbar-width:thin;
  flex-wrap:nowrap!important;
}
.route-report-page .route-report-secondary-controls,
.route-report-page .route-report-matrix-meta{
  flex-wrap:wrap!important;
  row-gap:6px!important;
}
.route-report-page .route-report-matrix-meta{
  min-width:0!important;
}

/* R5.4 — universal Live AVL stop Dwell popup recovery.
   Restores the proven whole-stop click model and adds board-level proximity fallback so both
   upper and lower rails are interrogable even when a visual overlay wins pointer hit-testing. */
.corridor-stop[data-live-dwell-stop="1"],
.family-stop[data-live-dwell-stop="1"],
.circular-stop[data-live-dwell-stop="1"]{cursor:pointer!important;pointer-events:auto!important;z-index:11!important}
.corridor-stop[data-live-dwell-stop="1"]::after,
.family-stop[data-live-dwell-stop="1"]::after,
.circular-stop[data-live-dwell-stop="1"]::after{content:"";position:absolute;left:50%;top:50%;width:26px;height:26px;transform:translate(-50%,-50%);border-radius:50%;background:transparent;pointer-events:auto}
.corridor-stop[data-live-dwell-stop="1"] .corridor-stop-dot,
.family-stop[data-live-dwell-stop="1"]>i,
.circular-stop[data-live-dwell-stop="1"]>i{transition:transform .12s ease,box-shadow .12s ease;transform-origin:center}
.corridor-stop[data-live-dwell-stop="1"]:hover .corridor-stop-dot,
.family-stop[data-live-dwell-stop="1"]:hover>i,
.circular-stop[data-live-dwell-stop="1"]:hover>i,
.corridor-stop.dwell-proximity-hover .corridor-stop-dot,
.family-stop.dwell-proximity-hover>i,
.circular-stop.dwell-proximity-hover>i{transform:scale(1.22);box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(22,137,200,.18)}
.live-dwell-stop-popup{position:fixed;z-index:18000;width:min(308px,calc(100vw - 24px));max-height:min(420px,calc(100vh - 24px));overflow:auto;border:1px solid #cbdbe5;border-radius:14px;background:rgba(255,255,255,.985);box-shadow:0 18px 48px rgba(7,37,58,.22),0 2px 8px rgba(7,37,58,.10);padding:12px;color:#123552;backdrop-filter:blur(10px)}
.live-dwell-stop-popup[hidden]{display:none!important}
.live-dwell-stop-popup::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:14px 0 0 14px;background:var(--dwell-no-data,#94a3b8)}
.live-dwell-stop-popup.severity-normal::before{background:var(--dwell-normal,#16a34a)}
.live-dwell-stop-popup.severity-watch::before{background:var(--dwell-watch,#eab308)}
.live-dwell-stop-popup.severity-high::before{background:var(--dwell-high,#f97316)}
.live-dwell-stop-popup.severity-critical::before{background:var(--dwell-critical,#dc2626)}
.live-dwell-stop-popup-close{position:absolute;right:8px;top:8px;width:26px;height:26px;border:1px solid #d8e3ea;border-radius:8px;background:#f8fbfd;color:#315873;font:800 17px/1 system-ui,sans-serif;cursor:pointer;display:grid;place-items:center}
.live-dwell-stop-popup-close:hover{background:#eef5f9}
.live-dwell-stop-popup-body{padding-right:22px}
.live-dwell-popup-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:1px 0 10px;border-bottom:1px solid #e4ebf0}
.live-dwell-popup-head>div{min-width:0}.live-dwell-popup-head span{display:block;font-size:6.5px;font-weight:1000;letter-spacing:.09em;color:#6c8292}.live-dwell-popup-head b{display:block;margin-top:3px;font-size:14px;line-height:1.12;color:#0f3555;white-space:normal}.live-dwell-popup-head small{display:block;margin-top:3px;font-size:7px;font-weight:750;color:#6d8291}.live-dwell-popup-head em{flex:0 0 auto;margin-right:22px;padding:4px 7px;border-radius:999px;background:#eef2f5;color:#607483;font-size:6.5px;font-style:normal;font-weight:1000;letter-spacing:.05em}.live-dwell-popup-head em.dwell-normal{background:#e8f7ee;color:#118044}.live-dwell-popup-head em.dwell-watch{background:#fff7d8;color:#8d6900}.live-dwell-popup-head em.dwell-high{background:#fff0e4;color:#b45812}.live-dwell-popup-head em.dwell-critical{background:#fee9ec;color:#b7192b}
.live-dwell-popup-metrics{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.live-dwell-popup-metrics article{min-width:0;border:1px solid #dce6ec;border-radius:9px;background:#f9fbfc;padding:8px 9px}.live-dwell-popup-metrics span{display:block;font-size:6px;font-weight:950;letter-spacing:.07em;color:#708595}.live-dwell-popup-metrics strong{display:block;margin-top:3px;font-size:15px;line-height:1;color:#0c3b60;font-variant-numeric:tabular-nums}
.live-dwell-popup-foot{display:flex;flex-wrap:wrap;gap:5px 8px;margin-top:9px;padding-top:8px;border-top:1px solid #edf1f4;color:#667d8e;font-size:6.5px;font-weight:750}.live-dwell-popup-foot b{color:#173e5d}.live-dwell-popup-empty,.live-dwell-popup-excluded{margin-top:9px;border-radius:8px;background:#f4f7f9;padding:8px 9px;color:#6b7f8d;font-size:7px;line-height:1.35}.live-dwell-popup-empty b,.live-dwell-popup-empty span,.live-dwell-popup-excluded b,.live-dwell-popup-excluded span{display:block}.live-dwell-popup-excluded{background:#fff8e8;border:1px solid #f0ddab}.live-dwell-popup-excluded b{color:#8c6410;font-size:7px}.live-dwell-popup-excluded span,.live-dwell-popup-empty span{margin-top:3px}
@media(max-width:700px){.live-dwell-stop-popup{width:min(292px,calc(100vw - 16px));padding:11px}.live-dwell-popup-metrics strong{font-size:14px}}

/* R5.5.5.2.3 - governed Driver Voice Library in Platform Admin. */
.mobile-voice-heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.mobile-voice-active-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:10px}
.mobile-voice-active-card{display:grid;grid-template-rows:auto auto auto auto;gap:10px;padding:14px;min-height:225px;overflow:visible!important}
.mobile-voice-active-card h3{margin:2px 0 0;color:#143b58;font-size:16px}
.mobile-voice-summary{display:grid;gap:3px;padding:11px 12px;border:1px solid #dbe6ed;border-radius:9px;background:#f6f9fb;min-height:58px;align-content:center}
.mobile-voice-summary b{font-size:12px;color:#143b58}.mobile-voice-summary span{font-size:7px;line-height:1.45;color:#738796}
.mobile-voice-active-card label{margin:0}.mobile-voice-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.mobile-voice-actions .button{min-width:120px}
.mobile-voice-upload-card,.mobile-voice-library-card{padding:14px;margin-top:10px;overflow:visible!important}
.mobile-voice-upload-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;margin-top:10px}.mobile-voice-upload-grid label{margin:0}
.mobile-voice-make-active{margin:12px 0 8px!important}
.mobile-voice-file-guide{display:grid;gap:5px;padding:10px 11px;border:1px dashed #b9ccd8;border-radius:8px;background:#f7fafc;color:#557083}.mobile-voice-file-guide b{font-size:7px;letter-spacing:.08em;color:#173b59}.mobile-voice-file-guide span{font-size:7px;line-height:1.65;word-break:break-word}
.mobile-voice-library{display:grid;gap:7px;margin-top:8px}.mobile-voice-pack-row{display:grid;grid-template-columns:minmax(180px,1fr) auto auto auto auto;gap:7px;align-items:center;padding:9px 10px;border:1px solid #dce5eb;border-radius:8px;background:#fff}.mobile-voice-pack-row>div{display:grid;gap:2px;min-width:0}.mobile-voice-pack-row b{font-size:9px;color:#173b59}.mobile-voice-pack-row small{font-size:6.5px;line-height:1.35;color:#788b99}.mobile-voice-pack-row .button{min-height:30px;padding:6px 9px;font-size:7px}
@media(max-width:1050px){.mobile-voice-active-grid,.mobile-voice-upload-grid{grid-template-columns:1fr}.mobile-voice-pack-row{grid-template-columns:1fr auto auto}.mobile-voice-pack-row>div{grid-column:1/-1}}
@media(max-width:760px){.mobile-voice-heading-actions{justify-content:flex-start}.mobile-voice-actions{display:grid;grid-template-columns:1fr 1fr}.mobile-voice-actions .button{width:100%;min-width:0}.mobile-voice-pack-row{grid-template-columns:1fr 1fr}.mobile-voice-pack-row .pill{justify-self:start}.mobile-voice-pack-row .button{width:100%}}

/* R5.5.5.2.4 Platform Driver Voice Studio */
.mobile-voice-recorder-card{padding:14px;margin-top:10px;overflow:visible!important}
.mobile-voice-new-language{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;padding:10px;border:1px dashed #b9ccd8;border-radius:8px;background:#f7fafc}
.mobile-voice-new-language[hidden]{display:none!important}
.mobile-voice-record-row{grid-template-columns:minmax(220px,1fr) auto auto auto auto}
.mobile-voice-record-row .button.danger{background:#c8353f;color:#fff;border-color:#c8353f}
@media(max-width:1050px){.mobile-voice-new-language{grid-template-columns:1fr}.mobile-voice-record-row{grid-template-columns:1fr auto auto}.mobile-voice-record-row>div{grid-column:1/-1}}
@media(max-width:760px){.mobile-voice-record-row{grid-template-columns:1fr 1fr}.mobile-voice-record-row .pill{justify-self:start}}

/* R5.5.5.2.5 Platform-managed Driver voice policy + native preview/download */
.mobile-voice-global-policy{padding:14px;margin-bottom:10px;overflow:visible!important}
.mobile-voice-global-policy .mobile-admin-form-grid{align-items:end}
.mobile-voice-global-summary{display:grid;gap:3px;padding:10px 12px;border:1px solid #d7e3eb;border-radius:9px;background:#f6f9fb;min-height:58px;align-content:center}
.mobile-voice-global-summary b{font-size:10px;color:#143b58}.mobile-voice-global-summary span,.mobile-voice-global-summary small{font-size:7px;line-height:1.45;color:#6f8494}
.mobile-voice-native-preview{width:100%;min-height:36px;max-height:42px;border-radius:8px;background:#f7fafc}
.mobile-voice-active-card .mobile-voice-native-preview{align-self:end}
@media(max-width:1050px){.mobile-voice-global-policy .mobile-admin-form-grid{grid-template-columns:1fr}}


/* R5.5.5.2.6 Platform Voice Studio recovery: guaranteed admin scroll, microphone workflow and upload feedback. */
.admin-tab-panel[data-admin-panel="mobile"]{min-height:0!important}
.admin-tab-panel[data-admin-panel="mobile"] .mobile-admin-tabs{position:sticky;top:0;z-index:24;background:#eef4f8}
.mobile-admin-subpanel[data-mobile-admin-panel="voices"]{min-width:0;padding-bottom:28px}
.mobile-admin-subpanel[data-mobile-admin-panel="voices"].active{display:block;min-height:max-content}
.mobile-voice-recorder-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.mobile-voice-mic-help,.mobile-voice-upload-selection{display:grid;gap:4px;margin:8px 0 10px;padding:10px 11px;border:1px solid #d7e3ea;border-radius:8px;background:#f7fafc;color:#526d80}
.mobile-voice-mic-help b,.mobile-voice-upload-selection b{font-size:7px;letter-spacing:.07em;color:#173b59}
.mobile-voice-mic-help span,.mobile-voice-upload-selection span{font-size:7px;line-height:1.5}
.mobile-voice-mic-help.ready{background:#eef9f3;border-color:#b9dfca;color:#275e43}
.mobile-voice-mic-help.blocked{background:#fff2f3;border-color:#efc3c8;color:#8c2d35}
.mobile-voice-upload-selection.ready{background:#eef8ff;border-color:#bcd9ec}
.mobile-voice-upload-selection.error{background:#fff2f3;border-color:#efc3c8;color:#8c2d35}
.mobile-voice-recorder-card #mobileVoiceRecorderList{max-height:520px;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;padding-right:3px}
#mobileVoiceMessage{position:sticky;bottom:0;z-index:25;margin:8px 0 0;padding:9px 11px;border:1px solid #d5e1e8;border-radius:8px;background:rgba(255,255,255,.97);box-shadow:0 -5px 18px rgba(17,49,72,.08)}
@media(max-width:760px){.mobile-voice-recorder-head-actions{justify-content:flex-start}.mobile-voice-recorder-head-actions .button{width:100%}}

/* R5.5.5.2.10 - Platform Admin per-prompt Driver voice governance. */
.mobile-voice-record-row{grid-template-columns:minmax(220px,1fr) auto auto auto auto auto}
.mobile-voice-cue-switch{display:flex;align-items:center;gap:7px;min-width:104px;padding:7px 9px;border:1px solid #c9d9e5;border-radius:9px;background:#f4fbf7;color:#176844;font-size:9px;font-weight:1000;letter-spacing:.06em;white-space:nowrap}
.mobile-voice-cue-switch input{width:18px;height:18px;accent-color:#178b56}
.mobile-voice-cue-switch.locked{background:#eef3f6;color:#607386;opacity:.82}
.mobile-voice-record-row.cue-disabled{background:#fbfcfd;border-style:dashed}
.mobile-voice-record-row.cue-disabled .mobile-voice-cue-switch{background:#fff3f3;color:#aa2730;border-color:#efc6ca}
@media(max-width:1050px){.mobile-voice-record-row{grid-template-columns:1fr auto auto auto}.mobile-voice-record-row>div{grid-column:1/-1}}
@media(max-width:760px){.mobile-voice-record-row{grid-template-columns:1fr 1fr}.mobile-voice-cue-switch{justify-self:start}.mobile-voice-record-row .pill{justify-self:start}}

/* R5.5.5.2.27 · Engineering First User Checks · Stage A report only */
.engineering-fuc-panel{margin-top:14px;display:grid;gap:12px}.engineering-fuc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.engineering-fuc-head h3{margin:2px 0 4px}.engineering-fuc-head p{max-width:880px}.engineering-fuc-state{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.engineering-fuc-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.engineering-fuc-kpis article{border:1px solid #d8e4eb;border-radius:9px;background:#f9fbfc;padding:9px}.engineering-fuc-kpis span{display:block;font-size:7px;font-weight:900;color:#637b8a;letter-spacing:.04em}.engineering-fuc-kpis b{display:block;margin-top:3px;font-size:16px;color:#173f58}.engineering-fuc-filters{display:grid;grid-template-columns:minmax(220px,1fr) 220px auto;gap:8px}.engineering-fuc-filters input,.engineering-fuc-filters select{min-width:0;border:1px solid #cbd9e1;border-radius:8px;background:#fff;padding:8px 10px}.engineering-fuc-layout{display:grid;grid-template-columns:minmax(330px,.85fr) minmax(420px,1.4fr);gap:10px;min-height:330px}.engineering-fuc-list,.engineering-fuc-detail{border:1px solid #dce6ec;border-radius:10px;background:#fff;overflow:auto;min-width:0}.engineering-fuc-row{width:100%;display:grid;grid-template-columns:70px minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px;border:0;border-bottom:1px solid #e5edf1;background:#fff;text-align:left;cursor:pointer}.engineering-fuc-row:hover,.engineering-fuc-row.selected{background:#f1f8fc}.engineering-fuc-row>span{font-size:8px;font-weight:950;color:#27668d}.engineering-fuc-row b{display:block;font-size:9px;color:#173e56}.engineering-fuc-row small{display:block;margin-top:2px;font-size:7px;color:#738692}.engineering-fuc-detail{padding:12px}.engineering-fuc-hero{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #dce6ec;padding-bottom:10px}.engineering-fuc-hero span{font-size:7px;font-weight:950;color:#36739a}.engineering-fuc-hero h3{margin:3px 0;font-size:16px;color:#173e56}.engineering-fuc-hero p{margin:0;font-size:8px;color:#6c818f}.engineering-fuc-evidence-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:10px 0}.engineering-fuc-evidence-grid article{border:1px solid #e0e8ed;border-radius:8px;padding:8px}.engineering-fuc-evidence-grid span{display:block;font-size:6.7px;font-weight:900;color:#728491}.engineering-fuc-evidence-grid b{display:block;margin-top:3px;font-size:8.4px;color:#20455c;word-break:break-word}.engineering-fuc-items{display:grid;gap:6px}.engineering-fuc-item{border:1px solid #dce6ec;border-radius:8px;padding:8px}.engineering-fuc-item.defect{border-color:#efc38e;background:#fffaf2}.engineering-fuc-item-head{display:flex;justify-content:space-between;gap:8px}.engineering-fuc-item b{font-size:8.5px;color:#1a435b}.engineering-fuc-item p{margin:5px 0 0;font-size:7.5px;line-height:1.4;color:#647a88}.engineering-fuc-photo{display:inline-block;margin-top:7px}.engineering-fuc-photo img{max-width:220px;max-height:150px;border-radius:7px;border:1px solid #ccd9e0;object-fit:cover}.engineering-fuc-readonly{margin-top:10px;border:1px dashed #bdced8;border-radius:8px;background:#f7fafc;padding:9px;font-size:7.5px;color:#647b89}.engineering-fuc-readonly b{color:#225c7d;margin-right:7px}.engineering-fuc-admin{border:1px solid #d6e2e8;border-radius:9px;background:#f8fbfc}.engineering-fuc-admin>summary{padding:10px 12px;cursor:pointer;font-size:7.5px;font-weight:950;color:#245e80}.engineering-fuc-admin-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:0 12px 10px}.engineering-fuc-admin label{font-size:7px;font-weight:900;color:#586f7d}.engineering-fuc-admin input,.engineering-fuc-admin textarea{width:100%;margin-top:4px;border:1px solid #c7d6df;border-radius:7px;background:#fff;padding:8px;font-size:8px}.engineering-fuc-admin input[type="checkbox"]{width:auto}.engineering-fuc-json{display:block;padding:0 12px 10px}.engineering-fuc-json textarea{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;line-height:1.45}.engineering-fuc-admin-actions{display:flex;align-items:center;gap:8px;padding:0 12px 12px}.engineering-fuc-admin-actions span{margin-right:auto;font-size:7px;color:#667d8a}
@media(max-width:1100px){.engineering-fuc-layout{grid-template-columns:1fr}.engineering-fuc-evidence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.engineering-fuc-admin-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.engineering-fuc-head{display:block}.engineering-fuc-state{justify-content:flex-start;margin-top:7px}.engineering-fuc-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.engineering-fuc-filters{grid-template-columns:1fr}.engineering-fuc-admin-grid{grid-template-columns:1fr}.engineering-fuc-admin-actions{align-items:stretch;flex-direction:column}.engineering-fuc-admin-actions span{margin-right:0}}

/* R5.5.5.2.28 · First User Check Engineering/OCC visibility hardening */
.vehicle-first-user-check{border-left:4px solid #93a2ad}.vehicle-first-user-check.green{border-left-color:#2c9a52}.vehicle-first-user-check.amber{border-left-color:#d99112}.vehicle-first-user-check.red{border-left-color:#c62d38}.vehicle-first-user-check.grey{border-left-color:#8997a1}.vehicle-fuc-signal{font-style:normal}.vehicle-fuc-signal.green{background:#e5f6e9!important;color:#1f733a!important}.vehicle-fuc-signal.amber{background:#fff2c9!important;color:#7f5d00!important}.vehicle-fuc-signal.red{background:#ffe5e7!important;color:#a91f2a!important}.vehicle-fuc-signal.grey{background:#edf1f4!important;color:#63727d!important}.vehicle-fuc-summary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:center}.vehicle-fuc-summary>div{min-width:0}.vehicle-fuc-summary b{display:block;font-size:10px;color:#173e56}.vehicle-fuc-summary span:not(.pill){display:block;margin-top:3px;font-size:7px;line-height:1.35;color:#607683}.vehicle-fuc-summary small{display:block;margin-top:4px;font-size:6px;color:#7a8a95;overflow-wrap:anywhere}.vehicle-fuc-summary>.pill{justify-self:end;white-space:normal;text-align:center;max-width:170px}
.engineering-fuc-row.safety{box-shadow:inset 4px 0 0 #c62d38;background:#fff7f8}.engineering-fuc-row.defect{box-shadow:inset 4px 0 0 #d99112}.engineering-fuc-row.expired{opacity:.78}.engineering-fuc-row.valid{box-shadow:inset 3px 0 0 #2c9a52}.engineering-fuc-actions{display:flex;align-items:center;gap:9px;margin:10px 0;padding:9px;border:1px solid #dce6ec;border-radius:8px;background:#f8fbfc}.engineering-fuc-actions span{font-size:7px;line-height:1.4;color:#647b89}.engineering-fuc-actions .button{flex:0 0 auto}
@media(max-width:700px){.vehicle-fuc-summary{grid-template-columns:1fr}.vehicle-fuc-summary>.pill{justify-self:start;max-width:none}.engineering-fuc-actions{align-items:stretch;flex-direction:column}.engineering-fuc-actions .button{width:100%}}

/* R5.5.5.2.28.1 · Engineering two-workspace tabs + First User Check submit hotfix */
.engineering-workspace-tabs{display:flex;align-items:center;gap:8px;margin:10px 0 12px;padding:6px;border:1px solid #d4e1e8;border-radius:11px;background:#eef4f8;position:sticky;top:0;z-index:18}.engineering-workspace-tab{display:flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:8px 16px;border:1px solid transparent;border-radius:8px;background:transparent;color:#456276;font-size:8px;font-weight:1000;letter-spacing:.06em;cursor:pointer}.engineering-workspace-tab span{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:20px;padding:0 6px;border-radius:999px;background:#dce7ee;color:#486276;font-size:7px}.engineering-workspace-tab.active{background:#fff;border-color:#c9d8e1;color:#164b70;box-shadow:0 2px 8px rgba(30,70,98,.08)}.engineering-workspace-tab.active span{background:#d9edf9;color:#15577f}.engineering-tab-workspace[hidden],#engineeringFirstUserCheckPanel[hidden]{display:none!important}.engineering-fuc-panel{margin-top:0}.engineering-tab-workspace{display:grid;gap:12px;min-width:0}.engineering-page>.engineering-owner-safeguard{margin-top:12px}@media(max-width:760px){.engineering-workspace-tabs{position:static;display:grid;grid-template-columns:1fr}.engineering-workspace-tab{width:100%;justify-content:space-between}}


/* R5.5.5.2.28.3 · Engineering filters + dual-workspace scrolling hotfix */
.engineering-page{grid-template-rows:auto auto minmax(0,1fr) auto!important;overflow:hidden!important;min-height:0!important}.engineering-tab-workspace,.engineering-fuc-panel{min-height:0!important;overflow:hidden!important;scrollbar-gutter:stable;overscroll-behavior:contain}.engineering-tab-workspace{grid-template-rows:auto auto minmax(0,1fr)!important}.engineering-layout{height:100%;min-height:0!important;overflow:hidden}.engineering-queue-panel,.engineering-detail-panel{height:100%;min-height:0!important;overflow:hidden}.engineering-case-list,.engineering-detail-panel{max-height:none!important;min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important;scrollbar-gutter:stable;overscroll-behavior:contain}.engineering-fuc-panel{grid-template-rows:auto auto auto minmax(0,1fr) auto!important}.engineering-fuc-layout{height:100%;min-height:0!important;overflow:hidden}.engineering-fuc-list,.engineering-fuc-detail{height:100%;min-height:0!important;max-height:none!important;overflow-y:auto!important;overflow-x:hidden!important;scrollbar-gutter:stable;overscroll-behavior:contain}.engineering-fuc-detail{scroll-behavior:smooth}.engineering-filters,.engineering-fuc-filters{display:flex!important;align-items:center;gap:8px;flex-wrap:wrap}.engineering-filters input,.engineering-fuc-filters input{flex:2 1 250px;width:auto!important;min-width:220px}.engineering-filters select,.engineering-fuc-filters select{flex:1 1 145px;min-width:135px;max-width:210px;height:36px}.engineering-fuc-filters .button{flex:0 0 auto;height:36px}.engineering-fuc-row small{line-height:1.4}.engineering-workspace-tabs{flex:0 0 auto}
@media(max-width:1100px){.engineering-page{grid-template-rows:auto auto minmax(0,1fr) auto!important}.engineering-tab-workspace{overflow-y:auto!important}.engineering-layout{height:auto;grid-template-columns:1fr}.engineering-case-list,.engineering-detail-panel{height:auto;max-height:52vh!important}.engineering-fuc-panel{overflow-y:auto!important}.engineering-fuc-layout{height:auto;grid-template-columns:1fr}.engineering-fuc-list,.engineering-fuc-detail{height:auto;max-height:50vh!important}.engineering-filters select,.engineering-fuc-filters select{max-width:none}}
@media(max-width:700px){.engineering-filters,.engineering-fuc-filters{display:grid!important;grid-template-columns:1fr}.engineering-filters input,.engineering-filters select,.engineering-fuc-filters input,.engineering-fuc-filters select,.engineering-fuc-filters .button{width:100%!important;min-width:0;max-width:none}.engineering-page{overflow-y:auto!important;grid-template-rows:auto!important}.engineering-tab-workspace,.engineering-fuc-panel{overflow:visible!important}.engineering-case-list,.engineering-detail-panel,.engineering-fuc-list,.engineering-fuc-detail{max-height:58vh!important}}
@media(max-height:760px) and (min-width:701px){.engineering-page{overflow-y:auto!important;grid-template-rows:auto!important}.engineering-tab-workspace,.engineering-fuc-panel{overflow:visible!important}.engineering-layout,.engineering-fuc-layout{height:auto}.engineering-case-list,.engineering-detail-panel,.engineering-fuc-list,.engineering-fuc-detail{height:auto;max-height:58vh!important}}

/* R5.5.5.4.0 · GTFS Compatibility & Preflight Phase 2 SHADOW */
.gtfs-preflight-block{margin:12px 0;padding:14px;border:1px solid #cbdbe5;border-radius:12px;background:#f8fbfd;min-width:0;overflow:hidden}.gtfs-preflight-head{align-items:flex-start}.gtfs-preflight-head-actions{display:flex;gap:7px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.gtfs-preflight-toolbar{display:flex;align-items:center;gap:8px;margin:10px 0;min-width:0}.gtfs-preflight-identity{margin-right:auto;min-width:0;font-size:7.5px;line-height:1.45;color:#627887;overflow-wrap:anywhere}.gtfs-preflight-pending{margin:8px 0;padding:9px 11px;border:1px solid #e0bd67;border-radius:8px;background:#fff8e2;color:#73580e;font-size:7.5px;line-height:1.45}.gtfs-preflight-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:10px 0}.gtfs-preflight-stat{display:grid;gap:2px;min-width:0;padding:9px;border:1px solid #d9e5ec;border-radius:9px;background:#fff}.gtfs-preflight-stat span{font-size:6.4px;font-weight:950;letter-spacing:.055em;color:#718592}.gtfs-preflight-stat b{font-size:13px;color:#173e56;overflow-wrap:anywhere}.gtfs-preflight-stat small{font-size:6.2px;color:#7a8d99}.gtfs-preflight-change{margin:8px 0;padding:8px 10px;border:1px solid #d9e4ea;border-radius:8px;background:#fff;font-size:7px;line-height:1.45;color:#587180}.gtfs-preflight-table-wrap{max-width:100%;max-height:360px;overflow:auto;border:1px solid #d7e3ea;border-radius:9px;background:#fff;scrollbar-gutter:stable}.gtfs-preflight-table{width:100%;min-width:980px;border-collapse:collapse}.gtfs-preflight-table th{position:sticky;top:0;z-index:2;padding:8px;background:#eaf2f7;border-bottom:1px solid #d3e0e8;text-align:left;font-size:6.3px;letter-spacing:.06em;color:#567083}.gtfs-preflight-table td{padding:8px;border-bottom:1px solid #e6edf1;vertical-align:top;font-size:7px;line-height:1.4;color:#536b7a}.gtfs-preflight-table tr[data-preflight-index]{cursor:pointer}.gtfs-preflight-table tr[data-preflight-index]:hover{background:#f3f8fb}.gtfs-preflight-rule{font-weight:950;color:#214f6c}.gtfs-preflight-action{font-weight:950}.gtfs-preflight-action.block{color:#a7222d}.gtfs-preflight-action.review{color:#8b6500}.gtfs-preflight-action.auto{color:#176a41}.gtfs-preflight-evidence{display:grid;gap:5px;margin-top:9px;padding:10px;border:1px solid #d8e4eb;border-radius:9px;background:#fff;min-width:0}.gtfs-preflight-evidence>b{font-size:6.8px;letter-spacing:.06em;color:#27668d}.gtfs-preflight-evidence>span{font-size:7px;color:#6a7f8d}.gtfs-preflight-evidence pre{max-height:260px;margin:0;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font:7px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace;color:#334e60;background:#f6f9fb;border-radius:7px;padding:9px}.gtfs-preflight-footnote{margin-top:8px;font-size:6.4px;line-height:1.5;color:#728692}.gtfs-preflight-status-pass{background:#e5f6e9!important;color:#1e733a!important}.gtfs-preflight-status-compat{background:#e1f2fb!important;color:#155f89!important}.gtfs-preflight-status-review{background:#fff1c5!important;color:#806000!important}.gtfs-preflight-status-block{background:#ffe4e7!important;color:#a51f2b!important}
@media(max-width:1200px){.gtfs-preflight-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.gtfs-preflight-toolbar{align-items:stretch;flex-direction:column}.gtfs-preflight-toolbar .button{width:100%}.gtfs-preflight-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.gtfs-preflight-head-actions{justify-content:flex-start}.gtfs-preflight-table-wrap{max-height:52vh}}

/* R5.5.5.5.0 Backup & Disaster Recovery health */
.backup-dr-config-block{margin-top:18px;padding:16px;border:1px solid rgba(148,163,184,.34);border-radius:16px;background:rgba(8,18,34,.46)}
.backup-dr-head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.backup-dr-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}
.backup-dr-summary article{min-width:0;padding:12px;border:1px solid rgba(148,163,184,.22);border-radius:12px;background:rgba(15,23,42,.58);display:flex;flex-direction:column;gap:4px}
.backup-dr-summary article span{font-size:10px;letter-spacing:.08em;opacity:.72}.backup-dr-summary article b{font-size:14px;overflow-wrap:anywhere}.backup-dr-summary article small{font-size:11px;opacity:.72;overflow-wrap:anywhere}
.backup-dr-destinations{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:10px}.backup-dr-destination{padding:10px 12px;border-radius:11px;border:1px solid rgba(148,163,184,.25);display:flex;flex-direction:column;gap:2px}.backup-dr-destination.ok{border-color:rgba(34,197,94,.45)}.backup-dr-destination.pending{border-color:rgba(245,158,11,.45);background:rgba(120,53,15,.10)}.backup-dr-destination.bad{border-color:rgba(239,68,68,.45)}.backup-dr-destination b{font-size:11px}.backup-dr-destination span{font-size:12px;opacity:.82}
.backup-dr-message{margin-top:10px;padding:10px 12px;border-radius:10px;background:rgba(2,6,23,.5);font-size:12px;line-height:1.45}.backup-dr-alerts{margin-top:10px;display:grid;gap:8px}.backup-dr-alert{padding:10px 12px;border-left:3px solid #ef4444;background:rgba(127,29,29,.14);border-radius:8px;display:grid;gap:3px}.backup-dr-alert span,.backup-dr-alert small{font-size:11px;opacity:.8}
@media(max-width:1200px){.backup-dr-summary,.backup-dr-destinations{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.backup-dr-summary,.backup-dr-destinations{grid-template-columns:1fr}.backup-dr-head-actions{justify-content:flex-start}}
/* R5.5.5.5.1 GTFS Governance Dashboard + Duty / Block Cards */
.gtfs-governance-block{margin:12px 0;padding:14px;border:1px solid #cbdbe5;border-radius:12px;background:#f8fbfd;min-width:0;overflow:hidden}.gtfs-governance-head{align-items:flex-start}.gtfs-governance-head-actions{display:flex;gap:7px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.gtfs-governance-toolbar{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin:10px 0}.gtfs-governance-toolbar label{min-width:170px}.gtfs-governance-identity{font-size:7.2px;line-height:1.45;color:#627887;overflow-wrap:anywhere}.gtfs-governance-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px;margin:10px 0}.gtfs-governance-stat{display:grid;gap:2px;min-width:0;padding:9px;border:1px solid #d9e5ec;border-radius:9px;background:#fff}.gtfs-governance-stat span{font-size:6.2px;font-weight:950;letter-spacing:.055em;color:#718592}.gtfs-governance-stat b{font-size:12.5px;color:#173e56;overflow-wrap:anywhere}.gtfs-governance-stat small{font-size:6.1px;color:#7a8d99;line-height:1.35}.gtfs-governance-policy{display:flex;gap:7px;align-items:flex-start;margin:8px 0;padding:9px 10px;border:1px solid #bed7e7;border-radius:8px;background:#eef8fd;font-size:7px;line-height:1.45;color:#4e6d7f}.gtfs-governance-policy b{color:#1d658e;white-space:nowrap}.gtfs-governance-section{margin-top:12px;min-width:0}.gtfs-governance-section h4{margin:0;color:#173e56}.gtfs-governance-table-wrap{max-width:100%;max-height:360px;overflow:auto;border:1px solid #d7e3ea;border-radius:9px;background:#fff;scrollbar-gutter:stable}.gtfs-governance-table{width:100%;min-width:940px;border-collapse:collapse}.gtfs-governance-table.blocks{min-width:1120px}.gtfs-governance-table.versions{min-width:860px}.gtfs-governance-table th{position:sticky;top:0;z-index:2;padding:8px;background:#eaf2f7;border-bottom:1px solid #d3e0e8;text-align:left;font-size:6.2px;letter-spacing:.06em;color:#567083}.gtfs-governance-table td{padding:8px;border-bottom:1px solid #e6edf1;vertical-align:top;font-size:7px;line-height:1.4;color:#536b7a}.gtfs-governance-route-main{display:grid;gap:1px}.gtfs-governance-route-main b{font-size:9px;color:#173e56}.gtfs-governance-route-main small{font-size:6.1px;color:#7a8d99}.gtfs-governance-mode{display:inline-flex;padding:3px 6px;border-radius:999px;background:#edf4f8;font-weight:900;font-size:6px;color:#42677d}.gtfs-governance-mode.frequency{background:#fff4d9;color:#7e5e09}.gtfs-governance-mode.mixed{background:#e8f0ff;color:#385ca8}.gtfs-governance-block-status{font-weight:950}.gtfs-governance-block-status.ready{color:#1e733a}.gtfs-governance-block-status.review{color:#9a6e00}.gtfs-governance-actions{display:flex;gap:5px;flex-wrap:wrap}.gtfs-governance-actions .button{padding:5px 7px;font-size:6px;min-height:auto}.gtfs-governance-bands{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}.gtfs-governance-band{display:grid;gap:3px;padding:9px;border:1px solid #d9e5ec;border-radius:9px;background:#fff}.gtfs-governance-band b{font-size:8px;color:#173e56}.gtfs-governance-band span{font-size:6.2px;color:#677e8c;line-height:1.4}.gtfs-governance-footnote{margin-top:9px;font-size:6.4px;line-height:1.5;color:#728692}.gtfs-governance-empty{padding:12px;color:#718592}.gtfs-governance-warning{color:#9a6e00;font-weight:900}.gtfs-governance-pass{color:#1e733a;font-weight:900}.gtfs-governance-blocked{color:#a51f2b;font-weight:900}
@media(max-width:1250px){.gtfs-governance-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.gtfs-governance-bands{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.gtfs-governance-head-actions{justify-content:flex-start}.gtfs-governance-toolbar{align-items:stretch;flex-direction:column}.gtfs-governance-toolbar label,.gtfs-governance-toolbar .button{width:100%;min-width:0}.gtfs-governance-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.gtfs-governance-bands{grid-template-columns:repeat(2,minmax(0,1fr))}.gtfs-governance-table-wrap{max-height:52vh}}

/* R5.5.5.5.2 Controller/OCC Full Control Sheets Phase A */
.gtfs-control-sheets-block{margin:12px 0;padding:12px;border:1px solid #b9d7e7;border-radius:12px;background:#f3f9fc;min-width:0;overflow:hidden}.gtfs-control-sheets-head{align-items:flex-start}.gtfs-control-sheets-badges{display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.gtfs-control-sheets-toolbar{display:flex;align-items:flex-end;gap:7px;flex-wrap:wrap;margin:10px 0}.gtfs-control-sheets-toolbar label{min-width:160px}.gtfs-control-sheets-toolbar .button{min-height:31px}.gtfs-control-sheets-identity{font-size:7px;line-height:1.5;color:#607988;overflow-wrap:anywhere}.gtfs-control-sheets-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px;margin:10px 0}.gtfs-control-sheet-stat{display:grid;gap:2px;padding:8px;border:1px solid #d8e5ec;border-radius:8px;background:#fff;min-width:0}.gtfs-control-sheet-stat span{font-size:6px;font-weight:950;letter-spacing:.055em;color:#718592}.gtfs-control-sheet-stat b{font-size:10.5px;color:#153f59;overflow-wrap:anywhere}.gtfs-control-sheet-stat small{font-size:5.9px;color:#728692;line-height:1.35}.gtfs-control-sheets-frequency{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:8px 0}.gtfs-control-sheet-frequency-card{display:grid;gap:3px;padding:8px;border:1px solid #e2d49c;border-radius:8px;background:#fff8e5}.gtfs-control-sheet-frequency-card b{font-size:8px;color:#6f5608}.gtfs-control-sheet-frequency-card span{font-size:6.2px;color:#7b6c39}.gtfs-control-sheet-frequency-note{grid-column:1/-1;padding:8px;border:1px solid #eadba6;border-radius:8px;background:#fffaf0;font-size:6.4px;line-height:1.45;color:#765f20}.gtfs-control-sheets-pagebar{display:flex;align-items:center;justify-content:center;gap:8px;margin:8px 0}.gtfs-control-sheets-pagebar span{font-size:6.5px;font-weight:950;color:#49677b}.gtfs-control-sheets-pagebar .button{padding:5px 8px;min-height:auto;font-size:6px}.gtfs-control-sheets-matrix-wrap{max-width:100%;overflow:auto;border:1px solid #d0dfe7;border-radius:9px;background:#fff;scrollbar-gutter:stable}.gtfs-control-sheets-matrix{width:100%;min-width:980px;border-collapse:separate;border-spacing:0}.gtfs-control-sheets-matrix th,.gtfs-control-sheets-matrix td{padding:6px;border-right:1px solid #e2e9ed;border-bottom:1px solid #e6edf1;text-align:center;font-size:6.4px;line-height:1.25;white-space:nowrap}.gtfs-control-sheets-matrix thead th{position:sticky;top:0;z-index:4;background:#e7f1f7;color:#365f78;font-weight:950}.gtfs-control-sheets-matrix thead th:first-child{left:0;z-index:6}.gtfs-control-sheets-matrix tbody td:first-child{position:sticky;left:0;z-index:3;text-align:left;background:#f8fbfd;min-width:210px;max-width:260px;white-space:normal}.gtfs-control-stop{display:grid;grid-template-columns:28px minmax(0,1fr);gap:5px;align-items:start}.gtfs-control-stop-seq{font-weight:950;color:#1e5c7d}.gtfs-control-stop-copy{display:grid;gap:1px}.gtfs-control-stop-copy b{font-size:7px;color:#244f68}.gtfs-control-stop-copy small{font-size:5.7px;color:#768b98}.gtfs-control-stop-tags{display:flex;gap:3px;flex-wrap:wrap;margin-top:2px}.gtfs-control-stop-tag{display:inline-flex;padding:2px 4px;border-radius:999px;background:#e8f2f8;color:#38657d;font-size:5.2px;font-weight:900}.gtfs-control-stop-tag.tp{background:#e9f8ec;color:#2f6d3e}.gtfs-control-stop-tag.cp{background:#fff1d9;color:#7b5c14}.gtfs-control-trip-head{display:grid;gap:1px;min-width:85px}.gtfs-control-trip-head b{font-size:7px;color:#173e56}.gtfs-control-trip-head small{font-size:5.4px;color:#6f8491}.gtfs-control-time{font-variant-numeric:tabular-nums;font-weight:850;color:#314e61}.gtfs-control-time.empty{color:#adb9c0}.gtfs-control-sheets-provenance{display:flex;gap:7px;align-items:flex-start;margin-top:8px;padding:9px;border:1px solid #c9dce7;border-radius:8px;background:#edf7fb;font-size:6.3px;line-height:1.5;color:#567080}.gtfs-control-sheets-provenance b{color:#17658d;white-space:nowrap}.gtfs-control-sheets-block:fullscreen{overflow:auto;background:#f5fafc;padding:18px}.gtfs-control-sheets-block:fullscreen .gtfs-control-sheets-matrix-wrap{max-height:calc(100vh - 300px)}
@media(max-width:1180px){.gtfs-control-sheets-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.gtfs-control-sheets-frequency{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:780px){.gtfs-control-sheets-toolbar{align-items:stretch}.gtfs-control-sheets-toolbar label,.gtfs-control-sheets-toolbar .button{width:100%;min-width:0}.gtfs-control-sheets-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.gtfs-control-sheets-frequency{grid-template-columns:1fr}.gtfs-control-sheets-matrix{min-width:760px}}

/* R5.5.5.5.2.1 Control Sheets print/access hotfix */
.control-sheets-page{min-width:0}.control-sheets-page-head{align-items:flex-start}.control-sheets-page-state{display:flex;gap:7px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.control-sheets-page .gtfs-control-sheets-block{margin:0}.gtfs-control-sheets-admin-callout{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;padding:12px;border:1px solid #b9d7e7;border-radius:10px;background:#f3f9fc}.gtfs-control-sheets-admin-callout>div{display:grid;gap:4px;min-width:0}.gtfs-control-sheets-admin-callout b{font-size:8px;color:#174b68}.gtfs-control-sheets-admin-callout span{font-size:6.5px;line-height:1.45;color:#607988}.gtfs-control-sheets-toolbar input[type="date"]{min-width:145px}
@media(max-width:780px){.control-sheets-page-head,.gtfs-control-sheets-admin-callout{align-items:stretch;flex-direction:column}.control-sheets-page-state{justify-content:flex-start}.gtfs-control-sheets-admin-callout .button{width:100%}}

/* R5.5.5.5.3 multimodal GTFS transport-mode presentation. Metadata only; no matching/GPS authority. */
.map-live-tram,.map-live-generic{position:relative;width:100%;height:100%;overflow:visible;pointer-events:auto}
.map-live-tram-shell{position:absolute;left:2px;right:2px;top:5px;bottom:4px;background:var(--map-live-vehicle-colour,#1689c8);color:var(--map-live-vehicle-text,#fff);border:1.5px solid color-mix(in srgb,var(--map-live-vehicle-colour,#1689c8) 68%,#0f2538);border-radius:7px 7px 4px 4px;box-shadow:0 3px 8px rgba(7,29,46,.34),inset 0 0 0 1px rgba(255,255,255,.22)}
.map-live-tram-pantograph{position:absolute;left:50%;top:-7px;width:15px;height:8px;transform:translateX(-50%);border-left:1.5px solid currentColor;border-right:1.5px solid currentColor;clip-path:polygon(0 100%,50% 0,100% 100%);opacity:.9}
.map-live-tram-window-strip{position:absolute;left:5px;right:5px;top:4px;height:7px;border-radius:2px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.88) 0 8px,rgba(15,37,56,.18) 8px 10px);box-shadow:inset 0 0 0 1px rgba(15,37,56,.16)}
.map-live-tram-label{position:absolute;left:4px;right:4px;top:12px;bottom:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--map-bus-label-px,11px)!important;font-weight:1000;line-height:1;color:inherit;text-align:center}
.map-live-tram-wheel{position:absolute;bottom:-4px;width:6px;height:6px;border-radius:50%;background:#142331;border:1px solid #fff;box-shadow:0 1px 2px rgba(0,0,0,.35)}
.map-live-tram-wheel.wheel-a{left:9px}.map-live-tram-wheel.wheel-b{right:9px}
.map-live-tram.is-selected,.map-live-generic.is-selected{z-index:20;filter:drop-shadow(0 0 6px rgba(14,82,125,.95)) drop-shadow(0 0 12px rgba(14,82,125,.5))!important}
.map-live-generic>span{position:absolute;inset:2px;border:1.5px solid #fff;border-radius:7px;background:var(--map-live-vehicle-colour,#64748b);color:var(--map-live-vehicle-text,#fff);display:grid;place-items:center;align-content:center;box-shadow:0 3px 8px rgba(7,29,46,.34);overflow:hidden}
.map-live-generic small{font-size:5px;font-weight:900;line-height:1;opacity:.86}.map-live-generic b{font-size:9px;line-height:1.1;max-width:95%;overflow:hidden;text-overflow:ellipsis}
#liveModeFilterWrap[hidden]{display:none!important}
#liveModeFilterWrap select{min-width:105px}

/* R5.5.5.5.3 — canonical GTFS multimodal transport-mode governance */
.gtfs-transport-modes-block{margin-top:14px;border:1px solid #c9dbe6;border-radius:16px;background:#f8fbfd;padding:14px;box-shadow:0 8px 22px rgba(18,61,86,.06)}
.gtfs-transport-modes-head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.gtfs-transport-modes-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:10px 0}
.gtfs-transport-mode-stat{border:1px solid #d6e3eb;border-radius:10px;background:#fff;padding:9px;min-width:0}
.gtfs-transport-mode-stat span{display:block;font-size:8px;font-weight:900;letter-spacing:.06em;color:#6f8390}
.gtfs-transport-mode-stat b{display:block;font-size:17px;color:#173e56;margin-top:2px;overflow-wrap:anywhere}
.gtfs-transport-mode-stat small{display:block;color:#718693;font-size:8px;margin-top:2px}
.gtfs-transport-modes-policy{display:grid;grid-template-columns:minmax(220px,1fr) minmax(200px,1fr) auto;gap:9px;align-items:end;padding:10px;border:1px solid #d9e5ec;border-radius:10px;background:#fff;margin-bottom:10px}
.gtfs-transport-modes-policy label,.gtfs-transport-override label{display:grid;gap:4px;min-width:0}
.gtfs-transport-modes-policy label>span,.gtfs-transport-override label>span{font-size:8px;font-weight:900;letter-spacing:.05em;color:#647b89}
.gtfs-transport-modes-policy select,.gtfs-transport-override select,.gtfs-transport-override input{width:100%;min-width:0}
.gtfs-transport-modes-table-wrap{overflow:auto;max-height:420px;border:1px solid #d4e1e9;border-radius:10px;background:#fff}
.gtfs-transport-modes-table{width:100%;border-collapse:collapse;min-width:860px;font-size:10px}
.gtfs-transport-modes-table th,.gtfs-transport-modes-table td{padding:7px;border-bottom:1px solid #e1e9ee;text-align:left;vertical-align:top}
.gtfs-transport-modes-table th{position:sticky;top:0;z-index:2;background:#eaf3f8;font-size:8px;letter-spacing:.05em}
.gtfs-transport-modes-table td small{display:block;color:#728793;font-size:8px;margin-top:2px;max-width:260px}
.mode-chip{display:inline-flex;align-items:center;justify-content:center;min-width:52px;border:1px solid #bfd0da;border-radius:999px;padding:3px 7px;font-size:8px;font-weight:900;letter-spacing:.04em;background:#eef5f8;color:#244f67;white-space:nowrap}
.mode-chip.mode-bus{background:#e8f2ff;border-color:#a9c9ec;color:#174f82}.mode-chip.mode-tram{background:#f2eefe;border-color:#c3b3e8;color:#533a91}.mode-chip.mode-rail,.mode-chip.mode-metro{background:#ebf7ef;border-color:#abd4ba;color:#28613c}.mode-chip.mode-unknown{background:#fff4df;border-color:#e8c47c;color:#7a571c}
.gtfs-transport-override{display:grid;grid-template-columns:minmax(240px,1.25fr) minmax(180px,.8fr) minmax(180px,.8fr) minmax(260px,1.5fr) auto;gap:9px;align-items:end;padding:10px;margin-top:10px;border:1px solid #d9e5ec;border-radius:10px;background:#fff}
.gtfs-transport-override>div:first-child{align-self:center}.gtfs-transport-override>div:first-child small{display:block;color:#728793;font-size:8px;margin-top:2px}
.gtfs-transport-override-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.gtfs-transport-modes-message{margin-top:8px;padding:8px 10px;border-radius:8px;background:#edf6fb;color:#365f75;font-size:9px}.gtfs-transport-modes-message.review{background:#fff5df;color:#79571d}.gtfs-transport-modes-message.pass{background:#edf8ef;color:#356843}
.gtfs-governance-table .mode-chip+small{display:block;margin-top:3px;color:#738794;font-size:7px}
@media(max-width:1180px){.gtfs-transport-modes-policy{grid-template-columns:1fr 1fr}.gtfs-transport-modes-policy .button{grid-column:1/-1;justify-self:start}.gtfs-transport-override{grid-template-columns:1fr 1fr}.gtfs-transport-override>div:first-child,.gtfs-transport-override .wide,.gtfs-transport-override-actions{grid-column:1/-1}}
@media(max-width:760px){.gtfs-transport-modes-policy,.gtfs-transport-override{grid-template-columns:1fr}.gtfs-transport-modes-policy>* ,.gtfs-transport-override>*{grid-column:1!important}.gtfs-transport-modes-table-wrap{max-height:360px}}

/* R5.5.5.5.3 main Live AVL mode-specific vehicle presentation. Presentation only. */
.corridor-mode-vehicle{position:relative;display:block;width:100%;height:100%;min-height:38px;color:var(--mode-vehicle-text,#fff);pointer-events:none;filter:drop-shadow(0 5px 8px rgba(15,23,42,.18))}
.corridor-tram-shell,.corridor-generic-vehicle{position:relative;box-sizing:border-box;width:100%;height:100%;min-height:38px;border:1.5px solid color-mix(in srgb,var(--mode-vehicle-colour,#1689c8) 65%,#173247);background:var(--mode-vehicle-colour,#1689c8);color:var(--mode-vehicle-text,#fff);border-radius:9px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.22);overflow:visible}
.corridor-tram-shell{padding:12px 6px 4px}.corridor-tram-pantograph{position:absolute;left:50%;top:-8px;width:25px;height:10px;z-index:3;transform:translateX(-50%);border-left:2px solid var(--mode-vehicle-colour,#1689c8);border-right:2px solid var(--mode-vehicle-colour,#1689c8);clip-path:polygon(0 100%,50% 0,100% 100%)}
.corridor-tram-windows{position:absolute;left:5px;right:5px;top:4px;height:7px;border-radius:2px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.9) 0 12px,rgba(15,37,56,.22) 12px 14px)}
.corridor-mode-copy{position:relative;z-index:2;display:grid;grid-template-columns:auto 1fr;grid-template-areas:"mode id" "metric status";gap:1px 5px;align-items:center;min-width:0;padding:3px 5px}.corridor-tram-shell .corridor-mode-copy{padding:0}
.corridor-mode-copy small{grid-area:mode;font-size:6px;font-weight:1000;letter-spacing:.06em;opacity:.86}.corridor-mode-copy b{grid-area:id;font-size:10px;line-height:1;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.corridor-mode-copy span{grid-area:metric;font-size:7px;font-weight:1000;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.corridor-mode-copy em{grid-area:status;font-style:normal;font-size:6px;font-weight:900;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.corridor-mode-vehicle.is-selected{z-index:12;filter:drop-shadow(0 0 5px rgba(14,82,125,.85)) drop-shadow(0 0 10px rgba(14,82,125,.45))}.mode-vehicle-badges{position:absolute;z-index:5;left:50%;top:-13px;transform:translateX(-50%);display:flex;gap:3px;white-space:nowrap}.corridor-mode-vehicle .tirana-driver-present-dot{position:absolute;z-index:6;right:-5px;top:-5px}
.corridor-mode-vehicle.is-compact .corridor-mode-copy small{font-size:5px}.corridor-mode-vehicle.is-compact .corridor-mode-copy b{font-size:8px}.corridor-mode-vehicle.is-compact .corridor-mode-copy span{font-size:6px}.corridor-mode-vehicle.is-compact .corridor-mode-copy em{font-size:5px}


/* R5.5.5.5.3.2 - selected-city timezone + single-line Live AVL selector lock */
.clock.timezone-error{background:#8f1f2b!important;color:#fff!important;min-width:72px!important}
@media(min-width:1181px){
  .live-page .route-control{display:flex!important;grid-template-columns:none!important;align-items:flex-end!important;gap:7px!important;flex-wrap:nowrap!important;justify-content:flex-start!important;overflow:hidden!important}
  .live-page .route-control .live-refresh-first{flex:0 0 86px!important;width:86px!important;min-width:86px!important;order:0!important}
  .live-page .route-control .route-badge{flex:0 0 50px!important;width:50px!important;min-width:50px!important;order:1!important}
  .live-page .route-control .live-route-field{flex:1 1 360px!important;min-width:260px!important;max-width:430px!important;order:2!important}
  .live-page .route-control .live-mode-field{flex:0 1 130px!important;min-width:105px!important;max-width:145px!important;order:3!important}
  .live-page .route-control .live-direction-field{flex:0 1 250px!important;min-width:185px!important;max-width:260px!important;order:4!important}
  .live-page .route-control .search-control{flex:0 1 190px!important;min-width:145px!important;max-width:210px!important;order:5!important}
  .live-page .route-control .section-button{flex:0 0 110px!important;width:110px!important;min-width:110px!important;order:6!important;padding-left:7px!important;padding-right:7px!important}
  .live-page .route-control label,.live-page .route-control select,.live-page .route-control input{min-width:0!important}
}
@media(min-width:1181px) and (max-width:1350px){
  .live-page .route-control .live-refresh-first{flex-basis:78px!important;width:78px!important;min-width:78px!important}
  .live-page .route-control .route-badge{flex-basis:44px!important;width:44px!important;min-width:44px!important}
  .live-page .route-control .live-route-field{min-width:225px!important;max-width:360px!important}
  .live-page .route-control .live-mode-field{min-width:95px!important;max-width:120px!important}
  .live-page .route-control .live-direction-field{min-width:165px!important;max-width:215px!important}
  .live-page .route-control .search-control{min-width:125px!important;max-width:170px!important}
  .live-page .route-control .section-button{flex-basis:96px!important;width:96px!important;min-width:96px!important}
}

/* R5.5.5.5.4.1 Vehicle Energy Phase B - independent Energy Watch visual channel. */
.vehicle-energy-dot{
  position:absolute;left:50%;top:-12px;transform:translateX(-50%);width:11px;height:11px;border-radius:50%;
  border:2px solid #fff;box-shadow:0 0 0 1.5px rgba(15,23,42,.42),0 1px 4px rgba(15,23,42,.32);
  z-index:46;pointer-events:none;box-sizing:border-box;
}
.vehicle-energy-dot.energy-watch{background:#f59e0b}
.vehicle-energy-dot.energy-critical{background:#dc2626}
.vehicle-energy-dot.energy-missing{background:#64748b}
.tirana-vehicle-marker .angled-tab-bus{position:relative}
/* R5.5.5.5.4.1 historical validator compatibility marker only: .energy-mini-bus-dot{width:7px;height:7px;top:-7px;left:50% */
.tirana-vehicle-marker .energy-mini-bus-dot{width:12px;height:12px;top:-13px;left:50%;z-index:50}
/* R5.5.5.5.4.1 historical validator compatibility marker only: .map-live-energy-dot{top:-7px;left:50%;right:auto */
.map-live-energy-dot{top:-11px;left:50%;right:auto;width:10px;height:10px;z-index:7}
/* Driver presence remains the separate green indicator at the existing right-hand anchor. */
.map-live-driver-present{right:-4px!important;top:-4px!important}
.energy-filter-hidden{display:none!important}
/* AI2.1.5.9.3.8.3: Energy Watch is advisory/highlight-only. Operational AVL markers are never hidden by an energy filter. */
.energy-filter-highlight{box-shadow:0 0 0 3px rgba(21,97,142,.32),0 0 14px rgba(21,97,142,.28)!important;z-index:30!important}
.energy-watch-summary{display:flex;align-items:center;gap:7px;min-width:0;margin:5px 8px 7px;padding:6px 8px;border:1px solid #d8e1e8;border-radius:9px;background:#fff;overflow:visible}
.energy-watch-summary:empty{display:none}
.energy-watch-summary-label{display:flex;align-items:baseline;gap:7px;min-width:0;margin-right:auto}
.energy-watch-summary-label b{font-size:10px;letter-spacing:.08em;color:#173f60;white-space:nowrap}
.energy-watch-summary-label span{font-size:9px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.energy-summary-pill{display:inline-flex;align-items:center;gap:4px;min-height:28px;padding:4px 8px;border:1px solid #d7e0e8;border-radius:999px;background:#f8fafc;color:#334155;font-size:9px;font-weight:800;cursor:pointer}
.energy-summary-pill b{font-size:10px}
.energy-summary-pill.critical{border-color:#fecaca;color:#991b1b;background:#fff7f7}
.energy-summary-pill.watch{border-color:#fde68a;color:#92400e;background:#fffbeb}
.energy-summary-pill.missing{border-color:#cbd5e1;color:#475569;background:#f8fafc}
#energyWatchFilter{height:29px;min-width:132px;max-width:180px;border:1px solid #cbd5e1;border-radius:7px;background:#fff;padding:0 7px;font-size:9px;font-weight:800;color:#334155}
.energy-watch-summary.is-loading,.energy-watch-summary.is-error{font-size:9px;color:#64748b}
.energy-watch-summary.is-error{border-color:#fecaca;color:#991b1b;background:#fff7f7}
.vehicle-energy-status.watch{color:#92400e!important;background:#fffbeb!important;border-color:#fde68a!important}
.vehicle-energy-status.critical{color:#991b1b!important;background:#fff1f2!important;border-color:#fecaca!important}
.vehicle-energy-status.missing{color:#475569!important;background:#f1f5f9!important;border-color:#cbd5e1!important}
.vehicle-energy-summary.phase-b article b{font-variant-numeric:tabular-nums}
@media(max-width:1180px){.energy-watch-summary{flex-wrap:wrap}.energy-watch-summary-label{width:100%;margin-right:0}.energy-watch-summary-label span{white-space:normal}#energyWatchFilter{margin-left:auto}}
@media(max-width:720px){.energy-watch-summary{margin-left:4px;margin-right:4px}.energy-summary-pill{flex:1;justify-content:center}#energyWatchFilter{width:100%;max-width:none;margin-left:0}}

/* R5.5.5.5.4.1.2 Energy Watch clarity: larger independent status dot; all-unconfigured setup state suppresses route-dot noise until first governed configuration. */
.energy-watch-summary.is-setup{border-color:#cbd5e1;background:#fbfdff}
.energy-watch-summary.is-setup .energy-watch-summary-label b{color:#334155}
.energy-watch-summary.is-setup .energy-watch-summary-label span{color:#475569}


/* R5.5.5.5.4.1.6 - TRAM presentation-only redesign.
   Applies only to transport-tram / tram-specific markup. No bus geometry, AVL position, GTFS mode,
   headway, service-state, Energy Watch, instruction, incident, driver-presence or Duty/F authority changes. */
:root[data-avl-marker-style] .corridor-bus.tirana-vehicle-marker.transport-tram:not(.ghost-bus):not(.driver-presence-bus),
:root[data-avl-marker-style] .family-bus.tirana-vehicle-marker.transport-tram:not(.ghost-bus):not(.driver-presence-bus),
:root[data-avl-marker-style] .circular-bus.tirana-vehicle-marker.transport-tram:not(.ghost-bus):not(.driver-presence-bus){
  width:96px!important;min-width:96px!important;max-width:96px!important;height:44px!important;min-height:44px!important;
  padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;clip-path:none!important;
  box-shadow:none!important;color:#173247!important;overflow:visible!important;
}
:root[data-avl-marker-style] .corridor-bus.tirana-vehicle-marker.transport-tram:not(.ghost-bus):not(.driver-presence-bus)::before,
:root[data-avl-marker-style] .corridor-bus.tirana-vehicle-marker.transport-tram:not(.ghost-bus):not(.driver-presence-bus)::after,
:root[data-avl-marker-style] .family-bus.tirana-vehicle-marker.transport-tram:not(.ghost-bus):not(.driver-presence-bus)::before,
:root[data-avl-marker-style] .family-bus.tirana-vehicle-marker.transport-tram:not(.ghost-bus):not(.driver-presence-bus)::after,
:root[data-avl-marker-style] .circular-bus.tirana-vehicle-marker.transport-tram:not(.ghost-bus):not(.driver-presence-bus)::before,
:root[data-avl-marker-style] .circular-bus.tirana-vehicle-marker.transport-tram:not(.ghost-bus):not(.driver-presence-bus)::after{content:none!important;display:none!important}
:root[data-avl-marker-style] .transport-tram .circular-travel-arrow{display:none!important}

.corridor-mode-vehicle.corridor-tram-card{position:relative;display:block;width:96px;height:44px;min-height:44px;color:#173247;pointer-events:none;filter:drop-shadow(0 3px 5px rgba(15,37,56,.22))}
.corridor-tram-card .corridor-tram-shell{position:absolute;inset:0;display:grid;grid-template-columns:51px minmax(0,1fr);align-items:center;gap:2px;padding:2px 4px 2px 2px;box-sizing:border-box;border:1px solid #8fa2af;border-radius:9px;background:linear-gradient(180deg,#fff 0%,#f3f6f8 56%,#e4e9ed 100%);box-shadow:0 2px 5px rgba(24,48,66,.22),inset 0 1px 0 rgba(255,255,255,.95);overflow:visible}
.corridor-tram-card .corridor-tram-shell::after{content:"";position:absolute;left:5px;right:5px;bottom:2px;height:2px;border-radius:2px;background:var(--tram-accent,#1689c8);opacity:.95}
.corridor-tram-visual{display:flex;align-items:center;justify-content:center;width:51px;height:38px;overflow:visible}
.corridor-tram-svg{display:block;width:51px;height:31px;overflow:visible;transform-origin:center;transition:transform .12s ease}
.corridor-tram-card.direction-left .corridor-tram-svg{transform:scaleX(-1)}
.corridor-tram-svg .tram-panto-arm,.map-live-tram-svg .tram-panto-arm{fill:none;stroke:#314655;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}
.corridor-tram-svg .tram-roof,.map-live-tram-svg .tram-roof{fill:none;stroke:#657985;stroke-width:1}
.corridor-tram-svg .tram-body,.map-live-tram-svg .tram-body{fill:#f7fafc;stroke:#2a3e4b;stroke-width:1.15;stroke-linejoin:round}
.corridor-tram-svg .tram-front,.map-live-tram-svg .tram-front{fill:#e8eef2;stroke:#2a3e4b;stroke-width:.85}
.corridor-tram-svg .tram-window,.corridor-tram-svg .tram-front-window,.map-live-tram-svg .tram-window,.map-live-tram-svg .tram-front-window{fill:#176894;stroke:#0c4566;stroke-width:.55}
.corridor-tram-svg .tram-window:nth-of-type(2),.map-live-tram-svg .tram-window:nth-of-type(2){fill:#2b80ad}
.corridor-tram-svg .tram-accent-line,.map-live-tram-svg .tram-accent-line{fill:none;stroke:var(--tram-accent,var(--map-live-vehicle-colour,#1689c8));stroke-width:2.1;stroke-linecap:round}
.corridor-tram-svg .tram-wheel,.map-live-tram-svg .tram-wheel{fill:#263947;stroke:#fff;stroke-width:.8}
.corridor-tram-copy{min-width:0;height:36px;display:grid;grid-template-columns:1fr;grid-template-rows:7px 12px 8px 9px;align-content:center;justify-items:end;gap:0;padding-top:1px;box-sizing:border-box;line-height:1}
.corridor-tram-copy small{font-size:5.4px;font-weight:1000;letter-spacing:.12em;color:#637684;white-space:nowrap}
.corridor-tram-copy b{max-width:100%;font-size:11.5px;font-weight:1000;letter-spacing:-.25px;color:#132f43;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.corridor-tram-copy .corridor-tram-metric{font-size:6.4px;font-weight:900;color:#314f63;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.corridor-tram-copy .corridor-tram-status{max-width:42px;padding:2px 4px;border-radius:4px;background:var(--tram-accent,#1689c8);color:var(--tram-accent-text,#fff);font-style:normal;font-size:5.2px;font-weight:1000;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.corridor-tram-card.is-selected{z-index:35;filter:drop-shadow(0 0 4px rgba(20,92,147,.9)) drop-shadow(0 0 9px rgba(20,92,147,.52))}
.corridor-tram-card.is-selected .corridor-tram-shell{border-color:#1f6eaa;box-shadow:0 0 0 2px rgba(30,111,170,.26),0 3px 8px rgba(24,48,66,.24),inset 0 1px 0 #fff}
.corridor-tram-card .mode-vehicle-badges{top:-15px;z-index:7}.corridor-tram-card .tirana-driver-present-dot{right:-4px!important;top:-4px!important;z-index:8}
.corridor-tram-card .vehicle-energy-dot{top:-11px;left:50%;z-index:9}
.corridor-tram-card.is-compact,.triple-monitor-board .corridor-tram-card{transform:scale(.88);transform-origin:center}

/* Tram map presentation uses the same silver body / blue glazing identity and status accent. */
.map-live-tram{position:relative;width:100%;height:100%;overflow:visible;pointer-events:auto;filter:drop-shadow(0 2px 4px rgba(15,37,56,.24))}
.map-live-tram-shell{position:absolute;left:1px;right:1px;top:1px;bottom:1px;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;color:#173247!important;overflow:visible}
.map-live-tram-svg{position:absolute;left:1px;right:1px;top:-3px;width:calc(100% - 2px);height:calc(100% + 5px);overflow:visible;transform-origin:center}
.map-live-tram.travel-left .map-live-tram-svg{transform:scaleX(-1)}
.map-live-tram-label{position:absolute!important;left:18%!important;right:12%!important;top:39%!important;bottom:auto!important;height:auto!important;display:block!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:calc(var(--map-bus-label-px,11px) * .78)!important;font-weight:1000!important;line-height:1!important;color:#102d42!important;text-align:center!important;text-shadow:0 1px 0 rgba(255,255,255,.85)!important;z-index:3}
.map-live-tram.is-selected{z-index:20;filter:drop-shadow(0 0 5px rgba(14,82,125,.95)) drop-shadow(0 0 10px rgba(14,82,125,.5))!important}
.map-live-tram .map-live-driver-present{z-index:8}.map-live-tram .map-live-energy-dot{z-index:9}.map-live-tram .map-live-alert{z-index:10}

@media(max-width:1180px){
  :root[data-avl-marker-style] .corridor-bus.tirana-vehicle-marker.transport-tram:not(.ghost-bus):not(.driver-presence-bus),
  :root[data-avl-marker-style] .family-bus.tirana-vehicle-marker.transport-tram:not(.ghost-bus):not(.driver-presence-bus){width:88px!important;min-width:88px!important;max-width:88px!important;height:42px!important;min-height:42px!important}
  .corridor-mode-vehicle.corridor-tram-card{width:88px;height:42px;min-height:42px}.corridor-tram-card .corridor-tram-shell{grid-template-columns:47px minmax(0,1fr)}.corridor-tram-visual{width:47px}.corridor-tram-svg{width:47px}
}

/* Inherited multimodal compatibility name retained on the new SVG pantograph. */
.corridor-tram-pantograph{vector-effect:non-scaling-stroke}

/* R5.5.5.5.5.3.1-HFX5.4 Internal Brain Admin API integration */
.brain-admin-toolbar-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.brain-admin-card{grid-column:1/-1;display:grid;gap:12px;border-color:#c7dce9;background:linear-gradient(180deg,#fbfdff 0%,#f5f9fc 100%)}.brain-admin-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding-bottom:10px;border-bottom:1px solid #dce7ee}.brain-admin-head h3{margin:2px 0 4px;color:#123b5a}.brain-admin-head p{margin:0;max-width:900px;color:#627789;font-size:9px;line-height:1.45}.brain-admin-head-pills{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.brain-admin-status-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:7px}.brain-admin-status-grid article{border:1px solid #d8e4eb;border-radius:9px;background:#fff;padding:9px;min-width:0}.brain-admin-status-grid span{display:block;font-size:6px;font-weight:950;letter-spacing:.08em;color:#738799}.brain-admin-status-grid strong{display:block;margin-top:4px;font-size:9px;line-height:1.25;color:#173b59;overflow-wrap:anywhere}.brain-admin-status-grid strong.good{color:#10804b}.brain-admin-status-grid strong.off{color:#718096}.brain-admin-status-grid strong.locked{color:#b21f2d}.brain-admin-readiness{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.brain-admin-readiness article{border:1px solid #dce6ed;border-radius:8px;background:#f8fbfd;padding:8px}.brain-admin-readiness span{display:block;font-size:5.7px;font-weight:950;letter-spacing:.06em;color:#74899a}.brain-admin-readiness b{display:block;margin-top:3px;font-size:8.5px;color:#204964}.brain-admin-safety{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;border:1px solid #b9dfcc;border-radius:9px;background:#f2fbf6;padding:9px 11px}.brain-admin-safety b{font-size:7px;letter-spacing:.08em;color:#147548}.brain-admin-safety span{font-size:7.5px;line-height:1.4;color:#45675a}.brain-admin-test-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:10px}.brain-admin-test-box{border:1px solid #d9e5ed;border-radius:10px;background:#fff;padding:10px;min-width:0;display:grid;gap:9px}.brain-admin-query-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,.28fr) 90px;gap:7px}.brain-admin-query-row label{display:grid;gap:4px}.brain-admin-query-row label>span{font-size:6px;font-weight:950;letter-spacing:.08em;color:#6d8293}.brain-admin-query-row input,.brain-admin-query-row select{height:34px;width:100%;box-sizing:border-box;border:1px solid #cddbe4;border-radius:8px;background:#fff;padding:0 9px;font:inherit;font-size:8px;color:#173b59}.brain-admin-result{min-height:76px;max-height:330px;overflow:auto;border:1px solid #dce6ed;border-radius:9px;background:#f8fbfd;padding:8px;display:grid;align-content:start;gap:7px}.brain-admin-result .probe-empty{font-size:7.5px;color:#75899a;padding:6px}.brain-result-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.brain-result-summary b{font-size:8px;color:#173b59}.brain-result-summary small{font-size:6.5px;color:#6b8091}.brain-result-section{display:grid;gap:5px}.brain-result-section>span{font-size:6px;font-weight:950;letter-spacing:.08em;color:#6f8496}.brain-result-hit{border:1px solid #dce6ed;border-radius:7px;background:#fff;padding:7px;display:grid;gap:3px}.brain-result-hit b{font-size:7.5px;color:#173b59}.brain-result-hit p{margin:0;font-size:7px;line-height:1.4;color:#536b7d;white-space:normal}.brain-result-hit small{font-size:5.9px;color:#7890a1}.brain-eval-row{display:grid;grid-template-columns:62px minmax(0,1fr) 70px;gap:7px;align-items:center;border-bottom:1px solid #e6edf2;padding:5px 0}.brain-eval-row:last-child{border-bottom:0}.brain-eval-row b{font-size:6.5px}.brain-eval-row span{font-size:6.5px;color:#456075}.brain-eval-row small{font-size:5.8px;text-align:right;color:#71869a}.brain-admin-memory-head{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid #e2eaf0;padding-top:8px}.brain-admin-memory-head h3{font-size:9px;margin:2px 0}.brain-memory-result{max-height:220px}.brain-admin-card .section-head h3{font-size:10px}.brain-admin-card .section-head p{font-size:7px;line-height:1.4}@media(max-width:1280px){.brain-admin-status-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.brain-admin-readiness{grid-template-columns:repeat(4,minmax(0,1fr))}.brain-admin-test-grid{grid-template-columns:1fr}}@media(max-width:760px){.brain-admin-toolbar-actions{justify-content:flex-start}.brain-admin-head{display:grid}.brain-admin-head-pills{justify-content:flex-start}.brain-admin-status-grid,.brain-admin-readiness{grid-template-columns:repeat(2,minmax(0,1fr))}.brain-admin-query-row{grid-template-columns:1fr}.brain-admin-safety{grid-template-columns:1fr}}

.brain-maintenance-card{border:1px solid #c8dbe7;border-radius:10px;background:#f8fbfd;padding:10px 11px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;align-items:center}.brain-maintenance-copy h3{margin:2px 0 3px;font-size:9px;color:#173b59}.brain-maintenance-copy p{margin:0;font-size:7px;line-height:1.4;color:#60788a}.brain-maintenance-actions{display:flex;gap:7px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.brain-maintenance-result{grid-column:1/-1;border-top:1px solid #e0e9ef;padding-top:7px;font-size:7px;line-height:1.4;color:#60788a}.brain-maintenance-result.good{color:#0f7c48}.brain-maintenance-result.error{color:#b21f2d}.brain-maintenance-result.working{color:#9b6800}@media(max-width:900px){.brain-maintenance-card{grid-template-columns:1fr}.brain-maintenance-actions{justify-content:flex-start}}

/* R5.5.5.5.5.3.1-HFX5.6 Internal Brain Live Service Intelligence context admission */
.brain-live-context-card{border:1px solid #c6dbe8;border-radius:10px;background:#fff;padding:10px 11px;display:grid;gap:9px}.brain-live-context-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.brain-live-context-head h3{margin:2px 0 3px;font-size:10px;color:#123b5a}.brain-live-context-head p{margin:0;font-size:7px;line-height:1.4;color:#60788a;max-width:850px}.brain-live-context-controls{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.brain-live-context-controls select{min-width:200px;height:34px;border:1px solid #cbdbe5;border-radius:8px;background:#fff;padding:0 8px;font-size:8px;color:#173b59}.brain-live-context-result{border:1px solid #dbe6ed;border-radius:9px;background:#f8fbfd;padding:9px;display:grid;gap:8px;min-height:70px}.brain-context-summary{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.brain-context-summary>div:first-child{display:grid;gap:2px}.brain-context-summary span{font-size:6px;font-weight:950;letter-spacing:.07em;color:#6f8496}.brain-context-summary b{font-size:10px;color:#153e5c}.brain-context-summary small{font-size:6.7px;color:#678092}.brain-context-state{border:1px solid #d4e0e7;border-radius:8px;background:#fff;padding:6px 8px;text-align:right;display:grid;gap:2px}.brain-context-state.pass{border-color:#b9dfcc;background:#f2fbf6}.brain-context-state.block{border-color:#edc7cb;background:#fff7f7}.brain-context-state b{font-size:7px}.brain-context-state.pass b{color:#0e7a47}.brain-context-state.block b{color:#b21f2d}.brain-context-metrics,.brain-context-candidate-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px}.brain-context-metrics article,.brain-context-candidate-grid article{border:1px solid #dbe6ed;border-radius:7px;background:#fff;padding:6px;min-width:0}.brain-context-metrics span,.brain-context-candidate-grid span{display:block;font-size:5.5px;font-weight:950;letter-spacing:.05em;color:#74899a}.brain-context-metrics strong,.brain-context-candidate-grid strong{display:block;margin-top:2px;font-size:7.5px;color:#173b59;overflow-wrap:anywhere}.brain-context-capacity,.brain-context-directions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.brain-context-capacity article,.brain-context-directions article{border:1px solid #dbe6ed;border-radius:8px;background:#fff;padding:7px;display:grid;gap:3px}.brain-context-capacity b,.brain-context-directions b{font-size:7.5px;color:#173b59}.brain-context-capacity span,.brain-context-directions span{font-size:6.4px;color:#5c7486}.brain-context-advisory{border-left:4px solid #7490a4;border-radius:7px;background:#f2f7fa;padding:8px;display:grid;gap:3px}.brain-context-advisory.watch{border-left-color:#d68a00;background:#fff9ec}.brain-context-advisory.monitor{border-left-color:#3d7bb0;background:#f3f8fd}.brain-context-advisory.data_thin{border-left-color:#8a97a2}.brain-context-advisory span{font-size:5.8px;font-weight:950;letter-spacing:.07em;color:#6a8091}.brain-context-advisory b{font-size:8px;color:#183f5d}.brain-context-advisory p{margin:0;font-size:6.7px;line-height:1.4;color:#536d80}.brain-context-candidate{border:1px solid #c7dce9;border-radius:8px;background:#fff;padding:8px;display:grid;gap:7px}.brain-context-candidate>div:first-child{display:grid;gap:2px}.brain-context-candidate>div:first-child span{font-size:5.8px;font-weight:950;letter-spacing:.07em;color:#6c8294}.brain-context-candidate>div:first-child b{font-size:8.5px;color:#123b5a}.brain-context-candidate p{margin:0;font-size:6.7px;color:#536d80;line-height:1.4}.brain-context-none{border:1px dashed #cfdce4;border-radius:8px;padding:8px;background:#fbfdfe;display:grid;gap:3px}.brain-context-none b{font-size:7px;color:#60788a}.brain-context-none span{font-size:6.5px;color:#768b9b}.brain-context-warning{border:1px solid #efd59c;border-radius:7px;background:#fff9ed;color:#8a6106;padding:6px 8px;font-size:6.4px}.brain-context-safety{border:1px solid #b8dfca;border-radius:8px;background:#f1fbf5;padding:7px 8px;display:grid;gap:2px}.brain-context-safety b{font-size:6.2px;letter-spacing:.06em;color:#0d7946}.brain-context-safety span{font-size:6.2px;color:#4f7060}.brain-live-drawer-card{border:1px solid #c4dce9;border-radius:10px;background:linear-gradient(180deg,#f9fdff,#f2f9fc);padding:10px;display:grid;gap:8px}.brain-live-drawer-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.brain-live-drawer-head>div{display:grid;gap:2px}.brain-live-drawer-head span{font-size:6px;font-weight:950;letter-spacing:.08em;color:#52748a}.brain-live-drawer-head b{font-size:10px;color:#123b5a}.brain-live-drawer-result{display:grid;gap:7px;max-height:360px;overflow:auto}.brain-live-drawer-result .brain-context-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.brain-live-drawer-result .brain-context-candidate-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.brain-live-drawer-result .brain-context-summary b{font-size:9px}.ai-further-advice-label{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:2px;padding:6px 2px 2px;border-top:1px solid #dce7ed}.ai-further-advice-label span{font-size:6px;font-weight:950;letter-spacing:.08em;color:#6c8192}.ai-further-advice-label small{font-size:6px;color:#8193a1}@media(max-width:1050px){.brain-live-context-head{display:grid}.brain-live-context-controls{justify-content:flex-start}.brain-context-metrics,.brain-context-candidate-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.brain-context-capacity,.brain-context-directions{grid-template-columns:1fr}}@media(max-width:680px){.brain-live-context-controls{display:grid}.brain-live-context-controls select{min-width:0;width:100%}.brain-context-summary{display:grid}.brain-context-state{text-align:left}.brain-context-metrics,.brain-context-candidate-grid,.brain-live-drawer-result .brain-context-metrics,.brain-live-drawer-result .brain-context-candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* R5.5.5.5.5.3.1-HFX5.6.1 - Live AVL responsive auto-fit / route diagram containment.
   Presentation only: preserves GTFS/GTFS-RT positions, predictive evidence, Brain SHADOW,
   Controller Instruction authority, vehicle order and route geometry. */
:root{
  --live-avl-axis-left-gutter-px:clamp(14px,1.2vw,22px);
  --live-avl-axis-right-gutter-px:clamp(22px,1.8vw,30px);
  --live-avl-compact-axis-left-gutter-px:clamp(10px,1vw,16px);
  --live-avl-compact-axis-right-gutter-px:clamp(18px,1.5vw,24px);
}
.app-shell,.main,.workspace,.page,.live-page,.ops-toolbar,.route-control,.ops-kpis,
.avl-board,.distance-avl,.distance-avl-body,.corridor-lane,.corridor-track,
.live-bottom-dock,.live-lower-shell,.live-lower-toolbar,.live-lower-tabs,.live-lower-actions{
  min-width:0;max-width:100%;box-sizing:border-box;
}
.main,.workspace,.page,.live-page,.avl-board,.distance-avl,.distance-avl-body{overflow-x:hidden!important}
.distance-avl.standard-route .corridor-track,
.distance-avl.family-loop-avl .corridor-track{
  margin-left:var(--live-avl-axis-left-gutter-px)!important;
  margin-right:var(--live-avl-axis-right-gutter-px)!important;
}
.distance-avl.standard-route .corridor-guide-layer{
  left:calc(var(--avl-direction-panel-width-px,122px) + var(--live-avl-axis-left-gutter-px))!important;
  right:calc(12px + var(--live-avl-axis-right-gutter-px))!important;
}
.corridor-stop.edge-left .corridor-stop-copy{
  left:50%!important;right:auto!important;transform:none!important;text-align:left!important;
  transform-origin:left center!important;
}
.corridor-stop.edge-right .corridor-stop-copy{
  left:auto!important;right:50%!important;transform:none!important;text-align:right!important;
  transform-origin:right center!important;
}
.triple-monitor-board .distance-avl.standard-route .corridor-track,
.triple-monitor-board .distance-avl.family-loop-avl .corridor-track{
  margin-left:var(--live-avl-compact-axis-left-gutter-px)!important;
  margin-right:var(--live-avl-compact-axis-right-gutter-px)!important;
}
.triple-monitor-board .distance-avl.standard-route .corridor-guide-layer{
  left:calc(var(--avl-compact-direction-panel-width-px,108px) + var(--live-avl-compact-axis-left-gutter-px))!important;
  right:calc(12px + var(--live-avl-compact-axis-right-gutter-px))!important;
}
.triple-monitor-board .corridor-stop.edge-left .corridor-stop-copy{
  left:50%!important;right:auto!important;transform:scale(.9)!important;text-align:left!important;transform-origin:left center!important;
}
.triple-monitor-board .corridor-stop.edge-right .corridor-stop-copy{
  left:auto!important;right:50%!important;transform:scale(.9)!important;text-align:right!important;transform-origin:right center!important;
}
:root[data-direction-labels="hide"] .distance-avl.standard-route .corridor-guide-layer{
  left:var(--live-avl-axis-left-gutter-px)!important;
}
:root[data-direction-labels="hide"] .triple-monitor-board .distance-avl.standard-route .corridor-guide-layer{
  left:var(--live-avl-compact-axis-left-gutter-px)!important;
}
.live-page .route-control>*{min-width:0;max-width:100%}
.live-page .route-control label,.live-page .route-control select,.live-page .route-control input{max-width:100%}
.live-lower-toolbar{overflow-x:auto;overflow-y:hidden;scrollbar-gutter:stable}
.live-lower-tabs,.live-lower-actions{flex:0 0 auto}
@media(max-width:1500px) and (min-width:1181px){
  :root{--live-avl-axis-right-gutter-px:clamp(20px,1.7vw,26px)}
  .live-page .route-control{gap:5px!important;padding-left:6px!important;padding-right:6px!important}
}
@media(max-width:1180px){
  :root{
    --live-avl-axis-left-gutter-px:12px;
    --live-avl-axis-right-gutter-px:22px;
    --live-avl-compact-axis-left-gutter-px:8px;
    --live-avl-compact-axis-right-gutter-px:18px;
  }
  .ops-toolbar{min-width:0!important;grid-template-columns:minmax(0,1fr)!important}
  .route-control{min-width:0!important;max-width:100%!important}
  .live-page .route-control>*{min-width:0!important}
}
@media(max-width:820px){
  .main,.workspace,.page,.live-page{width:100%;max-width:100%;overflow-x:hidden!important}
  .avl-board{width:100%;max-width:100%}
}



/* HFX5.6.1.2 - TRUE LIVE AVL ROUTE AXIS AUTO-FIT
   Presentation only. The route rail now has a physically bounded inner axis inside the visible
   corridor track. GTFS/GTFS-RT corridor percentages remain unchanged; 0..100% is rendered
   against the visible axis instead of relying on outer-track intrinsic sizing. */
.distance-avl.standard-route .corridor-track,
.distance-avl.family-loop-avl .corridor-track{
  position:relative!important;
  min-width:0!important;
  width:100%!important;
  max-width:100%!important;
  margin-left:0!important;
  margin-right:0!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
}
.distance-avl.standard-route .corridor-axis,
.distance-avl.family-loop-avl .corridor-axis{
  position:absolute;
  top:0;bottom:0;
  left:var(--live-avl-axis-left-gutter-px);
  right:var(--live-avl-axis-right-gutter-px);
  min-width:0;
  max-width:100%;
  box-sizing:border-box;
}
.triple-monitor-board .distance-avl.standard-route .corridor-axis,
.triple-monitor-board .distance-avl.family-loop-avl .corridor-axis{
  left:var(--live-avl-compact-axis-left-gutter-px);
  right:var(--live-avl-compact-axis-right-gutter-px);
}
:root[data-direction-labels="hide"] .distance-avl.standard-route .corridor-axis,
:root[data-direction-labels="hide"] .distance-avl.family-loop-avl .corridor-axis{
  left:var(--live-avl-axis-left-gutter-px);
}
:root[data-direction-labels="hide"] .triple-monitor-board .distance-avl.standard-route .corridor-axis,
:root[data-direction-labels="hide"] .triple-monitor-board .distance-avl.family-loop-avl .corridor-axis{
  left:var(--live-avl-compact-axis-left-gutter-px);
}
.distance-avl.standard-route .corridor-lane,
.distance-avl.family-loop-avl .corridor-lane{
  min-width:0!important;
  width:100%!important;
  max-width:100%!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
}
.distance-avl.standard-route .duty-stand-layer{
  left:calc(var(--avl-direction-panel-width-px,122px) + var(--live-avl-axis-left-gutter-px))!important;
  right:calc(12px + var(--live-avl-axis-right-gutter-px))!important;
}
.triple-monitor-board .distance-avl.standard-route .duty-stand-layer{
  left:calc(var(--avl-compact-direction-panel-width-px,108px) + var(--live-avl-compact-axis-left-gutter-px))!important;
  right:calc(12px + var(--live-avl-compact-axis-right-gutter-px))!important;
}
:root[data-direction-labels="hide"] .distance-avl.standard-route .duty-stand-layer{
  left:var(--live-avl-axis-left-gutter-px)!important;
}
:root[data-direction-labels="hide"] .triple-monitor-board .distance-avl.standard-route .duty-stand-layer{
  left:var(--live-avl-compact-axis-left-gutter-px)!important;
}

/* R5.5.5.5.5.3.1-HFX5.6.1.3 - COMPACT IN/OUT ROUTE LABELS + LEFT AXIS RECLAIM
   Presentation only. Replaces the wide standard-route INBOUND/OUTBOUND cards with compact
   IN/OUT pills and gives the recovered width directly to the existing bounded route axis.
   GTFS percentages, stop pairing, vehicles, ghost trips, duty overlays and all operational
   authorities are unchanged. */
:root{
  --live-avl-direction-badge-column-px:34px;
  --live-avl-direction-badge-size-px:28px;
  --live-avl-compact-direction-badge-column-px:30px;
  --live-avl-compact-direction-badge-size-px:24px;
}
.distance-avl.standard-route .corridor-lane{
  grid-template-columns:var(--live-avl-direction-badge-column-px) minmax(0,1fr)!important;
}
.distance-avl.standard-route .corridor-dir{
  align-self:center!important;
  justify-self:center!important;
  width:var(--live-avl-direction-badge-size-px)!important;
  height:20px!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
  border-radius:5px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-shadow:none!important;
  overflow:hidden!important;
  transform:translateY(var(--avl-inbound-lane-shift-pct,0%));
}
.distance-avl.standard-route .corridor-lane.outbound .corridor-dir{
  transform:translateY(var(--avl-outbound-lane-shift-pct,0%));
}
.distance-avl.standard-route .corridor-dir>b{
  display:none!important;
}
.distance-avl.standard-route .corridor-dir>span,
.distance-avl.standard-route .corridor-dir>.corridor-dir-traffic{
  display:none!important;
}
.distance-avl.standard-route .corridor-dir::before{
  display:block;
  font-size:7px;
  line-height:1;
  font-weight:950;
  letter-spacing:.08em;
  color:#fff;
}
.distance-avl.standard-route .corridor-lane.inbound .corridor-dir::before{content:"IN"}
.distance-avl.standard-route .corridor-lane.outbound .corridor-dir::before{content:"OUT"}
.distance-avl.standard-route .corridor-guide-layer{
  left:calc(var(--live-avl-direction-badge-column-px) + var(--live-avl-axis-left-gutter-px))!important;
}
.distance-avl.standard-route .duty-stand-layer{
  left:calc(var(--live-avl-direction-badge-column-px) + var(--live-avl-axis-left-gutter-px))!important;
}
.triple-monitor-board .distance-avl.standard-route .corridor-lane{
  grid-template-columns:var(--live-avl-compact-direction-badge-column-px) minmax(0,1fr)!important;
}
.triple-monitor-board .distance-avl.standard-route .corridor-dir{
  width:var(--live-avl-compact-direction-badge-size-px)!important;
  height:18px!important;
}
.triple-monitor-board .distance-avl.standard-route .corridor-guide-layer{
  left:calc(var(--live-avl-compact-direction-badge-column-px) + var(--live-avl-compact-axis-left-gutter-px))!important;
}
.triple-monitor-board .distance-avl.standard-route .duty-stand-layer{
  left:calc(var(--live-avl-compact-direction-badge-column-px) + var(--live-avl-compact-axis-left-gutter-px))!important;
}
/* Preserve the existing Admin direction-label hide authority. */
:root[data-direction-labels="hide"] .distance-avl.standard-route .corridor-lane,
:root[data-direction-labels="hide"] .triple-monitor-board .distance-avl.standard-route .corridor-lane{
  grid-template-columns:0 minmax(0,1fr)!important;
}
:root[data-direction-labels="hide"] .distance-avl.standard-route .corridor-dir{display:none!important}
:root[data-direction-labels="hide"] .distance-avl.standard-route .corridor-guide-layer{
  left:var(--live-avl-axis-left-gutter-px)!important;
}
:root[data-direction-labels="hide"] .triple-monitor-board .distance-avl.standard-route .corridor-guide-layer{
  left:var(--live-avl-compact-axis-left-gutter-px)!important;
}
:root[data-direction-labels="hide"] .distance-avl.standard-route .duty-stand-layer{
  left:var(--live-avl-axis-left-gutter-px)!important;
}
:root[data-direction-labels="hide"] .triple-monitor-board .distance-avl.standard-route .duty-stand-layer{
  left:var(--live-avl-compact-axis-left-gutter-px)!important;
}

/* R5.5.5.5.5.3.1-B2 · Internal Brain predictive SHADOW calibration. */
.brain-calibration-card{border-color:#bcd8e8;background:linear-gradient(180deg,#fbfeff 0%,#f6fbfe 100%)}
.brain-calibration-controls #brainCalibrationRoute{min-width:220px}
.brain-calibration-controls #brainCalibrationSampleMinutes{min-width:118px}
.brain-calibration-horizons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.brain-calibration-horizons article{border:1px solid #d8e5ed;border-radius:8px;background:#fff;padding:7px;display:grid;gap:3px;min-width:0}
.brain-calibration-horizons b{font-size:7px;color:#153f5d}
.brain-calibration-horizons span{font-size:6.4px;color:#526f83}
.brain-calibration-horizons small{font-size:5.9px;color:#74899a}
.brain-context-metrics strong.good{color:#0e7a47}
.brain-context-metrics strong.off{color:#9a6500}
.brain-context-metrics strong.locked{color:#b21f2d}
@media(max-width:1050px){.brain-calibration-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(110px,.35fr);justify-content:stretch}.brain-calibration-controls #brainCalibrationRoute,.brain-calibration-controls #brainCalibrationSampleMinutes{min-width:0;width:100%}.brain-calibration-horizons{grid-template-columns:1fr}}
@media(max-width:680px){.brain-calibration-controls{grid-template-columns:1fr}}

/* WSA1 - WORKER SEPARATION FOUNDATION A: ADMIN SERVICE HEALTH ONLY. No operational layout or route logic changes. */
.worker-service-health-panel{min-width:0;overflow:auto}.worker-foundation-banner{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 12px;padding:10px 12px;border:1px solid #bfdbfe;border-radius:12px;background:#eff6ff;color:#0f3d63}.worker-foundation-banner b{font-size:11px;letter-spacing:.08em}.worker-foundation-banner span{font-size:12px}.worker-service-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}.worker-service-cards>div{min-width:0;padding:12px;border:1px solid #dbe5ef;border-radius:12px;background:#fff}.worker-service-cards span{display:block;font-size:10px;font-weight:800;letter-spacing:.08em;color:#6b8298}.worker-service-cards b{display:block;margin-top:4px;font-size:17px;color:#0b3557}.worker-service-cards small{display:block;margin-top:4px;color:#6b8298;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.worker-service-table-panel,.worker-feature-flags-panel{margin-bottom:12px}.worker-service-table-wrap{max-width:100%;overflow:auto}.worker-service-table{width:100%;border-collapse:collapse;min-width:760px}.worker-service-table th,.worker-service-table td{padding:10px 9px;border-bottom:1px solid #e8eef4;text-align:left;font-size:11px}.worker-service-table th{font-size:9px;letter-spacing:.08em;color:#6b8298}.worker-service-status{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:9px;font-weight:900}.worker-service-status.healthy{background:#dcfce7;color:#166534}.worker-service-status.shadow{background:#e0e7ff;color:#3730a3}.worker-service-status.disabled{background:#f1f5f9;color:#64748b}.worker-service-status.degraded{background:#fee2e2;color:#991b1b}.worker-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.worker-feature-grid>div{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:8px 10px;border:1px solid #e6edf4;border-radius:9px;font-size:10px}.worker-feature-grid span{min-width:0;overflow:hidden;text-overflow:ellipsis}.worker-feature-grid b{font-size:9px}.worker-feature-grid b.off{color:#64748b}.worker-feature-grid b.on{color:#b45309}@media(max-width:1100px){.worker-service-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.worker-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.worker-service-cards,.worker-feature-grid{grid-template-columns:1fr}}

/* B2-WSA1-B0 - ONE SHADOW JOB ONLY: archive preflight UI; no Live AVL layout changes. */
.worker-archive-preflight-panel{margin-bottom:12px}.worker-archive-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:10px 0}.worker-archive-grid>div{min-width:0;padding:10px;border:1px solid #dbe5ef;border-radius:10px;background:#f8fbfe}.worker-archive-grid span{display:block;font-size:9px;font-weight:900;letter-spacing:.08em;color:#6b8298}.worker-archive-grid b{display:block;margin-top:4px;font-size:13px;color:#0b3557;overflow:hidden;text-overflow:ellipsis}.worker-archive-grid select{display:block;width:100%;margin-top:4px;min-height:30px;border:1px solid #c9d8e6;border-radius:8px;background:#fff;color:#0b3557;font:800 12px/1.2 inherit;padding:5px 7px}.worker-service-status.shadow{background:#e0e7ff;color:#3730a3}@media(max-width:850px){.worker-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.worker-archive-grid{grid-template-columns:1fr}}


/* ===== B2-WSA1-WSB1-HFX1 - UNIFIED SERVICE INTELLIGENCE DRAWER ===== */
.service-intelligence-backdrop{background:rgba(4,20,35,.34);backdrop-filter:blur(1.5px)}
.service-intelligence-drawer{width:min(690px,96vw);background:linear-gradient(180deg,#f8fcff 0%,#f3f8fb 52%,#f7fafc 100%);border:1px solid rgba(190,216,232,.95);box-shadow:-24px 0 60px rgba(5,28,48,.24),0 10px 32px rgba(9,45,72,.11)}
.service-intelligence-head{padding:15px 16px;background:linear-gradient(115deg,#092c4d 0%,#0e4269 54%,#126684 100%);border-bottom:3px solid #27c3d8;box-shadow:inset 0 -1px rgba(255,255,255,.15)}
.service-intelligence-head:before{content:'';position:absolute;right:78px;top:-44px;width:180px;height:110px;border-radius:50%;background:radial-gradient(circle,rgba(80,223,240,.22),rgba(80,223,240,0) 70%);pointer-events:none}
.service-intelligence-head{position:relative;overflow:hidden}.service-intelligence-head h3{font-size:19px;letter-spacing:.01em}.service-intelligence-head .eyebrow{font-size:7px;letter-spacing:.16em;color:#bfeaf2}.service-intelligence-head .pill{font-size:7px;padding:6px 9px}
.service-intelligence-body{padding:14px;display:grid;gap:12px;align-content:start;scrollbar-width:thin}
.service-intelligence-overview,.service-intelligence-section{border:1px solid #cfe0ea;border-radius:13px;background:rgba(255,255,255,.96);box-shadow:0 4px 18px rgba(16,57,84,.055);padding:12px}
.service-intelligence-overview{display:grid;gap:9px;background:linear-gradient(135deg,#ffffff,#f0f9fd)}
.service-intelligence-context-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:8px}.service-intelligence-context-grid article{border:1px solid #d7e6ee;border-radius:9px;background:#fff;padding:9px 10px}.service-intelligence-context-grid span{display:block;font-size:6.5px;letter-spacing:.12em;font-weight:950;color:#6a8395}.service-intelligence-context-grid b{display:block;margin-top:4px;font-size:10px;color:#123b59}
.service-intelligence-section{display:grid;gap:10px;position:relative;overflow:hidden}.service-intelligence-section:before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:#2f87b5}.service-intelligence-section.deterministic-layer:before{background:#27a85c}.service-intelligence-section.brain-layer:before{background:#2f87b5}.service-intelligence-section.ai-layer:before{background:#7d62d5}
.service-intelligence-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding-left:3px}.service-intelligence-section-head>div{display:grid;gap:2px}.service-intelligence-section-head span{font-size:7px;letter-spacing:.13em;font-weight:1000;color:#617b8e}.service-intelligence-section-head b{font-size:12px;color:#123b59}.service-intelligence-section-head small{font-size:7.5px;color:#7a909f;text-align:right}
.service-intelligence-drawer .source-state.mini{border-radius:9px}.service-intelligence-drawer .source-state.mini b{font-size:9px}.service-intelligence-drawer .source-state.mini small{font-size:7.5px}
.service-intelligence-drawer .control-intelligence-content{gap:10px}.service-intelligence-drawer .control-decision{padding:13px;border-radius:11px}.service-intelligence-drawer .control-decision-top span,.service-intelligence-drawer .control-decision-top b{font-size:7.5px}.service-intelligence-drawer .control-decision h4{font-size:16px;margin-bottom:7px}.service-intelligence-drawer .control-decision p{font-size:10.5px;line-height:1.55}.service-intelligence-drawer .control-action-grid{gap:9px}.service-intelligence-drawer .control-action-grid article{padding:11px}.service-intelligence-drawer .control-action-grid span{font-size:7px}.service-intelligence-drawer .control-action-grid b{font-size:10.5px;line-height:1.5}.service-intelligence-drawer .control-evidence{padding:11px}.service-intelligence-drawer .control-section-title span,.service-intelligence-drawer .control-section-title b{font-size:7px}.service-intelligence-drawer .control-evidence li{font-size:9px;line-height:1.45}.service-intelligence-drawer .control-safety{padding:10px}.service-intelligence-drawer .control-safety b{font-size:7px}.service-intelligence-drawer .control-safety span{font-size:8.5px;line-height:1.45}.service-intelligence-drawer .control-secondary-head span{font-size:7px}.service-intelligence-drawer .control-secondary-head small{font-size:7px}.service-intelligence-drawer .attention-item b{font-size:9px}.service-intelligence-drawer .attention-item span{font-size:8px;line-height:1.4}
.service-intelligence-drawer .control-dwell-grid article{padding:8px}.service-intelligence-drawer .control-dwell-grid span{font-size:6.5px}.service-intelligence-drawer .control-dwell-grid b{font-size:9px}.service-intelligence-drawer .control-dwell-advisory p{font-size:8.5px;line-height:1.45}.service-intelligence-drawer .control-dwell-advisory small{font-size:7.5px}
.service-intelligence-drawer .brain-live-drawer-card{padding:12px;border-radius:11px;background:linear-gradient(150deg,#fbfeff,#eef8fc)}.service-intelligence-drawer .brain-live-drawer-head span{font-size:7px}.service-intelligence-drawer .brain-live-drawer-head b{font-size:12px}.service-intelligence-drawer .brain-live-drawer-result{max-height:none;overflow:visible}.service-intelligence-drawer .brain-context-summary span{font-size:6.5px}.service-intelligence-drawer .brain-context-summary b{font-size:10.5px}.service-intelligence-drawer .brain-context-summary small{font-size:7px}.service-intelligence-drawer .brain-context-metrics span,.service-intelligence-drawer .brain-context-candidate-grid span{font-size:6px}.service-intelligence-drawer .brain-context-metrics strong,.service-intelligence-drawer .brain-context-candidate-grid strong{font-size:8px}.service-intelligence-drawer .brain-context-advisory p,.service-intelligence-drawer .brain-context-candidate p,.service-intelligence-drawer .brain-context-none span{font-size:7.5px}.service-intelligence-drawer .brain-context-safety span{font-size:7px}
.service-ai-toggle{width:100%;min-height:56px;border:1px solid #bfcfe7;border-radius:11px;background:linear-gradient(110deg,#f7f5ff,#edf7ff);color:#173b59;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 13px;cursor:pointer;box-shadow:0 3px 12px rgba(68,78,145,.07);text-align:left}.service-ai-toggle:hover{border-color:#8ea8d2;transform:translateY(-1px)}.service-ai-toggle span{font-size:10px;font-weight:1000;letter-spacing:.04em}.service-ai-toggle small{font-size:7.5px;color:#6f8298}.service-ai-toggle[aria-expanded="true"]{background:linear-gradient(110deg,#eeeaff,#e8f7ff);border-color:#8c92d4}
.service-ai-panel{border-top:1px solid #e0e7ef;padding-top:10px}.service-intelligence-drawer .ai-occ-head span{font-size:7px}.service-intelligence-drawer .ai-occ-head b{font-size:9px}.service-intelligence-drawer .ai-occ-panel.drawer .ai-occ-question input{height:44px;font-size:10.5px}.service-intelligence-drawer .ai-occ-panel.drawer .ai-occ-result{min-height:150px;padding:13px}.service-intelligence-drawer .ai-occ-panel.drawer .ai-occ-result small{font-size:9px}.service-intelligence-drawer .ai-analyse-button{min-height:36px!important;font-size:7.5px!important}
.service-intelligence-authority{display:flex;gap:10px;align-items:flex-start;border:1px solid #b9dfca;border-radius:11px;background:linear-gradient(120deg,#f2fbf6,#f8fdfb);padding:11px 12px}.service-intelligence-authority b{font-size:7px;letter-spacing:.1em;color:#0d7946;white-space:nowrap}.service-intelligence-authority span{font-size:8px;line-height:1.45;color:#4f7060}
.service-intelligence-launch{min-width:126px}.vehicle-inspector-actions .vehicle-action.ai{background:linear-gradient(110deg,#0d3b62,#126b86)!important;border-color:#126b86!important}
@media(max-width:900px){.service-intelligence-drawer{width:min(620px,100vw)}.service-intelligence-section-head{align-items:flex-start;display:grid}.service-intelligence-section-head small{text-align:left}.service-intelligence-context-grid{grid-template-columns:1fr}.service-intelligence-drawer .control-action-grid{grid-template-columns:1fr}}
@media(max-width:680px){.service-intelligence-backdrop{padding:0}.service-intelligence-drawer{width:100vw;max-width:none;border-radius:0}.service-intelligence-head h3{font-size:17px}.service-ai-toggle{display:grid}.service-intelligence-drawer .control-evidence ul{grid-template-columns:1fr}}

/* ========================================================================
   B2-WSA1-WSB1-HFX2 - SERVICE LIFECYCLE + LAPTOP VIEWPORT SAFETY
   Presentation + deterministic service-state gate only.
   - HFX1 Service Intelligence becomes a desktop dock instead of covering Live AVL.
   - Live AVL uses a viewport-height-aware effective board height on laptop screens.
   - Low-height desktop workspaces regain deliberate vertical scrolling.
   - Route rail keeps the existing 0..100% bounded axis and reflows inside the visible width.
   No GTFS/GTFS-RT position, vehicle order, Worker, Brain or operational mutation authority changes.
   ======================================================================== */
.service-lifecycle-grid{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;
}
.service-lifecycle-grid article{
  min-width:0;border:1px solid #d8e7ee;border-radius:9px;background:linear-gradient(145deg,#fbfeff,#f4f9fc);padding:9px 10px;
}
.service-lifecycle-grid span{display:block;font-size:6.4px;letter-spacing:.11em;font-weight:1000;color:#6b8394}
.service-lifecycle-grid b{display:block;margin-top:4px;font-size:11px;line-height:1.15;color:#123b59;overflow-wrap:anywhere}
.service-lifecycle-grid small{display:block;margin-top:4px;font-size:6.8px;line-height:1.35;color:#78909f}

/* Make drawer scrolling obvious and reliable on short laptop viewports. */
.service-intelligence-body{
  min-height:0!important;max-height:100%!important;overflow-y:auto!important;overflow-x:hidden!important;
  overscroll-behavior:contain;scrollbar-gutter:stable;
}
.service-intelligence-body::-webkit-scrollbar,.workspace::-webkit-scrollbar{width:10px;height:10px}
.service-intelligence-body::-webkit-scrollbar-thumb,.workspace::-webkit-scrollbar-thumb{background:#a8becb;border:2px solid transparent;background-clip:padding-box;border-radius:999px}
.service-intelligence-body::-webkit-scrollbar-track,.workspace::-webkit-scrollbar-track{background:transparent}

/* On desktop/laptop, dock Service Intelligence to the right and physically shrink the
   application workspace. The route diagram therefore reflows into the remaining visible
   width instead of sitting underneath the drawer. */
@media (min-width:1200px){
  :root{--service-intelligence-dock-width:min(690px,42vw)}
  html:has(#serviceIntelligenceDrawer.open) .main{
    width:calc(100% - var(--service-intelligence-dock-width) - 8px)!important;
    min-width:0!important;
    transition:width .14s cubic-bezier(.2,.8,.2,1);
  }
  html:has(#serviceIntelligenceDrawer.open) .service-intelligence-backdrop{
    left:auto!important;right:0!important;width:calc(var(--service-intelligence-dock-width) + 8px)!important;
    background:transparent!important;backdrop-filter:none!important;padding:8px!important;
  }
  html:has(#serviceIntelligenceDrawer.open) .service-intelligence-drawer{
    width:100%!important;max-width:none!important;
  }
  html:has(#serviceIntelligenceDrawer.open) .live-page,
  html:has(#serviceIntelligenceDrawer.open) .avl-board,
  html:has(#serviceIntelligenceDrawer.open) .distance-avl,
  html:has(#serviceIntelligenceDrawer.open) .distance-avl-body,
  html:has(#serviceIntelligenceDrawer.open) .corridor-lane,
  html:has(#serviceIntelligenceDrawer.open) .corridor-track{
    min-width:0!important;max-width:100%!important;
  }
  html:has(#serviceIntelligenceDrawer.open) .distance-avl-head{gap:6px!important}
  html:has(#serviceIntelligenceDrawer.open) .distance-avl-legend{gap:6px!important;flex-wrap:wrap!important;justify-content:flex-end}
  html:has(#serviceIntelligenceDrawer.open) .gtfs-alignment-note{min-width:0!important;overflow:hidden!important}
}

/* Laptop / short desktop: configured AVL height remains the administrator's preferred
   maximum, but the effective height is capped to the available viewport. The whole route
   stays visible at 100% browser zoom and the page can scroll to lower tools instead of clipping. */
@media (min-width:821px) and (max-height:900px){
  .workspace{
    overflow-y:auto!important;overflow-x:hidden!important;scrollbar-gutter:stable;overscroll-behavior:contain;
  }
  .live-page.active{
    height:auto!important;min-height:100%!important;overflow:visible!important;
    --avl-board-effective-height:min(var(--avl-board-height,375px),max(240px,42dvh));
    grid-template-rows:auto var(--avl-board-effective-height) minmax(360px,auto)!important;
    align-content:start!important;
  }
  .live-page .avl-board.avl-command-board{
    height:var(--avl-board-effective-height)!important;
    min-height:var(--avl-board-effective-height)!important;
    max-height:var(--avl-board-effective-height)!important;
  }
  .live-page .live-lower-shell,.live-page .live-lower-content,.live-page .live-lower-panel{
    min-height:360px!important;height:auto!important;
  }
  html.occ-fullscreen .live-page.active{
    --avl-board-effective-height:min(var(--avl-board-height,375px),max(240px,46dvh));
    grid-template-rows:auto var(--avl-board-effective-height) minmax(340px,auto)!important;
  }
}

/* Actual route-board width, not browser zoom, controls compact presentation. Percentages and
   vehicle/stops truth do not change; only label/card presentation tightens as space reduces. */
.avl-board.avl-command-board{container-type:inline-size;container-name:live-avl-board}
@container live-avl-board (max-width:760px){
  .distance-avl.standard-route .corridor-stop-copy,.distance-avl.family-loop-avl .corridor-stop-copy{width:72px!important}
  .distance-avl.standard-route .corridor-stop-copy b,.distance-avl.family-loop-avl .corridor-stop-copy b{font-size:max(6.5px,var(--avl-stop-label-px))!important}
  .distance-avl.standard-route .corridor-stop-copy small,.distance-avl.family-loop-avl .corridor-stop-copy small{font-size:5.7px!important}
  .distance-avl-head{padding-left:6px!important;padding-right:6px!important}
  .distance-avl-legend span{font-size:6px!important}
  .corridor-bus{width:min(68px,var(--avl-bus-card-width-px,72px))!important}
}
@container live-avl-board (max-width:620px){
  .distance-avl.standard-route .corridor-stop-copy,.distance-avl.family-loop-avl .corridor-stop-copy{width:62px!important}
  .distance-avl.standard-route .corridor-stop-copy b,.distance-avl.family-loop-avl .corridor-stop-copy b{font-size:max(6.5px,var(--avl-stop-label-px))!important}
  .distance-avl-legend{gap:4px!important}
  .distance-avl-legend span{font-size:5.7px!important}
  .gtfs-alignment-note span{display:none!important}
}

@media (max-width:1199px){
  .service-lifecycle-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:680px){
  .service-lifecycle-grid{grid-template-columns:1fr}
}

/* ========================================================================
   B2-WSA1-WSB1-HFX3 - TRUE MEASURED ROUTE AUTO-FIT + LAPTOP DRAWER SCROLL
   Presentation only.
   - Route axis width is measured from the real visible corridor track on every resize/zoom.
   - Service Intelligence split layout is selected from real available width, not one breakpoint.
   - Drawer body always owns a visible vertical scrollbar and never extends below the viewport.
   - GTFS/GTFS-RT percentages, vehicle order, service lifecycle/PVR logic, Brain SHADOW and
     Controller authority are unchanged.
   ======================================================================== */
.service-intelligence-backdrop{
  box-sizing:border-box!important;
  overflow:hidden!important;
}
.service-intelligence-drawer{
  box-sizing:border-box!important;
  height:auto!important;
  min-height:0!important;
  max-height:100%!important;
  align-self:stretch!important;
}
.service-intelligence-body{
  height:100%!important;
  min-height:0!important;
  max-height:none!important;
  overflow-y:scroll!important;
  overflow-x:hidden!important;
  scrollbar-width:auto!important;
  scrollbar-color:#8fa8b8 transparent;
}
.service-intelligence-body::-webkit-scrollbar{width:12px!important}
.service-intelligence-body::-webkit-scrollbar-thumb{background:#8fa8b8!important;border:3px solid transparent!important;background-clip:padding-box!important;border-radius:999px!important}

/* HFX3 uses a JS-measured split class so Windows display scaling and browser zoom cannot
   accidentally switch the drawer between overlay/dock behaviour at one magic CSS width. */
@media (min-width:821px){
  html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .main{
    width:calc(100% - var(--service-intelligence-dock-width) - 8px)!important;
    min-width:0!important;
    max-width:100%!important;
    transition:width .12s cubic-bezier(.2,.8,.2,1)!important;
  }
  html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .service-intelligence-backdrop{
    left:auto!important;
    right:0!important;
    width:calc(var(--service-intelligence-dock-width) + 8px)!important;
    top:0!important;
    bottom:0!important;
    padding:8px!important;
    background:transparent!important;
    backdrop-filter:none!important;
  }
  html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .service-intelligence-drawer{
    width:100%!important;
    max-width:none!important;
  }
  html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .live-page,
  html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .avl-board,
  html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .distance-avl,
  html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .distance-avl-body,
  html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .corridor-lane,
  html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .corridor-track{
    min-width:0!important;
    max-width:100%!important;
  }
}

/* The measured JS fit writes an explicit pixel width onto each bounded axis after clearing the
   inherited CSS left/right values and re-measuring them. This makes 0% and 100% resolve against
   the ACTUAL visible track at 80%, 90%, 100%, 110% browser zoom and Windows display scaling. */
#liveAvlBoard .distance-avl.standard-route .corridor-track,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-track{
  min-width:0!important;
  width:100%!important;
  max-width:100%!important;
  overflow:hidden!important;
}
#liveAvlBoard .corridor-axis[data-fit-width]{
  right:auto!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
#liveAvlBoard[data-route-fit-profile] .corridor-stop-copy{
  width:var(--live-route-stop-copy-width,92px)!important;
  max-width:var(--live-route-stop-copy-width,92px)!important;
}
#liveAvlBoard[data-route-fit-profile="tight"] .corridor-stop-copy b,
#liveAvlBoard[data-route-fit-profile="micro"] .corridor-stop-copy b{
  max-height:22px!important;
  line-height:1.02!important;
}

/* Scale only route markers as the measured axis narrows. The surrounding UI, numbers, controls
   and browser remain at the user's normal zoom, so operators do not need a 50%/90% workaround. */
#liveAvlBoard[data-route-fit-profile] .corridor-bus.avl-rail-bus:not(.ghost-bus):not(.driver-presence-bus):not(.duty-stand-card){
  transform:translateX(-50%) scale(var(--avl-bus-scale,1)) scale(var(--live-route-marker-fit-scale,1))!important;
}
#liveAvlBoard[data-route-fit-profile] .corridor-bus.ghost-bus,
#liveAvlBoard[data-route-fit-profile] .corridor-bus.driver-presence-bus{
  transform:translateX(-50%) scale(var(--avl-bus-scale,1)) scale(var(--ghost-bus-scale,.9)) scale(var(--live-route-marker-fit-scale,1))!important;
}
#liveAvlBoard[data-route-fit-profile] .corridor-bus.duty-stand-card{
  transform:translate(-50%,-50%) scale(var(--avl-bus-scale,1)) scale(var(--live-route-marker-fit-scale,1))!important;
}
#liveAvlBoard[data-route-fit-profile="micro"] .distance-avl-legend{gap:4px!important;flex-wrap:wrap!important}
#liveAvlBoard[data-route-fit-profile="micro"] .distance-avl-legend span{font-size:5.7px!important}
#liveAvlBoard[data-route-fit-profile="micro"] .gtfs-alignment-note span{display:none!important}

/* No horizontal route-board scrollbar is allowed. Lower supporting tools may still own their
   own local scrolling where required, but the route diagram itself always fits its visible box. */
#liveAvlBoard,
#liveAvlBoard .distance-avl,
#liveAvlBoard .distance-avl-body,
#liveAvlBoard .corridor-lane,
#liveAvlBoard .corridor-track{
  overflow-x:hidden!important;
}


/* ========================================================================
   B2-WSA1-WSB1-HFX4 - STABLE ROUTE AXIS / NO AUTO-FIT FEEDBACK LOOP
   Presentation-only repair of HFX3.
   - HFX3 transient pixel-width writeback is disabled permanently.
   - The route axis is anchored by CSS left/right gutters across the full live track.
   - JavaScript may select marker/label density from container width, but can never size the axis.
   - Repeated live refreshes, ResizeObserver callbacks, browser zoom and drawer open/close therefore
     cannot cumulatively shrink the 0..100% GTFS/GTFS-RT route axis.
   ======================================================================== */
#liveAvlBoard .distance-avl.standard-route .corridor-axis,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-axis{
  left:var(--live-avl-axis-left-gutter-px)!important;
  right:var(--live-avl-axis-right-gutter-px)!important;
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
  box-sizing:border-box!important;
}
#liveAvlBoard .triple-monitor-board .distance-avl.standard-route .corridor-axis,
#liveAvlBoard .triple-monitor-board .distance-avl.family-loop-avl .corridor-axis{
  left:var(--live-avl-compact-axis-left-gutter-px)!important;
  right:var(--live-avl-compact-axis-right-gutter-px)!important;
}
#liveAvlBoard .corridor-axis[data-fit-width]{
  right:var(--live-avl-axis-right-gutter-px)!important;
  width:auto!important;
  max-width:none!important;
}


/* ========================================================================
   B2-WSA1-WSB1-HFX5 - PURE CSS CONTAINER ROUTE PROJECTION
   Root-cause repair after HFX3/HFX4 responsive instability.
   - Canonical GTFS/GTFS-RT corridor positions remain normalized 0..100% percentages.
   - The route track is the grid's real available inline size; no JavaScript measures it.
   - The route axis spans that track with one small symmetric safety inset only.
   - CSS container queries change marker/label PRESENTATION only; they never alter geometry.
   - Browser zoom, Windows display scaling, live refresh and drawer reflow are therefore handled
     by the browser layout engine without a route ResizeObserver/read-write feedback path.
   ======================================================================== */
#liveAvlBoard .distance-avl.standard-route .distance-avl-body,
#liveAvlBoard .distance-avl.family-loop-avl .distance-avl-body{
  padding-right:0!important;
  min-width:0!important;
  max-width:100%!important;
  overflow-x:clip!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-lane,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-lane{
  min-width:0!important;
  max-width:100%!important;
  width:100%!important;
  overflow-x:clip!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-track,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-track{
  position:relative!important;
  min-width:0!important;
  min-inline-size:0!important;
  width:100%!important;
  max-width:100%!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
  overflow-x:hidden!important;
  overflow-x:clip!important;
  container-name:live-route-track;
  container-type:inline-size;
}
#liveAvlBoard .distance-avl.standard-route .corridor-axis,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-axis{
  --live-route-marker-fit-scale:1;
  --live-route-stop-copy-width:92px;
  position:absolute!important;
  top:0!important;
  bottom:0!important;
  left:8px!important;
  right:8px!important;
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
  box-sizing:border-box!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-guide-layer{
  left:calc(var(--live-avl-direction-badge-column-px) + 8px)!important;
  right:8px!important;
}
#liveAvlBoard .distance-avl.standard-route .duty-stand-layer{
  left:calc(var(--live-avl-direction-badge-column-px) + 8px)!important;
  right:8px!important;
}
:root[data-direction-labels="hide"] #liveAvlBoard .distance-avl.standard-route .corridor-guide-layer,
:root[data-direction-labels="hide"] #liveAvlBoard .distance-avl.standard-route .duty-stand-layer{left:8px!important}
#liveAvlBoard .triple-monitor-board .distance-avl.standard-route .corridor-axis,
#liveAvlBoard .triple-monitor-board .distance-avl.family-loop-avl .corridor-axis{left:6px!important;right:6px!important}
#liveAvlBoard .triple-monitor-board .distance-avl.standard-route .corridor-guide-layer,
#liveAvlBoard .triple-monitor-board .distance-avl.standard-route .duty-stand-layer{
  left:calc(var(--live-avl-compact-direction-badge-column-px) + 6px)!important;
  right:6px!important;
}
:root[data-direction-labels="hide"] #liveAvlBoard .triple-monitor-board .distance-avl.standard-route .corridor-guide-layer,
:root[data-direction-labels="hide"] #liveAvlBoard .triple-monitor-board .distance-avl.standard-route .duty-stand-layer{left:6px!important}
/* HFX3 profile attributes are obsolete. If stale DOM survives a hot reload, they have no authority. */
#liveAvlBoard[data-route-fit-profile] .corridor-axis{--live-route-marker-fit-scale:1;--live-route-stop-copy-width:92px}
#liveAvlBoard .distance-avl.standard-route .corridor-stop-copy,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-stop-copy{
  width:var(--live-route-stop-copy-width)!important;
  max-width:var(--live-route-stop-copy-width)!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-bus.avl-rail-bus:not(.ghost-bus):not(.driver-presence-bus):not(.duty-stand-card),
#liveAvlBoard .distance-avl.family-loop-avl .corridor-bus.avl-rail-bus:not(.ghost-bus):not(.driver-presence-bus):not(.duty-stand-card){
  transform:translateX(-50%) scale(var(--avl-bus-scale,1)) scale(var(--live-route-marker-fit-scale,1))!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-bus.ghost-bus,
#liveAvlBoard .distance-avl.standard-route .corridor-bus.driver-presence-bus,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-bus.ghost-bus,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-bus.driver-presence-bus{
  transform:translateX(-50%) scale(var(--avl-bus-scale,1)) scale(var(--ghost-bus-scale,.9)) scale(var(--live-route-marker-fit-scale,1))!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-bus.duty-stand-card{
  transform:translate(-50%,-50%) scale(var(--avl-bus-scale,1)) scale(var(--live-route-marker-fit-scale,1))!important;
}
/* Component width, not viewport width or browser zoom, controls presentation density. */
@container live-route-track (max-width:1000px){
  .corridor-axis{--live-route-marker-fit-scale:.94;--live-route-stop-copy-width:82px}
}
@container live-route-track (max-width:820px){
  .corridor-axis{--live-route-marker-fit-scale:.88;--live-route-stop-copy-width:74px}
  .corridor-stop-copy b{font-size:max(7px,var(--avl-stop-label-px))!important;line-height:1.02!important;max-height:22px!important}
  .corridor-stop-copy small{font-size:5.7px!important}
}
@container live-route-track (max-width:660px){
  .corridor-axis{--live-route-marker-fit-scale:.80;--live-route-stop-copy-width:64px}
  .corridor-stop-copy b{font-size:6.8px!important;max-height:20px!important}
}
@container live-route-track (max-width:520px){
  .corridor-axis{--live-route-marker-fit-scale:.74;--live-route-stop-copy-width:58px}
  .corridor-stop-copy b{font-size:6.5px!important;max-height:19px!important}
}
/* ========================================================================
   B2-WSA1-WSB1-HFX6 - FULL-SCREEN SERVICE INTELLIGENCE WORKSPACE
   Drawer-only presentation repair.
   - SERVICE INTELLIGENCE is a modal workspace like EXPAND MAP: it overlays the app and NEVER
     changes .main, Live AVL, route-board, map, sidebar or workspace dimensions.
   - The modal owns one vertical scrollbar; internal sections expand naturally and are not clipped.
   - X, backdrop click and existing Escape authority close the workspace and reveal the unchanged app.
   - HFX5 route projection, HFX2 lifecycle/PVR, Brain SHADOW and optional/manual OpenAI are unchanged.
   ======================================================================== */
html:has(#serviceIntelligenceDrawer.open) .main,
html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .main{
  width:auto!important;
  max-width:none!important;
  min-width:0!important;
  transition:none!important;
}
html:has(#serviceIntelligenceDrawer.open) .live-page,
html:has(#serviceIntelligenceDrawer.open) .avl-board,
html:has(#serviceIntelligenceDrawer.open) .distance-avl,
html:has(#serviceIntelligenceDrawer.open) .distance-avl-body,
html:has(#serviceIntelligenceDrawer.open) .corridor-lane,
html:has(#serviceIntelligenceDrawer.open) .corridor-track{
  width:auto;
  max-width:none;
}
.service-intelligence-backdrop,
html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .service-intelligence-backdrop,
html:has(#serviceIntelligenceDrawer.open) .service-intelligence-backdrop{
  position:fixed!important;
  inset:0!important;
  width:auto!important;
  height:auto!important;
  z-index:6200!important;
  display:flex!important;
  align-items:stretch!important;
  justify-content:stretch!important;
  box-sizing:border-box!important;
  padding:12px!important;
  background:rgba(4,20,35,.42)!important;
  backdrop-filter:blur(2px)!important;
  overflow:hidden!important;
}
.service-intelligence-drawer,
html.service-intelligence-split:has(#serviceIntelligenceDrawer.open) .service-intelligence-drawer,
html:has(#serviceIntelligenceDrawer.open) .service-intelligence-drawer{
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  max-width:none!important;
  max-height:none!important;
  margin:0!important;
  align-self:stretch!important;
  border-radius:16px!important;
  display:grid!important;
  grid-template-rows:auto minmax(0,1fr)!important;
  overflow:hidden!important;
  transform:none!important;
  box-shadow:0 24px 80px rgba(3,25,43,.35)!important;
}
.service-intelligence-body{
  display:block!important;
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
  box-sizing:border-box!important;
  padding:16px 18px 24px!important;
}
.service-intelligence-body>.service-intelligence-overview,
.service-intelligence-body>.service-intelligence-section,
.service-intelligence-body>.service-intelligence-authority{
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  box-sizing:border-box!important;
  margin:0 0 14px!important;
}
.service-intelligence-section{
  display:block!important;
  overflow:visible!important;
}
.service-intelligence-section>.service-intelligence-section-head{margin-bottom:12px!important}
.service-intelligence-drawer .control-intelligence-content,
.service-intelligence-drawer .control-decision,
.service-intelligence-drawer .control-action-grid,
.service-intelligence-drawer .control-evidence,
.service-intelligence-drawer .control-safety,
.service-intelligence-drawer .attention-list,
.service-intelligence-drawer .brain-live-drawer-card,
.service-intelligence-drawer .brain-live-drawer-result,
.service-intelligence-drawer .brain-live-context-card,
.service-intelligence-drawer .service-ai-panel,
.service-intelligence-drawer .ai-occ-panel.drawer,
.service-intelligence-drawer .ai-occ-result{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
.service-intelligence-drawer .attention-list{margin-top:8px!important}
.service-intelligence-drawer .service-ai-panel{margin-top:12px!important}
.service-intelligence-head{position:sticky!important;top:0!important;z-index:3!important}
@media (max-width:900px){
  .service-intelligence-backdrop,
  html:has(#serviceIntelligenceDrawer.open) .service-intelligence-backdrop{padding:6px!important}
  .service-intelligence-drawer{border-radius:10px!important}
  .service-intelligence-body{padding:12px 10px 20px!important}
  .service-lifecycle-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .service-intelligence-context-grid{grid-template-columns:1fr!important}
  .service-intelligence-drawer .control-action-grid,
  .service-intelligence-drawer .control-evidence ul{grid-template-columns:1fr!important}
}
@media (max-width:560px){
  .service-intelligence-backdrop,
  html:has(#serviceIntelligenceDrawer.open) .service-intelligence-backdrop{padding:0!important}
  .service-intelligence-drawer{border:0!important;border-radius:0!important}
  .service-lifecycle-grid{grid-template-columns:1fr!important}
}

/* ========================================================================
   B2-WSA1-WSB1-HFX7 - LIVE AVL PROVEN 3-ROUTE PRESENTATION PARITY
   Presentation-only repair from exact live HFX6.
   - Live AVL keeps the canonical 0..100% operationalBoard() geometry.
   - The HFX5 live-route-track container-query density layer is disabled ONLY inside #liveAvlBoard.
   - Horizontal presentation copies the already live-proven 3-Route Monitor proportions:
     compact IN/OUT column, compact route gutters, 90% stop-label presentation and 88% vehicle cards.
   - 3-Route Monitor itself is untouched.
   - Service Intelligence remains the HFX6 full-screen modal; text is increased slightly only.
   ======================================================================== */

/* Live AVL must behave like the proven 3-Route presentation at every browser zoom.
   Do not let browser zoom switch a second marker/label density algorithm on the Live board. */
#liveAvlBoard.avl-command-board{
  container-name:none!important;
  container-type:normal!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-track,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-track{
  container-name:none!important;
  container-type:normal!important;
  position:relative!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
}

/* Exact horizontal proportions inherited from the proven compact 3-Route boards. */
#liveAvlBoard .distance-avl.standard-route .corridor-lane{
  grid-template-columns:var(--live-avl-compact-direction-badge-column-px,30px) minmax(0,1fr)!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-dir{
  width:var(--live-avl-compact-direction-badge-size-px,24px)!important;
  height:18px!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-axis,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-axis{
  --live-route-marker-fit-scale:.88!important;
  --live-route-stop-copy-width:86px!important;
  left:var(--live-avl-compact-axis-left-gutter-px,10px)!important;
  right:var(--live-avl-compact-axis-right-gutter-px,18px)!important;
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-guide-layer,
#liveAvlBoard .distance-avl.standard-route .duty-stand-layer{
  left:calc(var(--live-avl-compact-direction-badge-column-px,30px) + var(--live-avl-compact-axis-left-gutter-px,10px))!important;
  right:calc(12px + var(--live-avl-compact-axis-right-gutter-px,18px))!important;
}
:root[data-direction-labels="hide"] #liveAvlBoard .distance-avl.standard-route .corridor-guide-layer,
:root[data-direction-labels="hide"] #liveAvlBoard .distance-avl.standard-route .duty-stand-layer{
  left:var(--live-avl-compact-axis-left-gutter-px,10px)!important;
}

/* Same readable compact stop-copy treatment already proven in 3-Route Monitor. */
#liveAvlBoard .distance-avl.standard-route .corridor-stop-copy,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-stop-copy{
  width:86px!important;
  max-width:86px!important;
  transform:translateX(-50%) scale(.9)!important;
  transform-origin:center!important;
}
#liveAvlBoard .corridor-stop.edge-left .corridor-stop-copy{
  left:50%!important;
  right:auto!important;
  transform:scale(.9)!important;
  text-align:left!important;
  transform-origin:left center!important;
}
#liveAvlBoard .corridor-stop.edge-right .corridor-stop-copy{
  left:auto!important;
  right:50%!important;
  transform:scale(.9)!important;
  text-align:right!important;
  transform-origin:right center!important;
}

/* Same vehicle-card visual scale as the proven 3-Route standard board.
   left:% remains the canonical GTFS/GTFS-RT corridor percentage. */
#liveAvlBoard .distance-avl.standard-route .corridor-bus.avl-rail-bus:not(.ghost-bus):not(.driver-presence-bus):not(.duty-stand-card),
#liveAvlBoard .distance-avl.family-loop-avl .corridor-bus.avl-rail-bus:not(.ghost-bus):not(.driver-presence-bus):not(.duty-stand-card){
  transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .88))!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-bus.ghost-bus,
#liveAvlBoard .distance-avl.standard-route .corridor-bus.driver-presence-bus,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-bus.ghost-bus,
#liveAvlBoard .distance-avl.family-loop-avl .corridor-bus.driver-presence-bus{
  transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * .88 * var(--ghost-bus-scale,.9)))!important;
}
#liveAvlBoard .distance-avl.standard-route .corridor-bus.duty-stand-card{
  transform:translate(-50%,-50%) scale(calc(var(--avl-bus-scale,1) * .88))!important;
}

/* HFX6 full-screen Service Intelligence is accepted; increase readability slightly only. */
.service-intelligence-drawer .service-intelligence-head h3{font-size:21px!important}
.service-intelligence-drawer .service-intelligence-head .eyebrow{font-size:7.6px!important}
.service-intelligence-drawer .source-state.mini b{font-size:9.8px!important}
.service-intelligence-drawer .source-state.mini small{font-size:8.2px!important}
.service-intelligence-drawer .service-intelligence-context-grid span{font-size:7.2px!important}
.service-intelligence-drawer .service-intelligence-context-grid b{font-size:11px!important}
.service-intelligence-drawer .service-intelligence-section-head span{font-size:7.7px!important}
.service-intelligence-drawer .service-intelligence-section-head b{font-size:13px!important}
.service-intelligence-drawer .service-intelligence-section-head small{font-size:8.2px!important}
.service-intelligence-drawer .control-decision-top span,
.service-intelligence-drawer .control-decision-top b{font-size:8.2px!important}
.service-intelligence-drawer .control-decision h4{font-size:17px!important}
.service-intelligence-drawer .control-decision p{font-size:11.2px!important}
.service-intelligence-drawer .control-action-grid span{font-size:7.7px!important}
.service-intelligence-drawer .control-action-grid b{font-size:11.2px!important}
.service-intelligence-drawer .control-evidence li{font-size:9.8px!important}
.service-intelligence-drawer .control-safety span{font-size:9px!important}
.service-intelligence-drawer .attention-item b{font-size:9.8px!important}
.service-intelligence-drawer .attention-item span{font-size:8.7px!important}
.service-intelligence-drawer .brain-live-drawer-head span{font-size:6.8px!important}
.service-intelligence-drawer .brain-live-drawer-head b{font-size:11px!important}
.service-intelligence-drawer .brain-context-summary span{font-size:6.5px!important}
.service-intelligence-drawer .brain-context-summary b{font-size:10px!important}
.service-intelligence-drawer .brain-context-summary small{font-size:7.3px!important}
.service-intelligence-drawer .brain-context-metrics span,
.service-intelligence-drawer .brain-context-candidate-grid span{font-size:6.1px!important}
.service-intelligence-drawer .brain-context-metrics strong,
.service-intelligence-drawer .brain-context-candidate-grid strong{font-size:8.2px!important}
.service-intelligence-drawer .brain-context-advisory b{font-size:8.8px!important}
.service-intelligence-drawer .brain-context-advisory p{font-size:7.4px!important}
.service-intelligence-drawer .brain-context-safety b,
.service-intelligence-drawer .brain-context-safety span{font-size:6.9px!important}
.service-intelligence-drawer .brain-context-warning{font-size:7px!important}
.service-intelligence-drawer .ai-further-advice-label span,
.service-intelligence-drawer .ai-further-advice-label small{font-size:6.8px!important}


/* ========================================================================
   B2-WSA1-WSB1-HFX8 - LIVE AVL EXACT 3-ROUTE WRAPPER PARITY
   Root-cause repair from exact live HFX7.
   The legacy Live-only #liveAvlBoard / .avl-command-board route-fit selectors are deliberately
   left in history but can no longer match the live route board.  The Live board now enters the
   SAME .triple-monitor-board presentation context proven on 3-Route Monitor at every browser zoom.
   Only full-Live height/header ownership is restored here.  GTFS/GTFS-RT percentages and all
   operationalBoard() geometry remain unchanged.
   ======================================================================== */
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  height:var(--avl-board-effective-height,var(--avl-board-height,375px))!important;
  min-height:var(--avl-board-effective-height,var(--avl-board-height,375px))!important;
  max-height:var(--avl-board-effective-height,var(--avl-board-height,375px))!important;
  display:block!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
  background:#fff!important;
  border:1px solid #d7e0e9!important;
  border-radius:12px!important;
  box-shadow:none!important;
  container-type:normal!important;
  container-name:none!important;
}
/* The exact triple-monitor route-body context is retained; Live AVL alone restores its
   information header/context rows instead of the compact monitor's hidden header. */
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl{
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
  grid-template-rows:auto 34px minmax(0,1fr)!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl>.distance-avl-context{
  display:flex;
  grid-row:1!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl>.distance-avl-head{
  display:flex!important;
  grid-row:2!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl>.distance-avl-body{
  grid-row:3!important;
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .family-avl{
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
  grid-template-rows:34px minmax(0,1fr)!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .family-avl>.family-avl-head{
  display:flex!important;
  grid-row:1!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .family-avl>.family-avl-body{
  grid-row:2!important;
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
/* Explicitly prevent the abandoned Live-only container-query identities from being recreated
   inside the new board.  Presentation below this point is inherited from .triple-monitor-board. */
#liveAvlRouteBoard .corridor-track,
#liveAvlRouteBoard .corridor-axis{
  container-name:none!important;
  container-type:normal!important;
}
@media(max-width:820px){
  #liveAvlRouteBoard.live-primary-route-board.triple-monitor-board{
    height:480px!important;
    min-height:480px!important;
    max-height:480px!important;
  }
}

/* HFX9 - Static GTFS + Raw GPS / Arvento provider onboarding */
.arvento-provider-box{border:1px solid #c7dce8;border-radius:10px;background:#f7fbfd;padding:12px;margin:4px 0 8px}.arvento-provider-box textarea{width:100%;resize:vertical;min-height:88px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.arvento-provider-box .gtfs-import-status{margin-top:8px}

/* B2-WSA1-WSB1-HFX9.2 - PRISHTINA CITIES & DATA RESPONSIVE LAYOUT HOTFIX
   Presentation only. HFX9.1 provider, raw-GPS assignment, GTFS, Live AVL and AI authority are unchanged.
   The city catalogue/profile occupy the compact top row and the rich Data Sources workspace spans full width below. */
.admin-tab-panel[data-admin-panel="cities"]{
  overflow-y:auto!important;
  overflow-x:hidden!important;
}
.admin-tab-panel[data-admin-panel="cities"] .city-admin-layout{
  display:grid!important;
  grid-template-columns:minmax(230px,280px) minmax(0,1fr)!important;
  grid-auto-rows:max-content;
  align-content:start;
  gap:10px!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:visible!important;
}
.admin-tab-panel[data-admin-panel="cities"] .city-list-panel{
  grid-column:1;
  grid-row:1;
  min-width:0!important;
  align-self:start;
  overflow:hidden!important;
}
.admin-tab-panel[data-admin-panel="cities"] .city-editor-panel{
  grid-column:2;
  grid-row:1;
  min-width:0!important;
  align-self:start;
  overflow:visible!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel [hidden]{
  display:none!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel{
  grid-column:1/-1;
  grid-row:2;
  min-width:0!important;
  width:100%!important;
  max-width:100%!important;
  padding:14px!important;
  overflow:visible!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel>.feed-provider-row,
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel>.feed-config-grid,
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel .gtfs-preflight-block,
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel .gtfs-transport-modes-block{
  min-width:0!important;
  max-width:100%!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel>.feed-config-grid{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:10px 12px!important;
  align-items:end!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel>.feed-config-grid>*{
  min-width:0!important;
  max-width:100%!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel input,
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel select,
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel textarea,
.admin-tab-panel[data-admin-panel="cities"] .feed-provider-row input{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel label,
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel .wide{
  min-width:0!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel .wide{
  grid-column:1/-1!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel .feed-action{
  width:100%!important;
  min-width:0!important;
}
.admin-tab-panel[data-admin-panel="cities"] .arvento-provider-box{
  grid-column:1/-1!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  margin:2px 0 4px!important;
  padding:14px!important;
  overflow:hidden!important;
}
.admin-tab-panel[data-admin-panel="cities"] .arvento-provider-box .section-head.compact{
  align-items:flex-start!important;
  gap:12px!important;
  flex-wrap:wrap!important;
}
.admin-tab-panel[data-admin-panel="cities"] .arvento-provider-box .section-head.compact>div{
  min-width:0!important;
  flex:1 1 520px!important;
}
.admin-tab-panel[data-admin-panel="cities"] .arvento-provider-box .section-head.compact p:not(.eyebrow){
  max-width:920px!important;
  line-height:1.4!important;
}
.admin-tab-panel[data-admin-panel="cities"] .arvento-provider-box .feed-config-grid{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:10px 12px!important;
  align-items:start!important;
}
.admin-tab-panel[data-admin-panel="cities"] .arvento-provider-box .feed-config-grid>*,
.admin-tab-panel[data-admin-panel="cities"] .realtime-orchestrator-box .feed-config-grid>*{
  min-width:0!important;
  max-width:100%!important;
}
.admin-tab-panel[data-admin-panel="cities"] .arvento-provider-box .feed-config-grid .wide{
  grid-column:1/-1!important;
}
.admin-tab-panel[data-admin-panel="cities"] .arvento-provider-box textarea{
  min-height:110px!important;
  resize:vertical!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-actions{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  margin-top:10px!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-save-row{
  min-width:0!important;
  flex-wrap:wrap!important;
}
.admin-tab-panel[data-admin-panel="cities"] .gtfs-static-refresh-grid,
.admin-tab-panel[data-admin-panel="cities"] .realtime-orchestrator-grid,
.admin-tab-panel[data-admin-panel="cities"] .realtime-source-card .feed-config-grid{
  min-width:0!important;
  max-width:100%!important;
}
.admin-tab-panel[data-admin-panel="cities"] .city-data-summary{
  min-width:0!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
}
.admin-tab-panel[data-admin-panel="cities"] .gtfs-preflight-table-wrap,
.admin-tab-panel[data-admin-panel="cities"] .gtfs-transport-modes-table-wrap{
  max-width:100%!important;
  overflow-x:auto!important;
  overscroll-behavior-inline:contain;
}
@media(max-width:1280px){
  .admin-tab-panel[data-admin-panel="cities"] .city-admin-layout{
    grid-template-columns:minmax(220px,250px) minmax(0,1fr)!important;
  }
  .admin-tab-panel[data-admin-panel="cities"] .city-data-summary{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .admin-tab-panel[data-admin-panel="cities"] .gtfs-static-refresh-grid,
  .admin-tab-panel[data-admin-panel="cities"] .realtime-orchestrator-grid{
    grid-template-columns:1fr 1fr!important;
  }
  .admin-tab-panel[data-admin-panel="cities"] .gtfs-static-refresh-grid>*:last-child,
  .admin-tab-panel[data-admin-panel="cities"] .realtime-orchestrator-grid>.wide{
    grid-column:1/-1!important;
  }
}
@media(max-width:980px){
  .admin-tab-panel[data-admin-panel="cities"] .city-admin-layout{
    grid-template-columns:1fr!important;
  }
  .admin-tab-panel[data-admin-panel="cities"] .city-list-panel,
  .admin-tab-panel[data-admin-panel="cities"] .city-editor-panel,
  .admin-tab-panel[data-admin-panel="cities"] .feed-config-panel{
    grid-column:1!important;
    grid-row:auto!important;
  }
  .admin-tab-panel[data-admin-panel="cities"] .city-admin-list{
    max-height:250px!important;
  }
  .admin-tab-panel[data-admin-panel="cities"] .feed-config-panel>.feed-config-grid,
  .admin-tab-panel[data-admin-panel="cities"] .arvento-provider-box .feed-config-grid,
  .admin-tab-panel[data-admin-panel="cities"] .gtfs-static-refresh-grid,
  .admin-tab-panel[data-admin-panel="cities"] .realtime-orchestrator-grid,
  .admin-tab-panel[data-admin-panel="cities"] .realtime-source-card .feed-config-grid,
  .admin-tab-panel[data-admin-panel="cities"] .city-data-summary{
    grid-template-columns:1fr!important;
  }
  .admin-tab-panel[data-admin-panel="cities"] .feed-config-panel>.feed-config-grid>*{
    grid-column:1!important;
  }
}


/* HFX9.3 - collapsible OCC navigation rail + Prishtina network bootstrap */
:root{--sidebar-collapsed:64px}
.sidebar-collapse-toggle{margin:7px 2px 6px;min-height:30px;border:1px solid #dce5eb;border-radius:8px;background:#f7fafc;color:#52616c;display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;font:inherit;transition:background .16s ease,border-color .16s ease,color .16s ease}
.sidebar-collapse-toggle:hover{background:#eef7fc;border-color:#bcdced;color:#0b5f91}.sidebar-collapse-toggle span{font-size:16px;font-weight:900;line-height:1}.sidebar-collapse-toggle b{font-size:7px;letter-spacing:.06em}
.app-shell{transition:grid-template-columns .2s ease}.sidebar{transition:padding .2s ease,width .2s ease}.network-bootstrap-box{border:1px solid #efc870;border-radius:10px;background:linear-gradient(180deg,#fffdf7,#fffaf0);padding:12px;min-width:0}.network-bootstrap-box .gtfs-import-status{margin-top:9px}.network-bootstrap-box .feed-actions{margin-top:9px;display:flex;gap:8px;flex-wrap:wrap}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .app-shell{grid-template-columns:var(--sidebar-collapsed) minmax(0,1fr)!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .sidebar{width:var(--sidebar-collapsed)!important;padding:8px 6px!important;overflow:visible!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .signature-brand{padding:2px 0 7px!important;justify-content:center!important;border-bottom:1px solid #edf0f2!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .signature-brand .brand-copy{display:none!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .sidebar-art{width:42px!important;height:42px!important;margin:0!important;border-radius:9px!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .sidebar-collapse-toggle{width:44px!important;height:31px!important;margin:6px auto!important;padding:0!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .sidebar-collapse-toggle b{display:none!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .main-nav{display:flex!important;flex-direction:column!important;align-items:center!important;gap:4px!important;padding:2px 0 6px!important;overflow-y:auto!important;overflow-x:visible!important;scrollbar-width:none!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .main-nav::-webkit-scrollbar{display:none!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .nav-item{display:flex!important;align-items:center!important;justify-content:center!important;width:44px!important;height:40px!important;min-height:40px!important;padding:0!important;margin:0 auto!important;border-radius:8px!important;position:relative!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .nav-item>span{display:block!important;grid-row:auto!important;font-size:15px!important;line-height:1!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .nav-item>b,html.occ-sidebar-collapsed:not(.occ-fullscreen) .nav-item>small{display:none!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .nav-group{display:flex!important;flex-direction:column!important;align-items:center!important;width:100%!important;gap:3px!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .nav-group-toggle{display:flex!important;align-items:center!important;justify-content:center!important;width:44px!important;height:40px!important;min-height:40px!important;padding:0!important;border-radius:8px!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .nav-group-toggle>span{display:block!important;grid-row:auto!important;font-size:15px!important;line-height:1!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .nav-group-toggle>b,html.occ-sidebar-collapsed:not(.occ-fullscreen) .nav-group-toggle>small,html.occ-sidebar-collapsed:not(.occ-fullscreen) .nav-group-toggle>em{display:none!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .nav-group-children{display:none!important}
html.occ-sidebar-collapsed:not(.occ-fullscreen) .sidebar-foot,html.occ-sidebar-collapsed:not(.occ-fullscreen) .legend-mini,html.occ-sidebar-collapsed:not(.occ-fullscreen) .isolation-note{display:none!important}
html.occ-fullscreen .sidebar-collapse-toggle{display:none!important}
@media(max-width:820px){.sidebar-collapse-toggle{display:none!important}html.occ-sidebar-collapsed .app-shell{grid-template-columns:1fr!important}html.occ-sidebar-collapsed .sidebar{width:auto!important;padding:14px 12px!important}html.occ-sidebar-collapsed .signature-brand .brand-copy{display:block!important}html.occ-sidebar-collapsed .sidebar-art{width:132px!important;height:132px!important;margin:-3px auto -6px!important}html.occ-sidebar-collapsed .main-nav{display:grid!important;grid-template-columns:repeat(2,1fr)!important;overflow:visible!important}html.occ-sidebar-collapsed .nav-item{width:100%!important;height:auto!important;display:grid!important;grid-template-columns:20px 1fr!important;grid-template-rows:auto auto!important;padding:8px!important;justify-content:stretch!important}html.occ-sidebar-collapsed .nav-item>b,html.occ-sidebar-collapsed .nav-item>small{display:block!important}}

/* HFX9.4 - Arvento encrypted Worker-secret status */
.arvento-secret-status{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;margin:4px 0 14px;border:1px solid #cfe2f3;border-radius:14px;background:#f8fbfe;flex-wrap:wrap}
.arvento-secret-status>div:first-child{display:flex;flex-direction:column;gap:3px;min-width:260px;flex:1}
.arvento-secret-status>div:first-child>span{font-size:11px;font-weight:800;letter-spacing:.04em;color:#718096}
.arvento-secret-status>div:first-child>b{font-size:15px;color:#173b5e}
.arvento-secret-status small{color:#6b7f91}
.arvento-secret-pills{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}

/* HFX9.5 - Prishtina live UAT repair: sample mapping clear action + no-schedule authority state */
#clearArventoMappingsButton{min-width:190px}

/* ========================================================================
   PHFX3 - LIVE AVL REAL-BOARD CONTAINER AUTOFIT REPAIR
   Presentation only.  The historical HFX5 route-density system was written
   against the retired #liveAvlBoard identity while the live DOM uses
   #liveAvlRouteBoard. HFX8 also explicitly disabled container identity on the
   real board.  Restore a bounded inline-size container on the ACTUAL track and
   wire the existing live-route-track density variables to the current
   triple-monitor presentation. Canonical 0..100% route geometry is unchanged.
   ======================================================================== */
#liveAvlRouteBoard .distance-avl.standard-route .corridor-track,
#liveAvlRouteBoard .distance-avl.family-loop-avl .corridor-track{
  container-name:live-route-track!important;
  container-type:inline-size!important;
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  overflow-x:clip!important;
}
#liveAvlRouteBoard .distance-avl.standard-route .corridor-axis,
#liveAvlRouteBoard .distance-avl.family-loop-avl .corridor-axis{
  container-name:none!important;
  container-type:normal!important;
  --live-route-marker-fit-scale:1;
  --live-route-stop-copy-width:92px;
}
/* HFX5's original variable consumers were also scoped to the retired board ID.
   Bind the same variables to the real board.  The accepted compact Live base
   scale remains authoritative; container fit can only reduce it as width falls. */
#liveAvlRouteBoard .distance-avl.standard-route .corridor-stop-copy,
#liveAvlRouteBoard .distance-avl.family-loop-avl .corridor-stop-copy{
  width:var(--live-route-stop-copy-width,92px)!important;
  max-width:var(--live-route-stop-copy-width,92px)!important;
}
#liveAvlRouteBoard .corridor-lane .corridor-bus.avl-rail-bus{
  transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * var(--avl-compact-bus-scale,.72) * var(--live-route-marker-fit-scale,1)))!important;
}
#liveAvlRouteBoard .corridor-lane .corridor-bus.avl-rail-bus.inbound{transform-origin:center bottom!important}
#liveAvlRouteBoard .corridor-lane .corridor-bus.avl-rail-bus.outbound{transform-origin:center top!important}

/* ========================================================================
   PHFX3.4 - LIVE AVL EXACT 3-ROUTE HORIZONTAL PARITY + DEPLOY LIFECYCLE REPAIR
   Direct presentation-only child of live PHFX3.2.
   - Removes the broken PHFX3 Live-only container-density path.
   - Restores the same proven compact horizontal presentation as 3-Route Monitor.
   - No route percentages, geometry or operational authority are changed.
   ======================================================================== */
#liveAvlRouteBoard .distance-avl.standard-route .corridor-track,
#liveAvlRouteBoard .distance-avl.family-loop-avl .corridor-track{
  container-name:none!important;
  container-type:normal!important;
}
#liveAvlRouteBoard .distance-avl.standard-route .corridor-axis,
#liveAvlRouteBoard .distance-avl.family-loop-avl .corridor-axis{
  container-name:none!important;
  container-type:normal!important;
  --live-route-marker-fit-scale:1!important;
  --live-route-stop-copy-width:82px!important;
}
#liveAvlRouteBoard .distance-avl.standard-route .corridor-stop-copy,
#liveAvlRouteBoard .distance-avl.family-loop-avl .corridor-stop-copy{
  width:82px!important;
  max-width:82px!important;
  transform:translateX(-50%) scale(.9)!important;
  transform-origin:center!important;
}
#liveAvlRouteBoard .corridor-stop.edge-left .corridor-stop-copy{
  left:50%!important;
  right:auto!important;
  transform:scale(.9)!important;
  text-align:left!important;
  transform-origin:left center!important;
}
#liveAvlRouteBoard .corridor-stop.edge-right .corridor-stop-copy{
  left:auto!important;
  right:50%!important;
  transform:scale(.9)!important;
  text-align:right!important;
  transform-origin:right center!important;
}
#liveAvlRouteBoard .corridor-lane .corridor-bus.avl-rail-bus{
  transform:translateX(-50%) scale(calc(var(--avl-bus-scale,1) * var(--avl-compact-bus-scale,.72)))!important;
}
#liveAvlRouteBoard .corridor-lane .corridor-bus.avl-rail-bus.inbound{transform-origin:center bottom!important}
#liveAvlRouteBoard .corridor-lane .corridor-bus.avl-rail-bus.outbound{transform-origin:center top!important}


/* PHFX3.4.1 - governed manual stop display-name overlay editor */
.stop-name-override-config{margin-top:16px;border:1px solid #d7e3ef;border-radius:16px;background:#f8fbfe;padding:14px 16px;display:grid;gap:12px}
.stop-name-override-config.family-disabled{opacity:.72}
.stop-name-override-list{display:grid;gap:8px;max-height:430px;overflow:auto;padding-right:4px}
.stop-name-override-row{display:grid;grid-template-columns:minmax(250px,1fr) minmax(280px,1.2fr) auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid #dbe5ee;border-radius:12px;background:#fff}
.stop-name-override-row>span{min-width:0;display:grid;gap:2px}.stop-name-override-row>span b{font-size:13px;color:#173b5c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stop-name-override-row>span small{font-size:10px;color:#71869a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stop-name-override-row input{width:100%;min-width:0;border:1px solid #bdcbd8;border-radius:10px;padding:9px 11px;font:600 13px/1.2 inherit;color:#173b5c;background:#fff}
.stop-name-override-row input:focus{outline:2px solid rgba(42,110,166,.22);border-color:#2a6ea6}
.stop-name-source-button{min-width:76px}
@media(max-width:1050px){.stop-name-override-row{grid-template-columns:1fr}.stop-name-source-button{justify-self:start}}

/* PHFX3.4.2 - AI1 canonical decision prominence only. No Live AVL route-board selectors. */
.service-intelligence-drawer .control-decision-primary{
  border-width:2px!important;
  border-left-width:7px!important;
  padding:16px!important;
  box-shadow:0 8px 24px rgba(18,59,89,.10);
}
.service-intelligence-drawer .control-decision-primary .control-decision-top span{
  font-size:9px!important;
  letter-spacing:.1em;
}
.service-intelligence-drawer .control-decision-primary h4{
  font-size:19px!important;
  line-height:1.28!important;
  margin:2px 0 10px!important;
}
.service-intelligence-drawer .control-primary-advisory{
  display:grid;
  gap:5px;
  margin:8px 0 10px;
  padding:13px 14px;
  border:1px solid rgba(18,59,89,.20);
  border-radius:10px;
  background:rgba(255,255,255,.86);
}
.service-intelligence-drawer .control-primary-advisory span{
  font-size:8px;
  font-weight:950;
  letter-spacing:.11em;
  color:#49677d;
}
.service-intelligence-drawer .control-primary-advisory strong{
  font-size:15px;
  line-height:1.4;
  color:#123b59;
}
.service-intelligence-drawer .control-primary-advisory small{
  font-size:8px;
  font-weight:800;
  color:#6f8494;
}
.service-intelligence-drawer .control-explanation-grid{
  grid-template-columns:minmax(0,1.4fr) minmax(150px,.6fr);
}
@media(max-width:900px){.service-intelligence-drawer .control-explanation-grid{grid-template-columns:1fr}}

/* PHFX3.4.4 - WSB1 read-only evidence-closure assistant. No workload or authority change. */
.worker-wsb1-closure-panel{border-color:#d6e3ee;background:#fbfdff}.worker-closure-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:10px}.worker-closure-grid article{border:1px solid #dce6ee;border-radius:12px;padding:12px;background:#fff;min-width:0}.worker-closure-grid span{display:block;font-size:10px;letter-spacing:.09em;font-weight:800;color:#6f8395;margin-bottom:6px}.worker-closure-grid b{display:block;color:#123c5c;font-size:16px;overflow-wrap:anywhere}.worker-closure-grid small{display:block;color:#738596;margin-top:5px;line-height:1.35}.worker-closure-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}@media(max-width:1100px){.worker-closure-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.worker-closure-grid{grid-template-columns:1fr}.worker-closure-actions .button{width:100%}}

/* ========================================================================
   PHFX3.4.5 - LIVE AVL ZOOM-INVARIANT AXIS CONTAINMENT ND1
   CONTROLLED PRESENTATION CHILD. The live board is intentionally a
   .triple-monitor-board without the .avl-board class, so its width contract
   previously depended on rules distributed across HFX5.6.1.2, HFX8 and PHFX3.4.
   Restate the complete containment contract on the actual Live root. This
   changes no GTFS percentages, route geometry, vehicle data or authority.
   ======================================================================== */
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board>.distance-avl,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board>.family-avl{
  width:100%!important;
  inline-size:100%!important;
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  max-inline-size:100%!important;
  box-sizing:border-box!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl.standard-route .distance-avl-body,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl.family-loop-avl .distance-avl-body{
  width:100%!important;
  inline-size:100%!important;
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  max-inline-size:100%!important;
  grid-template-columns:minmax(0,1fr)!important;
  box-sizing:border-box!important;
  overflow-x:hidden!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl.standard-route .corridor-lane,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl.family-loop-avl .corridor-lane{
  width:100%!important;
  inline-size:100%!important;
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  max-inline-size:100%!important;
  box-sizing:border-box!important;
  overflow-x:hidden!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl.standard-route .corridor-lane{
  grid-template-columns:var(--live-avl-compact-direction-badge-column-px,30px) minmax(0,1fr)!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl.standard-route .corridor-track,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl.family-loop-avl .corridor-track{
  position:relative!important;
  width:100%!important;
  inline-size:100%!important;
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  max-inline-size:100%!important;
  margin-left:0!important;
  margin-right:0!important;
  margin-inline:0!important;
  box-sizing:border-box!important;
  overflow-x:hidden!important;
  container-name:none!important;
  container-type:normal!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl.standard-route .corridor-axis,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl.family-loop-avl .corridor-axis{
  position:absolute!important;
  inset-block-start:0!important;
  inset-block-end:0!important;
  left:var(--live-avl-compact-axis-left-gutter-px,10px)!important;
  right:var(--live-avl-compact-axis-right-gutter-px,18px)!important;
  width:auto!important;
  inline-size:auto!important;
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  max-inline-size:100%!important;
  box-sizing:border-box!important;
  container-name:none!important;
  container-type:normal!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl.standard-route .corridor-guide-layer,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl.family-loop-avl .corridor-guide-layer{
  left:calc(var(--live-avl-compact-direction-badge-column-px,30px) + var(--live-avl-compact-axis-left-gutter-px,10px))!important;
  right:calc(12px + var(--live-avl-compact-axis-right-gutter-px,18px))!important;
  max-width:none!important;
  max-inline-size:none!important;
}

/* ========================================================================
   PHFX3.4.6 - LIVE AVL INTERMEDIATE-ZOOM PARENT-GRID CONTAINMENT
   PHFX3.4.5 bounded the route body, lane, track and percentage axis, but the
   parent .distance-avl grid still used an implicit auto-width column. Live
   AVL restores the long information/legend header that 3-Route intentionally
   hides. At intermediate browser zoom that header's min-content width could
   enlarge the shared grid column, so the route body inherited an oversized
   axis and the outer panel clipped the final stops. Constrain both parent grid
   tracks and make the Live-only header flex children genuinely shrinkable.
   Canonical GTFS/GTFS-RT 0..100% positions remain untouched.
   ======================================================================== */
section.live-page[data-page-panel="live"]{
  grid-template-columns:minmax(0,1fr)!important;
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  max-inline-size:100%!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board>.distance-avl,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board>.family-avl{
  grid-template-columns:minmax(0,1fr)!important;
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  max-inline-size:100%!important;
  overflow-x:hidden!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board>.distance-avl>.distance-avl-context,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board>.distance-avl>.distance-avl-head,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board>.distance-avl>.distance-avl-body,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board>.family-avl>.distance-avl-head,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board>.family-avl>.family-avl-body{
  grid-column:1!important;
  width:100%!important;
  inline-size:100%!important;
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  max-inline-size:100%!important;
  box-sizing:border-box!important;
  overflow-x:hidden!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl-head{
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  max-inline-size:100%!important;
  overflow:hidden!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl-head>.gtfs-alignment-note{
  flex:1 1 0!important;
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  max-inline-size:100%!important;
  overflow:hidden!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl-head>.gtfs-alignment-note>span{
  flex:1 1 auto!important;
  min-width:0!important;
  min-inline-size:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl-head>.gtfs-alignment-note>b{
  flex:0 1 auto!important;
  min-width:0!important;
  min-inline-size:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl-head>.distance-avl-legend,
#liveAvlRouteBoard.live-primary-route-board.triple-monitor-board .distance-avl-head>.family-legend{
  flex:0 1 auto!important;
  min-width:0!important;
  min-inline-size:0!important;
  max-width:100%!important;
  max-inline-size:100%!important;
  overflow:hidden!important;
}

/* ========================================================================
   AI2.1 - DETERMINISTIC CAUSAL SERVICE DIAGNOSIS
   SHADOW / advisory only. Scoped to the Service Intelligence workspace.
   IMPORTANT: appended after the protected PHFX3.4.6 Live AVL autofit rules;
   no Live AVL route-board selector is modified by AI2.1.
   ======================================================================== */
#serviceIntelligenceDrawer .ai2-causal-panel{
  margin:10px 0 12px;
  padding:12px;
  border:1px solid #c9d9e8;
  border-left:4px solid #146a9d;
  border-radius:12px;
  background:#f7fbfe;
  min-width:0;
  box-sizing:border-box;
}
#serviceIntelligenceDrawer .ai2-causal-head{margin-bottom:10px;}
#serviceIntelligenceDrawer .ai2-causal-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  min-width:0;
}
#serviceIntelligenceDrawer .ai2-causal-grid>article{
  min-width:0;
  padding:10px 11px;
  border:1px solid #d9e5ef;
  border-radius:10px;
  background:#fff;
  display:flex;
  flex-direction:column;
  gap:4px;
}
#serviceIntelligenceDrawer .ai2-causal-grid>article>span{
  font-size:10px;
  font-weight:800;
  letter-spacing:.08em;
  color:#5f7184;
}
#serviceIntelligenceDrawer .ai2-causal-grid>article>b{
  color:#123a59;
  line-height:1.35;
  overflow-wrap:anywhere;
}
#serviceIntelligenceDrawer .ai2-causal-grid>article>small{
  color:#64788c;
  line-height:1.35;
}
#serviceIntelligenceDrawer .ai2-causal-evidence ul{
  margin:2px 0 0;
  padding-left:18px;
  color:#244a68;
}
#serviceIntelligenceDrawer .ai2-causal-evidence li{margin:2px 0;}
#serviceIntelligenceDrawer .ai2-causal-safety{
  margin-top:9px;
  padding:9px 11px;
  border-radius:9px;
  background:#edf8f1;
  color:#315c42;
  display:flex;
  flex-wrap:wrap;
  gap:6px 12px;
  align-items:center;
}
#serviceIntelligenceDrawer .ai2-causal-safety>b{font-size:11px;letter-spacing:.04em;}
#serviceIntelligenceDrawer .ai2-causal-safety>span{font-size:11px;line-height:1.4;}
@media (max-width:900px){
  #serviceIntelligenceDrawer .ai2-causal-grid{grid-template-columns:minmax(0,1fr);}
}

/* AI2.1.5.4 compact futuristic live KPI strip: denser card footprint while preserving LF/HF regime separation */
.ops-kpis.hf,
.ops-kpis.lf,
.ops-kpis.family.hf,
.ops-kpis.family.lf{
  gap:6px!important;
  padding:6px!important;
  background:linear-gradient(180deg,#f7fbff 0%,#eef4fa 100%)!important;
  border:1px solid #d9e4ef!important;
  border-radius:12px!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.88)!important;
}
.ops-kpis.hf,
.ops-kpis.lf,
.ops-kpis.family.hf,
.ops-kpis.family.lf{
  grid-template-columns:repeat(10,minmax(0,1fr))!important;
}
.ops-kpis.hf article,
.ops-kpis.lf article,
.ops-kpis.family.hf article,
.ops-kpis.family.lf article{
  min-height:62px;
  padding:7px 8px!important;
  gap:2px!important;
  position:relative;
  overflow:hidden;
  border:1px solid #dde6ef!important;
  border-radius:10px!important;
  background:linear-gradient(180deg,#ffffff 0%,#f4f8fc 100%)!important;
  box-shadow:0 6px 14px rgba(18,41,64,.08)!important;
  align-content:start!important;
}
.ops-kpis.hf article::after,
.ops-kpis.lf article::after,
.ops-kpis.family.hf article::after,
.ops-kpis.family.lf article::after{
  content:'';
  position:absolute;
  left:8px;
  right:8px;
  top:0;
  height:2px;
  border-radius:999px;
  background:#c8d6e4;
}
.ops-kpis.hf article.kpi-core,
.ops-kpis.lf article.kpi-core,
.ops-kpis.family.hf article.kpi-core,
.ops-kpis.family.lf article.kpi-core{
  background:linear-gradient(180deg,#fbfdff 0%,#edf5ff 100%)!important;
  border-color:#cdddee!important;
}
.ops-kpis.hf article.ewt-pass,
.ops-kpis.lf article.ewt-pass,
.ops-kpis.family.hf article.ewt-pass,
.ops-kpis.family.lf article.ewt-pass{
  border-color:#cfe8d8!important;
  background:linear-gradient(180deg,#fdfffd 0%,#eef9f1 100%)!important;
}
.ops-kpis.hf article.ewt-pass::after,
.ops-kpis.lf article.ewt-pass::after,
.ops-kpis.family.hf article.ewt-pass::after,
.ops-kpis.family.lf article.ewt-pass::after{background:#1f9a58;}
.ops-kpis.hf article.ewt-fail,
.ops-kpis.lf article.ewt-fail,
.ops-kpis.family.hf article.ewt-fail,
.ops-kpis.family.lf article.ewt-fail{
  border-color:#efc7ca!important;
  background:linear-gradient(180deg,#fffdfd 0%,#fff1f2 100%)!important;
}
.ops-kpis.hf article.ewt-fail::after,
.ops-kpis.lf article.ewt-fail::after,
.ops-kpis.family.hf article.ewt-fail::after,
.ops-kpis.family.lf article.ewt-fail::after{background:#d7525b;}
.ops-kpis.hf article.ewt-mixed,
.ops-kpis.lf article.ewt-mixed,
.ops-kpis.family.hf article.ewt-mixed,
.ops-kpis.family.lf article.ewt-mixed{
  border-color:#ead8a8!important;
  background:linear-gradient(180deg,#fffefb 0%,#fff8e8 100%)!important;
}
.ops-kpis.hf article.ewt-mixed::after,
.ops-kpis.lf article.ewt-mixed::after,
.ops-kpis.family.hf article.ewt-mixed::after,
.ops-kpis.family.lf article.ewt-mixed::after{background:#d99a22;}
.ops-kpis.hf article.ewt-thin,
.ops-kpis.lf article.ewt-thin,
.ops-kpis.family.hf article.ewt-thin,
.ops-kpis.family.lf article.ewt-thin{
  border-color:#dbe3eb!important;
  background:linear-gradient(180deg,#ffffff 0%,#f7f9fb 100%)!important;
}
.ops-kpis.hf article.ewt-thin::after,
.ops-kpis.lf article.ewt-thin::after,
.ops-kpis.family.hf article.ewt-thin::after,
.ops-kpis.family.lf article.ewt-thin::after{background:#90a6ba;}
.ops-kpis.hf article span,
.ops-kpis.lf article span,
.ops-kpis.family.hf article span,
.ops-kpis.family.lf article span{
  font-size:8px!important;
  line-height:1.1!important;
  letter-spacing:.06em!important;
  text-transform:uppercase;
  color:#5f778f!important;
}
.ops-kpis.hf article strong,
.ops-kpis.lf article strong,
.ops-kpis.family.hf article strong,
.ops-kpis.family.lf article strong{
  font-size:14px!important;
  line-height:1.08!important;
  color:#0f2d46!important;
}
.ops-kpis.hf article.kpi-core strong,
.ops-kpis.lf article.kpi-core strong,
.ops-kpis.family.hf article.kpi-core strong,
.ops-kpis.family.lf article.kpi-core strong{font-size:15px!important;}
.ops-kpis.hf article.ewt-pass strong,
.ops-kpis.lf article.ewt-pass strong,
.ops-kpis.family.hf article.ewt-pass strong,
.ops-kpis.family.lf article.ewt-pass strong{color:#167d45!important;}
.ops-kpis.hf article.ewt-fail strong,
.ops-kpis.lf article.ewt-fail strong,
.ops-kpis.family.hf article.ewt-fail strong,
.ops-kpis.family.lf article.ewt-fail strong{color:#b53c46!important;}
.ops-kpis.hf article small,
.ops-kpis.lf article small,
.ops-kpis.family.hf article small,
.ops-kpis.family.lf article small{
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  font-size:6.8px!important;
  line-height:1.18!important;
  color:#5a7186!important;
}
.ops-kpis.hf article.qsi-audit-card{
  grid-column:span 3;
  min-height:76px;
}
.ops-kpis.hf article.qsi-audit-card strong{font-size:12px!important;}
.ops-kpis.hf article.qsi-audit-card small{
  -webkit-line-clamp:3;
  white-space:normal!important;
  overflow-wrap:anywhere;
}
@media (max-width:1500px){
  .ops-kpis.hf,
  .ops-kpis.lf,
  .ops-kpis.family.hf,
  .ops-kpis.family.lf{grid-template-columns:repeat(5,minmax(0,1fr))!important;}
  .ops-kpis.hf article.qsi-audit-card{grid-column:span 5;}
}
@media (max-width:1100px){
  .ops-kpis.hf,
  .ops-kpis.lf,
  .ops-kpis.family.hf,
  .ops-kpis.family.lf{grid-template-columns:repeat(3,minmax(0,1fr))!important;}
  .ops-kpis.hf article,
  .ops-kpis.lf article,
  .ops-kpis.family.hf article,
  .ops-kpis.family.lf article{min-height:66px;}
  .ops-kpis.hf article small,
  .ops-kpis.lf article small,
  .ops-kpis.family.hf article small,
  .ops-kpis.family.lf article small{-webkit-line-clamp:3;}
}
.ops-kpis.hf article.kpi-watch,
.ops-kpis.lf article.kpi-watch,
.ops-kpis.family.hf article.kpi-watch,
.ops-kpis.family.lf article.kpi-watch{
  border-color:#ead7a6!important;
  background:linear-gradient(180deg,#fffef9 0%,#fff7e9 100%)!important;
}
.ops-kpis.hf article.kpi-watch::after,
.ops-kpis.lf article.kpi-watch::after,
.ops-kpis.family.hf article.kpi-watch::after,
.ops-kpis.family.lf article.kpi-watch::after{background:#d59a1a;}
.ops-kpis.hf article.kpi-watch strong,
.ops-kpis.lf article.kpi-watch strong,
.ops-kpis.family.hf article.kpi-watch strong,
.ops-kpis.family.lf article.kpi-watch strong{color:#9a6900!important;}

/* AI2.1.5.9.3.8.4 Controlled Cards viewport + route-filter layout hotfix. */
.controlled-cards-page{grid-template-rows:auto minmax(0,1fr)!important;gap:8px!important;min-height:0!important;overflow:hidden!important}
.controlled-cards-page>.control-sheets-page-head{align-self:start!important;min-height:0!important;padding-top:7px!important;padding-bottom:7px!important}
.controlled-cards-panel{min-height:0!important;overflow:hidden!important;padding:10px 11px!important;display:grid!important;grid-template-rows:auto auto auto auto minmax(0,1fr) auto!important;gap:6px!important}
.controlled-cards-panel .section-head.compact{margin:0!important;min-height:0!important}
.controlled-cards-panel .gtfs-control-sheets-toolbar{margin:0!important}
.controlled-cards-panel .gtfs-control-sheets-summary{margin:0!important}
.controlled-cards-panel .gtfs-control-sheets-identity{min-height:0!important}
.controlled-cards-route-filter{min-width:190px!important}
.controlled-cards-route-filter select{min-width:190px!important}
.controlled-cards-table-wrap{max-height:none!important;height:100%!important;min-height:0!important;overflow:auto!important;scrollbar-gutter:stable both-edges!important}
.controlled-cards-panel>.gtfs-control-sheets-provenance{margin-top:0!important}
@media(max-width:780px){.controlled-cards-page{height:auto!important;overflow:visible!important}.controlled-cards-panel{display:block!important;overflow:visible!important}.controlled-cards-table-wrap{max-height:52vh!important;height:auto!important}.controlled-cards-route-filter,.controlled-cards-route-filter select{width:100%!important;min-width:0!important}}

/* P4.5-UG2 - universal roles/capabilities + all-cities policy management. Management only; UG3 remains runtime enforcement gate. */
.access-governance-tabs{display:flex;align-items:center;gap:6px;margin-bottom:6px;padding:5px;border:1px solid #d9e5ec;border-radius:10px;background:#f8fbfd;flex:0 0 auto}.access-governance-tab{border:1px solid transparent;background:transparent;border-radius:7px;padding:7px 11px;font-size:6.3px;font-weight:950;letter-spacing:.05em;color:#607789;cursor:pointer}.access-governance-tab:hover{background:#eef5f9}.access-governance-tab.active{background:#fff;border-color:#97c7dd;color:#0e729d;box-shadow:0 2px 8px rgba(22,93,125,.08)}.access-governance-tabs>.pill{margin-left:auto}.access-governance-banner{display:flex;align-items:center;gap:10px;margin-bottom:7px;padding:7px 9px;border:1px solid #efd18b;border-left:4px solid #dc9a18;border-radius:8px;background:#fffaf0;color:#6e531d;flex:0 0 auto}.access-governance-banner b{font-size:6.6px;letter-spacing:.08em;white-space:nowrap}.access-governance-banner span{font-size:6px;line-height:1.4;color:#766540}.access-governance-subpanel{min-height:0;flex:1 1 auto;overflow:auto}.access-governance-subpanel[hidden]{display:none!important}.access-governance-subpanel.active{display:flex;flex-direction:column}.access-governance-subpanel[data-access-governance-panel="roles"],.access-governance-subpanel[data-access-governance-panel="audit"]{gap:8px}
.p45-user-policy-card{grid-column:1/-1;border:1px solid #9fc9de;border-left:4px solid #1483b1;border-radius:10px;background:#f7fcff;padding:9px;display:grid;gap:7px}.p45-user-policy-card.inactive{opacity:.68}.p45-user-policy-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.p45-user-policy-head>div{display:grid;gap:2px}.p45-user-policy-head>div>span{font-size:5.4px;font-weight:950;letter-spacing:.08em;color:#548096}.p45-user-policy-head b{font-size:8px;color:#173b52}.p45-user-policy-note{margin:0!important;font-size:6px!important;line-height:1.42;color:#617d8c}.p45-user-policy-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.p45-subhead{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:5px}.p45-subhead b{font-size:6.3px;color:#284b61;letter-spacing:.06em}.p45-subhead span{font-size:5.6px;color:#7b8e99}.p45-selected-cities,.p45-custom-user{border-top:1px solid #dbeaf1;padding-top:7px}.p45-selected-cities.locked{opacity:.8}.p45-city-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:5px}.p45-city-check{display:flex;align-items:flex-start;gap:7px;border:1px solid #d4e2e9;border-radius:7px;background:#fff;padding:7px;cursor:pointer}.p45-city-check.locked{background:#f2f7f9;cursor:default}.p45-city-check input{width:14px!important;height:14px!important;min-width:14px!important;margin:0!important;padding:0!important;accent-color:#1383b1}.p45-city-check div{display:grid;gap:2px}.p45-city-check b{font-size:6.6px;color:#24485d}.p45-city-check small{font-size:5.2px;color:#7b8e99}.p45-user-policy-save{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:7px}.p45-user-policy-save .button{height:36px;white-space:nowrap}.p45-policy-message{min-height:15px;font-size:5.8px;line-height:1.4;color:#617681}.p45-policy-message.success{color:#207542;font-weight:800}.p45-policy-message.error{color:#b3262e;font-weight:800}
.p45-role-policy-panel,.p45-audit-panel{padding:10px;min-height:0;display:flex;flex-direction:column;overflow:auto}.p45-policy-toolbar{display:grid;grid-template-columns:minmax(160px,.7fr) minmax(220px,.9fr) minmax(260px,1.4fr) auto;gap:7px;align-items:end}.p45-policy-toolbar label{display:grid;gap:3px}.p45-policy-toolbar label>span{font-size:5.8px;font-weight:950;letter-spacing:.06em;color:#6a7d89}.p45-policy-toolbar input,.p45-policy-toolbar select{height:34px;border:1px solid #cbd8df;border-radius:7px;background:#fff;padding:0 8px;font-size:7.2px;color:#233b4b}.p45-policy-actions{display:flex;gap:5px}.p45-policy-actions .button{height:34px;white-space:nowrap}.p45-policy-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0 6px;padding:6px 8px;border-radius:7px;background:#f4f8fa;color:#5e7481}.p45-policy-summary span{font-size:6.1px}.p45-policy-summary b{font-size:6.5px;color:#183c55;white-space:nowrap}.p45-capability-grid{display:grid;gap:7px}.p45-capability-grid.compact{max-height:420px;overflow:auto;padding-right:2px}.p45-capability-family{border:1px solid #dce6eb;border-radius:8px;background:#fff;overflow:hidden}.p45-capability-family-head{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;background:#f4f8fa;border-bottom:1px solid #e2eaee}.p45-capability-family-head b{font-size:6.2px;color:#31566c;letter-spacing:.06em}.p45-capability-family-head span{font-size:5.2px;color:#788c97}.p45-capability-family-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:0}.p45-capability-check{display:flex;gap:7px;align-items:flex-start;padding:7px 8px;border-right:1px solid #edf2f4;border-bottom:1px solid #edf2f4;cursor:pointer;min-height:57px}.p45-capability-check:hover{background:#fbfdfe}.p45-capability-check.disabled{opacity:.65;cursor:default}.p45-capability-check input{width:14px!important;height:14px!important;min-width:14px!important;margin:1px 0 0!important;padding:0!important;accent-color:#1483b1}.p45-capability-check>div{display:grid;gap:2px;min-width:0}.p45-capability-check b{font-size:6.4px;color:#263f4f}.p45-capability-check small{font-size:5.3px;line-height:1.32;color:#738792}.p45-capability-check code{font-size:4.9px;color:#8b9aa3;background:transparent;padding:0;overflow-wrap:anywhere}.p45-future-badge{display:inline-block;margin-left:4px;padding:1px 4px;border-radius:999px;background:#fff1cf;color:#8a6212;font-size:4.7px;vertical-align:1px}.p45-protected-authority-note{display:flex;gap:9px;margin-top:8px;padding:7px 8px;border:1px solid #ebc7c9;border-left:4px solid #d72d37;border-radius:8px;background:#fff7f7}.p45-protected-authority-note b{font-size:5.9px;color:#a12b31;white-space:nowrap}.p45-protected-authority-note span{font-size:5.6px;line-height:1.4;color:#76595b}
.p45-audit-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:7px;border-bottom:1px solid #e1e9ed}.p45-audit-head span{font-size:6.2px;color:#607984}.p45-audit-head b{font-size:7px;color:#183e58}.p45-audit-list{display:grid;gap:5px;margin-top:7px;overflow:auto}.p45-audit-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:start;padding:7px 8px;border:1px solid #e0e8ec;border-radius:7px;background:#fff}.p45-audit-row>div{display:grid;gap:2px}.p45-audit-row b{font-size:6.4px;color:#263f4f}.p45-audit-row span{font-size:5.4px;color:#5f7c8c}.p45-audit-row small{font-size:5.4px;line-height:1.35;color:#7a8b95}.p45-audit-row time{font-size:5.2px;color:#81919a;white-space:nowrap}.p45-directory-policy{color:#0e769e!important;font-weight:850!important;letter-spacing:.02em!important}
@media(max-width:1260px){.p45-policy-toolbar{grid-template-columns:1fr 1fr}.p45-policy-toolbar .wide{grid-column:1/-1}.p45-policy-actions{justify-content:flex-end}.p45-capability-family-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.access-governance-tabs{flex-wrap:wrap}.access-governance-tabs>.pill{margin-left:0}.access-governance-banner{align-items:flex-start;flex-direction:column}.p45-user-policy-grid,.p45-user-policy-save,.p45-policy-toolbar{grid-template-columns:1fr}.p45-policy-actions{justify-content:stretch}.p45-policy-actions .button{flex:1}.p45-capability-family-grid{grid-template-columns:1fr}.p45-city-grid{grid-template-columns:1fr}.p45-audit-row{grid-template-columns:1fr}}


/* P0PERF3D - Command Centre reliability pulse + governed map runtime restore. */
.pc-reliability-pulse-card{position:relative;overflow:hidden;background:linear-gradient(155deg,#ffffff 0%,#f7fbff 55%,#f7f8ff 100%)!important;border-color:#dbe6ef!important}
.pc-reliability-pulse-card:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(rgba(40,111,180,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(40,111,180,.035) 1px,transparent 1px);background-size:22px 22px;mask-image:linear-gradient(to bottom,#000 0%,transparent 78%)}
.pc-reliability-pulse-card>.pc-card-head,.pc-reliability-pulse{position:relative;z-index:1}
.pc-reliability-pulse{display:grid;grid-template-columns:124px minmax(0,1fr);grid-template-areas:"overview metrics" "method method";gap:10px 12px;margin-top:8px;min-height:230px;align-items:start}
.pc-pulse-overview{grid-area:overview;display:grid;justify-items:center;gap:8px;padding:9px 8px;border:1px solid #dfe8f0;border-radius:12px;background:rgba(255,255,255,.78);box-shadow:0 8px 22px rgba(28,68,101,.06)}
.pc-reliability-gauge{--pulse-score:0%;width:98px;height:98px;border-radius:50%;padding:9px;background:conic-gradient(#1f72d2 var(--pulse-score),#e4edf4 0);box-shadow:0 0 0 1px rgba(39,104,167,.08),0 10px 24px rgba(32,90,146,.11);display:grid;place-items:center;position:relative}
.pc-reliability-gauge:before{content:"";position:absolute;inset:3px;border-radius:50%;border:1px solid rgba(255,255,255,.85)}
.pc-reliability-gauge>div{width:100%;height:100%;border-radius:50%;display:grid;place-content:center;text-align:center;background:radial-gradient(circle at 50% 38%,#fff 0%,#f6faff 100%);box-shadow:inset 0 0 18px rgba(41,111,180,.07)}
.pc-reliability-gauge strong{font-size:23px;line-height:1;color:#153f63}.pc-reliability-gauge span{font-size:5.8px;font-weight:950;letter-spacing:.1em;color:#55758d}.pc-reliability-gauge small{font-size:5.4px;font-weight:900;color:#8a9aa6;margin-top:1px}
.pc-pulse-overview.good .pc-reliability-gauge{background:conic-gradient(#22965b var(--pulse-score),#e2eee8 0)}.pc-pulse-overview.watch .pc-reliability-gauge{background:conic-gradient(#e8a11c var(--pulse-score),#f4ead7 0)}.pc-pulse-overview.bad .pc-reliability-gauge{background:conic-gradient(#d93648 var(--pulse-score),#f3e1e4 0)}
.pc-pulse-state{width:100%;text-align:center}.pc-pulse-state>span{display:block;font-size:5.5px;font-weight:950;letter-spacing:.12em;color:#758b9a}.pc-pulse-state>b{display:block;margin-top:3px;font-size:9px;letter-spacing:.04em;color:#173e5c}.pc-pulse-state>small{display:block;min-height:24px;margin-top:3px;font-size:6.2px;line-height:1.35;color:#6b8191}
.pc-pulse-wave{height:22px;display:flex;align-items:center;justify-content:center;gap:2px;margin-top:4px}.pc-pulse-wave u{display:block;width:3px;border-radius:4px;background:#2d78c5;text-decoration:none;animation:pcPulseWave 1.45s ease-in-out infinite}.pc-pulse-wave u:nth-child(1),.pc-pulse-wave u:nth-child(7){height:5px}.pc-pulse-wave u:nth-child(2),.pc-pulse-wave u:nth-child(6){height:11px;animation-delay:.08s}.pc-pulse-wave u:nth-child(3),.pc-pulse-wave u:nth-child(5){height:18px;animation-delay:.16s}.pc-pulse-wave u:nth-child(4){height:8px;animation-delay:.24s}@keyframes pcPulseWave{0%,100%{transform:scaleY(.55);opacity:.55}50%{transform:scaleY(1);opacity:1}}
.pc-pulse-metrics{grid-area:metrics;display:grid;gap:6px;min-width:0}
.pc-pulse-metric-row{display:grid;grid-template-columns:minmax(82px,.9fr) minmax(85px,1fr) 42px;gap:8px;align-items:center;padding:7px 8px;border:1px solid #e3ebf1;border-radius:9px;background:rgba(255,255,255,.84);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.pc-pulse-metric-row:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(24,63,96,.08)}
.pc-pulse-metric-row>div:first-child b{display:block;font-size:7.4px;color:#173f5e;letter-spacing:.025em}.pc-pulse-metric-row>div:first-child small{display:block;margin-top:2px;font-size:5.7px;color:#7c8e9b;line-height:1.2}.pc-pulse-metric-row>strong{font-size:9px;text-align:right;color:#173f5e}
.pc-pulse-meter{height:8px;border-radius:99px;background:#eaf0f4;position:relative;overflow:visible}.pc-pulse-meter>i{position:absolute;inset:0 auto 0 0;width:var(--pulse,0%);border-radius:99px;background:#2f8e61}.pc-pulse-meter>u{position:absolute;top:-3px;bottom:-3px;left:var(--target,0%);width:1px;background:#677c8c;text-decoration:none;opacity:.7}.pc-pulse-metric-row.watch .pc-pulse-meter>i{background:#e5a019}.pc-pulse-metric-row.bad .pc-pulse-meter>i{background:#d93648}.pc-pulse-metric-row.thin .pc-pulse-meter>i{background:#9caab4}.pc-pulse-metric-row.bad{border-left:3px solid #dc3d4e}.pc-pulse-metric-row.watch{border-left:3px solid #e8a21b}.pc-pulse-metric-row.good{border-left:3px solid #28945c}
.pc-pulse-method{grid-area:method;display:grid;grid-template-columns:auto 1fr;gap:7px;align-items:start;padding:7px 9px;border-radius:9px;background:#eef5fb;border:1px solid #dce8f1}.pc-pulse-method b{font-size:5.6px;letter-spacing:.08em;color:#1d659f}.pc-pulse-method span{font-size:5.8px;line-height:1.3;color:#6e8290}
.live-map-runtime-state{width:100%;height:100%;min-height:220px;display:grid;place-content:center;justify-items:center;gap:6px;text-align:center;background:radial-gradient(circle at 50% 45%,#f9fcff 0%,#edf4f8 100%);color:#496576}.live-map-runtime-state:before{content:"";width:28px;height:28px;border-radius:50%;border:3px solid #dce9f2;border-top-color:#2573bd;animation:pcMapRestoreSpin .9s linear infinite}.live-map-runtime-state b{font-size:7.5px;letter-spacing:.09em;color:#1b537c}.live-map-runtime-state small{font-size:6.2px;line-height:1.35;color:#718796;max-width:260px}.live-map-runtime-state.error:before{animation:none;border-color:#e7b9c0;background:#fff2f4}.live-map-runtime-state.error b{color:#b9293b}@keyframes pcMapRestoreSpin{to{transform:rotate(360deg)}}
@media(max-width:1320px){.pc-reliability-pulse{grid-template-columns:112px minmax(0,1fr)}.pc-reliability-gauge{width:88px;height:88px}.pc-pulse-metric-row{grid-template-columns:74px minmax(65px,1fr) 38px;gap:6px;padding:6px}}
@media(max-width:900px){.pc-reliability-pulse{grid-template-columns:1fr;grid-template-areas:"overview" "metrics" "method"}.pc-pulse-overview{grid-template-columns:100px 1fr;align-items:center;justify-items:start}.pc-pulse-state{text-align:left}.pc-pulse-method{grid-template-columns:1fr}}

/* P4.5-UG2-COMMS-AVL-S1 · thin Live AVL secure-call surface. No console embedding. */
.live-avl-call-overlay{position:fixed;right:18px;bottom:18px;z-index:15000;width:min(360px,calc(100vw - 28px));pointer-events:none}
.live-avl-call-overlay[hidden]{display:none!important}
.live-avl-call-card{pointer-events:auto;border:1px solid #bfd2e2;border-radius:16px;background:linear-gradient(145deg,rgba(255,255,255,.985),rgba(243,249,253,.985));box-shadow:0 24px 70px rgba(8,36,58,.23),0 0 0 1px rgba(255,255,255,.72) inset;padding:13px;display:grid;gap:9px;color:#12364e;backdrop-filter:blur(14px)}
.live-avl-call-card[data-media="connected"],.live-avl-call-card[data-media="ice:connected"],.live-avl-call-card[data-media="ice:completed"]{border-color:#79c7a0;box-shadow:0 24px 70px rgba(8,36,58,.2),0 0 0 1px rgba(41,163,99,.12) inset}
.live-avl-call-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.live-avl-call-head>span{font-size:9px;font-weight:900;letter-spacing:.12em;color:#3c7093}.live-avl-call-head>button{border:0;background:transparent;color:#617c8f;font-size:21px;line-height:1;cursor:pointer}
.live-avl-call-card>strong{font-size:18px;line-height:1.05;letter-spacing:.01em}.live-avl-call-card>span{font-size:11px;color:#647f91}
.live-avl-call-state{display:grid;grid-template-columns:10px 1fr auto;gap:8px;align-items:center;border:1px solid #dce8f0;border-radius:11px;background:#f8fbfd;padding:9px 10px}.live-avl-call-state i{width:9px;height:9px;border-radius:50%;background:#e1a127;box-shadow:0 0 0 5px rgba(225,161,39,.12);animation:liveAvlCallPulse 1.15s ease-in-out infinite}.live-avl-call-card[data-media="connected"] .live-avl-call-state i,.live-avl-call-card[data-media="ice:connected"] .live-avl-call-state i,.live-avl-call-card[data-media="ice:completed"] .live-avl-call-state i{background:#1f9b5e;box-shadow:0 0 0 5px rgba(31,155,94,.12)}
.live-avl-call-state b{font-size:10px;letter-spacing:.05em}.live-avl-call-state time{font:800 12px/1 ui-monospace,SFMono-Regular,Consolas,monospace;color:#214c68}
.live-avl-call-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.live-avl-call-actions button{min-height:38px;border:1px solid #2878b6;border-radius:9px;background:#116da9;color:#fff;font-size:10px;font-weight:900;letter-spacing:.05em;cursor:pointer}.live-avl-call-actions button.secondary{background:#fff;color:#285873;border-color:#c6d8e5}.live-avl-call-actions button.danger{background:#c93647;border-color:#b82839}.live-avl-call-actions button[hidden]{display:none}.live-avl-call-actions button:disabled{opacity:.55;cursor:wait}
.live-avl-call-card>small{min-height:15px;font-size:9px;line-height:1.35;color:#6f8695}.live-avl-call-card>small[data-tone="danger"]{color:#b52c3d}.live-avl-call-card>small[data-tone="warn"]{color:#996813}.live-avl-call-card audio{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
@keyframes liveAvlCallPulse{0%,100%{transform:scale(.8);opacity:.62}50%{transform:scale(1.08);opacity:1}}
@media(max-width:720px){.live-avl-call-overlay{right:10px;bottom:10px;width:calc(100vw - 20px)}.live-avl-call-card{border-radius:13px}.live-avl-call-actions{grid-template-columns:1fr 1fr}}

/* TC3 · Static GTFS planned-only overlay. Presentation only: never live GPS, never service-delivery/payment evidence. */
.planned-vehicle-toggle{min-width:88px;white-space:nowrap}
.planned-vehicle-toggle[aria-pressed="true"]{background:#edf3f7!important;border-color:#8ca1b2!important;color:#324a5d!important}
.planned-vehicle-toggle[aria-pressed="false"]{opacity:.62;background:#fff!important;color:#6b7883!important}
.corridor-bus.ghost-bus.planned-bus{--ghost-bus-color:#65798b;--ghost-bus-dasharray:3 4;opacity:.76;filter:saturate(.45)}
.corridor-bus.ghost-bus.planned-bus .ghost-bus-outline polygon{fill:rgba(242,246,249,.84)}
.corridor-bus.ghost-bus.planned-bus .ghost-bus-line-4{letter-spacing:.08px}
.bus-map-marker.ghost-map-marker.planned-map-marker{--ghost-bus-color:#65798b;background:rgba(242,246,249,.92)!important;opacity:.8}
.planned-map-tooltip{border-color:#65798b!important}
.triple-monitor-toolbar .planned-vehicle-toggle{align-self:end}
@media(max-width:1150px){.planned-vehicle-toggle{min-width:78px;font-size:8px;padding-left:8px;padding-right:8px}}
@media(min-width:1181px){.live-page .route-control .planned-vehicle-toggle{flex:0 0 88px!important;width:88px!important;min-width:88px!important;order:7!important;padding-left:6px!important;padding-right:6px!important}}
@media(min-width:1181px) and (max-width:1350px){.live-page .route-control .planned-vehicle-toggle{flex-basis:78px!important;width:78px!important;min-width:78px!important}}
.triple-monitor-toolbar .triple-route-selectors{grid-template-columns:repeat(3,minmax(135px,1fr)) 96px 122px!important}
@media(max-width:1180px){.triple-monitor-toolbar .triple-route-selectors{grid-template-columns:repeat(3,minmax(118px,1fr)) 86px 108px!important}}
@media(max-width:820px){.triple-monitor-toolbar .triple-route-selectors{grid-template-columns:1fr 1fr!important}.triple-monitor-toolbar .planned-vehicle-toggle{grid-column:1/-1}.triple-monitor-toolbar #refreshTripleMonitorButton{grid-column:1/-1}}


/* P5-DR3 - REPORT DRIVER from existing vehicle inspector. Scoped UI only. */
.vehicle-inspector-report-actions{display:grid;grid-template-columns:1fr;gap:8px;padding:8px 12px;border-top:1px solid #dbe4ea;background:#f9fbfc}
.vehicle-report-driver-action{min-height:52px!important;display:grid!important;align-content:center!important;gap:2px!important;background:linear-gradient(110deg,#7f1720,#b52631)!important;border:1px solid #9f2029!important;color:#fff!important;box-shadow:0 4px 12px rgba(154,31,42,.16)}
.vehicle-report-driver-action span{font-size:10px!important;font-weight:1000!important;letter-spacing:.05em}.vehicle-report-driver-action small{font-size:7px!important;font-weight:750!important;opacity:.9}.vehicle-report-driver-action[disabled]{filter:grayscale(.7);opacity:.5;box-shadow:none}
.driver-report-backdrop{position:fixed;inset:0;z-index:16000;background:rgba(5,24,39,.62);display:none;align-items:center;justify-content:center;padding:14px}.driver-report-backdrop.open{display:flex}
.driver-report-dialog{width:min(760px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow:hidden;background:#fff;border:1px solid #c9d7e1;border-radius:17px;box-shadow:0 30px 90px rgba(5,24,39,.32);display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.driver-report-head{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid #dbe5eb;background:#f7fafc}.driver-report-head h3{margin:2px 0;color:#103b60;font-size:21px}.driver-report-head>div>span{color:#667e91;font-size:8.5px;font-weight:800}.driver-report-close{width:32px;height:32px;border:1px solid #c9d7e1;border-radius:9px;background:#fff;color:#153e60;font-size:19px;cursor:pointer}
.driver-report-body{padding:15px 18px;overflow:auto}.driver-report-policy{display:grid;gap:4px;padding:10px 12px;border:1px solid #cfe0ec;border-left:5px solid #1f6a96;border-radius:10px;background:#eef7fc}.driver-report-policy b{font-size:8px;letter-spacing:.08em;color:#164c6d}.driver-report-policy span{font-size:9px;line-height:1.45;color:#486c82}
.driver-report-context{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px}.driver-report-context article{padding:9px 10px;border:1px solid #d8e4eb;border-radius:9px;background:#fff;min-width:0}.driver-report-context span{display:block;font-size:6.5px;font-weight:950;letter-spacing:.08em;color:#6e8291}.driver-report-context b{display:block;margin-top:4px;font-size:10px;color:#123e5d;overflow-wrap:anywhere}.driver-report-context small{display:block;margin-top:3px;font-size:7px;color:#788c9a;overflow-wrap:anywhere}
.driver-report-form{display:grid;grid-template-columns:1.35fr .65fr;gap:10px;margin-top:12px}.driver-report-form label{display:grid;gap:5px}.driver-report-form label>span{font-size:7px;font-weight:950;letter-spacing:.09em;color:#657d90}.driver-report-form select,.driver-report-form textarea{width:100%;border:1px solid #c8d6e0;border-radius:9px;background:#fff;color:#123d5e;padding:10px 11px;font-size:10px;font-weight:800}.driver-report-form textarea{resize:vertical;min-height:90px;font-weight:650;line-height:1.45}.driver-report-form .wide{grid-column:1/-1}
.driver-report-message{margin-top:10px;padding:9px 10px;border-radius:8px;background:#eef6fb;color:#285979;font-size:9px;font-weight:800;line-height:1.4}.driver-report-message.ok{background:#eaf8f1;color:#176a45}.driver-report-message.warn{background:#fff8df;color:#7b5c00}.driver-report-message.error{background:#fff0f1;color:#ae2228}
.driver-report-actions{display:grid;grid-template-columns:.6fr 1.4fr;gap:9px;padding:12px 18px;border-top:1px solid #dce5eb;background:#f8fafc}.driver-report-actions button{min-height:50px}.driver-report-actions #driverReportSubmit{background:#a51f2b;border-color:#a51f2b}
@media(max-width:760px){.driver-report-backdrop{padding:5px;align-items:stretch}.driver-report-dialog{width:100%;max-height:calc(100dvh - 10px);align-self:center}.driver-report-context{grid-template-columns:1fr 1fr}.driver-report-form{grid-template-columns:1fr}.driver-report-form .wide{grid-column:auto}.driver-report-actions{grid-template-columns:1fr}.vehicle-inspector-report-actions{padding:7px}}


/* P5 DR3.2 / DR5 / DR6 - Driver Reporting Manager View */
.driver-report-manual-identity{margin:14px 0;padding:14px;border:1px solid rgba(217,119,6,.35);border-radius:14px;background:rgba(255,247,237,.9)}
.driver-report-manual-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.driver-report-manual-head div{display:grid;gap:4px}.driver-report-manual-head b{font-size:12px;letter-spacing:.06em}.driver-report-manual-head span{font-size:12px;color:var(--muted,#64748b)}
.driver-report-manual-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.driver-report-manual-grid label{display:grid;gap:5px}.driver-report-manual-grid label.wide{grid-column:1/-1}.driver-report-manual-grid label>span{font-size:10px;font-weight:800;letter-spacing:.08em;color:#92400e}.driver-report-manual-grid input{min-height:40px;border:1px solid rgba(148,163,184,.55);border-radius:9px;padding:0 11px;background:#fff}
.driver-manager-tab:not([hidden]){display:flex}.pc-driver-manager{display:grid;gap:12px}
.driver-reporting-page{min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;padding-bottom:16px}
.driver-reporting-page .pc-driver-manager{display:grid;gap:12px;min-width:0}
.driver-reporting-page .driver-manager-toolbar{position:sticky;top:0;z-index:4}
.driver-manager-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;padding:16px}.driver-manager-toolbar h3{margin:2px 0 5px}.driver-manager-toolbar p{max-width:900px;margin:0;color:var(--muted,#64748b)}.driver-manager-toolbar-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.driver-manager-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.driver-manager-kpis article{background:#fff;border:1px solid rgba(148,163,184,.28);border-radius:14px;padding:13px 15px;display:grid;gap:2px;box-shadow:0 8px 24px rgba(15,23,42,.04)}.driver-manager-kpis span{font-size:10px;font-weight:850;letter-spacing:.08em;color:#64748b}.driver-manager-kpis b{font-size:27px;line-height:1.05}.driver-manager-kpis small{color:#64748b}
.driver-manager-filters{padding:12px 14px;display:grid;grid-template-columns:160px 160px 160px minmax(220px,1fr);gap:10px}.driver-manager-filters label{display:grid;gap:5px}.driver-manager-filters label>span{font-size:10px;font-weight:800;letter-spacing:.07em;color:#64748b}.driver-manager-filters select,.driver-manager-filters input,.driver-manager-detail-panel select,.driver-manager-detail-panel input,.driver-manager-detail-panel textarea{min-height:38px;border:1px solid rgba(148,163,184,.5);border-radius:9px;background:#fff;padding:7px 10px}
.driver-manager-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(350px,.85fr);gap:12px;align-items:start}.driver-manager-queue-panel,.driver-manager-detail-panel{min-height:420px;padding:14px}.driver-manager-table-wrap{overflow:auto;max-height:58vh;border:1px solid rgba(148,163,184,.22);border-radius:10px}.driver-manager-table{width:100%;border-collapse:collapse;font-size:12px}.driver-manager-table th{position:sticky;top:0;background:#f8fafc;text-align:left;padding:9px 8px;white-space:nowrap;z-index:1}.driver-manager-table td{padding:9px 8px;border-top:1px solid rgba(148,163,184,.18);vertical-align:top}.driver-manager-table tr[data-report-id]{cursor:pointer}.driver-manager-table tr[data-report-id]:hover,.driver-manager-table tr.selected{background:#eff6ff}.driver-manager-table .sev-critical{font-weight:800;color:#b91c1c}.driver-manager-table .sev-serious{font-weight:800;color:#c2410c}.driver-manager-table .sev-positive{font-weight:800;color:#047857}
.driver-manager-detail-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding-bottom:10px;border-bottom:1px solid rgba(148,163,184,.25)}.driver-manager-detail-head h3{margin:2px 0}.driver-manager-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.driver-manager-detail-grid article{padding:9px;border:1px solid rgba(148,163,184,.2);border-radius:9px;background:#f8fafc;display:grid;gap:2px}.driver-manager-detail-grid span{font-size:9px;font-weight:800;letter-spacing:.08em;color:#64748b}.driver-manager-detail-grid b{font-size:12px}.driver-manager-evidence-note{padding:10px;border-radius:9px;background:#f8fafc;color:#475569;font-size:12px;margin-bottom:10px}.driver-manager-action-form{display:grid;gap:9px;border-top:1px solid rgba(148,163,184,.25);padding-top:11px}.driver-manager-action-form label{display:grid;gap:4px}.driver-manager-action-form label>span{font-size:10px;font-weight:800;color:#64748b;letter-spacing:.06em}.driver-manager-action-buttons{display:flex;flex-wrap:wrap;gap:6px}.driver-manager-history{margin-top:12px;border-top:1px solid rgba(148,163,184,.25);padding-top:10px}.driver-manager-history-item{display:grid;gap:2px;padding:8px 0;border-bottom:1px solid rgba(148,163,184,.15);font-size:12px}.driver-manager-history-item small{color:#64748b}
@media(max-width:1180px){.driver-manager-layout{grid-template-columns:1fr}.driver-manager-kpis{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.driver-manager-kpis{grid-template-columns:repeat(2,1fr)}.driver-manager-filters{grid-template-columns:1fr 1fr}.driver-report-manual-grid{grid-template-columns:1fr}.driver-report-manual-grid label.wide{grid-column:auto}}
/* SCAVL_GTFS_RT_IDENTITY_FORENSICS_V1_20260908 · read-only diagnostic presentation */
.identity-forensics{margin-top:14px;display:grid;gap:12px}.identity-forensics-banner{border:1px solid rgba(37,99,235,.28);background:#eff6ff;border-radius:12px;padding:12px 14px;display:grid;grid-template-columns:auto auto 1fr;gap:8px 14px;align-items:center}.identity-forensics-banner>b{font-size:13px}.identity-forensics-banner>span{font-size:10px;font-weight:900;letter-spacing:.08em;color:#1d4ed8}.identity-forensics-banner>small{color:#475569}.identity-forensics-provider{border:1px solid rgba(148,163,184,.3);border-radius:12px;padding:12px;background:#fff;display:grid;gap:10px}.identity-forensics-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.identity-static-line,.identity-tu-summary{font-size:11px;color:#475569;background:#f8fafc;border:1px solid rgba(148,163,184,.2);border-radius:8px;padding:9px 10px}.identity-table-wrap{overflow:auto;max-height:280px;border:1px solid rgba(148,163,184,.24);border-radius:9px}.identity-table{width:100%;border-collapse:collapse;font-size:10px}.identity-table th{position:sticky;top:0;background:#f8fafc;text-align:left;white-space:nowrap;padding:7px 8px;z-index:1}.identity-table td{padding:7px 8px;border-top:1px solid rgba(148,163,184,.16);white-space:nowrap}.identity-table td small{display:block;color:#64748b}.identity-gap-row{background:#fff7ed}.identity-samples{max-height:420px}@media(max-width:1100px){.identity-forensics-kpis{grid-template-columns:1fr 1fr}.identity-forensics-banner{grid-template-columns:1fr}}
/* SCAVL_GTFS_RT_COVERAGE_FORENSICS_V2_20260908 · read-only route coverage/pairing truth */
.coverage-forensics{margin-top:12px}.coverage-forensics-banner{border-color:rgba(14,116,144,.28);background:#ecfeff}.coverage-forensics-banner>span{color:#0e7490}.coverage-forensics-provider{border-color:rgba(14,116,144,.22)}.coverage-endpoint-line{font:700 10px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace;color:#475569;background:#f8fafc;border:1px solid rgba(148,163,184,.22);border-radius:8px;padding:9px 10px;overflow-wrap:anywhere}.coverage-table-wrap{max-height:390px}.coverage-conflict-wrap{max-height:250px}.coverage-state{display:inline-block;border-radius:999px;padding:3px 7px;font-size:8px;font-weight:900;letter-spacing:.04em;white-space:nowrap}.coverage-state.good{background:#e9f8ef;color:#166534}.coverage-state.warn{background:#fff7dd;color:#854d0e}.coverage-state.bad{background:#fff0f2;color:#b4232f}.coverage-state.wait{background:#eef2f6;color:#64748b}.coverage-bad-row{background:#fff5f6}.coverage-warn-row{background:#fffaf0}.coverage-good-row{background:#f8fffb}.coverage-wait-row{background:#fafbfc}

/* SCAVL_GTFSRTF3_UNIVERSAL_REALTIME_COVERAGE_TRUTH_20260908
   Presentation truth only. No matcher, route assignment, service-delivery or Location Truth authority. */
.realtime-coverage-truth{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:1 1 0;min-width:0;min-height:30px;height:30px;max-height:30px;padding:3px 8px;border-bottom:1px solid #efd28c;background:#fff8df;overflow:hidden}
.realtime-coverage-truth>div:first-child{display:flex;flex-direction:column;justify-content:center;min-width:0;overflow:hidden}.realtime-coverage-truth>div:first-child b{font-size:6.3px;letter-spacing:.5px;color:#7c5600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.realtime-coverage-truth>div:first-child span{font-size:5.4px;color:#7f704b;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.realtime-coverage-truth.ok{background:#edf8f1;border-bottom-color:#c9e5d3}.realtime-coverage-truth.ok>div:first-child b{color:#27704a}.realtime-coverage-truth.neutral{background:#f5f7f9;border-bottom-color:#d7dee4}.realtime-coverage-truth.neutral>div:first-child b{color:#647789}.realtime-coverage-truth-metrics{display:flex;align-items:center;gap:4px;flex:0 0 auto}.realtime-coverage-truth-metrics span{border:1px solid #e3d49d;background:#fff;border-radius:999px;padding:2px 5px;font-size:5.2px;font-weight:900;color:#6f6038;white-space:nowrap}.realtime-coverage-truth-metrics b{font-size:5.8px}.realtime-coverage-truth.ok .realtime-coverage-truth-metrics span{border-color:#c9e5d3;color:#27704a}.realtime-coverage-truth.neutral .realtime-coverage-truth-metrics span{border-color:#d7dee4;color:#647789}
.realtime-coverage-compact{margin:0 8px 6px;padding:5px 7px;border:1px solid #efd28c;border-radius:7px;background:#fff8df;display:flex;align-items:center;gap:7px;min-width:0}.realtime-coverage-compact b{font-size:6.2px;color:#7c5600;white-space:nowrap}.realtime-coverage-compact span{font-size:5.6px;color:#7f704b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.realtime-coverage-compact.neutral{background:#f5f7f9;border-color:#d7dee4}.realtime-coverage-compact.neutral b{color:#647789}.coverage-truth-chip.warn{background:#fff1c7!important;color:#7b5800!important;border-color:#efd28c!important}.coverage-truth-chip.neutral{background:#f1f4f6!important;color:#647789!important;border-color:#d7dee4!important}
@media(max-width:1100px){.realtime-coverage-truth>div:first-child span{display:none}.realtime-coverage-truth-metrics span:nth-child(4){display:none}.realtime-coverage-compact span{font-size:5.2px}}

/* GTFSRTF3-HFX1: keep universal realtime coverage truth in the existing Energy Watch middle gap, not over the AVL diagram. */
.energy-watch-rt-truth{display:flex;align-items:center;gap:7px;min-width:0;max-width:min(520px,38vw);margin:0 auto 0 8px;padding:4px 8px;border:1px solid #efd28c;border-radius:7px;background:#fff8df;overflow:hidden;flex:1 1 280px}
.energy-watch-rt-truth b{font-size:7px;line-height:1.05;letter-spacing:.045em;color:#7c5600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.energy-watch-rt-truth span{font-size:6.2px;font-weight:850;color:#7f704b;white-space:nowrap;flex:0 0 auto}
.energy-watch-rt-truth.ok{border-color:#c9e5d3;background:#edf8f1}.energy-watch-rt-truth.ok b,.energy-watch-rt-truth.ok span{color:#27704a}
.energy-watch-rt-truth.neutral{border-color:#d7dee4;background:#f5f7f9}.energy-watch-rt-truth.neutral b,.energy-watch-rt-truth.neutral span{color:#647789}
.energy-watch-summary.coverage-only{justify-content:center}
.energy-watch-summary.coverage-only .energy-watch-rt-truth{margin:0;max-width:760px;flex:1 1 auto}
@media(max-width:1280px){.energy-watch-rt-truth{max-width:330px}.energy-watch-rt-truth span{display:none}}
@media(max-width:900px){.energy-watch-rt-truth{order:2;width:100%;max-width:none;margin-left:0}.energy-watch-summary{flex-wrap:wrap}}

/* APC-P1 · vendor-neutral passenger counting / GTFS-ride */
.vehicle-apc-section{border-color:#d7e2eb;background:linear-gradient(180deg,#fbfdff,#f7fafc)}
.vehicle-apc-status{border-radius:999px;padding:.22rem .55rem;font-weight:800;letter-spacing:.03em}.vehicle-apc-status.green{background:#eaf8ef;color:#16713b}.vehicle-apc-status.amber{background:#fff5dc;color:#8c5b00}.vehicle-apc-status.red{background:#ffe8e8;color:#a11f24}.vehicle-apc-status.grey{background:#edf1f4;color:#536270}
.vehicle-apc-empty{display:grid;gap:.28rem;padding:.8rem;border:1px dashed #c7d4df;border-radius:12px;background:#fff}.vehicle-apc-empty b{font-size:.82rem}.vehicle-apc-empty span{font-size:.72rem;color:#647483}
.vehicle-apc-grid,.vehicle-apc-evidence{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem}.vehicle-apc-grid article,.vehicle-apc-evidence>div{min-width:0;border:1px solid #dce6ed;border-radius:10px;background:#fff;padding:.62rem}.vehicle-apc-grid span,.vehicle-apc-evidence span{display:block;font-size:.59rem;font-weight:800;letter-spacing:.06em;color:#647483}.vehicle-apc-grid b{display:block;margin:.16rem 0;font-size:1.1rem;color:#123a57}.vehicle-apc-evidence{margin-top:.55rem}.vehicle-apc-evidence b{display:block;margin:.16rem 0;font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vehicle-apc-grid small,.vehicle-apc-evidence small{display:block;font-size:.61rem;color:#70808d;line-height:1.3}
.vehicle-apc-detail{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin-top:.55rem;padding:.5rem;border-radius:9px;background:#eef5f8}.vehicle-apc-detail>span{font-size:.58rem;font-weight:900;letter-spacing:.06em;color:#586b79}.vehicle-apc-detail>b{font-size:.62rem;padding:.2rem .4rem;border-radius:999px;background:#fff;border:1px solid #d6e0e7}.vehicle-apc-foot{display:flex;justify-content:space-between;gap:.75rem;margin-top:.55rem;padding-top:.45rem;border-top:1px solid #dfe7ed;font-size:.6rem;color:#61727f}.vehicle-apc-foot b{color:#274d66}.apc-green{color:#16713b!important}.apc-amber{color:#986300!important}.apc-red{color:#a11f24!important}.apc-grey{color:#61727f!important}
.apc-admin-toolbar{align-items:flex-start}.apc-standards-banner{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin:0 0 .75rem;padding:.7rem .85rem;border:1px solid #cddde7;border-radius:12px;background:#f3f8fb}.apc-standards-banner b{font-size:.78rem;color:#174764}.apc-standards-banner span{font-size:.68rem;color:#5f7180;max-width:72ch}.apc-admin-message{margin:0 0 .75rem;padding:.58rem .72rem;border-radius:9px;background:#edf4f8;color:#31536a;font-size:.7rem}.apc-admin-message.success{background:#e9f7ef;color:#17613a}.apc-admin-message.warn{background:#fff5dc;color:#805400}.apc-admin-message.error{background:#ffeaea;color:#941d24}
.apc-admin-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.8rem}.apc-admin-stack{display:grid;align-content:start;gap:.8rem}.apc-admin-panel{padding:.85rem}.apc-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.apc-form-grid label{min-width:0}.apc-form-grid label>span{display:block;margin-bottom:.2rem;font-size:.59rem;font-weight:800;letter-spacing:.05em;color:#607484}.apc-form-grid input,.apc-form-grid select,.apc-form-grid textarea{width:100%;min-width:0}.apc-form-grid .wide{grid-column:1/-1}.apc-actions,.apc-export-actions{display:flex;flex-wrap:wrap;gap:.45rem;justify-content:flex-end;margin-top:.65rem}.apc-rule-note,.apc-privacy-note{display:flex;gap:.5rem;align-items:flex-start;margin-top:.65rem;padding:.58rem .66rem;border-radius:9px;background:#f5f8fa;font-size:.65rem;color:#61727f}.apc-rule-note b,.apc-privacy-note b{color:#234c67;white-space:nowrap}.apc-privacy-note{background:#fff7e5}.apc-table-wrap{overflow:auto;max-width:100%}.apc-table-wrap table{min-width:620px}.apc-table-wrap td small{display:block;color:#71808c;font-size:.6rem}
@media(max-width:1200px){.apc-admin-layout{grid-template-columns:1fr}.vehicle-apc-grid,.vehicle-apc-evidence{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.apc-form-grid{grid-template-columns:1fr}.apc-form-grid .wide{grid-column:auto}.apc-standards-banner,.vehicle-apc-foot{flex-direction:column;align-items:flex-start}.vehicle-apc-grid,.vehicle-apc-evidence{grid-template-columns:1fr}}
/* APC-P1 standards + integration adapter contract */
.apc-integration-panel{border-color:#c8dce8;background:linear-gradient(180deg,#fbfdff,#f4f9fc)}
.apc-integration-flow{display:flex;flex-wrap:wrap;align-items:center;gap:.42rem;margin:.2rem 0 .65rem;padding:.62rem;border:1px solid #d7e4ec;border-radius:10px;background:#fff}.apc-integration-flow b{font-size:.59rem;letter-spacing:.045em;color:#1b4c68}.apc-integration-flow span{font-size:.72rem;color:#8293a0}
.apc-contract-endpoint{display:grid;gap:.25rem;margin:.55rem 0;padding:.62rem .7rem;border-radius:9px;background:#102f43;color:#fff}.apc-contract-endpoint span{font-size:.55rem;font-weight:900;letter-spacing:.08em;opacity:.72}.apc-contract-endpoint code{font-size:.68rem;overflow-wrap:anywhere;color:#e9f7ff}
.apc-rule-note code{font-size:.62rem;padding:.06rem .22rem;border-radius:4px;background:#eaf1f5;color:#234c67}
.vehicle-apc-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.vehicle-apc-evidence{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1200px){.vehicle-apc-grid,.vehicle-apc-evidence{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.vehicle-apc-grid,.vehicle-apc-evidence{grid-template-columns:1fr}.apc-integration-flow{align-items:flex-start}}

/* APC-P1-HFX2: fail-closed passenger presentation + visible action feedback. */
.apc-action-toast{position:fixed;right:22px;bottom:22px;z-index:22000;max-width:min(560px,calc(100vw - 44px));padding:.72rem .9rem;border-radius:12px;background:#173d55;color:#fff;font-size:.72rem;font-weight:800;line-height:1.35;box-shadow:0 12px 34px rgba(14,39,56,.28);opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .16s ease,transform .16s ease}.apc-action-toast.show{opacity:1;transform:translateY(0)}.apc-action-toast.success{background:#14663b}.apc-action-toast.warn{background:#8a5c00}.apc-action-toast.error{background:#a11f24}
.vehicle-apc-grid .apc-provider-card b,.vehicle-apc-evidence .apc-integration-card b{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word;line-height:1.15}.vehicle-apc-grid .apc-provider-card b{font-size:.82rem}.vehicle-apc-evidence .apc-integration-card b{font-size:.68rem}.vehicle-apc-evidence .apc-reconciliation-card small{white-space:normal;overflow-wrap:anywhere}.vehicle-apc-evidence .apc-reconciliation-card b{white-space:normal;overflow:visible;text-overflow:clip}
@media(max-width:720px){.apc-action-toast{left:14px;right:14px;bottom:14px;max-width:none}}
/* APC-P4 capacity, sensor and data-health governance */
.apc-p4-governance-panel{border-color:#c8dbe7;background:linear-gradient(180deg,#fbfdff 0%,#f7fbfd 100%)}
.apc-p4-governance-panel .section-head p{max-width:82ch}
.apc-p4-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;margin:.7rem 0}
.apc-p4-kpi-grid article{min-width:0;padding:.62rem .66rem;border:1px solid #d8e4eb;border-radius:10px;background:#fff}
.apc-p4-kpi-grid article span{display:block;font-size:.55rem;font-weight:900;letter-spacing:.06em;color:#607484}
.apc-p4-kpi-grid article b{display:block;margin:.15rem 0;font-size:1.05rem;color:#173f58}
.apc-p4-kpi-grid article small{display:block;font-size:.59rem;color:#70818d;line-height:1.25}
.apc-p4-contract{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;margin:.55rem 0 .7rem}
.apc-p4-contract>div{padding:.58rem .65rem;border:1px solid #d6e3ea;border-radius:9px;background:#f5f9fb}
.apc-p4-contract span{display:block;font-size:.55rem;font-weight:900;letter-spacing:.05em;color:#687c89}.apc-p4-contract b{display:block;margin:.12rem 0;color:#234c67;font-size:.7rem}.apc-p4-contract small{font-size:.59rem;color:#71828e}
.apc-p4-exceptions{margin-top:.6rem}.apc-p4-state,.apc-p4-severity{display:inline-flex;padding:.13rem .36rem;border-radius:999px;font-size:.55rem;font-weight:900;letter-spacing:.03em;background:#edf3f6;color:#456273}
.apc-p4-current_shadow_evidence{background:#e7f6ed;color:#17613a}.apc-p4-no_current_evidence,.apc-p4-no_bindings{background:#fff4d9;color:#7a5400}.apc-p4-not_shadow,.apc-p4-severity-critical{background:#ffe8e8;color:#9b1d23}.apc-p4-inactive{background:#eef1f3;color:#6d7880}.apc-p4-severity-warn{background:#fff3d6;color:#7a5400}.apc-p4-severity-info{background:#edf4f8;color:#31536a}
@media(max-width:1200px){.apc-p4-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.apc-p4-kpi-grid,.apc-p4-contract{grid-template-columns:1fr}}

/* PERF-CENTRE-V2-A1 · Unified Network Control · canonical Performance Truth V2 consumer */
.pc-v2-retired-tab{display:none!important}.pc-network-control-v2.pc-v2-live>#pcNetworkControlV2{display:grid!important}.pc-network-control-v2.pc-v2-live>.pc-network-pulse-grid,.pc-network-control-v2.pc-v2-live>.pc-network-pulse-card,.pc-network-control-v2.pc-v2-live>.pc-observation-ribbon,.pc-network-control-v2.pc-v2-live>.pc-command-grid,.pc-network-control-v2.pc-v2-live>.pc-command-performance-detail{display:none!important}
.pc-v2-control{gap:9px;align-content:start;position:relative;padding:8px;border:1px solid #e1ebf1;border-radius:16px;background:linear-gradient(145deg,#fbfdff 0%,#f6fafc 52%,#fbfdff 100%);box-shadow:0 8px 28px rgba(16,54,78,.045);overflow:hidden}.pc-v2-control:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,#1a77a7 0%,#1a77a7 18%,#25a56a 42%,#e8b33e 68%,#d94452 100%);opacity:.72;pointer-events:none}.pc-v2-authority-ribbon{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border:1px solid #d7e4eb;border-radius:12px;background:linear-gradient(90deg,#f8fbfd,#f3f8fb);box-shadow:0 2px 10px rgba(15,56,82,.035)}.pc-v2-authority-ribbon>div:first-child{display:flex;align-items:center;gap:8px}.pc-v2-authority-ribbon b{font-size:9px;color:#113d5b;letter-spacing:.045em}.pc-v2-authority-ribbon small{font-size:6.8px;color:#728693}.pc-v2-live-pulse{width:9px;height:9px;border-radius:50%;background:#1ca65a;box-shadow:0 0 0 4px rgba(28,166,90,.12)}.pc-v2-authority-meta{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.pc-v2-authority-meta span{font-size:6.2px;font-weight:900;letter-spacing:.05em;color:#4f6879;padding:5px 8px;border-radius:999px;background:#fff;border:1px solid #dbe6ec}.pc-v2-kpis{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px}.pc-v2-kpis article{position:relative;overflow:hidden;padding:11px 12px;border:1px solid #dce6ec;border-radius:12px;background:#fff;min-height:82px;box-shadow:0 5px 16px rgba(14,56,84,.055);transition:transform .14s ease,box-shadow .14s ease}.pc-v2-kpis article:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:#8da7b7;opacity:.78}.pc-v2-kpis article:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(14,56,84,.075)}.pc-v2-kpis article.scheduled{background:linear-gradient(145deg,#f1f8ff,#fbfdff);border-color:#d7e8f5}.pc-v2-kpis article.scheduled:before{background:#287fb0}.pc-v2-kpis article.plan{background:linear-gradient(145deg,#f5f9ff,#fbfdff);border-color:#dce8f6}.pc-v2-kpis article.plan:before{background:#5c89bd}.pc-v2-kpis article.impact{background:linear-gradient(145deg,#fff4f5,#fffafb);border-color:#f4d7dc}.pc-v2-kpis article.impact:before{background:#d74351}.pc-v2-kpis article.delivery{background:linear-gradient(145deg,#f0fbfa,#fbfefd);border-color:#d5ebe8}.pc-v2-kpis article.delivery:before{background:#1f9a91}.pc-v2-kpis .delivery strong{color:#167d75}.pc-v2-kpis article.fleet{background:linear-gradient(145deg,#f3fbf6,#fbfefc);border-color:#d9eadf}.pc-v2-kpis article.fleet:before{background:#24905d}.pc-v2-kpis article.risk{background:linear-gradient(145deg,#fff9ed,#fffdf7);border-color:#efe1bf}.pc-v2-kpis article.risk:before{background:#d39b25}.pc-v2-kpis article.evidence{background:linear-gradient(145deg,#f7f7ff,#fcfcff);border-color:#e4e2f6}.pc-v2-kpis article.evidence:before{background:#7b71b5}.pc-v2-kpis span{display:block;font-size:6px;font-weight:950;letter-spacing:.07em;color:#6a7f8c}.pc-v2-kpis strong{display:block;margin-top:7px;font-size:18px;line-height:1;color:#153c59}.pc-v2-kpis .impact strong{color:#d52b3b}.pc-v2-kpis .fleet strong{color:#168552}.pc-v2-kpis small{display:block;margin-top:6px;font-size:6.3px;line-height:1.35;color:#7a8d99}.pc-v2-main-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(320px,.7fr);gap:9px}.pc-v2-map-panel,.pc-v2-queue-panel,.pc-v2-route-panel,.pc-v2-reliability,.pc-v2-ai-brief{padding:10px!important;border-radius:12px!important}.pc-v2-map{height:330px;min-height:300px;border-radius:10px;overflow:hidden;background:#eef4f7;border:1px solid #d8e4eb}.pc-v2-queue{display:grid;gap:6px;max-height:360px;overflow:auto;padding-right:2px}.pc-v2-queue button{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:8px;align-items:center;width:100%;padding:8px;border:1px solid #dfe8ed;border-radius:9px;background:#fff;text-align:left;cursor:pointer}.pc-v2-queue button:hover{border-color:#b9cdd9;background:#fbfdfe}.pc-v2-queue button>span{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;font-size:7px;font-weight:950;background:#f1f5f8;color:#446175}.pc-v2-queue button.critical>span{background:#fff0f2;color:#d42d3d}.pc-v2-queue button.watch>span{background:#fff7e5;color:#bd7f00}.pc-v2-queue b{display:block;font-size:8px;color:#173b56}.pc-v2-queue small{display:block;margin-top:2px;font-size:6.1px;color:#71848f}.pc-v2-queue strong{font-size:9px;color:#c92d3a;white-space:nowrap}.pc-v2-lower-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,.72fr) minmax(300px,.78fr);gap:9px}.pc-v2-route-table-wrap{max-height:290px;overflow:auto}.pc-v2-route-table{width:100%;border-collapse:collapse;font-size:7px}.pc-v2-route-table th{position:sticky;top:0;background:#f4f8fa;color:#607684;font-size:5.8px;letter-spacing:.05em;text-align:left;padding:6px;border-bottom:1px solid #dbe6ec;z-index:1}.pc-v2-route-table td{padding:6px;border-bottom:1px solid #e5edf1;color:#38556a}.pc-v2-route-table tr{cursor:pointer}.pc-v2-route-table tr:hover{background:#f8fbfd}.pc-v2-route-table .risk-pill{display:inline-block;padding:3px 6px;border-radius:999px;font-size:5.5px;font-weight:950}.pc-v2-route-table .risk-pill.critical{background:#ffe8ec;color:#c92e3e}.pc-v2-route-table .risk-pill.watch{background:#fff3d7;color:#a86d00}.pc-v2-route-table .risk-pill.stable{background:#e7f7ee;color:#187f4d}.pc-v2-route-table .risk-pill.thin{background:#edf1f4;color:#6e7f89}.pc-v2-reliability-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.pc-v2-reliability-grid article{padding:9px;border:1px solid #e0e8ed;border-radius:9px;background:#fbfdfe}.pc-v2-reliability-grid span{display:block;font-size:5.7px;font-weight:950;letter-spacing:.05em;color:#6c808d}.pc-v2-reliability-grid strong{display:block;font-size:16px;color:#173c58;margin-top:5px}.pc-v2-reliability-grid small{display:block;font-size:6.1px;color:#7b8d98;margin-top:4px}.pc-v2-decision-brief{padding:10px;border-radius:9px;background:#f7f9ff;border:1px solid #e0e4f4;font-size:7px;line-height:1.45;color:#3f5770}.pc-v2-warnings{display:grid;gap:5px;margin-top:7px}.pc-v2-warnings span{display:block;padding:6px 7px;border-radius:8px;background:#fff8e8;border:1px solid #f0dfb8;color:#8d6500;font-size:6.1px;line-height:1.3}.pc-v2-warnings span.pass{background:#eef9f3;border-color:#d5ebde;color:#37735a}.pc-v2-ai-drawer{position:fixed;z-index:1300;top:58px;right:0;bottom:0;width:min(440px,96vw);padding:16px;background:#fff;border-left:1px solid #d7e3ea;box-shadow:-16px 0 42px rgba(19,50,71,.18);overflow:auto}.pc-v2-ai-drawer-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding-bottom:12px;border-bottom:1px solid #e2e9ee}.pc-v2-ai-drawer-head h3{margin:2px 0!important;font-size:18px!important}.pc-v2-ai-drawer-head small{font-size:7px;color:#758792}.pc-v2-ai-drawer-head button{border:0;background:#f2f5f7;width:30px;height:30px;border-radius:8px;font-size:20px;color:#57707f;cursor:pointer}.pc-v2-ai-context{margin:12px 0;padding:10px;border-radius:10px;background:#f5f8fb;border:1px solid #dfe8ed;font-size:7px;line-height:1.5;color:#3a5669;white-space:pre-line}.pc-v2-ai-drawer label{display:grid;gap:6px}.pc-v2-ai-drawer label span{font-size:6px;font-weight:950;letter-spacing:.07em;color:#647b8a}.pc-v2-ai-drawer textarea{width:100%;min-height:100px;resize:vertical;border:1px solid #cfdae1;border-radius:9px;padding:9px;font:inherit;font-size:8px}.pc-v2-ai-drawer .button{margin:9px 0}.pc-v2-ai-drawer .performance-ai-result{min-height:120px}.pc-v2-network-tab{min-width:220px}.pc-v2-control .leaflet-container{font-family:inherit}
@media(max-width:1350px){.pc-v2-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.pc-v2-main-grid,.pc-v2-lower-grid{grid-template-columns:1fr}.pc-v2-map{height:300px}}@media(max-width:760px){.pc-v2-kpis{grid-template-columns:1fr 1fr}.pc-v2-authority-ribbon{align-items:flex-start;flex-direction:column}.pc-v2-authority-meta{justify-content:flex-start}.pc-v2-map{height:270px}.pc-v2-lower-grid{grid-template-columns:1fr}.pc-v2-route-table-wrap{overflow:auto}.pc-v2-route-table{min-width:720px}}


/* PERF-CENTRE-V2-A1-HFX1 · Dynamic AI drawer portal + responsive dock/overlay stacking repair */
body{--pc-v2-ai-active-width:clamp(420px,34vw,620px)}
.pc-v2-ai-backdrop[hidden],.pc-v2-ai-drawer[hidden]{display:none!important}
.pc-v2-ai-backdrop{position:fixed;inset:0;z-index:11990;background:rgba(7,25,39,.30);backdrop-filter:blur(1.5px);opacity:0;pointer-events:none;transition:opacity .16s ease}
body.pc-v2-ai-open .pc-v2-ai-backdrop{opacity:1;pointer-events:auto}
.pc-v2-ai-drawer.pc-v2-ai-portal{position:fixed!important;z-index:12000!important;top:56px!important;right:0!important;bottom:0!important;left:auto!important;width:var(--pc-v2-ai-active-width)!important;max-width:calc(100vw - 12px)!important;min-width:360px!important;padding:18px 18px 24px!important;background:#fff!important;border-left:1px solid #cbdbe5!important;box-shadow:-18px 0 54px rgba(14,44,64,.22)!important;overflow:auto!important;overscroll-behavior:contain;isolation:isolate;transform:translateX(18px);opacity:0;transition:transform .16s ease,opacity .16s ease,width .08s linear;box-sizing:border-box}
.pc-v2-ai-drawer.pc-v2-ai-portal.open{transform:translateX(0);opacity:1}
.pc-v2-ai-drawer.pc-v2-ai-portal>*{position:relative;z-index:1}
.pc-v2-ai-resizer{position:absolute!important;z-index:4!important;left:-7px;top:0;bottom:0;width:14px;height:100%;border:0;background:transparent;cursor:ew-resize;touch-action:none;padding:0;margin:0;border-radius:0}
.pc-v2-ai-resizer:after{content:"";position:absolute;left:5px;top:calc(50% - 34px);width:3px;height:68px;border-radius:999px;background:#b7c8d3;box-shadow:0 0 0 3px rgba(255,255,255,.82)}
.pc-v2-ai-resizer:hover:after,.pc-v2-ai-resizer:focus-visible:after,body.pc-v2-ai-resizing .pc-v2-ai-resizer:after{background:#2a759f}
body.pc-v2-ai-resizing{cursor:ew-resize!important;user-select:none!important}
body.pc-v2-ai-resizing *{cursor:ew-resize!important}
.pc-v2-ai-drawer.pc-v2-ai-portal .pc-v2-ai-drawer-head{position:sticky;top:-18px;z-index:3;margin:-18px -18px 12px;padding:18px 18px 13px;background:rgba(255,255,255,.98);backdrop-filter:blur(8px);border-bottom:1px solid #dbe5eb}
.pc-v2-ai-drawer.pc-v2-ai-portal .pc-v2-ai-context{font-size:8px;line-height:1.55}
.pc-v2-ai-drawer.pc-v2-ai-portal textarea{min-height:112px;font-size:9px;line-height:1.45}
.pc-v2-ai-drawer.pc-v2-ai-portal .performance-ai-result{min-height:145px;max-height:none;overflow:visible}
@media(min-width:1181px){
  .pc-v2-ai-backdrop{display:none!important}
  body.pc-v2-ai-open .performance-centre-v34.active{padding-right:calc(var(--pc-v2-ai-active-width) + 22px)!important;transition:padding-right .16s ease}
  body.pc-v2-ai-open .performance-centre-v34.active .pc-v34-shell{min-width:0}
  body.pc-v2-ai-open .performance-centre-v34.active .pc-v2-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  body.pc-v2-ai-open .performance-centre-v34.active .pc-v2-main-grid,body.pc-v2-ai-open .performance-centre-v34.active .pc-v2-lower-grid{grid-template-columns:1fr}
}
@media(max-width:1180px){
  .pc-v2-ai-drawer.pc-v2-ai-portal{top:8px!important;right:8px!important;bottom:8px!important;width:min(590px,calc(100vw - 16px))!important;max-width:calc(100vw - 16px)!important;min-width:0!important;border:1px solid #cbdbe5!important;border-radius:16px!important;box-shadow:0 24px 80px rgba(6,31,49,.30)!important}
  .pc-v2-ai-resizer{display:none!important}
  .pc-v2-ai-drawer.pc-v2-ai-portal .pc-v2-ai-drawer-head{top:-18px;border-radius:15px 15px 0 0}
}
@media(max-width:640px){
  .pc-v2-ai-drawer.pc-v2-ai-portal{inset:6px!important;width:auto!important;max-width:none!important;padding:14px 14px 20px!important;border-radius:14px!important}
  .pc-v2-ai-drawer.pc-v2-ai-portal .pc-v2-ai-drawer-head{top:-14px;margin:-14px -14px 10px;padding:14px 14px 11px}
  .pc-v2-ai-drawer.pc-v2-ai-portal .pc-v2-ai-drawer-head h3{font-size:16px!important}
  .pc-v2-ai-drawer.pc-v2-ai-portal textarea{min-height:96px}
}

/* PERF-CENTRE-V2-A1-HFX2 · planned-km visibility + route-aware AI context + restrained visual polish */
.pc-v2-ai-context{white-space:normal!important;padding:11px!important;background:linear-gradient(145deg,#f6f9fc,#fbfdff)!important}
.pc-v2-ai-scopebar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding-bottom:9px;margin-bottom:9px;border-bottom:1px solid #dce7ed}.pc-v2-ai-scopebar span{font-size:7px;font-weight:950;letter-spacing:.08em;color:#155478;padding:5px 8px;border-radius:999px;background:#eaf5fb;border:1px solid #cfe5f1}.pc-v2-ai-scopebar b,.pc-v2-ai-scopebar i{font-size:6.5px;font-style:normal;font-weight:900;color:#627987;padding:4px 7px;border-radius:999px;background:#fff;border:1px solid #dce6ec}
.pc-v2-ai-context-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.pc-v2-ai-context-grid article{padding:9px 8px;border:1px solid #dce7ed;border-radius:9px;background:#fff;box-shadow:0 2px 8px rgba(15,55,80,.035)}.pc-v2-ai-context-grid span{display:block;font-size:5.7px;font-weight:950;letter-spacing:.06em;color:#718591}.pc-v2-ai-context-grid strong{display:block;margin-top:5px;font-size:12px;line-height:1.1;color:#183e59}.pc-v2-ai-context-foot{display:grid;gap:3px;margin-top:9px;padding:8px;border-radius:8px;background:#eef6fa;border:1px solid #d7e7ef}.pc-v2-ai-context-foot span{font-size:7px;line-height:1.4;color:#31556b}.pc-v2-ai-context-foot small{font-size:6px;color:#728792}
@media(max-width:1600px){.pc-v2-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1350px){.pc-v2-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.pc-v2-kpis{grid-template-columns:1fr 1fr}.pc-v2-ai-context-grid{grid-template-columns:1fr 1fr}}

/* PERF-CENTRE-V2-A1-HFX4 · final delivery-to-now percentage card. Current value is a clearly labelled planning projection derived only from canonical V2 scheduled_km_to_now and adjusted_plan_km_to_now; selected-period value uses canonical observed_km_vs_plan_pct. */

/* PERF-CENTRE-V2-A1-HFX4-FIX1 · LF default + bulk LF/HF governance */
.service-standard-bulk{margin:12px 0 10px;border:1px solid #c8dae7;border-radius:12px;background:linear-gradient(180deg,#f8fcff 0%,#f3f8fb 100%);overflow:hidden;box-shadow:0 6px 18px rgba(25,73,104,.05)}
.service-standard-bulk-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border-bottom:1px solid #dbe7ef;background:#fff}.service-standard-bulk-head>div{display:grid;gap:2px}.service-standard-bulk-head b{font-size:10px;letter-spacing:.06em;color:#123d5d}.service-standard-bulk-head small{font-size:8px;color:#657b8b;line-height:1.35}.service-standard-bulk-toolbar{display:grid;grid-template-columns:minmax(220px,1.2fr) minmax(170px,.55fr) 130px auto auto auto;gap:7px;align-items:end;padding:10px 12px 8px}.service-standard-bulk-toolbar label{display:grid;gap:4px}.service-standard-bulk-toolbar label>span{font-size:6px;font-weight:950;letter-spacing:.08em;color:#62788a}.service-standard-bulk-toolbar input,.service-standard-bulk-toolbar select{height:34px;border:1px solid #bdd0df;border-radius:7px;background:#fff;padding:0 9px;color:#173f60;font-size:8px;font-weight:800}.service-standard-bulk .bulk-hf-field{display:none}.service-standard-bulk.bulk-high-frequency .bulk-hf-field{display:grid}.service-standard-bulk-routes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;max-height:210px;overflow:auto;padding:7px 12px 9px;border-top:1px solid #e3ebf1;border-bottom:1px solid #e3ebf1;background:#fff}.service-standard-bulk-route{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:6px;align-items:center;min-height:42px;padding:6px 7px;border:1px solid #dfe8ee;border-radius:8px;background:#f9fbfd;cursor:pointer;transition:.12s ease}.service-standard-bulk-route:hover{border-color:#9bbbd0;background:#f3f9fd}.service-standard-bulk-route.selected{border-color:#1677a8;background:#eef8fe;box-shadow:inset 3px 0 0 #1677a8}.service-standard-bulk-route input{width:15px;height:15px;margin:0}.service-standard-bulk-route span{display:grid;min-width:0}.service-standard-bulk-route b{font-size:8px;color:#113e5f}.service-standard-bulk-route small{font-size:6px;color:#6d8190;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.service-standard-bulk-route i{font-style:normal;font-size:5.8px;font-weight:950;border-radius:10px;padding:3px 6px;white-space:nowrap}.service-standard-bulk-route i.lf{background:#eaf7ef;color:#13703b}.service-standard-bulk-route i.hf{background:#e8f2ff;color:#155d98}.service-standard-bulk-status{padding:8px 12px;font-size:7px;color:#587082;background:#f8fbfd}.service-standard-single-head{display:flex;align-items:end;justify-content:space-between;gap:10px;margin:12px 0 6px;padding:0 2px}.service-standard-single-head b{font-size:8px;letter-spacing:.08em;color:#153f5d}.service-standard-single-head span{font-size:6.5px;color:#748693}.service-standards-overview{margin-top:8px;border:1px solid #dde7ee;border-radius:8px;background:#fbfdfe}.service-standards-overview>summary{cursor:pointer;list-style:none;padding:8px 10px;font-size:6.5px;font-weight:950;letter-spacing:.07em;color:#31556d}.service-standards-overview>summary::-webkit-details-marker{display:none}.service-standards-overview>summary:after{content:'+';float:right;font-size:10px;line-height:7px}.service-standards-overview[open]>summary:after{content:'−'}.service-standards-overview .service-standards-list{margin:0;padding:6px;max-height:160px;border-top:1px solid #e3ebf0}
@media(max-width:1400px){.service-standard-bulk-toolbar{grid-template-columns:minmax(200px,1fr) minmax(160px,.65fr) 120px auto auto;}.service-standard-bulk-toolbar #saveServiceStandardBulkButton{grid-column:1/-1}.service-standard-bulk-routes{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.service-standard-bulk-toolbar{grid-template-columns:1fr 1fr}.service-standard-bulk-toolbar .bulk-search{grid-column:1/-1}.service-standard-bulk-routes{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.service-standard-bulk-routes{grid-template-columns:1fr}.service-standard-bulk-toolbar{grid-template-columns:1fr}.service-standard-bulk-toolbar>*{grid-column:auto!important}}
\n\n/* PERF-CENTRE-V2-A1-HFX4-FIX2 — 3-Route Monitor vertical containment.
   Coverage truth remains visible exactly once, inside the existing route header.
   The duplicate corridor strip is hidden only inside #tripleRouteStack; Live AVL is untouched. */
#tripleRouteStack .triple-card-head .realtime-coverage-compact{
  margin:0!important;
  padding:4px 7px!important;
  min-width:0!important;
  max-width:360px!important;
  min-height:32px!important;
  height:32px!important;
  flex:1 1 230px!important;
  border-radius:8px!important;
  display:grid!important;
  align-content:center!important;
  gap:1px!important;
  overflow:hidden!important;
}
#tripleRouteStack .triple-card-head .realtime-coverage-compact b{
  font-size:6.1px!important;
  line-height:1.05!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
#tripleRouteStack .triple-card-head .realtime-coverage-compact span{
  font-size:5.2px!important;
  line-height:1.08!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
#tripleRouteStack .triple-monitor-board .realtime-coverage-truth{display:none!important}
#tripleRouteStack .triple-route-card{
  min-height:calc(var(--avl-compact-board-height) + 56px)!important;
}
#tripleRouteStack .triple-route-stack{
  grid-auto-rows:minmax(calc(var(--avl-compact-board-height) + 56px),auto)!important;
}
@media(max-width:1500px){
  #tripleRouteStack .triple-card-head .realtime-coverage-compact{max-width:260px!important;flex-basis:180px!important}
}
@media(max-width:1180px){
  #tripleRouteStack .triple-card-head .realtime-coverage-compact{order:2;max-width:none!important;flex:1 1 100%!important;width:100%!important}
  #tripleRouteStack .triple-card-metrics{order:3}
}

#tripleRouteStack{grid-auto-rows:minmax(calc(var(--avl-compact-board-height) + 56px),auto)!important}


/* PERF-CENTRE-V2-A1-HFX4-FIX3 — 3-Route family-board context collapse.
   Root cause: family boards place .distance-avl-context explicitly in grid row 1.
   After FIX2 hid the duplicate realtime coverage child, the non-empty context wrapper still occupied
   the compact board's only explicit grid row, pushing .family-avl-body into an implicit lower row.
   In the 3-Route Monitor only, family/loop coverage truth is already represented once in the route header,
   so collapse that duplicate context wrapper itself and place route geometry back in row 1. Full Live AVL is untouched. */
#tripleRouteStack .triple-monitor-board .family-avl > .distance-avl-context,
#tripleRouteStack .triple-monitor-board .family-loop-avl > .distance-avl-context{
  display:none!important;
}
#tripleRouteStack .triple-monitor-board .family-avl,
#tripleRouteStack .triple-monitor-board .family-loop-avl{
  grid-template-rows:minmax(0,1fr)!important;
}
#tripleRouteStack .triple-monitor-board .family-avl > .family-avl-body,
#tripleRouteStack .triple-monitor-board .family-loop-avl > .distance-avl-body{
  grid-row:1!important;
  min-height:0!important;
  height:100%!important;
}

/* PRST-P2-A1 · Prishtina governed identity + observation-only presentation.
   Scoped to Arvento observation mode so Tirana/GTFS and every other city retain their proven UI. */
.avl-service-mode.observation{background:#edf5fa;border-color:#a9c6d8;color:#17445f}
.raw-gps-identity-preview{display:grid;gap:4px;padding:10px 12px;border:1px solid #c9dbe6;border-radius:10px;background:#f7fbfd}
.raw-gps-identity-preview b{font-size:8px;letter-spacing:.07em;color:#173f5b}
.raw-gps-identity-preview span{font-size:8px;font-weight:850;color:#294e66}
.raw-gps-identity-preview small{font-size:7px;line-height:1.4;color:#667e8e}
.raw-gps-identity-preview.conflict{border-color:#e4a7aa;background:#fff6f6}
.raw-gps-identity-preview.conflict b,.raw-gps-identity-preview.conflict span{color:#a1222d}
.service-delivery-strip.observation{border-color:#b9d1df;background:#f7fbfd}
.service-delivery-strip.observation>div:first-child b{color:#154866}
.service-delivery-strip.observation.watch{border-color:#dbc88d;background:#fffdf4}
.service-delivery-strip.observation.critical{border-color:#e4a7aa;background:#fff6f6}
#liveKpis.observation article{min-width:0}
#liveKpis.observation article strong{font-size:16px}
#liveAvlRouteBoard.prishtina-observation-board .distance-avl-context{padding-bottom:2px}
#liveAvlRouteBoard.prishtina-observation-board .distance-avl-head{background:linear-gradient(180deg,#fbfdff 0%,#f3f8fb 100%);border-bottom-color:#d7e5ed}
#liveAvlRouteBoard.prishtina-observation-board .gtfs-alignment-note span{font-size:7.4px;line-height:1.25;color:#415f72}
#liveAvlRouteBoard.prishtina-observation-board .gtfs-alignment-note b{color:#124969}
#liveAvlRouteBoard.prishtina-observation-board .distance-avl-legend{gap:7px}
#liveAvlRouteBoard.prishtina-observation-board .distance-avl-legend span{font-size:6.5px;white-space:nowrap}
#liveAvlRouteBoard.prishtina-observation-board .corridor-stop-copy b{font-size:7px;max-width:74px}
#liveAvlRouteBoard.prishtina-observation-board .corridor-stop-copy small{font-size:5.8px}
#liveAvlRouteBoard.prishtina-observation-board .corridor-bus-card{box-shadow:0 5px 12px rgba(21,57,80,.13)}
#liveAvlRouteBoard.prishtina-observation-board .corridor-bus-card .vehicle-status{letter-spacing:.02em}
#liveMap .operational-stop-label{font-size:8px;font-weight:800}


/* EVENT-CONTEXT1-B1-HFX1 — contextual event launcher presentation repair.
   Root causes fixed only: (1) 3-Route header now explicitly reserves columns for both + EVENT and MAP;
   (2) + EVENT remains compact and cannot force MAP to an implicit second grid row.
   No operational board/KPI authority or Event Logbook semantics change. */
#tripleRouteStack .triple-card-metrics{
  grid-template-columns:70px minmax(120px,1fr) minmax(110px,1fr) 78px 64px 52px!important;
}
#tripleRouteStack .triple-event-button{
  width:64px!important;min-width:64px!important;height:40px!important;padding:0 7px!important;align-self:stretch!important;border-radius:8px!important;font-size:7px!important;white-space:nowrap!important;
}
@media(max-width:1500px){
  #tripleRouteStack .triple-card-metrics{grid-template-columns:62px minmax(105px,1fr) minmax(100px,1fr) 70px 58px 48px!important;}
  #tripleRouteStack .triple-event-button{width:58px!important;min-width:58px!important;}
}
@media(max-width:1180px){
  #tripleRouteStack .triple-card-metrics{grid-template-columns:repeat(4,minmax(0,1fr)) 64px 52px!important;}
  #tripleRouteStack .triple-event-button{width:64px!important;min-width:64px!important;}
}


/* EVENT-CONTEXT1-B2 · EXISTING LOGBOOK SNAPSHOT PRESENTATION ONLY */
.network-event-row-origin{display:flex;gap:4px;flex-wrap:wrap;margin:4px 0 2px}.network-event-origin-badge,.network-event-row-copy .network-event-origin-badge,.network-event-hero .network-event-origin-badge{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;font-size:7.2px;font-weight:900;letter-spacing:.075em;border:1px solid #c7d8e3;background:#f3f8fb;color:#315a75;white-space:nowrap}.network-event-row-copy .network-event-origin-badge{margin:0;font-size:7.2px}.network-event-hero .network-event-origin-badge{margin:0}.network-event-origin-badge.compact{min-height:17px;padding:0 6px;font-size:6.5px}.network-event-origin-badge.red{background:#fff0f1;border-color:#efc4ca;color:#b42335}.network-event-origin-badge.blue{background:#edf6ff;border-color:#c7dff3;color:#176397}.network-event-origin-badge.snapshot{background:#eef9f3;border-color:#c8e7d6;color:#25704d}
.network-event-snapshot{background:#fff;border:1px solid #cbdfe9;border-radius:10px;overflow:hidden;box-shadow:0 4px 14px rgba(18,66,96,.04)}.network-event-snapshot>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:#f5fafc;border-left:4px solid #23865b}.network-event-snapshot>summary::-webkit-details-marker{display:none}.network-event-snapshot>summary div{min-width:0}.network-event-snapshot>summary span{display:block;font-size:7.4px;font-weight:900;letter-spacing:.1em;color:#4e7388}.network-event-snapshot>summary b{display:block;margin:2px 0;color:#073d61;font-size:12px}.network-event-snapshot>summary small{display:block;color:#768c99;font-size:7.7px}.network-event-snapshot-toggle{flex:0 0 auto!important;border:1px solid #c7d9e3;border-radius:999px;background:#fff;padding:6px 9px;color:#2e6688!important}.network-event-snapshot-body{display:grid;gap:8px;padding:10px 12px 12px}.network-event-snapshot-route{border:1px solid #d7e4eb;border-radius:9px;background:#fbfdfe;padding:10px}.network-event-snapshot-route.launch{border-left:4px solid #2776b3}.network-event-snapshot-route-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.network-event-snapshot-route-head>div>span{font-size:7px;font-weight:900;letter-spacing:.09em;color:#6d8492}.network-event-snapshot-route-head>div>b{display:block;color:#093e62;font-size:11px;margin:2px 0}.network-event-snapshot-route-head>div>small{display:block;color:#758b98;font-size:7.6px}.network-event-snapshot-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.network-event-snapshot-metric{border:1px solid #dce6ec;border-radius:7px;background:#fff;padding:8px;min-width:0}.network-event-snapshot-metric span{display:block;font-size:6.6px;font-weight:900;letter-spacing:.075em;color:#708895}.network-event-snapshot-metric b{display:block;margin:3px 0;color:#113f5e;font-size:9.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.network-event-snapshot-metric small{display:block;font-size:6.3px;color:#27835c;font-weight:800}.network-event-snapshot-metric.unresolved{background:#fbfbfb}.network-event-snapshot-metric.unresolved b{color:#738895}.network-event-snapshot-metric.unresolved small{color:#9a7726}.network-event-snapshot-foot{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;padding-top:7px;border-top:1px solid #e4ebef;color:#6a8190;font-size:7.2px}.network-event-snapshot-foot b{color:#204f6e}.network-event-snapshot-boundary{background:#eef8f3;border:1px solid #cfe7da;border-radius:7px;padding:8px 10px;color:#557568;font-size:7.6px;line-height:1.4}.network-event-snapshot-boundary b{color:#246447;margin-right:7px}.network-event-snapshot-empty{padding:14px;border:1px dashed #d4dfe5;border-radius:8px;text-align:center;color:#788d99}.network-event-snapshot-empty b{display:block;color:#31566f;font-size:9px}.network-event-snapshot-empty span{display:block;margin-top:3px;font-size:7.8px}
@media(max-width:1500px){.network-event-snapshot-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:850px){.network-event-snapshot-metrics{grid-template-columns:1fr 1fr}.network-event-snapshot-route-head,.network-event-snapshot>summary{align-items:flex-start;flex-direction:column}.network-event-snapshot-toggle{align-self:flex-start}}

/* GPS1-A1 / VIS3: physical route-associated vehicles stay visible without being snapped onto route rail. */
.route-presence-tray{position:absolute;top:3px;right:8px;z-index:35;max-width:min(68%,760px);display:flex;align-items:center;gap:5px;padding:3px 5px;border:1px solid #c7d9e8;border-radius:8px;background:rgba(248,252,255,.95);box-shadow:0 2px 8px rgba(15,45,85,.09);pointer-events:auto}.route-presence-tray>strong{font-size:5.4px;letter-spacing:.34px;color:#355d7d;white-space:nowrap}.route-presence-tray>strong b{font-size:6.4px;color:#102f4d}.route-presence-tray>div{display:flex;align-items:center;gap:3px;min-width:0;overflow:hidden}.route-presence-chip{appearance:none;border:1px solid #aec7da;border-radius:6px;background:#fff;padding:2px 5px;min-width:74px;max-width:130px;display:grid;gap:0;text-align:left;cursor:pointer;color:#183c5c}.route-presence-chip b{font-size:5.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.route-presence-chip span{font-size:4.9px;font-weight:900;color:#51718b;white-space:nowrap}.route-presence-chip.offroute{border-color:#e0a6aa;background:#fff7f7}.route-presence-chip.stale{border-style:dashed;opacity:.82}.route-presence-more{font-size:5.5px;font-weight:950;color:#486983;white-space:nowrap}.triple-monitor-board .route-presence-tray{top:2px;right:4px;max-width:64%;transform:scale(.9);transform-origin:top right}.family-avl-body{position:relative}.bus-map-marker.route-presence-map-marker{background:rgba(248,252,255,.96)!important;color:#1d5276!important;border:2px dashed #337ca8!important;box-shadow:0 2px 8px rgba(18,74,111,.18)!important;min-width:98px!important}.bus-map-marker.route-presence-map-marker.offroute{border-color:#c74650!important;color:#9d2630!important;background:rgba(255,247,247,.97)!important}.bus-map-marker.route-presence-map-marker.stale{opacity:.75!important}.bus-map-marker.route-presence-map-marker span{font-weight:1000!important;opacity:1!important}.route-presence-fallback-icon{pointer-events:auto!important}
@media(max-width:900px){.route-presence-tray{max-width:76%;right:3px}.route-presence-chip{min-width:66px}.route-presence-tray>strong{display:none}}

/* RECOVERY-READ1: make retention safety state visually unambiguous. */
.data-retention-grid select:disabled,.data-retention-actions button:disabled{opacity:.48;filter:grayscale(.2);cursor:not-allowed;box-shadow:none!important}.data-retention-actions button:disabled{background:#eef2f5!important;color:#6f7b84!important;border-color:#d6dee4!important}.data-retention-grid select:disabled{background:#f3f6f8;color:#7c8891}

/* QSI-CLEANSE1 · governed HF observation-coverage cleansing */
.qsi-cleansing-config{margin-top:14px;padding:14px;border:1px solid #d8e4ee;border-radius:12px;background:#f9fcff}.qsi-cleansing-rule-copy{display:flex;gap:10px;align-items:flex-start;margin:10px 0;padding:10px 12px;border:1px solid #cdddea;border-radius:9px;background:#f3f8fc;color:#415a70}.qsi-cleansing-rule-copy b{white-space:nowrap;font-size:11px;letter-spacing:.06em}.qsi-cleansing-rule-copy span{font-size:11px;line-height:1.45}.qsi-cleansing-preview{display:flex;gap:10px;align-items:flex-start;margin:10px 0;padding:9px 11px;border:1px solid #b7ddc3;border-radius:8px;background:#f0fbf4;color:#1d6a36;font-size:10px;line-height:1.45}.qsi-cleansing-preview.custom{border-color:#efca78;background:#fff9e8;color:#6b4a00}.qsi-cleansing-preview.off{border-color:#efb2b8;background:#fff3f4;color:#8a2630}.qsi-cleansing-config .service-standard-actions{margin-top:10px}

/* QSI-READINESS1 · universal all-city QSI route readiness dashboard */
.qsi-readiness-dashboard{margin:12px 0;border:1px solid #c8dae7;border-radius:12px;background:linear-gradient(180deg,#fbfdff 0%,#f4f9fc 100%);overflow:hidden;box-shadow:0 6px 18px rgba(25,73,104,.05)}
.qsi-readiness-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border-bottom:1px solid #dbe7ef;background:#fff}.qsi-readiness-head>div{display:grid;gap:2px}.qsi-readiness-head b{font-size:10px;letter-spacing:.06em;color:#123d5d}.qsi-readiness-head small{font-size:8px;color:#657b8b;line-height:1.4}
.qsi-readiness-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;padding:9px 12px 5px}.qsi-readiness-kpis article{display:grid;gap:2px;padding:8px 10px;border:1px solid #dfe8ee;border-radius:9px;background:#fff}.qsi-readiness-kpis article span{font-size:6px;font-weight:950;letter-spacing:.08em;color:#667b8c}.qsi-readiness-kpis article strong{font-size:17px;line-height:1;color:#173f60}.qsi-readiness-kpis article.ready{border-color:#b9d7ea;background:#f1f9fe}.qsi-readiness-kpis article.ready strong{color:#146b9a}.qsi-readiness-kpis article.blocked{border-color:#efc5c8;background:#fff7f7}.qsi-readiness-kpis article.blocked strong{color:#b4232e}.qsi-readiness-kpis article.final{border-color:#b8ddc3;background:#f2fbf5}.qsi-readiness-kpis article.final strong{color:#16713a}
.qsi-readiness-toolbar{display:grid;grid-template-columns:170px minmax(240px,1fr) auto;gap:8px;align-items:end;padding:7px 12px}.qsi-readiness-toolbar label{display:grid;gap:4px}.qsi-readiness-toolbar label>span{font-size:6px;font-weight:950;letter-spacing:.08em;color:#62788a}.qsi-readiness-toolbar input,.qsi-readiness-toolbar select{height:34px;border:1px solid #bdd0df;border-radius:7px;background:#fff;padding:0 9px;color:#173f60;font-size:8px;font-weight:800}
.qsi-readiness-legend{display:flex;gap:14px;flex-wrap:wrap;padding:3px 12px 8px;color:#5d7384;font-size:6.5px}.qsi-readiness-legend span{display:flex;align-items:center;gap:5px}.qsi-readiness-legend .dot{width:7px;height:7px;border-radius:50%;display:inline-block}.qsi-readiness-legend .dot.ready{background:#2f87b8}.qsi-readiness-legend .dot.final{background:#23a455}.qsi-readiness-legend .dot.blocked{background:#d73b46}
.qsi-readiness-routes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;max-height:280px;overflow:auto;padding:8px 12px;background:#fff;border-top:1px solid #e3ebf1;border-bottom:1px solid #e3ebf1}.qsi-readiness-route{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(0,1.6fr) auto;gap:8px;align-items:center;min-height:48px;padding:7px 8px;border:1px solid #dfe8ee;border-radius:8px;background:#fbfdfe;text-align:left;cursor:pointer}.qsi-readiness-route:hover{border-color:#9bbbd0;background:#f4f9fd}.qsi-readiness-route.green{box-shadow:inset 3px 0 0 #23a455}.qsi-readiness-route.blue{box-shadow:inset 3px 0 0 #2f87b8}.qsi-readiness-route.red{box-shadow:inset 3px 0 0 #d73b46}.qsi-readiness-route-id{display:grid;min-width:0}.qsi-readiness-route-id b{font-size:8.5px;color:#113e5f}.qsi-readiness-route-id small{font-size:6.2px;color:#6b8090;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qsi-readiness-route-detail{font-size:6.5px;line-height:1.35;color:#4e6575;min-width:0}.qsi-readiness-route>i{font-style:normal;font-size:6px;font-weight:950;border-radius:999px;padding:4px 7px;white-space:nowrap}.qsi-readiness-route>i.green{background:#e8f7ed;color:#14713a}.qsi-readiness-route>i.blue{background:#e9f4fb;color:#165f8a}.qsi-readiness-route>i.red{background:#fff0f1;color:#aa2630}.qsi-readiness-status{padding:8px 12px;font-size:7px;color:#587082;background:#f8fbfd}
@media(max-width:1100px){.qsi-readiness-routes{grid-template-columns:1fr}.qsi-readiness-toolbar{grid-template-columns:160px 1fr}.qsi-readiness-toolbar button{grid-column:1/-1}.qsi-readiness-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.qsi-readiness-toolbar{grid-template-columns:1fr}.qsi-readiness-kpis{grid-template-columns:1fr 1fr}.qsi-readiness-route{grid-template-columns:1fr auto}.qsi-readiness-route-detail{grid-column:1/-1}.qsi-readiness-head{align-items:flex-start;flex-direction:column}}

/* QSI-EVIDENCE-CLOSE1: explicit Authority action; no automatic evidence mutation on refresh. */
.qsi-evidence-close-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end}.qsi-evidence-close-actions button{white-space:nowrap}.qsi-evidence-close-actions #closeQsiEvidenceButton{background:#0f6b4d;border-color:#0f6b4d}.qsi-evidence-close-actions #closeQsiEvidenceButton:disabled{opacity:.48;cursor:not-allowed}.qsi-readiness-dashboard.evidence-close-busy{box-shadow:0 0 0 2px rgba(15,107,77,.12),0 6px 18px rgba(25,73,104,.05)}
@media(max-width:1100px){.qsi-evidence-close-actions{grid-column:1/-1;justify-content:stretch}.qsi-evidence-close-actions button{flex:1}}


/* PRESENTATION-NDA1B: authenticated External Viewer NDA gate */
.nda-overlay{position:fixed;inset:0;z-index:10050;background:rgba(8,29,48,.88);backdrop-filter:blur(8px);display:grid;place-items:center;padding:18px}.nda-overlay[hidden]{display:none}.nda-card{width:min(980px,96vw);max-height:94vh;overflow:auto;background:#fff;border-radius:18px;box-shadow:0 28px 90px rgba(0,0,0,.32);padding:24px;color:#163953}.nda-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border-bottom:3px solid #e52731;padding-bottom:14px}.nda-head h2{margin:2px 0 5px}.nda-head>div>span,.nda-lock{display:inline-block;font-size:11px;font-weight:900;letter-spacing:.06em;border-radius:999px;padding:7px 10px;background:#edf4f8}.nda-lock{background:#e9f7ee;color:#187742}.nda-status{margin:14px 0;padding:11px 13px;background:#fff8df;border:1px solid #ead395;border-radius:10px;font-weight:800}.nda-agreement{white-space:pre-wrap;line-height:1.55;max-height:38vh;overflow:auto;border:1px solid #d8e2e9;border-radius:12px;padding:18px;background:#fbfdfe;font-size:13px}.nda-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.nda-fields label{display:grid;gap:5px}.nda-fields label.wide{grid-column:1/-1}.nda-fields span{font-size:10px;font-weight:900;letter-spacing:.06em;color:#657d90}.nda-fields input{min-height:42px;border:1px solid #c7d5df;border-radius:9px;padding:8px 11px;font:inherit}.nda-name-acceptance-help{display:block;color:#657d90;line-height:1.45;font-size:11px;font-weight:700;padding:4px 2px}.nda-agree{display:flex;gap:10px;align-items:flex-start;margin:14px 0;font-weight:800}.nda-agree input{margin-top:3px}.nda-actions{display:flex;gap:10px;flex-wrap:wrap}.nda-evidence-note{display:block;margin-top:10px;color:#657d90;line-height:1.4}.external-viewer-readonly::after{content:'EXTERNAL VIEWER · READ ONLY';position:fixed;right:16px;bottom:14px;z-index:8000;background:rgba(17,62,94,.88);color:#fff;padding:8px 12px;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.08em;pointer-events:none}@media(max-width:700px){.nda-card{padding:16px}.nda-fields{grid-template-columns:1fr}.nda-fields label.wide{grid-column:auto}.nda-head{flex-direction:column}}

/* PRESENTATION-NDA1B */
.nda-admin-grid{display:grid;grid-template-columns:minmax(360px,.85fr) minmax(520px,1.15fr);gap:14px}.nda-admin-note{margin:12px 0;padding:10px 12px;border:1px solid #d8e2e9;border-radius:10px;background:#f7fbfd;color:#5a7184;font-size:12px;line-height:1.45}.nda-created-link{margin-top:14px;padding:12px;border:1px solid #bad9c5;background:#f1fbf4;border-radius:12px;display:grid;grid-template-columns:1fr auto;gap:8px}.nda-created-link[hidden]{display:none}.nda-created-link>b,.nda-created-link>small{grid-column:1/-1}.nda-created-link input{min-height:42px;border:1px solid #bfd2dd;border-radius:8px;padding:8px}.nda-admin-links{display:grid;gap:10px}.nda-admin-link-row{border:1px solid #d8e2e9;border-radius:12px;padding:12px;display:grid;gap:8px}.nda-admin-link-row header{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.nda-admin-link-row header span{font-size:11px;font-weight:900;border-radius:999px;padding:5px 8px;background:#edf4f8}.nda-admin-link-row dl{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;margin:0}.nda-admin-link-row dl div{display:grid;gap:2px}.nda-admin-link-row dt{font-size:9px;font-weight:900;letter-spacing:.06em;color:#71879a}.nda-admin-link-row dd{margin:0;font-size:12px;color:#24465f}.nda-admin-link-row .nda-link-actions{display:flex;gap:8px;justify-content:flex-end}@media(max-width:1050px){.nda-admin-grid{grid-template-columns:1fr}}

/* PRESENTATION-NDA1B-HFX6: user-linked External Viewer NDA status */
.external-viewer-nda-card{border:1px solid #bad4e5;border-left:4px solid #1d638f;border-radius:10px;background:#f5faff;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.external-viewer-nda-card[hidden]{display:none!important}.external-viewer-nda-card>div{display:grid;gap:3px}.external-viewer-nda-card>div>span{font-size:6px;font-weight:950;letter-spacing:.7px;color:#6b8191}.external-viewer-nda-card>div>b{font-size:8px;color:#173b59}.external-viewer-nda-card>div>small{font-size:6px;line-height:1.4;color:#6d7f8b}.access-user-row .p45-directory-policy{line-height:1.35}

/* PRESENTATION-NDA2-MUTUAL1-HFX1: Authority Admin can read the exact governed agreement text. */
.external-viewer-nda-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.external-viewer-nda-actions .button{min-height:30px;padding:6px 10px;font-size:7px}.nda-admin-head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.nda-admin-view-card{width:min(1040px,96vw)}.nda-admin-view-head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.nda-admin-view-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0}.nda-admin-view-meta>div{border:1px solid #d8e2e9;border-radius:10px;background:#f7fbfd;padding:9px 10px;min-width:0}.nda-admin-view-meta>div.wide{grid-column:1/-1}.nda-admin-view-meta span,.nda-admin-acceptance-strip span{display:block;font-size:8px;font-weight:900;letter-spacing:.08em;color:#6c8190}.nda-admin-view-meta b{display:block;margin-top:3px;color:#173b59;font-size:11px}.nda-admin-view-meta code{display:block;margin-top:4px;white-space:normal;overflow-wrap:anywhere;color:#294e67;font-size:10px}.nda-admin-agreement-text{max-height:52vh;font-family:inherit;font-size:12px;margin:0}.nda-admin-acceptance-strip{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0 0;padding:10px 12px;border:1px solid #e4cf91;border-radius:10px;background:#fff9e8}.nda-admin-acceptance-strip.accepted{border-color:#bddfc8;background:#f1faf4}.nda-admin-acceptance-strip b{display:block;margin:2px 0;color:#173b59}.nda-admin-acceptance-strip small{display:block;color:#6d7f8b}.nda-admin-view-foot{margin-top:10px;color:#687e8d;font-size:10px;font-weight:700;line-height:1.45}@media(max-width:780px){.nda-admin-view-meta{grid-template-columns:1fr 1fr}.nda-admin-acceptance-strip{grid-template-columns:1fr}.external-viewer-nda-card{align-items:flex-start}.external-viewer-nda-actions{justify-content:flex-start}}


/* DRIVER-DEVICE-WINDOW1: Street Bus Card front/right window only. The body retains existing service-state colour authority. */
.street-bus-card .street-bus-svg-window.status-window{transition:fill .18s ease,filter .18s ease}
.street-bus-card.driver-device-live .street-bus-svg-window.status-window{fill:var(--avl-device-driver-live,#16a34a)}
.street-bus-card.device-live-no-driver .street-bus-svg-window.status-window{fill:var(--avl-device-only-live,#facc15)}
.street-bus-card.device-offline .street-bus-svg-window.status-window{fill:var(--avl-device-offline,#94a3b8)}
.street-bus-card.driver-device-live .street-bus-svg-window.status-window,.street-bus-card.device-live-no-driver .street-bus-svg-window.status-window{filter:saturate(1.12)}
.device-status-window-preview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}
.device-status-window-preview span{display:grid;grid-template-columns:28px 1fr;align-items:center;gap:8px;padding:8px 10px;border:1px solid #d7e2ec;border-radius:9px;background:#fff;font-size:11px;font-weight:800;color:#31465a}
.device-status-window-preview i{display:block;width:28px;height:22px;border:2px solid #173d63;border-radius:4px;background:#94a3b8;box-shadow:inset -5px 0 0 rgba(255,255,255,.18)}
.device-status-window-preview .driver-live i{background:var(--device-driver-live,#16a34a)}
.device-status-window-preview .device-only i{background:var(--device-only-live,#facc15)}
.device-status-window-preview .offline i{background:var(--device-offline,#94a3b8)}
@media (max-width:900px){.device-status-window-preview{grid-template-columns:1fr}}


/* ABOUTIP2-TRADEMARK1 · presentation-only copyright + UK IPO trade mark evidence cards. */
.about-ip-dialog{width:min(980px,calc(100vw - 36px));max-width:980px}
.about-ip-copy{padding:18px 20px 8px}
.about-ip-owner{margin:0 0 14px;color:#163a5a}
.about-ip-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:stretch}
.about-ip-card{border:1px solid #d8e3ec;border-radius:14px;background:#fff;padding:16px;box-shadow:0 8px 22px rgba(17,55,86,.06)}
.about-ip-card-trademark{border-color:#9fd8c1;background:linear-gradient(180deg,#fff 0%,#f7fcfa 100%)}
.about-ip-card-head{display:flex;gap:12px;align-items:center;margin-bottom:12px}
.about-ip-icon{display:inline-flex;flex:0 0 46px;width:46px;height:46px;align-items:center;justify-content:center;border-radius:50%;background:#eef4f9;color:#174d76;font-size:24px;font-weight:900;border:1px solid #d8e5ee}
.about-ip-tm{background:#eaf8f2;color:#0c7b53;border-color:#c4eadb;font-size:14px;letter-spacing:.04em}
.about-ip-kicker{display:block;font-size:10px;line-height:1.2;letter-spacing:.12em;font-weight:900;color:#5d7184;margin-bottom:3px}
.about-ip-card h4{margin:0;color:#102f4d;font-size:16px;line-height:1.25}
.about-ip-meta{margin:0;border-top:1px solid #e3eaf0}
.about-ip-meta>div{display:grid;grid-template-columns:minmax(120px,.8fr) minmax(0,1.2fr);gap:12px;padding:8px 0;border-bottom:1px solid #edf1f4}
.about-ip-meta dt{color:#5a6d80;font-size:12px;font-weight:800}
.about-ip-meta dd{margin:0;color:#12344f;font-size:12px;font-weight:800;overflow-wrap:anywhere}
.about-ip-evidence-note{margin:12px 0 0;padding:10px 12px;border-radius:10px;background:#eaf7f1;color:#265b46;font-size:11px;line-height:1.45}
.about-ip-legal-note{margin:14px 0 0;color:#66798b;font-size:11px}
@media(max-width:760px){.about-ip-grid{grid-template-columns:1fr}.about-ip-dialog{width:min(96vw,980px)}.about-ip-meta>div{grid-template-columns:1fr;gap:2px}}


/* ADMIN-CITIES-DATA-WINDOW1 -------------------------------------------------
   Cities & Data presentation containment only.
   Root cause: .city-admin-layout inherited flex:1 while its HFX9.2 content was
   intentionally overflow:visible. In the active flex-column Admin tab that let
   the workspace shrink to the remaining viewport height while Data Sources
   painted beyond its flex box, so the following City Data Lifecycle panel began
   too early and visually covered GTFS / realtime controls.
   This child keeps the tab as the sole vertical scroller, makes the city workspace
   contribute its true content height, and bounds the lifecycle history table in
   an internal scroll region. No data/provider/delete authority changes. */
.admin-tab-panel[data-admin-panel="cities"] .city-admin-layout{
  flex:0 0 auto!important;
  height:auto!important;
  min-height:auto!important;
  align-self:stretch!important;
  overflow:visible!important;
}
.admin-tab-panel[data-admin-panel="cities"] .feed-config-panel{
  position:relative!important;
  z-index:auto!important;
  isolation:isolate;
}
.admin-tab-panel[data-admin-panel="cities"] #cityDeleteLifecyclePanel{
  flex:0 0 auto!important;
  position:relative!important;
  z-index:auto!important;
  isolation:isolate;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  height:auto!important;
  margin-top:10px!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
}
.admin-tab-panel[data-admin-panel="cities"] #cityDeleteLifecyclePanel .city-data-summary{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
}
.admin-tab-panel[data-admin-panel="cities"] #cityDeleteLifecyclePanel .city-delete-history-wrap{
  position:relative!important;
  z-index:0!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  max-height:min(260px,36vh)!important;
  margin-top:8px!important;
  border:1px solid #e0e7ec!important;
  border-radius:7px!important;
  overflow:auto!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  background:#fff;
}
.admin-tab-panel[data-admin-panel="cities"] #cityDeleteLifecyclePanel .city-delete-history-wrap .trip-route-table{
  min-width:780px;
}
.admin-tab-panel[data-admin-panel="cities"] #cityDeleteLifecyclePanel .city-delete-history-wrap .trip-route-table th{
  top:0!important;
  z-index:1!important;
}
@media(max-width:980px){
  .admin-tab-panel[data-admin-panel="cities"] #cityDeleteLifecyclePanel .city-delete-history-wrap{
    max-height:min(220px,40vh)!important;
  }
}

/* EXEC-CMD3-QSI-MAP1-HFX2 · adjustable marker bodies + OCC Wide Card.
   Marker presentation only: operational colour/status authority is inherited unchanged. */
:root{--avl-occ-wide-width:128px;--avl-occ-wide-height:68px;--avl-timing-qsi-role-color:#d100d1}
.marker-size-actions{display:flex;justify-content:flex-start;margin:7px 0 9px;padding-top:7px;border-top:1px solid #e3ebf0}
.marker-size-actions .btn{min-height:30px;padding:0 11px;font-size:6.5px;font-weight:950;letter-spacing:.05em}
.marker-role-colour{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:5px 10px;margin-top:8px;padding:9px;border:1px solid #ead7ec;border-radius:8px;background:#fff9ff}
.marker-role-colour>span{font-weight:950;color:#6f2375;letter-spacing:.05em}
.marker-role-colour input[type=color]{width:42px;height:28px;padding:2px;border:1px solid #d9c1dc;border-radius:6px;background:#fff;cursor:pointer}
.marker-role-colour small{grid-column:1/-1;color:#735d76;line-height:1.35}

:root[data-avl-marker-style="occ_wide_card"] .corridor-bus.tirana-vehicle-marker:not(.ghost-bus):not(.driver-presence-bus),
:root[data-avl-marker-style="occ_wide_card"] .family-bus.tirana-vehicle-marker:not(.ghost-bus):not(.driver-presence-bus),
:root[data-avl-marker-style="occ_wide_card"] .circular-bus.tirana-vehicle-marker:not(.ghost-bus):not(.driver-presence-bus){
  width:var(--avl-occ-wide-width)!important;min-width:var(--avl-occ-wide-width)!important;
  height:var(--avl-occ-wide-height)!important;min-height:var(--avl-occ-wide-height)!important;
  padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;
  box-shadow:none!important;clip-path:none!important;overflow:visible!important;
}
.tirana-vehicle-marker .occ-wide-shell{position:relative;display:grid;grid-template-columns:6px minmax(0,1fr) 24px;align-items:stretch;width:var(--avl-occ-wide-width);height:var(--avl-occ-wide-height);min-width:var(--avl-occ-wide-width);min-height:var(--avl-occ-wide-height);background:#fff;color:#102f4c;border:2px solid var(--tirana-marker-colour,#1689c8);border-radius:9px;box-sizing:border-box;box-shadow:0 8px 18px rgba(15,45,85,.18),0 0 calc(9px * var(--avl-marker-glow-strength,.68)) color-mix(in srgb,var(--tirana-marker-colour,#1689c8) 32%,transparent);overflow:visible}
.tirana-vehicle-marker .occ-wide-shell::after{content:"";position:absolute;right:-10px;top:50%;transform:translateY(-50%);border-top:9px solid transparent;border-bottom:9px solid transparent;border-left:10px solid var(--tirana-marker-colour,#1689c8)}
.tirana-vehicle-marker .occ-wide-shell.direction-left::after{right:auto;left:-10px;border-left:0;border-right:10px solid var(--tirana-marker-colour,#1689c8)}
.tirana-vehicle-marker .occ-wide-accent{display:block;background:var(--tirana-marker-colour,#1689c8);border-radius:6px 0 0 6px}
.tirana-vehicle-marker .occ-wide-shell.direction-left .occ-wide-accent{grid-column:3;border-radius:0 6px 6px 0;grid-row:1}
.tirana-vehicle-marker .occ-wide-copy{min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:1px;padding:5px 7px 4px}
.tirana-vehicle-marker .occ-wide-shell.direction-left .occ-wide-copy{grid-column:2;grid-row:1}
.tirana-vehicle-marker .occ-wide-heading{display:flex;align-items:baseline;gap:5px;min-width:0}
.tirana-vehicle-marker .occ-wide-primary{font-size:var(--avl-marker-primary-px,12px);font-weight:1000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#0f2d55}
.tirana-vehicle-marker .occ-wide-secondary{font-size:var(--avl-marker-secondary-px,10px);font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#5a7084}
.tirana-vehicle-marker .occ-wide-main{display:flex;align-items:center;justify-content:space-between;gap:7px;min-width:0}
.tirana-vehicle-marker .occ-wide-metric{font-size:var(--avl-marker-metric-px,10px);font-weight:1000;color:#0f2d55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tirana-vehicle-marker .occ-wide-status{font-size:var(--avl-marker-status-px,11px);font-style:normal;font-weight:1000;text-transform:uppercase;color:var(--tirana-marker-colour,#1689c8);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tirana-vehicle-marker .occ-wide-footer{font-size:var(--avl-marker-footer-px,7px);font-weight:800;color:#6b7f91;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tirana-vehicle-marker .occ-wide-icon{display:flex;align-items:center;justify-content:center;border-left:1px solid #dce5ec;background:color-mix(in srgb,var(--tirana-marker-colour,#1689c8) 10%,#fff);color:#5e7182;border-radius:0 6px 6px 0}
.tirana-vehicle-marker .occ-wide-icon.is-active{color:#16a34a}
.tirana-vehicle-marker .occ-wide-icon .angled-tab-bus-svg{width:16px;height:16px}
.tirana-vehicle-marker .occ-wide-shell.direction-left .occ-wide-icon{grid-column:1;grid-row:1;border-left:0;border-right:1px solid #dce5ec;border-radius:6px 0 0 6px}
.tirana-vehicle-marker .occ-wide-badges{position:absolute;left:10px;right:28px;top:-10px;display:flex;gap:4px;justify-content:center;pointer-events:none;z-index:3}
.tirana-vehicle-marker .occ-wide-shell.direction-left .occ-wide-badges{left:28px;right:10px}
.tirana-vehicle-marker .occ-wide-badges .tirana-marker-instruction,.tirana-vehicle-marker .occ-wide-badges .tirana-marker-incident{position:static!important;margin:0!important;transform:none!important}
@media(max-width:900px){.tirana-vehicle-marker .occ-wide-copy{padding-left:5px;padding-right:5px}.marker-role-colour{grid-template-columns:1fr auto}}



/* EXEC-CMD3-QSI-MAP1-HFX4 — exact Static-GTFS schedule tether. Visual evidence only. */
.schedule-tether{position:absolute;inset:0;z-index:10;pointer-events:none;color:#66788a}
.schedule-tether-stem{position:absolute;width:0;border-left:1.5px dashed rgba(73,91,109,.78);transform:translateX(-.75px);z-index:10}
.schedule-tether-rail{position:absolute;height:0;border-top:1.5px dashed rgba(73,91,109,.78);transform:translateY(-.75px);z-index:10;min-width:2px}
.schedule-tether-target{position:absolute;transform:translate(-50%,-50%);z-index:11;display:grid;place-items:center;min-width:18px;height:12px;padding:0 3px;border:1px solid #64748b;border-radius:6px;background:#fff;color:#334155;font-size:5.4px;font-weight:1000;line-height:1;letter-spacing:.25px;box-shadow:0 1px 2px rgba(15,35,55,.12);white-space:nowrap}
.schedule-tether-family-line,.circular-schedule-tether>svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:10}
.schedule-tether-family-line line,.circular-schedule-tether line{stroke:rgba(73,91,109,.78);stroke-width:1.5;stroke-dasharray:5 4;vector-effect:non-scaling-stroke}
.circular-schedule-tether{z-index:9}.circular-schedule-tether .schedule-tether-target{z-index:11}
.triple-monitor-board .schedule-tether-target{transform:translate(-50%,-50%) scale(.88);transform-origin:center}
.corridor-bus.live-selected-bus~.schedule-tether,.schedule-tether:has(+ .corridor-bus.live-selected-bus){opacity:1}


/* EXEC-CMD3-QSI-MAP1-HFX4 FINAL — centre-of-live-marker to exact Static-GTFS scheduled-position tether. */
.schedule-tether-anchor{position:absolute;transform:translate(-50%,-50%);z-index:16;display:grid;place-items:center;min-width:20px;height:14px;padding:0 4px;border:1.5px solid #64748b;border-radius:7px;background:#fff;color:#334155;font-size:5.8px;font-weight:1000;line-height:1;letter-spacing:.3px;box-shadow:0 1px 3px rgba(15,35,55,.16);white-space:nowrap;cursor:help;pointer-events:auto}
.schedule-tether-svg{position:absolute;inset:0;width:100%;height:100%;z-index:15;pointer-events:none;overflow:visible}
.schedule-tether-line{stroke:#64748b;stroke-width:1.5;stroke-dasharray:5 4;stroke-linecap:round;opacity:.72;vector-effect:non-scaling-stroke}
.schedule-tether-line.active{stroke-width:2.5;opacity:1}.schedule-tether-anchor.active{border-width:2px;box-shadow:0 0 0 3px rgba(100,116,139,.16)}
.tirana-vehicle-marker.schedule-tether-active{z-index:22!important}
.triple-monitor-board .schedule-tether-anchor{transform:translate(-50%,-50%) scale(.88);transform-origin:center}

/* EXEC-RPT-PDF1-R3-HFX2 (2026-10-01): selected SERVICE bus click-front repair.
   Click selection must never demote the selected marker behind caught-up/family/edge peers.
   Presentation only: no GPS, headway, catch-up geometry, tether or authority change. */
#liveAvlRouteBoard .corridor-bus.live-selected-bus{
  z-index:34!important;
}

/* EXEC-RPT-PDF1-R3-HFX3 · restore city-wide LF/HF service-status colour governance in Display > Bus Markers. */
.universal-service-colour-card{grid-column:span 1}
.universal-service-colour-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.universal-service-colour-grid label{align-items:center}
.universal-service-colour-grid input[type="color"]{width:100%;min-height:40px;padding:3px;border:1px solid #cbd8e2;border-radius:7px;background:#fff}
.universal-service-colour-preview{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:8px}
.universal-service-colour-preview>span{display:flex;align-items:center;gap:6px;min-height:34px;padding:6px 7px;border:1px solid #d7e1e8;border-radius:7px;background:#f8fbfd;color:#173a56;min-width:0}
.universal-service-colour-preview i{display:block;flex:0 0 18px;width:18px;height:18px;border-radius:4px;background:var(--preview-colour,#aab5c1);box-shadow:0 0 0 1px rgba(10,48,78,.12)}
.universal-service-colour-preview b{font-size:7.5px;line-height:1.2;letter-spacing:.02em;min-width:0}
.universal-colour-route-note{display:grid;gap:4px;padding:10px 12px;border:1px solid #cfe0eb;border-radius:9px;background:#f4f9fc;color:#214a66}
.universal-colour-route-note b{font-size:9px;letter-spacing:.04em}
.universal-colour-route-note span{font-size:8px;line-height:1.4;color:#5d7484}
@media(max-width:1000px){.universal-service-colour-preview{grid-template-columns:repeat(2,minmax(0,1fr))}.universal-service-colour-grid{grid-template-columns:1fr}}


/* EXEC-RPT-PDF1-R3-HFX4 · Modern aligned Display & AVL Configuration workspace.
   Presentation/layout only. All control IDs, persistence and runtime authority are unchanged. */
.admin-tab-panel[data-admin-panel="display"]{
  --win-bg:#f4f7fa;--win-card:#ffffff;--win-border:#d7e0e8;--win-border-strong:#c7d3dd;
  --win-text:#153754;--win-muted:#667b8d;--win-accent:#0f6cbd;--win-accent-soft:#eaf3fb;
  --win-radius:12px;--win-shadow:0 1px 2px rgba(15,42,66,.05),0 5px 18px rgba(15,42,66,.035);
}
.admin-tab-panel[data-admin-panel="display"] .display-admin-toolbar{
  position:sticky;top:0;z-index:18;display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:12px 14px;margin:-2px -2px 10px;border:1px solid var(--win-border);border-radius:var(--win-radius);
  background:rgba(255,255,255,.96);backdrop-filter:blur(10px);box-shadow:var(--win-shadow)
}
.admin-tab-panel[data-admin-panel="display"] .display-admin-toolbar h3{font-size:16px;margin:2px 0 3px;color:var(--win-text)}
.admin-tab-panel[data-admin-panel="display"] .display-admin-toolbar p:not(.eyebrow){font-size:8px;color:var(--win-muted);margin:0}
.admin-tab-panel[data-admin-panel="display"] .admin-toolbar-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.admin-tab-panel[data-admin-panel="display"] .display-admin-tabs{
  position:static;top:auto;z-index:auto;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;
  padding:5px;margin:0 0 10px;border:1px solid var(--win-border);border-radius:11px;background:#edf2f6;box-shadow:0 1px 2px rgba(15,42,66,.04);overflow:visible!important
}
.admin-tab-panel[data-admin-panel="display"] .display-admin-tab{min-width:0;height:38px;border-radius:8px;font-size:8.5px;letter-spacing:.04em;color:#36566d;background:#f7fafc;border:1px solid transparent;display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:1;visibility:visible}
.admin-tab-panel[data-admin-panel="display"] .display-admin-tab.active{background:#fff;color:#0f4f83;box-shadow:0 1px 5px rgba(15,42,66,.12);outline:1px solid #cbd9e4}
.admin-tab-panel[data-admin-panel="display"] .display-save-global{margin:0 0 10px;padding:8px 11px;border:1px solid #cfe0ee;border-left:4px solid var(--win-accent);border-radius:9px;background:#f2f8fd}
.admin-tab-panel[data-admin-panel="display"] .display-subpanel-heading{margin:0 0 10px;padding:12px 14px;border-color:var(--win-border);border-radius:var(--win-radius);background:#fff;box-shadow:var(--win-shadow)}
.admin-tab-panel[data-admin-panel="display"] .display-subpanel-heading h3{font-size:14px}.admin-tab-panel[data-admin-panel="display"] .display-subpanel-heading p:not(.eyebrow){font-size:8px}
.admin-tab-panel[data-admin-panel="display"] .display-bus-layout,
.admin-tab-panel[data-admin-panel="display"] .display-map-layout,
.admin-tab-panel[data-admin-panel="display"] .display-corridor-layout,
.admin-tab-panel[data-admin-panel="display"] .display-dwell-layout{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px;align-items:start}
.admin-tab-panel[data-admin-panel="display"] .display-bus-layout>.panel,
.admin-tab-panel[data-admin-panel="display"] .display-map-layout>.panel,
.admin-tab-panel[data-admin-panel="display"] .display-corridor-layout>.panel,
.admin-tab-panel[data-admin-panel="display"] .display-ghost-layout>.panel,
.admin-tab-panel[data-admin-panel="display"] .display-dwell-layout>.panel,
.admin-tab-panel[data-admin-panel="display"] .dwell-v2-governance{
  min-width:0;padding:14px;border:1px solid var(--win-border)!important;border-radius:var(--win-radius)!important;background:var(--win-card)!important;box-shadow:var(--win-shadow);overflow:hidden!important
}
.admin-tab-panel[data-admin-panel="display"] .panel .section-head{align-items:flex-start;gap:10px;margin-bottom:10px;padding-bottom:9px;border-bottom:1px solid #e6edf2}
.admin-tab-panel[data-admin-panel="display"] .panel .section-head h3,
.admin-tab-panel[data-admin-panel="display"] .panel .section-head h4{font-size:11px;margin:2px 0;color:var(--win-text)}
.admin-tab-panel[data-admin-panel="display"] .panel .section-head p:not(.eyebrow){font-size:7.5px;line-height:1.45;color:var(--win-muted)}
.admin-tab-panel[data-admin-panel="display"] .config-group>label,
.admin-tab-panel[data-admin-panel="display"] .marker-font-size-grid>label,
.admin-tab-panel[data-admin-panel="display"] .bus-label-admin-block>label{padding:8px 0;border-bottom:1px solid #edf2f5}
.admin-tab-panel[data-admin-panel="display"] label>span:first-child{font-size:7px;letter-spacing:.045em;color:#445f73}
.admin-tab-panel[data-admin-panel="display"] label small{font-size:6.8px;line-height:1.45;color:#748797}
.admin-tab-panel[data-admin-panel="display"] input[type="text"],
.admin-tab-panel[data-admin-panel="display"] input[type="number"],
.admin-tab-panel[data-admin-panel="display"] input:not([type]),
.admin-tab-panel[data-admin-panel="display"] select,
.admin-tab-panel[data-admin-panel="display"] textarea{min-height:34px;border:1px solid var(--win-border-strong);border-radius:8px;background:#fff;box-shadow:inset 0 1px 1px rgba(15,42,66,.025)}
.admin-tab-panel[data-admin-panel="display"] input:focus,
.admin-tab-panel[data-admin-panel="display"] select:focus,
.admin-tab-panel[data-admin-panel="display"] textarea:focus{outline:2px solid rgba(15,108,189,.18);border-color:#75a9d4}
.admin-tab-panel[data-admin-panel="display"] input[type="range"]{accent-color:var(--win-accent)}
.admin-tab-panel[data-admin-panel="display"] .button,
.admin-tab-panel[data-admin-panel="display"] .btn{border-radius:8px;min-height:34px}
/* Bus marker workspace: balanced 4/8 then 4/8 then 6/6 rows. */
.admin-tab-panel[data-admin-panel="display"] .display-bus-base-card{grid-column:span 4}
.admin-tab-panel[data-admin-panel="display"] .display-marker-content-card{grid-column:span 8}
.admin-tab-panel[data-admin-panel="display"] .device-status-window-card{grid-column:span 4}
.admin-tab-panel[data-admin-panel="display"] .vehreg-truth-card{grid-column:span 8}
.admin-tab-panel[data-admin-panel="display"] .universal-service-colour-card{grid-column:span 6}
.admin-tab-panel[data-admin-panel="display"] .display-duty-colour-card{grid-column:span 6}
.admin-tab-panel[data-admin-panel="display"] .marker-config-grid,
.admin-tab-panel[data-admin-panel="display"] .marker-content-grid,
.admin-tab-panel[data-admin-panel="display"] .marker-font-size-grid{gap:8px 10px}
.admin-tab-panel[data-admin-panel="display"] .avl-tether-sign-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;padding-top:8px}
.admin-tab-panel[data-admin-panel="display"] .device-status-window-card .marker-content-grid{grid-template-columns:1fr}
.admin-tab-panel[data-admin-panel="display"] .device-status-window-preview{display:grid;grid-template-columns:1fr;gap:6px;margin-top:9px}
.admin-tab-panel[data-admin-panel="display"] .vehreg-truth-card .apc-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px}
.admin-tab-panel[data-admin-panel="display"] .vehreg-truth-card .apc-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0}
.admin-tab-panel[data-admin-panel="display"] .vehreg-truth-card .apc-table-wrap{max-height:260px;overflow:auto;border:1px solid #e0e8ee;border-radius:9px;background:#fff}
.admin-tab-panel[data-admin-panel="display"] .vehreg-truth-card .energy-admin-table{margin:0;min-width:680px}
.admin-tab-panel[data-admin-panel="display"] .vehreg-truth-card .energy-admin-table thead{position:sticky;top:0;z-index:2;background:#f4f8fb}
.admin-tab-panel[data-admin-panel="display"] .universal-service-colour-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.admin-tab-panel[data-admin-panel="display"] .universal-service-colour-grid label{padding:8px;border:1px solid #e0e8ef;border-radius:9px;background:#f8fafc}
.admin-tab-panel[data-admin-panel="display"] .universal-service-colour-grid input[type="color"]{min-height:34px;border-radius:7px}
.admin-tab-panel[data-admin-panel="display"] .universal-service-colour-preview{grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}
.admin-tab-panel[data-admin-panel="display"] .display-duty-colour-card{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 10px}
.admin-tab-panel[data-admin-panel="display"] .display-duty-colour-card>.section-head,
.admin-tab-panel[data-admin-panel="display"] .display-duty-colour-card>.duty-state-admin-previews{grid-column:1/-1}
.admin-tab-panel[data-admin-panel="display"] .display-duty-colour-card>label{margin:0;padding:8px;border:1px solid #e0e8ef;border-radius:9px;background:#f8fafc}
.admin-tab-panel[data-admin-panel="display"] .duty-state-admin-previews{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:2px}
/* Other Display tabs use the same aligned Windows card system. */
.admin-tab-panel[data-admin-panel="display"] .display-map-layout>.config-group{grid-column:span 5}
.admin-tab-panel[data-admin-panel="display"] .display-map-layout>.display-preview-panel{grid-column:span 7;min-height:100%}
.admin-tab-panel[data-admin-panel="display"] .display-corridor-layout>.panel:nth-child(1),
.admin-tab-panel[data-admin-panel="display"] .display-corridor-layout>.panel:nth-child(2){grid-column:span 4}
.admin-tab-panel[data-admin-panel="display"] .display-corridor-layout>.display-corridor-note{grid-column:span 4}
.admin-tab-panel[data-admin-panel="display"] .display-ghost-layout{display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);gap:12px;align-items:start}
.admin-tab-panel[data-admin-panel="display"] .display-ghost-layout>.panel{grid-column:1/-1}
.admin-tab-panel[data-admin-panel="display"] .dwell-v2-governance{margin-bottom:12px}
.admin-tab-panel[data-admin-panel="display"] .display-dwell-layout>.panel{grid-column:span 4}
.admin-tab-panel[data-admin-panel="display"] .display-wiring-audit{margin-top:12px;padding:10px 12px;border:1px solid #cfe6d8;border-left:4px solid #17864b;border-radius:9px;background:#f2faf5}
.admin-tab-panel[data-admin-panel="display"] .display-wiring-audit b{font-size:7px}.admin-tab-panel[data-admin-panel="display"] .display-wiring-audit span{font-size:7px}
@media(max-width:1380px){
  .admin-tab-panel[data-admin-panel="display"] .display-bus-base-card,
  .admin-tab-panel[data-admin-panel="display"] .device-status-window-card{grid-column:span 5}
  .admin-tab-panel[data-admin-panel="display"] .display-marker-content-card,
  .admin-tab-panel[data-admin-panel="display"] .vehreg-truth-card{grid-column:span 7}
  .admin-tab-panel[data-admin-panel="display"] .universal-service-colour-card,
  .admin-tab-panel[data-admin-panel="display"] .display-duty-colour-card{grid-column:span 6}
}
@media(max-width:1100px){
  .admin-tab-panel[data-admin-panel="display"] .display-admin-tabs{grid-template-columns:repeat(3,minmax(120px,1fr));position:static}
  .admin-tab-panel[data-admin-panel="display"] .display-bus-layout>.panel,
  .admin-tab-panel[data-admin-panel="display"] .display-map-layout>.panel,
  .admin-tab-panel[data-admin-panel="display"] .display-corridor-layout>.panel,
  .admin-tab-panel[data-admin-panel="display"] .display-dwell-layout>.panel{grid-column:1/-1!important}
  .admin-tab-panel[data-admin-panel="display"] .display-duty-colour-card{grid-template-columns:1fr}
  .admin-tab-panel[data-admin-panel="display"] .display-duty-colour-card>.section-head,
  .admin-tab-panel[data-admin-panel="display"] .display-duty-colour-card>.duty-state-admin-previews{grid-column:auto}
  .admin-tab-panel[data-admin-panel="display"] .duty-state-admin-previews{grid-template-columns:1fr}
  .admin-tab-panel[data-admin-panel="display"] .universal-service-colour-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .admin-tab-panel[data-admin-panel="display"] .display-admin-toolbar{position:static;align-items:flex-start;flex-direction:column}
  .admin-tab-panel[data-admin-panel="display"] .display-admin-tabs{grid-template-columns:1fr 1fr}
  .admin-tab-panel[data-admin-panel="display"] .vehreg-truth-card .apc-form-grid,
  .admin-tab-panel[data-admin-panel="display"] .marker-content-grid,
  .admin-tab-panel[data-admin-panel="display"] .marker-font-size-grid,
  .admin-tab-panel[data-admin-panel="display"] .avl-tether-sign-row,
  .admin-tab-panel[data-admin-panel="display"] .universal-service-colour-grid{grid-template-columns:1fr}
  .admin-tab-panel[data-admin-panel="display"] .universal-service-colour-preview{grid-template-columns:1fr 1fr}
}


/* MUNICIPALITY_BOARD1_A5: dedicated visible Admin tab and board-app launcher. */
.admin-tab-panel[data-admin-panel="display"] .display-municipality-layout{display:grid;grid-template-columns:minmax(0,8fr) minmax(300px,4fr);gap:12px;align-items:start}
.admin-tab-panel[data-admin-panel="display"] .display-municipality-layout>.panel{min-width:0;padding:14px;border:1px solid var(--win-border)!important;border-radius:var(--win-radius)!important;background:var(--win-card)!important;box-shadow:var(--win-shadow);overflow:hidden!important}
.admin-tab-panel[data-admin-panel="display"] .municipality-board-admin-card .config-grid{gap:8px 10px}
.admin-tab-panel[data-admin-panel="display"] .municipality-board-app-card label{display:grid;gap:6px;padding:8px 0;border-bottom:1px solid #edf2f5}
.admin-tab-panel[data-admin-panel="display"] .municipality-board-app-card input[readonly]{width:100%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:8px;background:#f8fbfd}
.admin-tab-panel[data-admin-panel="display"] .municipality-board-launch-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
@media(max-width:1100px){.admin-tab-panel[data-admin-panel="display"] .display-municipality-layout{grid-template-columns:1fr}.admin-tab-panel[data-admin-panel="display"] .display-admin-tabs{grid-template-columns:repeat(3,minmax(120px,1fr))}}

/* PIDS-A1-HFX6: retired display lifecycle. */
.pids-retired-card{margin-top:10px;border-style:dashed}.pids-retired-card[hidden]{display:none!important}.pids-device-row.retired{background:#f7f9fa;border-color:#d7e0e6}.pids-device-row.retired>div>b{color:#5a6873}.pids-device-row.retired small{color:#7e8a93}.pids-device-actions .button.permanent-delete{border-color:#b42333;color:#b42333;background:#fff6f7}.pids-device-actions .button.permanent-delete:hover{background:#ffe9ec}

/* MUNICIPALITY_BOARD1_A5_HFX1 · full settings wiring + rehomed AVL geometry */
.admin-tab-panel[data-admin-panel="display"] .municipality-config-section{margin-top:8px;padding-top:8px;border-top:1px solid #e4ecf2}
.admin-tab-panel[data-admin-panel="display"] .municipality-config-section>b{display:block;margin:0 0 7px;font-size:7px;letter-spacing:.09em;color:#315f7d}
.admin-tab-panel[data-admin-panel="display"] .municipality-board-admin-card input[type=text],.admin-tab-panel[data-admin-panel="display"] .municipality-board-admin-card input[type=number],.admin-tab-panel[data-admin-panel="display"] .municipality-board-admin-card select{width:100%;min-width:0}
.admin-tab-panel[data-admin-panel="display"] [data-display-admin-panel="geometry"] .admin-panel-toolbar{position:static;margin:0 0 10px}
@media(max-width:1450px){.admin-tab-panel[data-admin-panel="display"] .display-admin-tabs{grid-template-columns:repeat(4,minmax(120px,1fr))}}
@media(max-width:900px){.admin-tab-panel[data-admin-panel="display"] .display-admin-tabs{grid-template-columns:repeat(3,minmax(110px,1fr))}}


/* ========================================================================
   GAPCLOUD1 - ORIGINAL LIVE AVL GAP CLOUDS
   Presentation only. The existing Current/original Live AVL geometry, cards,
   stops, labels and lower workspace remain unchanged. Clouds are painted only
   from admitted explicit follower->leader headway evidence and true governed
   route anchors. No DOM-neighbour inference and no LF/QSI arithmetic change.
   ======================================================================== */
#liveAvlRouteBoard :is(.corridor-axis,.family-track),
#tripleRouteStack :is(.corridor-axis,.family-track),
#p2pAvlBoard :is(.corridor-axis,.family-track){position:relative;}
.avl-gap-cloud{
  position:absolute;
  height:46px;
  border-radius:50%;
  filter:blur(11px);
  opacity:.20;
  z-index:1;
  pointer-events:none;
  transform:translateY(-50%);
  contain:paint;
}
.avl-gap-cloud::after{
  content:"";
  position:absolute;
  inset:8px 0;
  border-radius:50%;
  background:inherit;
  opacity:.50;
}
@media (prefers-reduced-motion:reduce){.avl-gap-cloud{transition:none!important;animation:none!important}}

/* ========================================================================
   GAPCLOUD1-HFX1 - VISIBLE ORIGINAL-BOARD CLOUDS + FULL-WIDTH DISPLAY ADMIN
   Keeps the single original Live AVL theme. Clouds use true bus anchors.
   HF = explicit governed leader evidence. LF = exact Static-GTFS schedule
   spacing presentation only. Admin can turn clouds on/off city-by-city.
   ======================================================================== */
:root[data-avl-gap-clouds="off"] .avl-gap-cloud{display:none!important}
.avl-gap-cloud{
  height:58px;
  border-radius:999px;
  filter:blur(13px);
  opacity:.25;
  z-index:2;
  pointer-events:none;
  transform:translateY(-50%);
  contain:paint;
}
.avl-gap-cloud::after{inset:10px 0;opacity:.62}
.avl-gap-cloud.lf-schedule-spacing{opacity:.22;filter:blur(14px)}
.avl-gap-cloud.hf-explicit{opacity:.27}

.admin-tab-panel[data-admin-panel="display"] .display-admin-subpanel,
.admin-tab-panel[data-admin-panel="display"] .display-subpanel-heading,
.admin-tab-panel[data-admin-panel="display"] .display-map-layout,
.admin-tab-panel[data-admin-panel="display"] .display-corridor-layout,
.admin-tab-panel[data-admin-panel="display"] .display-bus-layout,
.admin-tab-panel[data-admin-panel="display"] .display-ghost-layout,
.admin-tab-panel[data-admin-panel="display"] .display-dwell-layout,
.admin-tab-panel[data-admin-panel="display"] .display-municipality-layout{
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  box-sizing:border-box;
}
.admin-tab-panel[data-admin-panel="display"] .display-map-layout{
  grid-template-columns:minmax(420px,1fr) minmax(420px,1fr)!important;
}
.admin-tab-panel[data-admin-panel="display"] .display-map-layout>.config-group,
.admin-tab-panel[data-admin-panel="display"] .display-map-layout>.display-preview-panel{
  grid-column:auto!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
}
.admin-tab-panel[data-admin-panel="display"] .display-map-layout>.display-preview-panel{min-height:390px!important}
.admin-tab-panel[data-admin-panel="display"] .display-preview-map{height:330px!important;max-width:none!important;width:100%!important}
.admin-tab-panel[data-admin-panel="display"] .gap-cloud-admin-toggle{margin-top:3px;padding:9px 8px!important;border:1px solid #cfe0ee!important;border-radius:9px;background:#f5faff}
@media(max-width:1180px){
  .admin-tab-panel[data-admin-panel="display"] .display-map-layout{grid-template-columns:1fr!important}
  .admin-tab-panel[data-admin-panel="display"] .display-map-layout>.display-preview-panel{min-height:320px!important}
  .admin-tab-panel[data-admin-panel="display"] .display-preview-map{height:270px!important}
}

/* ========================================================================
   GAPCLOUD2 - FORWARD GAP DECISION SUPPORT
   Preserves original Live AVL geometry. The cloud remains strictly between
   the follower's true anchor and its trusted forward leader. Labels are shown
   only on hover/selection. Trend is in-memory presentation only.
   ======================================================================== */
.avl-gap-cloud{
  height:58px;
  border-radius:999px;
  background:transparent!important;
  filter:none!important;
  opacity:1!important;
  z-index:2;
  overflow:visible;
  pointer-events:none;
  transform:translateY(-50%);
  contain:layout style;
  --gap-cloud-colour:#94a3b8;
}
.avl-gap-cloud::before,
.avl-gap-cloud::after{
  content:"";
  position:absolute;
  border-radius:999px;
  background:var(--gap-cloud-colour);
  pointer-events:none;
}
.avl-gap-cloud::before{
  inset:0;
  opacity:var(--avl-gap-cloud-opacity,.25);
  filter:blur(13px);
}
.avl-gap-cloud::after{
  inset:10px 0;
  opacity:calc(var(--avl-gap-cloud-opacity,.25) * .68);
  filter:blur(8px);
}
.avl-gap-cloud.lf-schedule-spacing::before{filter:blur(14px)}
.avl-gap-cloud.hf-explicit::before{filter:blur(12px)}
.avl-gap-cloud.direction-right{transform-origin:left center}
.avl-gap-cloud.direction-left{transform-origin:right center}
.avl-gap-cloud.trend-risk{
  outline:2px solid var(--avl-gap-cloud-risk-colour,#e3272d);
  outline-offset:-2px;
  box-shadow:0 0 0 1px rgba(255,255,255,.72),0 0 8px rgba(227,39,45,.18);
}
.avl-gap-cloud.is-muted::before{opacity:calc(var(--avl-gap-cloud-opacity,.25) * .24)}
.avl-gap-cloud.is-muted::after{opacity:calc(var(--avl-gap-cloud-opacity,.25) * .14)}
.avl-gap-cloud.is-selected::before,.avl-gap-cloud.is-hovered::before{opacity:calc(var(--avl-gap-cloud-opacity,.25) * 1.28)}
.avl-gap-cloud.is-selected::after,.avl-gap-cloud.is-hovered::after{opacity:calc(var(--avl-gap-cloud-opacity,.25) * .90)}
.avl-gap-cloud-label{
  position:absolute;
  left:50%;top:50%;
  z-index:4;
  transform:translate(-50%,-50%) translateY(-4px);
  max-width:calc(100% - 10px);
  padding:3px 6px;
  border:1px solid rgba(7,34,55,.14);
  border-radius:999px;
  background:rgba(255,255,255,.94);
  box-shadow:0 2px 7px rgba(7,34,55,.13);
  color:#0b2b43;
  font-size:8px;
  font-weight:800;
  line-height:1.1;
  letter-spacing:.02em;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  opacity:0;
  visibility:hidden;
  transition:opacity .12s ease,transform .12s ease;
}
.avl-gap-cloud.is-hovered .avl-gap-cloud-label,
.avl-gap-cloud.is-selected .avl-gap-cloud-label{
  opacity:1;
  visibility:visible;
  transform:translate(-50%,-50%);
}
.tirana-vehicle-marker.gap-cloud-focus-muted{opacity:.44!important;transition:opacity .12s ease}
.tirana-vehicle-marker.gap-cloud-focus-related{opacity:1!important}

.admin-tab-panel[data-admin-panel="display"] .gap-cloud-admin-controls{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px 10px;
  margin:8px 0 4px;
  padding:9px;
  border:1px solid #d8e6f0;
  border-radius:9px;
  background:#fbfdff;
}
.admin-tab-panel[data-admin-panel="display"] .gap-cloud-admin-controls label{min-width:0;margin:0}
.admin-tab-panel[data-admin-panel="display"] .gap-cloud-admin-controls select{width:100%;min-width:0}
.admin-tab-panel[data-admin-panel="display"] .gap-cloud-admin-toggle.compact{margin-top:6px}
.admin-tab-panel[data-admin-panel="display"] .gap-cloud-admin-authority{display:block;margin-top:6px;line-height:1.45;color:#536b7d}
@media(max-width:760px){
  .admin-tab-panel[data-admin-panel="display"] .gap-cloud-admin-controls{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){
  .avl-gap-cloud-label,.tirana-vehicle-marker.gap-cloud-focus-muted{transition:none!important}
}

/* ========================================================================
   GAPCLOUD2-HFX1 - LF NEUTRAL SPACING + HF GAP MINUTES
   LF is timetable authority, not headway authority: its cloud remains spatial
   evidence only and is deliberately neutral. HF keeps governed service colour.
   The always-visible HF gap value sits underneath the coloured cloud as agreed.
   No bus anchor is moved and the value never changes operational authority.
   ======================================================================== */
.avl-gap-cloud.lf-schedule-spacing::before{
  opacity:calc(var(--avl-gap-cloud-opacity,.25) * .62);
  filter:blur(14px);
}
.avl-gap-cloud.lf-schedule-spacing::after{
  opacity:calc(var(--avl-gap-cloud-opacity,.25) * .38);
}
.avl-gap-cloud-minutes{
  position:absolute;
  left:50%;
  top:calc(50% + 18px);
  z-index:5;
  transform:translate(-50%,-50%);
  min-width:38px;
  padding:2px 5px;
  border:1px solid color-mix(in srgb,var(--gap-cloud-colour) 50%,#ffffff);
  border-radius:999px;
  background:rgba(255,255,255,.94);
  box-shadow:0 1px 4px rgba(7,34,55,.10);
  color:#0b2b43;
  font-size:7.5px;
  font-weight:900;
  line-height:1;
  text-align:center;
  white-space:nowrap;
  pointer-events:none;
}
.avl-gap-cloud.is-muted .avl-gap-cloud-minutes{opacity:.24}
.avl-gap-cloud.is-selected .avl-gap-cloud-minutes,
.avl-gap-cloud.is-hovered .avl-gap-cloud-minutes{opacity:1}
@media (prefers-reduced-motion:reduce){.avl-gap-cloud-minutes{transition:none!important}}


/* ========================================================================
   GAPCLOUD2-HFX2 - LF PUNCTUALITY AURA AROUND BUS
   HF remains the forward follower-to-leader cloud with minutes underneath.
   LF no longer uses a forward spacing cloud. Its soft aura is centered on the
   rendered bus card and mirrors the already-governed EARLY / ON TIME / LATE
   card colour. The aura does not create headway or spacing authority.
   ======================================================================== */
.avl-gap-cloud.lf-punctuality-aura{
  z-index:2;
  border-radius:24px;
  transform:translateY(-50%);
  transform-origin:center center;
}
.avl-gap-cloud.lf-punctuality-aura::before{
  inset:-3px;
  border-radius:26px;
  opacity:calc(var(--avl-gap-cloud-opacity,.25) * .92);
  filter:blur(15px);
}
.avl-gap-cloud.lf-punctuality-aura::after{
  inset:8px 5px;
  border-radius:20px;
  opacity:calc(var(--avl-gap-cloud-opacity,.25) * .58);
  filter:blur(9px);
}
.avl-gap-cloud.lf-punctuality-aura.is-muted::before{opacity:calc(var(--avl-gap-cloud-opacity,.25) * .20)}
.avl-gap-cloud.lf-punctuality-aura.is-muted::after{opacity:calc(var(--avl-gap-cloud-opacity,.25) * .12)}
.avl-gap-cloud.lf-punctuality-aura.is-selected::before,.avl-gap-cloud.lf-punctuality-aura.is-hovered::before{opacity:calc(var(--avl-gap-cloud-opacity,.25) * 1.15)}
.avl-gap-cloud.lf-punctuality-aura.is-selected::after,.avl-gap-cloud.lf-punctuality-aura.is-hovered::after{opacity:calc(var(--avl-gap-cloud-opacity,.25) * .76)}
.avl-gap-cloud.lf-punctuality-aura .avl-gap-cloud-label{top:calc(100% + 4px);transform:translate(-50%,0);}
.avl-gap-cloud.lf-punctuality-aura.is-hovered .avl-gap-cloud-label,.avl-gap-cloud.lf-punctuality-aura.is-selected .avl-gap-cloud-label{transform:translate(-50%,0)}

/* SCAVL TRIPLEVIS1 PROPOSAL - NOT DEPLOYED
   Target: exact HFX2 parent, public/styles.css.
   Gap-cloud anchor containment must not change the standard/loop
   corridor-axis containing block from absolute to relative.
   Family-track remains relative and unchanged.
   Do not alter GPS, route progress, timetable or bus positions. */
#tripleRouteStack .triple-monitor-board .distance-avl.standard-route .corridor-axis,
#tripleRouteStack .triple-monitor-board .distance-avl.family-loop-avl .corridor-axis {
  position:absolute!important;
}


/* LIVE-ROUTE-PROGRESS1: actual route-change lifecycle indicator, confined to the Live route selector.
   No app layout rows, map layers, service grids or previous branding are changed. */
.live-page .route-control .live-route-field{position:relative!important}
.live-page .route-control .live-route-field>.scavl-route-load-status{
 position:absolute;left:0;right:0;bottom:0;height:34px;z-index:15;display:flex;
 align-items:center;gap:8px;min-width:0;padding:0 11px 3px 9px;box-sizing:border-box;
 border-radius:6px;border:1px solid #12abc5;background:#12354c;color:#edfcff;
 box-shadow:0 2px 9px rgba(0,28,52,.18);font:800 10px/1.25 system-ui,-apple-system,'Segoe UI',sans-serif;
 white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none
}
.live-page .route-control .live-route-field>.scavl-route-load-status[hidden]{display:none!important}
.live-page .route-control .live-route-field>.scavl-route-load-status::before{
 content:'';height:12px;width:12px;min-width:12px;box-sizing:border-box;border-radius:50%;
 border:2px solid rgba(220,253,255,.33);border-top-color:#3ee1e8;animation:scavl-route-load-spin .75s linear infinite
}
.live-page .route-control .live-route-field>.scavl-route-load-status::after{
 content:'';position:absolute;left:0;bottom:0;height:3px;width:100%;
 background:linear-gradient(90deg,transparent,#3ee1e8,#2da4d1,transparent);
 transform:translateX(-100%);animation:scavl-route-load-bar 1.2s ease-in-out infinite
}
.live-page .route-control .live-route-field>.scavl-route-load-status[data-stage="ready"]{
 background:#0e4d40;border-color:#198962;color:#e5fff3
}
.live-page .route-control .live-route-field>.scavl-route-load-status[data-stage="ready"]::before{
 border-color:#63f3b8;animation:none
}
.live-page .route-control .live-route-field>.scavl-route-load-status[data-stage="ready"]::after{display:none}
.live-page .route-control .live-route-field>.scavl-route-load-status[data-stage="error"]{
 background:#672b30;border-color:#bf4750;color:#fff3f4
}
.live-page .route-control .live-route-field>.scavl-route-load-status[data-stage="error"]::after{display:none}
.live-page .route-control .live-route-field>.scavl-route-load-status[data-stage="error"]::before{
 border-color:#ffd1d1;animation:none
}
@keyframes scavl-route-load-spin{to{transform:rotate(360deg)}}
@keyframes scavl-route-load-bar{to{transform:translateX(100%)}}
@media(prefers-reduced-motion:reduce){
 .live-page .route-control .live-route-field>.scavl-route-load-status::before,
 .live-page .route-control .live-route-field>.scavl-route-load-status::after{animation:none}
 .live-page .route-control .live-route-field>.scavl-route-load-status::after{
 transform:translateX(0);background:#28b8c7
 }
}
