:root{color-scheme:dark;--bg:#061019;--panel:#101e2a;--panel2:#152735;--line:#304453;--text:#f7fafc;--muted:#adc0cc}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;font-family:Inter,Segoe UI,Arial,sans-serif;background:#061019;color:var(--text)}body{background:radial-gradient(circle at top,#17354b 0,#061019 58%)}#publicDisplay{height:100%;display:grid;grid-template-rows:auto auto 1fr auto;gap:1.2vh;padding:1.4vh 1.4vw}header{display:flex;align-items:center;justify-content:space-between;min-height:10vh}.brand{display:flex;align-items:center;gap:1vw}.brand img{width:clamp(62px,6vw,104px);height:clamp(62px,6vw,104px);object-fit:contain}.brand p{margin:0;color:var(--muted);font-weight:800;letter-spacing:.1em;font-size:clamp(12px,1vw,18px)}.brand h1{margin:.2vh 0 0;font-size:clamp(30px,3.3vw,62px)}.login-link{color:white;text-decoration:none;border:1px solid var(--line);background:rgba(16,30,42,.92);border-radius:14px;padding:12px 18px;font-weight:800}.slides{position:relative;min-height:0;overflow:hidden}.slide{position:absolute;inset:0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .55s ease;contain:layout paint}.slide.active{opacity:1;visibility:visible;pointer-events:auto;z-index:1}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:1vw;margin-bottom:1.2vh}.metrics>div{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:1.6vh 1.2vw;text-align:center}.metrics span{display:block;color:var(--muted);font-size:clamp(17px,1.3vw,26px);font-weight:800}.metrics strong{display:block;font-size:clamp(46px,5vw,92px);line-height:1.05}.stats-panel{height:calc(100% - 16vh);background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:1.5vh 1.4vw;overflow:hidden}.stats-panel h2,.map-heading h2{font-size:clamp(28px,2.5vw,48px);margin:.2vh 0 1.2vh}.period-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2vw}.period-grid>div{background:var(--panel2);border-radius:16px;padding:1.2vh 1vw}.period-grid h3{display:flex;justify-content:space-between;margin:0 0 1vh;font-size:clamp(20px,1.6vw,31px)}.cat-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.35vh .6vw;align-items:center;margin:.55vh 0;font-size:clamp(14px,1vw,20px)}.cat-row .track{grid-column:1/-1;height:9px;border-radius:99px;background:#263946;overflow:hidden}.cat-row i{display:block;height:100%;border-radius:inherit}.map-heading{display:flex;justify-content:space-between;align-items:end;gap:2vw;height:7vh}.map-heading span{font-size:clamp(16px,1.2vw,24px);color:var(--muted)}.public-map{height:calc(100% - 14vh);border:1px solid var(--line);border-radius:20px;overflow:hidden;background:#0a141c}.legend{min-height:6vh;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.7vh 1vw;padding-top:1vh}.legend span{display:flex;align-items:center;gap:.35vw;font-size:clamp(12px,.85vw,17px);font-weight:700}.legend i{width:14px;height:14px;border-radius:50%;display:inline-block}footer{display:flex;align-items:center;justify-content:center;gap:1.2vw;min-height:6vh}.dots{display:flex;gap:10px}.dot{width:16px;height:16px;padding:0;border:2px solid #d5e2e9;border-radius:50%;background:transparent;cursor:pointer}.dot.active{background:#fff;transform:scale(1.15)}#pauseRotation{border:1px solid var(--line);border-radius:12px;padding:9px 14px;background:var(--panel);color:white;font-weight:800;cursor:pointer}#slideName{min-width:170px;color:var(--muted);font-weight:800}@media(max-width:800px){.period-grid{grid-template-columns:1fr}.stats-panel{overflow:auto}.map-heading{align-items:start;flex-direction:column;height:auto}.public-map{height:70%}#slideName{display:none}}
.active-dashboard{height:100%;display:grid;grid-template-columns:minmax(0,2.35fr) minmax(300px,.85fr);gap:1.2vw}.active-map-wrap{position:relative;min-height:0}.active-map{height:100%}.map-kpis{position:absolute;z-index:600;left:18px;top:18px;display:flex;gap:12px;pointer-events:none}.map-kpis>div{min-width:150px;padding:12px 18px;border-radius:18px;background:rgba(6,16,25,.9);border:1px solid #4b6475;text-align:center;backdrop-filter:blur(5px)}.map-kpis span{display:block;color:#b7c8d2;font-weight:900;font-size:13px;letter-spacing:.08em}.map-kpis strong{font-size:42px;line-height:1}.map-status{position:absolute;z-index:600;left:18px;bottom:18px;background:rgba(6,16,25,.88);border:1px solid #4b6475;border-radius:14px;padding:9px 14px;font-weight:800}.active-list-panel{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:1.3vh 1vw;overflow:hidden}.active-list-panel h2{font-size:clamp(25px,2vw,40px);margin:0 0 1.2vh}.active-call-list{display:grid;gap:1vh}.active-call-card{border-left:8px solid var(--call-color,#64748b);border-radius:16px;background:var(--panel2);padding:1.3vh 1vw}.active-call-card h3{font-size:clamp(20px,1.45vw,30px);margin:0 0 .55vh}.active-call-card p{font-size:clamp(17px,1.15vw,24px);margin:0;color:#dbe7ed;font-weight:800}.active-empty{display:grid;place-items:center;min-height:50%;text-align:center;color:var(--muted);font-size:clamp(22px,1.7vw,34px);font-weight:800}.station-marker{font-size:24px;filter:drop-shadow(0 2px 3px #000)}@media(max-width:900px){.active-dashboard{grid-template-columns:1fr}.active-list-panel{display:none}}

/* v1.1.11 heat-map popup detail */
.heat-popup-list{margin-top:8px;display:grid;gap:7px;min-width:180px}.heat-popup-call{padding-top:7px;border-top:1px solid rgba(100,116,139,.28)}.heat-popup-call:first-child{border-top:0;padding-top:0}.heat-popup-call span{font-size:.85rem;color:#475569}

/* v1.1.11 public analytics */
.analytics-grid{height:100%;display:grid;grid-template-columns:1fr 1fr;gap:1.2vw}.analytics-card{min-height:0;background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:1.5vh 1.3vw;display:grid;grid-template-rows:auto 1fr}.analytics-heading{display:flex;justify-content:space-between;align-items:end;gap:1vw}.analytics-heading h2{font-size:clamp(27px,2.25vw,46px);margin:.2vh 0 1vh}.analytics-heading span{color:var(--muted);font-weight:800;font-size:clamp(13px,1vw,20px);padding-bottom:1.2vh}.line-chart,.dow-chart{min-height:0;height:100%;display:grid;place-items:stretch}.line-chart svg{width:100%;height:100%;overflow:visible}.chart-grid line{stroke:#314859;stroke-width:1}.chart-grid text,.chart-x{fill:#b8c9d3;font-size:22px;font-weight:700}.chart-line{fill:none;stroke:#7dd3fc;stroke-width:7;stroke-linecap:round;stroke-linejoin:round}.chart-point{fill:#f8fafc;stroke:#38bdf8;stroke-width:5}.chart-value{fill:#f8fafc;font-size:24px;font-weight:900}.chart-empty{display:grid;place-items:center;color:var(--muted);font-size:24px}.dow-chart{grid-template-rows:auto 1fr}.dow-legend{display:flex;justify-content:center;gap:1.4vw;padding:.5vh 0 1.4vh;color:#dce8ee;font-weight:800}.dow-legend span{display:flex;align-items:center;gap:7px}.dow-legend i{width:14px;height:14px;border-radius:4px}.series-ytd{background:#7dd3fc}.series-mtd{background:#22c55e}.series-last{background:#f59e0b}.dow-bars{min-height:0;display:grid;grid-template-columns:repeat(7,1fr);gap:.7vw;align-items:stretch;border-bottom:1px solid #405665;padding:1.5vh .5vw 0}.dow-group{min-width:0;display:grid;grid-template-rows:1fr auto;gap:.7vh;text-align:center}.dow-group>strong{grid-row:2;color:#dce8ee;font-size:clamp(14px,1.1vw,22px)}.dow-series{min-height:0;display:flex;align-items:end;justify-content:center;gap:8%;height:100%}.dow-bar{position:relative;width:26%;min-height:3px;border-radius:7px 7px 0 0}.dow-bar span{position:absolute;left:50%;transform:translateX(-50%);top:-28px;color:#fff;font-size:clamp(12px,.8vw,17px);font-weight:900}.dow-bar.series-ytd{background:#7dd3fc}.dow-bar.series-mtd{background:#22c55e}.dow-bar.series-last{background:#f59e0b}@media(max-width:900px){.analytics-grid{grid-template-columns:1fr;overflow:auto}.analytics-card{min-height:520px}.dow-legend{flex-wrap:wrap}}

.daily-averages{display:grid;grid-template-columns:repeat(3,1fr);gap:.7vw;margin-top:.7vh}.daily-averages>div{background:rgba(15,31,42,.72);border:1px solid var(--line,#334b5b);border-radius:12px;padding:.7vh .7vw;text-align:center}.daily-averages span,.daily-averages small{display:block;color:var(--muted,#a8bdc9);font-weight:800}.daily-averages strong{display:block;font-size:clamp(22px,2vw,38px);line-height:1.05;margin:.2vh 0}

/* v1.4.1 public calls/day averages */
.analytics-grid{grid-template-rows:minmax(0,1fr) auto}
.public-average-card{grid-column:1/-1;background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:1vh 1.3vw}
.public-average-card .analytics-heading h2{font-size:clamp(20px,1.7vw,34px);margin:0}
.public-average-card .analytics-heading span{padding-bottom:0}
.public-average-card .daily-averages{margin-top:.5vh}
@media(max-width:900px){.analytics-grid{grid-template-rows:auto}.public-average-card{min-height:auto}}

/* v1.4.1 version/changelog */
.public-version{margin-left:auto;color:inherit;text-decoration:none;opacity:.78;font-size:clamp(11px,.8vw,15px);white-space:nowrap}
.public-version:hover,.public-version:focus{text-decoration:underline;opacity:1}
@media(max-width:700px){.public-version{font-size:11px}}

/* v1.7.0 time-of-day percentage analytics */
.time-of-day-card{max-width:1200px;margin:0 auto}.time-of-day-chart{display:grid;gap:10px;margin-top:16px}.tod-head,.tod-row{display:grid;grid-template-columns:1.25fr repeat(3,1fr);gap:12px;align-items:center}.tod-head{padding:0 12px;font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;opacity:.62}.tod-row{padding:14px 12px;border:1px solid rgba(127,127,127,.16);border-radius:14px;background:rgba(127,127,127,.04)}.tod-row>div:first-child{display:flex;flex-direction:column}.tod-row small{opacity:.58;margin-top:2px}.tod-row>div:not(:first-child){position:relative;min-height:38px;display:flex;align-items:flex-start;justify-content:flex-end;overflow:hidden;border-radius:9px;background:rgba(127,127,127,.09);padding:8px 9px}.tod-row i{position:absolute;left:0;bottom:0;height:5px;background:currentColor;opacity:.55;border-radius:999px}.tod-row b{position:relative;z-index:1}.time-of-day-chart.large .tod-row{font-size:clamp(18px,1.5vw,26px);padding:18px}@media(max-width:720px){.tod-head,.tod-row{grid-template-columns:1.2fr repeat(3,.8fr);gap:6px}.tod-row{padding:10px 7px}.tod-row b{font-size:.85rem}}

/* v1.7.0 time-of-day donut charts */
.tod-donuts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start;margin:18px 0 22px}
.tod-donut-panel{text-align:center;padding:14px;border:1px solid rgba(127,127,127,.16);border-radius:18px;background:rgba(127,127,127,.04)}
.tod-donut-panel h3{margin:0 0 8px}.tod-donut{display:block;width:min(100%,260px);margin:auto;transform:rotate(0deg)}
.tod-hole{fill:var(--panel,#101d29)}
.tod-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px}
.tod-legend-item{display:grid;grid-template-columns:14px minmax(100px,.7fr) minmax(0,1.3fr);gap:9px;align-items:center;padding:8px 10px;border-radius:11px;background:rgba(127,127,127,.05)}
.tod-swatch{width:12px;height:12px;border-radius:50%}.tod-legend-item span:nth-child(2){display:flex;flex-direction:column}.tod-legend-item small{opacity:.58}.tod-values{text-align:right;font-size:.85rem;opacity:.8}
@media(max-width:800px){.tod-donuts{grid-template-columns:1fr}.tod-donut{width:190px}.tod-legend{grid-template-columns:1fr}.tod-legend-item{grid-template-columns:14px 1fr}.tod-values{grid-column:2;text-align:left}}

/* v1.7.0 public day-of-month multi-line chart */
.day-month-card{max-width:1300px;margin:0 auto}
.multi-line-chart svg{width:100%;height:auto;min-height:390px}
.multi-line-legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin:8px 0 12px}
.multi-line-legend span{display:inline-flex;align-items:center;gap:6px;font-size:.9rem}
.multi-line-legend i{width:12px;height:12px;border-radius:50%}

/* v1.7.0 prominent full-screen analytics */
.fullscreen-analytics-card{height:calc(100% - 4px);min-height:0;box-sizing:border-box;display:flex;flex-direction:column;padding:clamp(14px,1.4vw,28px)}
.fullscreen-analytics-card .analytics-heading{flex:0 0 auto}
.fullscreen-analytics-card .time-of-day-chart,.fullscreen-analytics-card .multi-line-chart{flex:1 1 auto;min-height:0}
.fullscreen-analytics-card .tod-donuts{height:min(48vh,520px);align-items:stretch}
.fullscreen-analytics-card .tod-donut-panel{display:flex;flex-direction:column;justify-content:center}
.fullscreen-analytics-card .tod-donut{width:min(100%,clamp(250px,21vw,430px))}
.day-month-card .multi-line-chart{display:flex;flex-direction:column}
.day-month-card .multi-line-chart svg{flex:1 1 auto;width:100%;height:auto;min-height:0;max-height:calc(100vh - 230px)}
.multi-line-legend.interactive{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:8px 10px;margin:8px 0 10px}
.month-legend-item{appearance:none;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.04);color:inherit;border-radius:999px;padding:7px 12px;display:inline-flex;align-items:center;gap:7px;cursor:pointer;opacity:.48;transition:opacity .15s,transform .15s,background .15s,border-color .15s}
.month-legend-item i{width:11px;height:11px;border-radius:50%;background:var(--series-color)}
.month-legend-item:hover,.month-legend-item:focus,.month-legend-item.selected{opacity:1;background:rgba(255,255,255,.10);border-color:var(--series-color);transform:translateY(-1px)}
.month-series{cursor:pointer;transition:opacity .15s}
.month-series.dimmed{opacity:.12}
.month-series.selected{opacity:1}
.month-series path{transition:stroke-width .15s,opacity .15s}
@media(max-width:850px){
  .fullscreen-analytics-card{height:auto;min-height:calc(100vh - 120px)}
  .fullscreen-analytics-card .tod-donuts{height:auto;grid-template-columns:1fr}
  .fullscreen-analytics-card .tod-donut{width:min(100%,220px)}
  .day-month-card .multi-line-chart svg{min-height:460px;max-height:none}
  .multi-line-legend.interactive{gap:6px}
  .month-legend-item{padding:6px 9px;font-size:.85rem}
}

.public-notice{position:fixed;z-index:5000;left:50%;top:18px;transform:translateX(-50%);max-width:min(900px,calc(100% - 36px));padding:13px 18px;border-radius:14px;background:rgba(127,29,29,.96);border:1px solid rgba(254,202,202,.65);color:#fff;font-weight:850;text-align:center;box-shadow:0 8px 30px rgba(0,0,0,.35)}
.public-notice.info{background:rgba(30,64,175,.96);border-color:rgba(191,219,254,.65)}

/* v2.1.0 mobile Time of Day usability */
@media(max-width:850px){
  .fullscreen-analytics-card:has(.time-of-day-chart){
    height:calc(100vh - 108px);
    min-height:0;
    overflow-y:auto;
    overflow-x:hidden;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
    padding-bottom:28px;
  }
  .fullscreen-analytics-card .time-of-day-chart{
    flex:0 0 auto;
    min-height:max-content;
    overflow:visible;
  }
  .fullscreen-analytics-card .tod-donuts{
    height:auto;
    display:flex;
    gap:12px;
    overflow-x:auto;
    scroll-snap-type:x proximity;
    padding:2px 2px 12px;
    -webkit-overflow-scrolling:touch;
  }
  .fullscreen-analytics-card .tod-donut-panel{
    min-width:min(78vw,280px);
    flex:0 0 min(78vw,280px);
    scroll-snap-align:start;
  }
  .fullscreen-analytics-card .tod-legend{
    grid-template-columns:1fr;
    padding-bottom:20px;
  }
  .fullscreen-analytics-card .tod-legend-item{
    grid-template-columns:14px minmax(105px,.8fr) minmax(180px,1.2fr);
    min-width:520px;
  }
  .fullscreen-analytics-card .tod-legend{
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
  .fullscreen-analytics-card .tod-values{
    grid-column:auto;
    text-align:right;
  }
}
@media(max-width:520px){
  .fullscreen-analytics-card:has(.time-of-day-chart){height:calc(100vh - 92px)}
  .fullscreen-analytics-card .tod-donut{width:180px}
}

/* v2.1.16 accessibility */
.skip-link{position:fixed!important;left:12px;top:8px;z-index:100000;padding:10px 14px;background:#fff;color:#111;border:2px solid #111;border-radius:8px;transform:translateY(-150%);transition:transform .15s}
.skip-link:focus{transform:translateY(0)}
:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:3px solid #fbbf24!important;outline-offset:3px!important}
button,a.button-link,input,select,textarea{min-height:44px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media(forced-colors:active){.badge,.choice,.panel,.nav-launch-card{border:1px solid CanvasText}.dot.active{forced-color-adjust:auto}}
.reorder-controls{position:absolute;left:8px;bottom:7px;display:flex;gap:3px;opacity:0;transition:opacity .12s;z-index:4}
.nav-launch-card:focus-within .reorder-controls,.nav-launch-card:hover .reorder-controls{opacity:1}
.reorder-controls button{min-width:36px;min-height:36px;padding:2px 8px}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}


/* v2.1.19 public NWS alert banner */
.public-weather-alerts{display:grid;gap:7px;max-height:22vh;overflow:auto;scrollbar-width:thin}
.public-weather-alerts[hidden]{display:none}
.public-weather-alert{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:10px 14px;border:1px solid rgba(255,255,255,.34);border-radius:13px;box-shadow:0 5px 18px rgba(0,0,0,.24);background:#334155;color:#fff}
.public-weather-alert.warning{background:#8f1d1d;border-color:#fca5a5}
.public-weather-alert.watch{background:#7c3f00;border-color:#fdba74}
.public-weather-alert.advisory{background:#665300;border-color:#fde68a}
.public-weather-alert.statement{background:#1e4f78;border-color:#93c5fd}
.public-weather-alert-copy{min-width:0;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.public-weather-alert-copy strong{font-size:clamp(16px,1.2vw,22px);font-weight:950;white-space:nowrap}
.public-weather-alert-copy span{font-size:clamp(13px,.9vw,17px);font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1 1 300px}
.public-weather-alert-copy small{font-size:clamp(12px,.8vw,15px);font-weight:850;white-space:nowrap;opacity:.9}
.public-weather-alert>a{min-height:40px;display:inline-flex;align-items:center;justify-content:center;padding:7px 11px;border:1px solid rgba(255,255,255,.45);border-radius:9px;background:rgba(0,0,0,.20);color:#fff;font-weight:900;text-decoration:none;white-space:nowrap}
.public-weather-alert>a:hover,.public-weather-alert>a:focus{background:rgba(0,0,0,.36);text-decoration:underline}
@media(max-width:760px){.public-weather-alert{grid-template-columns:1fr}.public-weather-alert-copy{display:grid;gap:3px}.public-weather-alert-copy span{white-space:normal}.public-weather-alert>a{justify-self:start}.public-weather-alerts{max-height:30vh}}


/* v2.1.20 public display grid fix: keep conditional weather banners from shifting the carousel/footer */
#publicDisplay{grid-template-rows:auto auto minmax(0,1fr) auto}
#publicDisplay>header{grid-row:1}
#publicWeatherAlerts{grid-row:2}
#publicDisplay>.slides{grid-row:3;min-height:0}
#publicDisplay>footer{grid-row:4}
#publicNotice{position:fixed;top:10px;left:50%;transform:translateX(-50%);z-index:10000;max-width:min(900px,92vw)}

/* VB.2.1.24: public weather test banner */
.public-weather-alert.test{outline:3px dashed rgba(255,255,255,.9);outline-offset:-5px}
.public-weather-test-label{display:inline-block;font-weight:900;letter-spacing:.06em;text-transform:uppercase;font-size:clamp(10px,.75vw,14px);background:rgba(0,0,0,.28);padding:.18rem .5rem;border-radius:.35rem;margin-bottom:.18rem}

/* VB.2.1.24: keep the full-width public alert treatment and fit Time of Day details beside the donuts */
.public-weather-alert.test{outline:3px dashed rgba(255,255,255,.9);outline-offset:-5px}
.public-weather-test-label{display:inline-block;flex:0 0 auto;font-weight:900;letter-spacing:.06em;text-transform:uppercase;font-size:clamp(10px,.75vw,14px);background:rgba(0,0,0,.28);padding:.18rem .5rem;border-radius:.35rem;margin:0;white-space:nowrap}

@media(min-width:901px){
  .fullscreen-analytics-card:has(.time-of-day-chart){
    width:min(100%,1500px);
    max-width:1500px;
    margin:0 auto;
    overflow:hidden;
  }
  .fullscreen-analytics-card .time-of-day-chart{
    display:grid;
    grid-template-columns:minmax(0,1.65fr) minmax(390px,.85fr);
    grid-template-rows:minmax(0,1fr);
    gap:clamp(14px,1.3vw,24px);
    height:100%;
    min-height:0;
    margin-top:clamp(8px,.8vh,14px);
    overflow:hidden;
    align-items:stretch;
  }
  .fullscreen-analytics-card .tod-donuts{
    grid-column:1;
    grid-row:1;
    height:100%;
    min-height:0;
    margin:0;
    gap:clamp(10px,1vw,18px);
    align-items:center;
  }
  .fullscreen-analytics-card .tod-donut-panel{
    min-width:0;
    min-height:0;
    padding:clamp(6px,.6vw,10px);
  }
  .fullscreen-analytics-card .tod-donut-panel h3{
    margin:0 0 clamp(4px,.4vh,8px);
  }
  .fullscreen-analytics-card .tod-donut{
    width:min(100%,clamp(210px,15.5vw,300px));
    max-height:43vh;
  }
  .fullscreen-analytics-card .tod-legend{
    grid-column:2;
    grid-row:1;
    display:grid;
    grid-template-columns:1fr;
    gap:clamp(5px,.55vh,9px);
    min-height:0;
    overflow:auto;
    align-content:start;
    padding-right:4px;
  }
  .fullscreen-analytics-card .tod-legend-item{
    min-width:0;
    grid-template-columns:12px minmax(92px,.65fr) minmax(0,1.35fr);
    gap:7px;
    padding:clamp(5px,.5vw,8px);
  }
  .fullscreen-analytics-card .tod-legend-item strong{font-size:clamp(12px,.82vw,16px)}
  .fullscreen-analytics-card .tod-legend-item small{font-size:clamp(10px,.68vw,13px)}
  .fullscreen-analytics-card .tod-values{
    font-size:clamp(10px,.66vw,13px);
    line-height:1.18;
    text-align:left;
    overflow-wrap:anywhere;
  }
}
@media(max-height:820px) and (min-width:901px){
  .fullscreen-analytics-card .tod-donut{width:min(100%,clamp(185px,13.5vw,255px));max-height:36vh}
  .fullscreen-analytics-card .tod-legend{gap:4px}
  .fullscreen-analytics-card .tod-legend-item{padding:4px 6px}
  .fullscreen-analytics-card .tod-values{font-size:10px}
}


/* VB.2.1.24 large public display adaptation */
@media(min-width:1400px) and (min-height:800px){
  .slide[data-title="Call Statistics"] .metrics{min-height:clamp(105px,15vh,155px)}
  .slide[data-title="Call Statistics"] .period-grid>div{display:flex;flex-direction:column}
  .slide[data-title="Call Statistics"] .period-grid>div>div{flex:1 1 auto;display:flex;flex-direction:column;justify-content:space-evenly}
  .slide[data-title="Call Statistics"] .cat-row{font-size:clamp(13px,.9vw,18px);margin-bottom:clamp(7px,.8vh,13px)}
  .slide[data-title="Call Statistics"] .track{height:clamp(6px,.65vh,10px)}
  .fullscreen-analytics-card:has(.time-of-day-chart){width:100%;max-width:none}
}

/* VB.2.3.0 map marker and resize refinements */
.station-map-marker,.incident-map-marker{background:transparent!important;border:0!important}
.station-map-icon{position:relative;width:52px;height:48px;filter:drop-shadow(0 3px 3px rgba(0,0,0,.65));pointer-events:none}
.station-map-icon .station-building{position:absolute;left:6px;top:0;font-size:35px;line-height:36px}
.station-map-icon .station-truck{position:absolute;left:11px;bottom:0;font-size:30px;line-height:30px;z-index:2}
.incident-map-pin{position:relative;width:32px;height:32px;background:var(--pin-color,#64748b);border:3px solid #fff;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 3px 7px rgba(0,0,0,.55)}
.incident-map-pin span{position:absolute;inset:7px;background:#fff;border-radius:50%;opacity:.95}


/* VB.2.3.0 — mobile-friendly public display
   Desktop/kiosk presentation above 800px is intentionally unchanged. */
@media (max-width:800px){
  html,body{
    width:100%;
    min-width:0;
    height:auto;
    min-height:100%;
    overflow-x:hidden;
    overflow-y:auto;
    -webkit-text-size-adjust:100%;
  }
  body{background:linear-gradient(180deg,#15364d 0,#061019 34rem,#061019 100%)}

  #publicDisplay{
    width:100%;
    height:auto;
    min-height:100dvh;
    display:block;
    padding:10px;
    overflow:visible;
  }

  #publicDisplay>header{
    min-height:0;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:10px;
    padding:4px 0 12px;
  }
  .brand{min-width:0;gap:10px}
  .brand img{
    flex:0 0 auto;
    width:58px;
    height:58px;
  }
  .brand>div{min-width:0}
  .brand p{
    max-width:100%;
    font-size:11px;
    line-height:1.15;
    letter-spacing:.08em;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .brand h1{
    margin:3px 0 0;
    font-size:clamp(26px,8vw,38px);
    line-height:1;
    white-space:normal;
  }
  .login-link{
    align-self:center;
    min-height:42px;
    padding:9px 11px;
    border-radius:12px;
    font-size:13px;
    white-space:nowrap;
  }

  #publicWeatherAlerts{
    margin:0 0 10px;
    max-height:none;
    overflow:visible;
  }
  .public-weather-alert{
    padding:10px;
    gap:7px;
  }
  .public-weather-alert-copy strong{font-size:15px;white-space:normal}
  .public-weather-alert-copy span{font-size:13px}
  .public-weather-alert-copy small{font-size:12px;white-space:normal}
  .public-weather-alert>a{min-height:40px;width:100%}

  .slides{
    position:static;
    min-height:0;
    overflow:visible;
  }
  .slide{
    position:static;
    inset:auto;
    display:none;
    width:100%;
    height:auto;
    min-height:0;
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transition:none;
    contain:none;
    overflow:visible;
  }
  .slide.active{display:block}

  /* Overview */
  .metrics{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;
    margin:0 0 10px;
  }
  .metrics>div{
    min-width:0;
    border-radius:15px;
    padding:12px 5px;
  }
  .metrics span{
    font-size:clamp(12px,3.5vw,16px);
    line-height:1.1;
    min-height:2.2em;
    display:flex;
    align-items:center;
    justify-content:center;
  }
  .metrics strong{
    font-size:clamp(34px,11vw,52px);
  }

  .stats-panel{
    height:auto;
    max-height:none;
    overflow:visible;
    border-radius:16px;
    padding:12px 10px;
  }
  .stats-panel h2,.map-heading h2{
    font-size:clamp(24px,7vw,34px);
    line-height:1.05;
    margin:0 0 12px;
  }
  .period-grid{
    grid-template-columns:1fr;
    gap:10px;
  }
  .period-grid>div{
    padding:12px 9px;
    border-radius:14px;
  }
  .period-grid h3{
    font-size:21px;
    margin-bottom:10px;
  }
  .cat-row{
    font-size:15px;
    margin:8px 0;
    gap:4px 8px;
  }
  .cat-row .track{height:8px}

  /* Analytics slides */
  .analytics-grid{
    height:auto;
    display:grid;
    grid-template-columns:1fr;
    grid-template-rows:auto;
    gap:10px;
    overflow:visible;
  }
  .analytics-card,.public-average-card{
    min-height:0;
    height:auto;
    border-radius:16px;
    padding:12px 10px;
    display:block;
  }
  .analytics-heading{
    display:block;
  }
  .analytics-heading h2{
    font-size:clamp(23px,7vw,32px);
    margin:0 0 3px;
  }
  .analytics-heading span{
    display:block;
    font-size:13px;
    padding:0 0 10px;
  }

  .line-chart,.dow-chart{
    height:auto;
    min-height:320px;
  }
  .line-chart svg{min-height:320px}
  .dow-chart{overflow-x:auto;padding-bottom:4px}
  .dow-legend{gap:10px;font-size:12px;padding:4px 0 12px}
  .dow-bars{
    min-width:620px;
    height:300px;
    gap:8px;
  }
  .dow-group>strong{font-size:12px}
  .dow-bar span{font-size:11px}

  .daily-averages{grid-template-columns:1fr!important}

  /* Time of day: vertical mobile layout, no forced 520px-wide legend. */
  .fullscreen-analytics-card,
  .fullscreen-analytics-card:has(.time-of-day-chart){
    width:100%;
    height:auto;
    min-height:0;
    max-height:none;
    overflow:visible;
    padding:12px 10px 20px;
  }
  .fullscreen-analytics-card .time-of-day-chart{
    display:block;
    height:auto;
    min-height:0;
    margin-top:8px;
    overflow:visible;
  }
  .fullscreen-analytics-card .tod-donuts{
    display:grid;
    grid-template-columns:1fr;
    width:100%;
    height:auto;
    overflow:visible;
    gap:10px;
    padding:0;
  }
  .fullscreen-analytics-card .tod-donut-panel{
    width:100%;
    min-width:0;
    flex:none;
    padding:10px;
  }
  .fullscreen-analytics-card .tod-donut{
    width:min(68vw,220px);
    margin-inline:auto;
  }
  .fullscreen-analytics-card .tod-legend{
    width:100%;
    display:grid;
    grid-template-columns:1fr;
    gap:7px;
    padding:10px 0 0;
    overflow:visible;
  }
  .fullscreen-analytics-card .tod-legend-item{
    width:100%;
    min-width:0;
    display:grid;
    grid-template-columns:12px minmax(90px,.7fr) minmax(0,1.3fr);
    gap:7px;
    padding:8px;
  }
  .fullscreen-analytics-card .tod-values{
    min-width:0;
    grid-column:auto;
    text-align:right;
    white-space:normal;
    overflow-wrap:anywhere;
    font-size:11px;
  }

  /* Day-of-month chart can scroll horizontally instead of stretching the page. */
  .day-month-card{overflow:hidden}
  .multi-line-chart{
    width:100%;
    min-height:390px;
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
  }
  .multi-line-chart svg{
    min-width:760px;
    min-height:380px;
  }
  .multi-line-legend.interactive{
    overflow-x:auto;
    flex-wrap:nowrap;
    justify-content:flex-start;
    padding-bottom:8px;
  }

  /* Maps */
  .map-heading{
    height:auto;
    display:block;
    margin-bottom:8px;
  }
  .map-heading span{
    display:block;
    font-size:14px;
    line-height:1.3;
  }
  .public-map{
    width:100%;
    height:58svh;
    min-height:390px;
    max-height:620px;
    border-radius:15px;
  }
  .legend{
    min-height:0;
    justify-content:flex-start;
    gap:8px 12px;
    padding:10px 2px 4px;
  }
  .legend span{font-size:12px}
  .legend i{width:11px;height:11px}

  .active-dashboard{
    height:auto;
    display:grid;
    grid-template-columns:1fr;
    gap:10px;
  }
  .active-map-wrap{height:auto}
  .active-map{
    height:58svh;
    min-height:390px;
  }
  .active-list-panel{
    display:block;
    padding:12px 10px;
    border-radius:16px;
    overflow:visible;
  }
  .active-list-panel h2{font-size:26px}
  .active-call-card{padding:10px;border-radius:13px}
  .active-call-card h3{font-size:19px}
  .active-call-card p{font-size:15px}
  .map-kpis{
    left:9px;
    top:9px;
    gap:6px;
  }
  .map-kpis>div{
    min-width:0;
    padding:8px 10px;
    border-radius:12px;
  }
  .map-kpis span{font-size:9px}
  .map-kpis strong{font-size:27px}
  .map-status{
    left:9px;
    right:9px;
    bottom:9px;
    max-width:calc(100% - 18px);
    padding:7px 9px;
    font-size:11px;
  }

  /* Footer becomes a normal, wrapping mobile control bar. */
  #publicDisplay>footer{
    width:100%;
    min-height:0;
    margin-top:14px;
    padding:12px 2px calc(12px + env(safe-area-inset-bottom));
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    justify-content:flex-start;
    gap:9px 12px;
    overflow:hidden;
  }
  .dots{
    order:1;
    width:100%;
    display:flex;
    gap:8px;
    overflow-x:auto;
    padding:3px 1px 5px;
    scrollbar-width:none;
  }
  .dots::-webkit-scrollbar{display:none}
  .dot{
    flex:0 0 auto;
    width:13px;
    height:13px;
    min-width:13px;
    min-height:13px;
  }
  #pauseRotation{
    order:2;
    min-height:42px;
    padding:8px 11px;
    font-size:13px;
  }
  #slideName{
    order:3;
    display:block;
    min-width:0;
    flex:1 1 130px;
    font-size:12px;
  }
  .public-version{
    order:4;
    width:100%;
    font-size:11px!important;
  }
  .footer-policy{
    order:5;
    font-size:12px;
  }
}

@media (max-width:430px){
  #publicDisplay{padding:8px}
  #publicDisplay>header{grid-template-columns:minmax(0,1fr) auto}
  .brand img{width:50px;height:50px}
  .brand p{font-size:9.5px}
  .brand h1{font-size:26px}
  .login-link{font-size:12px;padding:8px 9px}

  .metrics{gap:6px}
  .metrics>div{padding:10px 3px}
  .metrics span{font-size:11px}
  .metrics strong{font-size:34px}

  .public-map,.active-map{height:52svh;min-height:340px}
  .fullscreen-analytics-card .tod-donut{width:190px}
  .fullscreen-analytics-card .tod-legend-item{
    grid-template-columns:10px minmax(80px,.8fr) minmax(0,1.2fr);
    padding:7px 6px;
  }
}

/* VB.2.3.0 — readable mobile line graphs */
@media(max-width:800px){
  .line-chart{
    width:100%;
    min-height:360px;
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior-x:contain;
    padding-bottom:6px;
  }
  .line-chart svg{
    display:block;
    width:auto;
    height:350px;
    max-width:none;
  }
  .line-chart .chart-x{font-size:15px}
  .line-chart .chart-value{font-size:14px}
  .line-chart .chart-point{r:6}
}
