:root {
  --navy-950: #061923;
  --navy-900: #082331;
  --navy-800: #10384a;
  --navy-700: #18546b;
  --blue-600: #087ea4;
  --blue-500: #1599c3;
  --blue-100: #dff2f8;
  --ink: #152935;
  --slate-700: #415663;
  --slate-600: #5d707b;
  --slate-500: #748690;
  --slate-300: #c8d2d8;
  --slate-200: #dce3e7;
  --slate-100: #edf1f3;
  --canvas: #f3f5f6;
  --paper: #ffffff;
  --amber: #c9771a;
  --amber-soft: #fff1dc;
  --red: #c2463a;
  --red-soft: #fce8e5;
  --green: #267456;
  --green-soft: #e4f2eb;
  --radius: .65rem;
  --shadow: 0 .15rem .5rem rgba(4, 25, 36, .06), 0 .8rem 2rem rgba(4, 25, 36, .055);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { scroll-behavior: smooth; scroll-padding-top: 5rem; font-size: clamp(17px, 1vw, 30px); }
body {
  margin: 0;
  color: var(--ink);
  background: var(--canvas);
  font-family: Inter, Aptos, "Segoe UI", Arial, sans-serif;
  font-size: 1rem;
  line-height: 1.42;
  -webkit-font-smoothing: antialiased;
}
body.panel-open,
body.drawer-open { overflow: hidden; }
button, input, select { font: inherit; }
button { color: inherit; }
button:focus-visible,
input:focus-visible,
select:focus-visible,
a:focus-visible,
[tabindex]:focus-visible { outline: .18rem solid rgba(21, 153, 195, .42); outline-offset: .12rem; }
a { color: inherit; }

.global-header {
  position: sticky;
  top: 0;
  z-index: 70;
  height: 4.35rem;
  display: grid;
  grid-template-columns: minmax(15rem, 1fr) auto minmax(24rem, 1.15fr);
  align-items: center;
  gap: 1rem;
  padding: 0 1.25rem;
  color: #fff;
  background: var(--navy-950);
  border-bottom: 1px solid rgba(255, 255, 255, .1);
}
.civic-brand { min-width: 0; display: flex; align-items: center; gap: .8rem; text-decoration: none; }
.logo-shell { width: 2.8rem; height: 2.8rem; flex: 0 0 2.8rem; display: grid; place-items: center; overflow: hidden; border-radius: 50%; background: #fff; }
.logo-shell img { width: 90%; height: 90%; object-fit: contain; }
.civic-name b,
.civic-name small { display: block; }
.civic-name b { font-size: .78rem; letter-spacing: .015em; }
.civic-name small { margin-top: .12rem; color: rgba(255,255,255,.56); font-size: .59rem; letter-spacing: .08em; text-transform: uppercase; }
.command-nav { height: 100%; display: flex; align-items: stretch; gap: 1.9rem; }
.command-nav a { position: relative; display: flex; align-items: center; color: rgba(255,255,255,.58); font-size: .7rem; font-weight: 650; text-decoration: none; }
.command-nav a:hover,
.command-nav a.active { color: #fff; }
.command-nav a.active::after { content: ""; position: absolute; right: 0; bottom: 0; left: 0; height: .2rem; background: var(--blue-500); }
.header-status { min-width: 0; justify-self: end; display: flex; align-items: center; gap: .65rem; }
.sync-status { display: inline-flex; align-items: center; gap: .45rem; color: rgba(255,255,255,.68); font-size: .63rem; white-space: nowrap; }
.sync-status i { width: .48rem; height: .48rem; border-radius: 50%; background: #f1b653; box-shadow: 0 0 0 .22rem rgba(241,182,83,.13); }
.sync-status.live i { background: #57c391; box-shadow: 0 0 0 .22rem rgba(87,195,145,.13); }
.sync-status.error i { background: #ef786d; box-shadow: 0 0 0 .22rem rgba(239,120,109,.14); }
.ist-clock { padding-left: 1rem; border-left: 1px solid rgba(255,255,255,.17); color: rgba(255,255,255,.75); font-size: .66rem; font-variant-numeric: tabular-nums; }
.header-icon { width: 2.15rem; height: 2.15rem; border: 1px solid rgba(255,255,255,.2); border-radius: .35rem; color: #fff; background: transparent; cursor: pointer; }
.header-icon:hover { background: rgba(255,255,255,.08); }
.header-icon:disabled { opacity: .5; cursor: wait; }
.profile-shell { position: relative; }
.profile-trigger { min-width: 10.8rem; height: 2.55rem; display: grid; grid-template-columns: 1.65rem minmax(0,1fr) auto; align-items: center; gap: .48rem; padding: .3rem .5rem; border: 1px solid rgba(255,255,255,.18); border-radius: .48rem; color: #fff; background: rgba(255,255,255,.055); text-align: left; cursor: pointer; }
.profile-trigger:hover,
.profile-trigger[aria-expanded="true"] { border-color: rgba(126,211,233,.48); background: rgba(255,255,255,.1); }
.profile-trigger > i { width: 1.65rem; height: 1.65rem; display: grid; place-items: center; border-radius: .4rem; color: #082331; background: #9ad9ea; font-size: .52rem; font-style: normal; font-weight: 900; }
.profile-trigger span,
.profile-trigger b,
.profile-trigger small { min-width: 0; display: block; }
.profile-trigger b { overflow: hidden; font-size: .57rem; text-overflow: ellipsis; white-space: nowrap; }
.profile-trigger small { overflow: hidden; margin-top: .08rem; color: rgba(255,255,255,.54); font-size: .47rem; text-overflow: ellipsis; white-space: nowrap; }
.profile-trigger em { color: rgba(255,255,255,.52); font-size: .65rem; font-style: normal; }
.profile-menu { position: absolute; top: calc(100% + .45rem); right: 0; z-index: 85; width: 14rem; padding: .45rem; overflow: hidden; border: 1px solid var(--slate-200); border-radius: .55rem; color: var(--ink); background: #fff; box-shadow: 0 1rem 2.5rem rgba(3,18,26,.25); }
.profile-menu > div { padding: .55rem .62rem .7rem; border-bottom: 1px solid var(--slate-200); }
.profile-menu span,
.profile-menu strong,
.profile-menu small { display: block; }
.profile-menu span { color: var(--slate-500); font-size: .48rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.profile-menu strong { margin-top: .22rem; color: var(--navy-900); font-size: .66rem; }
.profile-menu small { margin-top: .12rem; color: var(--slate-500); font-size: .54rem; }
.profile-menu button { width: 100%; padding: .62rem; border: 0; border-radius: .34rem; color: var(--slate-700); background: transparent; font-size: .58rem; font-weight: 700; text-align: left; cursor: pointer; }
.profile-menu button:hover { background: var(--slate-100); }
.profile-menu button:last-child { color: #a13d34; }

.command-viewport {
  position: relative;
  min-height: calc(100dvh - 4.35rem);
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  gap: .6rem;
  padding: .72rem 1rem 1rem;
  background: #f6f8f9;
}
.command-viewport.has-alert { grid-template-rows: auto auto auto minmax(0, 1fr); }
.command-heading { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; }
.heading-copy { min-width: 0; }
.eyebrow { color: var(--blue-600); font-size: .58rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.heading-copy h1 { margin: .12rem 0 0; color: var(--navy-950); font-family: Georgia, "Times New Roman", serif; font-size: 1.72rem; line-height: 1.05; letter-spacing: -.025em; }
.heading-copy p { max-width: 44rem; margin: .2rem 0 0; overflow: hidden; color: var(--slate-600); font-size: .58rem; text-overflow: ellipsis; white-space: nowrap; }
.scope-toolbar { display: flex; align-items: center; gap: .55rem; }
.date-presets { height: 2.45rem; display: flex; align-items: center; padding: .18rem; border: 1px solid var(--slate-200); border-radius: .4rem; background: #fff; }
.date-presets button { height: 1.95rem; min-width: 2.45rem; padding: 0 .6rem; border: 0; border-radius: .28rem; color: var(--slate-600); background: transparent; font-size: .6rem; font-weight: 800; cursor: pointer; }
.date-presets button.active { color: #fff; background: var(--navy-800); }
.command-search { position: relative; width: clamp(13rem, 17vw, 22rem); }
.command-search span { position: absolute; left: .75rem; top: .36rem; color: var(--slate-500); font-size: 1.15rem; transform: rotate(-17deg); pointer-events: none; }
.command-search input { width: 100%; height: 2.45rem; padding: 0 .75rem 0 2.15rem; border: 1px solid var(--slate-200); border-radius: .4rem; color: var(--ink); background: #fff; font-size: .68rem; }
.command-search input::placeholder { color: #8d9aa1; }
.toolbar-button { height: 2.45rem; display: inline-flex; align-items: center; gap: .45rem; padding: 0 .8rem; border: 1px solid var(--slate-200); border-radius: .4rem; color: var(--slate-700); background: #fff; font-size: .66rem; font-weight: 750; cursor: pointer; white-space: nowrap; }
.toolbar-button:hover { border-color: #9fb1bb; }
.toolbar-button:disabled { color: var(--slate-500); border-color: var(--slate-200); background: var(--slate-100); cursor: not-allowed; }
.toolbar-button b { min-width: 1rem; height: 1rem; display: grid; place-items: center; border-radius: 1rem; color: #fff; background: var(--blue-600); font-size: .5rem; }
.toolbar-button b:empty { display: none; }
.toolbar-button.accent { color: #fff; border-color: var(--navy-800); background: var(--navy-800); }
.filter-glyph { position: relative; width: .82rem; height: .68rem; display: block; border-top: .1rem solid currentColor; border-bottom: .1rem solid currentColor; }
.filter-glyph::after { content: ""; position: absolute; top: .23rem; left: .18rem; width: .46rem; border-top: .1rem solid currentColor; }
.export-menu { position: relative; }
.export-options { position: absolute; top: 2.8rem; right: 0; z-index: 80; min-width: 13.5rem; display: none; padding: .35rem; border: 1px solid var(--slate-200); border-radius: .48rem; background: #fff; box-shadow: var(--shadow); }
.export-menu.open .export-options { display: grid; }
.export-options button { padding: .7rem .75rem; border: 0; border-radius: .3rem; color: var(--slate-700); background: transparent; text-align: left; font-size: .66rem; cursor: pointer; }
.export-options button:hover { background: var(--slate-100); }

.scope-line { min-height: 1.7rem; display: flex; align-items: center; gap: .65rem; padding: 0 .15rem; color: var(--slate-500); font-size: .57rem; }
.scope-status { display: inline-flex; align-items: center; gap: .35rem; padding-right: .7rem; border-right: 1px solid var(--slate-300); color: var(--slate-700); }
.scope-status i { width: .42rem; height: .42rem; border-radius: 50%; background: var(--blue-500); }
.scope-status strong { color: var(--navy-800); font-size: .7rem; }
.scope-line button { margin-left: auto; padding: 0; border: 0; color: var(--blue-600); background: transparent; font-size: .6rem; font-weight: 750; cursor: pointer; }
.role-scope { display: inline-flex; align-items: center; gap: .32rem; padding: .24rem .5rem; border: 1px solid #b9d9e4; border-radius: 1rem; color: #16566d; background: #e7f4f8; white-space: nowrap; }
.role-scope i { color: var(--blue-500); font-size: .4rem; }
.role-scope strong { font-size: .52rem; font-weight: 800; }

.alert-banner { min-height: 3.4rem; display: flex; align-items: center; gap: .7rem; padding: .65rem .85rem; border: 1px solid #efb9b3; border-radius: var(--radius); background: #fff4f2; }
.alert-banner > span { width: 1.5rem; height: 1.5rem; display: grid; place-items: center; border-radius: 50%; color: #fff; background: var(--red); font-weight: 800; }
.alert-banner div { flex: 1; }
.alert-banner strong,
.alert-banner p { display: block; margin: 0; }
.alert-banner strong { font-size: .68rem; }
.alert-banner p { margin-top: .1rem; color: #8b5b56; font-size: .61rem; }
.alert-banner button { border: 0; color: #8b3f39; background: transparent; font-size: .62rem; font-weight: 800; cursor: pointer; }

.kpi-strip { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: hidden; border: 1px solid var(--slate-200); border-radius: var(--radius); background: #fff; box-shadow: 0 .2rem .9rem rgba(4,25,36,.035); }
.kpi-cell { position: relative; min-width: 0; min-height: 4.65rem; padding: .62rem .72rem .55rem; border-left: 1px solid var(--slate-200); border-top: 1px solid var(--slate-200); }
.kpi-cell:nth-child(odd) { border-left: 0; }
.kpi-cell:nth-child(-n+2) { border-top: 0; }
.kpi-cell::after { content: ""; position: absolute; right: .72rem; bottom: 0; left: .72rem; height: .13rem; background: var(--slate-200); }
.kpi-cell.primary-kpi::after { background: var(--blue-500); }
.kpi-cell.signal-negative::after { background: var(--red); }
.kpi-cell.signal-positive::after { background: var(--green); }
.kpi-cell > span,
.kpi-cell > strong,
.kpi-cell > small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kpi-cell > span { color: var(--slate-600); font-size: .49rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.kpi-cell > strong { margin-top: .2rem; color: var(--navy-950); font-family: Georgia, "Times New Roman", serif; font-size: 1.28rem; line-height: 1; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.kpi-cell.signal-negative > strong { color: #a9372e; }
.kpi-cell.signal-positive > strong { color: #22684e; }
.kpi-cell > small { margin-top: .24rem; color: var(--slate-500); font-size: .48rem; }

.map-workspace { min-height: clamp(42rem, calc(100dvh - 10.4rem), 68rem); display: grid; grid-template-columns: minmax(0, 1fr) clamp(22rem, 26vw, 28rem); gap: .72rem; }
.command-rail { min-width: 0; min-height: 0; display: grid; grid-template-rows: auto minmax(0, 1fr); gap: .72rem; }
.map-command,
.executive-panel { min-width: 0; overflow: hidden; border-radius: var(--radius); box-shadow: var(--shadow); }
.map-command { min-height: 0; display: grid; grid-template-rows: auto minmax(0,1fr) auto; border: 1px solid var(--slate-200); background: #fff; transition: border-color .18s ease, box-shadow .18s ease; }
.map-command:focus-within { border-color: #9bc7d7; box-shadow: 0 .2rem .7rem rgba(4,25,36,.08), 0 0 0 .15rem rgba(21,153,195,.08); }
.module-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .76rem .9rem .68rem; border-bottom: 1px solid var(--slate-200); }
.module-title-line { display: flex; align-items: center; gap: .55rem; }
.section-index { width: 1.35rem; height: 1.35rem; display: grid; place-items: center; border-radius: 50%; color: var(--blue-600); border: 1px solid #a9d5e5; font-size: .49rem; font-weight: 800; }
.section-index.light { color: #b8e7f4; border-color: rgba(184,231,244,.4); }
.module-header h2 { margin: .16rem 0 0; color: var(--navy-950); font-family: Georgia, "Times New Roman", serif; font-size: 1.08rem; line-height: 1.2; }
.module-header p { margin: .12rem 0 0; color: var(--slate-500); font-size: .54rem; }
.map-metric-tabs { display: flex; padding: .18rem; border: 1px solid var(--slate-200); border-radius: .38rem; background: var(--slate-100); }
.map-metric-tabs button { height: 1.8rem; min-width: 3.6rem; padding: 0 .65rem; border: 0; border-radius: .26rem; color: var(--slate-600); background: transparent; font-size: .58rem; font-weight: 750; cursor: pointer; }
.map-metric-tabs button.active { color: #fff; background: var(--navy-800); box-shadow: 0 .1rem .3rem rgba(4,25,36,.14); }

.map-stage { position: relative; min-height: 30rem; overflow: hidden; isolation: isolate; background: radial-gradient(circle at 48% 45%, #f8fbfc 0, #edf3f5 58%, #e4ecef 100%); cursor: grab; user-select: none; touch-action: none; }
.map-stage.dragging { cursor: grabbing; }
.map-grid { position: absolute; inset: 0; z-index: -1; opacity: .72; background-image: linear-gradient(rgba(20,73,94,.055) 1px, transparent 1px), linear-gradient(90deg, rgba(20,73,94,.055) 1px, transparent 1px), radial-gradient(circle at center, rgba(255,255,255,.9), transparent 70%); background-size: 2.4rem 2.4rem, 2.4rem 2.4rem, 100% 100%; }
#wardMap { width: 100%; height: 100%; display: block; overflow: hidden; }
.ward-shape { stroke: #fff; stroke-width: 1.1; vector-effect: non-scaling-stroke; cursor: pointer; transition: fill .18s ease, opacity .18s ease, stroke .18s ease; }
.ward-shape:hover,
.ward-shape.keyboard-focus { stroke: #0a4258; stroke-width: 2.8; filter: brightness(1.055) drop-shadow(0 .12rem .12rem rgba(4,25,36,.12)); }
.ward-shape.selected { stroke: #061923; stroke-width: 3.2; filter: drop-shadow(0 .15rem .18rem rgba(4,25,36,.22)); }
.ward-shape.dimmed { opacity: .36; }
.ward-label { fill: #173b4b; font-family: Inter, Aptos, "Segoe UI", sans-serif; font-weight: 850; text-anchor: middle; pointer-events: none; paint-order: stroke; stroke: rgba(255,255,255,.92); stroke-width: 3px; stroke-linejoin: round; }
.ticket-point { fill: #f7b04a; stroke: #fff; stroke-width: 1.6; vector-effect: non-scaling-stroke; cursor: pointer; filter: drop-shadow(0 1px 2px rgba(4,25,36,.25)); transition: filter .15s ease; }
.ticket-point.high { fill: #d34d3f; }
.ticket-point:hover { filter: drop-shadow(0 0 .26rem rgba(6,25,35,.65)); }
.ticket-cluster { fill: var(--navy-950); stroke: rgba(255,255,255,.9); stroke-width: 2; vector-effect: non-scaling-stroke; cursor: pointer; transition: filter .15s ease; }
.ticket-cluster:hover { filter: drop-shadow(0 0 .32rem rgba(6,25,35,.55)); }
.cluster-label { fill: #fff; font-family: Inter, sans-serif; font-weight: 850; text-anchor: middle; dominant-baseline: central; pointer-events: none; }
.map-loading { position: absolute; inset: 0; z-index: 8; display: flex; align-items: center; justify-content: center; gap: .55rem; color: var(--slate-600); background: rgba(238,243,245,.92); font-size: .68rem; }
.map-loading span,
.loading span { width: .9rem; height: .9rem; border: .12rem solid #b7c8d1; border-top-color: var(--blue-600); border-radius: 50%; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.map-tooltip { position: absolute; z-index: 20; width: min(18rem, calc(100% - 1rem)); padding: .75rem .85rem; border: 1px solid rgba(255,255,255,.16); border-radius: .45rem; color: #fff; background: rgba(6,25,35,.95); box-shadow: 0 .7rem 1.8rem rgba(4,25,36,.25); pointer-events: none; }
.map-tooltip strong { display: block; font-size: .7rem; }
.map-tooltip > span { display: block; margin-top: .18rem; color: rgba(255,255,255,.62); font-size: .55rem; }
.tooltip-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: .45rem; margin-top: .6rem; padding-top: .55rem; border-top: 1px solid rgba(255,255,255,.13); }
.tooltip-grid span { color: rgba(255,255,255,.54); font-size: .49rem; text-transform: uppercase; }
.tooltip-grid b { display: block; margin-top: .1rem; color: #fff; font-size: .72rem; font-variant-numeric: tabular-nums; }
.map-zoom { position: absolute; top: .75rem; left: .75rem; z-index: 12; display: grid; overflow: hidden; border: 1px solid #cbd7dd; border-radius: .38rem; background: #fff; box-shadow: 0 .2rem .8rem rgba(4,25,36,.1); }
.map-zoom button { width: 2rem; height: 1.95rem; border: 0; border-top: 1px solid var(--slate-200); background: #fff; color: var(--navy-800); font-size: .9rem; font-weight: 700; cursor: pointer; }
.map-zoom button:first-child { border-top: 0; }
.map-zoom button:hover { background: var(--slate-100); }
.map-layer-control { position: absolute; top: .75rem; right: .75rem; z-index: 12; display: flex; gap: .35rem; }
.map-layer-control button { height: 1.95rem; padding: 0 .65rem; border: 1px solid #cbd7dd; border-radius: .36rem; color: var(--slate-700); background: rgba(255,255,255,.94); font-size: .55rem; font-weight: 750; cursor: pointer; box-shadow: 0 .15rem .6rem rgba(4,25,36,.08); }
.map-layer-control button:disabled { opacity: .45; cursor: default; }
.map-layer-control button i { width: .38rem; height: .38rem; display: inline-block; margin-right: .25rem; border-radius: 50%; background: #f7b04a; }
.map-layer-control button:not(.active) i { background: var(--slate-300); }
.map-layer-control button span { margin-right: .18rem; font-size: .68rem; }
.map-compass { position: absolute; top: 4.65rem; left: 1.32rem; z-index: 10; width: .9rem; color: rgba(16,56,74,.62); text-align: center; pointer-events: none; }
.map-compass i { display: block; font-size: .48rem; font-style: normal; font-weight: 900; }
.map-compass span { width: 1px; height: 1.15rem; display: block; margin: .08rem auto 0; background: linear-gradient(var(--navy-800) 0 55%, var(--slate-300) 55%); }
.map-legend { position: absolute; left: .75rem; bottom: .75rem; z-index: 10; min-width: 10.5rem; padding: .55rem .65rem; border: 1px solid rgba(255,255,255,.7); border-radius: .4rem; background: rgba(255,255,255,.91); box-shadow: 0 .2rem .8rem rgba(4,25,36,.08); backdrop-filter: blur(.4rem); }
.map-legend > span { display: block; color: var(--slate-700); font-size: .56rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.legend-scale { display: grid; grid-template-columns: repeat(5, 1fr); height: .38rem; margin-top: .35rem; overflow: hidden; border-radius: .2rem; }
.legend-scale i:nth-child(1) { background: #e7eef2; }.legend-scale i:nth-child(2) { background: #bcd8e4; }.legend-scale i:nth-child(3) { background: #79b4cb; }.legend-scale i:nth-child(4) { background: #2681a4; }.legend-scale i:nth-child(5) { background: #08445e; }
.legend-labels { display: flex; justify-content: space-between; margin-top: .18rem; color: var(--slate-500); font-size: .52rem; }
.map-inspector { position: absolute; right: .75rem; bottom: .75rem; z-index: 10; width: min(17rem, calc(100% - 15rem)); padding: .72rem .78rem; border: 1px solid rgba(255,255,255,.2); border-radius: .48rem; color: #fff; background: rgba(6,25,35,.91); box-shadow: 0 .45rem 1.3rem rgba(4,25,36,.2); backdrop-filter: blur(.55rem); pointer-events: none; }
.map-inspector > span { color: #8fd4e6; font-size: .45rem; font-weight: 850; letter-spacing: .11em; text-transform: uppercase; }
.map-inspector h3 { margin: .16rem 0 0; overflow: hidden; font-family: Georgia, "Times New Roman", serif; font-size: .86rem; text-overflow: ellipsis; white-space: nowrap; }
.map-inspector > p { margin: .15rem 0 .55rem; overflow: hidden; color: rgba(255,255,255,.57); font-size: .49rem; text-overflow: ellipsis; white-space: nowrap; }
.map-inspector > div { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); border-top: 1px solid rgba(255,255,255,.13); }
.map-inspector > div > span { min-width: 0; padding: .45rem .35rem 0; border-left: 1px solid rgba(255,255,255,.1); }
.map-inspector > div > span:first-child { padding-left: 0; border-left: 0; }
.map-inspector small,
.map-inspector b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.map-inspector small { color: rgba(255,255,255,.48); font-size: .42rem; text-transform: uppercase; }
.map-inspector b { margin-top: .1rem; font-size: .68rem; font-variant-numeric: tabular-nums; }
.map-footer { min-height: 3.45rem; display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); align-items: center; border-top: 1px solid var(--slate-200); }
.map-footer > span { min-width: 0; padding: .45rem .85rem; border-left: 1px solid var(--slate-200); }
.map-footer > span:first-child { border-left: 0; }
.map-footer b,
.map-footer small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.map-footer b { color: var(--navy-800); font-size: .65rem; font-variant-numeric: tabular-nums; }
.map-footer small { margin-top: .08rem; color: var(--slate-500); font-size: .53rem; text-transform: uppercase; letter-spacing: .05em; }
body.map-focus-mode { overflow: hidden; }
body.map-focus-mode::before { content: ""; position: fixed; inset: 0; z-index: 115; background: rgba(3,18,26,.72); backdrop-filter: blur(.25rem); pointer-events: none; }
body.map-focus-mode .map-command { position: fixed; inset: .65rem; z-index: 120; border-color: #7aaabc; border-radius: .75rem; box-shadow: 0 1.5rem 5rem rgba(3,18,26,.38); }
body.map-focus-mode .map-stage { min-height: 0; }
body.map-focus-mode #mapExpand { color: #fff; border-color: var(--navy-800); background: var(--navy-800); }

.executive-panel { display: flex; flex-direction: column; min-height: 0; overflow-y: auto; padding: .78rem .85rem .72rem; color: #fff; background: var(--navy-900); border: 1px solid #174357; }
.panel-kicker-row { display: flex; align-items: center; gap: .5rem; }
.panel-kicker-row .eyebrow { color: #9ad9ea; }
.risk-chip { margin-left: auto; display: inline-flex; align-items: center; gap: .35rem; min-height: 1.35rem; padding: 0 .52rem; border: 1px solid rgba(255,255,255,.2); border-radius: 1rem; color: #dfeef3; background: rgba(255,255,255,.07); font-size: .54rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.risk-chip::before { content: ""; width: .35rem; height: .35rem; border-radius: 50%; background: #f1b653; }
.risk-chip.critical::before { background: #f1756a; }.risk-chip.high::before { background: #f1a449; }.risk-chip.guarded::before { background: #79c3dc; }.risk-chip.stable::before { background: #65c696; }
.brief-main h2 { margin: .7rem 0 .35rem; font-family: Georgia, "Times New Roman", serif; font-size: 1.15rem; line-height: 1.18; letter-spacing: -.012em; }
.brief-main p { margin: 0; color: rgba(255,255,255,.62); font-size: .6rem; line-height: 1.5; }
.prediction-card { display: grid; grid-template-columns: 1.15fr .85fr; margin-top: .72rem; overflow: hidden; border: 1px solid rgba(255,255,255,.13); border-radius: .45rem; background: rgba(255,255,255,.055); }
.prediction-main,
.prediction-side { min-width: 0; padding: .65rem .7rem .55rem; }
.prediction-side { border-left: 1px solid rgba(255,255,255,.13); }
.prediction-main span,
.prediction-main strong,
.prediction-main small,
.prediction-side span,
.prediction-side strong,
.prediction-side small { display: block; }
.prediction-main span,
.prediction-side span { color: rgba(255,255,255,.58); font-size: .55rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.prediction-main strong { margin-top: .24rem; font-family: Georgia, serif; font-size: 1.7rem; line-height: 1; }
.prediction-side strong { margin-top: .33rem; font-size: .88rem; }
.prediction-main small,
.prediction-side small { margin-top: .24rem; overflow: hidden; color: rgba(255,255,255,.53); font-size: .54rem; text-overflow: ellipsis; white-space: nowrap; }
.confidence-line { grid-column: 1 / -1; display: flex; justify-content: space-between; padding: .35rem .7rem; border-top: 1px solid rgba(255,255,255,.1); color: rgba(255,255,255,.56); font-size: .54rem; text-transform: uppercase; letter-spacing: .05em; }
.confidence-line b { color: #b9e4ef; }
.brief-signal-row { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); margin-top: .65rem; border-top: 1px solid rgba(255,255,255,.12); border-bottom: 1px solid rgba(255,255,255,.12); }
.brief-signal-row article { min-width: 0; padding: .55rem .55rem .5rem; border-left: 1px solid rgba(255,255,255,.12); }
.brief-signal-row article:first-child { padding-left: 0; border-left: 0; }
.brief-signal-row article:last-child { padding-right: 0; }
.brief-signal-row span,
.brief-signal-row strong,
.brief-signal-row small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.brief-signal-row span { color: rgba(255,255,255,.55); font-size: .54rem; text-transform: uppercase; letter-spacing: .045em; }
.brief-signal-row strong { margin-top: .2rem; font-family: Georgia, serif; font-size: 1rem; }
.brief-signal-row small { margin-top: .1rem; color: rgba(255,255,255,.5); font-size: .53rem; }
.agenda-header { display: flex; justify-content: space-between; margin-top: .65rem; color: rgba(255,255,255,.65); font-size: .52rem; font-weight: 800; text-transform: uppercase; letter-spacing: .07em; }
.agenda-header b { color: #9ed9e8; }
.agenda-list { display: grid; gap: .32rem; margin-top: .4rem; }
.agenda-item { display: grid; grid-template-columns: 1.45rem minmax(0,1fr) auto; align-items: start; gap: .55rem; padding: .48rem .52rem; border: 1px solid rgba(255,255,255,.1); border-radius: .36rem; background: rgba(255,255,255,.045); }
.agenda-rank { width: 1.35rem; height: 1.35rem; display: grid; place-items: center; border-radius: 50%; color: #071d2b; background: #8bd0e3; font-family: Georgia, serif; font-size: .58rem; font-weight: 800; }
.agenda-item.critical .agenda-rank { background: #f18a80; }
.agenda-item.watch .agenda-rank { background: #f2b25e; }
.agenda-item strong,
.agenda-item span,
.agenda-item small { display: block; }
.agenda-item strong { font-size: .56rem; line-height: 1.3; }
.agenda-item span { margin-top: .12rem; color: rgba(255,255,255,.56); font-size: .54rem; line-height: 1.35; }
.agenda-impact { padding: .15rem .3rem; border-radius: .2rem; color: #b7e6f2 !important; background: rgba(21,153,195,.14); font-size: .52rem !important; white-space: nowrap; }
.focus-action { width: 100%; margin-top: .46rem; padding: .5rem 0; border: 0; border-top: 1px solid rgba(255,255,255,.12); color: #9edff0; background: transparent; font-size: .56rem; font-weight: 800; text-align: left; cursor: pointer; }
.focus-action span { float: right; }
.method-note { margin-top: .55rem; display: flex; gap: .45rem; padding-top: .45rem; color: rgba(255,255,255,.46); font-size: .53rem; line-height: 1.4; }
.method-note strong { flex: 0 0 auto; color: rgba(255,255,255,.54); text-transform: uppercase; letter-spacing: .05em; }

.analysis-zone,
.intervention-zone,
.register-zone { padding: 3.5rem 2rem; }
.analysis-zone { background: #fff; }
.section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 3rem; max-width: 110rem; margin: 0 auto 1.5rem; }
.section-heading h2 { margin: .3rem 0 0; color: var(--navy-950); font-family: Georgia, serif; font-size: 1.8rem; line-height: 1.12; }
.section-heading p { max-width: 33rem; margin: 0; color: var(--slate-600); font-size: .72rem; text-align: right; }
.diagnostic-grid { max-width: 110rem; margin: 0 auto; display: grid; grid-template-columns: 1.55fr .8fr .95fr; gap: 1rem; }
.analysis-card { min-width: 0; min-height: 18rem; overflow: hidden; border: 1px solid var(--slate-200); border-radius: var(--radius); background: #fff; box-shadow: 0 .35rem 1.4rem rgba(4,25,36,.05); }
.card-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: .8rem; padding: 1rem 1.1rem .8rem; }
.card-heading span { color: var(--blue-600); font-size: .54rem; font-weight: 800; letter-spacing: .1em; }
.card-heading h3 { margin: .22rem 0 0; color: var(--navy-950); font-size: .9rem; }
.card-heading > strong { color: var(--navy-800); font-family: Georgia, serif; font-size: 1.25rem; }
.benchmark { padding: .28rem .42rem; border-radius: .25rem; color: var(--slate-600); background: var(--slate-100); font-size: .5rem; text-transform: uppercase; }
.trend-chart { height: 13.7rem; padding: .3rem 1rem 1rem; }
.trend-chart svg { width: 100%; height: 100%; overflow: visible; }
.trend-grid { stroke: #dce5e9; stroke-width: 1; }
.trend-area { fill: url(#trendGradient); }
.trend-line { fill: none; stroke: var(--blue-600); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.trend-dot { fill: #fff; stroke: var(--blue-600); stroke-width: 2; }
.trend-label,
.trend-value { fill: var(--slate-500); font-size: 8px; }
.donut-layout { display: grid; grid-template-columns: 9rem 1fr; align-items: center; gap: .4rem; padding: 1.1rem; }
.donut { position: relative; width: 8.3rem; height: 8.3rem; display: grid; place-items: center; }
.donut svg { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.donut > div { position: relative; z-index: 2; text-align: center; }
.donut strong,
.donut span { display: block; }
.donut strong { color: var(--navy-950); font-family: Georgia, serif; font-size: 1.35rem; }
.donut span { margin-top: .12rem; color: var(--slate-500); font-size: .48rem; text-transform: uppercase; }
.donut-legend { display: grid; gap: .5rem; }
.legend-row { display: grid; grid-template-columns: .45rem 1fr auto; align-items: center; gap: .42rem; color: var(--slate-600); font-size: .55rem; }
.legend-row i { width: .42rem; height: .42rem; border-radius: .08rem; }
.legend-row b { color: var(--navy-800); font-size: .59rem; }
.legend-row i.dot-open { background: #d58a30; }.legend-row i.dot-in-progress { background: #1686ad; }.legend-row i.dot-assigned { background: #5b98b1; }.legend-row i.dot-accepted { background: #73afc3; }.legend-row i.dot-resolved { background: #2c8563; }.legend-row i.dot-closed { background: #175f46; }.legend-row i.dot-cancelled { background: #9aa5aa; }.legend-row i.dot-reject, .legend-row i.dot-rejected { background: #807a83; }.legend-row i.dot-duplicate { background: #9b8872; }.legend-row i.dot-unknown { background: #746b91; }
.bar-list { display: grid; gap: .8rem; padding: .55rem 1.1rem 1rem; }
.bar-item { display: grid; grid-template-columns: minmax(0,1fr) 2.2rem; align-items: end; gap: .65rem; }
.bar-item label { display: flex; overflow: hidden; color: var(--slate-700); font-size: .56rem; white-space: nowrap; }
.bar-item label span { overflow: hidden; text-overflow: ellipsis; }
.dept-progress,
.risk-progress { width: 100%; height: .38rem; display: block; margin-top: .32rem; overflow: hidden; border: 0; border-radius: .3rem; appearance: none; background: var(--slate-100); }
.dept-progress::-webkit-progress-bar,
.risk-progress::-webkit-progress-bar { border-radius: .3rem; background: var(--slate-100); }
.dept-progress::-webkit-progress-value { border-radius: .3rem; background: var(--blue-600); }
.dept-progress::-moz-progress-bar { border-radius: .3rem; background: var(--blue-600); }
.risk-progress::-webkit-progress-value { border-radius: .3rem; background: linear-gradient(90deg, #62a88b, #e3a548, #c9473b); }
.risk-progress::-moz-progress-bar { border-radius: .3rem; background: #c96b4e; }
.bar-item > b { color: var(--navy-800); font-size: .62rem; text-align: right; }
.skeleton-line { height: 1rem; border-radius: .25rem; background: linear-gradient(90deg, #edf1f3, #f8fafb, #edf1f3); background-size: 200% 100%; animation: shimmer 1.2s infinite; }
@keyframes shimmer { to { background-position: -200% 0; } }

.intervention-zone { background: var(--navy-950); }
.section-heading.inverse h2 { color: #fff; }
.section-heading.inverse .eyebrow { color: #78cce2; }
.section-heading.inverse p { color: rgba(255,255,255,.56); }
.risk-matrix-card { max-width: 110rem; margin: 0 auto; overflow: hidden; border: 1px solid rgba(255,255,255,.16); border-radius: var(--radius); background: #fff; }
.risk-table-wrap,
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
.risk-table { min-width: 68rem; }
thead { background: #f0f4f6; }
th { padding: .72rem .8rem; color: var(--slate-600); font-size: .52rem; text-align: left; text-transform: uppercase; letter-spacing: .075em; white-space: nowrap; }
td { padding: .8rem; border-top: 1px solid var(--slate-200); color: var(--slate-700); font-size: .61rem; vertical-align: middle; }
.risk-table tbody tr { cursor: pointer; }
.risk-table tbody tr:hover { background: #f7fafb; }
.risk-table td:first-child { color: var(--slate-500); font-family: Georgia, serif; font-size: .8rem; }
.risk-table td:nth-child(2) { max-width: 18rem; color: var(--navy-800); font-weight: 750; }
.risk-cell { min-width: 8.5rem; }
.risk-cell strong { display: flex; justify-content: space-between; color: var(--slate-600); font-size: .54rem; }
.risk-badge { min-height: 1.45rem; display: inline-flex; align-items: center; padding: 0 .52rem; border-radius: 1rem; font-size: .49rem; font-weight: 800; text-transform: uppercase; white-space: nowrap; }
.risk-badge.critical { color: #9d332b; background: var(--red-soft); }.risk-badge.high { color: #935914; background: var(--amber-soft); }.risk-badge.guarded { color: #276078; background: #e2f0f5; }.risk-badge.stable { color: #28674f; background: var(--green-soft); }
.risk-matrix-card footer { display: flex; justify-content: space-between; padding: .65rem .8rem; border-top: 1px solid var(--slate-200); color: var(--slate-500); background: #f8fafb; font-size: .52rem; }

.register-zone { background: #edf1f3; }
.register-card { max-width: 110rem; margin: 0 auto; overflow: hidden; border: 1px solid var(--slate-200); border-radius: var(--radius); background: #fff; box-shadow: var(--shadow); }
.register-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; padding: 1.1rem 1.2rem; }
.register-header h2 { margin: .25rem 0 0; color: var(--navy-950); font-family: Georgia, serif; font-size: 1.45rem; }
.register-header p { margin: .25rem 0 0; color: var(--slate-600); font-size: .62rem; }
.table-tools { display: flex; align-items: center; gap: .7rem; color: var(--slate-500); font-size: .58rem; }
.table-tools select { height: 2rem; border: 1px solid var(--slate-200); border-radius: .3rem; color: var(--slate-700); background: #fff; font-size: .58rem; }
.table-wrap { border-top: 1px solid var(--slate-200); }
.register-card table { min-width: 73rem; }
th button { display: flex; align-items: center; gap: .25rem; padding: 0; border: 0; color: inherit; background: transparent; font: inherit; text-transform: inherit; letter-spacing: inherit; font-weight: 800; cursor: pointer; }
th button span { color: #9eacb3; }
.register-card tbody tr { cursor: pointer; }
.register-card tbody tr:hover { background: #f7fafb; }
.ticket-id { color: var(--navy-800); font-weight: 800; }
.ticket-date { display: block; margin-top: .12rem; color: #8b9aa1; font-size: .51rem; }
.title-cell strong,
.title-cell span { display: block; max-width: 18rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.title-cell strong { color: var(--ink); font-size: .62rem; }
.title-cell span { margin-top: .14rem; color: var(--slate-500); font-size: .52rem; }
.ward-cell b,
.ward-cell span { display: block; }
.ward-cell b { color: var(--navy-800); font-size: .59rem; }
.ward-cell span { max-width: 10rem; margin-top: .12rem; overflow: hidden; color: var(--slate-500); font-size: .5rem; text-overflow: ellipsis; white-space: nowrap; }
.badge { min-height: 1.35rem; display: inline-flex; align-items: center; gap: .34rem; padding: 0 .48rem; border-radius: 1rem; font-size: .47rem; font-weight: 800; text-transform: uppercase; letter-spacing: .025em; white-space: nowrap; }
.badge::before { content: ""; width: .3rem; height: .3rem; border-radius: 50%; background: currentColor; }
.status-open { color: #94601d; background: var(--amber-soft); }.status-in-progress, .status-assigned, .status-accepted { color: #276687; background: #e3f0f6; }.status-resolved, .status-closed { color: #286b50; background: var(--green-soft); }.status-cancelled, .status-rejected, .status-reject, .status-duplicate { color: #68757b; background: #edf0f2; }.status-unknown, .status-unmeasured { color: #65587f; background: #efecf5; }
.priority-critical, .priority-high { color: #a23730; background: var(--red-soft); }.priority-medium { color: #94601d; background: var(--amber-soft); }.priority-low { color: #2d6853; background: var(--green-soft); }.priority-unspecified { color: #68757b; background: #edf0f2; }
.sla-overdue,
.sla-breached { color: #a83a33; font-weight: 800; }.sla-within, .sla-met { color: #4f6b61; }
.assignee { min-width: 7rem; display: flex; align-items: center; gap: .45rem; }
.avatar { width: 1.55rem; height: 1.55rem; flex: 0 0 1.55rem; display: grid; place-items: center; border-radius: 50%; color: #fff; background: var(--navy-700); font-size: .48rem; font-weight: 800; }
.assignee span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.unassigned { color: #9d4a3d; font-style: italic; }
.table-empty { min-height: 8rem; display: flex; align-items: center; justify-content: center; gap: .5rem; color: var(--slate-500); cursor: default; }
.pagination { display: flex; align-items: center; justify-content: flex-end; gap: .4rem; padding: .75rem 1rem; border-top: 1px solid var(--slate-200); }
.pagination button { min-width: 2rem; height: 1.9rem; border: 1px solid var(--slate-200); border-radius: .3rem; color: var(--slate-600); background: #fff; font-size: .54rem; cursor: pointer; }
.pagination button:disabled { opacity: .42; cursor: default; }
.pagination #pageNumbers { display: flex; gap: .25rem; }
.pagination #pageNumbers button.active { color: #fff; border-color: var(--navy-800); background: var(--navy-800); }
.page-spacer { padding: .3rem .1rem; color: var(--slate-500); }

.global-footer { min-height: 4.5rem; display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding: 1rem 2rem; color: rgba(255,255,255,.53); background: #04141d; font-size: .54rem; }
.global-footer strong { color: #fff; }
.global-footer a { color: #8dd7e9; text-decoration: none; }
.global-footer a:hover { text-decoration: underline; }

.filter-backdrop,
.drawer-backdrop { position: fixed; inset: 0; z-index: 90; background: rgba(3,18,26,.48); backdrop-filter: blur(.1rem); }
.filter-panel,
.ticket-drawer { position: fixed; top: 0; right: 0; z-index: 100; width: min(31rem, 100vw); height: 100vh; display: flex; flex-direction: column; overflow: hidden; transform: translateX(102%); background: #fff; box-shadow: -1rem 0 3rem rgba(3,18,26,.22); transition: transform .24s ease; }
.filter-panel.open,
.ticket-drawer.open { transform: translateX(0); }
.filter-panel > header,
.drawer-head { flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; padding: 1.3rem 1.35rem; border-bottom: 1px solid var(--slate-200); }
.filter-panel h2,
.drawer-head h2 { margin: .2rem 0 0; color: var(--navy-950); font-family: Georgia, serif; font-size: 1.35rem; }
.filter-panel header button,
.drawer-head button { width: 2rem; height: 2rem; border: 1px solid var(--slate-200); border-radius: 50%; color: var(--slate-700); background: #fff; font-size: 1.2rem; line-height: 1; cursor: pointer; }
.filter-body { flex: 1; overflow-y: auto; padding: 1.2rem 1.35rem; }
.filter-group { display: grid; gap: .8rem; }
.filter-group + .filter-group { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--slate-200); }
.filter-group.two-up { grid-template-columns: 1fr 1fr; }
.filter-group label { color: var(--slate-600); font-size: .56rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.filter-group input,
.filter-group select { width: 100%; height: 2.45rem; margin-top: .3rem; padding: 0 .7rem; border: 1px solid var(--slate-200); border-radius: .36rem; color: var(--ink); background: #fff; font-size: .66rem; text-transform: none; letter-spacing: 0; }
.filter-group label.locked-filter { color: #23617a; }
.filter-group label.locked-filter select { color: #23566a; border-color: #bdd9e3; background: #edf7fa; cursor: not-allowed; }
.filter-panel > footer { flex: 0 0 auto; display: flex; justify-content: flex-end; gap: .6rem; padding: .9rem 1.35rem; border-top: 1px solid var(--slate-200); background: #f8fafb; }
.plain-action,
.primary-action { min-height: 2.4rem; padding: 0 .9rem; border-radius: .35rem; font-size: .64rem; font-weight: 800; cursor: pointer; }
.plain-action { border: 1px solid var(--slate-200); color: var(--slate-700); background: #fff; }
.primary-action { border: 1px solid var(--navy-800); color: #fff; background: var(--navy-800); }
.drawer-content { flex: 1; overflow-y: auto; padding: 1.2rem 1.35rem 2rem; }
.drawer-title { margin: 0 0 .4rem; color: var(--navy-950); font-family: Georgia, serif; font-size: 1.25rem; }
.drawer-description { margin: 0; color: var(--slate-600); font-size: .68rem; line-height: 1.6; }
.drawer-badges { display: flex; flex-wrap: wrap; gap: .4rem; margin: .9rem 0 1rem; }
.detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; overflow: hidden; border: 1px solid var(--slate-200); border-radius: .5rem; background: var(--slate-200); }
.detail-item { min-height: 4rem; padding: .7rem; background: #fbfcfd; }
.detail-item span,
.detail-item strong { display: block; }
.detail-item span { color: var(--slate-500); font-size: .48rem; font-weight: 800; text-transform: uppercase; letter-spacing: .07em; }
.detail-item strong { margin-top: .28rem; color: var(--slate-700); font-size: .6rem; line-height: 1.4; }
.drawer-section { margin-top: 1.2rem; }
.drawer-section h3 { margin: 0 0 .55rem; color: var(--slate-700); font-size: .56rem; text-transform: uppercase; letter-spacing: .08em; }
.empty-note { padding: .7rem; border-radius: .4rem; color: var(--slate-500); background: var(--slate-100); font-size: .58rem; }
.evidence-list { display: flex; flex-wrap: wrap; gap: .4rem; }
.evidence-list a { padding: .45rem .55rem; border: 1px solid var(--slate-200); border-radius: .35rem; color: var(--blue-600); background: #f8fafb; font-size: .56rem; text-decoration: none; }
.timeline { position: relative; display: grid; gap: .8rem; padding-left: 1rem; }
.timeline::before { content: ""; position: absolute; top: .3rem; bottom: .35rem; left: .25rem; width: 1px; background: var(--slate-300); }
.timeline-item { position: relative; }
.timeline-item::before { content: ""; position: absolute; top: .25rem; left: -.92rem; width: .42rem; height: .42rem; border: .12rem solid #fff; border-radius: 50%; background: var(--blue-600); box-shadow: 0 0 0 1px var(--blue-600); }
.timeline-item strong { display: block; color: var(--slate-700); font-size: .6rem; }
.timeline-item p { margin: .16rem 0 0; color: var(--slate-500); font-size: .55rem; }
.timeline-item time { display: block; margin-top: .15rem; color: #91a0a7; font-size: .49rem; }
.cluster-case-list { display: grid; gap: .5rem; margin-top: 1rem; }
.cluster-case-list button { width: 100%; display: grid; grid-template-columns: minmax(7rem,.65fr) minmax(0,1.35fr) auto; align-items: center; gap: .75rem; padding: .72rem; border: 1px solid var(--slate-200); border-radius: .45rem; color: var(--slate-700); background: #fbfcfd; text-align: left; cursor: pointer; }
.cluster-case-list button:hover { border-color: #9ec4d4; background: #f2f8fa; }
.cluster-case-list span,
.cluster-case-list strong,
.cluster-case-list b,
.cluster-case-list small { min-width: 0; display: block; }
.cluster-case-list strong { color: var(--blue-600); font-size: .62rem; }
.cluster-case-list b { overflow: hidden; color: var(--navy-800); font-size: .62rem; text-overflow: ellipsis; white-space: nowrap; }
.cluster-case-list small { margin-top: .15rem; overflow: hidden; color: var(--slate-500); font-size: .52rem; text-overflow: ellipsis; white-space: nowrap; }
.cluster-case-list i { color: var(--blue-600); font-style: normal; font-size: .8rem; }

.access-dialog { width: min(51rem, calc(100vw - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; overflow: auto; border: 1px solid rgba(255,255,255,.13); border-radius: .9rem; background: #fff; box-shadow: 0 1.5rem 5rem rgba(3,18,26,.42); }
.access-dialog::backdrop { background: rgba(3,18,26,.78); backdrop-filter: blur(.38rem); }
.access-layout { display: grid; grid-template-columns: minmax(17rem,.8fr) minmax(23rem,1.2fr); }
.access-intro { position: relative; min-height: 32rem; display: flex; flex-direction: column; justify-content: center; overflow: hidden; padding: 2.1rem; color: #fff; background: radial-gradient(circle at 20% 10%, rgba(31,143,176,.35), transparent 34%), linear-gradient(155deg, #0b3d50, #061923 72%); }
.access-intro::after { content: ""; position: absolute; right: -4rem; bottom: -5rem; width: 18rem; height: 18rem; border: 1px solid rgba(130,218,239,.13); border-radius: 50%; box-shadow: 0 0 0 3rem rgba(130,218,239,.04), 0 0 0 6rem rgba(130,218,239,.025); }
.access-intro > * { position: relative; z-index: 1; }
.access-seal { width: 4rem; height: 4rem; display: grid; place-items: center; margin-bottom: 1rem; border-radius: 50%; background: #fff; box-shadow: 0 .4rem 1rem rgba(0,0,0,.15); }
.access-seal img { width: 89%; height: 89%; object-fit: contain; }
.access-intro .eyebrow { color: #8ed5e7; }
.access-intro h2 { margin: .65rem 0 .7rem; font-family: Georgia, "Times New Roman", serif; font-size: 2rem; line-height: 1.02; letter-spacing: -.025em; }
.access-intro > p { margin: 0; color: rgba(255,255,255,.62); font-size: .66rem; line-height: 1.65; }
.access-promise { display: flex; gap: .6rem; margin-top: 2.1rem; padding-top: 1rem; border-top: 1px solid rgba(255,255,255,.12); }
.access-promise > i { color: #78cce2; font-size: .48rem; font-style: normal; }
.access-promise strong,
.access-promise small { display: block; }
.access-promise strong { font-size: .6rem; }
.access-promise small { margin-top: .18rem; color: rgba(255,255,255,.48); font-size: .52rem; line-height: 1.5; }
.access-dialog form { display: flex; flex-direction: column; justify-content: center; padding: 2rem 2.15rem; text-align: left; }
.access-dialog form > h2 { margin: .28rem 0 .45rem; color: var(--navy-950); font-family: Georgia, serif; font-size: 1.55rem; }
.access-dialog form > p { margin: 0; color: var(--slate-600); font-size: .64rem; line-height: 1.55; }
.access-fields { display: grid; gap: .65rem; margin: 1.15rem 0 .75rem; }
.access-dialog label { display: block; color: var(--slate-700); font-size: .54rem; font-weight: 800; letter-spacing: .045em; text-align: left; text-transform: uppercase; }
.access-dialog input,
.access-dialog select { width: 100%; height: 2.65rem; margin-top: .28rem; padding: 0 .72rem; border: 1px solid var(--slate-300); border-radius: .4rem; color: var(--ink); background: #fff; font-size: .65rem; text-transform: none; letter-spacing: 0; }
.access-dialog input:focus,
.access-dialog select:focus { border-color: var(--blue-500); }
.field-help { display: block; margin-top: -.35rem; color: var(--slate-500); font-size: .5rem; line-height: 1.45; }
.access-dialog .primary-action { width: 100%; display: flex; align-items: center; justify-content: space-between; padding: 0 .85rem; }
.access-dialog .primary-action:disabled { opacity: .65; cursor: wait; }
.access-dialog .form-error { margin: 0 0 .65rem; padding: .48rem .58rem; border-radius: .32rem; color: #9d332b; background: var(--red-soft); font-size: .55rem; text-align: left; }
.access-footnote { margin-top: .65rem; color: var(--slate-500); font-size: .48rem; text-align: center; }
.print-heading { display: none; }

@media (min-width: 2500px) {
  .command-viewport { padding-right: 2rem; padding-left: 2rem; }
  .map-workspace { grid-template-columns: minmax(0, 1fr) 30rem; }
  .analysis-zone,
  .intervention-zone,
  .register-zone { padding-right: 3rem; padding-left: 3rem; }
  .brief-signal-row span,
  .brief-signal-row small,
  .prediction-main span,
  .prediction-side span,
  .prediction-main small,
  .prediction-side small,
  .confidence-line,
  .agenda-item span,
  .agenda-impact,
  .map-footer small,
  .map-legend > span,
  .legend-labels { font-size: .56rem !important; }
}

@media (max-width: 1450px) {
  .global-header { grid-template-columns: minmax(15rem, 1fr) auto minmax(20rem, 1fr); }
  .command-nav { gap: 1.1rem; }
  .command-search { width: 13rem; }
  .map-workspace { grid-template-columns: minmax(0, 1fr) minmax(21rem, 27vw); }
  .sync-status span { display: none; }
}

@media (max-width: 1180px) {
  html { font-size: 16px; }
  .global-header { grid-template-columns: 1fr auto; }
  .command-nav { display: none; }
  .command-viewport { height: auto; min-height: 0; }
  .command-heading { align-items: flex-start; flex-direction: column; }
  .scope-toolbar { width: 100%; flex-wrap: wrap; }
  .command-search { flex: 1; width: auto; min-width: 14rem; }
  .map-workspace { min-height: 0; grid-template-columns: 1fr; }
  .command-rail { grid-template-rows: auto auto; }
  .kpi-strip { grid-template-columns: repeat(3, 1fr); }
  .kpi-cell:nth-child(odd) { border-left: 1px solid var(--slate-200); }
  .kpi-cell:nth-child(3n+1) { border-left: 0; }
  .kpi-cell:nth-child(-n+3) { border-top: 0; }
  .kpi-cell:nth-child(n+4) { border-top: 1px solid var(--slate-200); }
  .map-command { min-height: max(42rem, 74dvh); }
  .executive-panel { min-height: 36rem; }
  .diagnostic-grid { grid-template-columns: 1fr 1fr; }
  .trend-card { grid-column: 1 / -1; }
}

@media (max-width: 760px) {
  html { font-size: 15px; }
  .global-header { height: 4rem; padding: 0 .8rem; }
  .civic-name small { display: none; }
  .header-status { gap: .55rem; }
  .sync-status span,
  .ist-clock { display: none; }
  .profile-trigger { min-width: 2.55rem; grid-template-columns: 1.65rem; justify-content: center; padding: .3rem; }
  .profile-trigger span,
  .profile-trigger em { display: none; }
  .command-viewport { padding: 1rem .8rem; }
  .heading-copy h1 { font-size: 1.75rem; }
  .scope-toolbar { display: grid; grid-template-columns: 1fr 1fr; }
  .date-presets { grid-column: 1 / -1; }
  .date-presets button { flex: 1; }
  .command-search { min-width: 0; grid-column: 1 / -1; }
  .toolbar-button { width: 100%; justify-content: center; }
  .scope-line { flex-wrap: wrap; }
  .kpi-strip { grid-template-columns: repeat(2, 1fr); }
  .kpi-cell:nth-child(3n+1) { border-left: 1px solid var(--slate-200); }
  .kpi-cell:nth-child(3), .kpi-cell:nth-child(5) { border-left: 0; }
  .kpi-cell:nth-child(n+3) { border-top: 1px solid var(--slate-200); }
  .kpi-cell:nth-child(-n+2) { border-top: 0; }
  .map-command { min-height: max(35rem, 70dvh); }
  .module-header { display: block; }
  .map-metric-tabs { width: fit-content; margin-top: .6rem; }
  .map-footer { grid-template-columns: repeat(2, 1fr); }
  .map-footer > span:nth-child(3) { border-left: 0; border-top: 1px solid var(--slate-200); }
  .map-footer > span:nth-child(4) { border-top: 1px solid var(--slate-200); }
  .map-layer-control { right: .55rem; gap: .25rem; }
  .map-layer-control button { padding: 0 .48rem; }
  #mapExpand { width: 2rem; padding: 0; font-size: 0; }
  #mapExpand span { margin: 0; font-size: .7rem; }
  .map-inspector { right: .55rem; bottom: .55rem; width: calc(100% - 1.1rem); max-width: 18rem; }
  .map-legend { left: .55rem; bottom: 7.3rem; }
  .brief-signal-row { grid-template-columns: 1fr; }
  .brief-signal-row article { padding: .55rem 0; border-top: 1px solid rgba(255,255,255,.12); border-left: 0; }
  .brief-signal-row article:first-child { border-top: 0; }
  .analysis-zone,
  .intervention-zone,
  .register-zone { padding: 2.5rem .8rem; }
  .section-heading { display: block; }
  .section-heading p { margin-top: .7rem; text-align: left; }
  .diagnostic-grid { grid-template-columns: 1fr; }
  .trend-card { grid-column: auto; }
  .register-header { align-items: flex-start; flex-direction: column; }
  .global-footer { align-items: flex-start; flex-direction: column; }
  .detail-grid { grid-template-columns: 1fr; }
  .access-layout { grid-template-columns: 1fr; }
  .access-intro { display: none; }
  .access-dialog form { min-height: 31rem; padding: 1.5rem; }
}

@media (max-width: 470px) {
  .civic-name b { max-width: 9rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .header-icon { display: none; }
  .heading-copy p { white-space: normal; }
  .role-scope { max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
  .map-inspector > p { display: none; }
  .map-inspector > div { margin-top: .4rem; grid-template-columns: repeat(2, 1fr); }
  .map-inspector > div > span:nth-child(3) { padding-left: 0; border-left: 0; }
  .map-legend { bottom: 8.7rem; max-width: calc(100% - 1.1rem); }
}

@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 print {
  @page { size: landscape; margin: 10mm; }
  body { background: #fff; font-size: 10px; }
  .global-header, .scope-toolbar, .scope-line button, .alert-banner, .map-zoom, .map-layer-control, .map-tooltip, .analysis-zone, .register-zone, .global-footer, .filter-panel, .filter-backdrop, .ticket-drawer, .drawer-backdrop, .pagination { display: none !important; }
  .command-viewport { height: auto; min-height: 0; padding: 0; }
  .print-heading { display: flex; justify-content: space-between; padding-bottom: 8px; margin-bottom: 10px; border-bottom: 2px solid var(--navy-900); }
  .heading-copy h1 { font-size: 24px; }
  .kpi-cell { min-height: 72px; }
  .map-workspace { grid-template-columns: 1.7fr .8fr; min-height: 480px; }
  .command-rail { grid-template-rows: auto minmax(0,1fr); }
  .map-command, .executive-panel { box-shadow: none; }
  .intervention-zone { padding: 12px 0 0; background: #fff; }
  .section-heading.inverse h2 { color: var(--navy-950); }
  .section-heading.inverse p { color: var(--slate-600); }
  .risk-matrix-card { border-color: var(--slate-200); }
}
