/* Compact working surface. Filtered content never determines map height. */
.topbar { height:44px; padding:0 20px; }
.brand strong { font-size:1.05rem; }
.workspace { grid-template-columns:220px minmax(0,1fr); min-height:calc(100dvh - 44px); }
main { padding:10px 16px 16px; margin:0 auto; align-self:start; }
.page-heading { margin-bottom:8px; gap:12px; }
.page-heading>div:first-child { flex:1; min-width:0; }
.page-heading .eyebrow { display:none; }
.page-heading h1 { font-size:1.4rem; }
.page-heading #scope { margin-top:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:.75rem; }
.page-actions { flex-shrink:0; }
.page-heading .primary-button { padding:8px 11px; }
.kpis { gap:8px; margin-bottom:10px; }
.kpis article { display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-rows:36px 30px; align-items:center; gap:2px 8px; padding:6px 10px; }
.kpis span { font-size:.875rem; line-height:1.2; }
.kpis strong { font-size:1.6rem; line-height:1; }
.kpis small { grid-column:1/-1; align-self:start; font-size:.75rem; line-height:1.25; }

.sidebar { padding:12px; }
.section-heading { margin-bottom:10px; }
.sidebar>label { margin-bottom:10px; }
.sidebar input:not([type=checkbox]),.sidebar select { padding:6px 8px; min-height:34px; }
.sidebar label input,.sidebar label select { margin-top:4px; }
.sidebar fieldset { margin-top:12px; }
.sidebar legend { margin-bottom:6px; }
.sidebar .date-label { margin-bottom:6px; }
.sidebar .hint { margin:6px 0 10px; line-height:1.4; }
.sidebar .definitions { padding-top:10px; line-height:1.45; }
.sidebar-footer { padding-top:10px; margin-top:14px; }
.date-section { grid-column:1/-1; border-top:1px solid var(--border); padding:10px 0; margin-bottom:0; font-size:.875rem; }
.date-section summary { cursor:pointer; font-weight:600; }
.date-section #date-filter-state { font-size:.75rem; color:var(--muted); font-weight:400; }
.sidebar .date-section fieldset { margin-top:10px; }
.sidebar .date-section .hint { margin-bottom:0; }
.sidebar #filter-options-note { grid-column:1/-1; margin:0 0 10px; font-size:.75rem; }
.date-section #filter-error:not(:empty) { grid-column:1/-1; margin:8px 0 0; }
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
.chart-stack .bar-row:disabled { opacity:1; cursor:default; }

.visual-grid { align-items:start; gap:12px; --dashboard-panel-height:calc(100dvh - 216px); }
.chart-stack { grid-column:2; display:grid; grid-template-rows:minmax(0,1.15fr) minmax(0,1fr) minmax(0,1.1fr); gap:8px; min-width:0; height:var(--dashboard-panel-height); }
.chart-stack>.panel { display:flex; flex-direction:column; min-height:0; }
.chart-stack .panel-heading { flex:none; padding:8px 10px 6px; }
.chart-stack .panel-heading p { margin-top:2px; line-height:1.3; font-size:.75rem; }
.chart-stack .chart-measure-note { flex:none; margin:0 10px 6px; font-size:.75rem; line-height:1.3; }
.chart-stack .chart-measure-note strong { display:inline; }
.chart-stack .bars { flex:1; min-height:0; overflow:auto; padding:0 10px 6px; scrollbar-gutter:stable; }
.chart-stack .bar-row { padding:4px 0; }
.chart-stack .bar-label { margin-bottom:3px; line-height:1.3; }
.chart-stack .bar-track { height:4px; }
.chart-stack .empty { padding:8px 0; }

.visual-grid>.map-panel { grid-column:1; align-self:start; display:flex; flex-direction:column; min-width:0; height:var(--dashboard-panel-height); }
.visual-grid>.map-panel>:not(#map) { flex:none; }
.visual-grid>.map-panel>.panel-heading { height:56px; padding:8px 10px; flex-wrap:nowrap; }
.visual-grid>.map-panel .panel-heading p { margin-top:2px; font-size:.75rem; white-space:nowrap; }
.map-panel .small-button { padding:6px 8px; }
.visual-grid>.map-panel .map-actions { flex-wrap:nowrap; gap:5px; }
.visual-grid>.map-panel>.map-toolbar { padding:0 10px 7px; gap:4px 12px; }
.visual-grid>.map-panel .map-toolbar label { font-size:.875rem; }
.visual-grid>.map-panel .map-toolbar select { min-height:32px; padding:5px 8px; margin-top:3px; }
.visual-grid>.map-panel .map-toolbar p { font-size:.75rem; line-height:1.3; height:16px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.visual-grid>.map-panel>#map { flex:1; height:0; min-height:100px; }
.visual-grid>.map-panel>.map-foot { padding:5px 10px; line-height:1.25; flex-direction:row; }
.visual-grid>.map-panel>.colour-legend { height:112px; margin:0 10px 8px; padding-top:6px; overflow:auto; scrollbar-gutter:stable; }
.visual-grid>.map-panel .colour-legend-heading { margin-bottom:5px; gap:4px 8px; }
.visual-grid>.map-panel #colour-legend-items { grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); gap:4px 10px; padding:0; max-height:none; overflow:visible; }
.visual-grid>.map-panel #colour-legend-items li { font-size:.75rem; line-height:1.3; gap:5px; }
.visual-grid>.map-panel #colour-legend-items strong { font-size:.75rem; }
.visual-grid>.map-panel .colour-swatch { width:10px; height:10px; flex-basis:10px; margin-top:3px; }
.visual-grid>.map-panel #colour-explanation { font-size:.75rem; line-height:1.35; margin-top:6px; }
.colour-legend #map-warning { padding:0; margin-top:6px; font-size:.75rem; }
.colour-legend #map-warning:empty { display:none; }
.colour-legend #status:not(:empty) { padding:7px; margin:0 0 6px; font-size:.8rem; }
.incidents-panel { margin-top:12px; }

@media(max-width:1200px) {
  .visual-grid { --dashboard-panel-height:calc(100dvh - 32px); }
  .visual-grid>.map-panel { height:calc(100dvh - 32px); }
  .chart-stack { grid-column:1; height:auto; grid-template-rows:none; }
  .chart-stack>.panel { max-height:320px; }
  .chart-stack .bars { display:block; }
}
@media(max-width:720px) {
  .workspace { display:block; }
  .sidebar { padding:12px; }
  main { padding:12px; }
  .topbar { padding:0 12px; }
  .page-heading .page-actions { margin-top:8px; }
  .kpis strong { font-size:1.35rem; }
  .kpis article { padding:6px 8px; grid-template-columns:1fr; grid-template-rows:34px 26px 30px; gap:3px; }
  .visual-grid>.map-panel>.panel-heading { height:82px; flex-wrap:wrap; gap:5px; }
  .visual-grid>.map-panel .map-toolbar label { font-size:.75rem; }
  .visual-grid>.map-panel>.colour-legend { height:132px; }
}
