:root{
  --bg:#050a12;--bg2:#07111f;--panel:#0b1625;--panel2:#0e1b2d;--line:#1d3047;--line2:#27405d;
  --text:#f3f7fb;--muted:#8294aa;--cyan:#42d3ff;--green:#42e59a;--amber:#ffbd4a;--red:#ff5f68;
  --shadow:0 18px 50px rgba(0,0,0,.28);--radius:16px
}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:radial-gradient(circle at 75% 0,#10233b 0,transparent 32%),var(--bg);color:var(--text);font-variant-numeric:tabular-nums}button,input,select,textarea{font:inherit}.app{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}.sidebar{background:linear-gradient(180deg,#07111d 0%,#050a11 100%);border-right:1px solid #15263a;padding:22px 14px;position:sticky;top:0;height:100vh;overflow:auto;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:0 6px}.brand-mark{width:42px;height:42px;border-radius:11px;background:linear-gradient(145deg,#173652,#0e253a);border:1px solid #2b4d6c;color:#8de2ff;display:grid;place-items:center;font-weight:900;letter-spacing:.04em;box-shadow:inset 0 0 16px rgba(66,211,255,.08)}.brand strong{display:block;font-size:16px}.brand small{display:block;color:#70849a;margin-top:2px;font-size:10px;text-transform:uppercase;letter-spacing:.1em}.nav-title{font-size:9px;color:#50647a;letter-spacing:.18em;margin:28px 10px 9px;font-weight:800}.nav-item{display:flex;align-items:center;gap:11px;color:#98aabe;text-decoration:none;padding:10px 11px;border-radius:9px;margin:2px 0;font-size:13px;border:1px solid transparent;transition:.18s}.nav-item:hover{background:#0d1b2c;color:#e9f7ff}.nav-item.active{background:linear-gradient(90deg,rgba(66,211,255,.14),rgba(66,211,255,.03));border-color:#1b4058;color:#eaf9ff;box-shadow:inset 3px 0 0 var(--cyan)}.nav-icon{width:24px;text-align:center;color:#6dd9fb}.sidebar-spacer{flex:1}.ops-sidebar-state{display:flex;align-items:center;gap:9px;color:#9aacc0;border:1px solid #172a3e;background:#08121e;padding:10px;border-radius:10px;margin:12px 0}.ops-sidebar-state b{font-size:9px;letter-spacing:.12em;display:block;color:#cfe5f2}.ops-sidebar-state small{font-size:9px;color:#5d7288}.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 5px rgba(66,229,154,.09),0 0 13px rgba(66,229,154,.55);animation:pulse 2s infinite}.logout{margin-top:8px}.logout button{width:100%;background:transparent;border:1px solid #1b3046;color:#70849a;padding:9px;border-radius:9px;cursor:pointer}.topbar{height:60px;background:rgba(6,13,23,.92);border-bottom:1px solid #16283b;backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:20}.topbar-title strong{font-size:12px;letter-spacing:.16em}.subtle{color:#51677c;font-size:10px;margin-left:10px;text-transform:uppercase}.topbar-right{display:flex;align-items:center;gap:12px}.ops-clock{font-family:"SFMono-Regular",Consolas,monospace;font-size:18px;letter-spacing:.08em;color:#d9f5ff}.user-chip{font-size:11px;color:#94a8ba;background:#0c1929;border:1px solid #1a3046;padding:7px 10px;border-radius:999px}.content{padding:22px;max-width:none}.ops-commandbar{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:4px 0 14px}.ops-heading .ops-kicker,.panel-kicker{display:block;color:#55c9ee;font-size:9px;letter-spacing:.18em;font-weight:900;text-transform:uppercase;margin-bottom:6px}.ops-heading h1{font-size:30px;letter-spacing:-.03em;margin:0 0 4px}.ops-heading p{margin:0;color:#70859a;font-size:12px}.ops-command-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.ops-command-actions form{margin:0}.system-state{display:flex;align-items:center;gap:10px;border:1px solid #21415a;background:#0a1827;border-radius:11px;padding:8px 11px;min-width:190px}.system-state .state-pulse{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 14px rgba(66,229,154,.7)}.system-state small{display:block;font-size:8px;letter-spacing:.15em;color:#5f768c}.system-state b{display:block;font-size:12px;letter-spacing:.05em;color:var(--green)}.system-state em{display:block;font-size:9px;color:#667b90;font-style:normal}.system-state.watch{border-color:#5a4525}.system-state.watch .state-pulse{background:var(--amber);box-shadow:0 0 14px rgba(255,189,74,.65)}.system-state.watch b{color:var(--amber)}.system-state.critical{border-color:#633038;background:#1b0f18}.system-state.critical .state-pulse{background:var(--red);box-shadow:0 0 16px rgba(255,95,104,.8);animation:pulse 1.15s infinite}.system-state.critical b{color:var(--red)}.ops-btn{appearance:none;border:1px solid #1d7898;background:linear-gradient(180deg,#137aa0,#0b5c7a);color:#effbff;border-radius:9px;padding:9px 12px;font-size:11px;font-weight:800;text-decoration:none;cursor:pointer;white-space:nowrap}.ops-btn:hover{filter:brightness(1.12)}.ops-btn.ghost{background:#0b1725;border-color:#22384e;color:#9eb4c6}.ops-btn.active{border-color:#278f69;color:#7af0b6}.ops-refresh{display:flex;align-items:center;gap:9px;min-height:34px;border:1px solid #17314a;background:#071421;border-radius:10px;padding:7px 11px;color:#6f8499;font-size:10px;margin-bottom:12px}.ops-refresh strong{color:#77f0b7;letter-spacing:.13em}.ops-refresh b{color:#d9f5ff}.divider{width:1px;height:14px;background:#20384f;margin:0 5px}.ops-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px;margin-bottom:12px}.ops-metric{background:linear-gradient(180deg,#0c1929,#091522);border:1px solid #182e43;border-radius:12px;padding:12px 13px;min-height:88px;position:relative;overflow:hidden}.ops-metric:after{content:"";position:absolute;inset:auto 0 0;height:2px;background:#27445d}.ops-metric>span{display:block;color:#698097;font-size:9px;font-weight:900;letter-spacing:.13em}.ops-metric>b{display:block;font-size:29px;line-height:1.05;margin:7px 0 3px;letter-spacing:-.04em}.ops-metric>em{display:block;color:#60768b;font-style:normal;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ops-metric.good:after{background:var(--green)}.ops-metric.warn:after{background:var(--amber);box-shadow:0 0 12px rgba(255,189,74,.45)}.ops-metric.warn>b{color:var(--amber)}.ops-metric.critical{border-color:#572b35;background:linear-gradient(180deg,#1a1018,#100d14)}.ops-metric.critical:after{background:var(--red);box-shadow:0 0 14px rgba(255,95,104,.6)}.ops-metric.critical>b{color:var(--red)}.ops-main-grid{display:grid;grid-template-columns:minmax(0,2.1fr) minmax(330px,.9fr);gap:12px;margin-bottom:12px}.ops-panel{background:linear-gradient(180deg,rgba(13,27,45,.97),rgba(9,20,34,.98));border:1px solid #193049;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-bottom:12px}.ops-panel-head{height:60px;padding:12px 15px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #182e44;background:rgba(7,16,27,.45)}.ops-panel-head h2{font-size:15px;margin:0}.panel-chip,.alarm-counter{display:inline-grid;place-items:center;min-width:34px;height:26px;border:1px solid #25415a;background:#0b1a2a;color:#87a3b9;border-radius:8px;padding:0 8px;font-size:10px;font-weight:800}.alarm-counter.hot{color:#ffc3c6;border-color:#66343a;background:#251118}.map-stage{position:relative}.fleet-map.ops-map{height:590px;border:0;border-radius:0;background:#06101a;overflow:hidden;position:relative}.fleet-map.ops-map .maplibregl-canvas{filter:brightness(.56) saturate(.75) contrast(1.12) hue-rotate(165deg)}.maplibregl-ctrl-group{background:#0b1724!important;border:1px solid #263d52!important;box-shadow:none!important}.maplibregl-ctrl button{filter:invert(1);opacity:.72}.maplibregl-ctrl-attrib{background:rgba(4,9,15,.72)!important;color:#7b8a99!important}.maplibregl-ctrl-attrib a{color:#9cb2c4!important}.map-overlay{position:absolute;left:14px;bottom:14px;display:flex;align-items:center;gap:8px;padding:8px 10px;background:rgba(5,12,20,.88);backdrop-filter:blur(10px);border:1px solid #1c3b50;border-radius:9px;color:#8095a8;font-size:9px;letter-spacing:.08em}.map-overlay b{color:#dff9ee;font-size:10px}.ops-bus-marker{width:31px;height:31px;border-radius:10px;display:grid;place-items:center;background:#0b1825;border:2px solid var(--green);box-shadow:0 0 0 4px rgba(66,229,154,.11),0 4px 14px rgba(0,0,0,.4);cursor:pointer;transform:rotate(45deg)}.ops-bus-marker span{transform:rotate(-45deg);font-size:9px;font-weight:900;color:#ecfff7}.ops-bus-marker.yellow{border-color:var(--amber);box-shadow:0 0 0 4px rgba(255,189,74,.12),0 4px 14px rgba(0,0,0,.4)}.ops-bus-marker.red{border-color:var(--red);box-shadow:0 0 0 5px rgba(255,95,104,.14),0 0 18px rgba(255,95,104,.4)}.maplibregl-popup-content{background:#081523!important;border:1px solid #29435b;border-radius:11px!important;color:#eaf5ff!important;padding:12px 13px!important;box-shadow:0 18px 40px rgba(0,0,0,.45)!important}.maplibregl-popup-tip{border-top-color:#081523!important}.maplibregl-popup-close-button{color:#8aa0b4!important}.popup-kicker{font-size:8px;letter-spacing:.14em;color:#678097}.popup-line{font-size:18px;font-weight:900;color:#7bdcff;margin-top:2px}.popup-dest{font-size:10px;color:#97aabd;margin:2px 0 10px;max-width:210px}.popup-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.popup-grid span{font-size:8px;color:#60788f}.popup-grid b{display:block;color:#fff;font-size:11px;margin-top:2px}.alarm-wall{height:652px;margin-bottom:0;display:flex;flex-direction:column}.alarm-scroll{padding:9px;overflow:auto;flex:1}.ops-alert-card{position:relative;display:grid;grid-template-columns:4px 1fr;background:#0a1725;border:1px solid #1a3045;border-radius:11px;overflow:hidden;margin-bottom:8px}.ops-alert-card.acked{opacity:.58}.alarm-rail{background:var(--amber)}.ops-alert-card.red .alarm-rail{background:var(--red);box-shadow:0 0 12px rgba(255,95,104,.5)}.ops-alert-card.green .alarm-rail{background:var(--green)}.alarm-body{padding:10px 11px}.alarm-meta{display:flex;align-items:center;gap:6px;color:#668099;font-size:8px;font-weight:800;letter-spacing:.11em}.alarm-meta time{margin-left:auto;color:#50697f}.auto-tag{display:inline-block;padding:2px 4px;border:1px solid #31516c;border-radius:4px;color:#7ea2bd;font-size:7px}.alarm-body h3{font-size:12px;line-height:1.25;margin:6px 0 4px}.alarm-body p{font-size:9px;line-height:1.42;margin:0;color:#75899d}.alarm-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px}.alarm-status{font-size:8px;color:#72879a;text-transform:uppercase;letter-spacing:.1em}.alarm-actions{display:flex;gap:5px;align-items:center}.alarm-actions form{margin:0}.ops-action{border:1px solid #286d89;background:#0e536d;color:#e8faff;border-radius:6px;padding:5px 7px;font-size:8px;font-weight:800}.ops-action.ghost{background:transparent;border-color:#2a3e51;color:#8094a5}.alarm-wait{font-size:8px;color:#61788d}.alarm-summary{height:39px;display:flex;align-items:center;justify-content:space-around;border-top:1px solid #192f44;background:#07131f;color:#60778d;font-size:9px}.alarm-summary b{color:#d9e5ee;margin-right:3px}.ops-clear{min-height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#6f8498;gap:5px}.ops-clear.compact{min-height:80px;flex-direction:row;gap:9px}.clear-icon{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(66,229,154,.08);border:1px solid rgba(66,229,154,.28);color:var(--green);font-weight:900}.ops-clear strong{color:#b7c8d5;font-size:12px}.ops-clear span{font-size:9px}.vehicle-head{height:auto;min-height:60px}.vehicle-tools{display:flex;align-items:center;gap:8px}.ops-search{width:280px;background:#07131f;border:1px solid #1e354a;color:#dbe8f2;border-radius:8px;padding:8px 10px;font-size:10px;outline:none}.ops-search:focus{border-color:#26769a;box-shadow:0 0 0 3px rgba(66,211,255,.08)}.flight-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:10px}.flight-strip{display:grid;grid-template-columns:64px minmax(0,1fr) minmax(230px,.9fr);align-items:center;gap:10px;min-height:72px;background:#081522;border:1px solid #172d41;border-left:3px solid var(--green);border-radius:9px;padding:9px 10px;transition:.15s}.flight-strip:hover{background:#0c1b2b;border-color:#294660;transform:translateY(-1px)}.flight-strip.state-yellow{border-left-color:var(--amber)}.flight-strip.state-red{border-left-color:var(--red);background:#130f18}.flight-line{display:flex;align-items:center;gap:7px}.line-badge{display:grid;place-items:center;min-width:38px;height:38px;border-radius:9px;background:#10263a;border:1px solid #24506b;color:#7adfff;font-size:15px;font-weight:900}.flight-state-dot{width:6px;height:6px;border-radius:50%;background:var(--green)}.state-yellow .flight-state-dot{background:var(--amber)}.state-red .flight-state-dot{background:var(--red);box-shadow:0 0 9px rgba(255,95,104,.65)}.flight-main{min-width:0}.flight-main strong{display:block;font-size:11px;color:#dbe7f0}.flight-main span{display:block;margin-top:3px;color:#71879a;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.flight-data{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.flight-data div{border-left:1px solid #1a3145;padding-left:8px}.flight-data small{display:block;color:#536c83;font-size:7px;letter-spacing:.11em}.flight-data b{display:block;margin-top:4px;font-size:11px;color:#ccd9e3}.flight-data b em{font-size:7px;font-style:normal;color:#62788c}.tone-ok{color:var(--green)!important}.tone-warn{color:var(--amber)!important}.tone-danger{color:var(--red)!important}.service-list{padding:9px 15px}.service-item{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid #172c40}.service-item:last-child{border-bottom:0}.service-icon{width:24px;height:24px;border-radius:7px;background:#281d0b;border:1px solid #5f461c;color:var(--amber);display:grid;place-items:center;font-size:11px;font-weight:900}.service-item strong{font-size:11px}.service-item p{font-size:9px;color:#6e8498;margin:3px 0 0}.ops-details{border:1px solid #1a3045;background:#081522;border-radius:12px;margin:10px 0;overflow:hidden}.ops-details summary{cursor:pointer;padding:13px 15px;color:#9db0c1;font-size:11px;font-weight:800;list-style:none}.ops-details summary::-webkit-details-marker{display:none}.ops-details summary:before{content:"+";display:inline-grid;place-items:center;width:20px;height:20px;border:1px solid #2a455c;border-radius:5px;margin-right:8px;color:#6ebed8}.ops-details[open] summary:before{content:"−"}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:0 14px 14px}.settings-grid section{background:#0a1725;border:1px solid #182f44;border-radius:10px;padding:14px}.settings-grid h3{margin:0 0 12px;font-size:12px}.manual-alert-form{padding:0 14px 14px;max-width:900px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.form-grid label,.stack label{display:flex;flex-direction:column;gap:5px;font-size:9px;color:#71879b;font-weight:700}.form-grid .span2{grid-column:1/-1}.checkbox{flex-direction:row!important;align-items:center}.checkbox input{width:auto}.form-grid input,.form-grid select,.form-grid textarea,.stack input,.stack select,.stack textarea{width:100%;border:1px solid #20394f;border-radius:8px;padding:9px 10px;background:#07131f;color:#d9e6ef;outline:none}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.stack input:focus{border-color:#2d83a6;box-shadow:0 0 0 3px rgba(66,211,255,.07)}button{cursor:pointer}.primary,.small{border:1px solid #167598;background:#0d6586;color:white;border-radius:8px;padding:9px 12px;font-weight:800;font-size:10px}.small{padding:6px 8px;font-size:9px}.secondary{background:#101d2a;color:#91a5b6;border-color:#273e52}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:10px}th{text-align:left;color:#62798e;font-size:8px;text-transform:uppercase;letter-spacing:.08em;padding:8px;border-bottom:1px solid #1b3145}td{padding:9px 8px;border-bottom:1px solid #14283a;vertical-align:top}.muted{color:#6b8195;font-size:9px}.row-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.button-link{display:inline-flex;align-items:center;text-decoration:none;background:#0b1725;color:#9db0c1;border:1px solid #22394e;border-radius:8px;padding:7px 9px;font-size:9px;font-weight:800}.help-text{font-size:9px;color:#61788d;line-height:1.5}.empty,.ops-empty{padding:25px;background:#07131f;border:1px dashed #284259;border-radius:10px;color:#71879a;font-size:10px}.panel{background:#0b1725;border:1px solid #1b3145;border-radius:12px;padding:16px;margin:14px 0}.panel h2{font-size:14px;margin:0 0 12px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.metric{background:#0b1725;border:1px solid #1b3145;border-radius:11px;padding:14px}.metric-title{font-size:9px;color:#657c91;font-weight:800;text-transform:uppercase}.metric-value{font-size:25px;font-weight:800;margin:5px 0}.metric-note{font-size:9px;color:#5e758a}.danger-card{border-color:#5e2e36}.integrations-list{display:grid;gap:12px}.integration-card,.user-card{background:#0a1725;border:1px solid #1a3146;border-radius:12px;padding:16px}.integration-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.integration-head h2{margin:0 0 5px;font-size:15px}.integration-head p{margin:0;color:#6e8498;font-size:10px}.integration-meta{display:flex;gap:16px;font-size:9px;color:#61778b;margin:9px 0}.integration-message{background:#07131f;border:1px solid #1a3044;padding:9px 10px;border-radius:8px;font-size:9px;margin:9px 0 13px}.pill,.severity{display:inline-block;padding:4px 7px;border-radius:999px;font-size:8px;font-weight:800}.pill.ok,.severity.grön{background:rgba(66,229,154,.1);color:var(--green)}.pill.warn,.severity.gul{background:rgba(255,189,74,.1);color:var(--amber)}.pill.danger,.severity.röd{background:rgba(255,95,104,.1);color:var(--red)}.users-list{display:grid;gap:11px}.user-card-head h3{margin:0}.user-card-head p{color:#6a8094;font-size:9px}.perm-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:12px 0}.perm{display:flex;align-items:center;gap:7px;padding:7px;background:#07131f;border-radius:7px;font-size:9px}.perm input{width:auto}.login-main{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 50% 0,#102b45,#050a12 55%)}.login-card{width:min(430px,100%);background:#091523;border:1px solid #1c344a;border-radius:18px;padding:30px;box-shadow:0 30px 80px rgba(0,0,0,.45)}.login-card h1{margin:26px 0 16px;font-size:24px}.brand.big{margin-bottom:22px}.stack{display:grid;gap:13px}.login-help{font-size:9px;color:#60778c;background:#07131f;padding:9px;border-radius:8px;margin-top:16px}.alert{border-radius:9px;padding:11px 13px;margin:0 0 14px;font-size:10px}.alert.warn{background:#261c09;border:1px solid #5a441c;color:#e8bd66}.alert.danger{background:#281116;border:1px solid #633039;color:#ff9da3}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.page-head h1{font-size:24px;margin:2px 0 6px}.page-head p{margin:0;color:#71879b;font-size:10px}.eyebrow{font-size:8px;font-weight:900;letter-spacing:.15em;color:#55c9ee}.status-live,.status-badge{background:#0d2b24;color:#62e7ad;border:1px solid #1c5a45;padding:6px 9px;border-radius:999px;font-size:9px;font-weight:800}.section-title{font-size:15px}.module-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.module-card{background:#0b1725;border:1px solid #1a3146;border-radius:12px;padding:16px;text-decoration:none;color:inherit}.module-card h3{margin:6px 0}.module-card p{color:#6e8498;font-size:10px}.module-id,.open-link{font-size:9px;color:#63cee9}.roadmap{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.roadmap span{padding:8px;background:#07131f;border-radius:7px;font-size:9px}.info-card{padding:12px 0;border-bottom:1px solid #172c40}.dashboard-lines{margin-top:14px}.dashboard-lines div{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid #172c40}.dashboard-lines span{color:#6d8397}.connection-form{margin-top:14px;padding-top:14px;border-top:1px solid #1a3045}.map-fallback{height:100%;display:grid;place-items:center;color:#71879a;font-size:11px}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.48}}
@media(max-width:1450px){.ops-metrics{grid-template-columns:repeat(3,1fr)}.flight-board{grid-template-columns:repeat(2,1fr)}.ops-main-grid{grid-template-columns:minmax(0,1.8fr) 380px}.flight-strip{grid-template-columns:58px minmax(0,1fr)}.flight-data{grid-column:1/-1;border-top:1px solid #142a3c;padding-top:7px}}
@media(max-width:1050px){.app{grid-template-columns:74px 1fr}.ops-sidebar .brand>div:last-child,.nav-item span:last-child,.nav-title,.ops-sidebar-state div,.logout button{font-size:0}.brand{justify-content:center}.nav-item{justify-content:center}.nav-icon{font-size:15px}.ops-main-grid{grid-template-columns:1fr}.alarm-wall{height:500px}.flight-board{grid-template-columns:1fr}.settings-grid{grid-template-columns:1fr}.ops-commandbar{align-items:flex-start;flex-direction:column}.ops-command-actions{justify-content:flex-start}.fleet-map.ops-map{height:520px}}
@media(max-width:720px){.app{display:block}.sidebar{display:none}.topbar{position:relative;padding:0 12px}.content{padding:12px}.ops-metrics{grid-template-columns:repeat(2,1fr)}.ops-main-grid{display:block}.fleet-map.ops-map{height:430px}.alarm-wall{height:480px}.vehicle-tools{width:100%;margin-top:8px}.vehicle-head{align-items:flex-start;flex-direction:column}.ops-search{width:100%}.flight-strip{grid-template-columns:52px 1fr}.flight-data{grid-template-columns:repeat(3,1fr)}.settings-grid,.form-grid{grid-template-columns:1fr}.form-grid .span2{grid-column:auto}.topbar-title .subtle,.user-chip{display:none}.ops-heading h1{font-size:25px}.ops-refresh{overflow:auto;white-space:nowrap}}

/* v0.7.0 - PDF-turlistor */
.tt-live-status{color:#8fa6ba}.tt-live-status b{color:#dce9f2}.tt-live-link{color:#6fdfff;text-decoration:none;font-size:9px;font-weight:900;padding:3px 7px;border:1px solid #22506b;border-radius:999px}.tt-live-link:hover{background:#0e2638}
.tt-active-card{display:flex;align-items:center;justify-content:space-between;gap:18px;background:linear-gradient(135deg,#0b2130,#0a1925);border:1px solid #20506a;border-left:4px solid var(--green);border-radius:14px;padding:17px 18px;margin-bottom:14px;box-shadow:var(--shadow)}.tt-active-card h2{margin:4px 0 5px;font-size:18px}.tt-active-card p{margin:0;color:#8297aa;font-size:10px}.tt-active-label{font-size:8px;font-weight:900;letter-spacing:.16em;color:var(--green)}.tt-empty-active{border-left-color:var(--amber)}.tt-empty-active .tt-active-label{color:var(--amber)}
.timetable-upload{padding-bottom:16px}.tt-upload-form{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(420px,1.3fr) auto;gap:14px;align-items:end;padding:4px 14px 0}.tt-file-drop{position:relative;display:grid;grid-template-columns:46px 1fr;grid-template-rows:auto auto;column-gap:11px;align-items:center;border:1px dashed #2f5973;background:#071522;border-radius:11px;padding:12px 13px;cursor:pointer;min-height:76px}.tt-file-drop:hover{border-color:#48bada;background:#0a1a29}.tt-file-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}.tt-file-icon{grid-row:1/3;display:grid;place-items:center;width:42px;height:48px;border-radius:8px;background:#31191e;border:1px solid #663038;color:#ff8991;font-size:10px;font-weight:900;letter-spacing:.08em}.tt-file-drop b{font-size:11px;color:#d9e7f0}.tt-file-drop small{font-size:8px;color:#667e92;line-height:1.4}.tt-meta-grid{grid-template-columns:1.4fr 1fr 1fr 1fr}.tt-check{height:38px;background:#07131f;border:1px solid #20394f;border-radius:8px;padding:0 10px;color:#a7bac9!important}.tt-upload-form>button:disabled{opacity:.65;cursor:wait}.tt-upload-status{display:none;grid-column:1/-1;gap:2px;padding:10px 12px;border:1px solid #28506d;border-radius:8px;background:#0a1a29;color:#bdd8e9}.tt-upload-status b{font-size:10px}.tt-upload-status span{font-size:9px;color:#7e9bad}.tt-upload-form.is-uploading .tt-upload-status{display:grid}.tt-name{display:grid;gap:4px;min-width:180px}.tt-name>strong{font-size:11px}.tt-name>small{color:#61778b;font-size:8px}.tt-name .pill{width:max-content}.tt-table td{min-width:110px}.tt-table td:last-child{min-width:260px}.tt-analysis-note{margin:0 14px 14px;padding:11px 12px;border:1px solid #21405a;background:#071521;border-radius:9px;color:#86a0b5;font-size:10px;line-height:1.55}.tt-analysis-note strong{color:#cfe1ed}
@media(max-width:1200px){.tt-upload-form{grid-template-columns:1fr 1fr}.tt-upload-form>.primary{grid-column:1/-1}.tt-meta-grid{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.tt-active-card{align-items:flex-start;flex-direction:column}.tt-upload-form{grid-template-columns:1fr}.tt-meta-grid{grid-template-columns:1fr}.tt-upload-form>.primary{grid-column:auto}}
.tt-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:14px 0}.tt-summary-grid>div{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column}.tt-summary-grid b{font-size:1.5rem}.tt-summary-grid span{font-size:.75rem;opacity:.65;text-transform:uppercase;letter-spacing:.08em}
.tt-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:14px 0}.tt-summary-grid>div{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column}.tt-summary-grid b{font-size:1.5rem}.tt-summary-grid span{font-size:.75rem;opacity:.65;text-transform:uppercase;letter-spacing:.08em}

/* v0.10.0 – reglertider direkt i Traffic Strips */
.tt-live-status em{font-style:normal;color:#63d9ff;font-weight:800;margin-left:6px}.flight-strip{grid-template-columns:54px minmax(105px,.75fr) minmax(155px,1.05fr) minmax(210px,1fr);min-height:82px}.flight-reg{min-width:0;border-left:1px solid #1a3145;padding-left:10px}.flight-reg small{display:block;color:#54c8ed;font-size:7px;letter-spacing:.12em;font-weight:900}.flight-reg b{display:block;margin-top:4px;color:#e6f5ff;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.flight-reg span{display:block;margin-top:4px;color:#70869a;font-size:8px;white-space:nowrap}.flight-reg span strong{color:#aeeeff;font-size:9px}.flight-reg.done small,.flight-reg.muted-reg small{color:#667c90}.flight-reg.done b,.flight-reg.muted-reg b{color:#8799a9}.popup-reg{border-top:1px solid #1d3449;border-bottom:1px solid #1d3449;padding:8px 0;margin:7px 0}.popup-reg small{display:block;color:#57cdef;font-size:7px;letter-spacing:.12em;font-weight:900}.popup-reg b{display:block;color:#eefaff;font-size:10px;margin-top:3px}.popup-reg span{display:block;color:#7890a4;font-size:8px;margin-top:2px}
@media(max-width:1800px){.flight-board{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1250px){.flight-board{grid-template-columns:1fr}.flight-strip{grid-template-columns:54px minmax(120px,.8fr) minmax(180px,1.1fr) minmax(220px,1fr)}}
@media(max-width:720px){.flight-strip{grid-template-columns:52px 1fr}.flight-reg{grid-column:1/-1;border-left:0;border-top:1px solid #142a3c;padding:8px 0 0}.flight-data{grid-column:1/-1}}

/* v0.11.0 – kartfri driftcentral / börstavla */
.market-layout{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:12px;align-items:stretch;margin-top:12px}.market-panel{min-width:0;overflow:hidden}.market-alarm{height:clamp(560px,72vh,900px);position:sticky;top:72px}.market-head,.market-row{display:grid;grid-template-columns:82px 62px minmax(125px,.85fr) minmax(210px,1.45fr) 90px 72px 82px minmax(150px,1.05fr) 76px;align-items:center;column-gap:8px}.market-head{padding:9px 13px;background:#06111c;border-top:1px solid #172d41;border-bottom:1px solid #20364b;color:#526c82;font-size:7px;font-weight:900;letter-spacing:.12em;position:sticky;top:60px;z-index:4}.market-board{padding:7px;display:grid;gap:5px;max-height:clamp(560px,72vh,900px);overflow:auto;background:#050d17}.market-row{position:relative;min-height:58px;padding:7px 8px;border:1px solid #183047;border-left:4px solid var(--green);border-radius:8px;background:linear-gradient(90deg,rgba(66,229,154,.055),rgba(7,19,31,.88) 20%,#07131f);transition:background .35s,border-color .35s,box-shadow .35s,transform .2s}.market-row:hover{transform:translateX(2px);border-color:#2c506d}.market-row.state-yellow{border-left-color:var(--amber);background:linear-gradient(90deg,rgba(255,189,74,.13),rgba(18,20,24,.94) 23%,#08131e)}.market-row.state-red{border-left-color:var(--red);background:linear-gradient(90deg,rgba(255,95,104,.18),rgba(24,12,18,.96) 25%,#0c111a);box-shadow:inset 0 0 26px rgba(255,95,104,.035)}.market-status{display:flex;align-items:center;gap:7px;font-size:8px;letter-spacing:.08em}.market-status b{color:var(--green)}.market-row.state-yellow .market-status b{color:var(--amber)}.market-row.state-red .market-status b{color:var(--red)}.market-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 10px rgba(66,229,154,.5)}.state-yellow .market-dot{background:var(--amber);box-shadow:0 0 11px rgba(255,189,74,.55)}.state-red .market-dot{background:var(--red);box-shadow:0 0 12px rgba(255,95,104,.75);animation:pulse 1.15s infinite}.market-line .line-badge{min-width:42px;height:36px}.market-bus,.market-dest,.market-delay,.market-reg,.market-gps{min-width:0}.market-bus b,.market-dest b,.market-delay b,.market-reg b,.market-gps b{display:block;color:#dce9f2;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.market-bus small,.market-dest small,.market-delay small,.market-reg small,.market-gps small{display:block;color:#5f768a;font-size:7px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.market-delay b{font-size:14px}.market-reg.pred b{color:#aeeeff}.market-connection{min-width:0}.market-conn{display:flex;flex-direction:column;min-width:0}.market-conn b{font-size:9px;letter-spacing:.08em}.market-conn small{font-size:7px;color:#70869a;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.market-conn.monitored b{color:var(--green)}.market-conn.risk-warn b{color:var(--amber)}.market-conn.risk-danger b{color:var(--red);text-shadow:0 0 10px rgba(255,95,104,.25)}.market-conn.none{color:#40576b}.market-changed{animation:marketChange 1.8s ease-out}.market-changed.state-red{animation:marketChangeRed 1.8s ease-out}.market-changed.state-yellow{animation:marketChangeYellow 1.8s ease-out}@keyframes marketChange{0%{box-shadow:0 0 0 2px rgba(66,229,154,.75),0 0 28px rgba(66,229,154,.2)}100%{box-shadow:none}}@keyframes marketChangeYellow{0%{box-shadow:0 0 0 2px rgba(255,189,74,.9),0 0 32px rgba(255,189,74,.25)}100%{box-shadow:none}}@keyframes marketChangeRed{0%{box-shadow:0 0 0 2px rgba(255,95,104,1),0 0 38px rgba(255,95,104,.34)}100%{box-shadow:inset 0 0 26px rgba(255,95,104,.035)}}
@media(max-width:1500px){.market-layout{grid-template-columns:1fr}.market-alarm{height:440px;position:static}.market-head,.market-row{grid-template-columns:76px 58px 115px minmax(190px,1.3fr) 82px 66px 74px minmax(135px,1fr) 70px}.market-board{max-height:720px}}
@media(max-width:1050px){.market-head{display:none}.market-row{grid-template-columns:80px 60px minmax(120px,.8fr) minmax(180px,1.2fr) 82px 70px 76px;row-gap:7px}.market-connection{grid-column:4/7}.market-gps{grid-column:7}.market-board{max-height:none}}
@media(max-width:720px){.market-row{grid-template-columns:72px 54px 1fr 78px}.market-dest{grid-column:1/-1}.market-reg,.market-connection,.market-gps{grid-column:auto}.market-panel .vehicle-tools{width:100%}.market-board{padding:5px}}

/* ============================================================
   v0.12.0 — Operations Terminal redesign
   Visual direction: modern dispatch / market-terminal interface
   ============================================================ */
:root{--terminal-bg:#06101b;--terminal-panel:#091725;--terminal-panel-2:#0b1b2c;--terminal-border:#173149;--terminal-blue:#24b9f2;--terminal-green:#39e6a6;--terminal-amber:#ffd047;--terminal-red:#ff5964;--terminal-text:#f2f7fb;--terminal-muted:#6f879b}
body{background:radial-gradient(circle at 72% -10%,#0d2940 0,transparent 34%),#050c14;color:var(--terminal-text)}
.app.ops-app{grid-template-columns:220px minmax(0,1fr)}
.ops-topbar{display:none}
.sidebar.ops-sidebar{width:auto;padding:22px 12px 16px;background:linear-gradient(180deg,#071522 0%,#050c14 70%);border-right:1px solid #173047}
.ops-brand{padding:0 8px 20px;border-bottom:1px solid #13283b;margin-bottom:10px}
.ops-brand .brand-mark{width:38px;height:38px;border:0;background:transparent;color:#29bdf5;box-shadow:none;font-size:24px}
.ops-brand strong{font-size:15px;letter-spacing:.04em;color:#f4f8fb}.ops-brand small{font-size:9px;color:#8095a8;letter-spacing:.14em}
.ops-sidebar .nav-title{margin:20px 10px 7px;font-size:8px;color:#4f687e}.ops-sidebar .nav-item{min-height:42px;border-radius:9px;font-size:12px;color:#a4b7c7;padding:9px 10px}.ops-sidebar .nav-item.active{background:linear-gradient(90deg,rgba(36,185,242,.19),rgba(36,185,242,.05));border-color:#1a526e;box-shadow:inset 3px 0 0 #2abdf4;color:#eaf9ff}.ops-sidebar .nav-icon{color:#8db5cb;font-size:15px}.ops-sidebar .nav-item.active .nav-icon{color:#42caff}.sidebar-user{display:grid;gap:2px;padding:8px 9px 12px;color:#71889c;font-size:9px}.sidebar-user b{color:#dce8f0;font-size:10px}.ops-sidebar-state{border:0;background:linear-gradient(90deg,rgba(57,230,166,.1),transparent);padding:9px 10px}.ops-sidebar-state b{color:#8cf5c9;text-transform:none;letter-spacing:.02em}.logout button{height:38px;border-color:#24445d;background:#0b1a29;color:#c3d2dd;text-align:left;padding-left:14px}
.content.ops-content{padding:22px 22px 28px;max-width:1900px;margin:0 auto;width:100%}
.terminal-header{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:16px}.terminal-title h1{font-size:34px;line-height:1;margin:5px 0 7px;letter-spacing:-.035em}.terminal-title p{margin:0;color:#8ba0b2;font-size:13px}.terminal-header-right{display:flex;align-items:stretch;gap:10px}.header-live,.header-timetable,.header-clock{display:flex;align-items:center;gap:10px;min-height:58px;padding:10px 14px;border:1px solid #17334a;background:linear-gradient(180deg,#091927,#07131f);border-radius:11px}.header-live b{color:var(--terminal-green);font-size:11px;letter-spacing:.08em}.header-live small,.header-timetable small,.header-clock small{display:block;color:#738b9f;font-size:9px;margin-top:3px}.header-live small strong{color:#e9f5fb}.header-timetable{min-width:230px}.header-timetable .header-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:#0d2a3c;color:#32c3f5}.header-timetable b{font-size:12px}.header-clock{min-width:128px}.header-clock .clock-symbol{font-size:22px;color:#ffd54f}.header-clock b{display:block;font-size:20px;line-height:1.1;letter-spacing:.02em}.terminal-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:13px}.live-source{display:flex;align-items:center;gap:9px;color:#70889c;font-size:9px}.live-source b{color:#70efb8;letter-spacing:.05em}.terminal-buttons{display:flex;gap:7px;align-items:center}.terminal-buttons form{margin:0}.terminal-buttons .ops-btn{height:36px;border-radius:9px}.terminal-metrics{display:grid;grid-template-columns:1.1fr .9fr .9fr .9fr 1.35fr 1.1fr;gap:10px;margin-bottom:14px}.terminal-metric{min-height:104px;display:flex;align-items:center;gap:13px;padding:15px 16px;border:1px solid #17334a;background:linear-gradient(145deg,#0b1a2a,#081522);border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.14)}.terminal-metric .metric-icon{width:43px;height:43px;flex:0 0 43px;border-radius:50%;display:grid;place-items:center;font-size:18px;font-weight:900;background:#102d42;color:#3fc7fa;box-shadow:inset 0 0 18px rgba(42,189,244,.1)}.terminal-metric b{font-size:27px;line-height:1;display:inline-block;margin-right:7px}.terminal-metric strong{display:block;font-size:12px;margin-top:5px}.terminal-metric small{display:block;color:#71899c;font-size:9px;margin-top:5px}.terminal-metric.green .metric-icon{background:rgba(57,230,166,.12);color:var(--terminal-green)}.terminal-metric.green b,.terminal-metric.green strong{color:#e8fff6}.terminal-metric.amber .metric-icon{background:rgba(255,208,71,.13);color:var(--terminal-amber)}.terminal-metric.amber b{color:#fff3c0}.terminal-metric.red{border-color:#472b35;background:linear-gradient(145deg,#21131c,#0d1721)}.terminal-metric.red .metric-icon{background:rgba(255,89,100,.15);color:var(--terminal-red);box-shadow:0 0 20px rgba(255,89,100,.08)}.terminal-metric.red b{color:#ffadb2}.terminal-metric.connection .metric-icon{background:#142a3b;color:#9bbbd0}.terminal-metric.connection strong{color:#ff7079}.terminal-metric.muted-card .metric-icon{color:#8ca1b3;background:#122536}
.terminal-workspace{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:12px;align-items:start}.terminal-board{min-width:0;margin:0;border-radius:12px;background:#07131f}.board-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid #19334b;background:#081522}.board-tabs{display:flex;align-items:center;gap:3px;flex-wrap:wrap}.board-tab{height:36px;padding:0 15px;border:1px solid transparent;background:transparent;color:#a7bac9;border-radius:8px;font-size:10px;font-weight:800}.board-tab:hover{background:#0d2233}.board-tab.active{color:#06101a;background:linear-gradient(180deg,#46ccff,#24aee6);box-shadow:0 5px 18px rgba(36,185,242,.2)}.board-tab.deviation-tab{margin-left:10px;border-color:#1f3d55;background:#0a1927;color:#c8d7e1}.board-tab.deviation-tab span{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:999px;background:#172c3d;margin-left:5px;color:#fff}.board-tools{display:flex;align-items:center;gap:7px}.search-wrap{height:36px;min-width:300px;display:flex;align-items:center;gap:7px;padding:0 10px;border:1px solid #1b3951;background:#07131f;border-radius:8px;color:#638097}.search-wrap .ops-search{border:0!important;background:transparent!important;padding:0!important;height:auto!important;box-shadow:none!important;width:100%;color:#dce9f2}.filter-button{height:36px;border:1px solid #1e3d55;background:#0a1927;color:#a8bbc9;border-radius:8px;padding:0 12px;font-size:10px;font-weight:800}
.market-head.terminal-head,.market-row{grid-template-columns:82px 58px minmax(145px,.9fr) minmax(190px,1.25fr) 64px 72px 78px minmax(105px,.75fr) 66px 72px 24px;column-gap:8px}.market-head.terminal-head{top:0;padding:9px 11px;background:#06111b;color:#607a8f;font-size:7px;letter-spacing:.11em}.market-board.terminal-market{padding:0;gap:0;max-height:calc(100vh - 330px);min-height:420px;background:#06101a;overflow:auto}.market-row{min-height:64px;border:0;border-bottom:1px solid #173047;border-left:3px solid var(--terminal-green);border-radius:0;padding:8px 9px;background:linear-gradient(90deg,rgba(57,230,166,.055),rgba(7,20,32,.94) 22%,#071420);box-shadow:none}.market-row:hover{transform:none;background:#0b1c2b;box-shadow:inset 0 0 0 1px #24506c}.market-row.state-yellow{border-left-color:var(--terminal-amber);background:linear-gradient(90deg,rgba(255,208,71,.16),rgba(24,24,20,.92) 23%,#09151f)}.market-row.state-red{border-left-color:var(--terminal-red);background:linear-gradient(90deg,rgba(255,89,100,.20),rgba(28,15,20,.94) 25%,#0b141d);box-shadow:inset 0 0 26px rgba(255,89,100,.035)}.market-status{font-size:8px}.market-status b{font-size:8px}.market-dot{width:9px;height:9px}.market-line .line-badge{min-width:45px;height:38px;border-radius:8px;font-size:16px;background:linear-gradient(145deg,#0f7fbd,#125981);border:1px solid #2a8bc0;color:#eafaff}.state-yellow .market-line .line-badge{background:linear-gradient(145deg,#9c6412,#6e4710);border-color:#b77816}.state-red .market-line .line-badge{background:linear-gradient(145deg,#a72543,#721b30);border-color:#c63b59}.market-bus b,.market-dest b,.market-reg b,.market-gps b,.market-speed b{font-size:10px;color:#e9f1f6}.market-bus small,.market-dest small,.market-reg small,.market-gps small,.market-speed small{font-size:7px;color:#60788d}.market-bus .trip-slash{color:#91a8ba;font-weight:600}.market-dest b{font-size:11px}.market-delay b{font-size:12px}.market-reg.pred b{font-size:12px;color:#71efd1}.state-yellow .market-reg.pred b{color:#ffe072}.state-red .market-reg.pred b{color:#ff747d}.market-conn{display:inline-flex;align-items:center;justify-content:center;min-height:30px;border-radius:7px;padding:4px 7px;background:#0c2c27}.market-conn b{font-size:8px}.market-conn small{display:none}.market-conn.monitored b{color:#66e9b2}.market-conn.risk-warn{background:#392e0d}.market-conn.risk-danger{background:#42161e}.market-gps b:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--terminal-green);margin-right:6px;box-shadow:0 0 8px rgba(57,230,166,.5)}.market-gps b.tone-warn:before{background:var(--terminal-amber)}.market-gps b.tone-danger:before{background:var(--terminal-red)}.market-speed{text-align:left}.row-more{width:24px;height:32px;border:0;background:transparent;color:#7e96aa;font-size:18px;border-radius:7px}.row-more:hover{background:#102538;color:#fff}
.terminal-rail{display:grid;gap:12px;position:sticky;top:12px}.terminal-rail .ops-panel{margin:0}.action-panel{max-height:520px}.rail-head{height:60px;padding:12px 13px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #18334b;background:#081522}.rail-head h2{font-size:15px;margin:1px 0 0}.rail-count{min-width:28px;height:28px;border-radius:999px;display:grid;place-items:center;background:#112638;border:1px solid #24455e;font-size:10px;font-weight:900}.rail-count.hot{background:#9f313b;border-color:#c94b56;color:#fff}.terminal-alerts{max-height:450px;padding:8px}.terminal-alerts .ops-alert-card{border-radius:9px;background:#0a1723;border-color:#243b4f}.terminal-alerts .ops-alert-card.red{background:linear-gradient(135deg,#26131a,#101722);border-color:#69333b}.terminal-alerts .ops-alert-card.yellow{background:linear-gradient(135deg,#211d10,#101722);border-color:#554823}.terminal-alerts .alarm-body{padding:10px}.terminal-alerts .alarm-body h3{font-size:11px;margin:6px 0}.terminal-alerts .alarm-body p{font-size:9px;line-height:1.45;color:#8ca1b3}.terminal-alerts .ops-action{border-color:#1a9ed0;background:#0a4560;color:#c9f3ff}.connections-panel{overflow:hidden}.rail-link{font-size:9px;color:#4cccf7}.connection-watch-list{padding:6px 10px 10px}.connection-watch-row{display:grid;grid-template-columns:minmax(0,1fr) 48px 48px;align-items:center;gap:7px;min-height:47px;border-bottom:1px solid #172d40}.connection-watch-row:last-child{border-bottom:0}.connection-watch-row b{font-size:10px}.connection-watch-row small{display:block;color:#657e92;font-size:7px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.connection-margin{font-size:9px;text-align:right;color:#c8d4dc}.conn-pill{display:grid;place-items:center;height:25px;border-radius:6px;font-size:7px;font-weight:900;letter-spacing:.06em}.conn-pill.ok{background:#0b352b;color:#65e7b0}.conn-pill.warn{background:#3b310d;color:#ffe06b}.conn-pill.danger{background:#461821;color:#ff8d94}.secondary-panel{margin-top:12px}.secondary-panel .service-list{min-height:70px}
.ops-details{border-color:#173249;background:#07131f}.ops-details summary{font-size:10px}.panel-kicker{color:#41c9f7}.tone-ok{color:#69eab5!important}.tone-warn{color:#ffe06b!important}.tone-danger{color:#ff747d!important}
@media(max-width:1450px){.terminal-metrics{grid-template-columns:repeat(3,1fr)}.terminal-workspace{grid-template-columns:1fr}.terminal-rail{grid-template-columns:1fr 1fr;position:static}.market-board.terminal-market{max-height:680px}.action-panel{max-height:440px}.terminal-header{align-items:flex-start}.terminal-header-right{flex-wrap:wrap;justify-content:flex-end}}
@media(max-width:1120px){.app.ops-app{grid-template-columns:74px 1fr}.terminal-header{flex-direction:column;align-items:stretch}.terminal-header-right{justify-content:flex-start}.market-head.terminal-head{display:none}.market-row{grid-template-columns:78px 56px minmax(130px,.8fr) minmax(170px,1.2fr) 64px 70px 78px;row-gap:7px}.market-connection{grid-column:4/6}.market-gps{grid-column:6}.market-speed{grid-column:7}.row-more{display:none}.board-toolbar{align-items:flex-start;flex-direction:column}.board-tools{width:100%}.search-wrap{flex:1;min-width:0}.terminal-rail{grid-template-columns:1fr}.ops-sidebar .sidebar-user{display:none}}
@media(max-width:760px){.content.ops-content{padding:14px}.terminal-metrics{grid-template-columns:1fr 1fr}.terminal-header-right{display:grid;grid-template-columns:1fr}.terminal-actions{align-items:flex-start;flex-direction:column}.terminal-buttons{flex-wrap:wrap}.market-row{grid-template-columns:70px 50px 1fr 70px}.market-dest{grid-column:1/-1}.market-reg,.market-connection,.market-gps,.market-speed{grid-column:auto}.board-tabs{gap:2px}.board-tab{padding:0 9px}.board-tab.deviation-tab{margin-left:0}.terminal-title h1{font-size:29px}}

/* v0.13.0 – Ridango operational layer */
.market-row.state-muted{opacity:.66;background:rgba(92,112,139,.055)}
.market-row.state-muted .market-dot{background:#6f7f94;box-shadow:none}
.market-row.state-muted .market-status b{color:#8fa0b6}
.market-row.state-muted:hover{opacity:.92;background:rgba(92,112,139,.11)}
.integration-kicker{display:block;font-size:10px;font-weight:800;letter-spacing:.14em;color:#69d5ff;margin-bottom:7px}
.ridango-card{border-color:rgba(69,192,255,.28);box-shadow:0 18px 50px rgba(0,0,0,.18),inset 0 1px rgba(255,255,255,.025)}
.ridango-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}
.ridango-stat{border:1px solid rgba(137,168,204,.15);background:rgba(6,15,28,.42);border-radius:12px;padding:13px 14px;display:grid;gap:2px}
.ridango-stat b{font-size:22px;color:#f4f8ff}.ridango-stat span{text-transform:uppercase;font-size:10px;font-weight:800;letter-spacing:.1em;color:#77cfff}.ridango-stat small{color:#7f91a8;font-size:11px}
.ridango-import-form{display:grid;grid-template-columns:1fr 1.5fr auto;gap:12px;align-items:end;margin-top:14px}
.ridango-import-form label{display:grid;gap:6px;font-size:12px;color:#9cafc5}.ridango-import-form input,.ridango-import-form select{width:100%}
.vehicle-modal{position:fixed;inset:0;z-index:80;pointer-events:none;visibility:hidden}.vehicle-modal.open{pointer-events:auto;visibility:visible}
.vehicle-modal-backdrop{position:absolute;inset:0;background:rgba(1,7,15,.66);backdrop-filter:blur(3px);opacity:0;transition:opacity .2s}.vehicle-modal.open .vehicle-modal-backdrop{opacity:1}
.vehicle-drawer{position:absolute;right:0;top:0;height:100%;width:min(620px,92vw);background:#081321;border-left:1px solid rgba(125,158,197,.2);box-shadow:-28px 0 70px rgba(0,0,0,.38);transform:translateX(102%);transition:transform .22s ease;overflow:auto}.vehicle-modal.open .vehicle-drawer{transform:none}
.vehicle-close{position:sticky;top:14px;float:right;margin:14px 16px 0 0;z-index:2;width:38px;height:38px;border-radius:10px;border:1px solid rgba(143,171,204,.2);background:#0e1c2e;color:#dfeaff;font-size:24px;cursor:pointer}
.vehicle-modal-body{padding:30px 28px 50px}.vehicle-modal-body h3{font-size:13px;text-transform:uppercase;letter-spacing:.09em;color:#8fa5bd;margin:26px 0 10px}
.vehicle-hero{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;padding:14px 48px 20px 0;border-bottom:1px solid rgba(131,160,194,.13)}.vehicle-hero h2{font-size:30px;margin:5px 0 3px}.vehicle-hero p{margin:0;color:#8ea2b9}
.vehicle-status-chip{border:1px solid rgba(79,214,170,.28);background:rgba(79,214,170,.09);color:#79e0bc;border-radius:999px;padding:7px 10px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;white-space:nowrap}
.vehicle-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:16px}.vehicle-facts>div{background:rgba(255,255,255,.025);border:1px solid rgba(130,158,190,.1);border-radius:10px;padding:11px 12px;display:grid;gap:3px}.vehicle-facts small{color:#7f93aa;font-size:10px;text-transform:uppercase;letter-spacing:.07em}.vehicle-facts b{font-size:13px;color:#eef5ff}
.vehicle-stop-list{display:grid;gap:4px;max-height:360px;overflow:auto;padding-right:4px}.vehicle-stop{display:grid;grid-template-columns:52px 1fr 52px 74px;gap:10px;align-items:center;border-radius:8px;padding:8px 10px;color:#91a3b8;font-size:11px}.vehicle-stop b{color:#dce8f7;font-size:12px}.vehicle-stop.current{background:rgba(61,181,255,.09);outline:1px solid rgba(61,181,255,.16)}.vehicle-stop.current b{color:#72d0ff}
.upcoming-list{display:grid;gap:6px}.upcoming-trip{display:grid;grid-template-columns:55px 80px 1fr;gap:10px;padding:10px 12px;border-radius:9px;background:rgba(255,255,255,.025);border:1px solid rgba(130,158,190,.1);font-size:12px;color:#94a7bc}.upcoming-trip b{color:#e8f2ff}.vehicle-empty,.vehicle-loading{padding:22px;border:1px dashed rgba(130,158,190,.18);border-radius:10px;color:#8396ac;text-align:center}
@media(max-width:900px){.ridango-import-form{grid-template-columns:1fr}.ridango-stats{grid-template-columns:1fr}.vehicle-facts{grid-template-columns:1fr}.vehicle-stop{grid-template-columns:45px 1fr 45px}.vehicle-stop small{display:none}}

/* v0.14.0 – pax + Trafikverket väg/vägväder */
.header-weather{display:flex;align-items:center;gap:10px;min-height:58px;min-width:205px;padding:10px 14px;border:1px solid #17334a;background:linear-gradient(180deg,#091927,#07131f);border-radius:11px}
.header-weather .weather-symbol{font-size:22px;color:#72d0ff}.header-weather small{display:block;color:#738b9f;font-size:9px;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-weather b{display:inline-block;font-size:20px;line-height:1.1;color:#eef8ff;margin-top:2px}.header-weather em{display:block;color:#7fa1b7;font-size:8px;font-style:normal;margin-top:3px;white-space:nowrap}
.market-head.terminal-head,.market-row{grid-template-columns:82px 58px minmax(140px,.9fr) minmax(180px,1.2fr) 60px 68px 76px minmax(100px,.72fr) 64px 44px 68px 24px;column-gap:7px}
.market-pax{min-width:0;text-align:center}.market-pax b{display:block;font-size:12px;color:#eaf8ff}.market-pax small{display:block;font-size:7px;color:#60788d;margin-top:3px}.market-row.state-yellow .market-pax b{color:#ffe072}.market-row.state-red .market-pax b{color:#ff9ba2}
.external-info-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:12px;margin-top:12px}.external-info-grid .secondary-panel{margin-top:0;min-width:0}.ops-panel-head small{display:block;color:#667f93;font-size:9px;margin-top:4px}.tv-weather-list,.tv-traffic-list{display:grid;gap:6px;max-height:360px;overflow:auto;padding:10px}
.weather-station-card{display:grid;grid-template-columns:minmax(120px,1fr) 70px 70px 82px;gap:8px;align-items:center;padding:10px 11px;border:1px solid #173149;border-radius:9px;background:#071521}.weather-station-card>div:first-child{min-width:0}.weather-station-card span{display:block;color:#4dbfe8;font-size:7px;font-weight:900;letter-spacing:.1em}.weather-station-card b{display:block;color:#e5f0f8;font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.weather-station-card small{display:block;color:#647d91;font-size:8px;margin-top:2px}.weather-station-card.danger{border-color:#5b2b36;background:linear-gradient(90deg,rgba(255,89,100,.12),#071521)}.weather-station-card.danger span{color:#ff7f88}.weather-values{text-align:right}.weather-values strong{display:block;color:#eaf6fc;font-size:13px}.weather-values small{text-transform:uppercase;letter-spacing:.06em}
.tv-traffic-item{display:grid;grid-template-columns:10px 1fr;gap:9px;padding:10px 11px;border:1px solid #173149;border-radius:9px;background:#071521}.tv-traffic-dot{width:8px;height:8px;border-radius:50%;background:#4dbfe8;margin-top:4px;box-shadow:0 0 8px rgba(77,191,232,.3)}.tv-traffic-item.warn .tv-traffic-dot{background:var(--terminal-amber)}.tv-traffic-item.danger .tv-traffic-dot{background:var(--terminal-red);box-shadow:0 0 10px rgba(255,89,100,.4)}.tv-traffic-item strong{display:block;color:#e6f1f8;font-size:11px}.tv-traffic-item small{display:block;color:#6e879a;font-size:8px;margin-top:3px}.tv-traffic-item p{margin:5px 0 0;color:#9aafbd;font-size:9px;line-height:1.45}
.trafikverket-card{border-color:rgba(80,190,235,.24)}
@media(max-width:1350px){.terminal-header-right{flex-wrap:wrap;justify-content:flex-end}.external-info-grid{grid-template-columns:1fr}.market-head.terminal-head,.market-row{grid-template-columns:76px 54px minmax(125px,.8fr) minmax(165px,1.1fr) 58px 64px 70px 92px 60px 42px 62px 22px}}
@media(max-width:1120px){.market-row{grid-template-columns:78px 56px minmax(130px,.8fr) minmax(170px,1.2fr) 64px 70px 62px 62px;row-gap:7px}.market-connection{grid-column:4/6}.market-gps{grid-column:6}.market-pax{grid-column:7}.market-speed{grid-column:8}}
@media(max-width:760px){.market-row{grid-template-columns:70px 50px 1fr 58px}.market-pax{grid-column:auto}.header-weather{min-width:0}.weather-station-card{grid-template-columns:1fr 60px 60px}.weather-station-card .weather-values:last-child{display:none}}


/* v0.15.0 – Ridango server-side autosynk */
.form-grid .wide-field{grid-column:1/-1}.manual-fallback{margin-top:12px;border:1px solid #1a3044;border-radius:9px;background:#07131f;padding:10px 12px}.manual-fallback summary{cursor:pointer;color:#71879b;font-size:9px;font-weight:800}.manual-fallback[open] summary{margin-bottom:10px;color:#9fc7d9}.ridango-card .integration-message{border-color:#21405a;background:linear-gradient(90deg,rgba(66,211,255,.06),#07131f)}
@media(max-width:720px){.form-grid .wide-field{grid-column:auto}}

/* v0.16 · SMHI live weather */
.smhi-forecast-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;padding:14px}
.smhi-card{display:grid;grid-template-columns:38px minmax(80px,1fr) auto minmax(110px,1fr);gap:10px;align-items:center;padding:12px 14px;border:1px solid rgba(82,174,224,.16);background:rgba(7,25,40,.62);border-radius:12px}
.smhi-card.risk{border-color:rgba(255,184,77,.55);box-shadow:inset 3px 0 0 #ffb84d}
.smhi-symbol{font-size:24px}.smhi-card b{display:block;color:#f3f8fc}.smhi-card small,.smhi-card span{color:#8fa9bb}.smhi-card>strong{font-size:22px;color:#f6fbff}.smhi-card div:last-child{display:flex;flex-direction:column;gap:2px}
.smhi-card-admin{border-color:rgba(78,190,255,.22)}

/* v0.17.0 – one-screen operations cockpit */
.cockpit-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;grid-template-rows:minmax(420px,1fr) auto;gap:12px;align-items:stretch;min-width:0}
.cockpit-traffic{grid-column:1;grid-row:1;min-width:0;margin:0;display:flex;flex-direction:column}
.cockpit-rail{grid-column:2;grid-row:1/3;min-width:0}
.intelligence-dock{grid-column:1;grid-row:2;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;min-width:0}
.intelligence-panel{min-width:0;margin:0!important;display:flex;flex-direction:column;background:linear-gradient(180deg,rgba(12,27,44,.98),rgba(7,18,30,.99))}
.intelligence-panel .ops-panel-head{height:50px;min-height:50px;padding:8px 10px}
.intelligence-panel .ops-panel-head h2{font-size:12px}
.intelligence-panel .ops-panel-head small{font-size:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px}
.intelligence-panel .panel-kicker{font-size:7px;margin-bottom:3px}
.intelligence-panel .panel-chip{height:22px;min-width:28px;font-size:8px;padding:0 6px}
.intelligence-panel .tv-weather-list,.intelligence-panel .tv-traffic-list,.intelligence-panel .service-list,.intelligence-panel .smhi-forecast-list{flex:1;min-height:0;max-height:none;overflow:hidden;padding:6px;gap:4px;align-content:start}
.intelligence-panel .weather-station-card{grid-template-columns:minmax(78px,1fr) 38px 38px 50px;gap:4px;padding:6px 7px;border-radius:7px}
.intelligence-panel .weather-station-card span{font-size:6px}.intelligence-panel .weather-station-card b{font-size:8px}.intelligence-panel .weather-station-card small{font-size:6px}.intelligence-panel .weather-values strong{font-size:9px}
.intelligence-panel .tv-traffic-item{grid-template-columns:7px 1fr;gap:6px;padding:6px 7px;border-radius:7px}
.intelligence-panel .tv-traffic-dot{width:6px;height:6px}.intelligence-panel .tv-traffic-item strong{font-size:8px}.intelligence-panel .tv-traffic-item small{font-size:6px}.intelligence-panel .tv-traffic-item p{font-size:7px;line-height:1.25;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.intelligence-panel .smhi-forecast-list{display:grid;grid-template-columns:1fr;gap:3px}
.intelligence-panel .smhi-card{grid-template-columns:24px minmax(58px,1fr) auto;gap:6px;padding:5px 7px;border-radius:7px;min-height:34px}
.intelligence-panel .smhi-symbol{font-size:16px}.intelligence-panel .smhi-card b{font-size:8px}.intelligence-panel .smhi-card small,.intelligence-panel .smhi-card span{font-size:6px}.intelligence-panel .smhi-card>strong{font-size:12px}.intelligence-panel .smhi-card>div:last-child{grid-column:2/4;display:flex;flex-direction:row;gap:6px;margin-top:-3px;white-space:nowrap}
.intelligence-panel .service-item{gap:6px;padding:6px 2px}.intelligence-panel .service-icon{width:18px;height:18px;border-radius:5px;font-size:8px;flex:0 0 18px}.intelligence-panel .service-item strong{font-size:8px}.intelligence-panel .service-item p{font-size:7px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.intelligence-panel .ops-clear.compact{min-height:0;padding:12px 8px}.intelligence-panel .ops-clear .clear-icon{width:28px;height:28px;font-size:14px}.intelligence-panel .ops-clear strong{font-size:8px}.intelligence-panel .ops-clear span{font-size:7px}
.dashboard-admin-tools{display:flex;gap:8px;align-items:flex-end}

@media(min-width:1500px) and (min-height:850px){
  html,body{height:100%;overflow:hidden}
  .app.ops-app{height:100vh;min-height:0;overflow:hidden}
  .app.ops-app>main{height:100vh;min-width:0;overflow:hidden}
  .content.ops-content{height:100vh;overflow:hidden;padding:12px 16px 12px;max-width:none}
  .terminal-header{min-height:50px;margin-bottom:7px;align-items:center;gap:16px}
  .terminal-title h1{font-size:27px;margin:3px 0 4px}.terminal-title p{font-size:10px}.terminal-title .ops-kicker{font-size:7px;margin-bottom:3px}
  .terminal-header-right{gap:7px}.header-live,.header-timetable,.header-clock,.header-weather{min-height:48px;height:48px;padding:6px 10px;border-radius:9px}.header-timetable{min-width:190px}.header-clock{min-width:110px}.header-weather{min-width:180px}.header-weather .weather-symbol{font-size:18px}.header-weather b,.header-clock b{font-size:16px}.header-live small,.header-timetable small,.header-clock small,.header-weather small{font-size:7px}.header-weather em{font-size:6px}
  .terminal-actions{height:30px;margin-bottom:7px}.live-source{font-size:7px}.terminal-buttons .ops-btn{height:30px;padding:6px 9px;font-size:9px}
  .terminal-metrics{height:70px;gap:7px;margin-bottom:8px}.terminal-metric{min-height:70px;height:70px;padding:8px 10px;gap:9px;border-radius:9px}.terminal-metric .metric-icon{width:32px;height:32px;flex-basis:32px;font-size:13px}.terminal-metric b{font-size:20px}.terminal-metric strong{font-size:9px;margin-top:3px}.terminal-metric small{font-size:7px;margin-top:3px}
  .cockpit-grid{height:calc(100vh - 184px);grid-template-columns:minmax(0,1fr) 310px;grid-template-rows:minmax(0,1fr) 248px;gap:8px}
  .cockpit-traffic{height:100%}.cockpit-traffic .board-toolbar{min-height:42px;height:42px;padding:5px 8px}.board-tab{height:30px;padding:0 10px;font-size:8px}.board-tab.deviation-tab{margin-left:4px}.board-tab.deviation-tab span{height:17px;min-width:17px;font-size:7px}.board-tools{gap:5px}.search-wrap{height:30px;min-width:240px;font-size:8px}.filter-button{height:30px;font-size:8px;padding:0 8px}
  .market-head.terminal-head{height:25px;padding:6px 8px;font-size:6px}.market-board.terminal-market{flex:1;min-height:0;max-height:none;overflow:hidden}.market-row{min-height:48px;height:48px;padding:5px 7px}.market-line .line-badge{min-width:38px;height:30px;font-size:13px}.market-bus b,.market-dest b,.market-reg b,.market-gps b,.market-speed b{font-size:8px}.market-bus small,.market-dest small,.market-reg small,.market-gps small,.market-speed small,.market-pax small{font-size:6px}.market-dest b{font-size:9px}.market-delay b,.market-reg.pred b,.market-pax b{font-size:9px}.market-conn{min-height:24px;padding:3px 5px}.market-status,.market-status b{font-size:7px}.market-dot{width:7px;height:7px}.row-more{height:26px;font-size:14px}
  .cockpit-rail{height:100%;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:8px;position:static}.cockpit-rail .ops-panel{min-height:0}.cockpit-rail .action-panel{max-height:none;height:auto;display:flex;flex-direction:column}.rail-head{height:48px;min-height:48px;padding:8px 10px}.rail-head h2{font-size:12px}.rail-head .panel-kicker{font-size:7px;margin-bottom:3px}.terminal-alerts{flex:1;min-height:0;max-height:none;overflow:hidden;padding:6px}.terminal-alerts .ops-alert-card{margin-bottom:5px}.terminal-alerts .alarm-body{padding:7px}.terminal-alerts .alarm-body h3{font-size:9px;margin:4px 0}.terminal-alerts .alarm-body p{font-size:7px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.alarm-meta{font-size:6px}.alarm-footer{margin-top:5px}.terminal-alerts .ops-action{font-size:7px;padding:5px 7px}.connections-panel{max-height:210px}.connection-watch-list{padding:4px 7px 7px}.connection-watch-row{min-height:36px;grid-template-columns:minmax(0,1fr) 38px 38px;gap:5px}.connection-watch-row b{font-size:8px}.connection-watch-row small{font-size:6px}.connection-margin{font-size:7px}.conn-pill{height:20px;font-size:6px}
  .intelligence-dock{height:248px;gap:8px}.intelligence-panel{height:248px;border-radius:10px}.intelligence-panel .ops-panel-head{height:46px;min-height:46px}
  .dashboard-admin-tools{position:fixed;right:16px;bottom:10px;z-index:70;pointer-events:none}.dashboard-admin-tools .ops-details{pointer-events:auto;margin:0;background:#081522;box-shadow:0 14px 40px rgba(0,0,0,.45)}.dashboard-admin-tools .ops-details summary{padding:7px 9px;font-size:8px}.dashboard-admin-tools .ops-details summary:before{width:16px;height:16px;margin-right:5px}.dashboard-admin-tools .ops-details[open]{width:min(1050px,calc(100vw - 280px));max-height:78vh;overflow:auto}.dashboard-admin-tools .ops-details[open] summary{position:sticky;top:0;background:#081522;z-index:2}.dashboard-admin-tools .settings-grid{grid-template-columns:1fr 1fr}.dashboard-admin-tools .manual-alert-form{min-width:560px}
}

@media(max-width:1499px), (max-height:849px){
  .cockpit-grid{grid-template-columns:1fr;grid-template-rows:auto}.cockpit-traffic{grid-column:1;grid-row:auto}.cockpit-rail{grid-column:1;grid-row:auto;grid-template-columns:1fr 1fr;position:static}.intelligence-dock{grid-column:1;grid-row:auto;grid-template-columns:repeat(2,minmax(0,1fr))}.intelligence-panel.service-panel{grid-column:1/-1}.dashboard-admin-tools{display:block}.market-board.terminal-market{overflow:auto}
}
@media(max-width:900px){.cockpit-rail{grid-template-columns:1fr}.intelligence-dock{grid-template-columns:1fr}.intelligence-panel.service-panel{grid-column:auto}}


/* v0.18.0 – Calm Control Room: less chrome, stronger hierarchy */
:root{--v18-bg:#071019;--v18-panel:#0a1520;--v18-panel2:#0d1925;--v18-line:#1b2a38;--v18-text:#eef4f8;--v18-muted:#718496;--v18-blue:#42bff5;--v18-green:#42d99a;--v18-amber:#f2bb49;--v18-red:#ef626b}
body{background:var(--v18-bg)!important}
.app.ops-app{grid-template-columns:184px minmax(0,1fr)!important;background:var(--v18-bg)}
.sidebar.ops-sidebar{padding:18px 10px 14px;background:#08111a;border-right:1px solid #152330}
.content.ops-content{max-width:none!important;margin:0!important;padding:18px 22px 14px!important;width:100%;height:100vh;overflow:hidden}
.v18-header{height:66px;display:flex;align-items:center;justify-content:space-between;gap:22px;border-bottom:1px solid var(--v18-line);margin-bottom:8px}
.v18-titleblock{min-width:0}.v18-titleblock .ops-kicker{font-size:8px;letter-spacing:.16em;color:#5e8ca5;margin:0 0 4px}.v18-titleline{display:flex;align-items:center;gap:12px}.v18-titleline h1{font-size:27px;line-height:1;margin:0;letter-spacing:-.035em;font-weight:720}.v18-live-pill{height:24px;display:inline-flex;align-items:center;gap:7px;padding:0 9px;border:1px solid #1d3d34;border-radius:999px;background:#0a1a17;color:#80e8bc;font-size:8px;font-weight:800;letter-spacing:.08em}.v18-live-pill .live-dot{width:6px;height:6px;box-shadow:none;animation:none}.v18-subline{display:flex;align-items:center;gap:7px;color:#667b8d;font-size:8px;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v18-sep{color:#2f4353}
.v18-headright{display:flex;align-items:center;gap:9px}.v18-head-weather{height:48px;display:flex;align-items:center;gap:9px;padding:0 12px;border-left:1px solid var(--v18-line)}.v18-head-weather>span{font-size:20px}.v18-head-weather small{display:block;color:#688094;font-size:7px;max-width:135px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v18-head-weather b{display:inline-block;font-size:15px;margin-top:2px}.v18-head-weather em{display:block;color:#71889a;font-style:normal;font-size:7px;margin-top:2px}.v18-clock{height:48px;min-width:88px;padding:6px 12px;border-left:1px solid var(--v18-line);display:flex;flex-direction:column;justify-content:center}.v18-clock small{font-size:7px;color:#667d90;letter-spacing:.13em}.v18-clock b{font-size:18px;letter-spacing:.02em;margin-top:2px}.v18-actions{display:flex;gap:5px}.v18-actions form{margin:0}.v18-actions .ops-btn{height:30px;padding:0 9px;border-radius:6px;font-size:8px;background:#0c1b28;border-color:#244052;color:#b8c9d5}.v18-actions .ops-btn:first-child{background:#0d6f91;border-color:#1885ab;color:white}
.v18-kpis{height:54px;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border:1px solid var(--v18-line);background:#09131d;border-radius:9px;margin-bottom:8px;overflow:hidden}.v18-kpi{display:grid;grid-template-columns:auto 1fr;grid-template-rows:1fr 1fr;column-gap:10px;align-items:center;padding:7px 13px;border-right:1px solid var(--v18-line);position:relative}.v18-kpi:last-child{border-right:0}.v18-kpi span{grid-column:2;color:#6c8192;font-size:7px;font-weight:800;letter-spacing:.13em;align-self:end}.v18-kpi b{grid-row:1/3;grid-column:1;font-size:24px;line-height:1;color:#f0f5f8;font-weight:720}.v18-kpi small{grid-column:2;color:#566c7d;font-size:7px;align-self:start}.v18-kpi.ok b{color:#dff8ed}.v18-kpi.warn:before,.v18-kpi.danger:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:2px;border-radius:2px}.v18-kpi.warn:before{background:var(--v18-amber)}.v18-kpi.warn b{color:#f4d48a}.v18-kpi.danger:before{background:var(--v18-red)}.v18-kpi.danger b{color:#ff9ca2}
.v18-workspace{height:calc(100vh - 214px);min-height:430px;display:grid;grid-template-columns:minmax(0,1fr) 328px;gap:8px;margin-bottom:8px}.v18-board{min-width:0;min-height:0;display:flex;flex-direction:column;border:1px solid var(--v18-line);border-radius:9px;overflow:hidden;background:#08121b}.v18-boardbar{height:42px;min-height:42px;display:flex;align-items:center;justify-content:space-between;padding:5px 7px;border-bottom:1px solid var(--v18-line);background:#0a1520}.v18-board .board-tabs{gap:2px;flex-wrap:nowrap}.v18-board .board-tab{height:30px;padding:0 10px;border-radius:6px;font-size:8px;color:#8194a4}.v18-board .board-tab.active{background:#132c3c;color:#dff6ff;box-shadow:none;border-color:#21475d}.v18-board .board-tab.deviation-tab{margin-left:0;background:transparent;border-color:transparent}.v18-board .board-tab.deviation-tab.active{background:#132c3c;border-color:#21475d}.v18-board .board-tab.deviation-tab span{height:16px;min-width:16px;font-size:6px;background:#223747}.v18-board .search-wrap{height:29px;min-width:235px;border-radius:6px;background:#071019;border-color:#1a2c3a;font-size:8px}.v18-board .market-head.terminal-head{height:27px;min-height:27px;padding:7px 8px;background:#071019;border-bottom:1px solid #152633;color:#5e7283;font-size:6px;position:static}.v18-board .market-board.terminal-market{flex:1;min-height:0;max-height:none!important;overflow:auto;background:#08121b}.v18-board .market-row{min-height:52px;height:52px;padding:5px 7px;background:#09141e;border-bottom:1px solid #142634;border-left:2px solid transparent}.v18-board .market-row:hover{background:#0d1b27;box-shadow:none}.v18-board .market-row.state-yellow{border-left-color:var(--v18-amber);background:linear-gradient(90deg,rgba(242,187,73,.08),#09141e 14%)}.v18-board .market-row.state-red{border-left-color:var(--v18-red);background:linear-gradient(90deg,rgba(239,98,107,.10),#09141e 14%);box-shadow:none}.v18-board .market-line .line-badge{min-width:36px;height:29px;border-radius:6px;font-size:12px;background:#102638;border:1px solid #24445b;color:#dff3ff}.v18-board .state-yellow .market-line .line-badge{background:#34280f;border-color:#65501f;color:#f5d98c}.v18-board .state-red .market-line .line-badge{background:#35181d;border-color:#653038;color:#ffadb2}.v18-board .market-status,.v18-board .market-status b{font-size:7px}.v18-board .market-dot{width:6px;height:6px;box-shadow:none}.v18-board .market-bus b,.v18-board .market-dest b,.v18-board .market-reg b,.v18-board .market-gps b,.v18-board .market-speed b{font-size:8px}.v18-board .market-bus small,.v18-board .market-dest small,.v18-board .market-reg small,.v18-board .market-gps small,.v18-board .market-speed small,.v18-board .market-pax small{font-size:6px}.v18-board .market-dest b{font-size:9px}.v18-board .market-delay b,.v18-board .market-reg.pred b,.v18-board .market-pax b{font-size:9px}.v18-board .market-conn{min-height:22px;padding:2px 5px;border-radius:5px;background:#0b251f}.v18-board .market-gps b:before{width:5px;height:5px;box-shadow:none;margin-right:4px}.v18-board .row-more{height:24px;font-size:13px}
.v18-rail{min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:8px}.v18-rail-section{min-height:0;border:1px solid var(--v18-line);border-radius:9px;overflow:hidden;background:#09141e}.v18-railhead{height:43px;display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border-bottom:1px solid var(--v18-line);background:#0a1520}.v18-railhead span{display:block;color:#5f7a8d;font-size:6px;font-weight:900;letter-spacing:.14em}.v18-railhead h2{font-size:12px;margin:2px 0 0}.v18-railhead>small{font-size:7px;color:#6f8394}.v18-count{min-width:24px;height:24px;display:grid;place-items:center;border-radius:999px;background:#112331;color:#91a6b5;font-size:8px}.v18-count.hot{background:#35181d;color:#ff9ca2}.v18-actions-panel{display:flex;flex-direction:column}.v18-actions-panel .terminal-alerts{flex:1;min-height:0;overflow:auto;padding:6px}.v18-actions-panel .ops-alert-card{margin-bottom:5px;border-radius:7px;background:#0a1621;border-color:#192c3a}.v18-actions-panel .alarm-body{padding:7px 8px}.v18-actions-panel .alarm-body h3{font-size:9px;margin:3px 0}.v18-actions-panel .alarm-body p{font-size:7px;line-height:1.35;margin:3px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.v18-actions-panel .alarm-meta{font-size:6px}.v18-actions-panel .alarm-footer{margin-top:5px}.v18-actions-panel .ops-action{font-size:7px;padding:4px 6px;border-radius:5px}.v18-connections{max-height:170px}.v18-connections .connection-watch-list{padding:4px 7px 7px}.v18-connections .connection-watch-row{min-height:34px;grid-template-columns:minmax(0,1fr) 38px 36px;gap:5px}.v18-connections .connection-watch-row b{font-size:8px}.v18-connections .connection-watch-row small{font-size:6px}.v18-connections .connection-margin{font-size:7px}.v18-connections .conn-pill{height:18px;font-size:6px}
.v18-contextbar{height:70px;display:grid;grid-template-columns:1.2fr .85fr 1.15fr .85fr;gap:6px}.v18-context-card{position:relative;min-width:0;border:1px solid var(--v18-line);border-radius:8px;background:#09141e}.v18-context-card>summary{height:68px;list-style:none;cursor:pointer;padding:10px 12px;display:flex;flex-direction:column;justify-content:center;position:relative}.v18-context-card>summary::-webkit-details-marker{display:none}.v18-context-card>summary:after{content:"⌃";position:absolute;right:10px;top:10px;color:#425c6f;font-size:9px}.v18-context-card[open]>summary:after{content:"⌄"}.v18-context-card>summary span{font-size:6px;color:#5e7c90;font-weight:900;letter-spacing:.14em}.v18-context-card>summary b{font-size:11px;color:#dfe9ef;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v18-context-card>summary b strong{font-size:14px}.v18-context-card>summary small{font-size:7px;color:#667b8b;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v18-context-card.attention{border-color:#5b4925}.v18-context-card.attention>summary:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:2px;background:var(--v18-amber);border-radius:2px}.v18-context-pop{position:absolute;left:0;bottom:74px;width:430px;max-height:330px;overflow:auto;z-index:90;border:1px solid #274054;border-radius:9px;background:#09141e;box-shadow:0 22px 60px rgba(0,0,0,.55);padding:7px}.v18-context-pop.wide{width:680px}.v18-context-pop.align-right{left:auto;right:0}.v18-pop-head{height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px 6px;border-bottom:1px solid #1b2c3a}.v18-pop-head b{font-size:9px}.v18-pop-head span{font-size:7px;color:#718798}.v18-context-pop .tv-weather-list,.v18-context-pop .tv-traffic-list,.v18-context-pop .service-list,.v18-context-pop .smhi-forecast-list{max-height:270px;overflow:auto;padding:6px;gap:5px}.v18-smhi-popgrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.v18-context-pop .smhi-card{grid-template-columns:24px minmax(70px,1fr) auto;gap:6px;padding:6px 7px;border-radius:7px}.v18-context-pop .smhi-card>div:last-child{grid-column:2/4;display:flex;flex-direction:row;gap:7px}.v18-context-pop .smhi-symbol{font-size:16px}.v18-context-pop .smhi-card b{font-size:8px}.v18-context-pop .smhi-card small,.v18-context-pop .smhi-card span{font-size:6px}.v18-context-pop .smhi-card>strong{font-size:11px}
.dashboard-admin-tools{position:fixed;right:12px;bottom:84px;z-index:80;display:flex;gap:5px;pointer-events:none}.dashboard-admin-tools .ops-details{pointer-events:auto;margin:0;background:#09141e;border-color:#1b2e3d;box-shadow:0 12px 40px rgba(0,0,0,.45)}.dashboard-admin-tools .ops-details summary{padding:6px 8px;font-size:7px}.dashboard-admin-tools .ops-details[open]{width:min(1000px,calc(100vw - 220px));max-height:74vh;overflow:auto}
@media(min-width:1500px) and (min-height:820px){html,body{height:100%;overflow:hidden}.app.ops-app{height:100vh;min-height:0}.app.ops-app>main{height:100vh;min-width:0;overflow:hidden}.market-head.terminal-head,.market-row{grid-template-columns:70px 50px minmax(125px,.85fr) minmax(180px,1.3fr) 54px 62px 68px minmax(88px,.68fr) 58px 38px 58px 20px;column-gap:6px}}
@media(max-width:1499px),(max-height:819px){.content.ops-content{height:auto;overflow:auto}.v18-workspace{height:auto;min-height:600px}.v18-contextbar{height:auto;grid-template-columns:repeat(2,minmax(0,1fr))}.v18-context-card>summary{height:64px}.v18-head-weather{display:none}.v18-kpis{grid-template-columns:repeat(3,1fr);height:auto}.v18-kpi{min-height:48px}.v18-workspace{grid-template-columns:1fr}.v18-rail{grid-template-columns:1fr 1fr;grid-template-rows:auto}.v18-actions-panel{max-height:350px}.v18-board .market-board.terminal-market{max-height:620px!important}.dashboard-admin-tools{position:static;margin-top:8px}}
@media(max-width:900px){.app.ops-app{grid-template-columns:72px 1fr!important}.v18-header{height:auto;align-items:flex-start}.v18-headright{flex-wrap:wrap;justify-content:flex-end}.v18-kpis{grid-template-columns:repeat(2,1fr)}.v18-rail{grid-template-columns:1fr}.v18-contextbar{grid-template-columns:1fr}.v18-context-pop,.v18-context-pop.wide{position:fixed;left:80px!important;right:12px!important;bottom:12px;width:auto;max-height:70vh}.v18-board .market-head.terminal-head{display:none}.v18-board .market-row{height:auto;min-height:58px}}

/* v0.19.0 – Adaptive Control Room: readable typography + fixed one-screen layout */
:root{--v19-line:#203445;--v19-panel:#0a1621;--v19-panel2:#0d1b27;--v19-muted:#7f95a7}
@media(min-width:1500px) and (min-height:820px){
  html,body{height:100%;overflow:hidden}
  .app.ops-app{height:100vh;min-height:0;grid-template-columns:190px minmax(0,1fr)!important}
  .app.ops-app>main{height:100vh;min-width:0;overflow:hidden}
  .content.ops-content{height:100vh!important;min-height:0;overflow:hidden!important;padding:16px 20px!important;display:grid;grid-template-rows:76px 64px minmax(0,1fr) 158px;gap:10px}
  .v18-header,.v18-kpis,.v18-workspace,.v18-contextbar{margin:0!important;min-height:0}
  .v18-header{height:76px}
  .v18-workspace{height:auto!important;min-height:0!important;grid-template-columns:minmax(0,1fr) 370px;gap:10px}
  .v18-contextbar{height:158px;grid-template-columns:1.15fr .9fr 1.15fr .9fr;gap:10px}
  .dashboard-admin-tools{bottom:174px}
}

/* Larger, calmer header */
.v18-titleblock .ops-kicker{font-size:10px;color:#76a4bc}
.v18-titleline h1{font-size:32px}
.v18-live-pill{height:28px;padding:0 11px;font-size:10px}
.v18-subline{font-size:10px;margin-top:7px;color:#7f93a4}
.v18-head-weather{height:56px;padding:0 15px;gap:11px}
.v18-head-weather>span{font-size:26px}.v18-head-weather small{font-size:9px;max-width:180px}.v18-head-weather b{font-size:18px}.v18-head-weather em{font-size:9px}
.v18-clock{height:56px;min-width:104px;padding:7px 14px}.v18-clock small{font-size:9px}.v18-clock b{font-size:22px}
.v18-actions .ops-btn{height:34px;padding:0 11px;font-size:10px}

/* Status strip: readable at control-room distance */
.v18-kpis{height:64px;border-color:var(--v19-line);background:#09151f}
.v18-kpi{padding:8px 16px;column-gap:12px;border-color:var(--v19-line)}
.v18-kpi span{font-size:9px}.v18-kpi b{font-size:29px}.v18-kpi small{font-size:9px}

/* Traffic board: rows no longer stretch to fill the whole screen */
.v18-board,.v18-rail-section,.v18-context-card{border-color:var(--v19-line);background:var(--v19-panel)}
.v18-boardbar{height:48px;min-height:48px;padding:6px 9px;background:#0b1823;border-color:var(--v19-line)}
.v18-board .board-tab{height:34px;padding:0 13px;font-size:10px}.v18-board .board-tab.deviation-tab span{font-size:8px;height:18px;min-width:18px}
.v18-board .search-wrap{height:34px;min-width:300px;font-size:10px}
.v18-board .market-head.terminal-head{height:34px;min-height:34px;padding:9px 10px;font-size:8px;letter-spacing:.09em;color:#7890a2}
.v18-board .market-board.terminal-market{display:flex!important;flex-direction:column!important;justify-content:flex-start!important;align-content:flex-start!important;gap:0!important;overflow:auto;background:#08131d}
.v18-board .market-row{flex:0 0 auto;width:100%;min-height:0;padding:8px 10px;transition:height .16s ease,background .2s ease}

/* Adaptive density: few buses = bigger and easier to read; busy day = denser */
.v18-board .density-spacious .market-row{height:88px}
.v18-board .density-relaxed .market-row{height:76px}
.v18-board .density-standard .market-row{height:64px}
.v18-board .density-compact .market-row{height:54px}
.v18-board .density-spacious .market-line .line-badge,.v18-board .density-relaxed .market-line .line-badge{min-width:46px;height:38px;font-size:16px}
.v18-board .density-standard .market-line .line-badge{min-width:42px;height:34px;font-size:14px}
.v18-board .density-compact .market-line .line-badge{min-width:38px;height:30px;font-size:12px}
.v18-board .market-status,.v18-board .market-status b{font-size:9px}.v18-board .market-dot{width:7px;height:7px}
.v18-board .market-bus b,.v18-board .market-reg b,.v18-board .market-gps b,.v18-board .market-speed b{font-size:11px}
.v18-board .market-dest b{font-size:12px}.v18-board .market-delay b,.v18-board .market-reg.pred b,.v18-board .market-pax b{font-size:12px}
.v18-board .market-bus small,.v18-board .market-dest small,.v18-board .market-reg small,.v18-board .market-gps small,.v18-board .market-speed small,.v18-board .market-pax small{font-size:8px;margin-top:3px}
.v18-board .density-spacious .market-bus b,.v18-board .density-spacious .market-reg b,.v18-board .density-spacious .market-gps b,.v18-board .density-spacious .market-speed b,.v18-board .density-relaxed .market-bus b,.v18-board .density-relaxed .market-reg b,.v18-board .density-relaxed .market-gps b,.v18-board .density-relaxed .market-speed b{font-size:12px}
.v18-board .density-spacious .market-dest b,.v18-board .density-relaxed .market-dest b{font-size:14px}
.v18-board .density-spacious .market-delay b,.v18-board .density-spacious .market-reg.pred b,.v18-board .density-spacious .market-pax b,.v18-board .density-relaxed .market-delay b,.v18-board .density-relaxed .market-reg.pred b,.v18-board .density-relaxed .market-pax b{font-size:14px}
.v18-board .density-spacious .market-bus small,.v18-board .density-spacious .market-dest small,.v18-board .density-spacious .market-reg small,.v18-board .density-spacious .market-gps small,.v18-board .density-spacious .market-speed small,.v18-board .density-spacious .market-pax small,.v18-board .density-relaxed .market-bus small,.v18-board .density-relaxed .market-dest small,.v18-board .density-relaxed .market-reg small,.v18-board .density-relaxed .market-gps small,.v18-board .density-relaxed .market-speed small,.v18-board .density-relaxed .market-pax small{font-size:9px}
.v18-board .market-conn{min-height:28px;padding:4px 7px}.v18-board .market-conn b{font-size:9px}.v18-board .row-more{height:30px;font-size:16px}

/* Right action rail */
.v18-rail{gap:10px}.v18-railhead{height:52px;padding:9px 12px}.v18-railhead span{font-size:8px}.v18-railhead h2{font-size:15px}.v18-railhead>small{font-size:9px}.v18-count{min-width:28px;height:28px;font-size:10px}
.v18-actions-panel .terminal-alerts{padding:8px}.v18-actions-panel .ops-alert-card{margin-bottom:7px}.v18-actions-panel .alarm-body{padding:9px 10px}.v18-actions-panel .alarm-body h3{font-size:11px}.v18-actions-panel .alarm-body p{font-size:9px;line-height:1.4}.v18-actions-panel .alarm-meta{font-size:8px}.v18-actions-panel .ops-action{font-size:9px;padding:5px 8px}
.v18-connections{max-height:190px}.v18-connections .connection-watch-row{min-height:42px}.v18-connections .connection-watch-row b{font-size:10px}.v18-connections .connection-watch-row small{font-size:8px}.v18-connections .connection-margin{font-size:9px}.v18-connections .conn-pill{height:22px;font-size:8px}

/* External situation picture is permanently visible at the bottom */
.v18-context-card{overflow:visible;background:linear-gradient(180deg,#0b1823,#09141e)}
.v18-context-card>summary{height:156px;padding:16px 18px;justify-content:flex-start;cursor:pointer}
.v18-context-card>summary:after{right:14px;top:13px;font-size:12px}
.v18-context-card>summary span{font-size:9px;color:#76a0b7}
.v18-context-card>summary b{font-size:18px;margin-top:13px;color:#edf5f8}
.v18-context-card>summary b strong{font-size:26px}
.v18-context-card>summary small{font-size:11px;line-height:1.4;margin-top:9px;color:#8195a5;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.v18-context-card.attention>summary:before{top:18px;bottom:18px;width:3px}
.v18-context-pop{bottom:164px;width:520px;max-height:430px}.v18-context-pop.wide{width:780px}.v18-pop-head{height:38px}.v18-pop-head b{font-size:11px}.v18-pop-head span{font-size:9px}
.v18-context-pop .smhi-card b{font-size:10px}.v18-context-pop .smhi-card small,.v18-context-pop .smhi-card span{font-size:8px}.v18-context-pop .smhi-card>strong{font-size:13px}

/* Keep the four context cards visible on ordinary 1080p screens too */
@media(min-width:1500px) and (min-height:900px) and (max-height:1150px){
  .content.ops-content{grid-template-rows:70px 60px minmax(0,1fr) 128px;gap:8px;padding:12px 16px!important}
  .v18-header{height:70px}.v18-kpis{height:60px}.v18-contextbar{height:128px}
  .v18-context-card>summary{height:126px;padding:12px 15px}.v18-context-card>summary b{font-size:16px;margin-top:9px}.v18-context-card>summary small{font-size:10px;margin-top:6px}.v18-context-pop{bottom:134px}
}

/* v0.19.1 – admin pages must never inherit the one-screen control-room grid */
html.admin-page,body.admin-page{height:auto!important;min-height:100%;overflow:auto!important}
.app.ops-app.admin-page{height:auto!important;min-height:100vh!important;overflow:visible!important}
.app.ops-app.admin-page>main{height:auto!important;min-height:100vh!important;overflow:visible!important}
.content.ops-content.admin-content{display:block!important;height:auto!important;min-height:calc(100vh - 60px)!important;overflow:visible!important;padding:22px!important;max-width:none!important;margin:0!important}
.content.ops-content.admin-content .page-head{margin-bottom:18px!important}
.content.ops-content.admin-content .alert{height:auto!important;min-height:0!important;max-height:none!important;display:block!important}
.content.ops-content.admin-content .integrations-list{display:grid!important;grid-template-columns:1fr!important;gap:12px!important;height:auto!important;min-height:0!important;overflow:visible!important}
.content.ops-content.admin-content .integration-card{height:auto!important;min-height:0!important;overflow:visible!important}
@media(min-width:1500px) and (min-height:820px){
  html.admin-page,body.admin-page{height:auto!important;overflow:auto!important}
  .app.ops-app.admin-page,.app.ops-app.admin-page>main{height:auto!important;min-height:100vh!important;overflow:visible!important}
  .content.ops-content.admin-content{display:block!important;height:auto!important;min-height:calc(100vh - 60px)!important;overflow:visible!important;padding:22px!important}
}

/* v0.20.0 – Unified Live Control Room */
.v20-auto-pill{display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:999px;border:1px solid #214357;background:#0b1a25;color:#86cfe8;font-size:9px;font-weight:800;letter-spacing:.06em;white-space:nowrap}
.v20-contextbar{height:100%;min-height:0;display:grid;grid-template-columns:1.15fr .9fr 1.2fr .9fr;gap:10px}
.v20-context-card{position:relative;min-width:0;min-height:0;overflow:hidden;border:1px solid var(--v19-line);border-radius:10px;background:linear-gradient(180deg,#0b1823,#08131d);display:grid;grid-template-rows:64px minmax(0,1fr)}
.v20-context-card.attention{border-color:#5b4925;box-shadow:inset 3px 0 0 var(--v18-amber)}
.v20-context-card>header{min-width:0;padding:10px 13px;border-bottom:1px solid #1a2d3c;display:flex;flex-direction:column;justify-content:center;background:#0a1721}
.v20-context-card>header>span{font-size:8px;color:#6e98ad;font-weight:900;letter-spacing:.14em}
.v20-context-card>header>b{font-size:16px;line-height:1.1;color:#eef6f9;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v20-context-card>header>b strong{font-size:21px}
.v20-context-card>header>small{font-size:9px;color:#7f94a4;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v20-count{position:absolute;right:10px;top:9px;min-width:23px;height:20px;padding:0 6px;border:1px solid #274154;border-radius:999px;background:#0c1b27;color:#8aa4b5;display:grid;place-items:center;font-size:8px;font-weight:800}
.v20-context-list{min-height:0;overflow:hidden!important;padding:7px!important;display:grid!important;align-content:start;gap:5px!important}
.v20-context-list .ops-clear.compact{min-height:0!important;padding:13px 8px!important;border:0;background:transparent}
.v20-context-list .ops-clear .clear-icon{width:25px;height:25px;font-size:13px}.v20-context-list .ops-clear strong{font-size:9px}.v20-context-list .ops-clear span{font-size:7px}
.v20-context-list .weather-station-card{grid-template-columns:minmax(90px,1fr) 45px 45px 52px;gap:5px;padding:6px 7px;border-radius:7px;min-height:44px}
.v20-context-list .weather-station-card:nth-child(n+4){display:none}
.v20-context-list .weather-station-card span{font-size:6px}.v20-context-list .weather-station-card b{font-size:9px}.v20-context-list .weather-station-card small{font-size:6px}.v20-context-list .weather-values strong{font-size:10px}
.v20-context-list .tv-traffic-item{grid-template-columns:7px 1fr;gap:6px;padding:6px 7px;border-radius:7px;min-height:42px}
.v20-context-list .tv-traffic-item:nth-child(n+4){display:none}
.v20-context-list .tv-traffic-dot{width:6px;height:6px}.v20-context-list .tv-traffic-item strong{font-size:9px}.v20-context-list .tv-traffic-item small{font-size:7px;margin-top:2px}.v20-context-list .tv-traffic-item p{font-size:7px;line-height:1.25;margin:2px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v20-context-list.service-list .service-item{padding:6px 3px;gap:7px}.v20-context-list.service-list .service-item:nth-child(n+4){display:none}.v20-context-list.service-list .service-icon{width:20px;height:20px;flex:0 0 20px;font-size:8px}.v20-context-list.service-list strong{font-size:9px}.v20-context-list.service-list p{font-size:7px;line-height:1.25;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.v20-smhi-list{grid-template-columns:1.15fr .85fr!important;gap:6px!important}
.v20-smhi-list>.smhi-forecast-list,.v20-smhi-list>.tv-traffic-list{min-width:0;min-height:0;overflow:hidden;padding:0!important;display:grid;align-content:start;gap:5px}
.v20-smhi-list .smhi-card{grid-template-columns:22px minmax(55px,1fr) auto;gap:5px;padding:5px 6px;border-radius:7px;min-height:42px}
.v20-smhi-list .smhi-card:nth-child(n+4){display:none}.v20-smhi-list .smhi-symbol{font-size:15px}.v20-smhi-list .smhi-card b{font-size:8px}.v20-smhi-list .smhi-card small,.v20-smhi-list .smhi-card span{font-size:6px}.v20-smhi-list .smhi-card>strong{font-size:11px}.v20-smhi-list .smhi-card>div:last-child{grid-column:2/4;display:flex;flex-direction:row;gap:6px;margin-top:-3px;white-space:nowrap}
.v20-smhi-list .tv-traffic-item:nth-child(n+3){display:none}

@media(min-width:1500px) and (min-height:820px){
  .content.ops-content{grid-template-rows:78px 66px minmax(0,1fr) 210px!important;gap:10px!important;padding:14px 18px!important}
  .v18-header{height:78px!important}.v18-kpis{height:66px!important}
  .v18-workspace{height:auto!important;min-height:0!important;grid-template-columns:minmax(0,1fr) 380px!important;gap:10px!important}
  .v20-contextbar{height:210px}
  .dashboard-admin-tools{bottom:226px!important}
  .v18-board .density-spacious .market-row{height:82px}.v18-board .density-relaxed .market-row{height:70px}
}
@media(min-width:1500px) and (min-height:900px) and (max-height:1150px){
  .content.ops-content{grid-template-rows:72px 62px minmax(0,1fr) 180px!important;gap:8px!important;padding:11px 15px!important}
  .v18-header{height:72px!important}.v18-kpis{height:62px!important}.v20-contextbar{height:180px}
  .v20-context-card{grid-template-rows:58px minmax(0,1fr)}.v20-context-card>header{padding:8px 11px}.v20-context-card>header>b{font-size:14px}.v20-context-card>header>small{font-size:8px}
  .dashboard-admin-tools{bottom:194px!important}
}
@media(max-width:1499px),(max-height:819px){
  .v20-contextbar{height:auto;grid-template-columns:repeat(2,minmax(0,1fr))}.v20-context-card{min-height:180px}.v20-auto-pill{display:none}
}
@media(max-width:900px){.v20-contextbar{grid-template-columns:1fr}.v20-context-card{min-height:180px}.v20-smhi-list{grid-template-columns:1fr!important}}
.v20-auto-pill.error{border-color:#653038;background:#261319;color:#ff9ca2}

/* v0.20.1 – aligned situation cards + light theme + accessibility display size */
.appearance-controls{display:inline-flex;align-items:center;gap:4px;padding:3px;border:1px solid #20384a;border-radius:8px;background:#08141e}
.appearance-btn{height:26px;min-width:30px;padding:0 8px;border:0;border-radius:6px;background:transparent;color:#8fa7b8;font-size:9px;font-weight:800;cursor:pointer;white-space:nowrap}
.appearance-btn:hover,.appearance-btn.active{background:#173044;color:#eaf7fc}.appearance-divider{width:1px;height:16px;background:#244052;margin:0 2px}.dashboard-theme-quick{min-width:32px;padding:0!important}

/* Bottom situation cards use the same baseline and spacing. */
.v20-context-card{grid-template-rows:64px minmax(0,1fr)!important}
.v20-context-card>header{display:grid!important;grid-template-rows:11px 23px 13px;align-content:center;gap:2px;padding:8px 13px!important}
.v20-context-card>header>span,.v20-context-card>header>b,.v20-context-card>header>small{margin:0!important;line-height:1.15!important;min-width:0}
.v20-context-card>header>b{display:flex;align-items:center;height:23px;font-size:16px!important}.v20-context-card>header>b strong{font-size:21px!important;line-height:1}
.v20-context-card>header>small{display:block;height:13px;font-size:9px!important;line-height:13px!important}
.v20-context-list{padding:7px 9px!important;gap:6px!important}
.v20-context-list .weather-station-card{min-height:46px!important;align-items:center!important;padding:6px 8px!important}
.v20-context-list .weather-station-card>div:first-child{display:grid;grid-template-rows:9px 14px 9px;align-content:center;gap:1px;min-width:0}
.v20-context-list .weather-station-card span,.v20-context-list .weather-station-card b,.v20-context-list .weather-station-card small{margin:0!important;line-height:1.1!important}
.v20-context-list .weather-values{display:grid;grid-template-rows:16px 9px;align-content:center;justify-items:end;min-width:0}.v20-context-list .weather-values strong,.v20-context-list .weather-values small{margin:0!important;line-height:1!important}
.v20-context-list .tv-traffic-item{min-height:46px!important;align-items:center!important}.v20-context-list .tv-traffic-item>div{min-width:0;align-self:center}.v20-context-list .tv-traffic-item strong,.v20-context-list .tv-traffic-item small,.v20-context-list .tv-traffic-item p{line-height:1.2!important}
.v20-smhi-list .smhi-card{min-height:46px!important;align-items:center!important}.v20-smhi-list .smhi-card b,.v20-smhi-list .smhi-card small,.v20-smhi-list .smhi-card span,.v20-smhi-list .smhi-card strong{line-height:1.15!important}
.v20-context-list.service-list .service-item{min-height:46px;align-items:center}

/* Display size. Stored locally per browser. 100% preserves the one-screen layout;
   115/130 intentionally enlarge the whole control room for distance/low-vision use. */
html[data-ui-size="115"] body{zoom:1.15;width:100%}
html[data-ui-size="130"] body{zoom:1.30;width:100%}
@supports not (zoom:1.1){
  html[data-ui-size="115"] body{zoom:1;width:100%;font-size:115%}
  html[data-ui-size="130"] body{zoom:1;width:100%;font-size:130%}
}

/* Light theme – neutral control-room palette, not pure white. */
html[data-theme="light"]{--bg:#eef3f6;--bg2:#f7fafb;--panel:#ffffff;--panel2:#f4f7f9;--line:#cbd7df;--line2:#b7c7d2;--text:#14232e;--muted:#607583;--v18-bg:#edf2f5;--v18-panel:#ffffff;--v18-panel2:#f4f7f9;--v18-line:#cbd6de;--v18-text:#172630;--v18-muted:#667b88;--v19-line:#c8d4dc;--v19-panel:#ffffff;--v19-panel2:#f5f8fa}
html[data-theme="light"] body{background:#edf2f5!important;color:#172630}
html[data-theme="light"] .app.ops-app{background:#edf2f5!important}
html[data-theme="light"] .sidebar.ops-sidebar{background:#f7f9fa;border-color:#ccd8df}
html[data-theme="light"] .brand strong,html[data-theme="light"] .topbar-title strong{color:#132530}.brand small{transition:color .15s}
html[data-theme="light"] .brand small,html[data-theme="light"] .nav-title{color:#718491}
html[data-theme="light"] .nav-item{color:#536b79}html[data-theme="light"] .nav-item:hover{background:#e9f1f5;color:#183444}html[data-theme="light"] .nav-item.active{background:#e4f3f9;border-color:#a8cfdf;color:#0d4d67}
html[data-theme="light"] .ops-sidebar-state{background:#eef5f2;border-color:#c5ddd2;color:#3f5c51}html[data-theme="light"] .ops-sidebar-state b{color:#285342}html[data-theme="light"] .ops-sidebar-state small{color:#70847b}
html[data-theme="light"] .logout button{border-color:#cbd7de;color:#566d7a;background:#fff}
html[data-theme="light"] .topbar.ops-topbar{background:rgba(250,252,253,.96);border-color:#ccd7df}html[data-theme="light"] .ops-clock{color:#16394a}html[data-theme="light"] .subtle{color:#6f8490}
html[data-theme="light"] .appearance-controls{background:#f1f5f7;border-color:#c5d2da}html[data-theme="light"] .appearance-btn{color:#506875}html[data-theme="light"] .appearance-btn:hover,html[data-theme="light"] .appearance-btn.active{background:#dceaf1;color:#173e52}html[data-theme="light"] .appearance-divider{background:#c3d1d9}
html[data-theme="light"] .v18-header{border-color:#ccd7df}html[data-theme="light"] .v18-titleline h1{color:#132631}html[data-theme="light"] .v18-titleblock .ops-kicker{color:#38758f}html[data-theme="light"] .v18-subline{color:#6c7f8b}
html[data-theme="light"] .v18-live-pill{background:#e8f6ef;border-color:#b8ddca;color:#18764f}html[data-theme="light"] .v20-auto-pill{background:#e7f3f8;border-color:#b7d4e1;color:#1f647e}
html[data-theme="light"] .v18-head-weather,html[data-theme="light"] .v18-clock{border-color:#ccd7df}html[data-theme="light"] .v18-head-weather b,html[data-theme="light"] .v18-clock b{color:#162b36}html[data-theme="light"] .v18-head-weather small,html[data-theme="light"] .v18-head-weather em,html[data-theme="light"] .v18-clock small{color:#667d89}
html[data-theme="light"] .v18-actions .ops-btn,html[data-theme="light"] .ops-btn.ghost{background:#f5f8fa;border-color:#c5d3dc;color:#385767}html[data-theme="light"] .v18-actions .ops-btn:first-child{background:#197ca0;border-color:#197ca0;color:#fff}
html[data-theme="light"] .v18-kpis{background:#fff;border-color:#c8d4dc}html[data-theme="light"] .v18-kpi{border-color:#d3dde3}html[data-theme="light"] .v18-kpi span{color:#647b88}html[data-theme="light"] .v18-kpi b{color:#162832}html[data-theme="light"] .v18-kpi small{color:#7b8e99}html[data-theme="light"] .v18-kpi.ok b{color:#1c6c4c}
html[data-theme="light"] .v18-board,html[data-theme="light"] .v18-rail-section,html[data-theme="light"] .v20-context-card{background:#fff;border-color:#c8d4dc}
html[data-theme="light"] .v18-boardbar,html[data-theme="light"] .v18-railhead,html[data-theme="light"] .v20-context-card>header{background:#f4f7f9;border-color:#d1dce3}
html[data-theme="light"] .v18-board .board-tab{color:#5f7582}html[data-theme="light"] .v18-board .board-tab.active{background:#dcecf3;border-color:#b3d0dd;color:#164a61}
html[data-theme="light"] .v18-board .search-wrap{background:#fff;border-color:#c7d4dc}html[data-theme="light"] .ops-search,html[data-theme="light"] input,html[data-theme="light"] select,html[data-theme="light"] textarea{color:#1b303b;background:#fff;border-color:#c5d2da}
html[data-theme="light"] .v18-board .market-head.terminal-head{background:#eef3f6;border-color:#d1dce2;color:#617987}
html[data-theme="light"] .v18-board .market-board.terminal-market{background:#fff}html[data-theme="light"] .v18-board .market-row{background:#fff;border-color:#dce4e9}html[data-theme="light"] .v18-board .market-row:hover{background:#f2f7f9}html[data-theme="light"] .v18-board .market-row.state-yellow{background:linear-gradient(90deg,#fff6dd,#fff 18%)}html[data-theme="light"] .v18-board .market-row.state-red{background:linear-gradient(90deg,#ffebed,#fff 18%)}
html[data-theme="light"] .v18-board .market-line .line-badge{background:#e7f1f6;border-color:#b9d1dd;color:#17475e}html[data-theme="light"] .v18-board .state-yellow .market-line .line-badge{background:#f7e8bd;border-color:#d6b65c;color:#6b4c00}html[data-theme="light"] .v18-board .state-red .market-line .line-badge{background:#f7dadd;border-color:#dc9fa6;color:#812d37}
html[data-theme="light"] .v18-board .market-bus b,html[data-theme="light"] .v18-board .market-dest b,html[data-theme="light"] .v18-board .market-reg b,html[data-theme="light"] .v18-board .market-gps b,html[data-theme="light"] .v18-board .market-speed b,html[data-theme="light"] .v18-board .market-pax b{color:#20333e}html[data-theme="light"] .v18-board .market-bus small,html[data-theme="light"] .v18-board .market-dest small,html[data-theme="light"] .v18-board .market-reg small,html[data-theme="light"] .v18-board .market-gps small,html[data-theme="light"] .v18-board .market-speed small,html[data-theme="light"] .v18-board .market-pax small{color:#748793}
html[data-theme="light"] .v18-board .market-reg.pred b{color:#157a61}html[data-theme="light"] .v18-board .market-conn{background:#e6f4ee}html[data-theme="light"] .v18-board .market-conn.monitored b{color:#176c50}
html[data-theme="light"] .v18-railhead h2,html[data-theme="light"] .v20-context-card>header>b{color:#182c37}html[data-theme="light"] .v18-railhead span,html[data-theme="light"] .v20-context-card>header>span{color:#557789}html[data-theme="light"] .v18-railhead>small,html[data-theme="light"] .v20-context-card>header>small{color:#718590}
html[data-theme="light"] .v18-actions-panel .ops-alert-card{background:#fff;border-color:#d4dfe5}html[data-theme="light"] .alarm-body h3{color:#20333e}html[data-theme="light"] .alarm-body p,html[data-theme="light"] .alarm-meta{color:#687e8b}
html[data-theme="light"] .connection-watch-row{border-color:#dce4e9}html[data-theme="light"] .connection-watch-row b{color:#223640}html[data-theme="light"] .connection-watch-row small{color:#728590}
html[data-theme="light"] .v20-context-card{background:#fff!important}html[data-theme="light"] .v20-context-list{background:#fff}html[data-theme="light"] .weather-station-card,html[data-theme="light"] .smhi-card,html[data-theme="light"] .tv-traffic-item,html[data-theme="light"] .service-item{background:#f8fafb!important;border-color:#d7e1e6!important}html[data-theme="light"] .weather-station-card b,html[data-theme="light"] .weather-values strong,html[data-theme="light"] .smhi-card b,html[data-theme="light"] .smhi-card>strong,html[data-theme="light"] .tv-traffic-item strong,html[data-theme="light"] .service-item strong{color:#1b303b!important}html[data-theme="light"] .weather-station-card small,html[data-theme="light"] .weather-station-card span,html[data-theme="light"] .smhi-card small,html[data-theme="light"] .smhi-card span,html[data-theme="light"] .tv-traffic-item small,html[data-theme="light"] .tv-traffic-item p,html[data-theme="light"] .service-item p{color:#6c808c!important}
html[data-theme="light"] .v20-count,html[data-theme="light"] .v18-count{background:#eef3f6;border-color:#c9d6de;color:#506c7b}
html[data-theme="light"] .panel,html[data-theme="light"] .integration-card,html[data-theme="light"] .module-card,html[data-theme="light"] .info-card,html[data-theme="light"] .ops-details{background:#fff!important;border-color:#cbd7df!important;color:#1a2d38}html[data-theme="light"] .page-head p,html[data-theme="light"] .module-card p{color:#667d89}html[data-theme="light"] table{color:#1b303b}html[data-theme="light"] th{color:#5f7582;background:#eef3f6}html[data-theme="light"] td{border-color:#d9e2e7}html[data-theme="light"] .alert.warn{background:#fff5d8;border-color:#e4c36d;color:#725100}html[data-theme="light"] .alert.danger{background:#ffe9eb;border-color:#e0a0a6;color:#842e38}
html[data-theme="light"] .vehicle-drawer{background:#fff;color:#1a2d38}html[data-theme="light"] .vehicle-modal-backdrop{background:rgba(37,52,62,.35)}

/* Visible appearance controls live in the sidebar because the legacy topbar is hidden in control-room mode. */
.sidebar-appearance{padding:9px;border:1px solid #1b3040;border-radius:9px;background:#09151f;margin:8px 0 2px}.sidebar-appearance-title{font-size:7px;letter-spacing:.16em;font-weight:900;color:#587487;margin-bottom:7px}.sidebar-appearance-theme{width:100%;height:28px;border:1px solid #294253;border-radius:6px;background:#0c1b27;color:#a8bbc7;font-size:8px;font-weight:800;cursor:pointer}.sidebar-size-row{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:5px}.sidebar-size-row button{height:27px;border:1px solid #263d4d;border-radius:6px;background:#0a1721;color:#8299a8;font-size:8px;font-weight:900}.sidebar-size-row button.active{background:#153348;border-color:#34718e;color:#eaf8ff}
html[data-theme="light"] .sidebar-appearance{background:#fff;border-color:#cbd7df}html[data-theme="light"] .sidebar-appearance-title{color:#6a7f8b}html[data-theme="light"] .sidebar-appearance-theme,html[data-theme="light"] .sidebar-size-row button{background:#f3f7f9;border-color:#c6d4dc;color:#4f6977}html[data-theme="light"] .sidebar-size-row button.active{background:#dcecf3;border-color:#a8cad9;color:#16465d}

/* Keep the one-screen control room inside the physical viewport when display zoom is used. */
html[data-ui-size="115"] body{min-width:0!important}
html[data-ui-size="130"] body{min-width:0!important}
html[data-ui-size="115"] .app.ops-app.dashboard-page,html[data-ui-size="115"] .app.ops-app.dashboard-page>main,html[data-ui-size="115"] .content.ops-content.dashboard-content{height:86.9566vh!important;min-height:0!important}
html[data-ui-size="115"] .sidebar.ops-sidebar{height:86.9566vh!important}
html[data-ui-size="130"] .app.ops-app.dashboard-page,html[data-ui-size="130"] .app.ops-app.dashboard-page>main,html[data-ui-size="130"] .content.ops-content.dashboard-content{height:76.9231vh!important;min-height:0!important}
html[data-ui-size="130"] .sidebar.ops-sidebar{height:76.9231vh!important}


/* v0.20.2 – right-side vertical situation feed. No bottom dock. */
@media(min-width:1500px) and (min-height:820px){
  .content.ops-content{grid-template-rows:78px 66px minmax(0,1fr)!important;gap:10px!important;padding:14px 18px!important}
  .v18-workspace{height:auto!important;min-height:0!important;grid-template-columns:minmax(0,1fr) 420px!important;gap:10px!important}
  .v202-rail{grid-template-rows:minmax(170px,.72fr) auto minmax(260px,1.28fr) auto!important;gap:9px!important;min-height:0}
  .v18-actions-panel{min-height:0!important}
  .v18-actions-panel .terminal-alerts{overflow:auto!important}
  .v18-connections{max-height:190px!important}
  .dashboard-admin-tools.v202-admin-tools{position:static!important;right:auto!important;bottom:auto!important;margin:0!important;display:flex!important;gap:5px!important;pointer-events:auto!important}
  .dashboard-admin-tools.v202-admin-tools .ops-details{position:relative!important;margin:0!important;box-shadow:none!important;max-height:40vh;overflow:auto}
}
@media(min-width:1500px) and (min-height:900px) and (max-height:1150px){
  .content.ops-content{grid-template-rows:72px 62px minmax(0,1fr)!important;gap:8px!important;padding:11px 15px!important}
  .v18-workspace{grid-template-columns:minmax(0,1fr) 400px!important}
  .v202-rail{grid-template-rows:minmax(150px,.65fr) auto minmax(240px,1.35fr) auto!important}
}
.v202-situation{display:flex;flex-direction:column;min-height:0!important;overflow:hidden!important}
.v202-situation>.v18-railhead{flex:0 0 auto}
.v202-situation-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 8px 8px;scrollbar-gutter:stable}
.v202-feed-group{position:relative;padding:10px 0 11px;border-bottom:1px solid #172b3a;min-width:0}
.v202-feed-group:last-child{border-bottom:0}
.v202-feed-group.attention{box-shadow:inset 2px 0 0 var(--v18-amber);padding-left:8px}
.v202-feed-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:0 2px 7px;min-width:0}
.v202-feed-head>div{min-width:0}.v202-feed-head span{display:block;color:#5f8296;font-size:7px;font-weight:900;letter-spacing:.13em;line-height:1.2}
.v202-feed-head b{display:block;color:#e8f2f6;font-size:13px;line-height:1.2;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v202-feed-head b strong{font-size:16px}.v202-feed-head small{display:block;color:#718696;font-size:8px;line-height:1.25;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v202-feed-head em{flex:0 0 auto;min-width:24px;height:20px;padding:0 6px;border:1px solid #274154;border-radius:999px;background:#0c1b27;color:#8aa4b5;display:grid;place-items:center;font-size:8px;font-weight:800;font-style:normal}
.v202-feed-list,.v202-feed-list.tv-weather-list,.v202-feed-list.tv-traffic-list,.v202-feed-list.service-list{display:grid!important;grid-template-columns:1fr!important;gap:5px!important;max-height:none!important;overflow:visible!important;padding:0!important;align-content:start!important}
.v202-feed-list .weather-station-card,.v202-feed-list .tv-traffic-item,.v202-feed-list .service-item{display:grid!important}
.v202-feed-list .weather-station-card:nth-child(n),.v202-feed-list .tv-traffic-item:nth-child(n),.v202-feed-list.service-list .service-item:nth-child(n){display:grid!important}
.v202-feed-list .weather-station-card{grid-template-columns:minmax(110px,1fr) 48px 48px 58px!important;gap:6px!important;min-height:48px!important;padding:7px 8px!important;border-radius:7px!important}
.v202-feed-list .weather-station-card>div:first-child{display:grid;grid-template-rows:auto auto auto;gap:2px;align-content:center;min-width:0}
.v202-feed-list .weather-station-card span{font-size:6px!important;line-height:1.1!important}.v202-feed-list .weather-station-card b{font-size:9px!important;line-height:1.15!important}.v202-feed-list .weather-station-card small{font-size:6px!important;line-height:1.1!important}
.v202-feed-list .weather-values{display:grid!important;grid-template-rows:17px 9px!important;align-content:center!important;justify-items:end!important}.v202-feed-list .weather-values strong{font-size:11px!important;line-height:1!important}.v202-feed-list .weather-values small{font-size:6px!important;line-height:1!important}
.v202-feed-list .tv-traffic-item{min-height:44px!important;padding:7px 8px!important;grid-template-columns:7px 1fr!important}.v202-feed-list .tv-traffic-item strong{font-size:9px!important}.v202-feed-list .tv-traffic-item small,.v202-feed-list .tv-traffic-item p{font-size:7px!important;line-height:1.3!important}.v202-feed-list .tv-traffic-item p{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
.v202-feed-list.service-list .service-item{min-height:44px!important;padding:7px 5px!important}
.v202-smhi-stack{display:grid!important;grid-template-columns:1fr!important;gap:6px!important}
.v202-smhi-stack>.smhi-forecast-list,.v202-smhi-stack>.tv-traffic-list{display:grid!important;grid-template-columns:1fr!important;gap:5px!important;max-height:none!important;overflow:visible!important;padding:0!important}
.v202-smhi-stack .smhi-card{display:grid!important;grid-template-columns:24px minmax(80px,1fr) auto!important;gap:6px!important;min-height:46px!important;padding:6px 8px!important;border-radius:7px!important}
.v202-smhi-stack .smhi-card:nth-child(n){display:grid!important}.v202-smhi-stack .smhi-symbol{font-size:16px!important}.v202-smhi-stack .smhi-card b{font-size:9px!important}.v202-smhi-stack .smhi-card small,.v202-smhi-stack .smhi-card span{font-size:7px!important}.v202-smhi-stack .smhi-card>strong{font-size:12px!important}.v202-smhi-stack .smhi-card>div:last-child{grid-column:2/4!important;display:flex!important;flex-direction:row!important;gap:7px!important;margin-top:-2px!important;white-space:nowrap!important}
.v202-smhi-stack .tv-traffic-item:nth-child(n){display:grid!important}
.v202-admin-tools{z-index:20}.v202-admin-tools .ops-details summary{white-space:nowrap}
html[data-theme="light"] .v202-feed-group{border-color:#dbe4e9}html[data-theme="light"] .v202-feed-head b{color:#1a2e39}html[data-theme="light"] .v202-feed-head span{color:#557789}html[data-theme="light"] .v202-feed-head small{color:#718590}html[data-theme="light"] .v202-feed-head em{background:#eef3f6;border-color:#c9d6de;color:#506c7b}
@media(max-width:1499px),(max-height:819px){
  .v202-rail{grid-template-columns:1fr!important;grid-template-rows:auto!important}
  .v202-situation{min-height:420px!important}
  .v202-situation-scroll{max-height:560px}
  .dashboard-admin-tools.v202-admin-tools{position:static!important;margin-top:0!important}
}


/* v0.20.3 – no-scroll compact situation picture.
   The right rail is an at-a-glance wallboard: all road-weather stations are
   rendered in a two-column matrix, while incidents/warnings stay concise. */
@media(min-width:1500px) and (min-height:820px){
  .v202-rail{grid-template-rows:minmax(118px,.42fr) auto minmax(0,1.58fr) auto!important;gap:7px!important}
  .v18-actions-panel .terminal-alerts{max-height:none!important}
  .v18-connections{max-height:128px!important}
  .v202-situation{min-height:0!important;overflow:hidden!important}
  .v202-situation>.v18-railhead{padding:8px 10px!important;min-height:42px!important}
  .v202-situation-scroll{overflow:hidden!important;scrollbar-gutter:auto!important;padding:0 6px 5px!important;display:flex!important;flex-direction:column!important;gap:0!important}
  .v202-feed-group{padding:5px 0 6px!important}
  .v202-feed-head{padding:0 2px 4px!important;align-items:center!important}
  .v202-feed-head span{font-size:6px!important;letter-spacing:.11em!important}
  .v202-feed-head b{font-size:10px!important;margin-top:2px!important;line-height:1.05!important}
  .v202-feed-head b strong{font-size:12px!important}
  .v202-feed-head small{font-size:6px!important;margin-top:2px!important;line-height:1.05!important}
  .v202-feed-head em{min-width:20px!important;height:17px!important;padding:0 5px!important;font-size:7px!important}

  /* Vägväder: 14 stationer ryms normalt som 2 x 7 kompakta rader. */
  .v202-feed-list.tv-weather-list{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:3px!important}
  .v202-feed-list .weather-station-card{grid-template-columns:minmax(62px,1fr) 28px 28px 33px!important;gap:3px!important;min-height:27px!important;height:27px!important;padding:3px 4px!important;border-radius:5px!important;align-items:center!important}
  .v202-feed-list .weather-station-card>div:first-child{display:block!important;min-width:0!important}
  .v202-feed-list .weather-station-card>div:first-child span,.v202-feed-list .weather-station-card>div:first-child small{display:none!important}
  .v202-feed-list .weather-station-card b{display:block!important;font-size:7px!important;line-height:1!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .v202-feed-list .weather-values{display:grid!important;grid-template-rows:10px 6px!important;align-content:center!important;justify-items:end!important;min-width:0!important}
  .v202-feed-list .weather-values strong{font-size:7.5px!important;line-height:1!important;white-space:nowrap!important}
  .v202-feed-list .weather-values small{font-size:4.8px!important;line-height:1!important;text-transform:uppercase!important}

  /* Empty/normal messages become a single compact status line. */
  .v202-feed-list .ops-clear.compact{min-height:28px!important;height:28px!important;padding:3px 7px!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:6px!important}
  .v202-feed-list .ops-clear.compact .clear-icon{width:20px!important;height:20px!important;min-width:20px!important;font-size:11px!important}
  .v202-feed-list .ops-clear.compact strong{font-size:7px!important;margin:0!important}
  .v202-feed-list .ops-clear.compact span{font-size:6px!important;margin:0!important}

  /* Väghändelser och trafikstörningar: visa de tre viktigaste direkt. */
  .v202-feed-list.tv-traffic-list .tv-traffic-item:nth-child(n+4),
  .v202-feed-list.service-list .service-item:nth-child(n+4){display:none!important}
  .v202-feed-list .tv-traffic-item{min-height:27px!important;padding:3px 5px!important;grid-template-columns:5px 1fr!important;gap:4px!important;border-radius:5px!important}
  .v202-feed-list .tv-traffic-item strong{font-size:7px!important;line-height:1.05!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .v202-feed-list .tv-traffic-item small{font-size:5.5px!important;line-height:1!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .v202-feed-list .tv-traffic-item p{font-size:5.5px!important;line-height:1!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;margin-top:1px!important}
  .v202-feed-list.service-list .service-item{min-height:27px!important;padding:3px 5px!important;gap:5px!important}
  .v202-feed-list.service-list .service-item strong{font-size:7px!important;line-height:1.05!important}
  .v202-feed-list.service-list .service-item p{font-size:5.5px!important;line-height:1.05!important;display:-webkit-box!important;-webkit-line-clamp:1!important;-webkit-box-orient:vertical!important;overflow:hidden!important}

  /* SMHI: orterna sida vid sida i stället för en lång lodrät lista. */
  .v202-smhi-stack{gap:3px!important}
  .v202-smhi-stack>.smhi-forecast-list{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:3px!important}
  .v202-smhi-stack>.tv-traffic-list{grid-template-columns:1fr!important;gap:3px!important}
  .v202-smhi-stack .smhi-card{grid-template-columns:14px minmax(44px,1fr) auto!important;gap:3px!important;min-height:28px!important;height:28px!important;padding:3px 5px!important;border-radius:5px!important;align-items:center!important}
  .v202-smhi-stack .smhi-symbol{font-size:10px!important}
  .v202-smhi-stack .smhi-card b{font-size:7px!important;line-height:1!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .v202-smhi-stack .smhi-card small,.v202-smhi-stack .smhi-card span{font-size:5px!important;line-height:1!important}
  .v202-smhi-stack .smhi-card>strong{font-size:8px!important;line-height:1!important}
  .v202-smhi-stack .smhi-card>div:last-child{grid-column:2/4!important;display:flex!important;gap:4px!important;margin-top:-4px!important;white-space:nowrap!important;overflow:hidden!important}
  .v202-smhi-stack>.tv-traffic-list .tv-traffic-item:nth-child(n+3){display:none!important}
}

/* Slightly taller wallboards can afford a touch more legibility without scrolling. */
@media(min-width:1500px) and (min-height:1050px){
  .v202-feed-list .weather-station-card{height:29px!important;min-height:29px!important}
  .v202-feed-list .weather-station-card b{font-size:7.5px!important}
  .v202-smhi-stack .smhi-card{height:30px!important;min-height:30px!important}
}

/* v0.20.4 – SMHI rail rebuilt as a compact, fixed-height overview.
   Forecast locations form a 3-column matrix and the warning gets its own
   full-width line. This prevents the forecast/warning text from colliding. */
@media(min-width:1500px) and (min-height:820px){
  #situation-picture .v202-smhi-stack{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:4px!important;
    min-width:0!important;
  }
  #situation-picture #smhi-forecast-list{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:3px!important;
    padding:0!important;
    min-width:0!important;
    overflow:visible!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card{
    display:grid!important;
    grid-template-columns:12px minmax(0,1fr) auto!important;
    grid-template-rows:14px 10px!important;
    column-gap:4px!important;
    row-gap:0!important;
    height:30px!important;
    min-height:30px!important;
    padding:3px 5px!important;
    border-radius:5px!important;
    align-items:center!important;
    min-width:0!important;
  }
  #situation-picture #smhi-forecast-list .smhi-symbol{
    grid-row:1/3!important;
    font-size:9px!important;
    align-self:center!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:nth-child(2){
    grid-column:2!important;
    grid-row:1!important;
    min-width:0!important;
    display:block!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:nth-child(2) b{
    display:block!important;
    font-size:7px!important;
    line-height:1!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:nth-child(2) small{
    display:none!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>strong{
    grid-column:3!important;
    grid-row:1!important;
    font-size:8px!important;
    line-height:1!important;
    white-space:nowrap!important;
    justify-self:end!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:last-child{
    grid-column:2/4!important;
    grid-row:2!important;
    display:block!important;
    margin:0!important;
    min-width:0!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    line-height:1!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:last-child span{
    font-size:5.5px!important;
    line-height:1!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:last-child small{
    display:none!important;
  }

  /* Official warnings are intentionally separate from the forecast tiles. */
  #situation-picture #smhi-warning-list{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:3px!important;
    padding:0!important;
    min-width:0!important;
    overflow:visible!important;
  }
  #situation-picture #smhi-warning-list .tv-traffic-item{
    display:grid!important;
    grid-template-columns:6px minmax(0,1fr)!important;
    min-height:36px!important;
    height:auto!important;
    padding:4px 6px!important;
    gap:5px!important;
    align-items:start!important;
  }
  #situation-picture #smhi-warning-list .tv-traffic-item strong{
    display:block!important;
    font-size:7px!important;
    line-height:1.15!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  #situation-picture #smhi-warning-list .tv-traffic-item small{
    display:block!important;
    font-size:5.5px!important;
    line-height:1.1!important;
    margin-top:1px!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  #situation-picture #smhi-warning-list .tv-traffic-item p{
    display:-webkit-box!important;
    -webkit-box-orient:vertical!important;
    -webkit-line-clamp:2!important;
    white-space:normal!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    font-size:5.5px!important;
    line-height:1.15!important;
    margin:2px 0 0!important;
  }
  #situation-picture #smhi-warning-list .tv-traffic-item:nth-child(n+3){display:none!important}
}

@media(min-width:1900px) and (min-height:900px){
  #situation-picture #smhi-forecast-list .smhi-card{height:32px!important;min-height:32px!important}
  #situation-picture #smhi-forecast-list .smhi-card>div:nth-child(2) b{font-size:7.5px!important}
  #situation-picture #smhi-forecast-list .smhi-card>strong{font-size:8.5px!important}
  #situation-picture #smhi-forecast-list .smhi-card>div:last-child span{font-size:6px!important}
}

/* v0.20.5 – Alarm administration opens as a centred control dialog.
   The previous right-rail expansion was constrained by the 420 px rail and
   could overflow/crop fields. Keep the compact launch buttons in the rail,
   but detach an open <details> from the rail layout and give it the viewport. */
@media(min-width:901px){
  .dashboard-admin-tools.v202-admin-tools .ops-details[open]{
    position:fixed!important;
    left:50%!important;
    top:50%!important;
    right:auto!important;
    bottom:auto!important;
    transform:translate(-50%,-50%)!important;
    width:min(1120px,calc(100vw - 72px))!important;
    max-width:none!important;
    height:auto!important;
    max-height:min(86vh,900px)!important;
    overflow:auto!important;
    z-index:1002!important;
    margin:0!important;
    border:1px solid #29445a!important;
    border-radius:14px!important;
    background:#091722!important;
    box-shadow:0 0 0 9999px rgba(2,8,13,.72),0 28px 90px rgba(0,0,0,.58)!important;
    scrollbar-gutter:stable;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] > summary{
    position:sticky!important;
    top:0!important;
    z-index:5!important;
    min-height:46px!important;
    display:flex!important;
    align-items:center!important;
    padding:12px 16px!important;
    background:#0d1d2a!important;
    border-bottom:1px solid #21384b!important;
    border-radius:13px 13px 0 0!important;
    color:#eaf3f7!important;
    font-size:12px!important;
    white-space:normal!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] > summary:after{
    content:"Stäng";
    margin-left:auto;
    padding-left:18px;
    color:#7f9aad;
    font-size:9px;
    font-weight:800;
    letter-spacing:.04em;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .settings-grid{
    display:grid!important;
    grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)!important;
    gap:14px!important;
    padding:14px!important;
    min-width:0!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .settings-grid section{
    min-width:0!important;
    padding:16px!important;
    border-radius:10px!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .settings-grid h3{
    font-size:15px!important;
    margin:0 0 14px!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .form-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:12px!important;
    min-width:0!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .form-grid label{
    min-width:0!important;
    font-size:11px!important;
    gap:6px!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .form-grid input,
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .form-grid select,
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .form-grid textarea{
    min-width:0!important;
    font-size:13px!important;
    min-height:42px!important;
    padding:9px 11px!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .checkbox{
    min-height:42px!important;
    flex-direction:row!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:9px!important;
    padding:0 2px!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .checkbox input{
    width:18px!important;
    min-width:18px!important;
    height:18px!important;
    min-height:18px!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .primary{
    min-height:42px!important;
    font-size:11px!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .table-wrap{
    max-width:100%!important;
    overflow:auto!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] table{
    min-width:590px!important;
    font-size:10px!important;
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .manual-alert-form{
    min-width:0!important;
    max-width:none!important;
    padding:16px!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media(max-width:1050px){
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .settings-grid{grid-template-columns:1fr!important}
}
@media(max-width:900px){
  .dashboard-admin-tools.v202-admin-tools .ops-details[open]{
    position:fixed!important;inset:10px!important;transform:none!important;width:auto!important;max-height:none!important;overflow:auto!important;z-index:1002!important;
    background:#091722!important;box-shadow:0 0 0 9999px rgba(2,8,13,.72)!important
  }
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .settings-grid,
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .form-grid,
  .dashboard-admin-tools.v202-admin-tools .ops-details[open] .manual-alert-form{grid-template-columns:1fr!important;min-width:0!important}
}
html[data-theme="light"] .dashboard-admin-tools.v202-admin-tools .ops-details[open]{
  background:#f8fbfc!important;border-color:#b9cbd6!important;box-shadow:0 0 0 9999px rgba(20,35,45,.36),0 28px 90px rgba(20,35,45,.22)!important;color:#172d38!important
}
html[data-theme="light"] .dashboard-admin-tools.v202-admin-tools .ops-details[open] > summary{
  background:#edf3f6!important;border-color:#c8d7df!important;color:#17303d!important
}
html[data-theme="light"] .dashboard-admin-tools.v202-admin-tools .ops-details[open] > summary:after{color:#617d8c!important}
html[data-theme="light"] .dashboard-admin-tools.v202-admin-tools .ops-details[open] .settings-grid section{background:#fff!important;border-color:#cbd8df!important}

/* v0.20.6 – show every monitored connection without scrolling/clipping.
   Connection rules use a compact two-column matrix in the right rail. */
@media(min-width:1500px) and (min-height:820px){
  .v202-rail{grid-template-rows:minmax(118px,.42fr) auto minmax(0,1.58fr) auto!important}
  .v18-connections{max-height:none!important;height:auto!important;overflow:visible!important}
  .v18-connections .v18-railhead{height:40px!important;min-height:40px!important;padding:6px 9px!important}
  .v18-connections .connection-watch-list{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:3px 5px!important;
    padding:4px 6px 6px!important;
    overflow:visible!important;
    max-height:none!important;
  }
  .v18-connections .connection-watch-row{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto auto!important;
    gap:4px!important;
    min-height:30px!important;
    height:30px!important;
    padding:2px 4px!important;
    border:1px solid #172d40!important;
    border-radius:5px!important;
    background:#091722!important;
    min-width:0!important;
  }
  .v18-connections .connection-watch-row>div{min-width:0!important}
  .v18-connections .connection-watch-row b{
    display:block!important;font-size:7.5px!important;line-height:1!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important
  }
  .v18-connections .connection-watch-row small{
    display:block!important;font-size:5.5px!important;line-height:1!important;margin-top:3px!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important
  }
  .v18-connections .connection-margin{font-size:7px!important;white-space:nowrap!important;text-align:right!important}
  .v18-connections .conn-pill{height:20px!important;min-width:30px!important;padding:0 5px!important;font-size:6px!important;border-radius:5px!important}
}
html[data-theme="light"] .v18-connections .connection-watch-row{background:#fff!important;border-color:#d8e2e8!important}

/* A+/A++ still keep all current connection rules visible; only typography scales visually. */
html[data-ui-size="115"] .v18-connections .connection-watch-row,
html[data-ui-size="130"] .v18-connections .connection-watch-row{min-height:30px!important;height:30px!important}

/* v0.20.7 – Readability pass.
   The control room must be readable at normal 100% display size on a 1080p/1440p
   operations screen. We keep the one-screen layout by using the existing adaptive
   row density instead of shrinking all typography. */
@media(min-width:1500px) and (min-height:820px){
  /* Header and primary controls */
  .v18-titleblock .ops-kicker{font-size:10px!important;letter-spacing:.14em!important}
  .v18-titleline h1{font-size:32px!important}
  .v18-live-pill{height:28px!important;padding:0 11px!important;font-size:10px!important}
  .v18-subline{font-size:10px!important;margin-top:7px!important}
  .v20-auto-pill{height:30px!important;padding:0 11px!important;font-size:10px!important}
  .v18-head-weather small{font-size:9px!important;max-width:180px!important}
  .v18-head-weather b{font-size:18px!important}.v18-head-weather em{font-size:9px!important}
  .v18-clock small{font-size:9px!important}.v18-clock b{font-size:22px!important}
  .v18-actions .ops-btn{height:34px!important;padding:0 11px!important;font-size:10px!important}

  /* KPI strip */
  .v18-kpis{height:68px!important}
  .v18-kpi{padding:8px 15px!important;column-gap:12px!important}
  .v18-kpi span{font-size:10px!important;letter-spacing:.11em!important}
  .v18-kpi b{font-size:30px!important}
  .v18-kpi small{font-size:9px!important}

  /* Board chrome */
  .v18-boardbar{height:46px!important;min-height:46px!important;padding:6px 9px!important}
  .v18-board .board-tab{height:34px!important;padding:0 13px!important;font-size:11px!important}
  .v18-board .board-tab.deviation-tab span{font-size:9px!important;height:19px!important;min-width:19px!important}
  .v18-board .search-wrap{height:34px!important;min-width:300px!important;font-size:10px!important}
  .v18-board .market-head.terminal-head{height:34px!important;min-height:34px!important;padding:9px 10px!important;font-size:9px!important;letter-spacing:.08em!important}

  /* Base vehicle-row typography. */
  .v18-board .market-status,.v18-board .market-status b{font-size:10px!important}
  .v18-board .market-dot{width:7px!important;height:7px!important}
  .v18-board .market-bus b,.v18-board .market-reg b,.v18-board .market-gps b,.v18-board .market-speed b{font-size:12px!important}
  .v18-board .market-dest b{font-size:14px!important}
  .v18-board .market-delay b,.v18-board .market-reg.pred b,.v18-board .market-pax b{font-size:14px!important}
  .v18-board .market-bus small,.v18-board .market-dest small,.v18-board .market-reg small,.v18-board .market-gps small,.v18-board .market-speed small,.v18-board .market-pax small{font-size:9px!important;margin-top:3px!important}
  .v18-board .market-conn{min-height:30px!important;padding:4px 8px!important}.v18-board .market-conn b{font-size:10px!important}
  .v18-board .row-more{height:30px!important;font-size:16px!important}

  /* Adaptive row height: fewer buses = use the screen instead of leaving empty space. */
  .v18-board .density-spacious .market-row{height:78px!important;min-height:78px!important;padding:8px 10px!important}
  .v18-board .density-relaxed .market-row{height:68px!important;min-height:68px!important;padding:7px 9px!important}
  .v18-board .density-standard .market-row{height:54px!important;min-height:54px!important;padding:5px 8px!important}
  .v18-board .density-compact .market-row{height:42px!important;min-height:42px!important;padding:4px 7px!important}

  .v18-board .density-spacious .market-line .line-badge{min-width:54px!important;height:44px!important;font-size:19px!important}
  .v18-board .density-relaxed .market-line .line-badge{min-width:50px!important;height:40px!important;font-size:17px!important}
  .v18-board .density-standard .market-line .line-badge{min-width:44px!important;height:35px!important;font-size:15px!important}
  .v18-board .density-compact .market-line .line-badge{min-width:40px!important;height:31px!important;font-size:13px!important}

  .v18-board .density-spacious .market-bus b,.v18-board .density-spacious .market-reg b,.v18-board .density-spacious .market-gps b,.v18-board .density-spacious .market-speed b{font-size:14px!important}
  .v18-board .density-spacious .market-dest b,.v18-board .density-spacious .market-delay b,.v18-board .density-spacious .market-reg.pred b,.v18-board .density-spacious .market-pax b{font-size:16px!important}
  .v18-board .density-spacious .market-bus small,.v18-board .density-spacious .market-dest small,.v18-board .density-spacious .market-reg small,.v18-board .density-spacious .market-gps small,.v18-board .density-spacious .market-speed small,.v18-board .density-spacious .market-pax small{font-size:10px!important}

  .v18-board .density-relaxed .market-bus b,.v18-board .density-relaxed .market-reg b,.v18-board .density-relaxed .market-gps b,.v18-board .density-relaxed .market-speed b{font-size:13px!important}
  .v18-board .density-relaxed .market-dest b,.v18-board .density-relaxed .market-delay b,.v18-board .density-relaxed .market-reg.pred b,.v18-board .density-relaxed .market-pax b{font-size:15px!important}
  .v18-board .density-relaxed .market-bus small,.v18-board .density-relaxed .market-dest small,.v18-board .density-relaxed .market-reg small,.v18-board .density-relaxed .market-gps small,.v18-board .density-relaxed .market-speed small,.v18-board .density-relaxed .market-pax small{font-size:10px!important}

  /* The compact mode still has to be readable when many buses are active. */
  .v18-board .density-compact .market-status,.v18-board .density-compact .market-status b{font-size:9px!important}
  .v18-board .density-compact .market-bus b,.v18-board .density-compact .market-reg b,.v18-board .density-compact .market-gps b,.v18-board .density-compact .market-speed b{font-size:10px!important}
  .v18-board .density-compact .market-dest b,.v18-board .density-compact .market-delay b,.v18-board .density-compact .market-reg.pred b,.v18-board .density-compact .market-pax b{font-size:11px!important}
  .v18-board .density-compact .market-bus small,.v18-board .density-compact .market-dest small,.v18-board .density-compact .market-reg small,.v18-board .density-compact .market-gps small,.v18-board .density-compact .market-speed small,.v18-board .density-compact .market-pax small{font-size:8px!important}

  /* Right rail: alarms, connections and situation picture */
  .v18-railhead{height:54px!important;padding:9px 12px!important}
  .v18-railhead span{font-size:9px!important}.v18-railhead h2{font-size:16px!important}.v18-railhead>small{font-size:9px!important}.v18-count{min-width:28px!important;height:28px!important;font-size:10px!important}
  .v18-actions-panel .terminal-alerts{padding:8px!important}
  .v18-actions-panel .alarm-body{padding:10px 11px!important}
  .v18-actions-panel .alarm-body h3{font-size:12px!important}.v18-actions-panel .alarm-body p{font-size:10px!important;line-height:1.4!important}.v18-actions-panel .alarm-meta{font-size:9px!important}.v18-actions-panel .ops-action{font-size:9px!important;padding:6px 9px!important}

  /* Connection matrix remains two columns, but no micro-text. */
  .v18-connections .v18-railhead{height:44px!important;min-height:44px!important}
  .v18-connections .connection-watch-list{gap:5px 6px!important;padding:6px 7px 7px!important}
  .v18-connections .connection-watch-row{min-height:38px!important;height:38px!important;padding:4px 6px!important}
  .v18-connections .connection-watch-row b{font-size:10px!important;line-height:1.05!important}
  .v18-connections .connection-watch-row small{font-size:8px!important;line-height:1.05!important;margin-top:3px!important}
  .v18-connections .connection-margin{font-size:9px!important}
  .v18-connections .conn-pill{height:23px!important;min-width:36px!important;padding:0 7px!important;font-size:8px!important}

  .v202-feed-head span{font-size:9px!important}.v202-feed-head b{font-size:12px!important}.v202-feed-head small{font-size:9px!important}
  .v202-feed-group{padding-top:11px!important;padding-bottom:12px!important}
  .v202-situation .weather-station-card b,.v202-situation .tv-traffic-item strong,.v202-situation .smhi-card b,.v202-situation .service-item strong{font-size:11px!important}
  .v202-situation .weather-station-card small,.v202-situation .weather-station-card span,.v202-situation .tv-traffic-item small,.v202-situation .tv-traffic-item p,.v202-situation .smhi-card small,.v202-situation .smhi-card span,.v202-situation .service-item p{font-size:9px!important;line-height:1.3!important}
  .v202-situation .weather-values strong,.v202-situation .smhi-card>strong{font-size:13px!important}

  /* Sidebar and appearance controls are operational controls too. */
  .brand strong{font-size:17px!important}.brand small{font-size:10px!important}
  .nav-title{font-size:10px!important}.nav-item{font-size:13px!important;min-height:38px!important}
  .ops-sidebar-state b,.ops-sidebar-state small{font-size:10px!important}
  .sidebar-appearance-title{font-size:9px!important}.sidebar-appearance-theme{height:32px!important;font-size:10px!important}.sidebar-size-row button{height:31px!important;font-size:10px!important}
}

/* At A+ / A++, connection rows may grow. It is better to scroll that small panel
   than to make the text unreadable again. */
html[data-ui-size="115"] .v18-connections .connection-watch-row,
html[data-ui-size="130"] .v18-connections .connection-watch-row{height:auto!important;min-height:38px!important}

/* v0.20.8 – Wide control-room rail + use the empty board height.
   On large dispatch screens the traffic table does not need almost the full width.
   Give alarms, connections and situation data enough physical width to be read at a glance. */
@media(min-width:1500px) and (min-height:820px){
  .v18-workspace{grid-template-columns:minmax(0,1fr) clamp(500px,30vw,650px)!important;gap:12px!important}
  .v202-rail{grid-template-rows:minmax(190px,.66fr) auto minmax(300px,1.34fr) auto!important;gap:10px!important}

  /* Use otherwise empty vertical space when only a handful of buses are live. */
  .v18-board .market-board.fill-rows .market-row{
    height:var(--row-fill-height)!important;
    min-height:var(--row-fill-height)!important;
  }
  .v18-board .market-board.fill-rows .market-row{padding-top:9px!important;padding-bottom:9px!important}

  /* The right rail is now a true information column rather than a narrow sidebar. */
  .v18-railhead{height:58px!important;padding:10px 14px!important}
  .v18-railhead span{font-size:10px!important}
  .v18-railhead h2{font-size:19px!important;line-height:1.1!important}
  .v18-railhead>small{font-size:10px!important}
  .v18-count{min-width:30px!important;height:30px!important;font-size:11px!important}

  .v18-actions-panel .terminal-alerts{padding:9px!important}
  .v18-actions-panel .ops-alert-card{margin-bottom:7px!important}
  .v18-actions-panel .alarm-body{padding:11px 12px!important}
  .v18-actions-panel .alarm-body h3{font-size:13px!important}
  .v18-actions-panel .alarm-body p{font-size:11px!important;line-height:1.4!important;-webkit-line-clamp:3!important}
  .v18-actions-panel .alarm-meta{font-size:9px!important}
  .v18-actions-panel .ops-action{font-size:10px!important;padding:7px 10px!important}

  /* Four normal connection rules remain visible without scrolling, now at readable size. */
  .v18-connections{max-height:none!important}
  .v18-connections .v18-railhead{height:50px!important;min-height:50px!important;padding:8px 12px!important}
  .v18-connections .connection-watch-list{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important;padding:8px 9px 9px!important}
  .v18-connections .connection-watch-row{height:50px!important;min-height:50px!important;padding:6px 8px!important;gap:7px!important;border-radius:7px!important}
  .v18-connections .connection-watch-row b{font-size:12px!important;line-height:1.1!important}
  .v18-connections .connection-watch-row small{font-size:9px!important;line-height:1.15!important;margin-top:4px!important}
  .v18-connections .connection-margin{font-size:10px!important}
  .v18-connections .conn-pill{height:27px!important;min-width:42px!important;padding:0 8px!important;font-size:9px!important}

  /* Situation picture: larger station names and values now that the rail is wider. */
  .v202-situation-scroll{padding:0 10px 10px!important}
  .v202-feed-group{padding-top:12px!important;padding-bottom:13px!important}
  .v202-feed-head{padding-bottom:9px!important}
  .v202-feed-head span{font-size:10px!important}
  .v202-feed-head b{font-size:14px!important}
  .v202-feed-head b strong{font-size:18px!important}
  .v202-feed-head small{font-size:10px!important;line-height:1.3!important}
  .v202-feed-head em{min-width:28px!important;height:23px!important;font-size:9px!important}
  .v202-situation .weather-station-card b,.v202-situation .tv-traffic-item strong,.v202-situation .smhi-card b,.v202-situation .service-item strong{font-size:12px!important}
  .v202-situation .weather-station-card small,.v202-situation .weather-station-card span,.v202-situation .tv-traffic-item small,.v202-situation .tv-traffic-item p,.v202-situation .smhi-card small,.v202-situation .smhi-card span,.v202-situation .service-item p{font-size:10px!important;line-height:1.35!important}
  .v202-situation .weather-values strong,.v202-situation .smhi-card>strong{font-size:15px!important}
}

/* On very wide control-room displays use even more of the horizontal surplus for context. */
@media(min-width:2300px) and (min-height:900px){
  .v18-workspace{grid-template-columns:minmax(0,1fr) clamp(620px,31vw,780px)!important}
  .v18-connections .connection-watch-row{height:56px!important;min-height:56px!important}
  .v18-connections .connection-watch-row b{font-size:13px!important}
  .v18-connections .connection-watch-row small{font-size:10px!important}
  .v202-feed-head b{font-size:16px!important}
}

/* v0.20.9 – Läsbar Lägesbild.
   Vägväder och SMHI ska kunna avläsas på avstånd. Värden separeras tydligt
   och de äldre ultrakompakta SMHI-reglerna överskrivs här med högre specificitet. */
@media(min-width:1500px) and (min-height:820px){
  /* Ge Lägesbilden en lugnare informationshierarki. */
  #situation-picture .v202-feed-group{padding:13px 0 14px!important}
  #situation-picture .v202-feed-head{padding:0 3px 10px!important;align-items:flex-start!important}
  #situation-picture .v202-feed-head span{font-size:10px!important;letter-spacing:.14em!important}
  #situation-picture .v202-feed-head b{font-size:17px!important;line-height:1.12!important;margin-top:4px!important}
  #situation-picture .v202-feed-head b strong{font-size:20px!important}
  #situation-picture .v202-feed-head small{font-size:11px!important;line-height:1.25!important;margin-top:4px!important}
  #situation-picture .v202-feed-head em{min-width:31px!important;height:25px!important;font-size:10px!important}

  /* Vägväder: två kolumner, men varje station får två tydliga rader.
     Första raden = station. Andra raden = LUFT / VÄG / VIND. */
  #situation-picture #tv-weather-list{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:6px!important;
  }
  #situation-picture #tv-weather-list .weather-station-card{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    grid-template-rows:auto auto!important;
    column-gap:7px!important;
    row-gap:5px!important;
    height:auto!important;
    min-height:58px!important;
    padding:7px 9px!important;
    border-radius:8px!important;
    align-items:end!important;
  }
  #situation-picture #tv-weather-list .weather-station-card>div:first-child{
    grid-column:1/4!important;
    grid-row:1!important;
    display:block!important;
    min-width:0!important;
    padding-bottom:5px!important;
    border-bottom:1px solid rgba(104,145,169,.18)!important;
  }
  #situation-picture #tv-weather-list .weather-station-card>div:first-child span,
  #situation-picture #tv-weather-list .weather-station-card>div:first-child small{display:none!important}
  #situation-picture #tv-weather-list .weather-station-card b{
    display:block!important;
    font-size:12px!important;
    line-height:1.1!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  #situation-picture #tv-weather-list .weather-values{
    display:flex!important;
    flex-direction:column!important;
    align-items:flex-start!important;
    justify-content:flex-end!important;
    gap:3px!important;
    min-width:0!important;
  }
  #situation-picture #tv-weather-list .weather-values strong{
    font-size:14px!important;
    line-height:1!important;
    white-space:nowrap!important;
  }
  #situation-picture #tv-weather-list .weather-values small{
    display:block!important;
    font-size:7px!important;
    line-height:1!important;
    font-weight:800!important;
    letter-spacing:.11em!important;
    opacity:.9!important;
    order:-1!important;
  }

  /* SMHI: större, tydligt separerade ortskort. De gamla 30 px-korten
     var orsaken till att texten fortfarande såg mikroskopisk ut. */
  #situation-picture .v202-smhi-stack{gap:7px!important}
  #situation-picture #smhi-forecast-list{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:6px!important;
    padding:0!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card{
    display:grid!important;
    grid-template-columns:24px minmax(0,1fr) auto!important;
    grid-template-rows:auto auto!important;
    column-gap:7px!important;
    row-gap:4px!important;
    height:auto!important;
    min-height:56px!important;
    padding:8px 9px!important;
    border-radius:8px!important;
    align-items:center!important;
  }
  #situation-picture #smhi-forecast-list .smhi-symbol{
    grid-column:1!important;
    grid-row:1/3!important;
    font-size:17px!important;
    line-height:1!important;
    align-self:center!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:nth-child(2){
    grid-column:2!important;
    grid-row:1!important;
    display:flex!important;
    align-items:baseline!important;
    gap:6px!important;
    min-width:0!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:nth-child(2) b{
    display:block!important;
    font-size:12px!important;
    line-height:1.1!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:nth-child(2) small{
    display:block!important;
    font-size:8px!important;
    line-height:1!important;
    white-space:nowrap!important;
    opacity:.85!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>strong{
    grid-column:3!important;
    grid-row:1!important;
    font-size:15px!important;
    line-height:1!important;
    white-space:nowrap!important;
    justify-self:end!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:last-child{
    grid-column:2/4!important;
    grid-row:2!important;
    display:flex!important;
    align-items:center!important;
    gap:8px!important;
    margin:0!important;
    min-width:0!important;
    overflow:hidden!important;
    white-space:nowrap!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:last-child span{
    display:inline!important;
    font-size:9px!important;
    line-height:1.1!important;
    font-weight:700!important;
  }
  #situation-picture #smhi-forecast-list .smhi-card>div:last-child small{
    display:inline!important;
    font-size:8px!important;
    line-height:1.1!important;
    white-space:nowrap!important;
  }

  /* Varningen ska vara en egen tydlig rad, inte en fotnot. */
  #situation-picture #smhi-warning-list .tv-traffic-item{
    min-height:48px!important;
    padding:8px 9px!important;
    grid-template-columns:8px minmax(0,1fr)!important;
    gap:7px!important;
    border-radius:8px!important;
  }
  #situation-picture #smhi-warning-list .tv-traffic-item strong{font-size:11px!important;line-height:1.2!important}
  #situation-picture #smhi-warning-list .tv-traffic-item small{font-size:9px!important;line-height:1.2!important;margin-top:2px!important}
  #situation-picture #smhi-warning-list .tv-traffic-item p{font-size:9px!important;line-height:1.3!important;margin-top:3px!important;-webkit-line-clamp:2!important}

  /* Normalmeddelanden och störningar ska också gå att läsa utan att zooma. */
  #situation-picture .ops-clear.compact{min-height:40px!important;height:auto!important;padding:7px 9px!important;gap:8px!important}
  #situation-picture .ops-clear.compact .clear-icon{width:25px!important;height:25px!important;min-width:25px!important;font-size:13px!important}
  #situation-picture .ops-clear.compact strong{font-size:10px!important}
  #situation-picture .ops-clear.compact span{font-size:9px!important}
}

/* Extra bred kontrollrumsskärm: använd bredden till läsbarhet, inte fler mikrokolumner. */
@media(min-width:2300px) and (min-height:900px){
  #situation-picture #tv-weather-list .weather-station-card{min-height:64px!important;padding:8px 10px!important}
  #situation-picture #tv-weather-list .weather-station-card b{font-size:13px!important}
  #situation-picture #tv-weather-list .weather-values strong{font-size:16px!important}
  #situation-picture #tv-weather-list .weather-values small{font-size:8px!important}
  #situation-picture #smhi-forecast-list .smhi-card{min-height:62px!important;padding:9px 10px!important}
  #situation-picture #smhi-forecast-list .smhi-card>div:nth-child(2) b{font-size:13px!important}
  #situation-picture #smhi-forecast-list .smhi-card>strong{font-size:17px!important}
  #situation-picture #smhi-forecast-list .smhi-card>div:last-child span{font-size:10px!important}
  #situation-picture #smhi-forecast-list .smhi-card>div:last-child small{font-size:9px!important}
}

/* Ljust tema: separatorerna ska fortfarande vara tydliga. */
html[data-theme="light"] #situation-picture #tv-weather-list .weather-station-card>div:first-child{border-bottom-color:#d7e1e6!important}

/* v0.21.0 – SMHI flyttad till driftcentralens topp.
   Den breda tomma header-ytan används för en läsbar väderremsa. */
.v21-smhi-header{
  height:58px;min-width:610px;max-width:980px;display:flex;align-items:center;gap:14px;
  padding:5px 12px;border-left:1px solid var(--v18-line);border-right:1px solid var(--v18-line);
}
.v21-smhi-primary{min-width:150px;display:flex;flex-direction:column;justify-content:center}
.v21-smhi-primary small{font-size:8px!important;letter-spacing:.12em;color:#6f91a5;font-weight:800;white-space:nowrap}
.v21-smhi-primary b{font-size:16px!important;line-height:1.15;margin-top:2px;white-space:nowrap}
.v21-smhi-primary em{font-size:8px!important;line-height:1.15;margin-top:2px;color:#7d94a5;font-style:normal;white-space:nowrap}
.v21-smhi-places{display:grid;grid-template-columns:repeat(6,minmax(92px,1fr));gap:5px;min-width:0;flex:1}
.v21-smhi-place{height:42px;display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:5px;padding:4px 7px;border:1px solid #173246;border-radius:7px;background:#081824;min-width:0}
.v21-smhi-symbol{font-size:14px;line-height:1}
.v21-smhi-place>div{min-width:0}.v21-smhi-place b{display:block;font-size:9px!important;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v21-smhi-place small{display:block;font-size:7px!important;line-height:1.05;margin-top:3px;color:#7590a2;white-space:nowrap}.v21-smhi-place strong{font-size:12px!important;line-height:1;white-space:nowrap}
.v21-smhi-empty{font-size:9px;color:#71899a}
.v21-hidden-smhi-source{display:none!important}
/* Prognosorterna ligger nu i toppen. Högerkolumnen visar bara officiella varningar. */
#situation-picture .v21-smhi-warning-group #smhi-warning-list{display:grid!important;grid-template-columns:1fr!important;gap:5px!important}
#situation-picture .v21-smhi-warning-group .ops-clear.compact{min-height:36px!important}

html[data-theme="light"] .v21-smhi-header{border-color:#ccd7df}
html[data-theme="light"] .v21-smhi-place{background:#f7fafc;border-color:#d4e0e7}
html[data-theme="light"] .v21-smhi-primary b,html[data-theme="light"] .v21-smhi-place b,html[data-theme="light"] .v21-smhi-place strong{color:#162b36}
html[data-theme="light"] .v21-smhi-primary small,html[data-theme="light"] .v21-smhi-primary em,html[data-theme="light"] .v21-smhi-place small{color:#607987}

@media(max-width:2299px){
  .v21-smhi-header{min-width:360px;max-width:620px}
  .v21-smhi-places{grid-template-columns:repeat(3,minmax(82px,1fr))}
  .v21-smhi-place:nth-child(n+4){display:none}
}
@media(max-width:1499px),(max-height:819px){
  .v21-smhi-header{min-width:190px;max-width:260px;border-right:0}
  .v21-smhi-places{display:none}
  .v21-smhi-primary{min-width:0}
}
@media(min-width:2800px){
  .v21-smhi-header{min-width:1040px;max-width:1420px;gap:18px;padding-left:16px;padding-right:16px}
  .v21-smhi-primary{min-width:175px}
  .v21-smhi-primary small{font-size:9px!important}.v21-smhi-primary b{font-size:19px!important}.v21-smhi-primary em{font-size:10px!important}
  .v21-smhi-place{height:46px;padding:5px 9px;grid-template-columns:20px minmax(0,1fr) auto}
  .v21-smhi-symbol{font-size:16px}.v21-smhi-place b{font-size:11px!important}.v21-smhi-place small{font-size:8px!important}.v21-smhi-place strong{font-size:14px!important}
}

/* v0.21.2 – sju operativa väderorter i toppen: Visby som huvudkort + sex ortskort. */
@media(min-width:2300px){
  .v21-smhi-places{grid-template-columns:repeat(6,minmax(96px,1fr))}
}

/* v0.21.3 – sökbar hållplatsväljare och hela hållplatsregistret. */
.connection-form .field-hint{display:block;margin:.18rem 0 .35rem;color:var(--muted);font-size:.78em;font-weight:500}
.connection-form .connection-stop-search{margin-bottom:.45rem}
.connection-form #connection-stop-select{min-height:46px}

/* v0.21.5: GPS/positionsålder är information, inte ett driftlarm. */
.tone-neutral{color:#8aa0b2!important}
.market-gps b.tone-neutral:before{background:#6f8798!important;box-shadow:none!important}
html[data-theme="light"] .tone-neutral{color:#5f7480!important}

/* v0.23.19 – komplett fordonsstöd för trafikledning */
.vehicle-progress-summary{margin:-4px 0 10px;color:#91a8bc;font-size:12px}
.vehicle-quick{margin:18px 0;padding:14px;border:1px solid rgba(92,197,255,.18);border-radius:12px;background:rgba(29,111,158,.08)}
.vehicle-quick h3{margin:0 0 10px}.vehicle-action-buttons{display:flex;flex-wrap:wrap;gap:7px}
.vehicle-action-buttons button,.vehicle-note-input button{border:1px solid #2b6687;border-radius:8px;background:#10324a;color:#dff5ff;padding:8px 11px;font-weight:800;cursor:pointer}
.vehicle-action-buttons button:hover,.vehicle-note-input button:hover{background:#174665}.vehicle-action-buttons button:disabled,.vehicle-note-input button:disabled{opacity:.55;cursor:wait}
.temporary-password{display:inline-block;padding:8px 10px;border:1px solid #315a76;border-radius:7px;background:#06121d;color:#8ee8ff;font-size:15px;letter-spacing:.04em;user-select:all}
.vehicle-note-input{display:grid;grid-template-columns:1fr auto;gap:7px;margin-top:8px}.vehicle-note-input input{min-width:0;border:1px solid rgba(125,158,197,.22);border-radius:8px;background:#07111d;color:#eef7ff;padding:9px 10px}
#vehicle-action-message{min-height:16px;margin-top:7px;color:#64e4b1;font-size:11px}
.upcoming-trip{grid-template-columns:55px 80px minmax(0,1fr);align-items:center}.upcoming-trip small{grid-column:2/-1;color:#8499ae}.upcoming-trip.warn{border-color:rgba(242,187,73,.42);background:rgba(242,187,73,.07)}.upcoming-trip.danger{border-color:rgba(239,98,107,.5);background:rgba(239,98,107,.09)}.upcoming-trip.ok small{color:#63dca9}.upcoming-trip.warn small{color:#e9c870}.upcoming-trip.danger small{color:#ff9299}
.vehicle-note-list{display:grid;gap:6px;padding-bottom:24px}.vehicle-note{display:grid;grid-template-columns:42px 1fr;gap:10px;padding:9px 11px;border-radius:9px;background:rgba(255,255,255,.025);border:1px solid rgba(130,158,190,.1)}.vehicle-note time{color:#6f869b;font-size:11px}.vehicle-note div{display:grid;gap:2px}.vehicle-note b{color:#dcecff;font-size:11px}.vehicle-note span{color:#a7b8c9;font-size:12px}.vehicle-note small{color:#71879b;font-size:10px}
html[data-theme="light"] .vehicle-quick{background:#edf7fc;border-color:#c7e1ee}html[data-theme="light"] .vehicle-note-input input{background:#fff;color:#20333e;border-color:#c4d5de}html[data-theme="light"] .vehicle-note{background:#f5f8fa;border-color:#dce5ea}

.integration-auto-note{display:flex;flex-direction:column;gap:3px;padding:8px 10px;border:1px solid var(--line);border-radius:8px}.integration-auto-note strong{font-size:11px}.integration-auto-note span{font-size:9px;color:var(--muted)}
/* v0.22.0 – operativ intelligens, TL-logg och källstatus */
.delay-trend{display:inline-grid;place-items:center;margin-left:3px;font-size:10px;font-weight:1000}.delay-trend.better{color:#4ce3a4}.delay-trend.worse{color:#ff777f}.delay-trend.stable{color:#8ba0b1}
.source-status-strip{display:flex;gap:6px;align-items:center;flex-wrap:wrap;max-width:360px}.source-dot{display:flex;align-items:center;gap:4px;font-size:7px;color:#8299aa;white-space:nowrap}.source-dot i{width:6px;height:6px;border-radius:50%;background:#efb949}.source-dot.ok i{background:#39d99a}.source-dot.warn i{background:#efb949}
.v18-kpis{grid-template-columns:repeat(7,minmax(0,1fr))!important}
.v202-rail{grid-template-rows:minmax(150px,1fr) auto auto minmax(0,1.25fr)!important}.tl-log-panel{max-height:178px;display:flex;flex-direction:column}.tl-log-panel .v18-railhead{height:38px;min-height:38px}.tl-log-list{overflow:auto;min-height:0;padding:2px 8px}.tl-log-row{display:grid;grid-template-columns:34px 1fr;gap:6px;padding:5px 0;border-bottom:1px solid #172b3a}.tl-log-row time{font-size:8px;color:#6f899c}.tl-log-row div{min-width:0}.tl-log-row b{font-size:7px;color:#55cbea;text-transform:uppercase;margin-right:6px}.tl-log-row span{font-size:8px;color:#d8e5ed}.tl-log-row small{display:block;font-size:6px;color:#607789;margin-top:2px}.tl-log-form{display:grid;grid-template-columns:72px 1fr 28px;gap:4px;padding:5px 7px;border-top:1px solid #172b3a}.tl-log-form select,.tl-log-form input{height:27px;min-width:0;border:1px solid #20394b;border-radius:5px;background:#07131d;color:#dcebf3;font-size:8px;padding:0 6px}.tl-log-form button{height:27px;border:0;border-radius:5px;background:#117da0;color:white;font-size:15px;font-weight:900}
[data-theme="light"] .tl-log-form select,[data-theme="light"] .tl-log-form input{background:#fff;color:#14212a;border-color:#cbd8df}[data-theme="light"] .tl-log-row{border-color:#d8e1e6}[data-theme="light"] .tl-log-row span{color:#1a2b35}
@media(max-width:1450px){.source-status-strip{display:none}.v18-kpis{grid-template-columns:repeat(7,minmax(90px,1fr))!important}}

/* v0.22.2 – right rail viewport fit.
   Empty alarm space must never push connections/TL log/situation picture below the screen. */
@media(min-width:1500px) and (min-height:820px){
  .v18-workspace{min-height:0!important;overflow:hidden!important}
  .v202-rail{
    height:100%!important;
    min-height:0!important;
    overflow:hidden!important;
    display:grid!important;
    grid-template-rows:auto auto auto minmax(0,1fr) auto!important;
    align-content:stretch!important;
    gap:7px!important;
  }

  /* Alarm panel is content-sized. No more half-screen empty green-state box. */
  .v18-actions-panel{min-height:0!important;max-height:260px!important;height:auto!important}
  .v18-actions-panel.is-clear{height:104px!important;max-height:104px!important}
  .v18-actions-panel.is-clear .v18-railhead{height:42px!important;min-height:42px!important}
  .v18-actions-panel.is-clear .terminal-alerts{height:61px!important;min-height:61px!important;flex:0 0 61px!important;overflow:hidden!important;padding:5px 8px!important}
  .v18-actions-panel.is-clear .ops-clear{
    height:51px!important;min-height:51px!important;padding:5px 8px!important;
    display:grid!important;grid-template-columns:28px minmax(0,1fr)!important;
    grid-template-rows:auto auto!important;column-gap:8px!important;align-content:center!important;justify-content:start!important;text-align:left!important
  }
  .v18-actions-panel.is-clear .ops-clear .clear-icon{grid-row:1/3!important;width:28px!important;height:28px!important;min-width:28px!important;font-size:14px!important;margin:0!important}
  .v18-actions-panel.is-clear .ops-clear strong{font-size:10px!important;line-height:1.15!important;margin:0!important}
  .v18-actions-panel.is-clear .ops-clear span{font-size:8px!important;line-height:1.15!important;margin:2px 0 0!important}
  .v18-actions-panel.has-alerts .terminal-alerts{max-height:210px!important;overflow:auto!important}

  /* Four current rules remain fully visible and compact. */
  .v18-connections{height:auto!important;max-height:150px!important;overflow:hidden!important}
  .v18-connections .v18-railhead{height:42px!important;min-height:42px!important;padding:6px 10px!important}
  .v18-connections .connection-watch-list{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px!important;padding:6px 7px 7px!important;overflow:visible!important}
  .v18-connections .connection-watch-row{height:38px!important;min-height:38px!important;padding:4px 6px!important;gap:5px!important}
  .v18-connections .connection-watch-row b{font-size:10px!important}
  .v18-connections .connection-watch-row small{font-size:8px!important;margin-top:2px!important}
  .v18-connections .connection-margin{font-size:9px!important}
  .v18-connections .conn-pill{height:23px!important;min-width:36px!important;font-size:8px!important}

  /* TL log is always present but must not consume the situation picture. */
  .tl-log-panel{height:126px!important;max-height:126px!important;min-height:126px!important}
  .tl-log-panel .v18-railhead{height:39px!important;min-height:39px!important;padding:6px 10px!important}
  .tl-log-list{min-height:42px!important;overflow:auto!important;padding:2px 8px!important}
  .tl-log-form{flex:0 0 34px!important;padding:4px 7px!important}
  .tl-log-form select,.tl-log-form input,.tl-log-form button{height:26px!important}

  /* Situation picture receives every remaining pixel and scrolls only inside itself. */
  .v202-situation{min-height:0!important;height:auto!important;overflow:hidden!important}
  .v202-situation>.v18-railhead{height:42px!important;min-height:42px!important;padding:6px 10px!important}
  .v202-situation-scroll{min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important;scrollbar-gutter:stable!important;padding:0 7px 7px!important}
  .dashboard-admin-tools.v202-admin-tools{min-height:32px!important;max-height:38px!important;overflow:visible!important;margin:0!important}

  /* Road weather: 14 stations fit much better while remaining readable. */
  #situation-picture .v202-feed-group{padding:6px 0 7px!important}
  #situation-picture .v202-feed-head{padding:0 2px 5px!important}
  #situation-picture .v202-feed-head span{font-size:7px!important}
  #situation-picture .v202-feed-head b{font-size:11px!important}
  #situation-picture .v202-feed-head b strong{font-size:13px!important}
  #situation-picture .v202-feed-head small{font-size:7px!important}
  #situation-picture #tv-weather-list{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:4px!important}
  #situation-picture #tv-weather-list .weather-station-card{min-height:42px!important;height:42px!important;padding:5px 7px!important;grid-template-columns:minmax(92px,1fr) 40px 40px 48px!important;gap:5px!important}
  #situation-picture #tv-weather-list .weather-station-card>div:first-child{border:0!important;padding:0!important;display:flex!important;align-items:center!important;min-width:0!important}
  #situation-picture #tv-weather-list .weather-station-card>div:first-child span,
  #situation-picture #tv-weather-list .weather-station-card>div:first-child small{display:none!important}
  #situation-picture #tv-weather-list .weather-station-card b{font-size:10px!important;line-height:1.1!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  #situation-picture #tv-weather-list .weather-values{display:grid!important;grid-template-rows:14px 9px!important;align-content:center!important;justify-items:end!important}
  #situation-picture #tv-weather-list .weather-values strong{font-size:11px!important;line-height:1!important}
  #situation-picture #tv-weather-list .weather-values small{font-size:6px!important;line-height:1!important}

  #situation-picture .ops-clear.compact{min-height:34px!important;padding:5px 7px!important}
  #situation-picture .ops-clear.compact .clear-icon{width:22px!important;height:22px!important;min-width:22px!important;font-size:12px!important}
  #situation-picture .ops-clear.compact strong{font-size:9px!important}
  #situation-picture .ops-clear.compact span{font-size:8px!important}
}

/* On normal 1080p workstations keep the entire right-hand stack in the physical viewport. */
@media(min-width:1500px) and (min-height:820px) and (max-height:1150px){
  .v18-actions-panel.is-clear{height:92px!important;max-height:92px!important}
  .v18-actions-panel.is-clear .terminal-alerts{height:49px!important;min-height:49px!important;flex-basis:49px!important}
  .v18-actions-panel.is-clear .ops-clear{height:39px!important;min-height:39px!important}
  .v18-connections .connection-watch-row{height:34px!important;min-height:34px!important}
  .tl-log-panel{height:112px!important;max-height:112px!important;min-height:112px!important}
  #situation-picture #tv-weather-list .weather-station-card{height:37px!important;min-height:37px!important;padding:4px 6px!important}
  #situation-picture #tv-weather-list .weather-station-card b{font-size:9px!important}
  #situation-picture #tv-weather-list .weather-values strong{font-size:10px!important}
}

/* Enlarged A+/A++ mode: panels still stay in the rail; local scrolling is preferred to page scrolling. */
html[data-ui-size="115"] .v202-rail,html[data-ui-size="130"] .v202-rail{overflow:hidden!important}
html[data-ui-size="115"] .v202-situation-scroll,html[data-ui-size="130"] .v202-situation-scroll{overflow-y:auto!important}

/* v0.23.0 – predictive operations layer */
.next30-panel{min-height:0;max-height:150px;display:flex;flex-direction:column}.next30-panel .v18-railhead{height:40px;min-height:40px}.next30-list{padding:4px 7px 6px;overflow:auto;min-height:0}.horizon-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1px 7px;padding:5px 7px;border:1px solid #183244;border-radius:6px;margin-bottom:4px;background:#091925}.horizon-row b{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.horizon-row span{font-size:9px;font-weight:900;color:#63d8b1}.horizon-row small{grid-column:1/-1;font-size:7px;color:#7690a2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.horizon-row.warn{border-left:3px solid #efb949}.horizon-row.warn span{color:#efb949}
.market-row{cursor:pointer}.market-row:hover{background:rgba(53,166,207,.045)}
.source-dot.warn{color:#efb949!important}.source-dot.warn i{box-shadow:0 0 0 3px rgba(239,185,73,.09)}
[data-theme="light"] .horizon-row{background:#f7fafc;border-color:#d6e1e8}[data-theme="light"] .market-row:hover{background:#f3f8fb}
@media(min-width:1500px) and (min-height:820px){.v202-rail{grid-template-rows:auto auto auto auto minmax(0,1fr) auto!important}.next30-panel{height:104px!important;max-height:104px!important}.next30-panel .v18-railhead{height:37px!important;min-height:37px!important;padding:5px 10px!important}.next30-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:4px 7px!important;overflow:auto}.horizon-row{margin:0;padding:4px 6px;min-height:27px}.horizon-row:nth-child(n+5){display:none}}
@media(min-width:1500px) and (min-height:820px) and (max-height:1150px){.next30-panel{height:96px!important;max-height:96px!important}.next30-panel .v18-railhead{height:34px!important;min-height:34px!important}.horizon-row{padding:3px 5px}.horizon-row small{font-size:6.5px}}

/* v0.23.1 – Lägesbild viewport-fit + korrigerad VViS-grid.
   v0.22.2 gjorde korten enradiga men äldre v0.20.9-regler lämnade första
   kolumnen över tre grid-kolumner. Det gjorde LUFT/VÄG/VIND osynkade och
   kunde skjuta värden utanför respektive stationskort. */
@media(min-width:1500px) and (min-height:820px){
  /* Hela Lägesbilden ska i normalläge gå att överblicka utan onödig scroll. */
  .v202-situation-scroll{
    overflow-y:auto!important;
    padding:0 8px 6px!important;
  }
  #situation-picture .v202-feed-group{padding:5px 0 6px!important}
  #situation-picture .v202-feed-head{padding:0 2px 4px!important;min-height:0!important}
  #situation-picture .v202-feed-head span{font-size:7px!important;line-height:1.05!important}
  #situation-picture .v202-feed-head b{font-size:11px!important;line-height:1.08!important;margin-top:2px!important}
  #situation-picture .v202-feed-head b strong{font-size:14px!important}
  #situation-picture .v202-feed-head small{font-size:7px!important;line-height:1.1!important;margin-top:2px!important}
  #situation-picture .v202-feed-head em{min-width:27px!important;height:22px!important;font-size:8px!important}

  /* 14 vägväderstationer = 7 rader i två kolumner. En station = en rad. */
  #situation-picture #tv-weather-list{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:4px 6px!important;
    padding:0!important;
  }
  #situation-picture #tv-weather-list .weather-station-card{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 48px 48px 58px!important;
    grid-template-rows:1fr!important;
    gap:5px!important;
    align-items:center!important;
    height:43px!important;
    min-height:43px!important;
    padding:5px 8px!important;
    border-radius:7px!important;
    overflow:hidden!important;
  }
  #situation-picture #tv-weather-list .weather-station-card>div:first-child{
    grid-column:1!important;
    grid-row:1!important;
    display:flex!important;
    align-items:center!important;
    min-width:0!important;
    padding:0!important;
    border:0!important;
  }
  #situation-picture #tv-weather-list .weather-station-card>div:first-child span,
  #situation-picture #tv-weather-list .weather-station-card>div:first-child small{display:none!important}
  #situation-picture #tv-weather-list .weather-station-card b{
    display:block!important;
    min-width:0!important;
    font-size:10px!important;
    line-height:1.05!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  #situation-picture #tv-weather-list .weather-values{
    grid-row:1!important;
    display:grid!important;
    grid-template-rows:9px 15px!important;
    align-content:center!important;
    justify-items:end!important;
    gap:1px!important;
    min-width:0!important;
  }
  #situation-picture #tv-weather-list .weather-station-card>div:nth-child(2){grid-column:2!important}
  #situation-picture #tv-weather-list .weather-station-card>div:nth-child(3){grid-column:3!important}
  #situation-picture #tv-weather-list .weather-station-card>div:nth-child(4){grid-column:4!important}
  #situation-picture #tv-weather-list .weather-values small{
    display:block!important;
    order:0!important;
    font-size:6px!important;
    line-height:1!important;
    font-weight:900!important;
    letter-spacing:.09em!important;
    opacity:.78!important;
  }
  #situation-picture #tv-weather-list .weather-values strong{
    font-size:11px!important;
    line-height:1!important;
    white-space:nowrap!important;
  }

  /* Väghändelser och trafikstörningar ska inte reservera onödig höjd när allt är OK. */
  #situation-picture #tv-traffic-list .ops-clear.compact,
  #situation-picture #service-list .ops-clear.compact{
    min-height:32px!important;
    padding:4px 7px!important;
  }

  /* Officiell SMHI-varning: rubrik + kort operativ sammanfattning. */
  #situation-picture #smhi-warning-list .tv-traffic-item{
    min-height:44px!important;
    padding:6px 8px!important;
  }
  #situation-picture #smhi-warning-list .tv-traffic-item strong{font-size:10px!important}
  #situation-picture #smhi-warning-list .tv-traffic-item small{font-size:7px!important}
  #situation-picture #smhi-warning-list .tv-traffic-item p{
    font-size:8px!important;
    line-height:1.2!important;
    margin-top:2px!important;
    display:-webkit-box!important;
    -webkit-box-orient:vertical!important;
    -webkit-line-clamp:1!important;
    overflow:hidden!important;
  }
}

/* 1080p: kapa ytterligare några pixlar men behåll läsbarheten. */
@media(min-width:1500px) and (min-height:820px) and (max-height:1150px){
  #situation-picture #tv-weather-list .weather-station-card{
    height:39px!important;
    min-height:39px!important;
    padding:4px 7px!important;
  }
  #situation-picture #tv-weather-list .weather-station-card b{font-size:9px!important}
  #situation-picture #tv-weather-list .weather-values strong{font-size:10px!important}
  #situation-picture .v202-feed-group{padding:4px 0 5px!important}
}

/* Ljust tema: den nya enradiga layouten använder samma tydliga kortgränser. */
html[data-theme="light"] #situation-picture #tv-weather-list .weather-station-card>div:first-child{border:0!important}


/* v0.23.5 – Framåtblick: mellanläge för läsbarhet och yteffektivitet. */
.next30-panel{
  min-height:0;
  max-height:142px !important;
}
.next30-panel .v18-railhead{
  height:38px !important;
  min-height:38px !important;
  padding:4px 10px !important;
}
.next30-panel .v18-railhead h2{
  font-size:18px !important;
  line-height:1 !important;
}
.next30-list{
  padding:4px 7px 6px !important;
  overflow:auto;
}
.horizon-row{
  grid-template-columns:minmax(0,1fr) auto !important;
  align-items:center !important;
  gap:2px 8px !important;
  padding:5px 7px !important;
  min-height:40px !important;
  margin-bottom:4px !important;
}
.horizon-copy{
  min-width:0;
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) !important;
  grid-template-rows:auto auto !important;
  align-items:baseline !important;
  column-gap:7px !important;
  row-gap:1px !important;
}
.horizon-row b{
  grid-column:1 !important;
  grid-row:1 !important;
  font-size:9.5px !important;
  line-height:1.1 !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}
.horizon-destination{
  grid-column:2 !important;
  grid-row:1 !important;
  display:block !important;
  min-width:0 !important;
  font-size:13px !important;
  line-height:1.05 !important;
  font-weight:850 !important;
  color:#dbeaf3 !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}
.horizon-row small{
  grid-column:1 / -1 !important;
  grid-row:2 !important;
  display:block !important;
  font-size:7.5px !important;
  line-height:1.1 !important;
  color:#7894a6 !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}
.horizon-row .horizon-value{
  font-size:10.5px !important;
  line-height:1 !important;
  font-weight:950 !important;
  white-space:nowrap !important;
  color:#63d8b1 !important;
}
.horizon-row.warn .horizon-value{color:#efb949 !important;}
html[data-theme="light"] .horizon-destination{color:#17384b !important;}

@media(min-width:1500px) and (min-height:820px){
  .next30-panel{height:126px !important;max-height:126px !important;}
  .next30-panel .v18-railhead{height:36px !important;min-height:36px !important;}
  .next30-list{
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    grid-auto-rows:38px !important;
    gap:4px 6px !important;
    padding:4px 7px 6px !important;
    overflow:hidden !important;
  }
  .horizon-row{margin:0 !important;min-height:38px !important;padding:4px 7px !important;}
  .horizon-row:nth-child(n+5){display:none !important;}
}

@media(min-width:1500px) and (min-height:820px) and (max-height:1150px){
  .next30-panel{height:120px !important;max-height:120px !important;}
  .next30-panel .v18-railhead{height:34px !important;min-height:34px !important;}
  .next30-list{grid-auto-rows:36px !important;gap:3px 6px !important;}
  .horizon-row{min-height:36px !important;padding:3px 6px !important;}
  .horizon-destination{font-size:12px !important;}
  .horizon-row b{font-size:9px !important;}
  .horizon-row small{font-size:7px !important;}
  .horizon-row .horizon-value{font-size:10px !important;}
}


/* v0.23.6 – scrollning när fönsterhöjd eller förstoring begränsar arbetsytan. */
@media (max-height: 950px), (min-width: 0px) {
  html[data-ui-size="115"],
  html[data-ui-size="130"] {
    height: auto !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
  }
}

@media (max-height: 1150px), (max-width: 1499px) {
  html,
  body {
    height: auto !important;
    min-height: 100% !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
  }

  .app.ops-app.dashboard-page,
  .app.ops-app.dashboard-page > main,
  .content.ops-content.dashboard-content {
    height: auto !important;
    min-height: 100vh !important;
    overflow: visible !important;
  }

  .content.ops-content.dashboard-content {
    display: block !important;
    padding-bottom: 24px !important;
  }

  .v18-workspace {
    height: auto !important;
    min-height: 600px !important;
    overflow: visible !important;
    grid-template-columns: minmax(0, 1fr) !important;
  }

  .v202-rail {
    height: auto !important;
    min-height: 0 !important;
    overflow: visible !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-template-rows: auto !important;
  }

  .v18-connections {
    overflow-y: auto !important;
  }

  .v202-situation-scroll {
    max-height: min(58vh, 620px) !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
  }
}

@media (max-width: 900px) {
  .v202-rail {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}


/* The in-app A+ / A++ controls also switch to a scrollable page. */
html[data-ui-size="115"],
html[data-ui-size="130"] { height:auto!important; overflow-y:auto!important; overflow-x:hidden!important; }
html[data-ui-size="115"] body,
html[data-ui-size="130"] body { height:auto!important; min-height:100%!important; overflow-y:auto!important; overflow-x:hidden!important; }
html[data-ui-size="115"] .app.ops-app.dashboard-page,
html[data-ui-size="115"] .app.ops-app.dashboard-page > main,
html[data-ui-size="115"] .content.ops-content.dashboard-content,
html[data-ui-size="130"] .app.ops-app.dashboard-page,
html[data-ui-size="130"] .app.ops-app.dashboard-page > main,
html[data-ui-size="130"] .content.ops-content.dashboard-content { height:auto!important; min-height:100vh!important; overflow:visible!important; }
html[data-ui-size="115"] .content.ops-content.dashboard-content,
html[data-ui-size="130"] .content.ops-content.dashboard-content { display:block!important; padding-bottom:24px!important; }
html[data-ui-size="115"] .v18-workspace,
html[data-ui-size="130"] .v18-workspace { height:auto!important; min-height:600px!important; overflow:visible!important; grid-template-columns:minmax(0,1fr)!important; }
html[data-ui-size="115"] .v202-rail,
html[data-ui-size="130"] .v202-rail { height:auto!important; min-height:0!important; overflow:visible!important; grid-template-columns:repeat(2,minmax(0,1fr))!important; grid-template-rows:auto!important; }
html[data-ui-size="115"] .v18-connections,
html[data-ui-size="130"] .v18-connections { overflow-y:auto!important; }
html[data-ui-size="115"] .v202-situation-scroll,
html[data-ui-size="130"] .v202-situation-scroll { max-height:min(58vh,620px)!important; overflow-y:auto!important; overscroll-behavior:contain; }
@media(max-width:900px) {
  html[data-ui-size="115"] .v202-rail,
  html[data-ui-size="130"] .v202-rail { grid-template-columns:minmax(0,1fr)!important; }
}


/* v0.23.8 – keep the lower watch panels reachable on short or zoomed screens. */
@media (min-width:1500px) and (min-height:820px) {
  .v18-workspace { overflow:visible!important; }
  .v202-rail { overflow-y:auto!important; overflow-x:hidden!important; scrollbar-gutter:stable; }
  .next30-panel { height:auto!important; max-height:210px!important; }
  .next30-list { max-height:166px!important; overflow-y:auto!important; overflow-x:hidden!important; }
  .horizon-row:nth-child(n+5) { display:grid!important; }
  .v18-connections { height:auto!important; max-height:230px!important; overflow:auto!important; }
  .v18-connections .connection-watch-list { max-height:176px!important; overflow-y:auto!important; overflow-x:hidden!important; }
}

.v18-connections .connection-watch-row.automatic{border-left:3px solid var(--amber);background:rgba(255,189,74,.045)}


/* v0.24.1 – readable adaptive control room.
   Text never shrinks to wallboard-only sizes. The dashboard changes density,
   hides secondary table columns on smaller monitors and scrolls inside panels. */
:root{
  --dc-xs:9px;
  --dc-sm:10px;
  --dc-md:12px;
  --dc-lg:16px;
}

.dashboard-page .v18-header{min-height:72px!important;height:auto!important;padding:6px 0!important}
.dashboard-page .v18-titleblock .ops-kicker{font-size:9px!important}
.dashboard-page .v18-titleline h1{font-size:30px!important}
.dashboard-page .v18-subline{font-size:10px!important;line-height:1.35!important}
.dashboard-page .v18-live-pill,.dashboard-page .v20-auto-pill{font-size:9px!important;min-height:26px!important}
.dashboard-page .v18-kpis{min-height:64px!important;height:auto!important}
.dashboard-page .v18-kpi{min-height:62px!important;padding:8px 12px!important}
.dashboard-page .v18-kpi span{font-size:9px!important}
.dashboard-page .v18-kpi small{font-size:9px!important}
.dashboard-page .v18-kpi b{font-size:27px!important}
.dashboard-page .v18-boardbar{height:48px!important;min-height:48px!important}
.dashboard-page .v18-board .board-tab{height:34px!important;font-size:10px!important;padding:0 11px!important}
.dashboard-page .v18-board .search-wrap{height:34px!important;font-size:11px!important}
.dashboard-page .v18-board .ops-search{font-size:11px!important}
.dashboard-page .v18-board .market-head.terminal-head{height:34px!important;min-height:34px!important;font-size:9px!important;padding:8px 9px!important}
.dashboard-page .v18-board .market-row{height:auto!important;min-height:62px!important;padding:8px 9px!important}
.dashboard-page .v18-board .market-status,.dashboard-page .v18-board .market-status b{font-size:9px!important}
.dashboard-page .v18-board .market-line .line-badge{min-width:42px!important;height:34px!important;font-size:14px!important}
.dashboard-page .v18-board .market-bus b,.dashboard-page .v18-board .market-dest b,.dashboard-page .v18-board .market-reg b,.dashboard-page .v18-board .market-gps b,.dashboard-page .v18-board .market-speed b{font-size:11px!important}
.dashboard-page .v18-board .market-bus small,.dashboard-page .v18-board .market-dest small,.dashboard-page .v18-board .market-reg small,.dashboard-page .v18-board .market-gps small,.dashboard-page .v18-board .market-speed small,.dashboard-page .v18-board .market-pax small{font-size:9px!important;line-height:1.2!important}
.dashboard-page .v18-board .market-dest b{font-size:12px!important}
.dashboard-page .v18-board .market-delay b,.dashboard-page .v18-board .market-reg.pred b,.dashboard-page .v18-board .market-pax b{font-size:12px!important}
.dashboard-page .v18-board .market-conn{min-height:28px!important;padding:4px 7px!important}
.dashboard-page .v18-board .market-conn b{font-size:9px!important}

.dashboard-page .v202-rail{
  grid-template-rows:auto auto auto minmax(220px,auto) minmax(320px,1fr) auto!important;
  gap:9px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-gutter:stable;
  align-content:start!important;
}
.dashboard-page .v18-rail-section{position:relative;container-type:inline-size;min-width:0!important}
.dashboard-page .v18-railhead{height:54px!important;min-height:54px!important;padding:9px 12px!important}
.dashboard-page .v18-railhead span{font-size:9px!important;line-height:1.15!important;letter-spacing:.12em!important}
.dashboard-page .v18-railhead h2{font-size:17px!important;line-height:1.1!important;margin-top:3px!important}
.dashboard-page .v18-railhead>small{font-size:9px!important;line-height:1.2!important;max-width:48%;text-align:right}
.dashboard-page .v18-count{min-width:30px!important;height:30px!important;font-size:11px!important}

.dashboard-page .v18-actions-panel{height:auto!important;max-height:300px!important;min-height:0!important}
.dashboard-page .v18-actions-panel.is-clear{height:112px!important;max-height:112px!important}
.dashboard-page .v18-actions-panel.is-clear .v18-railhead{height:54px!important;min-height:54px!important}
.dashboard-page .v18-actions-panel.is-clear .terminal-alerts{height:57px!important;min-height:57px!important;flex-basis:57px!important;padding:6px 9px!important}
.dashboard-page .v18-actions-panel.is-clear .ops-clear{height:45px!important;min-height:45px!important;padding:5px 8px!important}
.dashboard-page .v18-actions-panel .terminal-alerts{padding:8px!important;overflow:auto!important}
.dashboard-page .v18-actions-panel .alarm-body{padding:10px 11px!important}
.dashboard-page .v18-actions-panel .alarm-body h3{font-size:13px!important;line-height:1.25!important}
.dashboard-page .v18-actions-panel .alarm-body p{font-size:11px!important;line-height:1.4!important;-webkit-line-clamp:3!important}
.dashboard-page .v18-actions-panel .alarm-meta{font-size:9px!important}
.dashboard-page .v18-actions-panel .ops-action{font-size:10px!important;padding:6px 9px!important}

.dashboard-page .next30-panel{height:auto!important;min-height:124px!important;max-height:210px!important}
.dashboard-page .next30-panel .v18-railhead{height:54px!important;min-height:54px!important}
.dashboard-page .next30-list{display:grid!important;grid-template-columns:1fr!important;gap:6px!important;max-height:154px!important;padding:7px 8px!important;overflow:auto!important}
.dashboard-page .horizon-row{min-height:49px!important;height:auto!important;padding:7px 9px!important;margin:0!important}
.dashboard-page .horizon-row:nth-child(n){display:grid!important}
.dashboard-page .horizon-row b{font-size:10px!important}
.dashboard-page .horizon-destination{font-size:14px!important}
.dashboard-page .horizon-row small{font-size:9px!important;line-height:1.25!important}
.dashboard-page .horizon-row .horizon-value{font-size:12px!important}

.dashboard-page .v18-connections{height:auto!important;min-height:124px!important;max-height:230px!important;overflow:hidden!important}
.dashboard-page .v18-connections .v18-railhead{height:54px!important;min-height:54px!important}
.dashboard-page .v18-connections .connection-watch-list{display:grid!important;grid-template-columns:1fr!important;gap:6px!important;max-height:174px!important;padding:7px 8px!important;overflow:auto!important}
.dashboard-page .v18-connections .connection-watch-row{height:auto!important;min-height:46px!important;padding:7px 8px!important;grid-template-columns:minmax(0,1fr) 54px 46px!important;gap:7px!important}
.dashboard-page .v18-connections .connection-watch-row b{font-size:12px!important}
.dashboard-page .v18-connections .connection-watch-row small{font-size:9px!important;line-height:1.25!important;margin-top:3px!important}
.dashboard-page .v18-connections .connection-margin{font-size:11px!important}
.dashboard-page .v18-connections .conn-pill{height:25px!important;min-width:42px!important;font-size:9px!important}

/* Skiftöverlämningen is intentionally larger than the other watch panels. */
.dashboard-page .handover-panel{height:auto!important;min-height:230px!important;max-height:320px!important;display:flex!important;flex-direction:column!important;border-color:#28506a!important}
.dashboard-page .handover-panel .v18-railhead{height:60px!important;min-height:60px!important;background:linear-gradient(90deg,rgba(39,130,174,.15),#0a1520)!important}
.dashboard-page .handover-panel .v18-railhead h2{font-size:20px!important}
.dashboard-page .tl-log-list{flex:1!important;min-height:104px!important;padding:4px 11px!important;overflow:auto!important}
.dashboard-page .tl-log-row{grid-template-columns:44px minmax(0,1fr)!important;gap:9px!important;padding:8px 0!important}
.dashboard-page .tl-log-row time{font-size:10px!important}
.dashboard-page .tl-log-row b{display:inline-block;font-size:9px!important;margin:0 7px 2px 0!important}
.dashboard-page .tl-log-row span{font-size:12px!important;line-height:1.35!important}
.dashboard-page .tl-log-row small{font-size:9px!important;margin-top:3px!important}
.dashboard-page .tl-log-form{flex:0 0 48px!important;grid-template-columns:104px minmax(0,1fr) 62px!important;gap:6px!important;padding:7px 9px!important}
.dashboard-page .tl-log-form select,.dashboard-page .tl-log-form input,.dashboard-page .tl-log-form button{height:34px!important;font-size:11px!important}
.dashboard-page .tl-log-form button{padding:0 9px!important;font-size:10px!important}

.dashboard-page .v202-situation{height:auto!important;min-height:380px!important;overflow:hidden!important}
.dashboard-page .v202-situation>.v18-railhead{height:62px!important;min-height:62px!important;background:linear-gradient(90deg,rgba(54,151,188,.11),#0a1520)!important}
.dashboard-page .v202-situation>.v18-railhead h2{font-size:22px!important}
.dashboard-page .v202-situation-scroll{min-height:0!important;max-height:none!important;padding:0 10px 10px!important;overflow-y:auto!important;overflow-x:hidden!important}
.dashboard-page #situation-picture .v202-feed-group{padding:12px 0 13px!important}
.dashboard-page #situation-picture .road-events-group{padding:13px 10px 14px!important;margin:0 -2px;border-radius:8px;background:rgba(45,135,179,.055)}
.dashboard-page #situation-picture .road-events-group.attention{background:rgba(242,187,73,.075);box-shadow:inset 3px 0 0 var(--v18-amber)!important}
.dashboard-page #situation-picture .v202-feed-head{padding:0 2px 8px!important;align-items:flex-start!important}
.dashboard-page #situation-picture .v202-feed-head span{font-size:9px!important;line-height:1.2!important}
.dashboard-page #situation-picture .v202-feed-head b{font-size:14px!important;line-height:1.2!important;margin-top:4px!important}
.dashboard-page #situation-picture .v202-feed-head b strong{font-size:18px!important}
.dashboard-page #situation-picture .v202-feed-head small{font-size:10px!important;line-height:1.3!important;margin-top:3px!important;white-space:normal!important}
.dashboard-page #situation-picture .v202-feed-head small strong{font-size:11px!important}
.dashboard-page #situation-picture .v202-feed-head em{min-width:30px!important;height:24px!important;font-size:9px!important}
.dashboard-page #situation-picture .v202-feed-list{gap:7px!important;max-height:240px!important;overflow-y:auto!important;overflow-x:hidden!important;padding-right:2px!important}
.dashboard-page #situation-picture #tv-weather-list{grid-template-columns:repeat(2,minmax(0,1fr))!important;max-height:270px!important;gap:7px!important}
.dashboard-page #situation-picture #tv-weather-list .weather-station-card{height:auto!important;min-height:50px!important;padding:7px 9px!important;grid-template-columns:minmax(92px,1fr) 43px 43px 54px!important;gap:6px!important}
.dashboard-page #situation-picture #tv-weather-list .weather-station-card>div:first-child{display:block!important}
.dashboard-page #situation-picture #tv-weather-list .weather-station-card>div:first-child span{display:block!important;font-size:8px!important}
.dashboard-page #situation-picture #tv-weather-list .weather-station-card>div:first-child small{display:block!important;font-size:8px!important}
.dashboard-page #situation-picture #tv-weather-list .weather-station-card b{font-size:11px!important;line-height:1.2!important}
.dashboard-page #situation-picture #tv-weather-list .weather-values{grid-template-rows:auto auto!important}
.dashboard-page #situation-picture #tv-weather-list .weather-values strong{font-size:12px!important}
.dashboard-page #situation-picture #tv-weather-list .weather-values small{font-size:8px!important}
.dashboard-page #situation-picture .tv-traffic-item{min-height:58px!important;padding:9px 10px!important;grid-template-columns:9px minmax(0,1fr)!important;gap:9px!important}
.dashboard-page #situation-picture .tv-traffic-item strong{font-size:12px!important;line-height:1.25!important}
.dashboard-page #situation-picture .tv-traffic-item small{font-size:10px!important;line-height:1.3!important}
.dashboard-page #situation-picture .tv-traffic-item p{font-size:10px!important;line-height:1.4!important;margin-top:4px!important}
.dashboard-page #situation-picture .service-item{min-height:54px!important;padding:9px 8px!important}
.dashboard-page #situation-picture .service-item strong{font-size:12px!important}
.dashboard-page #situation-picture .service-item p{font-size:10px!important;line-height:1.35!important}
.dashboard-page #situation-picture .ops-clear.compact strong{font-size:11px!important}
.dashboard-page #situation-picture .ops-clear.compact span{font-size:9px!important}

/* New data is marked for a few seconds. It never flashes continuously. */
.panel-new-badge{position:absolute;z-index:8;right:10px;top:64px;display:none;align-items:center;min-height:24px;padding:0 8px;border:1px solid rgba(255,205,83,.75);border-radius:999px;background:#4a3409;color:#ffe39a;font-size:9px;font-weight:950;letter-spacing:.08em;box-shadow:0 4px 18px rgba(0,0,0,.35)}
.panel-new-badge.show{display:inline-flex;animation:dcBadge 1s ease-in-out 3}
.panel-new-danger .panel-new-badge{border-color:rgba(255,100,111,.85);background:#511820;color:#ffc2c6}
.panel-new-event{animation:dcPanelNew 1s ease-in-out 3}
.panel-new-danger{animation:dcPanelDanger 1s ease-in-out 3}
@keyframes dcPanelNew{0%,100%{border-color:var(--v18-line);box-shadow:none}45%{border-color:#f2bb49;box-shadow:0 0 0 2px rgba(242,187,73,.22),0 0 28px rgba(242,187,73,.16)}}
@keyframes dcPanelDanger{0%,100%{border-color:var(--v18-line);box-shadow:none}45%{border-color:#ef626b;box-shadow:0 0 0 2px rgba(239,98,107,.28),0 0 34px rgba(239,98,107,.2)}}
@keyframes dcBadge{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.06);opacity:.76}}
@media(prefers-reduced-motion:reduce){.panel-new-event,.panel-new-danger,.panel-new-badge.show{animation:none!important}.panel-new-event{border-color:#f2bb49!important}.panel-new-danger{border-color:#ef626b!important}}

/* Wide workstation: all operational columns stay visible. */
html[data-dashboard-fit="wide"] .dashboard-page .v18-workspace{grid-template-columns:minmax(0,1fr) clamp(480px,28vw,560px)!important}
html[data-dashboard-fit="wide"] .dashboard-page .market-head.terminal-head,
html[data-dashboard-fit="wide"] .dashboard-page .market-row{grid-template-columns:76px 52px minmax(135px,.9fr) minmax(170px,1.25fr) 58px 68px 76px minmax(105px,.7fr) 72px 46px 64px 28px!important;column-gap:6px!important}

/* Balanced and compact screens keep the important columns readable. GPS,
   passenger count and speed remain available in the vehicle detail drawer. */
html[data-dashboard-fit="balanced"] .dashboard-page .v18-workspace{grid-template-columns:minmax(0,1fr) 410px!important}
html[data-dashboard-fit="balanced"] .dashboard-page .market-head.terminal-head,
html[data-dashboard-fit="balanced"] .dashboard-page .market-row,
html[data-dashboard-fit="compact"] .dashboard-page .market-head.terminal-head,
html[data-dashboard-fit="compact"] .dashboard-page .market-row{grid-template-columns:70px 48px minmax(120px,.9fr) minmax(150px,1.2fr) 54px 62px 72px minmax(86px,.65fr) 28px!important;column-gap:6px!important}
html[data-dashboard-fit="balanced"] .dashboard-page .market-head.terminal-head>span:nth-child(9),
html[data-dashboard-fit="balanced"] .dashboard-page .market-head.terminal-head>span:nth-child(10),
html[data-dashboard-fit="balanced"] .dashboard-page .market-head.terminal-head>span:nth-child(11),
html[data-dashboard-fit="compact"] .dashboard-page .market-head.terminal-head>span:nth-child(9),
html[data-dashboard-fit="compact"] .dashboard-page .market-head.terminal-head>span:nth-child(10),
html[data-dashboard-fit="compact"] .dashboard-page .market-head.terminal-head>span:nth-child(11),
html[data-dashboard-fit="balanced"] .dashboard-page .market-gps,
html[data-dashboard-fit="balanced"] .dashboard-page .market-pax,
html[data-dashboard-fit="balanced"] .dashboard-page .market-speed,
html[data-dashboard-fit="compact"] .dashboard-page .market-gps,
html[data-dashboard-fit="compact"] .dashboard-page .market-pax,
html[data-dashboard-fit="compact"] .dashboard-page .market-speed{display:none!important}

html[data-dashboard-fit="compact"],html[data-dashboard-fit="narrow"]{height:auto!important;overflow-y:auto!important;overflow-x:hidden!important}
html[data-dashboard-fit="compact"] body,html[data-dashboard-fit="narrow"] body{height:auto!important;min-height:100%!important;overflow-y:auto!important;overflow-x:hidden!important}
html[data-dashboard-fit="compact"] .dashboard-page .content.ops-content.dashboard-content,
html[data-dashboard-fit="narrow"] .dashboard-page .content.ops-content.dashboard-content{height:auto!important;min-height:100vh!important;display:block!important;overflow:visible!important;padding-bottom:24px!important}
html[data-dashboard-fit="compact"] .dashboard-page .v18-workspace,
html[data-dashboard-fit="narrow"] .dashboard-page .v18-workspace{height:auto!important;min-height:600px!important;grid-template-columns:minmax(0,1fr)!important;overflow:visible!important}
html[data-dashboard-fit="compact"] .dashboard-page .v202-rail{height:auto!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:auto!important;overflow:visible!important;margin-top:10px}
html[data-dashboard-fit="compact"] .dashboard-page .handover-panel,
html[data-dashboard-fit="compact"] .dashboard-page .v202-situation{grid-column:1/-1}
html[data-dashboard-fit="compact"] .dashboard-page .v202-situation{min-height:560px!important}
html[data-dashboard-fit="compact"] .dashboard-page #situation-picture #tv-weather-list{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))!important}

html[data-dashboard-fit="narrow"] .dashboard-page .v202-rail{height:auto!important;grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto!important;overflow:visible!important;margin-top:10px}
html[data-dashboard-fit="narrow"] .dashboard-page .v18-headright{display:none!important}
html[data-dashboard-fit="narrow"] .dashboard-page .v18-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}
html[data-dashboard-fit="narrow"] .dashboard-page .market-head.terminal-head{display:none!important}
html[data-dashboard-fit="narrow"] .dashboard-page .market-row{display:grid!important;grid-template-columns:62px minmax(0,1fr) 72px 28px!important;grid-template-rows:auto auto auto!important;gap:5px 8px!important;min-height:104px!important}
html[data-dashboard-fit="narrow"] .dashboard-page .market-status{grid-column:1;grid-row:1}
html[data-dashboard-fit="narrow"] .dashboard-page .market-line{grid-column:1;grid-row:2/4}
html[data-dashboard-fit="narrow"] .dashboard-page .market-bus{grid-column:2;grid-row:1}
html[data-dashboard-fit="narrow"] .dashboard-page .market-dest{grid-column:2;grid-row:2}
html[data-dashboard-fit="narrow"] .dashboard-page .market-delay{grid-column:3;grid-row:1}
html[data-dashboard-fit="narrow"] .dashboard-page .market-connection{grid-column:2/4;grid-row:3}
html[data-dashboard-fit="narrow"] .dashboard-page .row-more{grid-column:4;grid-row:1/4;align-self:stretch;height:auto!important}
html[data-dashboard-fit="narrow"] .dashboard-page .market-reg,
html[data-dashboard-fit="narrow"] .dashboard-page .market-gps,
html[data-dashboard-fit="narrow"] .dashboard-page .market-pax,
html[data-dashboard-fit="narrow"] .dashboard-page .market-speed{display:none!important}
html[data-dashboard-fit="narrow"] .dashboard-page #situation-picture #tv-weather-list{grid-template-columns:1fr!important}

html[data-theme="light"] .dashboard-page .handover-panel .v18-railhead,
html[data-theme="light"] .dashboard-page .v202-situation>.v18-railhead{background:#eef7fb!important}
html[data-theme="light"] .dashboard-page #situation-picture .road-events-group{background:#f3f8fb}
html[data-theme="light"] .panel-new-badge{background:#fff4cc;color:#765000;box-shadow:0 4px 16px rgba(52,70,82,.18)}
html[data-theme="light"] .panel-new-danger .panel-new-badge{background:#ffe8ea;color:#8b2731}


/* v0.24.2 – use the empty horizontal space and let each workstation choose
   which operational panels are visible. Wide/balanced always keep the rail
   beside the traffic board, including with the in-app A+ and A++ zoom. */
.dashboard-page .v18-rail-section[hidden]{display:none!important}
.dashboard-page .panel-manager{position:sticky;top:0;z-index:55;flex:0 0 auto;min-width:0}
.dashboard-page .panel-manager-toggle{width:100%;height:34px;display:flex;align-items:center;gap:7px;padding:0 10px;border:1px solid #294459;border-radius:8px;background:#0b1b27;color:#b7cedb;font-size:10px;font-weight:850;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.16)}
.dashboard-page .panel-manager-toggle>span{font-size:14px;color:#62c7e9}
.dashboard-page .panel-manager-toggle>strong{margin-left:auto;min-width:35px;height:22px;display:grid;place-items:center;border-radius:999px;background:#153247;color:#9cdbf2;font-size:9px}
.dashboard-page .panel-manager-toggle:hover,.dashboard-page .panel-manager-toggle[aria-expanded="true"]{background:#10283a;border-color:#397395;color:#effaff}
.dashboard-page .panel-manager-menu{position:absolute;left:0;right:0;top:39px;z-index:80;padding:10px;border:1px solid #31536a;border-radius:9px;background:#0a1722;box-shadow:0 18px 45px rgba(0,0,0,.58)}
.dashboard-page .panel-manager-menu[hidden]{display:none!important}
.dashboard-page .panel-manager-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px;padding-bottom:7px;border-bottom:1px solid #1d3445}
.dashboard-page .panel-manager-title b{font-size:11px;color:#e6f2f7}
.dashboard-page .panel-manager-title button{height:25px;padding:0 8px;border:1px solid #2c5067;border-radius:6px;background:#102536;color:#9dccdf;font-size:9px;font-weight:800;cursor:pointer}
.dashboard-page .panel-manager-menu label{height:30px;display:flex;align-items:center;gap:8px;padding:0 6px;border-radius:6px;color:#c7d8e1;font-size:11px;cursor:pointer}
.dashboard-page .panel-manager-menu label:hover{background:#102433}
.dashboard-page .panel-manager-menu input{width:16px;height:16px;accent-color:#2aa4cf}
.dashboard-page .panel-manager-menu>small{display:block;margin-top:7px;padding:7px;border-radius:6px;background:#08121b;color:#7890a0;font-size:9px;line-height:1.35}

.dashboard-page .road-map-link{min-height:46px;display:grid;grid-template-columns:28px minmax(0,1fr);grid-template-rows:auto auto;align-items:center;column-gap:8px;margin:0 0 9px;padding:7px 9px;border:1px solid #2a5269;border-radius:7px;background:linear-gradient(90deg,rgba(48,153,196,.13),rgba(24,79,104,.08));color:#dff5ff;text-decoration:none}
.dashboard-page .road-map-link>span{grid-row:1/3;width:27px;height:27px;display:grid;place-items:center;border-radius:6px;background:#12364b;color:#61d0f4;font-size:14px}
.dashboard-page .road-map-link strong{font-size:10px;line-height:1.2}
.dashboard-page .road-map-link small{color:#83a2b3;font-size:8px;line-height:1.2}
.dashboard-page .road-map-link:hover{border-color:#47a4c9;background:rgba(48,153,196,.18)}
.dashboard-page .tv-event-kind{display:inline-flex!important;width:max-content;margin:0 0 3px!important;padding:2px 5px;border-radius:999px;background:#173449;color:#83cce7!important;font-size:7px!important;line-height:1!important;letter-spacing:.08em!important}
.dashboard-page .tv-traffic-item.roadwork{border-left:3px solid #f0b949!important}
.dashboard-page .tv-traffic-item.roadwork .tv-event-kind{background:#403211;color:#f5d37d!important}

html[data-dashboard-fit="wide"],html[data-dashboard-fit="balanced"]{height:100%!important;overflow:hidden!important}
html[data-dashboard-fit="wide"] body.dashboard-page,html[data-dashboard-fit="balanced"] body.dashboard-page{height:100%!important;min-height:0!important;overflow:hidden!important}
html[data-dashboard-fit="wide"][data-ui-size="115"] body.dashboard-page,html[data-dashboard-fit="balanced"][data-ui-size="115"] body.dashboard-page{height:86.9566vh!important}
html[data-dashboard-fit="wide"][data-ui-size="130"] body.dashboard-page,html[data-dashboard-fit="balanced"][data-ui-size="130"] body.dashboard-page{height:76.9231vh!important}
html[data-dashboard-fit="wide"] .app.ops-app.dashboard-page,html[data-dashboard-fit="wide"] .app.ops-app.dashboard-page>main,html[data-dashboard-fit="balanced"] .app.ops-app.dashboard-page,html[data-dashboard-fit="balanced"] .app.ops-app.dashboard-page>main{height:100%!important;min-height:0!important;overflow:hidden!important}
html[data-dashboard-fit="wide"] .sidebar.ops-sidebar,html[data-dashboard-fit="balanced"] .sidebar.ops-sidebar{height:100%!important;min-height:0!important;overflow-y:auto!important}
html[data-dashboard-fit="wide"] .content.ops-content.dashboard-content,html[data-dashboard-fit="balanced"] .content.ops-content.dashboard-content{height:100%!important;min-height:0!important;display:grid!important;grid-template-rows:auto auto minmax(0,1fr)!important;gap:8px!important;overflow:hidden!important;padding:11px 15px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-header,html[data-dashboard-fit="balanced"] .dashboard-page .v18-header,html[data-dashboard-fit="wide"] .dashboard-page .v18-kpis,html[data-dashboard-fit="balanced"] .dashboard-page .v18-kpis{margin:0!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-workspace,html[data-dashboard-fit="balanced"] .dashboard-page .v18-workspace{height:auto!important;min-height:0!important;overflow:hidden!important;margin:0!important;gap:9px!important}

html[data-dashboard-fit="wide"] .dashboard-page .v18-workspace{grid-template-columns:minmax(0,1fr) clamp(430px,25vw,500px)!important}
html[data-dashboard-fit="wide"] .dashboard-page .market-head.terminal-head,
html[data-dashboard-fit="wide"] .dashboard-page .market-row{grid-template-columns:68px 46px minmax(120px,.76fr) minmax(155px,1fr) 52px 58px 68px minmax(88px,.56fr) 64px 40px 54px 28px!important;column-gap:5px!important}
html[data-dashboard-fit="balanced"] .dashboard-page .v18-workspace{grid-template-columns:minmax(0,1fr) 390px!important}
html[data-dashboard-fit="balanced"] .dashboard-page .market-head.terminal-head,
html[data-dashboard-fit="balanced"] .dashboard-page .market-row{grid-template-columns:64px 44px minmax(110px,.8fr) minmax(135px,1fr) 50px 56px 64px minmax(78px,.55fr) 26px!important;column-gap:5px!important}

html[data-dashboard-fit="wide"] .dashboard-page .v202-rail,html[data-dashboard-fit="balanced"] .dashboard-page .v202-rail{height:100%!important;min-height:0!important;display:flex!important;flex-direction:column!important;align-content:initial!important;gap:7px!important;overflow-y:auto!important;overflow-x:hidden!important;margin:0!important;scrollbar-gutter:stable}
html[data-dashboard-fit="wide"] .dashboard-page .v202-rail>.v18-rail-section,html[data-dashboard-fit="balanced"] .dashboard-page .v202-rail>.v18-rail-section{flex:0 0 auto}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel,html[data-dashboard-fit="balanced"] .dashboard-page .v18-actions-panel{max-height:260px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel.is-clear,html[data-dashboard-fit="balanced"] .dashboard-page .v18-actions-panel.is-clear{height:102px!important;max-height:102px!important}
html[data-dashboard-fit="wide"] .dashboard-page .next30-panel,html[data-dashboard-fit="balanced"] .dashboard-page .next30-panel{min-height:108px!important;max-height:180px!important}
html[data-dashboard-fit="wide"] .dashboard-page .next30-panel:has(.ops-clear),html[data-dashboard-fit="balanced"] .dashboard-page .next30-panel:has(.ops-clear){min-height:94px!important;max-height:94px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-connections,html[data-dashboard-fit="balanced"] .dashboard-page .v18-connections{min-height:108px!important;max-height:190px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-connections:has(.ops-clear),html[data-dashboard-fit="balanced"] .dashboard-page .v18-connections:has(.ops-clear){min-height:94px!important;max-height:94px!important}
html[data-dashboard-fit="wide"] .dashboard-page .handover-panel,html[data-dashboard-fit="balanced"] .dashboard-page .handover-panel{min-height:205px!important;max-height:270px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v202-situation,html[data-dashboard-fit="balanced"] .dashboard-page .v202-situation{flex:1 0 350px!important;min-height:350px!important;max-height:none!important}
html[data-dashboard-fit="wide"] .dashboard-page .v202-situation-scroll,html[data-dashboard-fit="balanced"] .dashboard-page .v202-situation-scroll{max-height:none!important;overflow-y:auto!important}

html[data-dashboard-panels="hidden"][data-dashboard-fit="wide"] .dashboard-page .v18-workspace,html[data-dashboard-panels="hidden"][data-dashboard-fit="balanced"] .dashboard-page .v18-workspace{grid-template-columns:minmax(0,1fr) 185px!important}
html[data-dashboard-fit="compact"] .dashboard-page .panel-manager,html[data-dashboard-fit="narrow"] .dashboard-page .panel-manager{grid-column:1/-1}

html[data-theme="light"] .dashboard-page .panel-manager-toggle{background:#f5f9fb;border-color:#b8ccd8;color:#345766;box-shadow:0 4px 12px rgba(46,72,86,.12)}
html[data-theme="light"] .dashboard-page .panel-manager-toggle>strong{background:#dcecf4;color:#24607a}
html[data-theme="light"] .dashboard-page .panel-manager-menu{background:#fff;border-color:#b9ced9;box-shadow:0 18px 45px rgba(42,66,78,.22)}
html[data-theme="light"] .dashboard-page .panel-manager-title{border-color:#d7e2e7}
html[data-theme="light"] .dashboard-page .panel-manager-title b{color:#18323e}
html[data-theme="light"] .dashboard-page .panel-manager-menu label{color:#2b4653}
html[data-theme="light"] .dashboard-page .panel-manager-menu label:hover{background:#edf5f8}
html[data-theme="light"] .dashboard-page .panel-manager-menu>small{background:#f1f6f8;color:#617986}
html[data-theme="light"] .dashboard-page .road-map-link{background:#eef8fc;border-color:#b9d7e4;color:#17435a}
html[data-theme="light"] .dashboard-page .road-map-link small{color:#5f7a88}
html[data-theme="light"] .dashboard-page .tv-event-kind{background:#dceef6;color:#286178!important}


/* v0.24.3 – pack the traffic table horizontally.
   Flexible columns previously absorbed all spare width, which made the visual
   distance between DESTINATION and PLAN unnecessarily large. Track widths are
   now capped: they may shrink when needed but no longer stretch indefinitely. */
html[data-dashboard-fit="wide"] .dashboard-page .market-head.terminal-head,
html[data-dashboard-fit="wide"] .dashboard-page .market-row{
  grid-template-columns:
    68px 46px minmax(120px,170px) minmax(180px,300px)
    52px 58px 68px minmax(88px,150px) 64px 40px 54px 28px!important;
  column-gap:3px!important;
  justify-content:start!important;
}
html[data-dashboard-fit="balanced"] .dashboard-page .market-head.terminal-head,
html[data-dashboard-fit="balanced"] .dashboard-page .market-row,
html[data-dashboard-fit="compact"] .dashboard-page .market-head.terminal-head,
html[data-dashboard-fit="compact"] .dashboard-page .market-row{
  grid-template-columns:
    60px 42px minmax(105px,145px) minmax(150px,260px)
    50px 56px 64px minmax(78px,120px) 26px!important;
  column-gap:3px!important;
  justify-content:start!important;
}
.dashboard-page .v18-board .market-head.terminal-head,
.dashboard-page .v18-board .market-row{
  padding-left:6px!important;
  padding-right:6px!important;
}

/* v0.24.4 – den tomma centralytan blir operativ arbetsyta och högerspalten
   packas tätare. Snabböversikten visas bara när högst sex fordon syns i
   aktuell listfiltrering, så den tar aldrig plats från en full trafiklista. */
.dashboard-page .board-overview{
  display:none;
  min-height:0;
  padding:10px;
  border-top:1px solid #173042;
  background:
    radial-gradient(circle at 18% 10%,rgba(47,144,181,.08),transparent 33%),
    linear-gradient(180deg,#081722,#07131d);
  overflow:auto;
}
html[data-dashboard-fit="wide"] .dashboard-page .v18-board.overview-active .board-overview{
  display:flex;
  flex:1 1 auto;
  flex-direction:column;
}
html[data-dashboard-fit="wide"] .dashboard-page .v18-board.overview-active .market-board.terminal-market{
  flex:0 0 auto!important;
  min-height:0!important;
  max-height:46%!important;
  overflow:auto!important;
}
html[data-dashboard-fit="wide"] .dashboard-page .v18-board.overview-active .market-board.terminal-market[data-visible-count="0"]{
  height:0!important;
  min-height:0!important;
  padding:0!important;
  border:0!important;
  overflow:hidden!important;
}
.dashboard-page .board-overview-head{
  min-height:44px;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  padding:2px 2px 9px;
}
.dashboard-page .board-overview-head span,
.dashboard-page .overview-card-head span,
.dashboard-page .overview-metric>span{
  display:block;
  color:#5d8da6;
  font-size:7px;
  line-height:1;
  font-weight:900;
  letter-spacing:.16em;
}
.dashboard-page .board-overview-head h2{
  margin:4px 0 0;
  color:#e8f4fa;
  font-size:17px;
  line-height:1.05;
}
.dashboard-page .board-overview-head>small{
  color:#6e8798;
  font-size:8px;
  padding-top:5px;
  white-space:nowrap;
}
.dashboard-page .board-overview-grid{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  grid-template-rows:auto minmax(0,1fr);
  gap:8px;
  flex:1 1 auto;
  min-height:0;
}
.dashboard-page .overview-metric{
  grid-column:span 3;
  min-width:0;
  min-height:68px;
  display:grid;
  grid-template-columns:auto 1fr;
  grid-template-rows:auto auto;
  align-items:center;
  column-gap:10px;
  padding:9px 11px;
  border:1px solid #18384b;
  border-radius:8px;
  background:#0a1c28;
  color:#dceaf2;
  text-align:left;
  box-shadow:none;
}
.dashboard-page button.overview-metric{cursor:pointer}
.dashboard-page button.overview-metric:hover{border-color:#2b6682;background:#0d2331}
.dashboard-page .overview-metric>span{grid-column:1/-1}
.dashboard-page .overview-metric>strong{
  grid-column:1;
  grid-row:2;
  font-size:25px;
  line-height:1;
  color:#edf8fd;
  font-variant-numeric:tabular-nums;
}
.dashboard-page .overview-metric>small{
  grid-column:2;
  grid-row:2;
  min-width:0;
  color:#7893a4;
  font-size:8px;
  line-height:1.2;
}
.dashboard-page .overview-metric.attention{border-color:rgba(242,187,73,.45);background:rgba(242,187,73,.065)}
.dashboard-page .overview-metric.attention>strong{color:#ffd16b}
.dashboard-page .overview-card{
  min-width:0;
  min-height:0;
  display:flex;
  flex-direction:column;
  border:1px solid #173346;
  border-radius:9px;
  background:#091923;
  overflow:hidden;
}
.dashboard-page .overview-unassigned-card{grid-column:span 5}
.dashboard-page .overview-risk-card{grid-column:span 4}
.dashboard-page .overview-road-card{grid-column:span 3}
.dashboard-page .overview-card-head{
  min-height:47px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:7px 9px;
  border-bottom:1px solid #173346;
  background:#0a1a25;
}
.dashboard-page .overview-card-head h3{margin:4px 0 0;color:#e5f1f7;font-size:12px;line-height:1.05}
.dashboard-page .overview-card-head button{
  flex:0 0 auto;
  height:26px;
  padding:0 8px;
  border:1px solid #24485e;
  border-radius:6px;
  background:#0c2634;
  color:#9acfe3;
  font-size:7px;
  font-weight:850;
  cursor:pointer;
}
.dashboard-page .overview-card-head button:hover{background:#113348;color:#d7f5ff}
.dashboard-page .overview-list{
  min-height:0;
  overflow:auto;
  padding:5px;
}
.dashboard-page .overview-list-row{
  width:100%;
  min-height:38px;
  display:grid;
  grid-template-columns:minmax(90px,.8fr) minmax(0,1.3fr) auto;
  align-items:center;
  gap:7px;
  padding:5px 7px;
  margin:0 0 4px;
  border:1px solid #163142;
  border-radius:6px;
  background:#081621;
  color:#dbeaf2;
  text-align:left;
  cursor:pointer;
}
.dashboard-page .overview-list-row:hover{border-color:#29617c;background:#0b2130}
.dashboard-page .overview-list-row b{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-page .overview-list-row span{font-size:9px;color:#acc2cf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-page .overview-list-row small{font-size:7px;color:#71899a;white-space:nowrap}
.dashboard-page .overview-list-more{
  width:100%;height:27px;border:1px dashed #25485c;border-radius:6px;background:transparent;color:#79aec4;font-size:8px;cursor:pointer
}
.dashboard-page .overview-empty{padding:12px 10px;color:#7790a0;font-size:9px;line-height:1.35}
.dashboard-page .overview-empty.ok{color:#62cfa8}
.dashboard-page .overview-risk-row{
  min-height:48px;
  display:grid;
  grid-template-columns:74px minmax(0,1fr);
  gap:8px;
  align-items:center;
  padding:7px 8px;
  margin-bottom:5px;
  border:1px solid #173244;
  border-left-width:3px;
  border-radius:6px;
  background:#081722;
}
.dashboard-page .overview-risk-row>span{font-size:7px;font-weight:950;letter-spacing:.08em;color:#8ba6b6}
.dashboard-page .overview-risk-row b{display:block;color:#e0edf4;font-size:9px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-page .overview-risk-row small{display:block;margin-top:2px;color:#7690a1;font-size:7px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-page .overview-risk-row.warn{border-left-color:#efb949}
.dashboard-page .overview-risk-row.danger{border-left-color:#ef626b;background:rgba(239,98,107,.055)}
.dashboard-page .overview-road-stats{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:5px;
  padding:6px;
}
.dashboard-page .overview-road-stats>div{
  min-height:50px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:6px 7px;
  border:1px solid #173446;
  border-radius:6px;
  background:#081721;
}
.dashboard-page .overview-road-stats strong{font-size:18px;color:#e8f4fa;line-height:1}
.dashboard-page .overview-road-stats span{margin-top:4px;color:#7992a2;font-size:7px;line-height:1.1}
.dashboard-page .overview-handover{
  margin:0 6px 6px;
  padding:8px;
  border:1px solid #1b3c50;
  border-left:3px solid #2788ad;
  border-radius:6px;
  background:#091b27;
  overflow:hidden;
}
.dashboard-page .overview-handover span{display:block;color:#5e94ad;font-size:7px;font-weight:900;letter-spacing:.1em}
.dashboard-page .overview-handover b{display:block;margin-top:4px;color:#dcebf3;font-size:9px}
.dashboard-page .overview-handover small{display:block;margin-top:3px;color:#7b94a4;font-size:8px;line-height:1.25;max-height:32px;overflow:hidden}

/* Bred trafikledningsskärm: ge högerspalten lite mer bredd men använd den
   effektivare genom att lägga följdförseningar och anslutningar sida vid sida. */
html[data-dashboard-fit="wide"] .dashboard-page .v18-workspace{
  grid-template-columns:minmax(0,1fr) clamp(620px,31vw,760px)!important;
  gap:8px!important;
}
html[data-dashboard-fit="wide"] .dashboard-page .v202-rail{
  height:100%!important;
  min-height:0!important;
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-auto-rows:max-content!important;
  align-content:start!important;
  gap:6px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-gutter:stable;
}
html[data-dashboard-fit="wide"] .dashboard-page .v202-rail>.panel-manager,
html[data-dashboard-fit="wide"] .dashboard-page .v202-rail>#action-queue,
html[data-dashboard-fit="wide"] .dashboard-page .v202-rail>#tl-log,
html[data-dashboard-fit="wide"] .dashboard-page .v202-rail>#situation-picture,
html[data-dashboard-fit="wide"] .dashboard-page .v202-rail>.dashboard-admin-tools{grid-column:1/-1!important}
html[data-dashboard-fit="wide"] .dashboard-page .v202-rail>#next30-panel{grid-column:1!important}
html[data-dashboard-fit="wide"] .dashboard-page .v202-rail>#connections-watch{grid-column:2!important}
html[data-dashboard-fit="wide"] .dashboard-page .v202-rail>.v18-rail-section{flex:none!important;min-width:0!important}

/* Vertikal komprimering utan att göra texten mikroskopisk. */
html[data-dashboard-fit="wide"] .dashboard-page .v18-railhead{
  height:42px!important;
  min-height:42px!important;
  padding:5px 9px!important;
}
html[data-dashboard-fit="wide"] .dashboard-page .v18-railhead span{font-size:7px!important;line-height:1!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-railhead h2{font-size:16px!important;line-height:1!important;margin-top:3px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-railhead>small{font-size:7px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel{min-height:0!important;max-height:208px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel.is-clear{height:80px!important;max-height:80px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel.is-clear .terminal-alerts{height:37px!important;min-height:37px!important;flex-basis:37px!important;padding:3px 7px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel .terminal-alerts{max-height:164px!important;padding:4px 6px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel .ops-alert-card{margin-bottom:4px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel .alarm-body{padding:7px 9px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel .alarm-body h3{font-size:11px!important;line-height:1.15!important;margin:2px 0!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel .alarm-body p{font-size:8px!important;line-height:1.25!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel .alarm-meta{font-size:7px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-actions-panel .ops-action{font-size:8px!important;padding:5px 7px!important}
html[data-dashboard-fit="wide"] .dashboard-page .next30-panel,
html[data-dashboard-fit="wide"] .dashboard-page .v18-connections{height:126px!important;min-height:126px!important;max-height:126px!important}
html[data-dashboard-fit="wide"] .dashboard-page .next30-list,
html[data-dashboard-fit="wide"] .dashboard-page .v18-connections .connection-watch-list{max-height:83px!important;overflow:auto!important;padding:4px 5px!important}
html[data-dashboard-fit="wide"] .dashboard-page .next30-list{display:block!important}
html[data-dashboard-fit="wide"] .dashboard-page .horizon-row{min-height:34px!important;padding:4px 6px!important;margin:0 0 3px!important}
html[data-dashboard-fit="wide"] .dashboard-page .horizon-destination{font-size:10px!important}
html[data-dashboard-fit="wide"] .dashboard-page .horizon-row b{font-size:8px!important}
html[data-dashboard-fit="wide"] .dashboard-page .horizon-row small{font-size:6.5px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v18-connections .connection-watch-row{min-height:34px!important;padding:4px 6px!important;margin-bottom:3px!important}
html[data-dashboard-fit="wide"] .dashboard-page .handover-panel{height:150px!important;min-height:150px!important;max-height:150px!important}
html[data-dashboard-fit="wide"] .dashboard-page .tl-log-list{padding:2px 7px!important}
html[data-dashboard-fit="wide"] .dashboard-page .tl-log-row{grid-template-columns:34px minmax(0,1fr)!important;padding:4px 0!important}
html[data-dashboard-fit="wide"] .dashboard-page .tl-log-row span{font-size:8px!important}
html[data-dashboard-fit="wide"] .dashboard-page .tl-log-form{grid-template-columns:78px minmax(0,1fr) 44px!important;padding:4px 6px!important}
html[data-dashboard-fit="wide"] .dashboard-page .tl-log-form select,
html[data-dashboard-fit="wide"] .dashboard-page .tl-log-form input,
html[data-dashboard-fit="wide"] .dashboard-page .tl-log-form button{height:26px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v202-situation{height:auto!important;min-height:300px!important;max-height:none!important}
html[data-dashboard-fit="wide"] .dashboard-page .v202-situation>.v18-railhead{height:46px!important;min-height:46px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v202-situation>.v18-railhead h2{font-size:17px!important}
html[data-dashboard-fit="wide"] .dashboard-page .v202-situation-scroll{padding:0 8px 8px!important}
html[data-dashboard-fit="wide"] .dashboard-page #situation-picture .v202-feed-group{padding:7px 0 8px!important}
html[data-dashboard-fit="wide"] .dashboard-page #situation-picture .road-events-group{padding:8px 8px 9px!important}
html[data-dashboard-fit="wide"] .dashboard-page #situation-picture .v202-feed-head{padding-bottom:5px!important}
html[data-dashboard-fit="wide"] .dashboard-page #situation-picture .v202-feed-head b{font-size:12px!important;margin-top:2px!important}
html[data-dashboard-fit="wide"] .dashboard-page #situation-picture .v202-feed-head small{font-size:8px!important;margin-top:2px!important}
html[data-dashboard-fit="wide"] .dashboard-page #situation-picture .road-map-link{min-height:43px!important;padding:6px 8px!important}
html[data-dashboard-fit="wide"] .dashboard-page #situation-picture #tv-weather-list{gap:4px 6px!important;max-height:226px!important}
html[data-dashboard-fit="wide"] .dashboard-page #situation-picture #tv-weather-list .weather-station-card{min-height:43px!important;padding:5px 7px!important}
html[data-dashboard-fit="wide"] .dashboard-page #situation-picture .tv-traffic-item{min-height:48px!important;padding:6px 8px!important}
html[data-dashboard-fit="wide"] .dashboard-page #situation-picture .service-item{min-height:46px!important;padding:6px 7px!important}

/* Om användaren döljer alla rutor ska högerspalten fortfarande bara bli en
   smal kontrollkant, precis som tidigare. */
html[data-dashboard-panels="hidden"][data-dashboard-fit="wide"] .dashboard-page .v18-workspace{
  grid-template-columns:minmax(0,1fr) 185px!important;
}

/* Light theme for the new central working surface. */
html[data-theme="light"] .dashboard-page .board-overview{background:linear-gradient(180deg,#f4f8fa,#eef4f7);border-color:#c7d9e2}
html[data-theme="light"] .dashboard-page .board-overview-head h2,
html[data-theme="light"] .dashboard-page .overview-metric>strong,
html[data-theme="light"] .dashboard-page .overview-card-head h3,
html[data-theme="light"] .dashboard-page .overview-list-row,
html[data-theme="light"] .dashboard-page .overview-risk-row b,
html[data-theme="light"] .dashboard-page .overview-road-stats strong,
html[data-theme="light"] .dashboard-page .overview-handover b{color:#173746}
html[data-theme="light"] .dashboard-page .overview-metric,
html[data-theme="light"] .dashboard-page .overview-card,
html[data-theme="light"] .dashboard-page .overview-card-head,
html[data-theme="light"] .dashboard-page .overview-list-row,
html[data-theme="light"] .dashboard-page .overview-risk-row,
html[data-theme="light"] .dashboard-page .overview-road-stats>div,
html[data-theme="light"] .dashboard-page .overview-handover{background:#fff;border-color:#c6d9e2}

@media(max-height:760px){
  html[data-dashboard-fit="wide"] .dashboard-page .v18-board.overview-active .board-overview{display:none!important}
  html[data-dashboard-fit="wide"] .dashboard-page .v18-board.overview-active .market-board.terminal-market{flex:1 1 auto!important;max-height:none!important}
}


/* v0.24.5 – operativa rutor sprids över ledig centralyta, blir fällbara och
   larmljudet får tydlig på/av-kontroll, volym och testfunktion. */
.dashboard-page .ops-panel-stage{display:none;min-height:0;gap:8px;padding:8px;background:#06111a;overflow:auto}
html[data-dashboard-lowtraffic="1"] .dashboard-page .v18-workspace{grid-template-columns:minmax(0,1fr) 286px!important;gap:8px!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:max-content;align-content:start;flex:1 1 auto;min-height:0}
html[data-dashboard-lowtraffic="1"] .dashboard-page .board-overview{display:none!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#action-queue{grid-column:span 2}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#next30-panel{grid-column:span 1}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#connections-watch{grid-column:span 1}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#tl-log{grid-column:span 2}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#situation-picture{grid-column:1/-1}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>.v18-rail-section{width:auto!important;max-width:none!important;min-width:0!important;height:auto!important;max-height:none!important;min-height:0!important;overflow:hidden!important;flex:none!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>.v18-rail-section:not(.is-collapsed){min-height:118px!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#action-queue:not(.is-collapsed){max-height:285px!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#next30-panel:not(.is-collapsed),html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#connections-watch:not(.is-collapsed){min-height:155px!important;max-height:250px!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#tl-log:not(.is-collapsed){min-height:180px!important;max-height:260px!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#situation-picture:not(.is-collapsed){min-height:310px!important;max-height:520px!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#situation-picture:not(.is-collapsed) .v202-situation-scroll{max-height:455px!important;overflow:auto!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .v202-rail{display:flex!important;flex-direction:column!important;gap:8px!important;overflow:visible!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .v18-board.no-visible-vehicles .market-head.terminal-head,html[data-dashboard-lowtraffic="1"] .dashboard-page .v18-board.no-visible-vehicles .market-board.terminal-market{display:none!important}

.dashboard-page .v18-rail-section>.v18-railhead.panel-drop-head{position:relative;cursor:pointer;padding-right:42px!important;user-select:none}
.dashboard-page .v18-rail-section>.v18-railhead.panel-drop-head:hover{background:#0d1d2a}
.dashboard-page .panel-drop-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:27px;height:27px;display:grid;place-items:center;border:1px solid #24475d;border-radius:7px;background:#0b1b27;color:#9bcce0;font-size:16px;line-height:1;cursor:pointer}
.dashboard-page .panel-drop-toggle:hover{border-color:#3b7798;background:#123047;color:#e8f8ff}
.dashboard-page .v18-rail-section.is-collapsed{height:45px!important;min-height:45px!important;max-height:45px!important;overflow:hidden!important;flex:none!important}
.dashboard-page .v18-rail-section.is-collapsed>.v18-railhead{height:44px!important;min-height:44px!important;border-bottom:0!important}
.dashboard-page .v18-rail-section.is-collapsed>:not(.v18-railhead):not(.panel-new-badge){display:none!important}
.dashboard-page .v18-rail-section.is-collapsed.content-overflowing:after{display:none!important}
.dashboard-page .v18-rail-section.panel-new-danger{z-index:7;box-shadow:0 0 0 2px rgba(239,82,96,.8),0 0 34px rgba(239,82,96,.28)!important}
.dashboard-page .v18-rail-section.panel-new-event{z-index:6;box-shadow:0 0 0 2px rgba(242,188,59,.65),0 0 28px rgba(242,188,59,.18)!important}

.dashboard-page .panel-controlbar{position:relative!important;display:grid!important;grid-template-columns:1fr!important;gap:7px!important;padding:7px!important;border:1px solid #18364a!important;border-radius:8px!important;background:#081721!important;overflow:visible!important;z-index:20!important}
.dashboard-page .panel-collapse-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}
.dashboard-page .panel-manager-toggle.compact{min-width:88px}
.dashboard-page .alarm-sound-controls{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:7px;align-items:center;padding-top:7px;border-top:1px solid #163247}
.dashboard-page .sound-toggle,.dashboard-page .sound-test{height:31px;border:1px solid #29536b;border-radius:7px;background:#0d2635;color:#cbe7f3;font-size:9px;font-weight:900;cursor:pointer;padding:0 9px;white-space:nowrap}
.dashboard-page .sound-toggle.active{border-color:#2a8065;background:#0d3028;color:#74edbd}
.dashboard-page .sound-test:hover,.dashboard-page .sound-toggle:hover{filter:brightness(1.14)}
.dashboard-page .sound-volume{min-width:0;display:grid;grid-template-columns:auto minmax(64px,1fr) 33px;gap:6px;align-items:center;color:#7290a1;font-size:8px;font-weight:800}
.dashboard-page .sound-volume input{width:100%;accent-color:#3bb5de;cursor:pointer}.dashboard-page .sound-volume input:disabled{opacity:.35;cursor:not-allowed}.dashboard-page .sound-volume output{color:#b9d4df;font-size:8px;text-align:right}

html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage .v18-railhead{height:49px!important;min-height:49px!important;padding:7px 10px!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage .v18-railhead h2{font-size:15px!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage .v18-railhead span{font-size:7px!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage .v18-actions-panel .terminal-alerts{max-height:232px!important;overflow:auto!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage .v18-actions-panel .alarm-body h3{font-size:12px!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage .v18-actions-panel .alarm-body p{font-size:9px!important;-webkit-line-clamp:3!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage .next30-list,html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage .connection-watch-list{max-height:195px!important;overflow:auto!important}
html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage .tl-log-list{max-height:150px!important;overflow:auto!important}
html[data-theme="light"] .dashboard-page .panel-controlbar{background:#f4f9fb!important;border-color:#c6d9e2!important}
html[data-theme="light"] .dashboard-page .sound-toggle,html[data-theme="light"] .dashboard-page .sound-test,html[data-theme="light"] .dashboard-page .panel-drop-toggle{background:#edf5f8;color:#31596b;border-color:#b8d1dd}
html[data-theme="light"] .dashboard-page .sound-toggle.active{background:#e0f5ec;color:#176347;border-color:#94cdb7}
@media(max-width:1650px){html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage{grid-template-columns:repeat(2,minmax(0,1fr))}html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#action-queue,html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#tl-log,html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#situation-picture{grid-column:1/-1}html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#next30-panel,html[data-dashboard-lowtraffic="1"] .dashboard-page .ops-panel-stage>#connections-watch{grid-column:span 1}}
@media(max-width:1320px){.dashboard-page .ops-panel-stage{display:none!important}}
/* Ge panelerna huvudytan även när 1–6 bussar visas; bussraderna ligger kompakt överst. */
html[data-dashboard-lowtraffic="1"] .dashboard-page .v18-board:not(.no-visible-vehicles) .market-board.terminal-market{
  flex:0 0 auto!important;
  min-height:0!important;
  max-height:42%!important;
  overflow:auto!important;
}
html[data-dashboard-lowtraffic="1"] .dashboard-page .v18-board:not(.no-visible-vehicles) .ops-panel-stage{flex:1 1 auto!important}

/* v0.24.6 – kontrollrumsöversikt utan fällning eller intern scroll.
   Ledig yta under busslistan används som en sammanhängande operativ vägg. */
.dashboard-page .panel-drop-toggle{display:none!important}
.dashboard-page .v18-rail-section.is-collapsed{height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}
.dashboard-page .v18-rail-section.is-collapsed>.v18-railhead{height:auto!important;min-height:0!important;border-bottom:1px solid var(--v18-line)!important}
.dashboard-page .v18-rail-section.is-collapsed>:not(.v18-railhead):not(.panel-new-badge){display:block!important}
.dashboard-page .panel-collapse-tools{display:block!important}
.dashboard-page .panel-manager-toggle.compact{width:100%!important;min-width:0!important}
.dashboard-page .panel-manager-menu>small{line-height:1.35!important}

/* När det finns fysisk plats: behåll bussarna överst och använd resten som wallboard. */
html[data-dashboard-wall="1"] .dashboard-page .v18-workspace{grid-template-columns:minmax(0,1fr) 300px!important;gap:8px!important}
html[data-dashboard-wall="1"] .dashboard-page .board-overview{display:none!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  grid-auto-flow:row!important;
  grid-auto-rows:max-content!important;
  gap:7px!important;
  align-content:start!important;
  flex:1 1 auto!important;
  min-height:0!important;
  padding:7px!important;
  overflow:hidden!important;
  background:#06111a!important;
}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue{grid-column:1/-1!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#next30-panel{grid-column:span 1!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#connections-watch{grid-column:span 1!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log{grid-column:span 2!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{grid-column:1/-1!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>.v18-rail-section{
  width:auto!important;max-width:none!important;min-width:0!important;
  height:auto!important;min-height:0!important;max-height:none!important;
  overflow:visible!important;flex:none!important;
}
html[data-dashboard-wall="1"] .dashboard-page .v18-board:not(.no-visible-vehicles) .market-board.terminal-market{
  flex:0 0 auto!important;min-height:0!important;max-height:43%!important;overflow:auto!important;
}
html[data-dashboard-wall="1"] .dashboard-page .v18-board.no-visible-vehicles .market-head.terminal-head,
html[data-dashboard-wall="1"] .dashboard-page .v18-board.no-visible-vehicles .market-board.terminal-market{display:none!important}

/* Rubrikerna hålls kompakta, men innehållet visas direkt under. */
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead{
  height:38px!important;min-height:38px!important;padding:5px 9px!important;
}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead h2{font-size:13px!important;line-height:1.05!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead span{font-size:6.5px!important;line-height:1!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead small{font-size:7px!important}

/* Åtgärda nu: visa samtliga aktiva larm som ett tätt kortfält, utan scrollbar. */
html[data-dashboard-wall="1"] .dashboard-page #action-queue .terminal-alerts{
  display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:5px!important;padding:6px!important;overflow:visible!important;max-height:none!important;height:auto!important;
}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .ops-alert-card{margin:0!important;min-height:52px!important;border-radius:6px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body{padding:6px 7px!important;min-width:0!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-meta{font-size:6px!important;margin-bottom:2px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body h3{font-size:9px!important;line-height:1.15!important;margin:0 0 2px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body p{font-size:7px!important;line-height:1.15!important;margin:0!important;display:-webkit-box!important;-webkit-line-clamp:1!important;-webkit-box-orient:vertical!important;overflow:hidden!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-footer{margin-top:3px!important;min-height:18px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-status{font-size:6px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .ops-action{font-size:7px!important;padding:3px 6px!important;min-height:18px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .ops-clear{grid-column:1/-1!important;min-height:45px!important}

/* Följdförseningar, anslutningar och skiftinfo: allt synligt, inga små scrollfönster. */
html[data-dashboard-wall="1"] .dashboard-page .next30-list,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-list,
html[data-dashboard-wall="1"] .dashboard-page .tl-log-list{
  overflow:visible!important;max-height:none!important;height:auto!important;min-height:0!important;
}
html[data-dashboard-wall="1"] .dashboard-page .next30-list{display:grid!important;grid-template-columns:1fr!important;gap:4px!important;padding:5px 6px!important}
html[data-dashboard-wall="1"] .dashboard-page .horizon-row{margin:0!important;min-height:31px!important;padding:4px 6px!important}
html[data-dashboard-wall="1"] .dashboard-page .horizon-row:nth-child(n){display:grid!important}
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-list{display:grid!important;grid-template-columns:1fr!important;gap:4px!important;padding:5px 6px!important}
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-row{height:auto!important;min-height:34px!important;padding:4px 6px!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-panel{height:auto!important;max-height:none!important;min-height:0!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-list{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 10px!important;padding:3px 8px!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-row{min-height:31px!important;padding:4px 0!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-form{grid-template-columns:86px 1fr 52px!important;padding:5px 7px!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-form button{font-size:8px!important}

/* Lägesbild = avvikelsebild. Normalt väglag tar inte plats; risker och händelser gör det. */
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-situation-scroll{
  display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:7px!important;overflow:visible!important;max-height:none!important;height:auto!important;padding:6px!important;
}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-group{
  min-width:0!important;padding:6px!important;margin:0!important;border:1px solid #173042!important;border-radius:7px!important;background:#081721!important;
}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head{padding:0 0 5px!important;min-height:32px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head span{font-size:6px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head b{font-size:10px!important;margin-top:2px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head b strong{font-size:12px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head small{font-size:6.5px!important;line-height:1.15!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .road-map-link{height:auto!important;min-height:31px!important;padding:5px 7px!important;margin:0 0 5px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .road-map-link strong{font-size:8px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .road-map-link small{display:none!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-list{overflow:visible!important;max-height:none!important;height:auto!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture #tv-weather-list{display:grid!important;grid-template-columns:1fr!important;gap:4px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture #tv-weather-list .weather-station-card:not(.danger){display:none!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture #tv-weather-list:not(:has(.weather-station-card.danger))::before{
  content:'✓ Alla vägväderstationer utan halka/snö';display:flex;align-items:center;min-height:34px;padding:5px 7px;border:1px solid #18493b;border-radius:6px;background:#09231d;color:#73d8b1;font-size:8px;font-weight:800;
}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture #tv-weather-list .weather-station-card.danger{display:grid!important;height:auto!important;min-height:34px!important;padding:5px 6px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .service-item{min-height:34px!important;padding:5px 6px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item strong,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .service-item strong{font-size:8px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item small,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item p,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .service-item p{font-size:6.5px!important;line-height:1.15!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .ops-clear.compact{min-height:34px!important;padding:5px 7px!important}

/* Högerspalten blir bara styrning när wallboarden används. */
html[data-dashboard-wall="1"] .dashboard-page .v202-rail{display:flex!important;flex-direction:column!important;gap:7px!important;overflow:visible!important}
html[data-dashboard-wall="1"] .dashboard-page .v202-rail>.v18-rail-section{display:none!important}
html[data-dashboard-wall="1"] .dashboard-page .v202-admin-tools{margin-top:auto!important}

/* När busslistan tar hela vänsterytan: visa en kompakt undantagsöversikt utan interna scrollrutor. */
html[data-dashboard-wall="0"] .dashboard-page .v202-rail{overflow:hidden!important}
html[data-dashboard-wall="0"] .dashboard-page .v18-actions-panel .terminal-alerts,
html[data-dashboard-wall="0"] .dashboard-page .next30-list,
html[data-dashboard-wall="0"] .dashboard-page .connection-watch-list,
html[data-dashboard-wall="0"] .dashboard-page .tl-log-list,
html[data-dashboard-wall="0"] .dashboard-page .v202-situation-scroll{overflow:hidden!important;scrollbar-width:none!important}
html[data-dashboard-wall="0"] .dashboard-page #action-queue .ops-alert-card:nth-child(n+5){display:none!important}
html[data-dashboard-wall="0"] .dashboard-page .next30-list .horizon-row:nth-child(n+3){display:none!important}
html[data-dashboard-wall="0"] .dashboard-page .connection-watch-list .connection-watch-row:nth-child(n+3){display:none!important}
html[data-dashboard-wall="0"] .dashboard-page .tl-log-list .tl-log-row:nth-child(n+4){display:none!important}
html[data-dashboard-wall="0"] .dashboard-page #tv-weather-list .weather-station-card:not(.danger){display:none!important}
html[data-dashboard-wall="0"] .dashboard-page #tv-weather-list:not(:has(.weather-station-card.danger))::before{
  content:'✓ Vägväder utan rapporterad halka/snö';display:block;padding:5px 7px;color:#73d8b1;font-size:7px;font-weight:800;
}

@media(max-width:1650px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{grid-column:1/-1!important}
  html[data-dashboard-wall="1"] .dashboard-page #action-queue .terminal-alerts{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-situation-scroll{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}


/* v0.24.7 – fast operativ översiktsyta med större text, paneler i rimlig bredd
   och tydligare ljust tema. */
html[data-dashboard-wall="1"] .dashboard-page .v18-workspace{
  grid-template-columns:minmax(0,1fr) 280px!important;
  gap:10px!important;
}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(220px,1fr))!important;
  grid-auto-rows:max-content!important;
  justify-content:start!important;
  align-content:start!important;
  gap:10px!important;
  padding:10px!important;
  overflow:auto!important;
}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue{grid-column:span 2!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#next30-panel{grid-column:span 1!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#connections-watch{grid-column:span 1!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log{grid-column:span 2!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{grid-column:span 2!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>.v18-rail-section{
  align-self:start!important;
  max-width:none!important;
}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead{
  height:auto!important;
  min-height:54px!important;
  padding:10px 12px!important;
}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead h2{font-size:18px!important;line-height:1.1!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead span{font-size:9px!important;line-height:1.15!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead small,
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-count{font-size:11px!important}

/* Åtgärda nu – större text och två kolumner i stället för mikrokort över hela bredden. */
html[data-dashboard-wall="1"] .dashboard-page #action-queue .terminal-alerts{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:8px!important;
  padding:8px!important;
}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .ops-alert-card{min-height:88px!important;border-radius:9px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body{padding:9px 10px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-meta{font-size:9px!important;margin-bottom:4px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body h3{font-size:15px!important;line-height:1.18!important;white-space:normal!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body p{font-size:11px!important;line-height:1.3!important;-webkit-line-clamp:2!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-status,
html[data-dashboard-wall="1"] .dashboard-page #action-queue .ops-action{font-size:10px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .ops-action{padding:5px 9px!important;min-height:24px!important}

/* Följdförseningar / anslutningar / skiftöverlämning – större och kortare rutor. */
html[data-dashboard-wall="1"] .dashboard-page .next30-panel,
html[data-dashboard-wall="1"] .dashboard-page .v18-connections,
html[data-dashboard-wall="1"] .dashboard-page .tl-log-panel,
html[data-dashboard-wall="1"] .dashboard-page .v202-situation{height:auto!important;max-height:none!important}
html[data-dashboard-wall="1"] .dashboard-page .next30-list,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-list,
html[data-dashboard-wall="1"] .dashboard-page .tl-log-list,
html[data-dashboard-wall="1"] .dashboard-page .v202-situation-scroll{overflow:visible!important;max-height:none!important}
html[data-dashboard-wall="1"] .dashboard-page .next30-list,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-list{padding:8px!important;gap:7px!important}
html[data-dashboard-wall="1"] .dashboard-page .horizon-row,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-row{min-height:48px!important;padding:8px 10px!important}
html[data-dashboard-wall="1"] .dashboard-page .horizon-destination,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-row b{font-size:15px!important;line-height:1.18!important}
html[data-dashboard-wall="1"] .dashboard-page .horizon-row b,
html[data-dashboard-wall="1"] .dashboard-page .horizon-row strong,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-row small,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-row span{font-size:11px!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-list{
  grid-template-columns:1fr!important;
  gap:0!important;
  padding:6px 10px!important;
}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-row{grid-template-columns:48px minmax(0,1fr)!important;min-height:42px!important;padding:7px 0!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-row time{font-size:12px!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-row b{font-size:13px!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-row span,
html[data-dashboard-wall="1"] .dashboard-page .tl-log-row small{font-size:11px!important;line-height:1.3!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-form{grid-template-columns:110px 1fr 68px!important;padding:8px 10px!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-form select,
html[data-dashboard-wall="1"] .dashboard-page .tl-log-form input,
html[data-dashboard-wall="1"] .dashboard-page .tl-log-form button{height:34px!important;font-size:11px!important}

/* Lägesbild – större text och två sakgrupper per rad i stället för en lång vägg. */
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-situation-scroll{
  grid-template-columns:repeat(2,minmax(280px,1fr))!important;
  gap:10px!important;
  padding:8px!important;
}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-group{padding:10px!important;border-radius:9px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head{padding-bottom:8px!important;min-height:42px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head span{font-size:8px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head b{font-size:15px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head b strong{font-size:17px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head small{font-size:11px!important;line-height:1.28!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .road-map-link{min-height:44px!important;padding:8px 10px!important;margin-bottom:8px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .road-map-link strong{font-size:12px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .road-map-link small{display:block!important;font-size:10px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .service-item,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .ops-clear.compact{min-height:42px!important;padding:8px 10px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item strong,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .service-item strong{font-size:13px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item small,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item p,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .service-item p,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .ops-clear.compact span{font-size:11px!important;line-height:1.3!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture #tv-weather-list .weather-station-card.danger,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture #tv-weather-list:not(:has(.weather-station-card.danger))::before{min-height:42px!important;font-size:11px!important}

/* Håll styrkolumnen liten men läsbar. */
html[data-dashboard-wall="1"] .dashboard-page .panel-controlbar{padding:10px!important;gap:10px!important}
html[data-dashboard-wall="1"] .dashboard-page .panel-manager-toggle.compact,
html[data-dashboard-wall="1"] .dashboard-page .sound-toggle,
html[data-dashboard-wall="1"] .dashboard-page .sound-test{height:34px!important;font-size:11px!important}
html[data-dashboard-wall="1"] .dashboard-page .sound-volume{font-size:10px!important;grid-template-columns:auto minmax(72px,1fr) 38px!important}

/* Ljust tema – ta bort kvarvarande mörkblå ytor i arbetsytan. */
html[data-theme="light"] .dashboard-page .v18-board,
html[data-theme="light"] .dashboard-page .market-head.terminal-head,
html[data-theme="light"] .dashboard-page .market-row,
html[data-theme="light"] .dashboard-page .ops-panel-stage,
html[data-theme="light"] .dashboard-page .panel-controlbar,
html[data-theme="light"] .dashboard-page .v18-rail-section,
html[data-theme="light"] .dashboard-page #situation-picture .v202-feed-group,
html[data-theme="light"] .dashboard-page #road-events-group,
html[data-theme="light"] .dashboard-page #road-weather-group,
html[data-theme="light"] .dashboard-page .road-map-link,
html[data-theme="light"] .dashboard-page .tl-log-form,
html[data-theme="light"] .dashboard-page .tl-log-form select,
html[data-theme="light"] .dashboard-page .tl-log-form input,
html[data-theme="light"] .dashboard-page .tl-log-form button,
html[data-theme="light"] .dashboard-page .horizon-row,
html[data-theme="light"] .dashboard-page .connection-watch-row,
html[data-theme="light"] .dashboard-page .ops-clear.compact,
html[data-theme="light"] .dashboard-page .weather-station-card,
html[data-theme="light"] .dashboard-page .service-item,
html[data-theme="light"] .dashboard-page .tv-traffic-item{
  background:#ffffff!important;
  color:#183543!important;
  border-color:#c9d9e1!important;
}
html[data-theme="light"] .dashboard-page .v18-boardbar,
html[data-theme="light"] .dashboard-page .search-wrap,
html[data-theme="light"] .dashboard-page .v18-railhead,
html[data-theme="light"] .dashboard-page .v202-feed-head{
  background:#f3f8fb!important;
  color:#254452!important;
  border-color:#d5e1e7!important;
}
html[data-theme="light"] .dashboard-page .v18-board,
html[data-theme="light"] .dashboard-page .ops-panel-stage{background:#eef4f7!important}
html[data-theme="light"] .dashboard-page .market-row small,
html[data-theme="light"] .dashboard-page .v18-railhead small,
html[data-theme="light"] .dashboard-page .v202-feed-head small,
html[data-theme="light"] .dashboard-page .ops-clear.compact span,
html[data-theme="light"] .dashboard-page .tv-traffic-item p,
html[data-theme="light"] .dashboard-page .service-item p,
html[data-theme="light"] .dashboard-page .tl-log-row span,
html[data-theme="light"] .dashboard-page .tl-log-row small{color:#5f7785!important}
html[data-theme="light"] .dashboard-page .v18-railhead h2,
html[data-theme="light"] .dashboard-page .v202-feed-head b,
html[data-theme="light"] .dashboard-page .horizon-destination,
html[data-theme="light"] .dashboard-page .connection-watch-row b,
html[data-theme="light"] .dashboard-page .tl-log-row b,
html[data-theme="light"] .dashboard-page .tv-traffic-item strong,
html[data-theme="light"] .dashboard-page .service-item strong{color:#173746!important}

@media(max-width:1700px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{grid-template-columns:repeat(4,minmax(220px,1fr))!important}
}
@media(max-width:1500px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{grid-template-columns:repeat(3,minmax(220px,1fr))!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{grid-column:span 2!important}
}
@media(max-width:1320px){
  html[data-dashboard-wall="1"] .dashboard-page .v18-workspace{grid-template-columns:minmax(0,1fr)!important}
  html[data-dashboard-wall="1"] .dashboard-page .v202-rail{display:none!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{grid-template-columns:repeat(2,minmax(220px,1fr))!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{grid-column:1/-1!important}
  html[data-dashboard-wall="1"] .dashboard-page #action-queue .terminal-alerts,
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-situation-scroll{grid-template-columns:1fr!important}
}

/* v0.24.8 – Driftcentral 2.0: layoutomtag + visuell upprensning + smart prioritering. */

/* 1. Ett sammanhållet kontrollrum: full bredd, bussbord överst och operativa kort direkt under. */
body.dashboard-page{overflow:auto!important}
body.dashboard-page .app.ops-app>main{overflow:visible!important;height:auto!important;min-height:100vh!important}
body.dashboard-page .content.ops-content{height:auto!important;overflow:visible!important}
.dashboard-page .v18-workspace{height:auto!important;min-height:calc(100vh - 214px)!important;grid-template-columns:minmax(0,1fr)!important;gap:0!important}
html[data-dashboard-wall="1"] .dashboard-page .v18-workspace{grid-template-columns:minmax(0,1fr)!important;gap:0!important}
html[data-dashboard-wall="1"] .dashboard-page .v202-rail{display:none!important}
.dashboard-page .v18-board{overflow:visible!important;background:transparent!important;border-left:0!important;border-right:0!important;border-bottom:0!important;border-radius:9px 9px 0 0!important}
.dashboard-page .v18-board .market-board.terminal-market{flex:0 0 auto!important;max-height:44vh!important;min-height:0!important;overflow:auto!important}
.dashboard-page .ops-panel-stage{border-top:1px solid var(--v18-line);border-radius:0 0 9px 9px}

/* Toolbar: ljudkontroll där TL faktiskt tittar, inte i en tom högerspalt. */
.dashboard-page .v18-boardbar{min-height:46px!important;height:auto!important;gap:10px!important;padding:6px 8px!important}
.dashboard-page .board-tools{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:8px!important;min-width:0!important}
.dashboard-page .board-sound-controls{display:flex!important;align-items:center!important;gap:6px!important;padding:0!important;border:0!important;background:transparent!important}
.dashboard-page .board-sound-controls .sound-toggle,.dashboard-page .board-sound-controls .sound-test{height:30px!important;padding:0 9px!important;font-size:10px!important}
.dashboard-page .board-sound-controls .sound-volume{display:grid!important;grid-template-columns:auto 92px 35px!important;gap:5px!important;font-size:9px!important}
.dashboard-page .panel-manager{display:none!important}

/* 12-kolumners kontrollrumsgrid. Korten får den bredd de behöver; resterande yta får vara lugn/reserverad. */
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{
  display:grid!important;
  grid-template-columns:repeat(12,minmax(0,1fr))!important;
  grid-auto-flow:row dense!important;
  grid-auto-rows:max-content!important;
  align-content:start!important;
  justify-content:stretch!important;
  gap:12px!important;
  padding:12px!important;
  overflow:visible!important;
  background:#06111a!important;
}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue{grid-column:span 4!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#next30-panel{grid-column:span 2!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#connections-watch{grid-column:span 2!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log{grid-column:span 4!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{grid-column:span 6!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>.v18-rail-section{align-self:start!important;min-width:0!important;width:auto!important;height:auto!important;max-height:none!important;overflow:visible!important}

/* Smart prioritering: lugnt tar mindre plats, avvikelser får automatiskt mer yta. */
html[data-dashboard-wall="1"] .dashboard-page #action-queue.priority-calm{grid-column:span 2!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue.priority-hot{grid-column:span 4!important;border-color:#7d3038!important;box-shadow:0 0 0 1px rgba(239,98,107,.15),0 12px 30px rgba(0,0,0,.16)!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage.has-many-alerts>#action-queue{grid-column:span 6!important}
html[data-dashboard-wall="1"] .dashboard-page #next30-panel.priority-watch,
html[data-dashboard-wall="1"] .dashboard-page #connections-watch.priority-watch{grid-column:span 3!important;border-color:#715820!important}
html[data-dashboard-wall="1"] .dashboard-page #next30-panel.priority-calm,
html[data-dashboard-wall="1"] .dashboard-page #connections-watch.priority-calm{grid-column:span 2!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture.priority-watch{grid-column:span 7!important;border-color:#6c571e!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture.priority-calm{grid-column:span 5!important}

/* Panelrubriker och innehåll: tydligt läsbara på vanlig kontorsskärm. */
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead{min-height:56px!important;height:auto!important;padding:10px 12px!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead span{font-size:9px!important;letter-spacing:.12em!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead h2{font-size:18px!important;line-height:1.12!important;margin-top:3px!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead small{font-size:10px!important;line-height:1.2!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-count{font-size:12px!important;min-width:30px!important;height:26px!important}

/* Åtgärda nu: tydlig kortlista, viktigast först, inga mikrorader. */
html[data-dashboard-wall="1"] .dashboard-page #action-queue .terminal-alerts{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;padding:8px!important;overflow:visible!important;max-height:none!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue.priority-calm .terminal-alerts{grid-template-columns:1fr!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage.has-many-alerts>#action-queue .terminal-alerts{grid-template-columns:repeat(3,minmax(0,1fr))!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .ops-alert-card{margin:0!important;min-height:90px!important;border-radius:9px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body{padding:9px 10px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-meta{font-size:9px!important;margin-bottom:4px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body h3{font-size:15px!important;line-height:1.2!important;margin:2px 0 4px!important;white-space:normal!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body p{font-size:11px!important;line-height:1.3!important;-webkit-line-clamp:2!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-footer{margin-top:7px!important}
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-status,html[data-dashboard-wall="1"] .dashboard-page #action-queue .ops-action{font-size:10px!important}

/* Följdförseningar / anslutningar: korta operativa rader. */
html[data-dashboard-wall="1"] .dashboard-page .next30-list,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-list{padding:8px!important;display:grid!important;grid-template-columns:1fr!important;gap:6px!important;overflow:visible!important;max-height:none!important}
html[data-dashboard-wall="1"] .dashboard-page .horizon-row,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-row{min-height:52px!important;padding:8px 9px!important;border-radius:7px!important;margin:0!important}
html[data-dashboard-wall="1"] .dashboard-page .horizon-destination,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-row b{font-size:14px!important;line-height:1.2!important}
html[data-dashboard-wall="1"] .dashboard-page .horizon-row small,
html[data-dashboard-wall="1"] .dashboard-page .horizon-row b,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-row small,
html[data-dashboard-wall="1"] .dashboard-page .connection-watch-row span{font-size:10px!important;line-height:1.25!important}
.dashboard-page .ops-clear.compact{padding:10px 12px!important;min-height:52px!important;display:flex!important;align-items:center!important;gap:8px!important}
.dashboard-page .ops-clear.compact strong{font-size:12px!important}
.dashboard-page .ops-clear.compact span{font-size:10px!important}

/* Skiftöverlämning: tre senaste ska kunna läsas direkt, ny rad skrivs i samma kort. */
html[data-dashboard-wall="1"] .dashboard-page .tl-log-list{display:grid!important;grid-template-columns:1fr!important;gap:0!important;padding:4px 10px!important;overflow:visible!important;max-height:none!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-row:nth-child(n+4){display:none!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-row{grid-template-columns:46px minmax(0,1fr)!important;min-height:42px!important;padding:7px 0!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-row time{font-size:11px!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-row b{font-size:12px!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-row span,html[data-dashboard-wall="1"] .dashboard-page .tl-log-row small{font-size:10px!important;line-height:1.3!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-form{grid-template-columns:105px minmax(0,1fr) 64px!important;padding:8px 10px!important;gap:7px!important}
html[data-dashboard-wall="1"] .dashboard-page .tl-log-form select,html[data-dashboard-wall="1"] .dashboard-page .tl-log-form input,html[data-dashboard-wall="1"] .dashboard-page .tl-log-form button{height:34px!important;font-size:10px!important}

/* Lägesbild: sammanfattningspanel, inte en egen scrollvärld. */
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-situation-scroll{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important;padding:8px!important;overflow:visible!important;max-height:none!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-group{padding:9px!important;margin:0!important;border:1px solid #173042!important;border-radius:8px!important;background:#081721!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head{padding:0 0 7px!important;min-height:42px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head span{font-size:8px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head b{font-size:14px!important;line-height:1.18!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head b strong{font-size:16px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-head small{font-size:9.5px!important;line-height:1.25!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .road-map-link{min-height:42px!important;padding:7px 9px!important;margin:0 0 6px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .road-map-link strong{font-size:11px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .road-map-link small{display:block!important;font-size:9px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-list{overflow:visible!important;max-height:none!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .service-item{min-height:42px!important;padding:7px 8px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item strong,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .service-item strong{font-size:11px!important}
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item p,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-traffic-item small,
html[data-dashboard-wall="1"] .dashboard-page #situation-picture .service-item p{font-size:9px!important;line-height:1.25!important}

/* Trafikbordet får lite större typografi men behåller densiteten. */
.dashboard-page .v18-board .market-head.terminal-head{font-size:9px!important;min-height:34px!important}
.dashboard-page .v18-board .market-row{min-height:58px!important;padding:7px 9px!important}
.dashboard-page .v18-board .market-status,.dashboard-page .v18-board .market-status b{font-size:8px!important}
.dashboard-page .v18-board .market-line .line-badge{min-width:39px!important;height:31px!important;font-size:13px!important}
.dashboard-page .v18-board .market-bus b,.dashboard-page .v18-board .market-reg b,.dashboard-page .v18-board .market-gps b,.dashboard-page .v18-board .market-speed b{font-size:9px!important}
.dashboard-page .v18-board .market-dest b{font-size:11px!important}
.dashboard-page .v18-board .market-bus small,.dashboard-page .v18-board .market-dest small,.dashboard-page .v18-board .market-reg small,.dashboard-page .v18-board .market-gps small,.dashboard-page .v18-board .market-speed small,.dashboard-page .v18-board .market-pax small{font-size:7px!important}
.dashboard-page .v18-board .market-delay b,.dashboard-page .v18-board .market-reg.pred b,.dashboard-page .v18-board .market-pax b{font-size:10px!important}

/* Reserverad framtidsyta – synlig som struktur men inte som falsk funktion. */
.dashboard-page .future-slots{grid-column:span 6;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-self:start}
.dashboard-page .future-slot{min-height:94px;padding:13px 14px;border:1px dashed #24445a;border-radius:9px;background:rgba(8,23,33,.42);display:flex;flex-direction:column;justify-content:center}
.dashboard-page .future-slot span{font-size:8px;font-weight:900;letter-spacing:.14em;color:#58798b}
.dashboard-page .future-slot b{margin-top:6px;font-size:13px;color:#9bb5c2}
.dashboard-page .future-slot small{margin-top:5px;font-size:9px;line-height:1.3;color:#5d7481}

/* 2. Visuell standard: lugn bas, endast statusfärger drar ögat. */
.dashboard-page .v18-rail-section{border-radius:9px!important;box-shadow:0 8px 22px rgba(0,0,0,.10)!important}
.dashboard-page .v18-rail-section.priority-calm{border-color:#173344!important}
.dashboard-page .v18-rail-section.priority-watch{box-shadow:0 0 0 1px rgba(242,188,59,.10),0 8px 22px rgba(0,0,0,.10)!important}
.dashboard-page #action-queue.priority-hot .v18-railhead{background:linear-gradient(90deg,rgba(239,98,107,.11),rgba(8,23,34,.72))!important}
.dashboard-page .v18-rail-section.priority-watch .v18-railhead{background:linear-gradient(90deg,rgba(242,188,59,.08),rgba(8,23,34,.72))!important}

/* 3. Ett riktigt ljust tema – ingen kvarvarande mörkblå dashboardyta. */
html[data-theme="light"] body.dashboard-page{background:#e9f0f3!important;color:#172f3a!important}
html[data-theme="light"] .dashboard-page .ops-sidebar{background:#f8fbfc!important;border-color:#cfdae0!important;color:#294653!important}
html[data-theme="light"] .dashboard-page .ops-sidebar .brand strong,html[data-theme="light"] .dashboard-page .ops-sidebar .nav-item{color:#294653!important}
html[data-theme="light"] .dashboard-page .ops-sidebar .nav-item.active{background:#e4f1f6!important;color:#143c4d!important;border-color:#bad5e0!important}
html[data-theme="light"] .dashboard-page .v18-header,html[data-theme="light"] .dashboard-page .v18-kpis{background:#f7fafb!important;border-color:#cedde4!important}
html[data-theme="light"] .dashboard-page .v18-kpi{background:#fff!important;border-color:#d4e0e5!important;color:#173746!important}
html[data-theme="light"] .dashboard-page .v18-kpi span,html[data-theme="light"] .dashboard-page .v18-kpi small{color:#607885!important}
html[data-theme="light"] .dashboard-page .v18-board,html[data-theme="light"] .dashboard-page .ops-panel-stage{background:#eef3f5!important;border-color:#ccdbe2!important}
html[data-theme="light"] .dashboard-page .v18-boardbar,html[data-theme="light"] .dashboard-page .market-head.terminal-head,html[data-theme="light"] .dashboard-page .v18-railhead{background:#f6f9fa!important;border-color:#d2dee4!important;color:#42606d!important}
html[data-theme="light"] .dashboard-page .market-board.terminal-market,html[data-theme="light"] .dashboard-page .market-row{background:#fff!important;border-color:#dce5e9!important;color:#173746!important}
html[data-theme="light"] .dashboard-page .market-row.state-yellow{background:linear-gradient(90deg,#fff6dc,#fff 15%)!important}
html[data-theme="light"] .dashboard-page .market-row.state-red{background:linear-gradient(90deg,#ffe9eb,#fff 15%)!important}
html[data-theme="light"] .dashboard-page .v18-rail-section,html[data-theme="light"] .dashboard-page #situation-picture .v202-feed-group,html[data-theme="light"] .dashboard-page .horizon-row,html[data-theme="light"] .dashboard-page .connection-watch-row,html[data-theme="light"] .dashboard-page .tl-log-form,html[data-theme="light"] .dashboard-page .tv-traffic-item,html[data-theme="light"] .dashboard-page .service-item,html[data-theme="light"] .dashboard-page .ops-clear.compact{background:#fff!important;border-color:#ccdbe2!important;color:#173746!important}
html[data-theme="light"] .dashboard-page #action-queue.priority-hot .v18-railhead{background:linear-gradient(90deg,#fff0f1,#f8fbfc)!important}
html[data-theme="light"] .dashboard-page .v18-rail-section.priority-watch .v18-railhead{background:linear-gradient(90deg,#fff7df,#f8fbfc)!important}
html[data-theme="light"] .dashboard-page .v202-feed-head{background:transparent!important;color:#234755!important}
html[data-theme="light"] .dashboard-page .road-map-link{background:#eef8fb!important;border-color:#bfd7e1!important;color:#17485b!important}
html[data-theme="light"] .dashboard-page .search-wrap{background:#fff!important;border-color:#c8d8df!important;color:#244957!important}
html[data-theme="light"] .dashboard-page .ops-search{color:#183b49!important;background:transparent!important}
html[data-theme="light"] .dashboard-page .board-tab{color:#58727f!important}
html[data-theme="light"] .dashboard-page .board-tab.active{background:#dceef5!important;color:#17485b!important;border-color:#b7d5e1!important}
html[data-theme="light"] .dashboard-page .sound-toggle,html[data-theme="light"] .dashboard-page .sound-test{background:#fff!important;border-color:#bfd3dc!important;color:#315765!important}
html[data-theme="light"] .dashboard-page .sound-toggle.active{background:#e4f5ee!important;color:#176346!important;border-color:#9bcdb9!important}
html[data-theme="light"] .dashboard-page .future-slot{background:rgba(255,255,255,.52)!important;border-color:#b9cbd3!important}
html[data-theme="light"] .dashboard-page .future-slot span{color:#6d8793!important}
html[data-theme="light"] .dashboard-page .future-slot b{color:#395b68!important}
html[data-theme="light"] .dashboard-page .future-slot small{color:#718994!important}

/* Responsiv kontrollrumsgrid. */
@media(max-width:1900px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{grid-template-columns:repeat(10,minmax(0,1fr))!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue{grid-column:span 4!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log{grid-column:span 4!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{grid-column:span 6!important}
  .dashboard-page .future-slots{grid-column:span 4;grid-template-columns:1fr!important}
}
@media(max-width:1500px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{grid-template-columns:repeat(6,minmax(0,1fr))!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue,html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage.has-many-alerts>#action-queue{grid-column:span 4!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#next30-panel,html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#connections-watch{grid-column:span 2!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log,html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{grid-column:span 3!important}
  .dashboard-page .future-slots{grid-column:span 3;grid-template-columns:1fr!important}
  .dashboard-page .board-sound-controls .sound-volume{display:none!important}
}
@media(max-width:1100px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{grid-template-columns:1fr!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>*{grid-column:1!important}
  .dashboard-page .future-slots{grid-column:1!important;grid-template-columns:1fr!important}
  .dashboard-page .v18-boardbar{align-items:flex-start!important;flex-direction:column!important}
  .dashboard-page .board-tools{width:100%!important;justify-content:space-between!important}
}


/* v0.24.9 – split-screen kontrollrum.
   Trafikbordet behöver inte använda hela skärmen: vänster del = trafik,
   höger del = operativ lägesbild. Båda syns samtidigt. */
@media(min-width:1501px){
  html[data-dashboard-wall="1"] .dashboard-page .v18-workspace{
    display:block!important;
    grid-template-columns:none!important;
    gap:0!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .v18-board{
    display:grid!important;
    grid-template-columns:minmax(0,56fr) minmax(620px,44fr)!important;
    grid-template-rows:auto auto minmax(0,1fr)!important;
    column-gap:12px!important;
    row-gap:0!important;
    align-items:start!important;
    background:transparent!important;
    overflow:visible!important;
    border-radius:10px!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .v18-boardbar{
    grid-column:1/-1!important;
    grid-row:1!important;
    margin-bottom:8px!important;
    border:1px solid var(--v18-line)!important;
    border-radius:9px!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .market-head.terminal-head{
    grid-column:1!important;
    grid-row:2!important;
    border:1px solid var(--v18-line)!important;
    border-bottom:0!important;
    border-radius:9px 9px 0 0!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .market-board.terminal-market{
    grid-column:1!important;
    grid-row:3!important;
    max-height:calc(100vh - 280px)!important;
    min-height:430px!important;
    overflow:auto!important;
    border:1px solid var(--v18-line)!important;
    border-top:0!important;
    border-radius:0 0 9px 9px!important;
    background:#06111a!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{
    grid-column:2!important;
    grid-row:2/4!important;
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-auto-rows:max-content!important;
    grid-auto-flow:row!important;
    align-content:start!important;
    gap:10px!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    overflow:visible!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage.has-many-alerts>#action-queue{
    grid-column:1/-1!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#next30-panel{
    grid-column:1!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#connections-watch{
    grid-column:2!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log{
    grid-column:1/-1!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{
    grid-column:1/-1!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>.v18-rail-section{
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    height:auto!important;
    max-height:none!important;
    overflow:visible!important;
    align-self:start!important;
  }

  /* Högerdelen ska vara lätt att skanna, inte överdimensionerad. */
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead{
    min-height:48px!important;
    padding:8px 10px!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage .v18-railhead h2{
    font-size:17px!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page #action-queue .terminal-alerts{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:7px!important;
    padding:7px!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page #action-queue.priority-calm .terminal-alerts{
    grid-template-columns:1fr!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page #action-queue .ops-alert-card{
    min-height:78px!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .next30-list,
  html[data-dashboard-wall="1"] .dashboard-page .connection-watch-list{
    padding:6px!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .horizon-row,
  html[data-dashboard-wall="1"] .dashboard-page .connection-watch-row{
    min-height:46px!important;
    padding:7px 8px!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .tl-log-row{
    min-height:38px!important;
    padding:6px 0!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-situation-scroll{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:8px!important;
    padding:7px!important;
  }

  /* Reservytorna ligger längst ned till höger – redo för kommande funktioner. */
  html[data-dashboard-wall="1"] .dashboard-page .future-slots{
    grid-column:1/-1!important;
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:8px!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .future-slot{
    min-height:72px!important;
    padding:10px 11px!important;
  }

  /* Trafikbordet ska fortfarande vara lättläst trots mindre bredd. */
  html[data-dashboard-wall="1"] .dashboard-page .market-head.terminal-head,
  html[data-dashboard-wall="1"] .dashboard-page .market-row{
    grid-template-columns:72px 54px minmax(120px,.9fr) minmax(220px,1.55fr) 62px 66px 72px 72px 88px 50px 70px 30px!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .market-dest b{font-size:12px!important}
  html[data-dashboard-wall="1"] .dashboard-page .market-dest small{font-size:8px!important}
}

/* På riktigt breda kontrollrumsskärmar blir det ännu närmare 50/50. */
@media(min-width:2400px){
  html[data-dashboard-wall="1"] .dashboard-page .v18-board{
    grid-template-columns:minmax(0,54fr) minmax(700px,46fr)!important;
    column-gap:14px!important;
  }
}

/* Vanliga 1080p-skärmar: lite mer plats åt tabellen men samma princip. */
@media(min-width:1501px) and (max-width:1900px){
  html[data-dashboard-wall="1"] .dashboard-page .v18-board{
    grid-template-columns:minmax(0,62fr) minmax(500px,38fr)!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page #action-queue .terminal-alerts{
    grid-template-columns:1fr!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-situation-scroll{
    grid-template-columns:1fr!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .future-slots{
    grid-template-columns:1fr!important;
  }
}

/* Light mode för själva delningen. */
html[data-theme="light"][data-dashboard-wall="1"] .dashboard-page .market-board.terminal-market{
  background:#fff!important;
  border-color:#ccdbe2!important;
}
html[data-theme="light"][data-dashboard-wall="1"] .dashboard-page .market-head.terminal-head,
html[data-theme="light"][data-dashboard-wall="1"] .dashboard-page .v18-boardbar{
  border-color:#ccdbe2!important;
}
\n\n/* v0.24.10 – tydlig femminutersregel och automatisk självrensning. */\n.dashboard-page .delay-rule-chip{display:inline-flex;align-items:center;min-height:30px;padding:0 10px;border:1px solid #27485a;border-radius:999px;background:#0b1c28;color:#91b9ca;font-size:10px;font-weight:850;white-space:nowrap;letter-spacing:.01em}\nhtml[data-theme="light"] .dashboard-page .delay-rule-chip{background:#eef6f9;color:#315e70;border-color:#bfd4de}\n.dashboard-page .market-row.state-green .market-status b{letter-spacing:.02em}\n@media(max-width:1500px){.dashboard-page .delay-rule-chip{display:none}}\n

/* v0.24.11 – använd hela kontrollrumsskärmen vertikalt.
   Vänster halva är ett fullhöjds trafikbord. Höger halva fyller samma höjd
   med operativa paneler; Lägesbilden tar den återstående ytan i normalläge. */
@media(min-width:1501px){
  html[data-dashboard-wall="1"] .dashboard-page .v18-workspace{
    min-height:calc(100vh - 214px)!important;
    height:calc(100vh - 214px)!important;
    overflow:hidden!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .v18-board{
    height:100%!important;
    min-height:0!important;
    grid-template-rows:auto auto minmax(0,1fr)!important;
    align-items:stretch!important;
    overflow:hidden!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .market-head.terminal-head{
    align-self:stretch!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .market-board.terminal-market{
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
    align-self:stretch!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    scrollbar-gutter:stable;
  }

  /* Högerdelen använder samma fulla höjd som trafikbordet. */
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{
    height:100%!important;
    min-height:0!important;
    grid-template-rows:auto auto auto minmax(250px,1fr) auto!important;
    align-content:stretch!important;
    overflow:hidden!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue{grid-row:1!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#next30-panel,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#connections-watch{grid-row:2!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log{grid-row:3!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{
    grid-row:4!important;
    min-height:0!important;
    height:100%!important;
    overflow:hidden!important;
    display:flex!important;
    flex-direction:column!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>.future-slots{grid-row:5!important}

  /* Lägesbilden är den flexibla delen som nyttjar annars tom yta. */
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-situation-scroll{
    flex:1 1 auto!important;
    min-height:0!important;
    height:auto!important;
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-template-rows:repeat(2,minmax(120px,1fr))!important;
    align-items:stretch!important;
    overflow:hidden!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-group{
    height:100%!important;
    min-height:0!important;
    overflow:hidden!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-list{
    max-height:none!important;
    overflow:visible!important;
  }

  /* Reservrutorna förblir små, men ligger alltid längst ner i den använda ytan. */
  html[data-dashboard-wall="1"] .dashboard-page .future-slots{
    align-self:end!important;
    margin-top:0!important;
  }
}

/* På mycket höga skärmar får tabellen större radhöjd i stället för ett tomt blått fält. */
@media(min-width:1501px) and (min-height:1000px){
  html[data-dashboard-wall="1"] .dashboard-page .market-row{min-height:58px!important}
}
@media(min-width:1501px) and (min-height:1250px){
  html[data-dashboard-wall="1"] .dashboard-page .market-row{min-height:64px!important}
}

/* Ljust tema även på de fullhöjdsytor som nu exponeras. */
html[data-theme="light"][data-dashboard-wall="1"] .dashboard-page .v18-workspace,
html[data-theme="light"][data-dashboard-wall="1"] .dashboard-page .v18-board,
html[data-theme="light"][data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{
  background:#eef3f5!important;
}


/* v0.24.12 – större text i trafikbordet för bättre läsbarhet. */
.dashboard-page .v18-board .market-head.terminal-head{
  min-height:38px!important;
  padding:10px 10px!important;
  font-size:10px!important;
  letter-spacing:.09em!important;
}
.dashboard-page .v18-board .market-row{
  min-height:72px!important;
  padding:10px 10px!important;
}
.dashboard-page .v18-board .market-status b{font-size:11px!important;letter-spacing:.03em!important}
.dashboard-page .v18-board .line-badge{font-size:13px!important;min-width:34px!important;padding:4px 8px!important}
.dashboard-page .v18-board .market-bus b,
.dashboard-page .v18-board .market-reg b,
.dashboard-page .v18-board .market-reg.pred b,
.dashboard-page .v18-board .market-delay b,
.dashboard-page .v18-board .market-gps b,
.dashboard-page .v18-board .market-pax b,
.dashboard-page .v18-board .market-speed b{font-size:13px!important;line-height:1.18!important}
.dashboard-page .v18-board .market-dest b{font-size:15px!important;line-height:1.2!important}
.dashboard-page .v18-board .market-bus small,
.dashboard-page .v18-board .market-dest small,
.dashboard-page .v18-board .market-reg small,
.dashboard-page .v18-board .market-delay small,
.dashboard-page .v18-board .market-gps small,
.dashboard-page .v18-board .market-pax small,
.dashboard-page .v18-board .market-speed small,
.dashboard-page .v18-board .market-conn small{font-size:10px!important;line-height:1.25!important}
.dashboard-page .v18-board .market-conn b{font-size:11px!important}
.dashboard-page .v18-board .row-more{font-size:18px!important}
html[data-dashboard-wall="1"] .dashboard-page .v18-board .market-board.terminal-market{max-height:none!important}
@media(max-width:1500px){
  .dashboard-page .v18-board .market-dest b{font-size:14px!important}
  .dashboard-page .v18-board .market-bus b,
  .dashboard-page .v18-board .market-reg b,
  .dashboard-page .v18-board .market-reg.pred b,
  .dashboard-page .v18-board .market-delay b,
  .dashboard-page .v18-board .market-gps b,
  .dashboard-page .v18-board .market-pax b,
  .dashboard-page .v18-board .market-speed b{font-size:12px!important}
}


/* v0.24.13 – använd hela fysiska skärmbredden även med A+/A++.
   Tidigare krymptes body samtidigt som CSS zoom användes, vilket kunde lämna
   ett stort oanvänt mörkt fält till höger i moderna Chromium-versioner. */
html[data-ui-size="115"] body,
html[data-ui-size="130"] body{
  width:100%!important;
  max-width:none!important;
}
html[data-ui-size="115"] .app.ops-app.dashboard-page,
html[data-ui-size="130"] .app.ops-app.dashboard-page,
html[data-ui-size="115"] .app.ops-app.dashboard-page>main,
html[data-ui-size="130"] .app.ops-app.dashboard-page>main,
html[data-ui-size="115"] .content.ops-content.dashboard-content,
html[data-ui-size="130"] .content.ops-content.dashboard-content{
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
}
/* Arbetsytan och split-screen får alltid sträcka sig över all tillgänglig bredd. */
.dashboard-page .v18-workspace,
.dashboard-page .v18-board{
  width:100%!important;
  max-width:none!important;
}
@media(min-width:1501px){
  html[data-dashboard-wall="1"] .dashboard-page .v18-board{
    justify-self:stretch!important;
    justify-content:stretch!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{
    width:100%!important;
    justify-self:stretch!important;
  }
}


/* v0.24.14 – kartöversikt och fullskärmsvänlig larmkvittering. */
.dashboard-page .road-map-coverage{margin:0 0 8px;padding:7px 9px;border:1px solid #18394a;border-radius:7px;background:#081823;color:#7f9aaa;font-size:9px;line-height:1.3}
.dashboard-page .road-map-coverage b{color:#b9d9e7}.dashboard-page .road-map-coverage span{color:#6f8b9a}
html[data-theme="light"] .dashboard-page .road-map-coverage{background:#f4f8fa;border-color:#c8dae3;color:#52717f}
html[data-theme="light"] .dashboard-page .road-map-coverage b{color:#214a5c}html[data-theme="light"] .dashboard-page .road-map-coverage span{color:#607d8a}

/* v0.24.15 – Trafikverkets RoadCondition + vägkameror direkt i Lägesbilden. */
.dashboard-page .road-condition-list{display:grid;gap:6px}
.dashboard-page .road-condition-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:start;padding:8px 9px;border:1px solid #2b3f2d;border-left:3px solid var(--amber);border-radius:7px;background:#0b1a24;min-width:0}
.dashboard-page .road-condition-card.danger{border-color:#58313a;border-left-color:var(--red);background:#180f16}
.dashboard-page .road-condition-code{font-size:8px;font-weight:900;letter-spacing:.08em;color:#f4c967;white-space:nowrap;padding-top:2px}
.dashboard-page .road-condition-card.danger .road-condition-code{color:#ff9ea4}
.dashboard-page .road-condition-card strong{display:block;font-size:11px;line-height:1.2;color:#e8f4fa;overflow:hidden;text-overflow:ellipsis}
.dashboard-page .road-condition-card p{margin:3px 0 0;font-size:9px;line-height:1.25;color:#8da4b1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dashboard-page .road-condition-more,.dashboard-page .camera-more{padding:6px 8px;border:1px dashed #29485a;border-radius:6px;color:#7f9ead;font-size:9px;text-align:center}
.dashboard-page .road-condition-clear{border-color:#19533f!important;background:#09241c!important}

.dashboard-page .tv-camera-list{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px!important}
.dashboard-page .tv-camera-card{display:block;min-width:0;border:1px solid #1d3c4e;border-radius:8px;overflow:hidden;background:#071722;text-decoration:none;color:inherit}
.dashboard-page .tv-camera-card:hover{border-color:#3282a6;filter:brightness(1.06)}
.dashboard-page .tv-camera-card img,.dashboard-page .camera-no-photo{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#05101a}
.dashboard-page .camera-no-photo{display:grid;place-items:center;color:#607c8c;font-size:9px}
.dashboard-page .tv-camera-copy{padding:6px 7px;min-width:0}
.dashboard-page .tv-camera-copy span{display:block;color:#58a9c9;font-size:7px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.dashboard-page .tv-camera-copy strong{display:block;margin-top:2px;color:#dcebf3;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-page .tv-camera-copy small{display:block;margin-top:2px;color:#758d9b;font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-page .tv-camera-list>.camera-more{grid-column:1/-1}

@media(min-width:1501px){
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-situation-scroll{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-template-rows:repeat(3,minmax(118px,1fr))!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-feed-group{padding:7px!important}
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .road-condition-card{padding:6px 7px}
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .tv-camera-copy{padding:5px 6px}
}
@media(max-height:850px) and (min-width:1501px){
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture .v202-situation-scroll{grid-template-rows:repeat(3,minmax(98px,1fr))!important}
  html[data-dashboard-wall="1"] .dashboard-page .tv-camera-list{grid-template-columns:repeat(4,minmax(0,1fr))!important}
  html[data-dashboard-wall="1"] .dashboard-page .tv-camera-card:nth-child(n+3){display:none}
}
html[data-theme="light"] .dashboard-page .road-condition-card{background:#fffaf0;border-color:#e3c77e;color:#173746}
html[data-theme="light"] .dashboard-page .road-condition-card.danger{background:#fff0f1;border-color:#e5a7ac}
html[data-theme="light"] .dashboard-page .road-condition-card strong,html[data-theme="light"] .dashboard-page .tv-camera-copy strong{color:#173746}
html[data-theme="light"] .dashboard-page .road-condition-card p,html[data-theme="light"] .dashboard-page .tv-camera-copy small{color:#617986}
html[data-theme="light"] .dashboard-page .tv-camera-card{background:#fff;border-color:#c8dbe4}
html[data-theme="light"] .dashboard-page .camera-no-photo{background:#edf4f7;color:#617986}
html[data-theme="light"] .dashboard-page .road-condition-clear{background:#edf9f3!important;border-color:#a8d8c3!important}

/* v0.25.0 – Gotland omvärldsbevakning: färja, flyg, hamn, Region Gotland
   och egen framkomlighetsanalys. Håll informationen öppen och skannbar. */
.dashboard-page .source-dot{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.dashboard-page .source-dot em{font-style:normal;font-size:6px;font-weight:900;letter-spacing:.05em;opacity:.78}
.dashboard-page .source-dot.bad{color:#ff969e!important}.dashboard-page .source-dot.bad i{background:var(--red)!important;box-shadow:0 0 8px rgba(255,95,104,.55)}
.dashboard-page .source-dot.warn,.dashboard-page .source-dot.fallback{color:#f2c66c!important}.dashboard-page .source-dot.warn i,.dashboard-page .source-dot.fallback i{background:var(--amber)!important}

.dashboard-page .external-monitor-body{padding:7px;min-width:0}
.dashboard-page .external-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;min-width:0}
.dashboard-page .external-grid>section{min-width:0;padding:8px;border:1px solid #1b3546;border-radius:8px;background:#081721}
.dashboard-page .external-grid>section>span{display:block;color:#5c91a8;font-size:7px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.dashboard-page .external-grid>section>h3{margin:3px 0 6px;color:#e6f2f7;font-size:12px;line-height:1.15}
.dashboard-page .external-row,.dashboard-page .external-clear{display:block;min-width:0;padding:6px 7px;margin-top:4px;border:1px solid #183649;border-radius:6px;background:#091c28;text-decoration:none;color:inherit}
.dashboard-page .external-row b{display:block;color:#dcebf3;font-size:10px;line-height:1.18;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-page .external-row small,.dashboard-page .external-clear{color:#7893a2;font-size:8px;line-height:1.25}
.dashboard-page .external-row small{display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-page .external-row.alert{border-left:3px solid var(--amber);background:#1a170d}
.dashboard-page .external-row.congestion{border-left-color:var(--red);background:#1c1015}
.dashboard-page .external-row.link{border-style:dashed}.dashboard-page .external-row.link:hover{border-color:#3c7f9e;background:#0d2635}
.dashboard-page .external-clear{border-color:#174638;background:#09221b;color:#71cda8}

@media(min-width:1501px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#external-monitor-panel{
    grid-column:1/-1!important;grid-row:4!important;min-height:0!important;max-height:225px!important;overflow:hidden!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{
    grid-row:5!important;min-height:180px!important;height:100%!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>.future-slots{grid-row:6!important}
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{
    grid-template-rows:auto auto auto auto minmax(180px,1fr) auto!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .external-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  html[data-dashboard-wall="1"] .dashboard-page .external-grid>section{padding:6px 7px!important}
  html[data-dashboard-wall="1"] .dashboard-page .external-row:nth-of-type(n+4){display:none!important}
}
@media(min-width:1501px) and (max-height:900px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#external-monitor-panel{max-height:188px!important}
  html[data-dashboard-wall="1"] .dashboard-page .external-row:nth-of-type(n+3){display:none!important}
  html[data-dashboard-wall="1"] .dashboard-page .external-grid>section{padding:5px 6px!important}
}
@media(max-width:1500px){.dashboard-page .external-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.dashboard-page .external-grid{grid-template-columns:1fr}}

html[data-theme="light"] .dashboard-page .external-grid>section{background:#fff;border-color:#cadbe3}
html[data-theme="light"] .dashboard-page .external-grid>section>h3,html[data-theme="light"] .dashboard-page .external-row b{color:#173746}
html[data-theme="light"] .dashboard-page .external-row{background:#f8fbfc;border-color:#cadce5}
html[data-theme="light"] .dashboard-page .external-row small{color:#607b89}
html[data-theme="light"] .dashboard-page .external-row.alert{background:#fff8e8;border-left-color:#c79218}
html[data-theme="light"] .dashboard-page .external-row.congestion{background:#fff0f1;border-left-color:#cf4d59}
html[data-theme="light"] .dashboard-page .external-clear{background:#edf8f3;border-color:#acd6c3;color:#23684e}


/* v0.25.1 – fällbara operativa paneler.
   TL kan hålla bara det som behövs öppet. Valet sparas lokalt på skärmen.
   Nya larm/händelser öppnar rätt panel automatiskt och en panel som endast
   öppnades av ett automatiskt larm fälls ihop igen när läget normaliseras. */
.dashboard-page .v18-railhead.collapsible-head{
  justify-content:flex-start!important;
  gap:10px!important;
  padding-right:8px!important;
}
.dashboard-page .v18-railhead.collapsible-head>div:first-child{min-width:0}
.dashboard-page .v18-railhead.collapsible-head>small,
.dashboard-page .v18-railhead.collapsible-head>.v18-count{margin-left:auto!important}
.dashboard-page .panel-collapse-button{
  flex:0 0 auto;
  width:32px;
  height:32px;
  display:grid;
  place-items:center;
  border:1px solid #29495b;
  border-radius:7px;
  background:#0d2230;
  color:#b7d4e1;
  font-size:19px;
  font-weight:800;
  line-height:1;
  cursor:pointer;
}
.dashboard-page .panel-collapse-button:hover{background:#123247;border-color:#3c7897;color:#fff}
.dashboard-page .v18-rail-section.is-collapsed{
  min-height:52px!important;
  height:52px!important;
  max-height:52px!important;
  overflow:hidden!important;
  display:block!important;
  align-self:start!important;
}
.dashboard-page .v18-rail-section.is-collapsed>.v18-railhead{
  min-height:50px!important;
  height:50px!important;
  max-height:50px!important;
  border-bottom:0!important;
}
.dashboard-page .v18-rail-section.is-collapsed>:not(.v18-railhead):not(.panel-new-badge){display:none!important}
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture.is-collapsed,
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#external-monitor-panel.is-collapsed{
  min-height:52px!important;
  height:52px!important;
  max-height:52px!important;
  display:block!important;
  overflow:hidden!important;
}
/* Om Lägesbilden är stängd ska dess gamla flexrad inte reservera hundratals px. */
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage:has(#situation-picture.is-collapsed){
  grid-template-rows:auto auto auto auto auto auto!important;
  align-content:start!important;
}
/* Hela högersidan får scrolla som en sammanhängande yta om användaren väljer
   att ha många paneler öppna, i stället för flera små scrollfönster. */
@media(min-width:1501px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{
    overflow-y:auto!important;
    overflow-x:hidden!important;
    scrollbar-gutter:stable;
    padding-right:3px!important;
  }
}
html[data-theme="light"] .dashboard-page .panel-collapse-button{
  background:#f3f8fa;
  border-color:#bfd2dc;
  color:#31596b;
}
html[data-theme="light"] .dashboard-page .panel-collapse-button:hover{background:#e5f1f6;border-color:#8fb7ca;color:#173746}

/* v0.25.2 – personlig kontrollrumslayout per användare.
   Panelerna kan flyttas, ändra bredd/höjd och innehållet kan scrollas i den
   storlek användaren själv valt. */
@media(min-width:1101px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{
    grid-template-columns:repeat(12,minmax(0,1fr))!important;
    grid-template-rows:none!important;
    grid-auto-rows:max-content!important;
    grid-auto-flow:dense!important;
    align-content:start!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    scrollbar-gutter:stable;
    gap:10px!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>.v18-rail-section{
    grid-column:span var(--user-panel-span,12)!important;
    grid-row:auto!important;
    min-width:0!important;
    max-width:none!important;
    align-self:start!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>.v18-rail-section.user-panel-height:not(.is-collapsed){
    height:var(--user-panel-height)!important;
    min-height:120px!important;
    max-height:var(--user-panel-height)!important;
    overflow:hidden!important;
    display:flex!important;
    flex-direction:column!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>.v18-rail-section.user-panel-height:not(.is-collapsed)>.v18-railhead{
    flex:0 0 auto!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>.v18-rail-section.user-panel-height:not(.is-collapsed)>:not(.v18-railhead):not(.panel-new-badge){
    min-height:0!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page #external-monitor-panel,
  html[data-dashboard-wall="1"] .dashboard-page #situation-picture{
    grid-row:auto!important;
    min-height:0!important;
    max-height:none!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .future-slots{
    grid-column:1/-1!important;
    grid-row:auto!important;
  }
}

/* Omvärldsbevakningen ska alltid gå att läsa klart. */
.dashboard-page #external-monitor-panel:not(.is-collapsed){overflow:hidden!important}
.dashboard-page #external-monitor-panel .external-monitor-body{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-gutter:stable;
  overscroll-behavior:contain;
}
.dashboard-page #external-monitor-panel .external-row:nth-of-type(n){display:block!important}
@media(min-width:1501px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#external-monitor-panel{
    max-height:none!important;
    overflow:hidden!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .external-grid>section{min-height:0!important}
}

/* Övriga paneler scrollar i innehållet när användaren väljer en fast höjd. */
.dashboard-page .user-panel-height #alarm-scroll,
.dashboard-page .user-panel-height .next30-list,
.dashboard-page .user-panel-height .connection-watch-list,
.dashboard-page .user-panel-height .tl-log-list,
.dashboard-page .user-panel-height .v202-situation-scroll{
  flex:1 1 auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-gutter:stable;
  overscroll-behavior:contain;
}
.dashboard-page .user-panel-height .tl-log-form{flex:0 0 auto!important}

/* Personliga kontrollknappar i varje panel. */
.dashboard-page .panel-user-tools{
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:5px;
  flex:0 0 auto;
}
.dashboard-page .panel-drag-handle,
.dashboard-page .panel-width-button,
.dashboard-page .panel-height-button,
.dashboard-page .panel-collapse-button{
  width:31px;
  height:31px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid #29495b;
  border-radius:7px;
  background:#0d2230;
  color:#b7d4e1;
  font-size:15px;
  font-weight:850;
  line-height:1;
  cursor:pointer;
}
.dashboard-page .panel-drag-handle{cursor:grab;font-size:17px}
.dashboard-page .panel-drag-handle:active{cursor:grabbing}
.dashboard-page .panel-width-button:hover,
.dashboard-page .panel-height-button:hover,
.dashboard-page .panel-drag-handle:hover,
.dashboard-page .panel-collapse-button:hover{
  background:#123247;
  border-color:#3c7897;
  color:#fff;
}
.dashboard-page .v18-rail-section.panel-dragging{opacity:.48!important}
.dashboard-page .v18-rail-section.panel-drop-target{outline:2px dashed #50c5e9!important;outline-offset:3px}
.dashboard-page .v18-railhead.collapsible-head>small,
.dashboard-page .v18-railhead.collapsible-head>.v18-count{margin-left:0!important}

.dashboard-page .panel-manager-actions{display:flex;gap:5px;align-items:center}
.dashboard-page .panel-manager-title .panel-manager-actions button{white-space:nowrap}

html[data-theme="light"] .dashboard-page .panel-drag-handle,
html[data-theme="light"] .dashboard-page .panel-width-button,
html[data-theme="light"] .dashboard-page .panel-height-button,
html[data-theme="light"] .dashboard-page .panel-collapse-button{
  background:#f3f8fa;
  border-color:#bfd2dc;
  color:#31596b;
}
html[data-theme="light"] .dashboard-page .panel-drag-handle:hover,
html[data-theme="light"] .dashboard-page .panel-width-button:hover,
html[data-theme="light"] .dashboard-page .panel-height-button:hover,
html[data-theme="light"] .dashboard-page .panel-collapse-button:hover{
  background:#e5f1f6;
  border-color:#8fb7ca;
  color:#173746;
}

/* På mindre skärmar prioriteras läsbarhet framför fri bredd. */
@media(max-width:1100px){
  .dashboard-page .panel-drag-handle,
  .dashboard-page .panel-width-button{display:none!important}
  .dashboard-page .v18-rail-section{grid-column:1!important}
}

/* v0.25.3 – tvåkolumners trafikbord, kameror som länkar och robust personlig panel-layout. */

/* TRAFIKBORD: två busskort bredvid varandra på bred kontrollrumsskärm. */
@media(min-width:1450px){
  .dashboard-page .v18-board .market-head.terminal-head{display:none!important}
  .dashboard-page .v18-board .market-board.terminal-market{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-auto-rows:max-content!important;
    align-content:start!important;
    gap:7px!important;
    padding:7px!important;
    background:#06111a!important;
  }
  .dashboard-page .v18-board .market-row{
    display:grid!important;
    grid-template-columns:72px 46px minmax(116px,.9fr) 58px 58px 70px minmax(76px,.62fr) 28px!important;
    grid-template-rows:minmax(28px,auto) minmax(28px,auto)!important;
    column-gap:7px!important;
    row-gap:3px!important;
    min-height:78px!important;
    height:auto!important;
    padding:8px 9px!important;
    border:1px solid #173144!important;
    border-radius:9px!important;
    align-items:center!important;
    overflow:hidden!important;
  }
  .dashboard-page .v18-board .market-status{grid-column:1;grid-row:1/3!important;align-self:center!important}
  .dashboard-page .v18-board .market-line{grid-column:2;grid-row:1/3!important;align-self:center!important}
  .dashboard-page .v18-board .market-bus{grid-column:3;grid-row:1!important;min-width:0!important}
  .dashboard-page .v18-board .market-dest{grid-column:3/5;grid-row:2!important;min-width:0!important}
  .dashboard-page .v18-board .market-reg{grid-column:4;grid-row:1!important}
  .dashboard-page .v18-board .market-reg.pred{grid-column:5;grid-row:1!important}
  .dashboard-page .v18-board .market-delay{grid-column:6;grid-row:1!important}
  .dashboard-page .v18-board .market-connection{grid-column:7;grid-row:1!important;min-width:0!important}
  .dashboard-page .v18-board .market-gps{grid-column:5;grid-row:2!important}
  .dashboard-page .v18-board .market-pax{grid-column:6;grid-row:2!important}
  .dashboard-page .v18-board .market-speed{grid-column:7;grid-row:2!important}
  .dashboard-page .v18-board .row-more{grid-column:8;grid-row:1/3!important;align-self:center!important}
  .dashboard-page .v18-board .market-bus b{font-size:12px!important}
  .dashboard-page .v18-board .market-dest b{font-size:13px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .dashboard-page .v18-board .market-bus small,.dashboard-page .v18-board .market-dest small{font-size:8.5px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .dashboard-page .v18-board .market-reg b,.dashboard-page .v18-board .market-delay b,.dashboard-page .v18-board .market-gps b,.dashboard-page .v18-board .market-pax b,.dashboard-page .v18-board .market-speed b{font-size:11px!important}
  .dashboard-page .v18-board .market-reg small,.dashboard-page .v18-board .market-delay small,.dashboard-page .v18-board .market-gps small,.dashboard-page .v18-board .market-pax small,.dashboard-page .v18-board .market-speed small{font-size:8px!important}
  .dashboard-page .v18-board .market-conn small{font-size:8px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .dashboard-page .v18-board .market-board.fill-rows .market-row{height:auto!important;min-height:78px!important}
}
@media(min-width:1450px) and (max-width:1750px){
  .dashboard-page .v18-board .market-row{
    grid-template-columns:66px 42px minmax(100px,.85fr) 52px 52px 62px minmax(62px,.55fr) 24px!important;
    column-gap:5px!important;
    padding:7px!important;
  }
  .dashboard-page .v18-board .market-status b{font-size:9px!important}
  .dashboard-page .v18-board .line-badge{font-size:11px!important;min-width:31px!important;padding:3px 6px!important}
  .dashboard-page .v18-board .market-dest b{font-size:12px!important}
}

/* Kameror: ingen förhandsbild i centralen – bara tydliga länkar till aktuell Trafikverket-bild. */
.dashboard-page .tv-camera-list{display:grid!important;grid-template-columns:1fr!important;gap:6px!important}
.dashboard-page .tv-camera-card,.dashboard-page .tv-camera-card img,.dashboard-page .camera-no-photo{display:none!important}
.dashboard-page .tv-camera-link{
  display:grid!important;
  grid-template-columns:34px minmax(0,1fr) auto;
  gap:8px;
  align-items:center;
  min-height:44px;
  padding:7px 9px;
  border:1px solid #1d3c4e;
  border-radius:7px;
  background:#071722;
  color:inherit;
  text-decoration:none;
}
.dashboard-page .tv-camera-link:hover{border-color:#3282a6;background:#0b2230}
.dashboard-page .tv-camera-link>span{display:grid;place-items:center;height:27px;border-radius:6px;background:#0d2d3c;color:#66c9e9;font-size:8px;font-weight:900;letter-spacing:.06em}
.dashboard-page .tv-camera-link strong{display:block;color:#dcebf3;font-size:11px;line-height:1.2}
.dashboard-page .tv-camera-link small{display:block;margin-top:2px;color:#758d9b;font-size:8.5px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-page .tv-camera-link>b{color:#74cbe8;font-size:9px;white-space:nowrap}
.dashboard-page .tv-camera-link.disabled{opacity:.68;cursor:default}
html[data-theme="light"] .dashboard-page .tv-camera-link{background:#fff;border-color:#c8dbe4;color:#173746}
html[data-theme="light"] .dashboard-page .tv-camera-link:hover{background:#f2f8fa;border-color:#8fb9cb}
html[data-theme="light"] .dashboard-page .tv-camera-link strong{color:#173746}
html[data-theme="light"] .dashboard-page .tv-camera-link small{color:#617986}
html[data-theme="light"] .dashboard-page .tv-camera-link>span{background:#e6f4f9;color:#27677e}

/* Personlig layout: DOM-ordningen styr placeringen – ingen "dense" ompackning som flyttar rutorna efter drag. */
@media(min-width:1101px){
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage{
    grid-template-columns:repeat(12,minmax(0,1fr))!important;
    grid-auto-flow:row!important;
    grid-auto-rows:max-content!important;
    align-content:start!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#next30-panel,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#connections-watch,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#external-monitor-panel,
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture{
    grid-column:span var(--user-panel-span,12)!important;
    grid-row:auto!important;
    min-width:0!important;
    width:auto!important;
    max-width:none!important;
  }
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#action-queue.user-panel-height:not(.is-collapsed),
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#next30-panel.user-panel-height:not(.is-collapsed),
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#connections-watch.user-panel-height:not(.is-collapsed),
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#tl-log.user-panel-height:not(.is-collapsed),
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#external-monitor-panel.user-panel-height:not(.is-collapsed),
  html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage>#situation-picture.user-panel-height:not(.is-collapsed){
    height:var(--user-panel-height)!important;
    min-height:120px!important;
    max-height:var(--user-panel-height)!important;
  }
}

/* Tydliga verktyg: namn + aktuell storlek, egen rad så rubriken aldrig kolliderar. */
.dashboard-page .v18-railhead.collapsible-head{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  grid-template-rows:auto auto!important;
  gap:6px 10px!important;
  align-items:center!important;
  min-height:72px!important;
  height:auto!important;
  padding:8px 10px!important;
}
.dashboard-page .v18-railhead.collapsible-head>div:first-child{grid-column:1;grid-row:1;min-width:0!important}
.dashboard-page .v18-railhead.collapsible-head>small,
.dashboard-page .v18-railhead.collapsible-head>.v18-count{grid-column:2;grid-row:1;margin:0!important;justify-self:end!important}
.dashboard-page .panel-user-tools{
  grid-column:1/-1!important;
  grid-row:2!important;
  width:100%!important;
  margin:0!important;
  padding-top:5px!important;
  border-top:1px solid #173446;
  display:flex!important;
  flex-wrap:wrap!important;
  justify-content:flex-end!important;
  gap:5px!important;
}
.dashboard-page .panel-drag-handle,
.dashboard-page .panel-width-button,
.dashboard-page .panel-height-button,
.dashboard-page .panel-collapse-button{
  width:auto!important;
  min-width:48px!important;
  height:29px!important;
  padding:0 8px!important;
  font-size:10px!important;
  white-space:nowrap!important;
}
.dashboard-page .panel-drag-handle{min-width:74px!important;touch-action:none!important;user-select:none!important}
.dashboard-page .panel-drag-handle>span{font-size:14px;margin-right:5px}
.dashboard-page .panel-drag-handle>em{font-style:normal;font-size:9px;font-weight:850}
.dashboard-page .panel-collapse-button{min-width:34px!important;font-size:17px!important;padding:0 7px!important}
.dashboard-page .v18-rail-section.panel-dragging{opacity:.58!important;z-index:80!important;box-shadow:0 0 0 2px #4fc5e9,0 14px 38px rgba(0,0,0,.35)!important}
.dashboard-page .v18-rail-section.panel-drop-target{outline:2px dashed #50c5e9!important;outline-offset:3px!important}
body.panel-layout-dragging{cursor:grabbing!important;user-select:none!important}
body.panel-layout-dragging *{cursor:grabbing!important}
html[data-theme="light"] .dashboard-page .panel-user-tools{border-top-color:#d3e0e6}

/* Innehållet ska faktiskt scrolla när användaren väljer en låg panelhöjd. */
.dashboard-page .user-panel-height #external-monitor-body,
.dashboard-page .user-panel-height #alarm-scroll,
.dashboard-page .user-panel-height .next30-list,
.dashboard-page .user-panel-height .connection-watch-list,
.dashboard-page .user-panel-height .tl-log-list,
.dashboard-page .user-panel-height .v202-situation-scroll{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-gutter:stable!important;
}

/* Låt omvärldsbevakningen visa alla sektioner; panelens scrollbar tar hand om höjden. */
.dashboard-page #external-monitor-panel .external-row:nth-of-type(n){display:block!important}
.dashboard-page #external-monitor-panel .external-grid{align-items:start!important}

/* Kollapsad panel behöver inte två rader verktyg. */
.dashboard-page .v18-rail-section.is-collapsed>.v18-railhead.collapsible-head{
  grid-template-rows:auto!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  min-height:52px!important;
  height:52px!important;
  padding:6px 9px!important;
}
.dashboard-page .v18-rail-section.is-collapsed .panel-user-tools{grid-column:2!important;grid-row:1!important;border:0!important;padding:0!important;width:auto!important}
.dashboard-page .v18-rail-section.is-collapsed .panel-drag-handle,
.dashboard-page .v18-rail-section.is-collapsed .panel-width-button,
.dashboard-page .v18-rail-section.is-collapsed .panel-height-button{display:none!important}

@media(max-width:1100px){
  .dashboard-page .panel-user-tools{justify-content:flex-end!important}
  .dashboard-page .panel-drag-handle,.dashboard-page .panel-width-button{display:none!important}
}


/* v0.25.4 – fullhöjds trafikbord + automatisk sidomeny för maximal arbetsyta. */

/* Trafikbordet använder hela återstående höjden ned till nederkant, i stället
   för att sluta när sista synliga busskortet är ritat. */
@media(min-width:1101px){
  body.dashboard-page .content.ops-content.dashboard-content{
    height:100vh!important;
    min-height:0!important;
    overflow:hidden!important;
    display:flex!important;
    flex-direction:column!important;
    gap:8px!important;
    padding-bottom:8px!important;
  }
  body.dashboard-page .v18-header,
  body.dashboard-page .v18-kpis{flex:0 0 auto!important}
  body.dashboard-page .v18-workspace{
    flex:1 1 auto!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:hidden!important;
    margin-bottom:0!important;
  }
  body.dashboard-page .v18-board{
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
  }
  body.dashboard-page .v18-board .v18-boardbar{flex:0 0 auto!important}
  body.dashboard-page .v18-board .market-board.terminal-market{
    flex:1 1 auto!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    align-content:start!important;
  }
}

/* På breda skärmar döljs vänstermenyn till en smal kant. För muspekaren till
   kanten så glider hela menyn fram ovanpå arbetsytan. Varje användare kan
   fästa menyn via knappen under VISNING. */
@media(min-width:1200px){
  body.dashboard-page .app.ops-app.dashboard-page{
    grid-template-columns:18px minmax(0,1fr)!important;
    width:100%!important;
    min-width:0!important;
  }
  body.dashboard-page .app.ops-app.dashboard-page>main{
    grid-column:2!important;
    min-width:0!important;
    width:100%!important;
  }
  body.dashboard-page .ops-sidebar{
    position:fixed!important;
    top:0!important;
    left:0!important;
    width:190px!important;
    height:100vh!important;
    z-index:120!important;
    transform:translateX(-172px);
    transition:transform .18s ease,box-shadow .18s ease!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    box-shadow:10px 0 28px rgba(0,0,0,0)!important;
    will-change:transform;
  }
  body.dashboard-page .ops-sidebar:hover,
  body.dashboard-page .ops-sidebar:focus-within{
    transform:translateX(0)!important;
    box-shadow:12px 0 34px rgba(0,0,0,.34)!important;
  }
  body.dashboard-page .ops-sidebar::after{
    content:'›';
    position:fixed;
    left:172px;
    top:50%;
    transform:translateY(-50%);
    width:18px;
    height:58px;
    display:grid;
    place-items:center;
    border:1px solid #24465a;
    border-left:0;
    border-radius:0 8px 8px 0;
    background:#0c2230;
    color:#78bfd8;
    font-size:18px;
    font-weight:900;
    pointer-events:none;
    opacity:.9;
  }
  html[data-sidebar-pinned="1"] body.dashboard-page .app.ops-app.dashboard-page{
    grid-template-columns:190px minmax(0,1fr)!important;
  }
  html[data-sidebar-pinned="1"] body.dashboard-page .ops-sidebar{
    transform:translateX(0)!important;
    box-shadow:none!important;
  }
  html[data-sidebar-pinned="1"] body.dashboard-page .ops-sidebar::after{display:none!important}
}

.dashboard-page .sidebar-auto-toggle{
  width:100%;
  min-height:34px;
  margin:6px 0 7px;
  padding:6px 8px;
  border:1px solid #24435a;
  border-radius:7px;
  background:#0a1b28;
  color:#9fc7d8;
  font-size:10px;
  font-weight:850;
  cursor:pointer;
}
.dashboard-page .sidebar-auto-toggle:hover{background:#102b3d;border-color:#39718f;color:#e7f8ff}
html[data-theme="light"] .dashboard-page .sidebar-auto-toggle{background:#f4f8fa;border-color:#bfd1da;color:#31596b}
html[data-theme="light"] .dashboard-page .sidebar-auto-toggle:hover{background:#e8f2f6;border-color:#8eb5c6;color:#173746}
html[data-theme="light"] body.dashboard-page .ops-sidebar::after{background:#eef6f9;border-color:#b9d0db;color:#35697e}

/* Små skärmar behåller vanlig fast meny – auto-döljningen är en desktopfunktion. */
@media(max-width:1199px){
  body.dashboard-page .ops-sidebar{transform:none!important;position:sticky!important;width:auto!important}
  body.dashboard-page .sidebar-auto-toggle{display:none!important}
}


/* v0.25.5 – tre kolumner på bred skärm och busskorten fyller hela trafikytans höjd. */
@media(min-width:1800px){
  body.dashboard-page .v18-board .market-board.terminal-market{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    grid-auto-rows:minmax(68px,1fr)!important;
    align-content:stretch!important;
    align-items:stretch!important;
    gap:7px!important;
    padding:7px!important;
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
  }
  body.dashboard-page .v18-board .market-row{
    height:100%!important;
    min-height:68px!important;
    max-height:none!important;
    align-self:stretch!important;
    align-content:center!important;
  }
  body.dashboard-page .v18-board .market-board.fill-rows .market-row{
    height:100%!important;
    min-height:68px!important;
    max-height:none!important;
  }
}

/* På mellanstora desktopskärmar behåller vi två kolumner, men även där ska
   de synliga bussraderna använda hela återstående höjden. */
@media(min-width:1450px) and (max-width:1799px){
  body.dashboard-page .v18-board .market-board.terminal-market{
    grid-auto-rows:minmax(72px,1fr)!important;
    align-content:stretch!important;
    align-items:stretch!important;
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
  }
  body.dashboard-page .v18-board .market-row,
  body.dashboard-page .v18-board .market-board.fill-rows .market-row{
    height:100%!important;
    min-height:72px!important;
    max-height:none!important;
    align-self:stretch!important;
  }
}


/* v0.25.6 – trafikbordet fortsätter hela vägen till skärmens nederkant.
   Höjden mäts även i JS så den fungerar med helskärm, A+/A++ och auto-dold meny. */
@media(min-width:1450px){
  body.dashboard-page .v18-board .market-board.terminal-market{
    height:var(--traffic-board-height,calc(100dvh - 205px))!important;
    min-height:var(--traffic-board-height,calc(100dvh - 205px))!important;
    max-height:var(--traffic-board-height,calc(100dvh - 205px))!important;
    align-content:start!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    scrollbar-gutter:stable;
  }
  body.dashboard-page .v18-board .market-row,
  body.dashboard-page .v18-board .market-board.fill-rows .market-row{
    height:var(--traffic-card-height,var(--row-fill-height,78px))!important;
    min-height:var(--traffic-card-height,var(--row-fill-height,78px))!important;
    max-height:var(--traffic-card-height,var(--row-fill-height,118px))!important;
  }
}

@media(min-width:1800px){
  body.dashboard-page .v18-board .market-board.terminal-market{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    grid-auto-rows:var(--traffic-card-height,var(--row-fill-height,78px))!important;
  }
}

@media(min-width:1450px) and (max-width:1799px){
  body.dashboard-page .v18-board .market-board.terminal-market{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-auto-rows:var(--traffic-card-height,var(--row-fill-height,78px))!important;
  }
}

/* Förhindra äldre max-height-regler från att kapa trafikytan. */
body.dashboard-page .v18-board .market-board.terminal-market{
  max-height:var(--traffic-board-height,none)!important;
}


/* v0.25.7 – riktig fullhöjd för trafikbordet.
   Den tomma ytan berodde på att panelområdet under trafikbordet fortfarande
   kunde ta flexhöjd även när det inte syntes. Trafikbordet äger nu hela
   återstående viewport-höjden; panelerna ligger efteråt utan att reservera yta. */
@media(min-width:1101px){
  body.dashboard-page .content.ops-content.dashboard-content{
    height:auto!important;
    min-height:100dvh!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    display:block!important;
    padding-bottom:8px!important;
  }
  body.dashboard-page .v18-workspace{
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:visible!important;
    display:block!important;
  }
  body.dashboard-page .v18-board{
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:visible!important;
    display:flex!important;
    flex-direction:column!important;
  }
  body.dashboard-page .v18-board .market-board.terminal-market{
    flex:0 0 auto!important;
    width:100%!important;
    height:var(--traffic-board-height,calc(100dvh - 150px))!important;
    min-height:var(--traffic-board-height,calc(100dvh - 150px))!important;
    max-height:var(--traffic-board-height,calc(100dvh - 150px))!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    align-content:start!important;
    box-sizing:border-box!important;
  }
  body.dashboard-page .v18-board .ops-panel-stage,
  body.dashboard-page .v18-board .board-overview{
    flex:0 0 auto!important;
  }
  body.dashboard-page .v18-board .ops-panel-stage:empty,
  body.dashboard-page .v18-board .ops-panel-stage[hidden],
  body.dashboard-page .v18-board .board-overview[hidden]{display:none!important}
}

/* Tre kolumner ska samtidigt använda hela den fulla trafikytan. */
@media(min-width:1800px){
  body.dashboard-page .v18-board .market-board.terminal-market{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    grid-auto-flow:row!important;
    gap:7px!important;
    padding:7px!important;
  }
}


/* v0.25.8 – kompakt modern larmpanel med helfärg efter allvarligaste öppna larm. */
.dashboard-page #action-queue{
  --alarm-tone:#2c5366;--alarm-card-bg:#0b1c27;--alarm-card-border:#28495b;
  height:auto!important;min-height:0!important;max-height:none!important;overflow:hidden!important;
  border:1px solid var(--alarm-tone)!important;background:rgba(11,29,40,.94)!important;
  box-shadow:0 8px 24px rgba(0,0,0,.12)!important;transition:.18s ease!important;
}
.dashboard-page #action-queue.alarm-panel-yellow{
  --alarm-tone:#d89b24;--alarm-card-bg:linear-gradient(135deg,rgba(255,186,45,.19),rgba(255,186,45,.075));--alarm-card-border:rgba(232,171,43,.62);
  background:linear-gradient(180deg,rgba(93,67,10,.30),rgba(42,34,12,.16))!important;
  box-shadow:0 0 0 1px rgba(224,160,33,.18),0 0 24px rgba(226,164,37,.16)!important;
}
.dashboard-page #action-queue.alarm-panel-red{
  --alarm-tone:#ef5a65;--alarm-card-bg:linear-gradient(135deg,rgba(239,82,96,.22),rgba(239,82,96,.08));--alarm-card-border:rgba(239,82,96,.68);
  background:linear-gradient(180deg,rgba(101,26,35,.34),rgba(44,17,22,.17))!important;
  box-shadow:0 0 0 1px rgba(239,82,96,.20),0 0 30px rgba(239,82,96,.18)!important;
}
.dashboard-page #action-queue>.v18-railhead{min-height:40px!important;height:40px!important;padding:5px 9px!important;border-bottom:1px solid var(--alarm-tone)!important;background:transparent!important}
.dashboard-page #action-queue>.v18-railhead>div{display:flex!important;align-items:baseline!important;gap:8px!important;min-width:0!important}
.dashboard-page #action-queue>.v18-railhead span{font-size:7px!important;letter-spacing:.1em!important;white-space:nowrap!important}
.dashboard-page #action-queue>.v18-railhead h2{font-size:16px!important;line-height:1!important;margin:0!important;white-space:nowrap!important}
.dashboard-page #action-queue .v18-count{min-width:24px!important;height:24px!important;padding:0 7px!important;border-radius:999px!important;background:rgba(255,255,255,.08)!important;border-color:var(--alarm-tone)!important;color:#fff!important;font-size:10px!important}
.dashboard-page #action-queue .terminal-alerts{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:6px!important;padding:6px!important;overflow:visible!important;max-height:none!important;height:auto!important}
.dashboard-page #action-queue .ops-alert-card{min-height:60px!important;height:auto!important;margin:0!important;display:block!important;border:1px solid var(--alarm-card-border)!important;border-radius:7px!important;background:var(--alarm-card-bg)!important;box-shadow:none!important;overflow:hidden!important}
.dashboard-page #action-queue .ops-alert-card.red{background:linear-gradient(135deg,rgba(239,82,96,.29),rgba(239,82,96,.11))!important;border-color:rgba(239,82,96,.78)!important}
.dashboard-page #action-queue .ops-alert-card.yellow{background:linear-gradient(135deg,rgba(238,178,46,.28),rgba(238,178,46,.10))!important;border-color:rgba(224,163,37,.78)!important}
.dashboard-page #action-queue .ops-alert-card .alarm-rail{display:none!important}
.dashboard-page #action-queue .alarm-body{padding:6px 8px!important;display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;grid-template-rows:auto auto auto!important;column-gap:7px!important;align-items:center!important}
.dashboard-page #action-queue .alarm-meta{grid-column:1/-1!important;font-size:6.5px!important;line-height:1!important;margin:0 0 3px!important;opacity:.86!important}
.dashboard-page #action-queue .alarm-meta time{font-size:6.5px!important}.dashboard-page #action-queue .auto-tag{font-size:6px!important;padding:1px 3px!important}
.dashboard-page #action-queue .alarm-body h3{grid-column:1!important;font-size:11px!important;line-height:1.12!important;margin:0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.dashboard-page #action-queue .alarm-body p{grid-column:1!important;font-size:8px!important;line-height:1.12!important;margin:2px 0 0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;display:block!important}
.dashboard-page #action-queue .alarm-footer{grid-column:2!important;grid-row:2/4!important;margin:0!important;display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:4px!important}
.dashboard-page #action-queue .alarm-status{display:none!important}.dashboard-page #action-queue .alarm-actions{display:flex!important;gap:4px!important;align-items:center!important}
.dashboard-page #action-queue .ops-action{min-height:26px!important;height:26px!important;padding:0 8px!important;border-radius:6px!important;font-size:8px!important;white-space:nowrap!important}
.dashboard-page #action-queue .ops-clear{min-height:44px!important;padding:7px 9px!important}
.dashboard-page #action-queue.user-panel-height:not(.is-collapsed){height:auto!important;max-height:none!important;min-height:0!important}.dashboard-page #action-queue.user-panel-height:not(.is-collapsed)>.terminal-alerts{overflow:visible!important;max-height:none!important}
html[data-theme="light"] .dashboard-page #action-queue{background:#fff!important}
html[data-theme="light"] .dashboard-page #action-queue.alarm-panel-yellow{background:linear-gradient(180deg,#fff3c6,#fffaf0)!important;border-color:#d89b24!important;box-shadow:0 0 0 1px rgba(213,151,29,.18),0 0 25px rgba(213,151,29,.12)!important}
html[data-theme="light"] .dashboard-page #action-queue.alarm-panel-red{background:linear-gradient(180deg,#ffdfe3,#fff4f5)!important;border-color:#e54d59!important;box-shadow:0 0 0 1px rgba(229,77,89,.18),0 0 28px rgba(229,77,89,.12)!important}
html[data-theme="light"] .dashboard-page #action-queue .ops-alert-card.yellow{background:#ffefb8!important;border-color:#d9a02b!important}
html[data-theme="light"] .dashboard-page #action-queue .ops-alert-card.red{background:#ffd9dd!important;border-color:#e95662!important}
html[data-theme="light"] .dashboard-page #action-queue>.v18-railhead{color:#183746!important}html[data-theme="light"] .dashboard-page #action-queue .v18-count{color:#173746!important;background:rgba(255,255,255,.68)!important}
@media(max-width:1800px){.dashboard-page #action-queue .terminal-alerts{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:1450px){.dashboard-page #action-queue .terminal-alerts{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:950px){.dashboard-page #action-queue .terminal-alerts{grid-template-columns:1fr!important}.dashboard-page #action-queue>.v18-railhead>div{display:block!important}.dashboard-page #action-queue>.v18-railhead{height:auto!important;min-height:42px!important}}


/* v0.25.9 – enklare personlig layout: tydligt redigeringsläge, drag i hela
   rubriken, flyttpilar och direkta val för bredd/höjd. */
.dashboard-page .panel-collapse-tools{
  display:grid!important;
  grid-template-columns:minmax(95px,1fr) minmax(130px,1fr)!important;
  gap:6px!important;
}
.dashboard-page .panel-edit-layout{
  min-height:34px;
  border:1px solid #2a5369;
  border-radius:8px;
  background:#0d2533;
  color:#bfe3ef;
  font-size:10px;
  font-weight:900;
  cursor:pointer;
  white-space:nowrap;
}
.dashboard-page .panel-edit-layout:hover{background:#123246;border-color:#3d7b99;color:#fff}
.dashboard-page .panel-edit-layout.active{background:#0d4a3b;border-color:#3da77f;color:#9af0cd}
.dashboard-page .layout-edit-hint{
  margin-top:7px;
  padding:8px 10px;
  border:1px solid #34718d;
  border-radius:8px;
  background:#0b2534;
  color:#bdd9e5;
  font-size:10px;
  line-height:1.35;
}
.dashboard-page .layout-edit-hint b{color:#fff;margin-right:8px}

/* Normalläge: bara +/- syns. Det gör rubrikerna rena och minskar risken att
   någon flyttar en ruta av misstag. */
body.dashboard-page:not(.panel-layout-edit) .panel-user-tools>:not(.panel-collapse-button){display:none!important}
body.dashboard-page:not(.panel-layout-edit) .panel-user-tools{
  width:auto!important;
  grid-column:2!important;
  grid-row:1!important;
  border:0!important;
  padding:0!important;
  justify-self:end!important;
}
body.dashboard-page:not(.panel-layout-edit) .v18-railhead.collapsible-head{
  grid-template-rows:auto!important;
  min-height:50px!important;
  padding:7px 10px!important;
}

/* Redigeringsläge: hela arbetsytan visar tydligt att rutorna går att flytta. */
body.dashboard-page.panel-layout-edit .ops-panel-stage{
  outline:2px dashed rgba(72,190,226,.5)!important;
  outline-offset:-2px!important;
  background-image:linear-gradient(rgba(68,165,196,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(68,165,196,.045) 1px,transparent 1px)!important;
  background-size:32px 32px!important;
}
body.dashboard-page.panel-layout-edit .v18-rail-section{
  box-shadow:0 0 0 2px rgba(62,167,202,.22)!important;
}
body.dashboard-page.panel-layout-edit .v18-railhead.collapsible-head{
  cursor:grab!important;
  background:#0b2130!important;
  min-height:92px!important;
}
body.dashboard-page.panel-layout-edit .v18-railhead.collapsible-head:active{cursor:grabbing!important}
body.dashboard-page.panel-layout-edit .panel-user-tools{
  justify-content:flex-start!important;
  align-items:center!important;
  gap:7px!important;
  padding:7px 0 0!important;
}
body.dashboard-page.panel-layout-edit .panel-user-tools button,
body.dashboard-page.panel-layout-edit .panel-user-tools select{
  height:34px!important;
  min-height:34px!important;
  border:1px solid #2b5b72!important;
  border-radius:7px!important;
  background:#0b1f2d!important;
  color:#d5edf6!important;
  font-size:10px!important;
  font-weight:850!important;
}
body.dashboard-page.panel-layout-edit .panel-user-tools button:hover,
body.dashboard-page.panel-layout-edit .panel-user-tools select:hover{background:#123247!important;border-color:#4b91b0!important}
.dashboard-page .panel-drag-handle{min-width:72px!important;padding:0 10px!important}
.dashboard-page .panel-move-button{width:36px!important;min-width:36px!important;padding:0!important;font-size:18px!important}
.dashboard-page .panel-width-select{min-width:104px!important;padding:0 28px 0 8px!important;cursor:pointer}
.dashboard-page .panel-height-select{min-width:108px!important;padding:0 28px 0 8px!important;cursor:pointer}
body.dashboard-page.panel-layout-edit .panel-collapse-button{margin-left:auto!important;min-width:38px!important;font-size:18px!important}
body.dashboard-page.panel-layout-edit .v18-rail-section.is-collapsed .panel-drag-handle,
body.dashboard-page.panel-layout-edit .v18-rail-section.is-collapsed .panel-move-button,
body.dashboard-page.panel-layout-edit .v18-rail-section.is-collapsed .panel-width-select,
body.dashboard-page.panel-layout-edit .v18-rail-section.is-collapsed .panel-height-select{display:inline-flex!important}
body.dashboard-page.panel-layout-edit .v18-rail-section.is-collapsed>.v18-railhead.collapsible-head{
  height:auto!important;
  min-height:88px!important;
  grid-template-rows:auto auto!important;
}
body.dashboard-page.panel-layout-edit .v18-rail-section.panel-drop-target{
  outline:3px solid #50c5e9!important;
  outline-offset:4px!important;
  box-shadow:0 0 26px rgba(80,197,233,.25)!important;
}

html[data-theme="light"] .dashboard-page .panel-edit-layout{background:#f4f9fb;color:#315b6c;border-color:#bdd3de}
html[data-theme="light"] .dashboard-page .panel-edit-layout.active{background:#def4eb;color:#176346;border-color:#91cbb4}
html[data-theme="light"] .dashboard-page .layout-edit-hint{background:#edf7fb;color:#476b7a;border-color:#9ec7d8}
html[data-theme="light"] .dashboard-page .layout-edit-hint b{color:#173746}
html[data-theme="light"] body.dashboard-page.panel-layout-edit .v18-railhead.collapsible-head,
html[data-theme="light"] body.dashboard-page.panel-layout-edit .panel-user-tools button,
html[data-theme="light"] body.dashboard-page.panel-layout-edit .panel-user-tools select{background:#fff!important;color:#234958!important;border-color:#b9d0db!important}

@media(max-width:1100px){
  .dashboard-page .panel-edit-layout{display:none!important}
}


/* v0.25.10 – layoutknappen ska alltid vara synlig i trafikbordets verktygsrad. */
.dashboard-page .board-layout-edit{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:6px!important;
  min-height:34px!important;
  padding:0 12px!important;
  border:1px solid #39718b!important;
  border-radius:8px!important;
  background:#0d2635!important;
  color:#d9f2fb!important;
  font-size:11px!important;
  font-weight:900!important;
  white-space:nowrap!important;
  cursor:pointer!important;
  position:relative!important;
  z-index:30!important;
}
.dashboard-page .board-layout-edit:hover{background:#12384d!important;border-color:#56a6c9!important;color:#fff!important}
.dashboard-page .board-layout-edit.active{background:#0d4a3b!important;border-color:#45b48a!important;color:#a8f6d7!important;box-shadow:0 0 0 2px rgba(69,180,138,.13)!important}
.dashboard-page.panel-layout-edit .board-layout-edit,.panel-layout-edit .dashboard-page .board-layout-edit{position:sticky!important;right:0!important}
html[data-theme="light"] .dashboard-page .board-layout-edit{background:#eef7fa!important;color:#23566a!important;border-color:#a9cad8!important}
html[data-theme="light"] .dashboard-page .board-layout-edit:hover{background:#e1f1f6!important;border-color:#7fb4c8!important}
html[data-theme="light"] .dashboard-page .board-layout-edit.active{background:#ddf4ea!important;color:#176449!important;border-color:#8dc8b1!important}
@media(max-width:1150px){.dashboard-page .board-layout-edit span{display:none!important}.dashboard-page .board-layout-edit{width:36px!important;padding:0!important}}


/* v0.25.11 – robust layouteditor. Ingen precisionsdragning krävs. */
.layout-editor-modal[hidden]{display:none!important}
.layout-editor-modal{position:fixed;inset:0;z-index:400;background:rgba(2,9,15,.70);backdrop-filter:blur(5px);display:flex;justify-content:flex-end;align-items:stretch;padding:14px}
.layout-editor-dialog{width:min(760px,96vw);height:100%;overflow:hidden;display:flex;flex-direction:column;background:#091722;border:1px solid #2a5268;border-radius:14px;box-shadow:0 24px 80px rgba(0,0,0,.58);color:#dcecf4}
.layout-editor-top{display:flex;gap:18px;align-items:flex-start;padding:18px 18px 14px;border-bottom:1px solid #1d3b4c;background:#0c1d29}
.layout-editor-top>div{min-width:0;flex:1}.layout-editor-top span{font-size:9px;font-weight:900;letter-spacing:.16em;color:#62b9d7}.layout-editor-top h2{margin:3px 0 5px;font-size:24px}.layout-editor-top p{margin:0;color:#8da9b7;font-size:12px;line-height:1.4}.layout-editor-close{width:40px;height:40px;border:1px solid #2d596f;border-radius:9px;background:#0d2635;color:#dff4fc;font-size:24px;cursor:pointer}
.layout-editor-presets{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid #193647;background:#08141e}.layout-editor-presets>span{font-size:10px;color:#7897a6;font-weight:850;margin-right:4px}.layout-editor-presets button{height:32px;padding:0 12px;border:1px solid #2d5b72;border-radius:8px;background:#0d2635;color:#cce7f1;font-size:10px;font-weight:850;cursor:pointer}.layout-editor-presets button:hover{background:#12364a;border-color:#4c92af}
.layout-editor-list{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:8px}
.layout-editor-row{display:grid;grid-template-columns:minmax(180px,1fr) 82px 68px 110px 120px 92px;gap:8px;align-items:center;padding:10px;border:1px solid #1f4052;border-radius:10px;background:#0a1a25}
.layout-editor-name strong{display:block;font-size:14px;color:#eefaff}.layout-editor-name small{display:block;margin-top:3px;font-size:9px;color:#7494a4}.layout-editor-order{display:grid;grid-template-columns:1fr 1fr;gap:5px}.layout-editor-order button,.layout-editor-collapse{height:34px;border:1px solid #315f75;border-radius:7px;background:#102b3a;color:#d9f0f8;font-size:16px;font-weight:900;cursor:pointer}.layout-editor-order button:disabled{opacity:.25;cursor:default}.layout-editor-collapse{font-size:10px;padding:0 8px}.layout-editor-row label{font-size:9px;color:#7493a2;font-weight:850;display:grid;gap:4px}.layout-editor-row label:has(input[type=checkbox]){display:flex;align-items:center;gap:7px}.layout-editor-row input[type=checkbox]{width:18px;height:18px;accent-color:#2da6d0}.layout-editor-row select{width:100%;height:34px;border:1px solid #2b5368;border-radius:7px;background:#0c2230;color:#dcedf5;padding:0 8px;font-size:10px;font-weight:800}
.layout-editor-footer{display:flex;justify-content:space-between;gap:10px;padding:12px 16px;border-top:1px solid #1d3a4a;background:#08141e}.layout-editor-footer button{height:38px;padding:0 16px;border-radius:8px;font-size:11px;font-weight:900;cursor:pointer}.layout-editor-footer .secondary{border:1px solid #31586c;background:#0d2230;color:#afcbd7}.layout-editor-footer .primary{border:1px solid #218d69;background:#0d4b3a;color:#aaf4d8}
body.dashboard-page.panel-layout-edit .panel-user-tools>:not(.panel-collapse-button){display:none!important}
body.dashboard-page.panel-layout-edit .v18-railhead.collapsible-head{cursor:default!important;min-height:50px!important;background:inherit!important}
body.dashboard-page.panel-layout-edit .ops-panel-stage{outline:none!important;background-image:none!important}
body.dashboard-page.panel-layout-edit .v18-rail-section{box-shadow:none!important}
html[data-theme="light"] .layout-editor-modal{background:rgba(46,65,74,.38)}
html[data-theme="light"] .layout-editor-dialog{background:#f7fafb;border-color:#b9d0da;color:#183746;box-shadow:0 24px 70px rgba(37,57,68,.24)}
html[data-theme="light"] .layout-editor-top,html[data-theme="light"] .layout-editor-presets,html[data-theme="light"] .layout-editor-footer{background:#eef5f8;border-color:#cedde4}
html[data-theme="light"] .layout-editor-top h2,html[data-theme="light"] .layout-editor-name strong{color:#173746}
html[data-theme="light"] .layout-editor-row{background:#fff;border-color:#cfdee5}
html[data-theme="light"] .layout-editor-row select,html[data-theme="light"] .layout-editor-order button,html[data-theme="light"] .layout-editor-collapse,html[data-theme="light"] .layout-editor-close,html[data-theme="light"] .layout-editor-presets button{background:#fff;color:#244b5b;border-color:#b9cfda}
@media(max-width:850px){.layout-editor-modal{padding:0}.layout-editor-dialog{width:100%;border-radius:0}.layout-editor-row{grid-template-columns:1fr 74px}.layout-editor-row label,.layout-editor-collapse{grid-column:span 1}.layout-editor-row label:nth-of-type(1){grid-column:1/-1}.layout-editor-row select{height:38px}}


/* v0.25.12 – tätare omvärldsbevakning och tillbaka med tydlig fordonsdetaljknapp. */

/* Ö-trafik & framkomlighet: använd bredden bättre och låt auto-höjd följa innehållet. */
.dashboard-page #external-monitor-panel:not(.user-panel-height):not(.is-collapsed){
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
.dashboard-page #external-monitor-panel:not(.user-panel-height) .external-monitor-body{
  flex:none!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
.dashboard-page #external-monitor-panel .external-monitor-body{padding:6px!important}
.dashboard-page #external-monitor-panel .external-grid{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr))!important;
  grid-auto-rows:max-content!important;
  align-items:start!important;
  align-content:start!important;
  gap:6px!important;
}
.dashboard-page #external-monitor-panel .external-grid>section{
  min-height:0!important;
  height:auto!important;
  padding:7px!important;
  align-self:start!important;
}
.dashboard-page #external-monitor-panel .external-grid>section>h3{margin:2px 0 5px!important;font-size:12px!important}
.dashboard-page #external-monitor-panel .external-grid>section>span{font-size:7px!important}
.dashboard-page #external-monitor-panel .external-row,
.dashboard-page #external-monitor-panel .external-clear{
  min-height:31px!important;
  padding:5px 7px!important;
  margin-top:4px!important;
}
.dashboard-page #external-monitor-panel .external-row b{font-size:9.5px!important}
.dashboard-page #external-monitor-panel .external-row small,
.dashboard-page #external-monitor-panel .external-clear{font-size:7.5px!important;line-height:1.2!important}
@media(min-width:1800px){
  .dashboard-page #external-monitor-panel .external-grid{grid-template-columns:repeat(6,minmax(0,1fr))!important}
}
@media(min-width:1250px) and (max-width:1799px){
  .dashboard-page #external-monitor-panel .external-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}
@media(max-width:1249px){
  .dashboard-page #external-monitor-panel .external-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* Fordonsdetaljer: trepunktsknappen får aldrig försvinna i 2/3-kolumnsläget. */
.dashboard-page .v18-board .market-row{
  position:relative!important;
  padding-right:44px!important;
}
.dashboard-page .v18-board .row-more{
  position:absolute!important;
  right:8px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  z-index:8!important;
  display:grid!important;
  place-items:center!important;
  width:30px!important;
  min-width:30px!important;
  height:34px!important;
  padding:0!important;
  border:1px solid #2b5367!important;
  border-radius:8px!important;
  background:#0d2634!important;
  color:#d7eef7!important;
  font-size:21px!important;
  line-height:1!important;
  opacity:.96!important;
  cursor:pointer!important;
  box-shadow:0 2px 8px rgba(0,0,0,.18)!important;
}
.dashboard-page .v18-board .row-more:hover{
  background:#123b50!important;
  border-color:#56a8c8!important;
  color:#fff!important;
  transform:translateY(-50%) scale(1.06)!important;
}
.dashboard-page .v18-board .market-row:hover .row-more{border-color:#43839e!important}
html[data-theme="light"] .dashboard-page .v18-board .row-more{
  background:#f1f7fa!important;
  color:#245a70!important;
  border-color:#b8d0dc!important;
  box-shadow:0 2px 7px rgba(43,67,78,.10)!important;
}
html[data-theme="light"] .dashboard-page .v18-board .row-more:hover{background:#e2f1f6!important;border-color:#7eb4c9!important;color:#123f52!important}

/* Kortet kan också öppnas direkt; handpekaren visar att detaljvyn finns. */
.dashboard-page .v18-board .market-row[data-device-id]{cursor:pointer!important}


/* v0.25.13 – Trafikverkets vägkartedata direkt i Lägesbilden. */
.dashboard-page .road-map-direct-note{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;margin:0 0 8px;border:1px solid #244557;border-radius:8px;background:#081922;color:#8fb0bf;font-size:10px}
.dashboard-page .road-map-direct-note b{color:#dcebf2}.dashboard-page .road-map-direct-note span{padding:3px 7px;border:1px solid #244454;border-radius:999px;background:#0c202b;color:#9fc2d0}
.dashboard-page .road-map-fallback{display:block;margin-top:7px;padding:5px 8px;color:#6f93a3;font-size:9px;text-decoration:none;text-align:right}.dashboard-page .road-map-fallback:hover{color:#b9e8fb}
.dashboard-page .tv-event-chips{display:flex;flex-wrap:wrap;gap:4px;margin:5px 0 2px}.dashboard-page .tv-event-chips span{display:inline-flex;align-items:center;min-height:20px;padding:2px 6px;border-radius:5px;background:#102939;border:1px solid #285067;color:#b9d8e5;font-size:9px;font-weight:700}
.dashboard-page .tv-traffic-item.restriction{border-left:3px solid #ef8a4b!important}.dashboard-page .tv-traffic-item.restriction .tv-event-kind{background:#3a2518;color:#ffc58f!important}
.dashboard-page .tv-ferry-list{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px!important}.dashboard-page .tv-ferry-row{display:grid;grid-template-columns:48px minmax(0,1fr);gap:2px 8px;align-items:center;min-height:42px;padding:6px 8px;border:1px solid #17394b;border-radius:7px;background:#081821}.dashboard-page .tv-ferry-row>span{grid-row:1/3;font-size:15px;font-weight:900;color:#75dfbd}.dashboard-page .tv-ferry-row>b{font-size:11px;color:#dbeaf1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashboard-page .tv-ferry-row>small{font-size:9px;color:#708e9c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashboard-page .tv-ferry-row.warn{border-color:#765d20;background:#211b0c}.dashboard-page .tv-ferry-row.warn>span{color:#ffd162}
html[data-theme="light"] .dashboard-page .road-map-direct-note{background:#f3f8fa;border-color:#c8d9e1;color:#5a7886}html[data-theme="light"] .dashboard-page .road-map-direct-note b{color:#173746}html[data-theme="light"] .dashboard-page .road-map-direct-note span{background:#fff;border-color:#c8dbe4;color:#356072}html[data-theme="light"] .dashboard-page .tv-event-chips span{background:#eef6f9;border-color:#c5dce6;color:#345d6e}html[data-theme="light"] .dashboard-page .tv-ferry-row{background:#fff;border-color:#cfdee5}html[data-theme="light"] .dashboard-page .tv-ferry-row>b{color:#173746}html[data-theme="light"] .dashboard-page .tv-ferry-row>small{color:#617c89}html[data-theme="light"] .dashboard-page .tv-ferry-row.warn{background:#fff8df;border-color:#d7bb5d}
@media(max-width:1500px){.dashboard-page .tv-ferry-list{grid-template-columns:1fr!important}}


/* v0.25.14 – Lägesbild utan överlapp + snabb kameraförhandsvisning. */
.dashboard-page #situation-picture .v202-situation-scroll{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-template-rows:none!important;
  grid-auto-rows:max-content!important;
  grid-auto-flow:row!important;
  align-items:start!important;
  align-content:start!important;
  gap:9px!important;
}
.dashboard-page #situation-picture .v202-feed-group{
  position:relative!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  align-self:start!important;
  overflow:hidden!important;
}
.dashboard-page #situation-picture .v202-feed-list{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
.dashboard-page #situation-picture.user-panel-height .v202-situation-scroll,
.dashboard-page #situation-picture.user-panel-height:not(.is-collapsed) .v202-situation-scroll{
  overflow-y:auto!important;
  overflow-x:hidden!important;
  min-height:0!important;
  max-height:none!important;
  padding-right:7px!important;
}
.dashboard-page #road-camera-group,.dashboard-page #road-service-group{z-index:1!important}
.dashboard-page #road-camera-group .tv-camera-list{position:relative!important;overflow:visible!important}
.dashboard-page #road-service-group .service-list{position:relative!important}
.dashboard-page .tv-camera-link[data-camera-preview]{cursor:zoom-in!important;position:relative!important}
.dashboard-page .tv-camera-link[data-camera-preview]::after{
  content:'Håll musen';position:absolute;right:52px;top:50%;transform:translateY(-50%);
  padding:2px 5px;border-radius:5px;background:#0e3345;color:#8bdcf5;font-size:7px;font-weight:850;
  opacity:0;pointer-events:none;transition:opacity .14s ease;
}
.dashboard-page .tv-camera-link[data-camera-preview]:hover::after{opacity:1}
.camera-hover-preview{
  position:fixed;left:0;top:0;z-index:10000;width:min(390px,42vw);padding:7px;
  border:1px solid #3b7895;border-radius:11px;background:#07141e;box-shadow:0 22px 60px rgba(0,0,0,.58);
  opacity:0;visibility:hidden;transform:translateY(4px) scale(.985);transition:opacity .12s ease,transform .12s ease,visibility .12s;
  pointer-events:none;
}
.camera-hover-preview.show{opacity:1;visibility:visible;transform:none}
.camera-hover-preview-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:3px 4px 7px}
.camera-hover-preview-head b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#e8f7fd;font-size:13px}
.camera-hover-preview-head span{color:#70a8be;font-size:8px;font-weight:900;letter-spacing:.08em;white-space:nowrap}
.camera-hover-preview img{display:block;width:100%;max-height:300px;object-fit:contain;border-radius:7px;background:#02080c}
html[data-theme="light"] .camera-hover-preview{background:#fff;border-color:#91bccf;box-shadow:0 22px 55px rgba(41,63,75,.27)}
html[data-theme="light"] .camera-hover-preview-head b{color:#173746}
html[data-theme="light"] .camera-hover-preview-head span{color:#567b8b}
html[data-theme="light"] .camera-hover-preview img{background:#edf3f6}
html[data-theme="light"] .dashboard-page .tv-camera-link[data-camera-preview]::after{background:#dff1f7;color:#24647c}
@media(max-width:1100px){
  .dashboard-page #situation-picture .v202-situation-scroll{grid-template-columns:1fr!important}
  .camera-hover-preview,.dashboard-page .tv-camera-link[data-camera-preview]::after{display:none!important}
}
\n\n/* v0.25.15 – kameror i toppfältet + stabil scroll i Lägesbild. */\n.dashboard-page .v18-header{gap:12px!important}\n.dashboard-page .v18-titleblock{flex:0 1 auto!important}\n.dashboard-page .v18-header-camera-strip{\n  flex:1 1 520px;min-width:280px;max-width:760px;height:58px;display:flex;align-items:center;gap:6px;\n  overflow-x:auto;overflow-y:hidden;padding:4px 2px;scrollbar-width:none;overscroll-behavior:contain;\n}\n.dashboard-page .v18-header-camera-strip::-webkit-scrollbar{display:none}\n.dashboard-page .header-camera-card{\n  position:relative;flex:0 0 116px;height:50px;border:1px solid #1f3a4b;border-radius:7px;overflow:hidden;background:#08141d;text-decoration:none;color:#eaf4f8;box-shadow:0 2px 8px rgba(0,0,0,.14);\n}\n.dashboard-page .header-camera-card img{width:100%;height:100%;display:block;object-fit:cover;filter:saturate(.9) contrast(1.04)}\n.dashboard-page .header-camera-card:after{content:"";position:absolute;inset:18px 0 0;background:linear-gradient(transparent,rgba(3,10,15,.92))}\n.dashboard-page .header-camera-card span{position:absolute;z-index:2;left:6px;right:6px;bottom:4px;display:flex;align-items:flex-end;justify-content:space-between;gap:5px;min-width:0}\n.dashboard-page .header-camera-card b{font-size:8px;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 3px #000}\n.dashboard-page .header-camera-card small{font-size:6.5px;color:#c2d4dc;white-space:nowrap;text-shadow:0 1px 3px #000}\n.dashboard-page .header-camera-card:hover{border-color:#4ab6df;box-shadow:0 0 0 1px rgba(74,182,223,.25),0 5px 18px rgba(0,0,0,.25);transform:translateY(-1px)}\n.dashboard-page .header-camera-empty{height:42px;min-width:180px;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:7px;align-content:center;padding:5px 8px;border:1px dashed #294556;border-radius:7px;color:#7895a5}\n.dashboard-page .header-camera-empty>span{grid-row:1/3;align-self:center;font-size:8px;font-weight:900;color:#50bfe8}\n.dashboard-page .header-camera-empty>b{font-size:9px;color:#b8cbd4}\n.dashboard-page .header-camera-empty>small{font-size:7px}\n.dashboard-page #road-camera-group.camera-moved-summary{min-height:64px!important}\n.dashboard-page #road-camera-group.camera-moved-summary .v202-feed-head{padding-bottom:0!important}\n.dashboard-page #situation-picture .v202-situation-scroll{overflow-anchor:none!important;scroll-behavior:auto!important;overscroll-behavior:contain!important}\n.dashboard-page #situation-picture .v202-feed-list{overflow-anchor:none!important}\nhtml[data-theme="light"] .dashboard-page .header-camera-card{background:#fff;border-color:#bfd1da;color:#183b49}\nhtml[data-theme="light"] .dashboard-page .header-camera-card:after{background:linear-gradient(transparent,rgba(10,25,32,.82))}\nhtml[data-theme="light"] .dashboard-page .header-camera-empty{background:#f7fafb;border-color:#bfd1da;color:#5e7885}\n@media(max-width:1850px){.dashboard-page .v18-header-camera-strip{max-width:560px}.dashboard-page .header-camera-card{flex-basis:104px}}\n@media(max-width:1550px){.dashboard-page .v18-header-camera-strip{display:none!important}}\n

/* v0.25.16 – kompakta kameraminiatyrer i den lediga toppytan.
   Bara en liten bild syns; större bild visas vid hover. */
.dashboard-page .v18-header{
  flex-wrap:nowrap!important;
  min-height:72px!important;
  max-height:78px!important;
  overflow:visible!important;
}
.dashboard-page .v18-titleblock{flex:0 1 auto!important;min-width:360px!important}
.dashboard-page .v18-headright{flex:0 0 auto!important}
.dashboard-page .v18-header-camera-strip{
  flex:0 1 360px!important;
  min-width:180px!important;
  max-width:360px!important;
  width:auto!important;
  height:34px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:4px!important;
  padding:2px 4px!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  border-left:1px solid #183042;
  border-right:1px solid #183042;
}
.dashboard-page .header-camera-label{
  flex:0 0 auto;
  margin-right:2px;
  color:#5f8da3;
  font-size:7px;
  font-weight:900;
  letter-spacing:.11em;
  writing-mode:horizontal-tb;
}
.dashboard-page .header-camera-card{
  position:relative!important;
  flex:0 0 44px!important;
  width:44px!important;
  height:28px!important;
  border:1px solid #234659!important;
  border-radius:5px!important;
  overflow:hidden!important;
  background:#08141d!important;
  box-shadow:none!important;
  transform:none!important;
  cursor:zoom-in!important;
}
.dashboard-page .header-camera-card img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  filter:saturate(.9) contrast(1.05)!important;
}
.dashboard-page .header-camera-card:after{display:none!important}
.dashboard-page .header-camera-card span{display:none!important}
.dashboard-page .header-camera-card:hover{
  border-color:#55c8ef!important;
  box-shadow:0 0 0 1px rgba(85,200,239,.32)!important;
  transform:none!important;
}
.dashboard-page .header-camera-empty{
  height:28px!important;
  min-width:150px!important;
  padding:3px 7px!important;
  grid-template-columns:auto 1fr!important;
}
.dashboard-page .header-camera-empty>b{font-size:8px!important}
.dashboard-page .header-camera-empty>small{font-size:6px!important}

/* Förhandsvisningen används även för de små kamerorna i toppfältet. */
.dashboard-page .header-camera-card[data-camera-preview]{cursor:zoom-in!important}
.camera-hover-preview{z-index:10000!important;pointer-events:none!important}

html[data-theme="light"] .dashboard-page .v18-header-camera-strip{
  border-color:#cfdee5!important;
}
html[data-theme="light"] .dashboard-page .header-camera-label{color:#537789!important}
html[data-theme="light"] .dashboard-page .header-camera-card{
  background:#fff!important;
  border-color:#b9cfda!important;
}
html[data-theme="light"] .dashboard-page .header-camera-card:hover{border-color:#4d9fbe!important}

@media(max-width:1850px){
  .dashboard-page .v18-header-camera-strip{flex-basis:300px!important;max-width:300px!important}
  .dashboard-page .header-camera-card{flex-basis:40px!important;width:40px!important}
}
@media(max-width:1650px){
  .dashboard-page .v18-header-camera-strip{flex-basis:250px!important;max-width:250px!important}
  .dashboard-page .header-camera-card:nth-of-type(n+5){display:none!important}
}
@media(max-width:1450px){
  .dashboard-page .v18-header-camera-strip{display:none!important}
}

/* v0.25.17 – kompakt operativ lägesbevakning bredvid kamerorna.
   Siffran visar hur många saker som behöver uppmärksamhet; hover ger snabbinfo. */
.dashboard-page .v18-header-camera-strip{
  flex-basis:230px!important;
  max-width:230px!important;
  min-width:190px!important;
}
.dashboard-page .v18-header-watch-strip{
  flex:0 1 390px;
  min-width:330px;
  max-width:430px;
  height:36px;
  display:flex;
  align-items:center;
  gap:4px;
  overflow:visible;
  position:relative;
}
.dashboard-page .header-watch-chip{
  position:relative;
  flex:1 1 0;
  min-width:58px;
  height:32px;
  display:grid;
  grid-template-columns:minmax(0,1fr) 18px;
  grid-template-rows:10px 1fr;
  align-items:center;
  column-gap:4px;
  padding:3px 5px 3px 7px;
  border:1px solid #234458;
  border-radius:7px;
  background:#0a1822;
  color:#cfe3ec;
  text-align:left;
  cursor:pointer;
  overflow:visible;
}
.dashboard-page .header-watch-chip>span{
  grid-column:1;
  grid-row:1;
  color:#668ea1;
  font-size:5.7px;
  font-weight:900;
  letter-spacing:.08em;
  line-height:1;
}
.dashboard-page .header-watch-chip>b{
  grid-column:1;
  grid-row:2;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:7.5px;
  line-height:1;
}
.dashboard-page .header-watch-chip>em{
  grid-column:2;
  grid-row:1/3;
  width:18px;
  height:18px;
  display:grid;
  place-items:center;
  border-radius:999px;
  font-size:8px;
  font-weight:950;
  font-style:normal;
  background:#123247;
  color:#a8d3e6;
}
.dashboard-page .header-watch-chip.ok{border-color:#1f493e;background:#0a1e19}
.dashboard-page .header-watch-chip.ok>em{background:#123d31;color:#71e4b5}
.dashboard-page .header-watch-chip.warn{border-color:#725a1c;background:#261e08;box-shadow:inset 0 -2px 0 #d7a719}
.dashboard-page .header-watch-chip.warn>em{background:#7d5c07;color:#fff0a4}
.dashboard-page .header-watch-chip.danger{border-color:#81353b;background:#2b1114;box-shadow:inset 0 -2px 0 #ec5963,0 0 12px rgba(236,89,99,.12)}
.dashboard-page .header-watch-chip.danger>em{background:#8d2831;color:#ffe1e4}
.dashboard-page .header-watch-chip:hover{filter:brightness(1.12);z-index:120}
.dashboard-page .header-watch-popover{
  position:absolute;
  z-index:200;
  left:0;
  top:37px;
  width:290px;
  padding:9px 10px;
  border:1px solid #37657b;
  border-radius:9px;
  background:#07141e;
  color:#cfe2eb;
  box-shadow:0 18px 45px rgba(0,0,0,.48);
  opacity:0;
  visibility:hidden;
  transform:translateY(3px);
  pointer-events:none;
  transition:.12s ease;
  white-space:normal;
}
.dashboard-page .header-watch-chip:nth-last-child(-n+2) .header-watch-popover{left:auto;right:0}
.dashboard-page .header-watch-chip:hover .header-watch-popover,
.dashboard-page .header-watch-chip:focus-visible .header-watch-popover{opacity:1;visibility:visible;transform:none}
.dashboard-page .header-watch-popover>strong{display:block;margin-bottom:6px;color:#effaff;font-size:11px}
.dashboard-page .header-watch-popover>div{padding:4px 0;border-top:1px solid #17303f;font-size:9px;line-height:1.25}
.dashboard-page .header-watch-popover>small{display:block;margin-top:6px;color:#6f94a5;font-size:7px}

html[data-theme="light"] .dashboard-page .header-watch-chip{background:#fff;color:#1d3a47;border-color:#c2d4dd}
html[data-theme="light"] .dashboard-page .header-watch-chip.ok{background:#edf9f4;border-color:#b9dfcf}
html[data-theme="light"] .dashboard-page .header-watch-chip.warn{background:#fff7df;border-color:#e1c56e}
html[data-theme="light"] .dashboard-page .header-watch-chip.danger{background:#fff0f1;border-color:#e7a0a5}
html[data-theme="light"] .dashboard-page .header-watch-popover{background:#fff;color:#24414e;border-color:#a8c5d2;box-shadow:0 18px 40px rgba(41,65,77,.25)}
html[data-theme="light"] .dashboard-page .header-watch-popover>strong{color:#173746}
html[data-theme="light"] .dashboard-page .header-watch-popover>div{border-color:#dbe7ec}

@media(max-width:1900px){
  .dashboard-page .v18-header-watch-strip{max-width:350px;min-width:300px}
  .dashboard-page .header-watch-chip>b{font-size:7px}
}
@media(max-width:1700px){
  .dashboard-page .v18-header-camera-strip{max-width:180px!important;min-width:150px!important}
  .dashboard-page .v18-header-watch-strip{max-width:300px;min-width:270px}
  .dashboard-page .header-watch-chip>b{display:none}
  .dashboard-page .header-watch-chip{grid-template-rows:1fr;grid-template-columns:1fr 18px;padding-left:5px}
  .dashboard-page .header-watch-chip>span{grid-row:1;font-size:6px}
  .dashboard-page .header-watch-chip>em{grid-row:1}
}
@media(max-width:1450px){
  .dashboard-page .v18-header-watch-strip{display:none!important}
}


/* v0.25.18 – flytta upp ö-/omvärldsbevakning till toppfältet och fyll ut ytan bättre. */
.dashboard-page .v18-header{align-items:flex-start!important}
.dashboard-page .v18-titleblock{min-width:260px!important}
.dashboard-page .v18-header-watch-strip{
  flex:1 1 760px!important;
  min-width:560px!important;
  max-width:920px!important;
  height:auto!important;
  min-height:36px!important;
  display:flex!important;
  flex-wrap:wrap!important;
  align-content:flex-start!important;
  gap:5px!important;
  padding:2px 0!important;
}
.dashboard-page .header-watch-chip{
  flex:1 1 102px!important;
  max-width:128px!important;
  min-width:92px!important;
}
.dashboard-page .v18-header-camera-strip{
  flex:0 1 310px!important;
  max-width:310px!important;
  min-width:220px!important;
}
.dashboard-page #external-monitor-panel{display:none!important}
.dashboard-page .v18-headright{margin-left:auto!important}
@media(max-width:1850px){
  .dashboard-page .v18-header-watch-strip{max-width:760px!important;min-width:480px!important}
  .dashboard-page .header-watch-chip{min-width:86px!important;max-width:118px!important}
}
@media(max-width:1550px){
  .dashboard-page .v18-header-watch-strip{min-width:360px!important;max-width:560px!important}
  .dashboard-page .header-watch-chip{flex-basis:84px!important}
}
@media(max-width:1280px){
  .dashboard-page .v18-header-watch-strip{display:none!important}
}


/* v0.25.20 – Lägesbilden borttagen; all omvärldsstatus bor i toppfältet.
   Visa samtliga nio vägkameror som små thumbnails. */
.dashboard-page .v18-header-camera-strip{
  flex:0 0 500px!important;
  width:500px!important;
  max-width:500px!important;
  min-width:500px!important;
  height:38px!important;
  gap:4px!important;
  padding:2px 0!important;
  overflow:visible!important;
}
.dashboard-page .header-camera-label{font-size:6px!important;margin-right:2px!important;white-space:nowrap!important}
.dashboard-page .header-camera-card{
  flex:0 0 48px!important;
  width:48px!important;
  height:32px!important;
  border-radius:5px!important;
}
.dashboard-page .header-camera-card:after{display:none!important}
.dashboard-page .header-camera-card span{display:none!important}
.dashboard-page .header-camera-card img{width:100%!important;height:100%!important;object-fit:cover!important}
.dashboard-page .v18-header-watch-strip{
  flex:1 1 900px!important;
  min-width:680px!important;
  max-width:none!important;
  min-height:38px!important;
  gap:5px!important;
  flex-wrap:nowrap!important;
}
.dashboard-page .header-watch-chip{
  flex:1 1 0!important;
  min-width:82px!important;
  max-width:128px!important;
  height:34px!important;
}
.dashboard-page .header-watch-chip.is-open .header-watch-popover{opacity:1!important;visibility:visible!important;transform:none!important}
.dashboard-page #situation-picture{display:none!important}
@media(max-width:1900px){
  .dashboard-page .v18-header-camera-strip{flex-basis:450px!important;width:450px!important;min-width:450px!important;max-width:450px!important}
  .dashboard-page .header-camera-card{flex-basis:42px!important;width:42px!important}
  .dashboard-page .v18-header-watch-strip{min-width:580px!important}
}
@media(max-width:1550px){
  .dashboard-page .v18-header-camera-strip{display:flex!important;flex-basis:390px!important;width:390px!important;min-width:390px!important;max-width:390px!important}
  .dashboard-page .header-camera-card{flex-basis:36px!important;width:36px!important}
  .dashboard-page .v18-header-watch-strip{min-width:420px!important}
}
@media(max-width:1250px){
  .dashboard-page .v18-header-camera-strip{display:none!important}
}


/* v0.25.21 – bussens färg visar trafikläget; ta bort textetiketter som
   "INOM TOLERANS", "TIDIG" och "FÖRSENAD" från själva busskortet. */
.dashboard-page .v18-board .market-status{
  justify-content:center!important;
  min-width:0!important;
}
.dashboard-page .v18-board .market-status:not(:has(b)){
  width:16px!important;
}
.dashboard-page .v18-board .market-status:not(:has(b)) .market-dot{
  width:9px!important;
  height:9px!important;
}

/* Färgen ligger på hela busskortet i stället för i en statusetikett. */
.dashboard-page .v18-board .market-row.state-green{
  border-color:#1e5b48!important;
  background:linear-gradient(90deg,rgba(40,205,145,.16),rgba(8,30,26,.72) 18%,#091820 58%)!important;
}
.dashboard-page .v18-board .market-row.state-yellow{
  border-color:#8a681a!important;
  background:linear-gradient(90deg,rgba(242,187,73,.28),rgba(45,35,12,.78) 20%,#151a1d 62%)!important;
}
.dashboard-page .v18-board .market-row.state-red{
  border-color:#8b343c!important;
  background:linear-gradient(90deg,rgba(239,98,107,.32),rgba(52,18,24,.82) 22%,#18151a 64%)!important;
}
.dashboard-page .v18-board .market-row.state-muted{
  background:linear-gradient(90deg,rgba(113,137,153,.10),#0a151d 22%)!important;
}

/* När statusordet är borta används utrymmet av buss/tur-informationen. */
@media(min-width:1450px){
  .dashboard-page .v18-board .market-row{
    grid-template-columns:18px 46px minmax(128px,1fr) 58px 58px 70px minmax(76px,.62fr) 28px!important;
  }
  .dashboard-page .v18-board .market-status{grid-column:1!important}
  .dashboard-page .v18-board .market-line{grid-column:2!important}
  .dashboard-page .v18-board .market-bus{grid-column:3!important}
  .dashboard-page .v18-board .market-dest{grid-column:3/5!important}
  .dashboard-page .v18-board .market-reg{grid-column:4!important}
  .dashboard-page .v18-board .market-reg.pred{grid-column:5!important}
  .dashboard-page .v18-board .market-delay{grid-column:6!important}
  .dashboard-page .v18-board .market-connection{grid-column:7!important}
  .dashboard-page .v18-board .market-gps{grid-column:5!important}
  .dashboard-page .v18-board .market-pax{grid-column:6!important}
  .dashboard-page .v18-board .market-speed{grid-column:7!important}
  .dashboard-page .v18-board .row-more{grid-column:8!important}
  .dashboard-page .v18-board .market-status:has(b){
    grid-column:1/3!important;
    justify-content:flex-start!important;
    width:auto!important;
    z-index:2;
  }
}

html[data-theme="light"] .dashboard-page .v18-board .market-row.state-green{
  border-color:#a9d9c6!important;
  background:linear-gradient(90deg,#e8f8f1,#ffffff 24%)!important;
}
html[data-theme="light"] .dashboard-page .v18-board .market-row.state-yellow{
  border-color:#e0c571!important;
  background:linear-gradient(90deg,#fff2c9,#ffffff 24%)!important;
}
html[data-theme="light"] .dashboard-page .v18-board .market-row.state-red{
  border-color:#e5a0a6!important;
  background:linear-gradient(90deg,#ffe2e5,#ffffff 24%)!important;
}
html[data-theme="light"] .dashboard-page .v18-board .market-row.state-muted{
  background:linear-gradient(90deg,#edf2f5,#ffffff 24%)!important;
}


/* v0.25.22 – kompaktare trafikbord och toppfält.
   Statuspunkten framför linjen tas bort. Datakällornas onlinestatus flyttas
   från toppfältet till vänstermenyn direkt under "Byt lösenord". */

/* TRAFIKBORD: mindre luft men samma läsbarhet. */
.dashboard-page .v18-board .market-dot{display:none!important}
@media(min-width:1450px){
  .dashboard-page .v18-board .market-row{
    grid-template-columns:46px minmax(132px,1.08fr) 52px 56px 58px minmax(68px,.58fr) 24px!important;
    grid-template-rows:minmax(23px,auto) minmax(23px,auto)!important;
    min-height:58px!important;
    padding:4px 6px!important;
    column-gap:5px!important;
    row-gap:1px!important;
  }
  .dashboard-page .v18-board .market-status:not(:has(b)){display:none!important}
  .dashboard-page .v18-board .market-line{grid-column:1!important;grid-row:1/3!important;align-self:center!important}
  .dashboard-page .v18-board .market-bus{grid-column:2!important;grid-row:1!important}
  .dashboard-page .v18-board .market-dest{grid-column:2/4!important;grid-row:2!important}
  .dashboard-page .v18-board .market-reg{grid-column:3!important;grid-row:1!important}
  .dashboard-page .v18-board .market-reg.pred{grid-column:4!important;grid-row:1!important}
  .dashboard-page .v18-board .market-delay{grid-column:5!important;grid-row:1!important}
  .dashboard-page .v18-board .market-connection{grid-column:6!important;grid-row:1!important}
  .dashboard-page .v18-board .market-gps{grid-column:4!important;grid-row:2!important}
  .dashboard-page .v18-board .market-pax{grid-column:5!important;grid-row:2!important}
  .dashboard-page .v18-board .market-speed{grid-column:6!important;grid-row:2!important}
  .dashboard-page .v18-board .row-more{grid-column:7!important;grid-row:1/3!important}

  /* OFFLINE / EJ TUR ersätter linjebrickan i stället för att ta en egen kolumn. */
  .dashboard-page .v18-board .market-status:has(b){
    display:flex!important;grid-column:1!important;grid-row:1/3!important;width:46px!important;
    justify-content:center!important;align-items:center!important;text-align:center!important;
    line-height:1.08!important;z-index:3!important;
  }
  .dashboard-page .v18-board .market-status:has(b)+.market-line{visibility:hidden!important}
  .dashboard-page .v18-board .market-line .line-badge{min-width:40px!important;height:30px!important;font-size:12px!important}
  .dashboard-page .v18-board .market-bus b{font-size:11.5px!important}
  .dashboard-page .v18-board .market-dest b{font-size:12.5px!important}
  .dashboard-page .v18-board .market-bus small,.dashboard-page .v18-board .market-dest small{font-size:7.5px!important;margin-top:1px!important}
  .dashboard-page .v18-board .market-reg b,.dashboard-page .v18-board .market-delay b,.dashboard-page .v18-board .market-gps b,.dashboard-page .v18-board .market-pax b,.dashboard-page .v18-board .market-speed b{font-size:10px!important}
  .dashboard-page .v18-board .market-reg small,.dashboard-page .v18-board .market-delay small,.dashboard-page .v18-board .market-gps small,.dashboard-page .v18-board .market-pax small,.dashboard-page .v18-board .market-speed small{font-size:7px!important;margin-top:0!important}
  .dashboard-page .v18-board .row-more{width:22px!important;height:28px!important}
  body.dashboard-page .v18-board .market-row,body.dashboard-page .v18-board .market-board.fill-rows .market-row{min-height:58px!important}
  body.dashboard-page .v18-board .market-board.terminal-market{grid-auto-rows:minmax(58px,1fr)!important}
}

/* TOPPFÄLT: kameror och omvärldsstatus tätare, utan att förlora hoverdetaljer. */
.dashboard-page .v18-header{
  min-height:54px!important;max-height:58px!important;height:56px!important;
  padding:2px 0!important;gap:6px!important;align-items:center!important;
}
.dashboard-page .v18-titleblock{min-width:245px!important;max-width:310px!important}
.dashboard-page .v18-titleline h1{font-size:21px!important}
.dashboard-page .v18-titleblock .ops-kicker{font-size:6px!important;margin-bottom:2px!important}
.dashboard-page .v18-subline{font-size:6px!important;margin-top:1px!important}
.dashboard-page .v18-header-camera-strip{
  flex:0 0 326px!important;width:326px!important;min-width:326px!important;max-width:326px!important;
  height:30px!important;gap:3px!important;padding:1px 0!important;border-left:0!important;border-right:0!important;
}
.dashboard-page .header-camera-label{width:34px!important;font-size:5px!important;margin-right:0!important}
.dashboard-page .header-camera-card{flex:0 0 29px!important;width:29px!important;height:24px!important;border-radius:4px!important}
.dashboard-page .v18-header-watch-strip{
  flex:1 1 650px!important;min-width:520px!important;max-width:760px!important;
  min-height:30px!important;height:30px!important;gap:3px!important;flex-wrap:nowrap!important;
}
.dashboard-page .header-watch-chip{
  min-width:52px!important;max-width:72px!important;height:28px!important;padding:2px 4px 2px 5px!important;
  grid-template-columns:minmax(0,1fr) 16px!important;grid-template-rows:1fr!important;column-gap:2px!important;
}
.dashboard-page .header-watch-chip>span{display:none!important}
.dashboard-page .header-watch-chip>b{grid-column:1!important;grid-row:1!important;font-size:6.4px!important;line-height:1.05!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.dashboard-page .header-watch-chip>em{grid-column:2!important;grid-row:1!important;width:16px!important;height:16px!important;font-size:7px!important}
.dashboard-page .header-watch-popover{top:31px!important}
.dashboard-page .v18-headright{gap:5px!important}
.dashboard-page .v21-smhi-header{gap:5px!important}

/* Samma source-status-element flyttas av JS till vänstermenyn, så liveuppdateringar fortsätter. */
.dashboard-page .v18-headright>.source-status-strip{display:none!important}
.dashboard-page .sidebar-source-block{margin:7px 4px 4px;padding:7px 7px 6px;border:1px solid #172f40;border-radius:8px;background:#08151e}
.dashboard-page .sidebar-source-title{display:block;margin-bottom:5px;color:#5d7b8e;font-size:6px;font-weight:900;letter-spacing:.15em}
.dashboard-page .sidebar-source-status-slot .source-status-strip{
  display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:4px 5px!important;
  align-items:center!important;max-width:none!important;width:100%!important;
}
.dashboard-page .sidebar-source-status-slot .source-dot{min-width:0!important;gap:3px!important;font-size:6.2px!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
.dashboard-page .sidebar-source-status-slot .source-dot i{flex:0 0 5px!important;width:5px!important;height:5px!important}
.dashboard-page .sidebar-source-status-slot .source-dot em{display:none!important}
html[data-theme="light"] .dashboard-page .sidebar-source-block{background:#f7fafb!important;border-color:#cbdce4!important}
html[data-theme="light"] .dashboard-page .sidebar-source-title{color:#53717f!important}

@media(max-width:1700px){
  .dashboard-page .v18-titleblock{min-width:220px!important;max-width:270px!important}
  .dashboard-page .v18-header-camera-strip{flex-basis:300px!important;width:300px!important;min-width:300px!important;max-width:300px!important}
  .dashboard-page .header-camera-card{flex-basis:26px!important;width:26px!important}
  .dashboard-page .v18-header-watch-strip{min-width:455px!important}
  .dashboard-page .header-watch-chip{min-width:47px!important;max-width:66px!important}
}


/* v0.25.23 – bussnummer under linjenumret. Det frigör en hel del horisontell
   yta i varje tredjedelskort och låter destination/tider använda bredden bättre. */
@media(min-width:1450px){
  .dashboard-page .v18-board .market-row{
    grid-template-columns:58px minmax(96px,.82fr) 50px 54px 56px minmax(64px,.54fr) 22px!important;
    column-gap:4px!important;
  }
  .dashboard-page .v18-board .market-line{
    grid-column:1!important;
    grid-row:1/3!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:center!important;
    gap:2px!important;
    min-width:0!important;
  }
  .dashboard-page .v18-board .market-line .line-badge{
    min-width:42px!important;
    height:29px!important;
    font-size:13px!important;
  }
  .dashboard-page .v18-board .market-line .bus-under-line{
    display:block!important;
    width:56px!important;
    color:#91a8b7!important;
    font-size:7px!important;
    font-weight:850!important;
    line-height:1!important;
    text-align:center!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  .dashboard-page .v18-board .market-bus{
    grid-column:2!important;
    grid-row:1!important;
  }
  .dashboard-page .v18-board .market-bus b{
    font-size:10.5px!important;
    color:#d9e9f1!important;
  }
  .dashboard-page .v18-board .market-dest{
    grid-column:2/4!important;
    grid-row:2!important;
  }
  .dashboard-page .v18-board .market-dest b{
    font-size:13px!important;
  }
  .dashboard-page .v18-board .market-reg{grid-column:3!important;grid-row:1!important}
  .dashboard-page .v18-board .market-reg.pred{grid-column:4!important;grid-row:1!important}
  .dashboard-page .v18-board .market-delay{grid-column:5!important;grid-row:1!important}
  .dashboard-page .v18-board .market-connection{grid-column:6!important;grid-row:1!important}
  .dashboard-page .v18-board .market-gps{grid-column:4!important;grid-row:2!important}
  .dashboard-page .v18-board .market-pax{grid-column:5!important;grid-row:2!important}
  .dashboard-page .v18-board .market-speed{grid-column:6!important;grid-row:2!important}
  .dashboard-page .v18-board .row-more{grid-column:7!important;grid-row:1/3!important}

  /* OFFLINE / EJ TUR ligger som liten etikett i turfältet. Linje/buss-stapeln
     är kvar så bussnumret alltid ligger på samma plats. */
  .dashboard-page .v18-board .market-status:has(b){
    position:absolute!important;
    left:65px!important;
    top:5px!important;
    width:auto!important;
    max-width:58px!important;
    height:13px!important;
    min-height:0!important;
    padding:0 4px!important;
    border-radius:4px!important;
    font-size:6px!important;
    line-height:13px!important;
    justify-content:center!important;
    background:rgba(6,15,22,.72)!important;
    pointer-events:none!important;
  }
  .dashboard-page .v18-board .market-status:has(b)+.market-line{
    visibility:visible!important;
  }
  .dashboard-page .v18-board .market-status:has(b) b{
    font-size:6px!important;
    line-height:1!important;
  }
}
html[data-theme="light"] .dashboard-page .v18-board .market-line .bus-under-line{color:#567280!important}
html[data-theme="light"] .dashboard-page .v18-board .market-status:has(b){background:rgba(255,255,255,.88)!important}


/* v0.25.24 – toppfältets alla operativa element får samma visuella skala
   som SMHI-korten. Live-fliken i trafikbordet är borttagen. */

/* Gemensam höjd för hela översta driftremsan. */
.dashboard-page .v18-header{
  height:52px!important;
  min-height:52px!important;
  max-height:52px!important;
  gap:5px!important;
  padding:4px 0!important;
  align-items:center!important;
}

/* Titelblocket hålls inom samma höjd utan att dominera raden. */
.dashboard-page .v18-titleblock{
  min-width:245px!important;
  max-width:285px!important;
}
.dashboard-page .v18-titleline{
  gap:5px!important;
  min-height:42px!important;
}
.dashboard-page .v18-titleline h1{
  font-size:18px!important;
  line-height:1!important;
}
.dashboard-page .v18-titleblock .ops-kicker{
  font-size:5.5px!important;
  margin-bottom:1px!important;
}
.dashboard-page .v18-subline{
  display:none!important;
}

/* LIVE och AUTO-SYNK blir riktiga 42 px-kort, samma höjd som väderkorten. */
.dashboard-page .v18-live-pill,
.dashboard-page .v20-auto-pill{
  height:42px!important;
  min-height:42px!important;
  border-radius:7px!important;
  padding:0 8px!important;
  font-size:7px!important;
  letter-spacing:.04em!important;
  flex:0 0 auto!important;
}

/* Alla 9 kameror: samma 42 px höjd, hover-förstoringen är oförändrad. */
.dashboard-page .v18-header-camera-strip{
  height:42px!important;
  min-height:42px!important;
  flex:0 0 420px!important;
  width:420px!important;
  min-width:420px!important;
  max-width:420px!important;
  gap:4px!important;
  padding:0!important;
  align-items:center!important;
}
.dashboard-page .header-camera-label{
  flex:0 0 28px!important;
  width:28px!important;
  font-size:5.5px!important;
  line-height:1.05!important;
}
.dashboard-page .header-camera-card{
  flex:0 0 39px!important;
  width:39px!important;
  height:42px!important;
  border-radius:7px!important;
}
.dashboard-page .header-camera-card span{
  display:none!important;
}

/* Samtliga bevakningskort följer samma 42 px-format som SMHI-orterna. */
.dashboard-page .v18-header-watch-strip{
  height:42px!important;
  min-height:42px!important;
  flex:1 1 760px!important;
  min-width:610px!important;
  max-width:900px!important;
  gap:4px!important;
  flex-wrap:nowrap!important;
  align-items:center!important;
}
.dashboard-page .header-watch-chip{
  height:42px!important;
  min-height:42px!important;
  min-width:72px!important;
  max-width:92px!important;
  border-radius:7px!important;
  padding:4px 6px!important;
  grid-template-columns:minmax(0,1fr) 20px!important;
  grid-template-rows:11px 1fr!important;
  column-gap:4px!important;
}
.dashboard-page .header-watch-chip>span{
  display:block!important;
  grid-column:1!important;
  grid-row:1!important;
  font-size:5.5px!important;
  line-height:1!important;
}
.dashboard-page .header-watch-chip>b{
  grid-column:1!important;
  grid-row:2!important;
  font-size:7.5px!important;
  line-height:1.05!important;
}
.dashboard-page .header-watch-chip>em{
  grid-column:2!important;
  grid-row:1/3!important;
  width:20px!important;
  height:20px!important;
  font-size:8px!important;
}
.dashboard-page .header-watch-popover{
  top:45px!important;
}

/* SMHI-remsan behåller sin storlek och används som referens. */
.dashboard-page .v21-smhi-header{
  height:42px!important;
  min-height:42px!important;
  padding:0 6px!important;
  gap:5px!important;
  border-left:0!important;
  border-right:0!important;
}
.dashboard-page .v21-smhi-primary{
  min-width:118px!important;
}
.dashboard-page .v21-smhi-primary small{font-size:6px!important}
.dashboard-page .v21-smhi-primary b{font-size:12px!important}
.dashboard-page .v21-smhi-primary em{font-size:6px!important}
.dashboard-page .v21-smhi-place{
  height:42px!important;
  border-radius:7px!important;
  padding:4px 6px!important;
}

/* Klocka och åtgärdsknappar matchar samma 42 px höjd. */
.dashboard-page .v18-clock{
  height:42px!important;
  min-height:42px!important;
  padding:4px 8px!important;
}
.dashboard-page .v18-clock small{font-size:6px!important}
.dashboard-page .v18-clock b{font-size:15px!important}
.dashboard-page .v18-actions{
  height:42px!important;
  align-items:stretch!important;
}
.dashboard-page .v18-actions .ops-btn{
  height:42px!important;
  min-height:42px!important;
  border-radius:7px!important;
  padding:0 8px!important;
  font-size:7px!important;
}

/* Flikarna börjar nu med Avvikelser; Alla är standard. */
.dashboard-page .board-tabs .board-tab{
  min-width:0!important;
}

/* På något smalare skärmar används samma höjd men kortare bredder. */
@media(max-width:1900px){
  .dashboard-page .v18-header-camera-strip{
    flex-basis:360px!important;width:360px!important;min-width:360px!important;max-width:360px!important;
  }
  .dashboard-page .header-camera-card{
    flex-basis:32px!important;width:32px!important;
  }
  .dashboard-page .v18-header-watch-strip{
    min-width:500px!important;max-width:680px!important;
  }
  .dashboard-page .header-watch-chip{
    min-width:58px!important;max-width:76px!important;
  }
}
@media(max-width:1550px){
  .dashboard-page .v18-header-camera-strip{
    flex-basis:310px!important;width:310px!important;min-width:310px!important;max-width:310px!important;
  }
  .dashboard-page .header-camera-card{
    flex-basis:27px!important;width:27px!important;
  }
  .dashboard-page .v18-header-watch-strip{
    min-width:390px!important;max-width:520px!important;
  }
  .dashboard-page .header-watch-chip{
    min-width:48px!important;max-width:64px!important;
  }
  .dashboard-page .header-watch-chip>span{display:none!important}
}


/* v0.25.25 – plan/prognos/avvikelse samlas i ett kompakt tidsblock.
   På andra brytpunkter beter sig wrappern som display:contents så tidigare layout bibehålls. */
.dashboard-page .v18-board .market-times{display:contents}
@media(min-width:1450px){
  .dashboard-page .v18-board .market-row{
    grid-template-columns:58px minmax(118px,1fr) 158px minmax(56px,.44fr) 22px!important;
    column-gap:4px!important;
  }
  .dashboard-page .v18-board .market-line{grid-column:1!important;grid-row:1/3!important}
  .dashboard-page .v18-board .market-bus{grid-column:2!important;grid-row:1!important}
  .dashboard-page .v18-board .market-dest{grid-column:2/4!important;grid-row:2!important}

  .dashboard-page .v18-board .market-times{
    grid-column:3!important;
    grid-row:1!important;
    display:grid!important;
    grid-template-columns:44px 50px 60px!important;
    align-items:start!important;
    justify-content:start!important;
    gap:2px!important;
    min-width:0!important;
    width:158px!important;
  }
  .dashboard-page .v18-board .market-times>.market-reg,
  .dashboard-page .v18-board .market-times>.market-reg.pred,
  .dashboard-page .v18-board .market-times>.market-delay{
    grid-column:auto!important;
    grid-row:auto!important;
    min-width:0!important;
    margin:0!important;
    padding:0!important;
    transform:none!important;
    justify-self:start!important;
  }
  .dashboard-page .v18-board .market-times>.market-reg b,
  .dashboard-page .v18-board .market-times>.market-reg.pred b,
  .dashboard-page .v18-board .market-times>.market-delay b{
    white-space:nowrap!important;
    overflow:visible!important;
    text-overflow:clip!important;
  }
  .dashboard-page .v18-board .market-times>.market-reg small,
  .dashboard-page .v18-board .market-times>.market-delay small{
    margin-top:1px!important;
  }

  /* Undre raden flyttas in direkt under tidsblocket, utan breda tomrum. */
  .dashboard-page .v18-board .market-gps{grid-column:3!important;grid-row:2!important;justify-self:start!important}
  .dashboard-page .v18-board .market-pax{grid-column:3!important;grid-row:2!important;justify-self:center!important;margin-left:88px!important}
  .dashboard-page .v18-board .market-speed{grid-column:4!important;grid-row:2!important;justify-self:start!important}
  .dashboard-page .v18-board .market-connection{grid-column:4!important;grid-row:1!important}
  .dashboard-page .v18-board .row-more{grid-column:5!important;grid-row:1/3!important}
}


/* v0.25.26 – busskorten byggs om till tre tydliga zoner:
   linje/buss | tur/destination | tider/driftvärden. Ingen data ska ligga ovanpå annan data. */
@media(min-width:1450px){
  .dashboard-page .v18-board .market-row,
  body.dashboard-page .v18-board .market-board.fill-rows .market-row{
    display:grid!important;
    grid-template-columns:66px minmax(0,1fr) 238px 28px!important;
    grid-template-rows:1fr!important;
    align-items:stretch!important;
    gap:6px!important;
    min-height:56px!important;
    height:56px!important;
    padding:4px 5px!important;
    overflow:hidden!important;
  }

  /* Vänster: linjenummer och bussnummer använder samma kompakta stapel. */
  .dashboard-page .v18-board .market-line{
    grid-column:1!important;grid-row:1!important;
    display:flex!important;flex-direction:column!important;
    align-items:center!important;justify-content:center!important;
    gap:2px!important;min-width:0!important;
  }
  .dashboard-page .v18-board .market-line .line-badge{
    width:48px!important;min-width:48px!important;height:27px!important;
    display:grid!important;place-items:center!important;
    font-size:12px!important;line-height:1!important;
  }
  .dashboard-page .v18-board .market-line .bus-under-line{
    display:block!important;width:60px!important;margin:0!important;
    font-size:6.8px!important;line-height:1!important;text-align:center!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
  }

  /* OFFLINE / EJ TUR visas som liten etikett ovanpå vänsterstapeln, inte i en egen kolumn. */
  .dashboard-page .v18-board .market-status{
    display:none!important;
  }
  .dashboard-page .v18-board .market-status:has(b){
    display:flex!important;position:absolute!important;left:6px!important;top:3px!important;
    z-index:5!important;width:58px!important;height:14px!important;min-height:14px!important;
    align-items:center!important;justify-content:center!important;padding:0 3px!important;
    border-radius:4px!important;background:rgba(7,14,20,.84)!important;
    font-size:6px!important;line-height:1!important;pointer-events:none!important;
  }
  .dashboard-page .v18-board .market-status:has(b) b{font-size:6px!important;line-height:1!important}

  /* Mitten: tur/block på första raden, destination + hållplats på andra/tredje. */
  .dashboard-page .v18-board .market-main{
    grid-column:2!important;grid-row:1!important;
    min-width:0!important;display:grid!important;
    grid-template-rows:18px 1fr!important;align-content:center!important;
    overflow:hidden!important;
  }
  .dashboard-page .v18-board .market-bus,
  .dashboard-page .v18-board .market-dest{
    grid-column:auto!important;grid-row:auto!important;min-width:0!important;
    margin:0!important;padding:0!important;
  }
  .dashboard-page .v18-board .market-bus{
    display:flex!important;align-items:baseline!important;gap:5px!important;
    white-space:nowrap!important;overflow:hidden!important;
  }
  .dashboard-page .v18-board .market-bus b{
    flex:0 0 auto!important;font-size:10.5px!important;line-height:1!important;
  }
  .dashboard-page .v18-board .market-bus small{
    min-width:0!important;font-size:7px!important;line-height:1!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
  }
  .dashboard-page .v18-board .market-dest{
    display:grid!important;grid-template-rows:15px 10px!important;align-content:start!important;
  }
  .dashboard-page .v18-board .market-dest b{
    font-size:12.5px!important;line-height:15px!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
  }
  .dashboard-page .v18-board .market-dest small{
    font-size:7px!important;line-height:10px!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
  }

  /* Höger: ett sammanhållet driftblock. Ingen bred tom yta mellan prognos och avvikelse. */
  .dashboard-page .v18-board .market-ops{
    grid-column:3!important;grid-row:1!important;
    min-width:0!important;display:grid!important;
    grid-template-rows:29px 17px!important;align-content:center!important;
    gap:1px!important;overflow:hidden!important;
  }
  .dashboard-page .v18-board .market-times{
    display:grid!important;grid-template-columns:60px 62px minmax(86px,1fr)!important;
    width:100%!important;min-width:0!important;gap:4px!important;align-items:start!important;
  }
  .dashboard-page .v18-board .market-times>.market-reg,
  .dashboard-page .v18-board .market-times>.market-reg.pred,
  .dashboard-page .v18-board .market-times>.market-delay{
    display:grid!important;grid-template-rows:15px 9px!important;
    grid-column:auto!important;grid-row:auto!important;min-width:0!important;
    margin:0!important;padding:0!important;justify-self:stretch!important;
  }
  .dashboard-page .v18-board .market-times b{
    font-size:10px!important;line-height:15px!important;white-space:nowrap!important;
    overflow:hidden!important;text-overflow:ellipsis!important;
  }
  .dashboard-page .v18-board .market-times small{
    font-size:6.5px!important;line-height:9px!important;margin:0!important;
    color:#668494!important;
  }

  /* Undre raden är en enda tät statusrad: anslutning | GPS | pax | hastighet. */
  .dashboard-page .v18-board .market-bottom{
    display:flex!important;align-items:center!important;justify-content:flex-start!important;
    gap:8px!important;min-width:0!important;overflow:hidden!important;
  }
  .dashboard-page .v18-board .market-connection,
  .dashboard-page .v18-board .market-gps,
  .dashboard-page .v18-board .market-pax,
  .dashboard-page .v18-board .market-speed{
    grid-column:auto!important;grid-row:auto!important;position:static!important;
    display:flex!important;align-items:baseline!important;gap:2px!important;
    min-width:0!important;margin:0!important;padding:0!important;justify-self:auto!important;
  }
  .dashboard-page .v18-board .market-bottom b{font-size:8px!important;line-height:1!important;white-space:nowrap!important}
  .dashboard-page .v18-board .market-bottom small{font-size:6px!important;line-height:1!important;margin:0!important;white-space:nowrap!important}
  .dashboard-page .v18-board .market-connection{max-width:74px!important;overflow:hidden!important}
  .dashboard-page .v18-board .market-connection .market-conn{min-width:0!important;max-width:74px!important}

  .dashboard-page .v18-board .row-more{
    grid-column:4!important;grid-row:1!important;align-self:center!important;justify-self:center!important;
    width:24px!important;height:30px!important;margin:0!important;font-size:17px!important;
  }

  /* Låt inte äldre tredjedelsregler skapa extra höjd. */
  body.dashboard-page .v18-board .market-board.terminal-market{
    grid-auto-rows:56px!important;
  }
}

@media(min-width:1450px) and (max-width:1750px){
  .dashboard-page .v18-board .market-row,
  body.dashboard-page .v18-board .market-board.fill-rows .market-row{
    grid-template-columns:62px minmax(0,1fr) 214px 26px!important;
    gap:4px!important;
  }
  .dashboard-page .v18-board .market-ops{grid-template-rows:28px 17px!important}
  .dashboard-page .v18-board .market-times{grid-template-columns:53px 55px minmax(78px,1fr)!important;gap:2px!important}
  .dashboard-page .v18-board .market-bottom{gap:5px!important}
}
\n\n/* v0.25.27 – LIVE och AUTO-SYNK flyttas från toppraden till Datakällor i sidomenyn. */\n.dashboard-page .sidebar-live-tools-slot{\n  display:grid!important;grid-template-columns:1fr!important;gap:5px!important;\n  margin-top:7px!important;padding-top:7px!important;border-top:1px solid #173243!important;\n}\n.dashboard-page .sidebar-live-tools-slot .v18-live-pill,\n.dashboard-page .sidebar-live-tools-slot .v20-auto-pill{\n  width:100%!important;height:30px!important;min-height:30px!important;max-height:30px!important;\n  display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:6px!important;\n  margin:0!important;padding:0 8px!important;border-radius:7px!important;font-size:7px!important;line-height:1!important;\n  white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;\n}\n.dashboard-page .sidebar-live-tools-slot .v18-live-pill strong{font-size:7px!important}\n.dashboard-page .sidebar-live-tools-slot .v18-live-pill .live-dot{flex:0 0 6px!important;width:6px!important;height:6px!important}\nhtml[data-theme="light"] .dashboard-page .sidebar-live-tools-slot{border-color:#d5e2e8!important}\n.dashboard-page .v18-titleline{gap:0!important}\n

/* v0.25.28 – GPS endast färgpunkt och valbar sortering i trafikbordet. */
.dashboard-page .market-gps{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:4px!important;
  min-width:0!important;
}
.dashboard-page .market-gps .gps-status-dot{
  display:inline-block!important;
  width:9px!important;
  height:9px!important;
  min-width:9px!important;
  border-radius:50%!important;
  border:1px solid rgba(255,255,255,.20)!important;
}
.dashboard-page .market-gps .gps-status-dot.gps-ok{
  background:#38d99a!important;
  box-shadow:0 0 8px rgba(56,217,154,.45)!important;
}
.dashboard-page .market-gps .gps-status-dot.gps-warn{
  background:#f4bf36!important;
  box-shadow:0 0 8px rgba(244,191,54,.38)!important;
}
.dashboard-page .market-gps .gps-status-dot.gps-danger{
  background:#f25763!important;
  box-shadow:0 0 8px rgba(242,87,99,.48)!important;
}
.dashboard-page .market-gps .gps-status-dot.gps-neutral{
  background:#6b8493!important;
}
.dashboard-page .market-gps small{
  font-size:6px!important;
  opacity:.72!important;
}

.dashboard-page .traffic-sort-control{
  height:30px!important;
  display:flex!important;
  align-items:center!important;
  gap:5px!important;
  padding:0 6px!important;
  border:1px solid #1f3a4a!important;
  border-radius:7px!important;
  background:#081720!important;
  color:#7897a7!important;
  white-space:nowrap!important;
}
.dashboard-page .traffic-sort-control>span{
  font-size:6.5px!important;
  font-weight:850!important;
  letter-spacing:.06em!important;
  text-transform:uppercase!important;
}
.dashboard-page .traffic-sort-control select{
  height:24px!important;
  min-width:90px!important;
  padding:0 18px 0 6px!important;
  border:0!important;
  border-radius:5px!important;
  background:#0e2633!important;
  color:#d8eef6!important;
  font-size:8px!important;
  font-weight:800!important;
  outline:none!important;
}
html[data-theme="light"] .dashboard-page .traffic-sort-control{
  background:#f7fafb!important;
  border-color:#c9d9e1!important;
  color:#617c89!important;
}
html[data-theme="light"] .dashboard-page .traffic-sort-control select{
  background:#eaf3f7!important;
  color:#173746!important;
}
html[data-theme="light"] .dashboard-page .market-gps .gps-status-dot{
  border-color:rgba(15,45,58,.18)!important;
}


/* v0.25.29 – trafiklistan fylls lodrätt.
   Sorterad ordning går uppifrån och ned i kolumn 1, därefter kolumn 2 och 3. */
.dashboard-page .market-board.terminal-market.vertical-line-order{
  align-content:start!important;
  justify-content:stretch!important;
  grid-auto-flow:column!important;
}
.dashboard-page .market-board.terminal-market.vertical-line-order .market-row{
  min-width:0!important;
}

/* Vid en kolumn är ordningen naturligt fortsatt uppifrån och ned. */
@media(max-width:1179px){
  .dashboard-page .market-board.terminal-market.vertical-line-order{
    grid-auto-flow:row!important;
  }
}


/* v0.25.31 – återställd till fungerande v0.25.29-bas.
   Endast visuellt mindre glapp mellan busskorten. */
.dashboard-page .market-board.terminal-market.vertical-line-order{
  row-gap:3px!important;
  column-gap:6px!important;
  padding:4px!important;
}
.dashboard-page .market-board.terminal-market.vertical-line-order .market-row{
  margin:0!important;
}


/* v0.25.33 – filterflikarna döljer nu faktiskt busskort som inte matchar.
   Äldre marknadsrad-regler använder display:grid!important. */
.dashboard-page .market-row[style*="display: none"]{
  display:none!important;
}


/* v0.25.38 – tydlig status när skiftöverlämning sparas. */
.dashboard-page .tl-log-form{
  position:relative!important;
}
.dashboard-page .tl-log-save-status{
  position:absolute;
  right:8px;
  bottom:-13px;
  font-size:7px;
  font-weight:800;
  color:#6fdbad;
  white-space:nowrap;
}
html[data-theme="light"] .dashboard-page .tl-log-save-status{
  color:#28785d;
}


/* v0.25.39 – tydligare etiketter i busskorten. */
@media(min-width:1450px){
  .dashboard-page .v18-board .market-line .bus-under-line{
    font-size:7.8px!important;
    font-weight:800!important;
    color:#a4bac6!important;
  }
  .dashboard-page .v18-board .market-line .bus-under-line span,
  .dashboard-page .v18-board .market-meta-label{
    color:#6f92a4!important;
    font-size:.87em!important;
    font-weight:950!important;
    letter-spacing:.055em!important;
  }
  .dashboard-page .v18-board .market-bus b{
    font-size:11.2px!important;
    color:#eef8fc!important;
  }
  .dashboard-page .v18-board .market-bus small{
    font-size:8.2px!important;
    color:#abc0ca!important;
  }
  .dashboard-page .v18-board .market-bus small i{
    font-style:normal!important;
    color:#4f6d7b!important;
    margin:0 2px!important;
  }
  .dashboard-page .v18-board .market-dest small{
    font-size:8px!important;
    color:#8fa9b6!important;
  }
  .dashboard-page .v18-board .market-times small,
  .dashboard-page .v18-board .market-bottom small{
    font-weight:900!important;
    letter-spacing:.035em!important;
    color:#7898a7!important;
  }
}
.dashboard-page .tl-log-save-status{
  font-size:8px!important;
  font-weight:900!important;
}


/* v0.25.41 – kompakta operativa listor.
   Panelerna ska växa med innehållet, inte sträcka korten för att fylla en vald höjd. */
.dashboard-page #action-queue,
.dashboard-page #connections-watch,
.dashboard-page #action-queue.user-panel-height:not(.is-collapsed),
.dashboard-page #connections-watch.user-panel-height:not(.is-collapsed){
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  align-self:start!important;
}

/* ÅTGÄRDA NU – en tydlig kompakt lista uppifrån och ned. */
.dashboard-page #action-queue .terminal-alerts,
html[data-dashboard-wall="1"] .dashboard-page #action-queue .terminal-alerts,
html[data-dashboard-wall="1"] .dashboard-page .ops-panel-stage.has-many-alerts>#action-queue .terminal-alerts{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  align-content:flex-start!important;
  gap:5px!important;
  padding:6px!important;
  height:auto!important;
  min-height:0!important;
  max-height:370px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
}

.dashboard-page #action-queue .ops-alert-card,
html[data-dashboard-wall="1"] .dashboard-page #action-queue .ops-alert-card{
  flex:0 0 auto!important;
  width:100%!important;
  min-height:64px!important;
  height:auto!important;
  max-height:none!important;
  margin:0!important;
  align-self:stretch!important;
}

.dashboard-page #action-queue .alarm-body,
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body{
  min-height:62px!important;
  padding:7px 9px!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  grid-template-rows:auto auto auto!important;
  column-gap:8px!important;
  align-items:center!important;
}

.dashboard-page #action-queue .alarm-meta,
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-meta{
  font-size:7.5px!important;
  line-height:1!important;
  margin:0 0 3px!important;
}

.dashboard-page #action-queue .alarm-body h3,
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body h3{
  grid-column:1!important;
  font-size:12px!important;
  line-height:1.15!important;
  margin:0!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

.dashboard-page #action-queue .alarm-body p,
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-body p{
  grid-column:1!important;
  font-size:8.5px!important;
  line-height:1.2!important;
  margin:3px 0 0!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  display:block!important;
}

.dashboard-page #action-queue .alarm-footer,
html[data-dashboard-wall="1"] .dashboard-page #action-queue .alarm-footer{
  grid-column:2!important;
  grid-row:2/4!important;
  margin:0!important;
  align-self:center!important;
}

.dashboard-page #action-queue .ops-action,
html[data-dashboard-wall="1"] .dashboard-page #action-queue .ops-action{
  height:27px!important;
  min-height:27px!important;
  padding:0 9px!important;
  font-size:8.5px!important;
  font-weight:900!important;
}

/* ANSLUTNINGAR – kompakta rader. Scroll först när det faktiskt behövs. */
.dashboard-page #connections-watch .connection-watch-list,
html[data-dashboard-wall="1"] .dashboard-page #connections-watch .connection-watch-list{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  align-content:flex-start!important;
  gap:4px!important;
  padding:6px!important;
  height:auto!important;
  min-height:0!important;
  max-height:310px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
}

.dashboard-page #connections-watch .connection-watch-row,
html[data-dashboard-wall="1"] .dashboard-page #connections-watch .connection-watch-row{
  flex:0 0 auto!important;
  width:100%!important;
  min-height:42px!important;
  height:auto!important;
  max-height:none!important;
  margin:0!important;
  padding:6px 8px!important;
  grid-template-columns:minmax(0,1fr) 58px 48px!important;
  gap:6px!important;
  align-items:center!important;
}

.dashboard-page #connections-watch .connection-watch-row b,
html[data-dashboard-wall="1"] .dashboard-page #connections-watch .connection-watch-row b{
  font-size:12px!important;
  line-height:1.12!important;
}

.dashboard-page #connections-watch .connection-watch-row small,
html[data-dashboard-wall="1"] .dashboard-page #connections-watch .connection-watch-row small{
  display:block!important;
  margin-top:2px!important;
  font-size:8px!important;
  line-height:1.15!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

.dashboard-page #connections-watch .connection-margin,
html[data-dashboard-wall="1"] .dashboard-page #connections-watch .connection-margin{
  font-size:9px!important;
  font-weight:900!important;
  text-align:right!important;
  white-space:nowrap!important;
}

.dashboard-page #connections-watch .conn-pill,
html[data-dashboard-wall="1"] .dashboard-page #connections-watch .conn-pill{
  height:24px!important;
  min-width:44px!important;
  padding:0 6px!important;
  font-size:8px!important;
}

/* Enstaka/två poster ska ligga högst upp – ingen vertikal utsträckning. */
.dashboard-page #action-queue .terminal-alerts>*,
.dashboard-page #connections-watch .connection-watch-list>*{
  align-self:stretch!important;
}

/* Diskret scrollbar när det finns många poster. */
.dashboard-page #action-queue .terminal-alerts::-webkit-scrollbar,
.dashboard-page #connections-watch .connection-watch-list::-webkit-scrollbar{
  width:7px!important;
}
.dashboard-page #action-queue .terminal-alerts::-webkit-scrollbar-thumb,
.dashboard-page #connections-watch .connection-watch-list::-webkit-scrollbar-thumb{
  border-radius:999px!important;
}
