/* =========================================================
   Dispatch Command – Oberfläche
   ========================================================= */

:root {
  --bg: #090d13;
  --panel: #101722;
  --panel2: #151e2a;
  --line: #263344;
  --line2: #34465a;
  --text: #eaf0f7;
  --muted: #8d9caf;
  --blue: #4f8cff;
  --green: #35c98a;
  --yellow: #f2bd45;
  --red: #ef5b63;
  --orange: #ed8d42;
  --pol: #4f8cff;
  --fire: #ed8d42;
  --ems: #ef5b63;
  --heli: #f2bd45;
  --radius: 14px;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--text);
  font-family: Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  -webkit-text-size-adjust: 100%;
}

body { min-height: 100vh; }

[hidden] { display: none !important; }

h1, h2, h3 { margin: 0; }

.muted { color: var(--muted); }
.meta { font-size: 11px; color: var(--muted); }

kbd {
  display: inline-block;
  padding: 1px 6px;
  border: 1px solid var(--line2);
  border-bottom-width: 2px;
  border-radius: 5px;
  background: #16202c;
  font-size: 11px;
  font-family: inherit;
}

/* ---------- Formulare & Buttons ---------- */

button, input, select, textarea { font: inherit; color: inherit; }

/* Grundformatierung für alle Knöpfe – sonst rendern manche Browser
   (z. B. die Schnellantworten im Funkgerät) mit hellem Standardhintergrund. */
button {
  cursor: pointer;
  min-height: 44px;
  padding: 9px 13px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #182230;
  transition: background .15s ease, border-color .15s ease, transform .05s ease;
}
button:hover:not(:disabled) { background: #202d3d; }
button:active:not(:disabled) { transform: translateY(1px); }
button:disabled { opacity: .45; cursor: not-allowed; }
button:focus-visible { outline: 2px solid var(--blue); outline-offset: 1px; }

.btn { min-height: 44px; }
.btn:hover:not(:disabled) { background: #202d3d; }
.btn:active:not(:disabled) { transform: translateY(1px); }
.btn.primary { background: #1d4f9c; border-color: #377be0; }
.btn.primary:hover:not(:disabled) { background: #245cba; }
.btn.danger { background: #67232b; border-color: #9b3640; }
.btn.danger:hover:not(:disabled) { background: #7a2831; }
.btn.ok { background: #1c5340; border-color: #2f7d5f; }
.btn.ok:hover:not(:disabled) { background: #24664e; }
.btn.ghost { background: transparent; border-color: transparent; }
.btn.ghost:hover:not(:disabled) { background: #1a2532; }
.btn.icon { display: grid; place-items: center; padding: 0; width: 44px; }
.btn.tiny { min-height: 30px; padding: 4px 9px; font-size: 11px; border-radius: 8px; }
.btn.wide { width: 100%; margin-top: 8px; }

.input {
  width: 100%;
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #0b121a;
  font-size: 15px;
}
.input:focus-visible { outline: 2px solid var(--blue); outline-offset: 1px; }
select.select { width: auto; min-width: 170px; font-size: 13px; padding: 8px 10px; }
select.input { width: 100%; margin-top: 5px; }

.lbl {
  display: block;
  margin-top: 16px;
  color: var(--muted);
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.row { display: flex; gap: 8px; margin-top: 6px; }
.row .input { flex: 1; min-width: 0; }
.row .btn { flex: 0 0 auto; }

.chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.chips button {
  min-height: 34px;
  padding: 5px 10px;
  font-size: 11px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #141d29;
  cursor: pointer;
}
.chips button:hover { border-color: var(--blue); }

kbd.badge { margin: 0; }

.hint {
  margin-top: 14px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #0c141e;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}
.hint.err { border-color: #6b2b31; color: #ffb3b7; }
.hint.ok { border-color: #23573f; color: #9de6c4; }

.fine { display: block; margin-top: 12px; color: #6f7d90; font-size: 10px; line-height: 1.5; }

/* ---------- Overlays ---------- */

.overlay {
  position: fixed;
  inset: 0;
  z-index: 500;
  display: grid;
  place-items: center;
  padding: 18px;
  background: #05080d;
  overflow: auto;
}
.overlay.soft { background: #05080dc4; backdrop-filter: blur(2px); }

.card {
  width: min(660px, 100%);
  padding: 24px;
  border: 1px solid var(--line2);
  border-radius: 18px;
  background: #101722;
  box-shadow: 0 25px 80px #000b;
}
.card.small { width: min(420px, 100%); text-align: center; }
.card.setup { max-height: calc(100dvh - 36px); overflow-y: auto; overscroll-behavior: contain; }
.card h1 { margin: 6px 0 8px; font-size: 26px; }
.card p { margin: 0; font-size: 13px; line-height: 1.55; }

.logo { color: #6fa2ff; font-size: 12px; font-weight: 900; letter-spacing: .12em; }

.diffs { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; margin-top: 6px; }
.diff {
  cursor: pointer;
  text-align: left;
  padding: 11px 12px;
  min-height: 62px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #141d29;
}
.diff b { display: block; font-size: 13px; }
.diff small { display: block; margin-top: 4px; color: var(--muted); font-size: 10px; line-height: 1.4; }
.diff.active { border-color: var(--blue); background: #12233a; }

.gradeRow { display: flex; align-items: center; gap: 16px; margin: 16px 0 4px; }
.grade {
  display: grid;
  place-items: center;
  width: 76px;
  height: 76px;
  border-radius: 20px;
  background: #16233a;
  border: 1px solid var(--line2);
  font-size: 34px;
  font-weight: 900;
}
.gradeMeta b { display: block; font-size: 20px; }
.gradeMeta span { font-size: 12px; }

.reportGrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 8px; margin-top: 14px; }
.reportGrid div { padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: #0e1620; }
.reportGrid b { display: block; font-size: 18px; }
.reportGrid span { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: .05em; }

.setActions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }

/* ---------- Layout ---------- */

.app { display: grid; grid-template-columns: 232px 1fr; min-height: 100vh; }

.side {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 16px 12px;
  background: #0d131c;
  border-right: 1px solid var(--line);
}
.brand { padding: 6px 10px 16px; font-size: 17px; font-weight: 900; }
.brand span { color: var(--blue); }
.navbox { display: grid; gap: 6px; }
.nav {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent;
  text-align: left;
  cursor: pointer;
}
.nav:hover { background: #141d29; }
.nav.active { background: #17263a; border-color: #27456d; }
.nav .ico { font-size: 17px; }
.nav .lbl { font-weight: 600; font-size: 13px; }
.spacer { flex: 1; }
.sideFoot { padding: 10px; border-top: 1px solid var(--line); }
.phaseDot { display: flex; align-items: center; gap: 6px; font-size: 12px; }
.phaseDot::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--green);
  box-shadow: 0 0 0 0 #35c98a88;
  animation: pulse 2.4s infinite;
}
.phaseDot.paused::before { background: var(--yellow); animation: none; }
.phaseDot.over::before { background: var(--red); animation: none; }
.operator { margin-top: 6px; font-size: 11px; color: var(--muted); }

@keyframes pulse {
  0% { box-shadow: 0 0 0 0 #35c98a77; }
  70% { box-shadow: 0 0 0 8px #35c98a00; }
  100% { box-shadow: 0 0 0 0 #35c98a00; }
}

main { min-width: 0; }

.top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  height: 66px;
  padding: 0 16px;
  border-bottom: 1px solid var(--line);
}
.top-left { display: flex; align-items: center; gap: 10px; min-width: 0; }
.top-right { display: flex; align-items: center; gap: 8px; }
.loc b { font-size: 15px; }
.loc .meta { display: block; }
.hamb { display: none; }
.clock { font-variant-numeric: tabular-nums; font-size: 18px; font-weight: 800; letter-spacing: .02em; }

.chip {
  padding: 5px 9px;
  border: 1px solid #23573f;
  border-radius: 999px;
  background: #0e241b;
  color: var(--green);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .05em;
}
.chip.score { border-color: var(--line); background: #141d29; color: var(--text); font-size: 11px; letter-spacing: 0; }
.chip.warn { border-color: #6a5420; background: #241d0e; color: var(--yellow); }
.chip.stop { border-color: #6b2b31; background: #240f12; color: var(--red); }
.chip.traffic { border-color: var(--line); background: #141d29; color: #b6c2d1; letter-spacing: 0; font-weight: 700; }
.chip.traffic.warn { border-color: #6a5420; background: #241d0e; color: var(--yellow); }

.content { max-width: 1520px; margin: auto; padding: 14px 16px 90px; }

/* ---------- Kennzahlen ---------- */

.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; margin-bottom: 12px; }
.stat { padding: 11px 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel); }
.stat .n { font-size: 22px; font-weight: 850; font-variant-numeric: tabular-nums; }
.stat .l { margin-top: 2px; font-size: 11px; color: var(--muted); }

/* ---------- Panels ---------- */

.view.grid {
  display: grid;
  grid-template-columns: minmax(280px, 1fr) minmax(330px, 1.25fr) minmax(280px, .95fr);
  gap: 12px;
  align-items: start;
}
.panel { border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); overflow: hidden; }
.widePanel { grid-column: 1 / -1; }
.map-panel { grid-column: 2; grid-row: 1 / span 2; }
#viewDispatch > .panel:nth-child(3) { grid-column: 3; }
#viewDispatch > .panel:nth-child(4) { grid-column: 1; }
#viewDispatch > .panel:nth-child(5) { grid-column: 3; }

.ph {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 11px 13px;
  border-bottom: 1px solid var(--line);
  background: #0e1620;
}
.ph b { font-size: 12px; letter-spacing: .04em; }
.body { padding: 12px; }
.scroll { max-height: 620px; overflow: auto; overscroll-behavior: contain; }
.scroll.short { max-height: 210px; }
.scroll.tall { max-height: 70vh; }

/* ---------- Einsatzkarten ---------- */

.call {
  display: block;
  width: 100%;
  margin-bottom: 8px;
  padding: 11px;
  border: 1px solid var(--line);
  border-left: 3px solid var(--line);
  border-radius: 11px;
  background: #111923;
  text-align: left;
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
}
.call:hover { background: #16202c; }
.call.selected { border-color: var(--blue); border-left-color: var(--blue); background: #12233a; }
.call.late { border-left-color: var(--red); }

/* Funkmeldung oder Freigabe wartet auf die Leitstelle. */
.call.attention { border-left-color: var(--yellow); background: #1d1a10; }
.call.attention.selected { background: #23200f; }
.call .callAttention {
  margin: 6px 0 2px;
  padding: 5px 8px;
  border: 1px solid #6b5a1f;
  border-radius: 7px;
  background: #2a2410;
  color: #f6d876;
  font-size: 11.5px;
  font-weight: 700;
  line-height: 1.35;
}
.call .callAttention b { color: #ffe9a8; }
.call .callAttention.bericht { border-color: #2f5a44; background: #10241b; color: #86e0b4; }
.call .callAttention.bericht b { color: #b6f2d5; }
.call .row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 0; }
.call h3 { font-size: 14px; }
.call .meta + .meta { margin-top: 2px; }
.call .units { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; }
.call .units span { padding: 2px 6px; border: 1px solid var(--line); border-radius: 6px; font-size: 10px; color: var(--muted); }

.sla { height: 4px; margin-top: 8px; border-radius: 999px; background: #1b2634; overflow: hidden; }
.sla i { display: block; height: 100%; width: 0; border-radius: 999px; background: var(--green); transition: width .4s linear; }
.sla.warn i { background: var(--yellow); }
.sla.late i { background: var(--red); }

.empty { padding: 22px 14px; border: 1px dashed var(--line2); border-radius: 12px; color: var(--muted); text-align: center; font-size: 12px; }
.empty small { display: block; margin-top: 5px; font-size: 10px; }

.badge { padding: 3px 7px; border: 1px solid var(--line); border-radius: 999px; font-size: 10px; font-weight: 800; }
.badge.p1 { color: #ff8188; border-color: #70323a; background: #24121699; }
.badge.p2 { color: #f5c866; border-color: #665024; background: #241d0d99; }
.badge.p3 { color: #74c9ff; border-color: #244e68; background: #0d1c2599; }
.badge.need { color: #cbd6e4; }
.badge.ok { color: var(--green); border-color: #23573f; }

/* ---------- Details ---------- */

.detailTitle { font-size: 19px; font-weight: 850; }
.detailSub { margin-top: 3px; font-size: 12px; color: var(--muted); }
.info { display: grid; gap: 7px; margin-top: 12px; }
.info > div { padding: 9px; border: 1px solid var(--line); border-radius: 9px; background: #131d29; font-size: 12px; line-height: 1.45; }
.info b { display: block; margin-bottom: 3px; color: var(--muted); font-size: 10px; letter-spacing: .06em; text-transform: uppercase; }
.warnLine { margin-top: 10px; padding: 9px; border: 1px solid #6a5420; border-radius: 9px; background: #221b0c; color: #f3d79b; font-size: 11px; }
.actions { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin-top: 12px; }
.actions .wide { grid-column: 1 / -1; }
.dispatchAvailability { grid-column:1/-1; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:6px 8px; border:1px solid #2e444e; border-radius:5px; background:#111f26; color:#d4e1e5; font-size:10px; }
.dispatchAvailability b { color:#83d39b; font-size:14px; }.dispatchAvailability small { color:#95a8ae; font-size:9px; white-space:nowrap; }

/* ---------- Einheiten ---------- */

.unit { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 10px; margin-bottom: 7px; background: #111923; }
.unitName { font-size: 12px; font-weight: 750; }
.unitMeta { margin-top: 2px; font-size: 10px; color: var(--muted); }
.dot { display: inline-block; width: 9px; height: 9px; margin-right: 6px; border-radius: 50%; background: var(--green); }
.dot.busy { background: var(--orange); }
.dot.at { background: var(--blue); }
.dot.back { background: var(--muted); }
.unitSide { display: flex; flex-direction: column; align-items: flex-end; gap: 5px; flex: 0 0 auto; }
.unitActions { display: flex; gap: 4px; }
.unitAction { padding: 3px 7px; border: 1px solid #2c4351; border-radius: 6px; background: #0d1720; color: #a9c4ce; font-size: 9px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.unitAction:hover { background: #16293a; color: #e2f1f6; }
.unitAction.on { border-color: #3d6f8c; background: #123043; color: #8fd3f0; }
.phActions { display: flex; align-items: center; gap: 6px; }

/* ---------- Karte ---------- */

.mapWrap { position: relative; }
#map { height: 460px; background: #0e1721; }
.mapFallback { position: absolute; inset: 0; z-index: 400; display: grid; place-items: center; background: #0e1721; color: var(--muted); font-size: 12px; }
.legend {
  position: absolute;
  z-index: 450;
  left: 10px;
  bottom: 10px;
  display: grid;
  gap: 3px;
  padding: 8px 10px;
  border: 1px solid var(--line2);
  border-radius: 10px;
  background: #101722e6;
  font-size: 10px;
  color: #b6c2d1;
}
.legend b { color: var(--text); font-size: 10px; letter-spacing: .06em; text-transform: uppercase; }
.legend span { display: flex; align-items: center; gap: 6px; }
.legend .pin { width: 9px; height: 9px; border-radius: 50%; }
.legend .pin.pol { background: var(--pol); }
.legend .pin.fire { background: var(--fire); }
.legend .pin.ems { background: var(--ems); }
.legend .pin.heli { background: var(--heli); }
.legend .pin.call { background: var(--red); }
.legend .pin.stationPin { width:9px; height:9px; border-radius:2px; background:#5792c8; }
.legend .pin.hospitalPin { width:9px; height:9px; border-radius:50%; background:#d85462; }
.legend .pin.movingPin { width:9px; height:9px; border-radius:50%; background:#abb8c8; border:2px solid #22303e; }
.legend .pin.beaconPin { width:9px; height:9px; border-radius:50%; background:#64bdff; box-shadow:0 0 7px 3px #168bff; }
.legendToggle {
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  width:100%; padding:0; border:0; background:transparent; color:var(--text);
  font:inherit; font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
  cursor:pointer; text-align:left;
}
.legendToggle .legendChevron { margin-left:auto; color:#8fa6b8; font-size:11px; transition:transform .15s ease; }
.legend.collapsed { padding:6px 8px; }
.legend.collapsed span { display:none; }
.legend.collapsed .legendChevron { transform:rotate(-90deg); }


.leaflet-container { background: #0e1721; font-family: inherit; }

/* Standardkacheln (helle OSM-Karte) passend zur dunklen Oberfläche einfärben.
   Nur die Kachelebene wird gefiltert – Marker und Beschriftungen bleiben original. */
#map.darkTiles .leaflet-tile-pane {
  filter: invert(1) hue-rotate(185deg) brightness(.94) contrast(.88) saturate(.7);
}
#map.darkTiles .leaflet-container { background: #0e1721; }

.leaflet-control-attribution { font-size: 9px !important; background: #0d141dcc !important; color: #7c8b9e !important; }
.leaflet-control-attribution a { color: #9db4cf !important; }
.leaflet-bar a { background: #141d29 !important; color: var(--text) !important; border-color: var(--line) !important; }
.leaflet-popup-content-wrapper, .leaflet-popup-tip { background: #111923; color: var(--text); border: 1px solid var(--line2); }
.leaflet-popup-content { margin: 10px 12px; font-size: 12px; line-height: 1.5; }
.leaflet-popup-content small { color: var(--muted); }

.dcIcon { background: none; border: none; }
.dcWrap { position: relative; display: inline-block; line-height: 0; }
.dcPin {
  position:relative;
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  border: 2px solid #0a1017;
  box-shadow: 0 3px 10px #000a;
  font-size: 15px;
  line-height: 1;
}
.dcPin.call { border: 2px solid #fff; animation: ring 1.6s infinite; }
.dcPin.stationMarker { border-radius:5px; border:2px solid #c9e5ff; box-shadow:0 0 0 2px #102030,0 3px 10px #000a; font-size:17px; }
.dcPin.vehicleMarker { border-radius:50%; border:2px solid #e8f3ff; box-shadow:0 0 0 2px #102030,0 3px 10px #000a; }
.dcVehicleIcon { width:42px !important; height:34px !important; overflow:visible; }
.dcVehicleMarker { position:relative; display:grid; place-items:center; width:42px; height:30px; color:var(--vehicle-color); filter:drop-shadow(0 2px 3px #000b); }
.dcVehicleMarker svg { display:block; width:40px; height:30px; overflow:visible; fill:var(--vehicle-color); stroke:#e8f1fa; stroke-width:1.15; stroke-linecap:round; stroke-linejoin:round; }
.dcVehicleMarker .vehicleGlass { fill:#122536; stroke:#d9e7f2; stroke-width:.7; }
.dcVehicleMarker .vehicleWheel { fill:#071018; stroke:#d6e4ef; stroke-width:1; }
.dcVehicleMarker .vehicleBeacon { position:absolute; top:4px; left:50%; width:10px; height:3px; transform:translateX(-50%); border-radius:3px; background:#62c8ff; box-shadow:0 0 7px 2px #168bff; animation:beacon .55s steps(2,end) infinite alternate; }
.dcVehicleCallsign { position:absolute; left:50%; top:100%; transform:translateX(-50%); padding:1px 4px; border:1px solid #304454; border-radius:3px; background:#071018eF; color:#deebf5; font-size:7px; line-height:1.25; white-space:nowrap; }
.dcPin.callMarker { border-radius:11px 11px 11px 3px; border:2px solid #fff; box-shadow:0 0 0 3px #071018,0 0 16px #ff3b4d99; font-size:21px; animation:ring 1.6s infinite; }
.dcPin.fireIncident { box-shadow:0 0 0 3px #071018,0 0 16px #ff3b4d99; }
.dcPin.trafficIncident { box-shadow:0 0 0 3px #071018,0 0 16px #f5a62399; }
.dcPin.medicalIncident { box-shadow:0 0 0 3px #071018,0 0 16px #ff4b5e99; }
.dcPin.hazmatIncident { box-shadow:0 0 0 3px #071018,0 0 16px #a96bff99; }
.dcPin.waterIncident { box-shadow:0 0 0 3px #071018,0 0 16px #2388ff99; }
.dcPin.syntheticFacility { outline:2px dashed #ffd27a; outline-offset:2px; opacity:.78; }
.dcPin.hospitalMarker { border-radius:50%; border:2px solid #ffe4e6; box-shadow:0 0 0 2px #3c1820,0 3px 10px #000a; font-size:19px; }
.dcPin.blueLights::before,.dcPin.blueLights::after { content:""; position:absolute; top:-4px; width:8px; height:5px; border-radius:4px; background:#63c4ff; box-shadow:0 0 9px 3px #168bff; animation:beacon .55s steps(2,end) infinite alternate; }
.dcPin.blueLights::before { left:4px; }
.dcPin.blueLights::after { right:4px; animation-delay:.275s; }
.dcPin.label::after {
  content: attr(data-label);
  position: absolute;
  left: 50%;
  top: 112%;
  transform: translateX(-50%);
  padding: 1px 5px;
  border-radius: 5px;
  background: #0b121ae6;
  color: #c8d4e2;
  font-size: 9px;
  line-height: 1.4;
  white-space: nowrap;
}
.dcWrap { position: relative; }

@keyframes ring {
  0% { box-shadow: 0 0 0 0 #ef5b6399, 0 3px 10px #000a; }
  70% { box-shadow: 0 0 0 14px #ef5b6300, 0 3px 10px #000a; }
  100% { box-shadow: 0 0 0 0 #ef5b6300, 0 3px 10px #000a; }
}
@keyframes beacon { from { opacity:.25; } to { opacity:1; } }

/* ---------- Protokoll ---------- */

.log { display: grid; gap: 6px; }
.logLine { padding-bottom: 6px; border-bottom: 1px solid #1b2431; font-size: 11px; line-height: 1.45; color: var(--muted); }
.logLine b { color: var(--text); }
.logLine.warn { color: #f0b1b5; }

/* ---------- Einstellungen ---------- */

.setRow { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.setRow:last-of-type { border-bottom: none; }
.setRow b { display: block; font-size: 13px; }
.setRow small { display: block; margin-top: 3px; font-size: 11px; color: var(--muted); }
.setRow input[type="checkbox"] { flex: 0 0 auto; width: 22px; height: 22px; accent-color: var(--blue); cursor: pointer; }

/* ---------- Toasts ---------- */

.toasts { position: fixed; right: 14px; bottom: 14px; z-index: 600; display: grid; gap: 8px; width: min(340px, calc(100vw - 28px)); pointer-events: none; }
.toast {
  padding: 11px 12px;
  border: 1px solid var(--line2);
  border-left: 3px solid var(--blue);
  border-radius: 12px;
  background: #16212f;
  box-shadow: 0 12px 35px #000a;
  font-size: 12px;
  line-height: 1.45;
  animation: slideIn .22s ease;
}
.toast.warn { border-left-color: var(--yellow); }
.toast.err { border-left-color: var(--red); }
.toast.ok { border-left-color: var(--green); }

@keyframes slideIn {
  from { transform: translateY(10px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}

/* ---------- Dialog ---------- */

.modal { position: fixed; inset: 0; z-index: 700; display: none; place-items: center; padding: 16px; background: #04070bcc; }
.modal.open { display: grid; }
.modalBox { width: min(560px, calc(100vw - 32px)); max-width: 100%; max-height: 88vh; overflow-x: hidden; overflow-y: auto; padding: 16px; border: 1px solid var(--line2); border-radius: 16px; background: #111923; box-shadow: 0 20px 60px #000b; box-sizing: border-box; }
.modalBox.vehicleCatalogModal { width: min(980px, calc(100vw - 32px)); }
.modalBox .choices { min-width: 0; }
.modalBox .choice { min-width: 0; overflow: hidden; }
.modalBox .cText { min-width: 0; flex: 1 1 auto; overflow-wrap: anywhere; }
.modalBox .cText small { overflow-wrap: anywhere; word-break: normal; }
@media (max-width: 760px) {
  .modalBox.vehicleCatalogModal { width: calc(100vw - 20px); }
  .modalBox .choices { grid-template-columns: 1fr; }
}
.modalBox h2 { font-size: 18px; }
.modalBox p { margin: 5px 0 0; font-size: 12px; line-height: 1.5; }
.choices { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 12px; }
.choice { display: flex; align-items: center; gap: 8px; min-height: 56px; padding: 10px; border: 1px solid var(--line); border-radius: 12px; background: #141d29; text-align: left; cursor: pointer; }
.choice:hover:not(:disabled) { border-color: var(--blue); background: #16243a; }
.choice:disabled { opacity: .42; cursor: not-allowed; }
.choice .cIco { font-size: 20px; }
.choice .cText b { display: block; font-size: 12px; }
.choice .cText small { display: block; margin-top: 2px; font-size: 10px; color: var(--muted); }
.choice .cTag { margin-left: auto; font-size: 9px; padding: 3px 6px; border-radius: 999px; border: 1px solid var(--line); color: var(--muted); }
.choice .cTag.ok { color: var(--green); border-color: #23573f; }
.choice .cTag.no { color: var(--red); border-color: #6b2b31; }

/* ---------- Funkgerät ---------- */

.navUnread { display: inline-flex; align-items: center; justify-content: center; min-width: 16px; height: 16px; margin-left: auto; padding: 0 4px; border-radius: 999px; background: #ed4553; color: #fff; font-size: 8px; font-weight: 900; }

.radioDrawer {
  position: fixed;
  right: 16px;
  bottom: 86px;
  z-index: 650;
  display: none;
  flex-direction: column;
  width: min(430px, calc(100vw - 32px));
  height: min(700px, calc(100vh - 120px));
  border: 1px solid var(--line2);
  border-radius: 18px;
  background: #0d141d;
  box-shadow: 0 18px 55px #000b;
  overflow: hidden;
}
.radioDrawer.open { display: flex; }

.radioHead { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 62px; padding: 11px 13px; border-bottom: 1px solid var(--line); background: #111b27; }
.radioHead b { font-size: 14px; }
.radioHead small { display: block; margin-top: 2px; font-size: 10px; color: var(--muted); }

.radioList { flex: 1; min-height: 0; overflow: auto; padding: 10px; display: grid; align-content: start; gap: 8px; }
.secTitle { display: flex; justify-content: space-between; padding: 2px; color: var(--muted); font-size: 10px; font-weight: 900; letter-spacing: .08em; }
.secTitle span { color: var(--blue); }

.radioUnit { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 62px; padding: 10px 11px; border: 1px solid var(--line); border-radius: 12px; background: #121c27; text-align: left; cursor: pointer; }
.radioUnit:hover { border-color: var(--blue); background: #142946; }
.radioUnit .rIco { font-size: 21px; }
.radioUnit .rText { min-width: 0; flex: 1; }
.radioUnit .rName { font-size: 13px; font-weight: 800; }
.radioUnit .rMeta { margin-top: 2px; font-size: 10px; color: var(--muted); }
.rstate { flex: 0 0 auto; padding: 3px 7px; border: 1px solid var(--line2); border-radius: 999px; font-size: 9px; font-weight: 800; letter-spacing: .04em; color: var(--muted); }
.rstate.live { color: var(--blue); border-color: #2b4d7d; }
.rstate.ontheway { color: var(--orange); border-color: #6a4520; }
.rstate.onsite { color: var(--green); border-color: #23573f; }

.radioChannel { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.radioChannelHead { display: flex; align-items: center; gap: 8px; min-height: 54px; padding: 8px 11px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.radioChannelHead b { font-size: 13px; }
.radioChannelHead small { display: block; margin-top: 2px; font-size: 10px; color: var(--muted); }
.radioTitle { flex: 1; min-width: 0; }

.radioMessages { flex: 1; min-height: 0; overflow: auto; padding: 10px; display: grid; align-content: start; gap: 7px; overscroll-behavior: contain; }
.rmsg { padding: 8px 10px; border: 1px solid var(--line); border-left: 3px solid var(--line2); border-radius: 10px; background: #151f2b; font-size: 12px; line-height: 1.45; }
.rmsg .rwho { margin-bottom: 3px; font-size: 10px; font-weight: 800; color: var(--muted); }
.rmsg.unitMsg { border-left-color: var(--blue); }
.rmsg.dispatchMsg { border-left-color: var(--green); }
.rmsg.systemMsg { border-left-color: var(--yellow); }

.quickReplies { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; padding: 9px 10px; border-top: 1px solid var(--line); background: #0e1721; }
.quickReplies button {
  min-height: 38px;
  padding: 6px 8px;
  font-size: 11px;
  color: var(--text);
  background: #172231;
  border-color: #2b3a4c;
  text-align: left;
}
.quickReplies button:hover { background: #1f2c3f; border-color: var(--blue); }
.speechPending { display:grid; gap:7px; margin:8px; padding:10px; border:1px solid #b37a23; border-radius:8px; background:#2b2112; }
.speechPending b { color:#ffd27a; font-size:10px; }
.speechPending small { color:#c5b38e; }
.speechPending .btn { justify-self:start; }
.fmsReference { margin:8px 0 14px; padding:12px; border:1px solid var(--line); border-radius:8px; background:#0d1721; color:var(--muted); font-size:11px; line-height:1.6; }
.fmsReference b { display:block; color:var(--text); margin-bottom:5px; }
.fmsReference small { display:block; margin-top:6px; color:#d7b576; }
.quickReplies button:last-child { grid-column: 1 / -1; }

.radioInput { display: flex; gap: 8px; padding: 9px 10px calc(9px + env(safe-area-inset-bottom)); background: #0d141d; }
.radioInput textarea { flex: 1; min-width: 0; min-height: 48px; max-height: 110px; resize: none; padding: 8px; border: 1px solid var(--line); border-radius: 10px; background: #0b121a; font-size: 13px; }
.radioInput .btn { flex: 0 0 52px; width: 52px; }

/* ---------- Responsiv ---------- */

/* Leitstellenarbeitsplatz: kompakte, informationsdichte CAD-Anmutung */
:root { --bg:#080d13; --panel:#101923; --panel2:#15212d; --line:#263747; --blue:#58a6ff; --green:#3bd39b; }
.app { grid-template-columns: 218px minmax(0,1fr); }
.side { background:#0a1119; border-right-color:#26394a; }
.brand { font-size:14px; letter-spacing:.08em; }
.brand span { display:block; margin-top:3px; font-size:10px; letter-spacing:.2em; }
.top { background:#0e1721; border-bottom:1px solid #2a3b4c; box-shadow:0 5px 22px #0003; }
.content { max-width:1900px; margin:auto; padding:16px; }
.stats { gap:8px; }
.stat { border-radius:8px; background:linear-gradient(145deg,#152330,#101923); border-color:#2b3e50; }
.stat .n { font-variant-numeric:tabular-nums; }
.panel { border-radius:8px; border-color:#2a3d4f; box-shadow:0 8px 24px #0002; }
.ph { min-height:42px; background:#131f2b; border-bottom-color:#2a3d4f; letter-spacing:.055em; }
.ph b { font-size:11px; }
.call { border-radius:6px; background:#111d28; }
.call.selected { background:#132943; border-color:#3f83d6; box-shadow:inset 3px 0 #58a6ff; }
.badge { border-radius:5px; }
.view.lookupView { display:grid; grid-template-columns:minmax(0,1.7fr) minmax(250px,.8fr); gap:12px; align-items:start; }
#viewLookup { min-height:0; max-height:100%; overflow-x:hidden; overflow-y:auto; overscroll-behavior:contain; padding:1px 3px 36px 1px; scrollbar-gutter:stable; }
.lookupIntro .body { padding:16px; }
.lookupBanner { display:flex; align-items:center; gap:12px; padding:12px; border:1px solid #315642; border-radius:7px; background:#10231c; }
.lookupMark { display:grid; place-items:center; flex:0 0 44px; height:44px; border:1px solid #3b7958; border-radius:6px; color:#7ce2aa; font-size:12px; font-weight:900; letter-spacing:.08em; }
.lookupBanner b,.lookupBanner small { display:block; }
.lookupBanner b { font-size:13px; }
.lookupBanner small { margin-top:4px; color:var(--muted); font-size:11px; line-height:1.5; }
.lookupForm { max-width:760px; margin-top:6px; }
.lookupForm .row { align-items:stretch; }
.lookupForm .row .btn { min-width:160px; }
.lookupQueryFields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:7px 0 12px; }
.lookupQueryFields .lookupInputField { display:grid; gap:5px; min-width:0; }
.lookupInputField span { color:#9cabb5; font-size:10px; font-weight:800; letter-spacing:.04em; }
.lookupInputField .input { width:100%; min-width:0; }
.lookupSubmitRow { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.lookupSubmitRow .btn { min-width:180px; }
.lookupSubmitRow .fine { margin:0; }
.lookupResult { margin-top:18px; }
.lookupEmpty { padding:20px; border:1px dashed #34495c; border-radius:7px; color:var(--muted); text-align:center; font-size:13px; }
.lookupEmpty small { display:block; margin-top:5px; }
.lookupCard { overflow:hidden; border:1px solid #31485d; border-radius:8px; background:#0d1720; }
.lookupCardHead { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:15px; background:#142230; border-bottom:1px solid #2a3d4f; }
.lookupCardHead small { color:#8ea7bd; font-size:9px; letter-spacing:.1em; font-weight:800; }
.lookupCardHead h2 { margin-top:4px; font-size:20px; }
.lookupTransfer { display:grid; gap:9px; padding:13px 15px; border-top:1px solid #293f50; background:#111c27; }
.lookupTransferHead { display:flex; justify-content:space-between; align-items:center; gap:8px; }
.lookupTransferHead b { font-size:11px; letter-spacing:.04em; }
.lookupTransfer .input { width:100%; }
.lookupTransferButtons { display:flex; flex-wrap:wrap; gap:7px; }
.lookupTransferButtons .btn { min-height:34px; font-size:10px; }
.lookupTransferButtons .btn.sent { border-color:#2e7659; color:#79d5a7; }
.lookupTransferNote { color:#899ca8; font-size:10px; line-height:1.45; }
.statusPill { padding:6px 8px; border-radius:5px; font-size:9px; font-weight:900; letter-spacing:.06em; }
.statusPill.clear { color:#7de2ae; background:#153b2c; border:1px solid #286443; }
.statusPill.alert { color:#ffd17d; background:#3a2d18; border:1px solid #6d5426; }
.lookupFields { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:1px; background:#263747; border-bottom:1px solid #263747; }
.lookupFields div { padding:11px 13px; background:#101b25; }
.lookupFields small,.lookupFields b { display:block; }
.lookupFields small { margin-bottom:5px; color:var(--muted); font-size:9px; text-transform:uppercase; letter-spacing:.07em; }
.lookupFields b { font-size:12px; }
@media(max-width:700px) { .lookupQueryFields { grid-template-columns:1fr; } }
.lookupDisposition { padding:14px; }
.lookupDisposition b { font-size:13px; }
.lookupDisposition p { margin:6px 0 0; color:#a9b8c7; font-size:12px; line-height:1.6; }
.lookupCard>.fine { margin:0; padding:0 14px 12px; color:#71907d; }
.lookupSide .body { display:grid; gap:10px; padding:14px; }
.lookupHint { padding:11px; border-left:2px solid #3c6587; background:#121f2b; }
.lookupHint b { font-size:12px; }
.lookupHint p { margin:5px 0 0; color:var(--muted); font-size:11px; line-height:1.5; }
.lookupSide .btn { margin-top:4px; font-size:11px; }
.phaseDot { font-variant-numeric:tabular-nums; }
.radioReportCard { margin:10px 0; padding:11px; border:1px solid #507d87; border-left:3px solid #71c5d0; border-radius:6px; background:linear-gradient(120deg,#142b32,#111b22); }
.radioReportCard.endReport { border-color:#668b70; border-left-color:#83d39b; background:linear-gradient(120deg,#192e25,#111b22); }
.radioReportCard small { color:#9ccbd0; font-size:9px; font-weight:900; letter-spacing:.08em; }
.radioReportCard p { margin:7px 0 10px; color:#d6e2e5; font-size:11px; line-height:1.5; }
.missionReport { margin:0 0 10px; padding:12px; border:1px solid #334b58; border-radius:6px; background:#101922; }
.reportMast { display:flex; justify-content:space-between; padding-bottom:8px; border-bottom:1px solid #334651; color:#8da9b2; font-size:9px; font-weight:900; letter-spacing:.1em; }
.reportMast b { color:#80d19b; }
.reportHeading { padding:12px 0 10px; }.reportHeading small,.reportFacts small { color:#8299a3; font-size:8px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.reportHeading h2 { margin:4px 0; font-size:18px; }.reportHeading div { color:#bfd0d5; font-size:11px; }
.reportFacts { display:grid; grid-template-columns:1fr 1fr; gap:6px; margin:0 0 10px; }
.reportFacts>div { padding:8px; border:1px solid #293d48; border-radius:4px; background:#15222b; }
.reportFacts small,.reportFacts b { display:block; }.reportFacts b { margin-top:4px; font-size:11px; }
.missionReport section { padding:9px 0; border-top:1px solid #293a44; }
.missionReport section h3 { margin:0 0 6px; color:#a8c3ca; font-size:9px; letter-spacing:.08em; text-transform:uppercase; }
.missionReport section p,.missionReport section small { color:#cfdbde; font-size:10px; line-height:1.5; }
.missionReport section p { margin:4px 0; }.missionReport section small { color:#8da0a7; }
.reportReward { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:7px; padding:9px; border-radius:4px; background:#183126; color:#9eb7aa; font-size:9px; }
.reportReward b { color:#8be0a8; font-size:12px; }
.archiveReport { margin-bottom:7px; border:1px solid #2e414a; border-radius:5px; background:#121e25; }
.archiveReport summary { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:10px; cursor:pointer; list-style:none; }
.archiveReport summary::-webkit-details-marker { display:none; }
.archiveReport summary>div { min-width:0; }.archiveReport summary small { color:#8599a1; font-size:8px; }.archiveReport summary h3 { margin:4px 0; font-size:11px; }.archiveReport summary p { margin:0; color:#a5b4b9; font-size:9px; }.archiveReport summary>b { color:#80d19b; white-space:nowrap; font-size:11px; }
.archiveReport .missionReport { margin:0 7px 7px; }
#viewHistory { display:grid; grid-template-columns:minmax(250px,.8fr) minmax(0,1.2fr); gap:8px; align-items:stretch; height:100%; min-height:0; }
#viewHistory>.panel { display:flex; flex-direction:column; min-height:0; }
#viewHistory .body.tall { max-height:none; flex:1; min-height:0; }
.intakeBox { margin:12px 0; overflow:hidden; border:1px solid #31485d; border-radius:7px; background:#0c151e; }
.intakeHead { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:9px 10px; background:#142230; border-bottom:1px solid #2a3d4f; }
.intakeHead>b { font-size:10px; letter-spacing:.07em; }
.intakeHead .statusPill { font-size:8px; padding:4px 6px; }
.intakeTranscript { display:grid; gap:7px; max-height:min(28vh,240px); overflow:auto; overscroll-behavior:contain; padding:9px; }
.transcriptEntry { padding:7px 9px; border-left:2px solid #58a6ff; background:#121f2b; }
.transcriptEntry.callerStart { border-left-color:#3bd39b; }
.transcriptEntry small { color:#91a8bc; font-size:8px; font-weight:800; letter-spacing:.06em; }
.transcriptEntry p { margin:4px 0 0; color:#d8e2eb; font-size:11px; line-height:1.45; }
.transcriptTurn { display:grid; gap:4px; }.transcriptEntry.dispatcherLine { border-left-color:#58a6ff; }.transcriptEntry.callerLine { margin-left:14px; border-left-color:#3bd39b; background:#15251f; }
.intakeActions { display:flex; flex-wrap:wrap; gap:5px; padding:8px; border-top:1px solid #263747; }
.intakeActions .btn { min-height:32px; padding:4px 7px; font-size:9px; }
.callerComposer { display:grid; gap:7px; padding:9px; border-top:1px solid #263747; background:#101a23; }
.callerComposeRow { display:grid; grid-template-columns:minmax(0,1fr) 76px; align-items:stretch; gap:7px; }
.callerComposeRow textarea.input { min-height:54px; resize:vertical; font-size:11px; line-height:1.4; }
.callerComposeRow .btn { min-height:54px; padding:6px; font-size:10px; }
.intakeFooter { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:6px; }
.intakeFooter small { color:var(--muted); font-size:9px; }
.intakeFooter .btn { min-height:32px; padding:5px 8px; font-size:9px; }
.keywordBox { margin:11px 0; padding:10px; border:1px solid #2a3d4f; border-radius:6px; background:#111e29; }
.keywordBox small { display:block; margin-top:5px; color:var(--muted); font-size:10px; }
.callerScreen { display:flex; flex-direction:column; align-items:center; padding:26px 16px; border:1px solid #31485d; border-radius:7px; background:radial-gradient(ellipse at top,#183347,#0c151e 72%); text-align:center; }
.callerPulse { display:grid; place-items:center; width:64px; height:64px; margin-bottom:14px; border:1px solid #3e86aa; border-radius:50%; color:#9de6ff; font-size:27px; box-shadow:0 0 0 8px #58a6ff12; }
.callerScreen>small { color:#8faec3; font-size:9px; font-weight:800; letter-spacing:.1em; }
.callerScreen h2 { margin-top:8px; font-size:20px; }
.callerScreen p { max-width:300px; margin:8px 0 13px; color:#aab9c7; font-size:12px; line-height:1.5; }
.callerMeta { margin-bottom:12px; color:#8194a6; font-size:10px; }

/* Vollbild-Anrufaufnahme, bewusst als eigener Arbeitsmodus gestaltet. */
.callOverlay { position:fixed; inset:0; z-index:800; background:#0b1014; color:#e5edf0; }
.callConsole { display:grid; grid-template-rows:auto auto minmax(90px,1fr) minmax(300px,46vh); width:100%; height:100%; min-height:0; background:#0c1115; }
.activeCallHead { display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:48px; padding:6px 12px; border-bottom:1px solid #293238; background:#0e1418; }
.activeCallIdentity { display:flex; align-items:center; gap:12px; min-width:0; }
.activeCallIdentity>div { display:grid; gap:3px; }.activeCallIdentity small { color:#9aaab1; font-size:9px; font-weight:900; letter-spacing:.1em; }
.activeCallIdentity b { color:#7b8b92; font-size:14px; font-style:italic; }
.callPulse { display:grid; place-items:center; width:32px; height:32px; border:1px solid #75423e; border-radius:4px; background:#201817; color:#f39a8e; }
.activeCallTools { display:flex; align-items:center; gap:10px; }.callHeaderAction { min-height:31px; padding:5px 10px; border-color:#537a80; border-radius:4px; background:#142127; color:#9ed1d8; font-size:9px; font-weight:900; }
.callMinimize { min-height:32px; padding:3px 7px; border:0; background:transparent; color:#74848b; font-size:20px; }
.callFacts { display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:8px 10px; border-bottom:1px solid #293238; background:#0c1216; }
.callFacts>div { display:grid; align-content:center; gap:3px; min-height:48px; padding:5px 10px; border:1px solid #35444a; border-radius:4px; background:#172126; }
.callFacts small { color:#a3b1b6; font-size:8px; font-weight:900; letter-spacing:.1em; }.callFacts b { overflow:hidden; color:#e0e8eb; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.callConversation { min-height:0; overflow:auto; padding:12px 10px; border-bottom:1px solid #293238; overscroll-behavior:contain; }
.callBubble { position:relative; margin-bottom:7px; padding:10px; border:1px solid #39484e; border-radius:7px; background:#1b282d; }
.callBubble.caller { border-color:#654442; background:#1d272b; }.callBubble.dispatcher { border-color:#426a72; background:#20383e; }
.callBubble small { display:block; color:#ef9b91; font-size:9px; font-weight:900; letter-spacing:.04em; }.callBubble.dispatcher small { color:#9dd4dc; }
.callBubble small span { float:right; color:#809197; font-size:8px; }.callBubble p { margin:5px 0 0; color:#e1e8eb; font-size:12px; line-height:1.45; white-space:pre-wrap; }
.callWaiting { display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; padding:10px; border:1px dashed #43535a; border-radius:6px; color:#ced8dc; }
.callWaiting b { font-size:11px; }.callWaiting small { flex:1; color:#93a2a8; font-size:10px; }.callWaiting .btn { min-height:34px; padding:5px 10px; font-size:10px; }
.callTurn { display:grid; gap:4px; }.callTurn .caller { margin-left:26px; border-left:3px solid #59b786; }
.alarmProtocol { display:grid; align-content:start; gap:7px; min-height:0; max-height:46vh; overflow:auto; padding:8px 10px 10px; background:#0e1418; }
.protocolHeading { display:flex; align-items:center; justify-content:space-between; gap:10px; }.protocolHeading>div { display:grid; gap:3px; }.protocolHeading b { color:#84959c; font-size:9px; letter-spacing:.12em; }.protocolHeading small { color:#bac5c9; font-size:10px; }.protocolHeading .btn { min-height:28px; padding:3px 8px; font-size:9px; }
.protocolGroup { display:grid; gap:5px; }.protocolLabel { color:#99a8ad; font-size:8px; font-weight:900; letter-spacing:.1em; }
.protocolRow { display:grid; grid-template-columns:68px 76px 98px minmax(0,1fr) 78px; align-items:center; gap:6px; }
.protocolRow>b { color:#e3eaed; font-size:10px; }.protocolTag,.protocolState { justify-self:start; padding:3px 6px; border:1px solid #46555b; border-radius:3px; color:#aab8bd; font-size:8px; font-weight:900; letter-spacing:.04em; white-space:nowrap; }
.protocolTag.required { border-color:#894a49; background:#2a1719; color:#f19a91; }.protocolTag.optionalTag { border-color:#526064; background:#182125; color:#aab8bc; }
.protocolState.open { border-color:#784545; background:#241719; color:#ef9b91; }.protocolState.confirmed { border-color:#416d54; background:#14251a; color:#86d39e; }
.protocolRow .input { width:100%; min-width:0; min-height:34px; height:34px; padding:5px 9px; border-color:#414c51; border-radius:4px; background:#11171a; font-size:10px; }
.protocolRow .askInline { min-height:34px; padding:4px 5px; border-color:#46565b; border-radius:4px; color:#9ccbd1; font-size:8px; white-space:nowrap; }
.protocolGroup.optional { padding-top:2px; }.callComposer { display:grid; gap:4px; }.callComposer>label { color:#99a8ad; font-size:8px; font-weight:900; letter-spacing:.1em; }
.callComposer>div { display:grid; grid-template-columns:minmax(0,1fr) 78px; gap:6px; }.callComposer textarea { width:100%; min-height:42px; resize:vertical; padding:7px 9px; border:1px solid #414c51; border-radius:4px; background:#11171a; color:#e5edf0; font-family:inherit; font-size:10px; line-height:1.4; }
.callComposer button { min-height:42px; padding:4px; border-radius:4px; color:#a9d7dc; font-size:9px; }
.callVerification { display:grid; grid-template-columns:minmax(0,1fr) 170px; align-items:center; gap:5px 10px; margin-top:1px; }
.callVerification>span { display:flex; align-items:center; gap:8px; color:#a8b7bb; font-size:9px; }.callVerification i { display:block; flex:1; height:5px; border-radius:4px; background:#3a4144; overflow:hidden; }.callVerification em { display:block; height:100%; background:#89d49c; }.callVerification>span>b { color:#ef9993; white-space:nowrap; }.callVerification button { min-height:34px; border-radius:4px; font-size:10px; }.callVerification>small { grid-column:1 / -1; color:#ef9993; font-size:9px; }
.keywordSelectButton { text-align:left; cursor:pointer; }
.keywordPicker [hidden] { display:none !important; }
.keywordSelectButton:disabled { cursor:not-allowed; opacity:.55; }
.keywordPicker { position:fixed; inset:0; z-index:950; background:#0b1115; color:#dce6e9; }
.keywordPickerPanel { display:grid; grid-template-rows:48px minmax(0,1fr) 32px; width:100%; height:100%; min-height:0; }
.keywordPickerHead { display:grid; grid-template-columns:auto minmax(120px,1fr) 30px; align-items:center; gap:14px; padding:5px 12px; border-bottom:1px solid #304149; background:#10191e; }
.keywordPickerHead>b { color:#dae6e9; font-size:11px; letter-spacing:.08em; white-space:nowrap; }
.keywordPickerHead input { width:100%; height:30px; padding:5px 10px; border:1px solid #557078; border-radius:4px; outline:0; background:#172329; color:#e6eff1; }
.keywordPickerClose { height:30px; border:0; background:transparent; color:#91a3a9; font-size:21px; cursor:pointer; }
.keywordPickerBody { display:grid; grid-template-columns:repeat(6,minmax(145px,1fr)); align-content:start; gap:8px; overflow:auto; padding:12px; }
.keywordCategory { min-width:0; }
.keywordCategory h3 { display:flex; align-items:center; gap:6px; margin:0 0 7px; color:#e2a65c; font-size:10px; letter-spacing:.06em; }
.keywordCategory:nth-child(3) h3 { color:#83cbd5; }.keywordCategory:nth-child(4) h3 { color:#8fc8db; }.keywordCategory:nth-child(5) h3 { color:#e1c16b; }.keywordCategory:nth-child(6) h3,.keywordCategory:nth-child(7) h3 { color:#9bb3bd; }
.keywordCategory h3>small { margin-left:auto; color:#82939a; font-size:9px; }
.keywordOptions { display:grid; align-content:start; gap:4px; }
.keywordOption { display:grid; gap:4px; min-width:0; padding:7px 8px; border:1px solid #51483a; border-radius:4px; background:#242522; color:#eab77c; text-align:left; cursor:pointer; }
.keywordOption:hover:not(:disabled) { border-color:#bd8951; background:#302b25; }
.keywordOptionTitle { display:flex; align-items:center; gap:4px; font-size:10px; font-weight:800; line-height:1.25; }
.keywordOptionTitle small { flex:none; padding:2px 4px; border:1px solid #78654b; border-radius:3px; color:#e1bd89; font-size:8px; }
.keywordOptionMeta { color:#9faeb2; font-size:8px; }
.keywordOption em { color:#92cda6; font-size:8px; font-style:normal; }
.keywordOption.unavailable { border-color:#38454a; background:#182125; color:#87949a; cursor:pointer; }
.keywordOption.unavailable .keywordOptionTitle small { border-color:#3a464a; color:#78858a; }
.keywordOption.unavailable em { color:#849198; }
.keywordEmpty { padding:8px; border:1px dashed #34444a; border-radius:4px; color:#7f9096; font-size:9px; line-height:1.4; }
.keywordPicker footer { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:4px 12px; border-top:1px solid #2e3d43; color:#819198; font-size:9px; }
.keywordLegend { display:inline-block; width:8px; height:8px; margin-right:4px; border-radius:50%; background:#65737a; }.keywordLegend.enabled { background:#6fbe89; }
@media(max-width:1050px) { .keywordPickerBody { grid-template-columns:repeat(3,minmax(145px,1fr)); } }
@media(max-width:620px) { .keywordPickerPanel { grid-template-rows:48px minmax(0,1fr) auto; }.keywordPickerHead { grid-template-columns:1fr 30px; }.keywordPickerHead>b { grid-column:1/2; }.keywordPickerHead input { grid-column:1/2; grid-row:2; }.keywordPickerHead { height:78px; grid-template-rows:28px 32px; }.keywordPickerClose { grid-column:2; grid-row:1/3; }.keywordPickerBody { grid-template-columns:repeat(2,minmax(130px,1fr)); padding:8px; }.keywordPicker footer { align-items:flex-start; flex-direction:column; padding:7px 10px; } }

/* Fullscreen Leitstellenplatz: Wachen links, Karte mittig, Einsatz rechts. */
html, body { height:100%; overflow:hidden; }
.app { height:100dvh; min-height:0; grid-template-columns:246px minmax(0,1fr); overflow:hidden; }
.side { min-height:0; overflow:hidden; padding:9px 8px; gap:8px; background:#111b22; }
.brand { padding:5px 8px 9px; border-bottom:1px solid #2b3a43; font-size:14px; }
.railSection { display:flex; flex-direction:column; min-height:0; }
.railTitle { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:5px 7px 8px; color:#d4e0e6; }
.railTitle b { font-size:11px; }
.railTitle span { color:#80919b; font-size:9px; }
.railList { display:grid; gap:5px; max-height:34vh; overflow:auto; }
.railFacility { display:flex; align-items:center; gap:8px; width:100%; min-height:42px; padding:5px 7px; border-radius:5px; background:#17232b; text-align:left; }
.railFacility:hover { border-color:#5d8792; background:#1e3038; }
.railIcon { display:grid; flex:0 0 28px; place-items:center; height:28px; border-radius:4px; background:#29404a; font-size:14px; }
.railIcon.station { border:1px solid #5c829c; background:#1a2b38; color:#c3e4f2; font-weight:900; font-size:17px; }
.railIcon.pol { background:#1e3949; }.railIcon.fire { background:#472d2c; }.railIcon.ems { background:#43282d; }.railIcon.heli { background:#4a4028; }
.railText { min-width:0; flex:1; }.railText b,.railText small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.railText b { font-size:10px; }.railText small { margin-top:2px; color:#8497a2; font-size:9px; }
.railArrow { color:#81939d; }
.railEmpty { padding:12px 8px; color:#72848f; font-size:10px; line-height:1.5; }
.railDivider { height:1px; background:#2b3a43; }
.crewTitle { margin-top:13px; padding:7px 0; border-bottom:1px solid #2a3d4f; color:#8da1ad; font-size:9px; font-weight:900; letter-spacing:.1em; text-transform:uppercase; }
.assignedCrew { display:grid; gap:6px; margin-top:7px; }
.assignedUnit { display:flex; align-items:center; gap:8px; min-height:44px; padding:6px 8px; border:1px solid #39515e; border-radius:5px; background:#17252d; }
.assignedVehicle { font-size:19px; }
.assignedUnitName { min-width:0; flex:1; }.assignedUnitName b,.assignedUnitName small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.assignedUnitName b { font-size:10px; }.assignedUnitName small { margin-top:3px; color:#8fa1aa; font-size:9px; }
.unitState { width:8px; height:8px; border-radius:50%; background:#dda94b; }.unitState.onsite { background:#5bb98a; }
.assignedEmpty { padding:9px; margin-top:7px; border:1px dashed #354955; border-radius:5px; color:#83949e; font-size:10px; }
.side .navbox { grid-template-columns:1fr 1fr; gap:4px; }
.side .nav { justify-content:flex-start; min-height:34px; padding:5px 7px; gap:5px; }
.side .nav .ico { font-size:13px; }.side .nav .lbl { display:inline; font-size:9px; }
.side .spacer { flex:1; }
.sideFoot { padding:7px 6px; }
main { display:grid; grid-template-rows:58px minmax(0,1fr); height:100dvh; min-height:0; overflow:hidden; }
.top { height:58px; padding:0 12px; }
.loc b { font-size:13px; }.top-right { gap:5px; }.clock { min-width:77px; text-align:center; font-size:17px; }
.content { display:grid; grid-template-rows:54px minmax(0,1fr); gap:8px; width:100%; max-width:none; min-width:0; min-height:0; margin:0; overflow:hidden; padding:8px 10px 10px; }
.stats { grid-template-columns:repeat(5,minmax(80px,1fr)); gap:6px; min-height:0; margin:0; }
.stat { display:flex; align-items:center; gap:8px; padding:5px 9px; border-radius:5px; }
.stat .n { font-size:17px; }.stat .l { margin:0; font-size:9px; }
#viewDispatch.view.grid { grid-template-columns:minmax(0,1fr) minmax(310px,370px); grid-template-rows:minmax(0,1fr) 190px; grid-template-areas:"map detail" "calls detail"; align-items:stretch; gap:8px; width:100%; height:100%; min-height:0; }
#viewDispatch > .panel { min-width:0; min-height:0; border-radius:5px; }
#viewDispatch > .panel:nth-child(1) { grid-area:calls; display:flex; flex-direction:column; }
#viewDispatch > .map-panel { grid-area:map; display:flex; flex-direction:column; }
#viewDispatch > .panel:nth-child(3) { grid-area:detail; display:flex; flex-direction:column; }
#viewDispatch > .panel:nth-child(4), #viewDispatch > .panel:nth-child(5) { display:none; }
#viewDispatch > .panel:nth-child(1) .body { flex:1; min-height:0; max-height:none; display:grid; grid-auto-flow:column; grid-auto-columns:minmax(220px,1fr); align-content:start; gap:6px; overflow:auto; padding:7px; }
#viewDispatch > .panel:nth-child(1) .call { min-width:0; min-height:128px; margin:0; padding:8px; border-radius:5px; }
#viewDispatch > .panel:nth-child(1) .call h3 { font-size:11px; }
#viewDispatch > .panel:nth-child(1) .call .meta { font-size:9px; }
#viewDispatch > .panel:nth-child(3) { display:block; overflow-x:hidden; overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable; }
#viewDispatch > .panel:nth-child(3) > .ph { position:sticky; top:0; z-index:20; }
#viewDispatch > .panel:nth-child(3) > .body { min-height:0; max-height:none; overflow:visible; padding:10px; }
.actionDock { position:sticky; bottom:0; z-index:15; margin:8px -10px 10px; padding:8px 10px; border-top:1px solid #3b515c; background:linear-gradient(180deg,#111b22eF,#101820 28%); box-shadow:0 -8px 18px #080d12a8; }
#viewDispatch > .map-panel .mapWrap { flex:1; min-height:0; }
#viewDispatch > .map-panel #map { width:100%; height:100%; min-height:300px; }
.mapHeaderActions { display:flex; align-items:center; gap:8px; }
#viewDispatch > .panel:nth-child(3) > .ph { display:flex; align-items:center; justify-content:space-between; }
#viewDispatch.detailsClosed.view.grid { grid-template-columns:minmax(0,1fr) !important; grid-template-rows:minmax(0,1fr) 190px !important; grid-template-areas:"map" "calls" !important; }
#viewDispatch.detailsClosed > .panel:nth-child(3) { display:none !important; }
#viewDispatch.detailsClosed > .map-panel { grid-area:map; grid-column:auto; grid-row:auto; }
#viewDispatch.detailsClosed > .panel:nth-child(1) { grid-area:calls; grid-column:auto; grid-row:auto; }
.quickClose { grid-column: 1 / -1; display: grid; gap: 4px; margin-top: 8px; }
.quickClose .btn { min-height: 38px; }
.quickClose small { color: var(--muted); font-size: 9px; line-height: 1.45; }
.setupShiftMode { margin:10px 0 4px; padding:10px; border:1px solid var(--line); border-radius:10px; background:#111a24; }
.voiceDeviceTools { display:grid; gap:7px; margin:8px 0; padding:10px; border:1px solid var(--line); border-radius:8px; background:#101923; }
.voiceDeviceRow { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:7px; }
.voiceDeviceRow .input { min-width:0; }
.voiceMeterRow { display:grid; grid-template-columns:minmax(120px,1fr) minmax(110px,1.2fr); align-items:center; gap:10px; color:var(--muted); font-size:11px; }
.voiceMeterRow meter { width:100%; height:14px; accent-color:var(--green); }
.voiceTestActions { display:flex; gap:7px; flex-wrap:wrap; }
.voiceDeviceTools [hidden] { display:none !important; }
.setupShiftMode label { display:flex; align-items:flex-start; gap:9px; cursor:pointer; }
.setupShiftMode label>span { display:grid; gap:3px; }
.setupShiftMode b { font-size:12px; }.setupShiftMode small { color:var(--muted); font-size:10px; line-height:1.4; }
.mapHeaderActions .btn { min-height:26px; padding:3px 7px; font-size:9px; }
.ph { min-height:34px; padding:7px 10px; }.ph b { font-size:10px; }
.phaseDot { font-size:10px; }

@media (max-width: 1180px) {
  .view.grid { grid-template-columns: 1fr 1fr; }
  #viewDispatch > .panel:nth-child(3) { grid-column: 2; }
  #viewDispatch > .panel:nth-child(4) { grid-column: 1; }
  #viewDispatch > .panel:nth-child(5) { grid-column: 1 / -1; }
  .map-panel { grid-column: 1 / -1; grid-row: auto; }
  #map { height: 380px; }
  .view.lookupView { grid-template-columns:1fr; }
  #viewDispatch.detailsClosed.view.grid { grid-template-columns:1fr !important; grid-template-rows:360px auto !important; grid-template-areas:"map" "calls" !important; }
}

@media (max-width: 900px) {
  #viewHistory { grid-template-columns:1fr; overflow:auto; }
  .app { grid-template-columns: 74px 1fr; }
  .side { padding: 12px 8px; align-items: stretch; }
  .brand { font-size: 0; text-align: center; }
  .brand::after { content: "DC"; font-size: 17px; }
  .nav { justify-content: center; }
  .nav .lbl { display: none; }
  .nav .ico { font-size: 19px; }
  .sideFoot { text-align: center; font-size: 0; padding: 8px 0; }
  .phaseDot { justify-content: center; font-size: 0; }
  .operator { display: none; }
}

@media (max-width: 720px) {
  .app { display: block; }
  .side {
    display: none;
    position: absolute;
    z-index: 320;
    left: 0;
    top: 66px;
    width: 236px;
    height: calc(100vh - 66px);
    box-shadow: 14px 20px 40px #000a;
  }
  .side.open { display: flex; }
  .hamb { display: grid; }
  .content { padding: 12px 10px 96px; }
  .view.grid { grid-template-columns: 1fr; }
  .actions { grid-template-columns: 1fr; }
  .choices { grid-template-columns: 1fr; }
  #map { height: 320px; }
  .legend { font-size: 9px; }
  .radioDrawer {
    left: 0;
    right: 0;
    bottom: 0;
    width: 100vw;
    height: 100dvh;
    max-height: none;
    border: none;
    border-radius: 0;
    z-index: 650;
  }
  .radioHead { padding-top: calc(11px + env(safe-area-inset-top)); }
  .toasts { bottom: 84px; }
  .card { padding: 18px; }
  .card h1 { font-size: 21px; }
  .scroll { max-height: none; }
  .scroll.short { max-height: 200px; }
}

@media (max-width: 800px) {
  html, body { height:auto; min-height:100%; overflow:auto; }
  .app { display:block; height:auto; min-height:100dvh; overflow:visible; }
  main { display:block; height:auto; min-height:100dvh; overflow:visible; }
  .top { position:sticky; top:0; z-index:200; }
  .content { display:block; height:auto; overflow:visible; padding:9px 8px 80px; }
  #viewLookup { height:auto; max-height:none; overflow:visible; padding:0 0 30px; }
  .stats { grid-template-columns:repeat(3,minmax(0,1fr)); margin-bottom:8px; }
  .stat { display:block; padding:7px; }.stat .n { font-size:15px; }.stat .l { font-size:8px; }
  #viewDispatch.view.grid { display:grid; height:auto; min-height:0; grid-template-columns:minmax(0,1fr); grid-template-rows:minmax(340px,52vh) minmax(150px,30vh) minmax(320px,auto); grid-template-areas:"map" "calls" "detail"; align-items:stretch; }
  #viewDispatch > .panel:nth-child(1) { grid-area:calls; grid-column:auto; grid-row:auto; min-height:0; }
  #viewDispatch > .map-panel { grid-area:map; grid-column:auto; grid-row:auto; min-height:340px; }
  #viewDispatch > .panel:nth-child(3) { grid-area:detail; grid-column:auto; grid-row:auto; }
  #viewDispatch > .panel:nth-child(1) .body { grid-auto-flow:row; grid-auto-columns:auto; grid-template-columns:1fr; align-content:start; overflow:auto; }
  #viewDispatch > .panel:nth-child(1) .call { min-height:0; }
  #viewDispatch > .map-panel #map { min-height:300px; }
  #viewDispatch > .panel:nth-child(3) { overflow:visible; }
  #viewDispatch.detailsClosed.view.grid { grid-template-rows:minmax(340px,52vh) minmax(150px,30vh) !important; grid-template-areas:"map" "calls" !important; }
  .railList { max-height:30vh; }
}

@media (max-width: 800px) {
  .callConsole { grid-template-rows:auto auto minmax(90px,1fr) minmax(330px,48vh); }
  .protocolRow { grid-template-columns:58px 68px minmax(0,1fr) 72px; }
  .protocolRow .protocolState { display:none; }
  .callFacts>div { min-width:0; }
}

@media (max-height: 700px) and (min-width: 801px) {
  .callConsole { grid-template-rows:auto auto minmax(80px,1fr) minmax(225px,42vh); }
  .alarmProtocol { max-height:42vh; }
}

@media (max-height: 540px) {
  .callConsole { grid-template-rows:auto auto minmax(55px,1fr) minmax(185px,44vh); }
  .alarmProtocol { max-height:44vh; }
  .protocolRow .input { min-height:30px; height:30px; }
  .protocolRow .askInline { min-height:30px; }
}

/* --------------------------------------------------------------------------
   Modern dispatch dashboard – visual overhaul to match the provided reference
   -------------------------------------------------------------------------- */

body {
  background: linear-gradient(180deg, #080d13 0%, #060b11 100%);
  color: var(--text);
}

#app {
  display: grid !important;
  grid-template-columns: 220px minmax(0, 1fr);
  min-height: 100vh;
  background: linear-gradient(180deg, #0a1118 0%, #091219 100%);
}

#sidebar {
  background: rgba(12, 18, 24, 0.96);
  border-right: 1px solid rgba(105, 132, 145, 0.25);
  box-shadow: inset -1px 0 0 rgba(147, 180, 196, 0.06);
}

.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 12px 16px;
  border-bottom: 1px solid rgba(114, 146, 160, 0.18);
}

.brand-icon,
.brand-mini-icon {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(58, 99, 141, 0.35), rgba(20, 36, 52, 0.8));
  border: 1px solid rgba(111, 156, 206, 0.45);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.05);
  font-size: 16px;
}

.brand-copy {
  display: grid;
  gap: 2px;
  line-height: 1.05;
}

.brand-copy span,
.brand-mini strong {
  font-size: 10px;
  letter-spacing: 0.14em;
  color: #9db5c7;
}

.brand-copy strong,
.brand-mini span {
  font-size: 18px;
  letter-spacing: 0.02em;
  color: #edf5ff;
}

.navbox {
  display: grid;
  gap: 6px;
  padding: 12px 8px;
}

.nav {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 36px;
  padding: 8px 10px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: rgba(24, 35, 44, 0.14);
  color: #dfeaf6;
  font-weight: 600;
  text-align: left;
}

.nav:hover {
  background: rgba(33, 47, 58, 0.8);
  border-color: rgba(106, 142, 177, 0.22);
}

.nav.active {
  background: linear-gradient(180deg, rgba(40, 76, 116, 0.85), rgba(24, 42, 65, 0.9));
  border-color: rgba(98, 162, 255, 0.7);
  box-shadow: inset 0 0 0 1px rgba(116, 167, 255, 0.18);
}

.nav .ico {
  display: inline-grid;
  place-items: center;
  width: 18px;
  font-size: 14px;
}

.nav .lbl {
  display: inline-block;
  margin: 0;
  font-size: 12px;
  letter-spacing: 0.01em;
}

.side-foot {
  margin-top: auto;
  padding: 10px 12px 14px;
  border-top: 1px solid rgba(114, 146, 160, 0.18);
}

.phaseDot {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #dfeaf6;
}

.phaseDot::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #42d39c;
  box-shadow: 0 0 0 0 rgba(66, 211, 156, 0.3);
  animation: navPulse 2s infinite;
}

.phaseDot.paused::before { background: #f2bd45; }
.phaseDot.over::before { background: #ef5b63; }

.operator {
  margin-top: 8px;
  font-size: 11px;
  color: #8ca0b1;
}

.main-shell {
  display: grid;
  grid-template-rows: 72px minmax(0, 1fr);
  min-width: 0;
  min-height: 0;
}

.topbar {
  display: grid;
  grid-template-columns: 1fr minmax(0, 2.5fr) auto;
  align-items: center;
  gap: 12px;
  min-width: 0;
  padding: 10px 18px;
  border-bottom: 1px solid rgba(114, 146, 160, 0.18);
  background: rgba(14, 23, 31, 0.9);
  box-shadow: 0 1px 0 rgba(255,255,255,0.02), 0 10px 26px rgba(0,0,0,0.18);
}

.topbar-left,
.topbar-center,
.topbar-right {
  min-width: 0;
}

.topbar-left {
  display: flex;
  align-items: center;
  gap: 10px;
}

.brand-mini {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.brand-mini strong {
  display: block;
  font-size: 10px;
  letter-spacing: 0.14em;
  color: #93a9bb;
}

.brand-mini span {
  display: block;
  margin-top: 2px;
  font-size: 16px;
  font-weight: 800;
  color: #eef7ff;
}

.topbar-center {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
}

.header-metric {
  display: grid;
  gap: 3px;
  min-width: 0;
  padding: 4px 8px;
  border-radius: 12px;
  background: rgba(17, 27, 37, 0.72);
  border: 1px solid rgba(130, 146, 166, 0.12);
}

.metric-label {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #7e93a6;
}

.header-metric strong,
.header-metric small {
  display: block;
  white-space: nowrap;
}

.header-metric strong {
  font-size: 14px;
}

.header-metric small {
  font-size: 11px;
  color: #bfcfe1;
}

.timer-box {
  min-width: 118px;
}

.weather-box {
  min-width: 120px;
}

.traffic-box strong {
  font-size: 12px;
  color: #80e3a2;
}

.topbar-right {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
}

.header-stat {
  display: grid;
  gap: 2px;
  min-width: 86px;
  text-align: center;
  padding: 6px 8px;
  border-radius: 12px;
  background: rgba(17, 27, 36, 0.72);
  border: 1px solid rgba(130, 146, 166, 0.12);
}

.header-stat span {
  font-size: 9px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #7d94a8;
}

.header-stat strong {
  font-size: 18px;
  line-height: 1.1;
}

.shift-label {
  display: block;
  margin-top: 2px;
  font-size: 9px;
  color: #8fa7b8;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.phase-stat strong,
.score-stat strong {
  font-size: 13px;
  font-weight: 800;
}

.icon-btn {
  width: 38px;
  height: 38px;
  padding: 0;
  border-radius: 10px;
  border: 1px solid rgba(117, 136, 152, 0.25);
  background: rgba(17, 27, 36, 0.8);
  color: #dfeaf6;
  font-size: 16px;
}

.content {
  display: grid;
  grid-template-rows: 88px minmax(0, 1fr);
  gap: 12px;
  min-height: 0;
  padding: 14px 16px 16px;
}

.stats {
  display: grid;
  grid-template-columns: repeat(5, minmax(150px, 1fr));
  gap: 12px;
  min-width: 0;
}

.stat {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 70px;
  padding: 12px 14px;
  border: 1px solid rgba(122, 146, 160, 0.22);
  border-radius: 12px;
  background: rgba(17, 28, 36, 0.86);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.04);
}

.stat-alert { border-color: rgba(212, 89, 89, 0.45); }
.stat-blue { border-color: rgba(71, 144, 255, 0.42); }
.stat-green { border-color: rgba(50, 188, 130, 0.42); }
.stat-gold { border-color: rgba(235, 182, 75, 0.38); }
.stat-amber { border-color: rgba(244, 164, 75, 0.38); }

.stat-icon {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: rgba(255,255,255,0.04);
  font-size: 18px;
}

.stat-copy {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.stat-copy strong {
  font-size: 28px;
  line-height: 1;
  font-weight: 800;
}

.stat-copy span {
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #9eb5c9;
}

.view.grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(420px, 2.2fr) minmax(280px, 0.9fr);
  gap: 12px;
  min-height: 0;
}

.panel {
  display: flex;
  flex-direction: column;
  min-height: 0;
  border: 1px solid rgba(122, 146, 160, 0.22);
  border-radius: 12px;
  background: rgba(17, 28, 36, 0.9);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
}

.ph {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 42px;
  padding: 10px 12px;
  border-bottom: 1px solid rgba(122, 146, 160, 0.18);
  background: rgba(14, 22, 31, 0.9);
}

.ph b {
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.body {
  min-height: 0;
  padding: 10px;
}

.map-panel {
  min-height: 0;
}

.mapWrap {
  position: relative;
  flex: 1;
  min-height: 0;
}

#map {
  width: 100%;
  height: 100%;
  min-height: 430px;
  background: #0d151d;
  border-radius: 0 0 12px 12px;
}

.mapHeaderActions {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.mapHeaderActions .meta {
  font-size: 9px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #8ea5b5;
}

.legend {
  position: absolute;
  left: 12px;
  bottom: 12px;
  display: grid;
  gap: 4px;
  padding: 8px 10px;
  border-radius: 10px;
  background: rgba(13, 20, 27, 0.76);
  border: 1px solid rgba(124, 149, 167, 0.22);
  box-shadow: 0 10px 22px rgba(0,0,0,0.18);
  font-size: 10px;
  color: #c7d5e2;
}

.legend b {
  font-size: 9px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #dfeaf6;
}

.legend span {
  display: flex;
  align-items: center;
  gap: 6px;
}

.pin {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

.pin.pol { background: #5aa8ff; }
.pin.fire { background: #ef5b63; }
.pin.ems { background: #31c58b; }
.pin.heli { background: #e7b85b; }
.pin.call { background: #f4c14c; }
.pin.stationPin { width: 9px; height: 9px; border-radius: 3px; background: #7ab7ff; }
.pin.hospitalPin { width: 9px; height: 9px; border-radius: 50%; background: #e25163; }

#viewDispatch > .panel:nth-child(1) {
  min-height: 0;
}

#viewDispatch > .panel:nth-child(1) .body,
#viewDispatch > .panel:nth-child(3) .body,
#viewDispatch > .panel:nth-child(4) .body {
  overflow: auto;
}

#viewDispatch > .panel:nth-child(1) .call,
#viewDispatch > .panel:nth-child(4) .call {
  background: rgba(18, 28, 37, 0.9);
}

.badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 20px;
  padding: 0 8px;
  border-radius: 999px;
  border: 1px solid rgba(135, 158, 176, 0.18);
  background: rgba(41, 58, 72, 0.6);
  color: #dfeaf6;
  font-size: 10px;
  font-weight: 800;
}

.badge-call {
  background: rgba(182, 38, 48, 0.26);
  border-color: rgba(233, 98, 98, 0.4);
  color: #ffb0b5;
}

.side-stack {
  display: grid;
  grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
  gap: 12px;
  min-height: 0;
}

.radio-panel {
  grid-column: 1 / span 3;
}

.radio-panel .body {
  padding: 8px 10px 10px;
}

.log {
  display: grid;
  gap: 6px;
}

.logLine {
  display: grid;
  gap: 2px;
  padding: 8px 10px;
  border-left: 2px solid rgba(100, 164, 255, 0.55);
  border-radius: 8px;
  background: rgba(19, 30, 39, 0.8);
  color: #cfe0ef;
  font-size: 11px;
  line-height: 1.45;
}

.logLine b {
  color: #edf5ff;
}

.logLine.warn {
  border-left-color: rgba(233, 169, 80, 0.9);
  color: #f6d58d;
}

#viewDispatch > .panel:nth-child(3) .body {
  display: grid;
  gap: 10px;
  align-content: start;
}

.detailTitle,
.detailSub {
  display: block;
}

.detailTitle {
  font-size: 18px;
  font-weight: 800;
}

.detailSub {
  margin-top: 2px;
  font-size: 11px;
  color: #8fa7b8;
}

.info {
  display: grid;
  gap: 8px;
}

.info > div {
  padding: 9px 10px;
  border: 1px solid rgba(122, 146, 160, 0.18);
  border-radius: 8px;
  background: rgba(15, 24, 31, 0.7);
}

.info b {
  display: block;
  margin-bottom: 5px;
  color: #8ea5b5;
  font-size: 9px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.actions .wide {
  grid-column: 1 / -1;
}

.call .callAttention {
  margin: 7px 0 6px;
  padding: 6px 7px;
  border-radius: 7px;
  background: rgba(84, 60, 15, 0.7);
  border: 1px solid rgba(211, 159, 72, 0.38);
  color: #f7d98e;
  font-size: 11px;
  line-height: 1.35;
}

.call.selected {
  border-color: rgba(103, 166, 255, 0.9);
  border-left: 3px solid rgba(103, 166, 255, 0.9);
  background: rgba(19, 38, 57, 0.95);
}

.call {
  display: block;
  width: 100%;
  margin: 0 0 8px;
  padding: 10px 10px 9px;
  border: 1px solid rgba(122, 146, 160, 0.18);
  border-left: 3px solid rgba(122, 146, 160, 0.24);
  border-radius: 10px;
  background: rgba(17, 25, 34, 0.92);
}

.call h3 {
  margin: 0;
  font-size: 14px;
}

.call .row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin: 0 0 6px;
}

.call .meta {
  display: block;
  font-size: 11px;
  color: #9eb4c7;
}

.sla {
  height: 5px;
  margin-top: 8px;
  border-radius: 999px;
  background: rgba(86, 99, 109, 0.35);
  overflow: hidden;
}

.sla i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, #58d39b, #33c88d);
}

.sla.warn i { background: linear-gradient(90deg, #f3c25f, #f2a33a); }
.sla.late i { background: linear-gradient(90deg, #f0676a, #e65055); }

.unit {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 9px 10px;
  border: 1px solid rgba(122, 146, 160, 0.18);
  border-radius: 10px;
  background: rgba(18, 28, 37, 0.85);
  margin-bottom: 7px;
}

.unitName {
  font-size: 12px;
  font-weight: 700;
}

.unitMeta {
  margin-top: 2px;
  font-size: 10px;
  color: #9bb2c2;
}

.dot {
  display: inline-block;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #3ad39d;
  margin-right: 6px;
}

.dot.busy { background: #f2a33a; }
.dot.at { background: #53a8ff; }
.dot.back { background: #9aaec1; }

.unitAction {
  min-height: 24px;
  padding: 4px 7px;
  font-size: 9px;
  border-radius: 6px;
}

#viewDispatch > .panel:nth-child(1) .body {
  display: grid;
  grid-auto-flow: row;
  gap: 8px;
}

#viewDispatch > .panel:nth-child(3) {
  background: rgba(20, 30, 39, 0.92);
}

@media (max-width: 1280px) {
  .topbar {
    grid-template-columns: 1fr;
    gap: 8px;
    padding-top: 8px;
    padding-bottom: 8px;
  }

  .topbar-center,
  .topbar-right {
    justify-content: flex-start;
  }

  .content {
    grid-template-rows: auto minmax(0, 1fr);
  }

  .stats {
    grid-template-columns: repeat(2, minmax(160px, 1fr));
  }
}

@media (max-width: 900px) {
  #app {
    grid-template-columns: 78px minmax(0, 1fr);
  }

  .nav .lbl {
    display: none;
  }

  .nav {
    justify-content: center;
    padding: 8px 0;
  }

  .brand-copy {
    display: none;
  }

  .topbar-right {
    gap: 8px;
    flex-wrap: wrap;
  }
}

@media (max-width: 720px) {
  #app {
    display: block;
    min-height: 100vh;
  }

  .main-shell {
    display: block;
  }

  .content {
    padding: 10px;
  }

  .stats {
    grid-template-columns: repeat(2, minmax(120px, 1fr));
  }

  .view.grid {
    display: block;
  }

  .radio-panel {
    grid-column: auto;
  }

  .side {
    display: none;
    position: absolute;
    top: 72px;
    left: 0;
    width: 230px;
    height: calc(100vh - 72px);
    z-index: 20;
  }

  .side.open {
    display: flex;
  }
}

@keyframes navPulse {
  0% { box-shadow: 0 0 0 0 rgba(66, 211, 156, 0.28); }
  70% { box-shadow: 0 0 0 10px rgba(66, 211, 156, 0); }
  100% { box-shadow: 0 0 0 0 rgba(66, 211, 156, 0); }
}

/* Final dispatch shell: one sidebar, one route, one dashboard grid. */
#app[hidden] { display: none !important; }
#setupOverlay:not([hidden]) { position: fixed; inset: 0; z-index: 1200; overflow-y: auto; background: #071018; }
#app:not([hidden]) { display: grid !important; grid-template-columns: clamp(145px, 12vw, 210px) minmax(0, 1fr); width: 100%; height: 100dvh; min-height: 0; overflow: hidden; }
#app .side { display: flex; flex-direction: column; width: clamp(145px, 12vw, 210px); min-width: 0; height: 100dvh; min-height: 0; overflow-x: hidden; overflow-y: auto; padding: 10px 8px; }
#app .navbox { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 10px 0; }
#app .nav { width: 100%; min-width: 0; min-height: 34px; justify-content: flex-start; gap: 7px; padding: 6px 7px; }
#app .nav .ico { width: 14px; font-size: 12px; }
#app .nav .lbl { display: block; min-width: 0; font-size: 8px; white-space: normal; overflow-wrap: normal; line-height: 1.2; }
#app .brand-copy { min-width: 0; }
#app .brand-copy strong { font-size: 14px; }
#app .brand-copy .shift-label { margin-top: 3px; color: #8fa7b8; font-size: 7px; letter-spacing: .02em; white-space: nowrap; }
#app .side-foot { margin-top: auto; text-align: left; }
.side-end-shift { width: 100%; min-height: 32px; margin-top: 10px; padding: 6px 8px; border: 1px solid rgba(255, 91, 103, 0.35); border-radius: 6px; background: rgba(117, 31, 41, 0.2); color: #ff9ca4; font-size: 10px; text-align: left; cursor: pointer; }
.side-end-shift:hover { background: rgba(150, 39, 51, 0.32); }
#app .main-shell { display: grid; grid-template-rows: 58px minmax(0, 1fr); width: 100%; height: 100dvh; min-width: 0; min-height: 0; overflow: hidden; }
#app .topbar { display: flex; justify-content: space-between; gap: 10px; min-height: 58px; padding: 5px 10px; overflow: hidden; }
#app .topbar-left { display: none; }
#app .topbar-center { flex: 1 1 auto; flex-wrap: nowrap; justify-content: flex-start; gap: 5px; }
#app .topbar-right { flex: 0 1 auto; flex-wrap: nowrap; gap: 4px; }
#app .header-metric { gap: 2px; padding: 3px 6px; border-radius: 6px; }
#app .metric-label { font-size: 8px; }
#app .header-stat { min-width: 58px; gap: 1px; padding: 4px 5px; border-radius: 6px; }
#app .header-stat span { font-size: 7px; }
#app .header-stat strong { font-size: 13px; }
#app .icon-btn { width: 32px; height: 32px; border-radius: 7px; }
#app .content { display: grid; grid-template-rows: 66px minmax(0, 1fr); gap: 8px; width: 100%; max-width: none; min-width: 0; min-height: 0; margin: 0; overflow: hidden; padding: 8px 10px 10px; }
#app .stats { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 7px; min-width: 0; min-height: 0; }
#app .stat { min-width: 0; min-height: 64px; padding: 8px 10px; }
#app .stat-copy strong { font-size: 22px; }
#viewDispatch.view.grid { display: grid; grid-template-columns: minmax(136px, 15%) minmax(0, 1fr) minmax(270px, 30%); grid-template-rows: minmax(0, 1.03fr) minmax(230px, 1fr); grid-template-areas: "map map active" "calls radio units"; align-items: stretch; gap: 8px; width: 100%; height: 100%; min-width: 0; min-height: 0; }
#viewDispatch > .call-panel { display: flex; grid-column: auto; grid-row: auto; grid-area: calls; flex-direction: column; min-width: 0; min-height: 0; }
#viewDispatch > .panel.call-panel:nth-child(1) { grid-column: auto; grid-row: auto; grid-area: calls; }
#viewDispatch > .panel.call-panel:nth-child(1) .body { grid-auto-flow: row; grid-auto-columns: minmax(0, 1fr); grid-template-columns: minmax(0, 1fr); }
#viewDispatch > .map-panel { display: flex; grid-column: auto; grid-row: auto; grid-area: map; flex-direction: column; min-width: 0; min-height: 0; }
#viewDispatch > .side-stack { display: contents; }
#viewDispatch > .side-stack > .panel { display: flex; flex-direction: column; min-width: 0; min-height: 0; }
#viewDispatch > .side-stack > .panel:first-child { grid-area: active; }
#viewDispatch > .side-stack > .panel:last-child { grid-area: units; }
#viewDispatch > .radio-panel { display: flex; grid-area: radio; grid-column: auto; grid-row: auto; flex-direction: column; min-width: 0; min-height: 0; }
#viewDispatch > .panel.radio-panel:nth-child(4) { display: flex; grid-column: auto; grid-row: auto; grid-area: radio; }
#viewDispatch > .call-panel > .body, #viewDispatch > .side-stack > .panel > .body, #viewDispatch > .radio-panel > .body { flex: 1; min-height: 0; max-height: none; overflow: auto; }
#viewDispatch > .map-panel .mapWrap { flex: 1; min-height: 0; }
#viewDispatch > .map-panel #map { width: 100%; height: 100%; min-height: 0; }
#app .radioDrawer { z-index: 1000; }
#viewStatistics { height: 100%; min-height: 0; overflow: auto; }
.statisticsView > .panel { height: 100%; min-height: 0; }
.statisticsGrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; padding: 14px; }
.statisticsGrid .stat { display: grid; align-content: center; gap: 8px; min-height: 96px; border-radius: 8px; }
.statisticsGrid .stat span { color: #8293a7; font-size: 11px; }
.statisticsGrid .stat strong { color: #f1f5f9; font-size: 25px; }
#app[data-route="map"] #viewDispatch.view.grid { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); grid-template-areas: "map"; }
#app[data-route="map"] #viewDispatch > :not(.map-panel) { display: none !important; }
#app[data-route="incidents"] #viewDispatch.view.grid { grid-template-columns: minmax(0, 1fr) minmax(280px, 32%) minmax(270px, 30%); grid-template-rows: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "calls calls active" "calls calls units"; }
#app[data-route="incidents"] #viewDispatch > .map-panel,
#app[data-route="incidents"] #viewDispatch > .radio-panel { display: none !important; }
#app[data-route="incidents"] #viewDispatch > .side-stack > .panel { display: flex; }
#app[data-route="radio"] #viewDispatch.view.grid { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); grid-template-areas: "radio"; }
#app[data-route="radio"] #viewDispatch > :not(.radio-panel) { display: none !important; }

@media (max-width: 1180px) {
  #app:not([hidden]) { grid-template-columns: clamp(145px, 12vw, 190px) minmax(0, 1fr); }
  #app .side { width: clamp(145px, 12vw, 190px); }
  #app .header-stat { min-width: 52px; padding: 4px; }
  #app .header-stat strong { font-size: 11px; }
  #app .stats { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  #viewDispatch.view.grid { grid-template-columns: minmax(120px, 15%) minmax(0, 1fr) minmax(240px, 30%); }
}

@media (max-width: 1350px) and (min-width: 721px) {
  #app .main-shell { grid-template-rows: 58px minmax(0, 1fr); }
  #app .topbar { min-height: 58px; padding: 4px 7px; }
  #app .topbar-center { gap: 3px; }
  #app .header-metric { padding: 3px 4px; }
  #app .header-stat { min-width: 48px; padding: 3px; }
  #app .header-stat span { font-size: 6px; }
  #app .header-stat strong { font-size: 10px; }
}

@media (max-width: 900px) {
  #app:not([hidden]) { grid-template-columns: 72px minmax(0, 1fr); }
  #app .side { width: 72px; padding: 10px 6px; }
  #app .nav { justify-content: center; padding: 7px 2px; }
  #app .nav .lbl, #app .brand-copy, #app .operator { display: none; }
  #app .nav .ico { width: auto; font-size: 18px; }
  #app .nav .lbl { font-size: 10px; }
  #app .side-foot { text-align: center; }
  .side-end-shift { padding: 6px 2px; font-size: 0; text-align: center; }
  .side-end-shift::first-letter { font-size: 14px; }
  #app .topbar { min-height: 58px; }
  #app .topbar-left, #app .topbar-center { display: none; }
  #app .topbar-right { gap: 4px; }
  #app .header-stat { min-width: 54px; }
  #app .header-stat span { font-size: 7px; }
  #app .content { grid-template-rows: auto minmax(0, 1fr); }
  #app .stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #viewDispatch.view.grid { grid-template-columns: minmax(112px, 18%) minmax(0, 1fr) minmax(230px, 34%); }
}

@media (max-width: 720px) {
  #app:not([hidden]) { display: grid !important; grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); }
  #app .side { display: none; position: fixed; top: 64px; bottom: 0; left: 0; z-index: 100; width: min(270px, 86vw); height: auto; padding: 12px; background: #0e1821; box-shadow: 12px 0 30px #0009; }
  #app .side.open { display: flex; }
  #app .nav { justify-content: flex-start; padding: 7px 9px; }
  #app .nav .lbl, #app .brand-copy, #app .operator { display: block; }
  #app .side-foot { text-align: left; }
  .side-end-shift { padding: 6px 8px; font-size: 10px; text-align: left; }
  #app .main-shell { grid-column: 1; grid-row: 1; grid-template-rows: auto minmax(0, 1fr); height: 100dvh; }
  #app .topbar { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 6px 8px; }
  #app .topbar-left { display: flex; }
  #app .brand-mini { display: none; }
  #app .topbar-center { display: none; }
  #app .topbar-right { justify-content: flex-end; }
  #app .topbar-right .header-stat { min-width: 48px; }
  #app .topbar-right .header-stat:nth-child(1), #app .topbar-right .header-stat:nth-child(2), #app .topbar-right .header-stat:nth-child(3) { display: none; }
  #app .content { display: grid; grid-template-rows: auto minmax(0, 1fr); overflow: auto; padding: 7px; }
  #app .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #app .stat { min-height: 54px; padding: 6px; }
  #app .stat-copy strong { font-size: 18px; }
  #viewDispatch.view.grid { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(310px, 48vh) minmax(240px, auto) minmax(145px, auto) minmax(160px, auto) minmax(270px, auto); grid-template-areas: "map" "active" "calls" "radio" "units"; height: auto; min-height: 0; }
  #app[data-route="incidents"] #viewDispatch.view.grid { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(145px, auto) minmax(240px, auto) minmax(270px, auto); grid-template-areas: "calls" "active" "units"; }
  #app[data-route="map"] #viewDispatch.view.grid { grid-template-rows: minmax(0, 1fr); height: 100%; }
  #app[data-route="radio"] #viewDispatch.view.grid { grid-template-rows: minmax(0, 1fr); height: 100%; }
  #app .radioDrawer { right: 8px; bottom: 78px; width: calc(100vw - 16px); height: min(70dvh, 620px); }
}

#callOverlay:not([hidden]) { display: block; z-index: 1100; }
#callOverlay .callConsole { display: grid; grid-template-rows: 58px minmax(0, 1fr); width: 100%; height: 100dvh; min-height: 0; background: #071018; color: #f1f5f9; }
#callOverlay .activeCallHead { min-width: 0; min-height: 58px; padding: 6px 12px; border-bottom: 1px solid #223345; background: #0e1821; }
#callOverlay .activeCallIdentity { gap: 9px; }
#callOverlay .activeCallIdentity b { display: block; color: #f1f5f9; font-size: 13px; font-style: normal; }
#callOverlay .activeCallIdentity span:not(.callPulse) { display: block; color: #8293a7; font-size: 9px; }
#callOverlay .activeCallIdentity small { color: #ff7883; }
#callOverlay .callPulse { width: 30px; height: 30px; border-color: #743541; background: #301a20; color: #ff717e; }
#callOverlay .activeCallTools { min-width: 0; }
#callOverlay .callNumber { color: #b8c7d7; font-size: 10px; font-variant-numeric: tabular-nums; }
#callOverlay .callHeaderAction { border: 1px solid #3381d0; background: #12345a; color: #c3e1ff; }
#callOverlay .callMinimize { min-width: 32px; }
#callOverlay .callWorkspace { display: grid; grid-template-columns: minmax(220px, 22%) minmax(0, 1fr) minmax(280px, 28%); gap: 8px; min-width: 0; min-height: 0; padding: 8px; }
#callOverlay .callerBrief, #callOverlay .callCenter, #callOverlay .callFindings { min-width: 0; min-height: 0; overflow: hidden; border: 1px solid #223345; border-radius: 8px; background: #0e1821; }
#callOverlay .callerBrief, #callOverlay .callFindings { overflow: auto; padding: 10px; scrollbar-gutter: stable; }
#callOverlay .callSectionHead { display: flex; align-items: center; gap: 7px; min-height: 28px; margin-bottom: 9px; padding-bottom: 7px; border-bottom: 1px solid #223345; color: #b9cadb; }
#callOverlay .callSectionHead > span { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 5px; background: #162c40; color: #72b7ff; font-size: 9px; font-weight: 900; }
#callOverlay .callSectionHead > b { min-width: 0; font-size: 9px; letter-spacing: .08em; }
#callOverlay .callSectionHead > small { margin-left: auto; color: #8293a7; font-size: 8px; }
#callOverlay .callSectionHead > .btn { margin-left: auto; min-height: 26px; padding: 3px 7px; font-size: 8px; }
#callOverlay .callSectionHead > .btn + small { margin-left: 0; }
#callOverlay .callBriefType { display: grid; gap: 5px; padding: 9px; border: 1px solid #493039; border-radius: 6px; background: #201820; }
#callOverlay .callBriefType small, #callOverlay .callBriefLocation > div > small, #callOverlay .callBriefMeta small { color: #8ea1b4; font-size: 8px; font-weight: 850; letter-spacing: .07em; }
#callOverlay .callBriefType b { color: #ffd5d7; font-size: 12px; line-height: 1.35; }
#callOverlay .callBriefType span { color: #d49da3; font-size: 9px; }
#callOverlay .callBriefLocation { display: grid; gap: 5px; margin-top: 8px; padding: 9px; border: 1px solid #223345; border-radius: 6px; background: #111f2b; }
#callOverlay .callBriefLocation > div { display: flex; align-items: center; justify-content: space-between; gap: 5px; }
#callOverlay .callBriefLocation b { color: #dbe8f5; font-size: 10px; line-height: 1.35; overflow-wrap: anywhere; }
#callOverlay .callBriefLocation label, #callOverlay .callOptionalFields label { color: #8293a7; font-size: 8px; font-weight: 800; letter-spacing: .05em; }
#callOverlay .callMapFocus { padding: 3px 5px; border: 1px solid #35506a; border-radius: 4px; background: #142638; color: #9ccfff; font-size: 8px; cursor: pointer; }
#callOverlay .callBriefLocation .input, #callOverlay .callOptionalFields .input { width: 100%; min-height: 30px; height: 30px; padding: 5px 7px; border-color: #2b4051; border-radius: 5px; background: #09131b; color: #e5eef7; font-size: 9px; }
#callOverlay .callBriefMeta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; margin-top: 8px; }
#callOverlay .callBriefMeta > div { display: grid; gap: 3px; min-width: 0; padding: 7px; border: 1px solid #1d2d3b; border-radius: 5px; background: #0a141c; }
#callOverlay .callBriefMeta b { color: #d5e1ed; font-size: 9px; overflow-wrap: anywhere; }
#callOverlay .callWaiting { display: grid; gap: 7px; margin-top: 8px; padding: 9px; border: 1px dashed #69404a; border-radius: 6px; background: #21171c; }
#callOverlay .callWaiting b { color: #ffd3d7; font-size: 10px; }
#callOverlay .callWaiting small { color: #b99ba1; font-size: 9px; line-height: 1.4; }
#callOverlay .callWaiting .btn { min-height: 34px; font-size: 10px; }
#callOverlay .callCenter { display: grid; grid-template-rows: 34px minmax(0, 1fr) auto auto; gap: 5px; padding: 8px; }
#callOverlay .callCenter .callSectionHead { margin: 0; }
#callOverlay .callConversation { min-height: 120px; padding: 8px; border: 1px solid #203344; border-radius: 6px; background: #09141e; }
#callOverlay .callBubble { margin-bottom: 7px; padding: 9px; border-color: #354454; border-radius: 6px; background: #142231; }
#callOverlay .callBubble.caller { border-color: #67404a; background: #211b20; }
#callOverlay .callBubble.dispatcher { border-color: #285b80; background: #102639; }
#callOverlay .callBubble p { margin: 5px 0 0; color: #e0e9f2; font-size: 11px; line-height: 1.55; }
#callOverlay .callQuestionBar { display: flex; flex-wrap: wrap; gap: 4px; }
#callOverlay .callQuestion { min-height: 28px; padding: 4px 7px; border: 1px solid #2a4155; border-radius: 5px; background: #112131; color: #a9c9e7; font-size: 8px; cursor: pointer; }
#callOverlay .callQuestion:hover:not(:disabled) { border-color: #438ed0; background: #17324a; }
#callOverlay .callQuestion:disabled { opacity: .42; cursor: default; }
#callOverlay .callComposer { display: grid; gap: 4px; padding: 0; border: 0; background: transparent; }
#callOverlay .callComposer label { color: #8293a7; font-size: 8px; font-weight: 800; letter-spacing: .07em; }
#callOverlay .callComposer > div { display: grid; grid-template-columns: minmax(0, 1fr) 68px 68px; gap: 5px; }
#callOverlay .callComposer textarea { min-height: 50px; resize: vertical; border-color: #2b4051; border-radius: 5px; background: #09131b; color: #e5eef7; font-size: 10px; }
#callOverlay .callComposer button { min-height: 50px; padding: 4px; border-radius: 5px; font-size: 9px; }
#callOverlay .callFactsGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; }
#callOverlay .callFact { display: flex; align-items: flex-start; gap: 6px; min-width: 0; min-height: 66px; padding: 7px; border: 1px solid #2b3e4d; border-radius: 6px; background: #111e29; }
#callOverlay .callFact > span { font-size: 14px; }
#callOverlay .callFact > div { display: grid; gap: 3px; min-width: 0; }
#callOverlay .callFact small { color: #91a4b7; font-size: 8px; font-weight: 800; line-height: 1.25; overflow-wrap: anywhere; }
#callOverlay .callFact b { color: #e2ebf4; font-size: 9px; line-height: 1.3; overflow-wrap: anywhere; }
#callOverlay .callFact em { color: #aebccc; font-size: 7px; font-style: normal; font-weight: 850; letter-spacing: .05em; }
#callOverlay .callFact.confirmed { border-color: #28694f; background: #10261f; }
#callOverlay .callFact.confirmed em { color: #57d59b; }
#callOverlay .callFact.suspected { border-color: #735c2f; background: #251f14; }
#callOverlay .callFact.suspected em { color: #f0c45c; }
#callOverlay .callFact.disproved { border-color: #673a40; background: #24171a; }
#callOverlay .callFact.disproved em { color: #f07e88; }
#callOverlay .callFactEmpty { grid-column: 1 / -1; padding: 10px; border: 1px dashed #31475b; border-radius: 5px; color: #92a3b5; font-size: 9px; line-height: 1.4; }
#callOverlay .callSuggestionHead { display: flex; justify-content: space-between; gap: 8px; margin: 10px 0 5px; color: #cad7e4; font-size: 8px; font-weight: 850; letter-spacing: .06em; }
#callOverlay .callSuggestionHead span { color: #6ca9e0; font-size: 7px; }
#callOverlay .callSuggestionList { display: grid; gap: 4px; }
#callOverlay .callSuggestion { display: grid; gap: 3px; width: 100%; min-height: 36px; padding: 6px 8px; border: 1px solid #294158; border-radius: 5px; background: #101f2d; color: #d8e5f1; text-align: left; cursor: pointer; }
#callOverlay .callSuggestion:hover { border-color: #418ed0; background: #173047; }
#callOverlay .callSuggestion.selected { border-color: #29875a; background: #10291e; }
#callOverlay .callSuggestion span { font-size: 9px; font-weight: 800; }
#callOverlay .callSuggestion small { color: #94a7ba; font-size: 7px; }
#callOverlay .callAllKeywords { width: 100%; min-height: 29px; margin-top: 5px; border: 1px solid #31506b; border-radius: 5px; background: #142537; color: #a9d5ff; font-size: 8px; cursor: pointer; }
#callOverlay .callOptionalFields { display: grid; gap: 4px; margin-top: 8px; }
#callOverlay .callVerification { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 5px; margin-top: 8px; padding-top: 8px; border-top: 1px solid #223345; }
#callOverlay .callVerification > span { display: grid; gap: 4px; color: #90a3b6; font-size: 8px; }
#callOverlay .callVerification > span i { width: 100%; height: 4px; border-radius: 5px; background: #233447; }
#callOverlay .callVerification > span em { display: block; height: 100%; border-radius: inherit; background: #20d88a; }
#callOverlay .callVerification > span b { font-size: 8px; }
#callOverlay .callVerification > .btn { min-height: 34px; padding: 5px 10px; font-size: 9px; }
#callOverlay .callVerification > small { grid-column: 1 / -1; color: #b3c2d0; font-size: 8px; }

@media (max-width: 900px) {
  #callOverlay .callWorkspace { grid-template-columns: minmax(0, 1fr); grid-template-rows: max-content minmax(420px, 55dvh) max-content; align-content: start; overflow: auto; }
  #callOverlay .callerBrief, #callOverlay .callFindings { min-height: auto; overflow: visible; }
  #callOverlay .callCenter { min-height: 360px; }
}

@media (max-width: 560px) {
  #callOverlay .callConsole { grid-template-rows: 64px minmax(0, 1fr); }
  #callOverlay .activeCallHead { min-height: 64px; padding: 5px 7px; }
  #callOverlay .callNumber { display: none; }
  #callOverlay .callHeaderAction { min-height: 28px; padding: 4px 6px; font-size: 8px; }
  #callOverlay .callWorkspace { gap: 6px; padding: 6px; }
  #callOverlay .callFactsGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #callOverlay .callQuestion { flex: 1 1 30%; }
  #callOverlay .callComposer > div { grid-template-columns: minmax(0, 1fr) 56px; }
  #callOverlay .callComposer > div .btn[type="submit"] { grid-column: 1 / -1; min-height: 36px; }
}

.adminGate, .adminConsole { position: fixed; inset: 0; display: grid; place-items: center; padding: 16px; color: #f1f5f9; }
.adminGate { z-index: 1600; background: rgba(3, 8, 13, .94); backdrop-filter: blur(10px); }
.adminConsole { z-index: 1500; background: rgba(3, 8, 13, .76); backdrop-filter: blur(8px); }
.adminGate[hidden], .adminConsole[hidden], .adminView[hidden] { display: none !important; }
.adminGateCard { display: grid; gap: 12px; width: min(390px, 100%); padding: 24px; border: 1px solid #294158; border-radius: 12px; background: #0e1821; box-shadow: 0 24px 90px #000c; }
.adminLock { display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid #31506b; border-radius: 10px; background: #122335; font-size: 20px; }
.adminGateCard h2 { margin: 0; font-size: 15px; letter-spacing: .06em; }
.adminGateCard label, .adminForm label, .adminEventToolbar label, .adminAddUnit label, .adminRelocate label, .adminTimeForm label { display: grid; gap: 5px; color: #a9b9c8; font-size: 10px; font-weight: 750; }
.adminGateCard input { width: 100%; min-height: 42px; padding: 8px 11px; border: 1px solid #34516a; border-radius: 6px; background: #08131c; color: #f1f5f9; font-size: 17px; letter-spacing: .22em; }
#adminPinError { margin: 0; color: #ff727f; font-size: 11px; }
.adminGateActions { display: flex; justify-content: flex-end; gap: 8px; }
.adminConsole { pointer-events: auto; }
.adminWindow { display: flex; flex-direction: column; width: min(1480px, 100%); height: min(900px, 94dvh); min-height: 0; overflow: hidden; border: 1px solid #294158; border-radius: 10px; background: #09131c; box-shadow: 0 26px 100px #000d; }
.adminHeader { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex: none; min-height: 64px; padding: 9px 14px; border-bottom: 1px solid #223345; background: #0e1821; }
.adminHeader small, .adminSectionHead small { color: #68aaf0; font-size: 8px; font-weight: 900; letter-spacing: .1em; }
.adminHeader h2 { margin: 2px 0 0; color: #eff6fc; font-size: 15px; }
.adminHeaderActions { display: flex; align-items: center; gap: 10px; }
.adminLocalBadge { padding: 4px 7px; border: 1px solid #705b32; border-radius: 5px; background: #241f15; color: #e6c472; font-size: 8px; font-weight: 850; letter-spacing: .04em; }
/* Die Zeile muss auf die Fensterhöhe begrenzt werden, sonst wächst sie mit
   dem Inhalt und der Hauptbereich kann nicht scrollen. */
.adminBody { display: grid; grid-template-columns: 160px minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); flex: 1; min-width: 0; min-height: 0; }
.adminTabs { display: flex; flex-direction: column; gap: 4px; min-height: 0; overflow-y: auto; padding: 10px 8px; border-right: 1px solid #223345; background: #0b151e; }
.adminTab { width: 100%; min-height: 34px; padding: 7px 8px; border: 1px solid transparent; border-radius: 5px; background: transparent; color: #a8b9c8; font-size: 9px; text-align: left; cursor: pointer; }
.adminTab:hover { background: #122335; color: #e5f1fc; }
.adminTab.active { border-color: #2d5d89; background: #15304a; color: #c6e4ff; }
.adminViews { min-width: 0; min-height: 0; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; padding: 16px; }
.adminView { display: block; max-width: 1160px; margin: 0 auto; }
.adminSectionHead { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.adminSectionHead h3 { margin: 2px 0 0; color: #edf5fc; font-size: 15px; }
.adminSectionHead h4 { margin: 2px 0 0; color: #dce8f3; font-size: 11px; }
.adminSectionHead.compact { margin: 0 0 8px; }
.adminQuickStarts { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; margin-bottom: 14px; }
.adminQuick { display: flex; align-items: center; gap: 7px; min-height: 34px; padding: 5px 7px; border: 1px solid #263b4c; border-radius: 5px; background: #101d28; color: #cfdeeb; font-size: 8px; text-align: left; cursor: pointer; }
.adminQuick:hover, .adminTemplate:hover, .adminEventButton:hover { border-color: #3889cf; background: #132a3e; }
.adminQuick span { font-size: 13px; }
/* Schnellaktion: Der Einsatz kann auch dann ausgelöst werden, wenn der lange Formularbereich weit nach unten reicht. */
.adminStickyAction {
  position: sticky;
  top: 0;
  z-index: 30;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: -2px 0 12px;
  padding: 8px 10px;
  border: 1px solid #31506a;
  border-radius: 7px;
  background: rgba(12,24,34,.96);
  box-shadow: 0 7px 20px rgba(0,0,0,.24);
  backdrop-filter: blur(8px);
}
.adminStickyAction span { color: #8fa5b8; font-size: 9px; }
.adminStickyAction .btn { min-height: 38px; padding: 8px 16px; font-weight: 850; white-space: nowrap; }
.adminForm { display: grid; gap: 11px; }
.adminFormGrid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; }
.adminForm .input, .adminEventToolbar .input, .adminAddUnit .input, .adminRelocate .input, .adminTimeForm .input { width: 100%; min-width: 0; min-height: 34px; height: 34px; padding: 6px 8px; border: 1px solid #2b4052; border-radius: 5px; background: #09131c; color: #e3edf6; font-size: 10px; }
.adminForm textarea.input { height: auto; min-height: 60px; resize: vertical; line-height: 1.4; }
.adminLocation { display: grid; gap: 8px; padding: 10px; border: 1px solid #223345; border-radius: 7px; background: #0c1822; }
.adminFormGrid.coordinates { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.adminOrganizations { display: flex; flex-wrap: wrap; gap: 6px; }
.adminCheck { display: inline-flex !important; align-items: center; gap: 6px !important; min-height: 28px; padding: 5px 8px; border: 1px solid #273d4e; border-radius: 5px; background: #101d28; color: #c9d8e5 !important; font-size: 9px !important; cursor: pointer; }
.adminCheck input { accent-color: #2388ff; }
.adminVehicleTypes { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 7px; }
.adminVehicleTypes fieldset { display: flex; flex-wrap: wrap; gap: 4px; min-width: 0; margin: 0; padding: 7px; border: 1px solid #223345; border-radius: 6px; }
.adminVehicleTypes legend { padding: 0 4px; color: #91a7ba; font-size: 8px; font-weight: 850; }
.adminVehicleTypes .adminCheck { min-height: 24px; padding: 3px 5px; font-size: 8px !important; }
/* Einsatz auslösen bleibt auch bei langen Formularen erreichbar.
   Der Inhaltsbereich scrollt, der Aktionsbereich haftet unten im Admin-Fenster. */
.adminFormFooter {
  position: sticky;
  bottom: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: 8px -16px -16px;
  padding: 12px 16px;
  border-top: 1px solid #31506a;
  background: linear-gradient(180deg, rgba(9,19,28,.78), #09131c 32%);
  box-shadow: 0 -10px 24px rgba(0,0,0,.28);
  backdrop-filter: blur(7px);
}
.adminFormFooter span { color: #8293a7; font-size: 9px; }
.adminFormFooter .btn { min-height: 40px; padding: 8px 16px; font-weight: 850; white-space: nowrap; }
.adminFormFooter .btn.primary { box-shadow: 0 0 0 1px rgba(35,136,255,.18), 0 5px 18px rgba(0,0,0,.22); }
.adminTemplateGrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
.adminTemplate { display: grid; gap: 5px; min-height: 54px; padding: 9px; border: 1px solid #263b4c; border-radius: 6px; background: #0f1c27; color: #dce8f3; text-align: left; cursor: pointer; }
.adminTemplate b { font-size: 10px; }
.adminTemplate small { color: #8499ac; font-size: 8px; }
.adminEventToolbar, .adminAddUnit, .adminRelocate, .adminTimeForm { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: end; gap: 8px; margin-bottom: 12px; }
.adminEventGrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
.adminEventButton { min-height: 42px; padding: 8px; border: 1px solid #263b4c; border-radius: 6px; background: #0f1c27; color: #d2e0ed; font-size: 9px; cursor: pointer; }
.adminActiveList, .adminLogList { display: grid; gap: 5px; margin-top: 12px; }
.adminStateRow, .adminLogEntry { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-width: 0; padding: 8px 10px; border: 1px solid #223345; border-radius: 5px; background: #0d1923; }
.adminStateRow > div { display: grid; gap: 3px; min-width: 0; }
.adminStateRow b { color: #dce8f3; font-size: 9px; }
.adminStateRow small, .adminStateRow > span { color: #879bad; font-size: 8px; }
.adminStateRow .btn { min-height: 27px; padding: 4px 7px; font-size: 8px; }
.adminPlaceholder { padding: 16px; border: 1px dashed #32475a; border-radius: 6px; color: #93a7b8; font-size: 10px; line-height: 1.5; }
.adminPlaceholder b { color: #dce8f3; }
.adminPlaceholder p { margin: 6px 0 0; }
.adminLogEntry { justify-content: flex-start; }
.adminLogEntry time { flex: 0 0 60px; color: #75b8f3; font-size: 8px; }
.adminLogEntry span { color: #c3d0dd; font-size: 9px; }
.adminMapPick { position: fixed; z-index: 1700; right: 16px; bottom: 16px; left: 16px; display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid #3a6f9e; border-radius: 7px; background: #0d1d2a; color: #d9eafa; box-shadow: 0 8px 35px #000b; pointer-events: auto; }
.adminMapPick span { flex: 1; color: #98afc3; font-size: 10px; }
.adminConsole.mapPicking { display: block; padding: 0; background: transparent; backdrop-filter: none; pointer-events: none; }
.adminConsole.mapPicking .adminWindow { display: none; }

@media (max-width: 760px) {
  .adminConsole, .adminGate { padding: 6px; }
  .adminWindow { width: 100%; height: 98dvh; border-radius: 7px; }
  .adminHeader { min-height: 56px; padding: 7px; }
  .adminHeaderActions { gap: 4px; }
  .adminLocalBadge { max-width: 110px; font-size: 6px; }
  .adminBody { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); }
  .adminTabs { flex-direction: row; min-height: 0; overflow-x: auto; overflow-y: hidden; padding: 5px; border-right: 0; border-bottom: 1px solid #223345; }
  .adminTab { flex: 0 0 auto; width: auto; min-height: 30px; white-space: nowrap; }
  .adminViews { padding: 9px; }
  .adminQuickStarts { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .adminFormGrid, .adminTemplateGrid, .adminEventGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .adminEventToolbar, .adminAddUnit, .adminRelocate, .adminTimeForm { grid-template-columns: minmax(0, 1fr); }
  .adminFormFooter { align-items: flex-start; flex-direction: column; }
  .adminMapPick { right: 6px; bottom: 6px; left: 6px; flex-wrap: wrap; }
}

#detail { display: grid; align-content: start; gap: 9px; padding: 9px; }
.incidentCardHead { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; padding-bottom: 8px; border-bottom: 1px solid #223345; }
.incidentIdentity { display: grid; gap: 4px; min-width: 0; }
.incidentIdentityMeta { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.incidentIdentityMeta > b { color: #aebfd0; font-size: 9px; }
.incidentIdentity h2 { margin: 0; color: #edf5fc; font-size: 12px; line-height: 1.35; }
.incidentLocation { color: #a1b4c5; font-size: 9px; line-height: 1.4; overflow-wrap: anywhere; }
.incidentTimer { display: grid; justify-items: end; gap: 3px; flex: 0 0 auto; padding: 5px 7px; border: 1px solid #2a4052; border-radius: 5px; background: #101d28; }
.incidentTimer small { color: #8195a7; font-size: 7px; font-weight: 850; letter-spacing: .07em; }
.incidentTimer b { color: #dce9f5; font-size: 10px; font-variant-numeric: tabular-nums; }
.incidentSituation { display: grid; gap: 5px; padding: 8px; border-left: 2px solid #f5b82e; border-radius: 0 5px 5px 0; background: #171e21; }
.incidentSituation small { color: #e2bd62; font-size: 7px; font-weight: 900; letter-spacing: .1em; }
.incidentSituation p { margin: 0; color: #d6e1eb; font-size: 9px; line-height: 1.45; }
.incidentSituation > span { color: #8598aa; font-size: 8px; }
.incidentActions { display: grid; gap: 5px; }
.incidentActionGroup { display: grid; gap: 5px; padding: 7px 0; border-top: 1px solid #223345; }
.incidentActionGroup h3 { margin: 0; color: #8499ac; font-size: 7px; font-weight: 900; letter-spacing: .1em; }
.incidentActionButtons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; }
.incidentActionButtons .btn { min-width: 0; min-height: 31px; padding: 5px 6px; border-radius: 5px; font-size: 8px; line-height: 1.25; white-space: normal; }
.incidentActionButtons #btnBackup { grid-column: 1 / -1; }
.incidentActionGroup > small { color: #8293a7; font-size: 7px; line-height: 1.4; }
.incidentActionGroup .quickClose { margin: 0; padding: 0; border: 0; background: transparent; box-shadow: none; }
.incidentActionGroup .quickClose small { color: #8293a7; font-size: 7px; }
.incidentActionGroup .quickClose .btn { min-height: 30px; font-size: 8px; }
.assignedCrew { display: grid; gap: 5px; }
.assignedUnit { min-height: 40px; padding: 5px 7px; border-radius: 5px; }
.assignedVehicle { font-size: 15px; }
.assignedUnitName b { color: #e2edf7; font-size: 9px; }
.assignedUnitName small { color: #96aabe; font-size: 8px; line-height: 1.35; }
.info > div { padding: 7px 8px; border-radius: 5px; }
.info > div:not(:first-child) { line-height: 1.4; font-size: 9px; }

@media (max-width: 720px) {
  #detail { gap: 8px; padding: 8px; }
  .incidentIdentity h2 { font-size: 13px; }
  .incidentActionButtons .btn { min-height: 36px; font-size: 9px; }
}
#keywordPicker { z-index: 1150; }

/* =========================================================
   Funk-Arbeitsplatz – FMS + Live-Einheiten
   Der Übersichtsfunk erhält bewusst eine eigene, kompakte
   Arbeitsfläche. Die Live-Einheiten dürfen niemals unterhalb
   des sichtbaren Bereichs verschwinden.
   ========================================================= */
.radio-panel { min-height: 0; overflow: hidden; }
.radioPageHead { flex: 0 0 auto; min-height: 52px; gap: 10px; }
.radioPageSub { display:block; margin-top:2px; color:#6f91aa; font-size:9px; font-weight:600; }
.radioPageActions { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:5px; }
.radioFilter { min-height:29px; padding:5px 9px; border:1px solid #2a4255; border-radius:6px; background:#101d29; color:#a9bed0; font-size:9px; cursor:pointer; }
.radioFilter:hover { border-color:#438bc8; color:#e8f3fc; }
.radioFilter.active { border-color:#388ee0; background:#15385a; color:#e8f4ff; }
.radioPageBody { display:grid; grid-template-columns:minmax(0,1.65fr) minmax(250px,.75fr); gap:8px; flex:1 1 auto; min-height:0; overflow:hidden; padding:8px 10px 10px; }
.radioMainColumn,.radioFmsColumn { display:flex; flex-direction:column; min-width:0; min-height:0; }
.radioMainStatus { flex:0 0 auto; display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:38px; padding:6px 9px; border:1px solid #22384a; border-radius:7px 7px 0 0; background:#0e1a24; }
.radioMainStatus b { display:block; font-size:10px; color:#e3eef7; }
.radioMainStatus small { display:block; margin-top:2px; color:#718da3; font-size:8px; }
.radioMainLog { flex:1 1 auto !important; min-height:0 !important; max-height:none !important; border:1px solid #22384a; border-top:0; border-radius:0 0 7px 7px; padding:7px !important; }
.radioFmsColumn { gap:7px; overflow:hidden; }
.radioInfoCard { display:flex; flex-direction:column; min-width:0; min-height:0; border:1px solid #22384a; border-radius:7px; background:#0d1923; overflow:hidden; }
.radioFmsCard { flex:0 0 auto; }
.radioLiveUnits { flex:1 1 0; min-height:105px; }
.radioInfoHead { display:flex; align-items:center; justify-content:space-between; gap:7px; min-height:35px; padding:6px 8px; border-bottom:1px solid #203546; background:#101d28; }
.radioInfoHead b { display:block; color:#dcebf6; font-size:9px; }
.radioInfoHead span { color:#72b8f4; font-size:9px; font-weight:800; }
.radioCardHint { display:block; margin-top:2px; color:#6e899f; font-size:7px; font-weight:600; }
.fmsLegendGrid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:4px; padding:6px; }
.fmsCode { display:flex; align-items:center; gap:5px; min-width:0; min-height:28px; padding:4px 5px; border:1px solid #263e51; border-radius:5px; background:#0a151e; color:#a9bfd0; text-align:left; cursor:pointer; }
.fmsCode:hover { border-color:#438bc8; background:#12283a; }
.fmsCode.active { border-color:#3d9bf0; background:#143452; color:#eef8ff; box-shadow:inset 0 0 0 1px rgba(61,155,240,.16); }
.fmsCodeNum { flex:0 0 20px; display:grid; place-items:center; height:20px; border-radius:4px; background:#172b3b; color:#83c7ff; font-size:9px; font-weight:900; }
.fmsCodeText { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:7px; line-height:1.2; }
.radioLiveUnitList { flex:1 1 auto; min-height:0; overflow-y:auto; overflow-x:hidden; padding:6px; display:grid; align-content:start; gap:5px; }
.radioLiveUnit { display:grid; grid-template-columns:25px minmax(0,1fr) auto; align-items:center; gap:6px; min-height:42px; padding:5px 6px; border:1px solid #263d4e; border-radius:6px; background:#101d28; }
.radioLiveUnit .unitIcon { font-size:16px; text-align:center; }
.radioLiveUnit .unitCopy { min-width:0; }
.radioLiveUnit .unitCopy b { display:block; color:#e5f0f8; font-size:8px; }
.radioLiveUnit .unitCopy small { display:block; margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#7792a8; font-size:7px; }
.radioLiveUnit .unitFms { padding:3px 5px; border:1px solid #31506a; border-radius:5px; color:#8ccaff; font-size:7px; font-weight:850; white-space:nowrap; }
.radioLiveUnit.free .unitFms { border-color:#245c48; color:#72dfaa; }
.radioLiveUnit.busy .unitFms { border-color:#715b2d; color:#efc96e; }
.radioLiveUnit.at .unitFms { border-color:#30629a; color:#79baff; }
.radioLiveUnit.hiddenByFilter { display:none; }

/* Im Übersichtslayout bekommt der Funkbereich genug Höhe, damit
   FMS UND Live-Einheiten gleichzeitig sichtbar bleiben. */
#viewDispatch.view.grid { grid-template-rows:minmax(0,1fr) minmax(320px,360px); }

@media (max-width:1350px) and (min-width:721px) {
  #viewDispatch.view.grid { grid-template-rows:minmax(0,1fr) minmax(320px,360px); }
  .radioPageBody { grid-template-columns:minmax(0,1.45fr) minmax(235px,.75fr); }
}

@media (max-width:720px) {
  .radioPageHead { align-items:flex-start; flex-direction:column; }
  .radioPageActions { width:100%; justify-content:flex-start; }
  .radioPageBody { grid-template-columns:1fr; grid-template-rows:minmax(220px,1fr) minmax(230px,auto); overflow:auto; }
  .radioFmsColumn { overflow:visible; }
  .radioLiveUnits { min-height:210px; }
  .fmsLegendGrid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}


.voiceOutputRow{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:8px}
.voiceOutputRow .lbl{margin-top:0}
.voiceTtsHint{margin-top:7px;font-size:12px;line-height:1.4;opacity:.72}
@media (max-width:760px){.voiceOutputRow{grid-template-columns:1fr}}

.aiVoiceBox{margin-top:10px;padding:10px 12px;border:1px solid rgba(120,150,190,.22);border-radius:10px;background:rgba(20,28,40,.55)}
.aiVoiceHeader{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px}
.aiVoiceGrid{display:grid;grid-template-columns:1fr 1.7fr 1fr;gap:8px}
.aiVoiceGrid .lbl{margin-top:0}
@media (max-width:760px){.aiVoiceGrid{grid-template-columns:1fr}.aiVoiceHeader{align-items:flex-start;flex-direction:column}}

/* =========================================================
   DISPATCH COMMAND – Leitstellen-Layout v4
   Visuelle Referenz: Leitstelle Emden / Einsatzübersicht
   Funktionale Struktur bleibt unverändert.
   ========================================================= */
#app:not([hidden]){background:#071019;color:#e9f2fa}
#app .side{width:190px;min-width:190px;padding:82px 9px 10px;background:linear-gradient(180deg,#0a141e 0%,#08111a 100%);border-right:1px solid #20303d;z-index:40}
#app .brand{padding:8px 9px 16px;border-bottom:1px solid #1e2d3a;margin-bottom:8px}
#app .brand-icon{width:34px;height:34px;border-radius:7px;background:linear-gradient(145deg,#b9333d,#74212a);display:grid;place-items:center;box-shadow:inset 0 0 0 1px #e45d65;color:#fff;font-size:17px}
#app .brand-copy span{font-size:9px;letter-spacing:.16em;color:#a8bac9}
#app .brand-copy strong{font-size:18px;color:#f3f7fb;letter-spacing:.08em}
#app .brand-copy .shift-label{font-size:8px;color:#6f8395}
#app .navbox{gap:3px;padding:5px 0}
#app .nav{min-height:42px;padding:8px 10px;border:1px solid transparent;border-radius:6px;background:transparent;color:#9eb1c2}
#app .nav .ico{width:20px;font-size:16px;text-align:center}
#app .nav .lbl{font-size:11px;font-weight:650}
#app .nav:hover{background:#111f2c;color:#dce8f2}
#app .nav.active{background:linear-gradient(90deg,#0866d8,#0b5bbd);border-color:#1b84f3;color:#fff;box-shadow:0 6px 18px #006dff22}
#app .side-foot{padding:10px 5px 0;border-top:1px solid #1d2c38}
#app .operator{font-size:9px;color:#718598}
#app .side-end-shift{font-size:9px;border-radius:5px}

#app .main-shell{position:relative;display:block;height:100dvh;min-height:0;overflow:hidden;padding-top:72px;background:#071019}
#app .topbar{position:fixed;left:0;right:0;top:0;height:72px;min-height:72px;z-index:100;display:grid;grid-template-columns:285px minmax(420px,1fr) auto;align-items:stretch;gap:0;padding:0;border-bottom:1px solid #1e3443;background:#09131d;box-shadow:0 10px 30px #0005}
#app .topbar-left{display:flex;align-items:center;padding:8px 18px;border-right:1px solid #1b2d3b}
#app .topbar-left .hamb{display:none}
#app .brand-mini{gap:12px}
#app .brand-mini-icon{width:44px;height:44px;border-radius:7px;background:linear-gradient(145deg,#a72c37,#691d25);display:grid;place-items:center;border:1px solid #dc5b62;font-size:22px}
#app .brand-mini strong{font-size:17px;letter-spacing:.08em;color:#f4f7fb}
#app .brand-mini span{font-size:12px;color:#93a7b7;letter-spacing:.08em}
#app .topbar-center{display:flex;align-items:stretch;justify-content:flex-start;gap:0;flex-wrap:nowrap;overflow:hidden}
#app .header-metric{min-width:150px;height:72px;border:0;border-right:1px solid #1b2d3b;border-radius:0;background:transparent;padding:13px 18px;display:flex;flex-direction:column;justify-content:center;gap:2px}
#app .header-metric .metric-label{font-size:9px;color:#718697;letter-spacing:.09em;text-transform:none}
#app .header-metric strong{font-size:16px;color:#eaf3fb}
#app .timer-box strong{font-size:18px}
#app .weather-box{min-width:175px}
#app .weather-box strong{font-size:17px}
#app .weather-box small{font-size:10px;color:#91a5b5}
#app .traffic-box{min-width:150px}
#app .traffic-box strong{color:#74df98;font-size:12px}
#app .topbar-right{display:flex;align-items:stretch;gap:0;overflow:hidden}
#app .header-stat{min-width:115px;height:72px;border:0;border-left:1px solid #1b2d3b;border-radius:0;background:transparent;padding:12px 14px;display:flex;flex-direction:column;justify-content:center;text-align:left}
#app .header-stat span{font-size:9px;color:#8297a8;letter-spacing:.03em;text-transform:none}
#app .header-stat strong{font-size:17px;color:#f1f6fb}
#app .phase-stat strong{color:#f2b946}.score-stat{display:none}
#app .icon-btn{width:58px;height:72px;border:0;border-left:1px solid #1b2d3b;border-radius:0;background:transparent;font-size:20px;color:#a5b8c8}

#app .content{height:calc(100dvh - 72px);padding:14px 14px 12px;grid-template-rows:78px minmax(0,1fr);gap:12px;background:#071019}
#app .stats{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;height:78px}
#app .stat{min-height:78px;padding:11px 16px;border-radius:8px;background:#0c1822;border:1px solid #243846;box-shadow:none}
#app .stat-alert{border-color:#d83947;background:linear-gradient(135deg,#28171c,#0d1821)}
#app .stat-blue{border-color:#1d78d2;background:linear-gradient(135deg,#0b263d,#0b1822)}
#app .stat-green{border-color:#1ebc83;background:linear-gradient(135deg,#092e26,#0b1b21)}
#app .stat-gold{border-color:#526579;background:linear-gradient(135deg,#14202c,#0b1821)}
#app .stat-amber{border-color:#b98416;background:linear-gradient(135deg,#2b2110,#0d1821)}
#app .stat-icon{width:42px;height:42px;background:transparent;font-size:25px}
#app .stat-copy strong{font-size:28px}.stat-copy span{font-size:9px;letter-spacing:.09em}

#viewDispatch.view.grid{grid-template-columns:minmax(330px,1.05fr) minmax(0,2.25fr) minmax(330px,1fr);grid-template-rows:minmax(0,1.55fr) minmax(255px,1fr);grid-template-areas:"map map active" "calls radio units";gap:12px}
#viewDispatch > .panel,#viewDispatch > .side-stack > .panel{border-radius:8px;border-color:#243846;background:#0a151f;box-shadow:none}
#viewDispatch .ph{min-height:40px;padding:9px 12px;background:#0b1721;border-bottom:1px solid #1d3040}
#viewDispatch .ph b{font-size:10px;color:#c8d7e4;letter-spacing:.1em}
#viewDispatch .badge{border-radius:5px;background:#112131;border-color:#2a4255}
#viewDispatch .map-panel{overflow:hidden}
#viewDispatch .mapWrap{border-radius:0 0 8px 8px;overflow:hidden}
#viewDispatch #map{border-radius:0;min-height:0;background:#0a1520}
#viewDispatch .legend{left:10px;bottom:10px;background:#0a141de8;border-color:#2c4152;border-radius:6px}
#viewDispatch .call-panel .body{padding:10px}
#viewDispatch .side-stack{gap:12px}
#viewDispatch .side-stack > .panel:first-child{border-left:2px solid #d93645}
#viewDispatch .side-stack > .panel:last-child{border-left:2px solid #2d82e4}
#viewDispatch .radio-panel{border-top:1px solid #294354}
#viewDispatch .radioPageHead{min-height:48px;background:#0b1721}
#viewDispatch .radioPageSub{font-size:9px;color:#728899}
#viewDispatch .radioPageActions{gap:4px}
#viewDispatch .radioFilter{min-height:28px;padding:4px 9px;font-size:9px;border-radius:5px;background:#101f2c}
#viewDispatch .radioFilter.active{background:#0c66d7;border-color:#2185f2}
#viewDispatch .radioMainLog{background:#08121a}
#viewDispatch .logLine{border-left-width:3px;background:#0d1a25;border-color:#2d83e8;border-radius:6px;padding:7px 9px}
#viewDispatch .radioFmsColumn{background:#09131c}

/* Call/fact cards: compact control-room appearance */
#app .call,.callCard,.callItem,.incomingCall{border-radius:6px!important;border-color:#2b4354!important;background:#0e1b26!important}
#app .callFact{border-radius:6px!important;background:#0d1a24!important}
#app .callFact.confirmed{background:#0a2921!important;border-color:#23855e!important}
#app .callFact.suspected{background:#292313!important;border-color:#856728!important}
#app .callFact.unclear{background:#0e1b26!important;border-color:#294051!important}

@media (max-width:1250px){
  #app .topbar{grid-template-columns:235px minmax(360px,1fr) auto}
  #app .header-stat{min-width:85px;padding:10px}
  #viewDispatch.view.grid{grid-template-columns:minmax(250px,1fr) minmax(0,2fr) minmax(260px,1fr)}
}
@media (max-width:900px){
  #app .side{width:72px;min-width:72px;padding-top:82px}
  #app .brand-copy{display:none}.side-foot .operator{display:none}
  #app .topbar{grid-template-columns:76px 1fr auto}
  #app .topbar-left{padding:8px;justify-content:center}.brand-mini{display:none}.topbar-left .hamb{display:grid}
  #app .header-metric{min-width:110px;padding:10px}
  #app .header-stat{min-width:72px}.header-stat span{font-size:8px}
  #app .content{padding:10px}
  #viewDispatch.view.grid{grid-template-columns:minmax(0,1fr) minmax(260px,.9fr);grid-template-rows:minmax(330px,1fr) minmax(210px,.8fr) minmax(210px,.8fr);grid-template-areas:"map active" "calls units" "radio radio"}
}
@media (max-width:720px){
  #app .side{display:none}.main-shell{padding-top:58px!important}
  #app .topbar{height:58px;min-height:58px;grid-template-columns:58px 1fr auto}
  #app .header-metric{display:none}.topbar-right .header-stat{display:none}.topbar-right .icon-btn{height:58px;width:48px}
  #app .topbar-left{height:58px}.brand-mini-icon{width:36px;height:36px}
  #app .content{height:calc(100dvh - 58px);grid-template-rows:auto minmax(0,1fr);padding:8px}
  #app .stats{grid-template-columns:repeat(2,1fr);height:auto}.stat{min-height:62px}
  #viewDispatch.view.grid{grid-template-columns:1fr;grid-template-rows:340px 250px 250px 360px;grid-template-areas:"map" "active" "calls" "radio"}
  #viewDispatch > .side-stack > .panel:last-child{display:none}
}
#viewDispatch #map .leaflet-tile-pane{filter:brightness(.62) saturate(.82) contrast(1.08)}
#viewDispatch #map .leaflet-control-zoom a{background:#0c1822;color:#d8e5ef;border-color:#2b4152}
#viewDispatch #map .leaflet-control-attribution{background:#071019c9!important;color:#8296a7!important}
#viewDispatch #map .leaflet-control-attribution a{color:#8eb8e5!important}

/* =========================================================
   DISPATCH COMMAND – Setup Screen Redesign
   Full-screen control-room style configuration
   ========================================================= */
#setupOverlay.setupScreen{
  position:fixed;inset:0;z-index:1200;display:block;overflow:auto;padding:0;
  color:#edf5fb;background:#050b12;
}
#setupOverlay.setupScreen[hidden]{display:none!important}
.setupAtmosphere{position:fixed;inset:0;overflow:hidden;pointer-events:none;background:
  radial-gradient(circle at 78% 18%,rgba(44,112,191,.16),transparent 30%),
  radial-gradient(circle at 18% 78%,rgba(28,160,139,.10),transparent 28%),
  linear-gradient(135deg,#050b12 0%,#07131d 52%,#061018 100%)}
.setupGrid{position:absolute;inset:-20%;opacity:.23;background-image:
  linear-gradient(rgba(95,142,178,.12) 1px,transparent 1px),
  linear-gradient(90deg,rgba(95,142,178,.12) 1px,transparent 1px);
  background-size:48px 48px;transform:perspective(700px) rotateX(62deg) translateY(18%);transform-origin:center bottom}
.setupRadar{position:absolute;width:min(72vw,900px);height:min(72vw,900px);right:-18%;top:-25%;border-radius:50%;border:1px solid rgba(81,166,218,.12);box-shadow:0 0 0 80px rgba(81,166,218,.018),0 0 0 160px rgba(81,166,218,.014),0 0 120px rgba(55,144,208,.10)}
.setupRadar:before,.setupRadar:after{content:"";position:absolute;inset:14%;border:1px solid rgba(81,166,218,.09);border-radius:50%}.setupRadar:after{inset:35%}
.setupGlow{position:absolute;border-radius:50%;filter:blur(70px);opacity:.5}.setupGlowA{width:360px;height:360px;left:-160px;bottom:-120px;background:rgba(23,115,153,.17)}.setupGlowB{width:280px;height:280px;right:24%;bottom:8%;background:rgba(38,96,174,.13)}
.setupSignal{position:absolute;right:28px;bottom:26px;display:flex;gap:5px;align-items:end;opacity:.35}.setupSignal span{display:block;width:3px;border-radius:3px;background:#55b8e9}.setupSignal span:nth-child(1){height:8px}.setupSignal span:nth-child(2){height:14px}.setupSignal span:nth-child(3){height:22px}
.setupShell{position:relative;z-index:2;min-height:100dvh;width:100%;padding:18px clamp(18px,3vw,48px) 30px;box-sizing:border-box}
.setupTopbar{height:58px;display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1500px;margin:0 auto 18px;padding:0 4px}
.setupBrand{display:flex;align-items:center;gap:12px}.setupBrandIcon{width:40px;height:40px;display:grid;place-items:center;border-radius:11px;background:linear-gradient(145deg,#b73545,#63222c);border:1px solid rgba(255,111,122,.45);box-shadow:0 10px 35px rgba(0,0,0,.3)}.setupBrand strong{display:block;font-size:15px;letter-spacing:.12em}.setupBrand span{display:block;margin-top:3px;color:#7790a5;font-size:10px;letter-spacing:.04em}
.setupSystem{display:flex;align-items:center;gap:8px;color:#7791a7;font-size:10px}.setupSystem b{color:#b9d3df;font-size:9px;letter-spacing:.08em}.onlineDot{width:7px;height:7px;border-radius:50%;background:#43d39c;box-shadow:0 0 0 4px rgba(67,211,156,.08),0 0 16px rgba(67,211,156,.4)}
.setupWorkspace{max-width:1500px;margin:0 auto;display:grid;grid-template-columns:minmax(300px,.72fr) minmax(620px,1.55fr);gap:22px;align-items:start}
.setupWelcome{padding:36px 14px 20px 4px;min-width:0}.setupWelcome .eyebrow,.sectionKicker{color:#5da9df;font-size:9px;font-weight:900;letter-spacing:.18em}.setupWelcome h1{margin:10px 0 12px;font-size:clamp(34px,4vw,58px);line-height:1.02;letter-spacing:-.04em}.setupWelcome h1 span{color:#76b9ed}.setupWelcome>p{max-width:520px;color:#849bad;font-size:13px;line-height:1.65;margin:0 0 22px}
.setupPreviewCard{border:1px solid rgba(92,139,174,.22);border-radius:18px;background:linear-gradient(180deg,rgba(16,28,40,.82),rgba(7,16,25,.88));box-shadow:0 24px 70px rgba(0,0,0,.28);overflow:hidden}.previewTop{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid rgba(83,124,153,.14);color:#8ba2b4;font-size:9px;letter-spacing:.08em}.livePill{display:inline-flex;align-items:center;gap:6px;color:#71d8ae}.livePill i{width:6px;height:6px;border-radius:50%;background:#43d39c;box-shadow:0 0 12px #43d39c}.miniMap{height:190px;position:relative;overflow:hidden;background:
  linear-gradient(27deg,transparent 45%,rgba(83,145,181,.11) 46%,rgba(83,145,181,.11) 47%,transparent 48%),
  linear-gradient(122deg,transparent 42%,rgba(83,145,181,.09) 43%,rgba(83,145,181,.09) 44%,transparent 45%),
  linear-gradient(rgba(71,113,141,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(71,113,141,.06) 1px,transparent 1px);background-size:auto,auto,28px 28px,28px 28px}.miniMap:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 55% 45%,transparent 0,rgba(5,12,19,.08) 42%,rgba(5,12,19,.55) 100%)}.road{position:absolute;height:3px;border-radius:8px;background:rgba(126,173,202,.22);transform-origin:left center;box-shadow:0 0 12px rgba(72,144,190,.1)}.roadA{width:95%;left:-5%;top:58%;transform:rotate(-13deg)}.roadB{width:80%;left:15%;top:20%;transform:rotate(38deg)}.roadC{width:65%;left:32%;top:74%;transform:rotate(-58deg)}.mapPoint{position:absolute;z-index:2;width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:rgba(11,24,35,.92);border:1px solid rgba(98,160,197,.35);font-size:13px;box-shadow:0 7px 18px rgba(0,0,0,.25)}.mp1{left:18%;top:35%}.mp2{left:53%;top:48%}.mp3{right:18%;top:26%}.mp4{right:32%;bottom:18%;color:#ff6774}.district{position:absolute;z-index:1;color:#668196;font-size:8px;text-transform:uppercase;letter-spacing:.08em}.d1{left:10%;top:12%}.d2{right:10%;bottom:12%}.d3{left:42%;bottom:22%}.previewStats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid rgba(83,124,153,.14)}.previewStats div{padding:10px 12px;border-right:1px solid rgba(83,124,153,.12)}.previewStats div:last-child{border-right:0}.previewStats b{display:block;font-size:12px;color:#dce9f2}.previewStats span{display:block;margin-top:3px;color:#71879a;font-size:8px}
.setupFeatures{display:grid;gap:9px;margin-top:18px}.setupFeatures div{padding:10px 12px;border-left:2px solid rgba(82,166,216,.4);background:rgba(13,26,38,.45);border-radius:0 9px 9px 0}.setupFeatures b{display:block;font-size:10px;color:#d7e6ef}.setupFeatures span{display:block;margin-top:3px;color:#6f8799;font-size:8px;line-height:1.4}
.setupConfig.card.setup{width:auto;max-width:none;max-height:none;height:auto;min-height:calc(100dvh - 96px);padding:22px;overflow:visible;box-sizing:border-box;border:1px solid rgba(91,137,171,.26);border-radius:20px;background:rgba(10,19,29,.84);backdrop-filter:blur(18px);box-shadow:0 28px 100px rgba(0,0,0,.42)}
.setupConfigHead{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;padding:0 0 18px;border-bottom:1px solid rgba(83,124,153,.14)}.setupConfigHead h2{margin:5px 0 5px;font-size:24px;letter-spacing:-.025em}.setupConfigHead p{margin:0;color:#71889b;font-size:10px}.setupStep{display:grid;place-items:center;width:52px;height:52px;border:1px solid rgba(83,146,191,.28);border-radius:13px;background:rgba(28,67,95,.18)}.setupStep span{font-size:17px;font-weight:900;color:#70b9e8}.setupStep small{font-size:7px;letter-spacing:.12em;color:#60798d}
.configSection{padding:17px 0;border-bottom:1px solid rgba(83,124,153,.12)}.configSection:last-of-type{border-bottom:0}.sectionTitle{display:flex;align-items:center;gap:10px;margin-bottom:11px}.sectionIcon{width:32px;height:32px;display:grid;place-items:center;border:1px solid rgba(84,140,180,.22);border-radius:9px;background:rgba(25,49,67,.45);font-size:14px}.sectionTitle b{display:block;font-size:12px}.sectionTitle small{display:block;margin-top:3px;color:#687f92;font-size:8px}.lbl{font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:#71899d}.lbl .input{margin-top:5px;text-transform:none;letter-spacing:0}.cityStartRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.startBtnLarge{min-width:150px;display:flex;justify-content:space-between;align-items:center;gap:14px}.startBtnLarge b{font-size:17px}.twoConfigGrid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.setupShiftMode{margin:0;padding:10px 12px;border:1px solid rgba(83,124,153,.2);border-radius:10px;background:rgba(17,30,43,.6);display:flex;align-items:center}.setupShiftMode label{display:flex;align-items:flex-start;gap:8px;cursor:pointer}.setupShiftMode label>span{display:grid;gap:3px}.setupShiftMode b{font-size:10px}.setupShiftMode small{color:#6d8496;font-size:8px;line-height:1.4}
.voiceConfig{display:grid;gap:10px}.subSection{padding:11px;border:1px solid rgba(83,124,153,.15);border-radius:12px;background:rgba(12,24,35,.5)}.subTitle{margin-bottom:8px;color:#aac2d1;font-size:9px;font-weight:800;letter-spacing:.08em}.voiceDeviceRow{display:grid;grid-template-columns:1fr auto;gap:7px}.voiceMeterRow{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;margin-top:7px;color:#60798c;font-size:8px}.voiceMeterRow meter{width:100%;height:7px}.voiceTestActions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:7px}.fine{color:#62798b;font-size:8px;line-height:1.45}.voiceTtsSettings{display:grid;grid-template-columns:1fr 1.25fr;gap:8px}.voiceOutputRow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:0}.voiceOutputRow .lbl{margin-top:0}.voiceTtsHint{margin-top:7px;color:#6d8597;font-size:8px;line-height:1.4}.setupVoiceCheck{margin-top:8px;padding:9px 11px;border-radius:9px;background:rgba(20,57,54,.25);border:1px solid rgba(63,177,141,.18);color:#72c9a9;font-size:8px}
.aiVoiceBox{margin:0;padding:12px;border:1px solid rgba(83,124,153,.15);border-radius:12px;background:rgba(12,24,35,.5)}.aiVoiceHeader{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px}.aiVoiceGrid{display:grid;grid-template-columns:.85fr 1.35fr .9fr;gap:8px}.aiVoiceGrid .lbl{margin-top:0}.toggleLabel{margin-left:auto;display:flex;align-items:center;gap:6px;color:#8ca6b8;font-size:8px;text-transform:uppercase;letter-spacing:.08em;cursor:pointer}.toggleLabel input{accent-color:#4fa9df}.aiModelCards{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:8px}.aiModelCards div{padding:8px 10px;border-radius:9px;background:rgba(20,38,53,.55);border:1px solid rgba(83,124,153,.13)}.aiModelCards b{display:block;color:#c8dce8;font-size:9px}.aiModelCards span{display:block;color:#61798c;font-size:7px;margin-top:3px}
.diffs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:0}.diff{min-height:68px;padding:10px 11px;border-radius:11px;background:rgba(17,31,44,.7);border:1px solid rgba(83,124,153,.18)}.diff.active{border-color:#4d9fd6;background:rgba(28,71,103,.34);box-shadow:inset 0 0 0 1px rgba(90,170,221,.08)}.diff b{font-size:10px}.diff small{font-size:8px;line-height:1.4}
.setupBottom{padding-top:15px}.setupBottom .hint{font-size:9px;padding:9px 11px;border-radius:9px;background:rgba(20,37,52,.55);border:1px solid rgba(83,124,153,.14)}.setupNotes{display:flex;gap:8px;flex-wrap:wrap;margin:9px 0}.setupNotes span{padding:5px 8px;border-radius:999px;background:rgba(22,39,53,.55);border:1px solid rgba(83,124,153,.12);color:#688095;font-size:7px}
@media (max-width:1050px){.setupWorkspace{grid-template-columns:1fr}.setupWelcome{padding:12px 0 0}.setupPreviewCard{display:none}.setupFeatures{grid-template-columns:repeat(3,1fr)}.setupConfig.card.setup{min-height:auto}.setupTopbar{margin-bottom:8px}}
@media (max-width:760px){.setupShell{padding:10px}.setupTopbar{height:auto;align-items:flex-start}.setupSystem span:last-child{display:none}.setupWelcome{padding-top:8px}.setupWelcome h1{font-size:36px}.setupWelcome>p{font-size:11px}.setupFeatures{grid-template-columns:1fr}.setupConfig.card.setup{padding:15px;border-radius:15px}.cityStartRow,.twoConfigGrid,.voiceTtsSettings,.aiVoiceGrid,.voiceOutputRow,.aiModelCards{grid-template-columns:1fr}.startBtnLarge{width:100%}.setupConfigHead{gap:10px}.setupStep{width:44px;height:44px}.diffs{grid-template-columns:1fr}.setupBrand strong{font-size:12px}.setupBrand span{font-size:8px}}


/* ================================================================
   v4.19 — EIN-BILDSCHIRM-LEITSTELLENARBEITSPLATZ
   Inspired by professional dispatch ergonomics, but original UI.
   ================================================================ */
@media (min-width: 1100px) {
  html, body { overflow: hidden; }
  body { background: #071019; }
  .app { display: block; min-height: 100vh; height: 100vh; }
  .side {
    position: fixed; inset: 0 0 auto 0; z-index: 1200;
    height: 52px; min-height: 52px; width: 100%; padding: 0 12px;
    display: flex; flex-direction: row; align-items: center; gap: 8px;
    background: #0b141d; border-right: 0; border-bottom: 1px solid #25394b;
    box-shadow: 0 5px 18px rgba(0,0,0,.28);
  }
  .brand { flex: 0 0 170px; padding: 0 8px; border-right: 1px solid #263b4b; height: 34px; display:flex; align-items:center; gap:8px; }
  .brand-copy strong { font-size: 11px; }
  .brand-copy span { font-size: 9px; color:#7f95a8; }
  .brand-copy small { display:none; }
  .brand-icon { font-size: 18px; }
  .navbox { display:flex; align-items:center; gap:3px; flex:1; overflow:hidden; }
  .nav { min-height: 36px; height:36px; padding: 6px 10px; border-radius:6px; gap:6px; white-space:nowrap; font-size:11px; }
  .nav .ico { font-size:13px; }
  .nav .lbl { font-size:11px; }
  .nav.active { background:#12314a; border-color:#1d527b; box-shadow: inset 0 -2px 0 #36a8ff; }
  .navUnread { margin-left:auto; }
  .side-foot { display:flex; align-items:center; gap:8px; padding:0 0 0 8px; border:0; }
  .side-foot .operator, .side-foot .phaseDot { display:none; }
  .side-end-shift { margin:0; min-height:32px; padding:6px 9px; font-size:10px; }
  .main-shell { height:100vh; grid-template-rows: 48px minmax(0,1fr); padding-top:52px; }
  .topbar { height:48px; min-height:48px; padding:6px 14px; grid-template-columns: 220px 1fr auto; background:#0a121a; }
  .topbar-left .brand-mini { display:none; }
  .topbar-left { justify-content:flex-start; }
  .topbar-center { gap:8px; }
  .header-metric { padding:3px 7px; }
  .header-metric strong { font-size:12px; }
  .header-metric small { font-size:9px; }
  .content { max-width:none; width:100%; height:calc(100vh - 100px); padding:8px 10px 8px; overflow:hidden; }
  .stats { grid-template-columns: repeat(5, minmax(0,1fr)); gap:7px; margin-bottom:8px; height:60px; }
  .stat { min-height:0; padding:7px 10px; display:flex; align-items:center; gap:8px; }
  .stat .stat-icon { font-size:19px; }
  .stat .stat-copy strong { font-size:17px; }
  .stat .stat-copy span { font-size:8px; }
  #viewDispatch { 
    height:calc(100% - 68px); min-height:0; overflow:hidden;
    display:grid; grid-template-columns:minmax(245px,.82fr) minmax(500px,1.7fr) minmax(300px,1fr);
    grid-template-rows:minmax(0,1fr) 180px;
    gap:8px;
  }
  #viewDispatch > .call-panel { grid-column:1; grid-row:1 / span 2; min-height:0; }
  #viewDispatch > .map-panel { grid-column:2; grid-row:1; min-height:0; display:flex; flex-direction:column; }
  #viewDispatch > .side-stack { grid-column:3; grid-row:1 / span 2; min-height:0; display:grid; grid-template-rows:minmax(0,1.25fr) minmax(0,1fr); gap:8px; }
  #viewDispatch > .radio-panel { grid-column:2; grid-row:2; min-height:0; }
  #viewDispatch.detailsClosed > .side-stack { display:none; }
  #viewDispatch.detailsClosed { grid-template-columns:minmax(245px,.82fr) minmax(500px,1fr); }
  .panel { border-radius:7px; }
  .ph { padding:7px 9px; min-height:34px; }
  .ph b { font-size:10px; }
  .body { padding:8px; }
  .scroll { max-height:none; min-height:0; }
  .call-panel .body { height:calc(100% - 35px); }
  .call { padding:8px; margin-bottom:5px; border-radius:7px; }
  .call h3 { font-size:11px; }
  .call .meta { font-size:9px; }
  .call .units span { font-size:8px; }
  .map-panel .mapWrap { flex:1; min-height:0; }
  #map { min-height:0; height:100% !important; }
  .mapSubtabs { display:flex; align-items:center; gap:2px; min-height:28px; padding:3px 5px; overflow:hidden; background:#0a131c; border-top:1px solid #243747; }
  .mapSubtab { flex:0 0 auto; border:1px solid transparent; background:transparent; color:#8fa5b7; border-radius:4px; padding:4px 7px; font-size:8px; cursor:pointer; white-space:nowrap; }
  .mapSubtab:hover { background:#122231; color:#dbeeff; }
  .mapSubtab.active { background:#12314a; border-color:#1d527b; color:#fff; }
  .legend { transform:scale(.9); transform-origin:bottom left; }
  .incident-work-panel .incidentWorkHead { min-height:36px; }
  .incidentWorkSub { display:inline-block; margin-left:7px; color:#6e8496; font-size:8px; }
  .incidentTabs { display:flex; gap:2px; padding:3px 5px; background:#0a131c; border-bottom:1px solid #243747; overflow:hidden; }
  .incidentTab { flex:0 0 auto; padding:5px 8px; border:1px solid transparent; background:transparent; color:#8499aa; border-radius:4px; font-size:8px; cursor:pointer; }
  .incidentTab.active { color:#fff; background:#14304a; border-color:#245579; box-shadow:inset 0 -2px #39a9ff; }
  .incidentWorkBody { height:calc(100% - 68px); overflow:auto; }
  .incidentWorkBody .intakeBox, .incidentWorkBody .info { margin-top:0; }
  .incidentWorkBody .intakeTranscript { max-height:115px; overflow:auto; }
  .incidentWorkBody .incidentActions { gap:5px; }
  .incidentWorkBody .btn { min-height:28px; padding:4px 7px; font-size:9px; }
  .incident-work-panel .detailTitle { font-size:13px; }
  .incident-work-panel .detailSub { font-size:9px; }
  .side-stack > .panel { min-height:0; }
  .side-stack .body { overflow:auto; }
  .radio-panel .ph { min-height:32px; }
  .radioPageSub { font-size:8px; }
  .radioPageActions { gap:3px; }
  .radioFilter { padding:4px 7px; font-size:8px; }
  .radioPageBody { height:calc(100% - 32px); min-height:0; }
  .radioMainLog { max-height:none; height:100%; }
  .radioFmsColumn { max-width:250px; }
  .radioInfoCard { padding:5px; }
  .radioLiveUnitList { max-height:110px; }
  .unit { padding:6px 7px; }
  .unitName { font-size:10px; }
  .unitMeta { font-size:8px; }
  .unit .badge { font-size:8px; }
}

/* Einsatzmittel wie im professionellen Arbeitsplatz: Typfarbe + Statusfarbe */
.unit { border-left:3px solid transparent; }
.unit[data-kind="POL"] { border-left-color:#3d8dff; }
.unit[data-kind="FIRE"] { border-left-color:#ff5b5b; }
.unit[data-kind="EMS"] { border-left-color:#2fcf86; }
.unit[data-kind="AIR"] { border-left-color:#d7ad3d; }
.unit[data-status="Frei"] .badge { color:#61df9e; border-color:#286d4f; background:#0d241a; }
.unit[data-status="Unterwegs"] .badge { color:#ffd166; border-color:#725b25; background:#241d0b; }
.unit[data-status="Vor Ort"] .badge { color:#65b8ff; border-color:#2b5f85; background:#0b1d2b; }
.unit[data-status="Rückfahrt"] .badge { color:#c1a9ff; border-color:#57428b; background:#19132c; }
.unit[data-status="Gebunden"] .badge { color:#ff8188; border-color:#71343b; background:#261317; }

@media (max-width: 1099px) {
  .mapSubtabs, .incidentTabs { overflow-x:auto; scrollbar-width:thin; }
}

/* v4.20 critical visibility fix: native hidden must always hide views/panels. */
[hidden] { display: none !important; }

/* v4.20 desktop layout must also activate on Windows systems using display scaling.
   The physical screenshot can be wide while the CSS viewport is below 1100px. */
@media (min-width: 721px) {
  html, body { overflow: hidden; }
  body { background: #071019; }
  .app { display: block !important; min-height: 100vh; height: 100vh; }
  .side {
    position: fixed !important; inset: 0 0 auto 0 !important; z-index: 1200;
    height: 52px !important; min-height: 52px !important; width: 100% !important;
    padding: 0 8px !important; display: flex !important; flex-direction: row !important;
    align-items: center; gap: 6px; background: #0b141d;
    border-right: 0 !important; border-bottom: 1px solid #25394b;
    box-shadow: 0 5px 18px rgba(0,0,0,.28); overflow: hidden !important;
  }
  .brand { flex: 0 0 145px; padding: 0 7px !important; border-right: 1px solid #263b4b;
    border-bottom: 0 !important; height: 34px; display:flex; align-items:center; gap:7px; }
  .brand-copy strong { font-size: 10px; }
  .brand-copy span { font-size: 8px; color:#7f95a8; }
  .brand-copy small { display:none; }
  .brand-icon { font-size: 17px; }
  .navbox { display:flex !important; align-items:center; gap:2px; flex:1; overflow-x:auto !important; overflow-y:hidden !important; scrollbar-width:none; }
  .navbox::-webkit-scrollbar { display:none; }
  .nav { flex:0 0 auto; min-height:34px !important; height:34px; padding:5px 7px !important; border-radius:5px; gap:4px; white-space:nowrap; font-size:9px; }
  .nav .ico { font-size:11px; width:auto; }
  .nav .lbl { font-size:9px; }
  .nav.active { background:#12314a; border-color:#1d527b; box-shadow: inset 0 -2px 0 #36a8ff; }
  .side-foot { display:flex; align-items:center; gap:4px; padding:0 0 0 5px; border:0 !important; margin-top:0 !important; }
  .side-foot .operator, .side-foot .phaseDot { display:none; }
  .side-end-shift { margin:0 !important; width:auto !important; min-height:30px; padding:5px 7px; font-size:8px; }
  .main-shell { height:100vh; display:grid !important; grid-template-rows:48px minmax(0,1fr) !important; padding-top:52px; }
  .topbar { height:48px; min-height:48px; padding:5px 10px; grid-template-columns: 1px minmax(0,1fr) auto !important; gap:4px; }
  .topbar-left { overflow:hidden; }
  .topbar-left .brand-mini { display:none !important; }
  .topbar-left .hamb { display:none !important; }
  .topbar-center { gap:4px; overflow:hidden; }
  .header-metric { padding:2px 5px; }
  .header-metric strong { font-size:10px; }
  .header-metric .metric-label { font-size:7px; }
  .header-metric small { font-size:7px; }
  .topbar-right { gap:3px; }
  .header-stat { padding:2px 5px; }
  .header-stat span { font-size:7px; }
  .header-stat strong { font-size:10px; }
  .icon-btn { width:28px; height:28px; }
  .content { max-width:none !important; width:100%; height:calc(100vh - 100px) !important;
    padding:6px 8px 7px !important; overflow:hidden !important; }
  .stats { grid-template-columns:repeat(5,minmax(0,1fr)); gap:5px; margin-bottom:6px; height:52px; }
  .stat { min-height:0; padding:5px 7px; gap:5px; }
  .stat .stat-icon { font-size:15px; }
  .stat .stat-copy strong { font-size:14px; }
  .stat .stat-copy span { font-size:6px; letter-spacing:.08em; }
  #viewDispatch { height:calc(100% - 58px) !important; min-height:0; overflow:hidden;
    display:grid !important; grid-template-columns:minmax(220px,.78fr) minmax(360px,1.65fr) minmax(245px,.95fr) !important;
    grid-template-rows:minmax(0,1fr) 150px !important; gap:6px !important; }
  #viewDispatch > .call-panel { grid-column:1 !important; grid-row:1 / span 2 !important; min-height:0; }
  #viewDispatch > .map-panel { grid-column:2 !important; grid-row:1 !important; min-height:0; display:flex; flex-direction:column; }
  #viewDispatch > .side-stack { grid-column:3 !important; grid-row:1 / span 2 !important; min-height:0; display:grid !important; grid-template-rows:minmax(0,1.05fr) minmax(0,.95fr); gap:6px; }
  #viewDispatch > .radio-panel { grid-column:2 !important; grid-row:2 !important; min-height:0; }
  .panel { border-radius:6px; }
  .ph { padding:6px 8px; min-height:30px; }
  .ph b { font-size:8px; }
  .body { padding:6px; }
  .call { padding:6px; margin-bottom:4px; border-radius:6px; }
  .call h3 { font-size:9px; }
  .call .meta { font-size:7px; }
  .call .units span { font-size:7px; }
  .map-panel .mapWrap { flex:1; min-height:0; }
  #map { min-height:0; height:100% !important; }
  .mapSubtabs { min-height:24px; padding:2px 4px; gap:1px; overflow-x:auto; scrollbar-width:none; }
  .mapSubtabs::-webkit-scrollbar { display:none; }
  .mapSubtab { padding:3px 5px; font-size:7px; }
  .legend { transform:scale(.78); }
  .incidentTabs { gap:1px; padding:2px 4px; overflow-x:auto; scrollbar-width:none; }
  .incidentTabs::-webkit-scrollbar { display:none; }
  .incidentTab { padding:4px 6px; font-size:7px; }
  .incidentWorkBody { height:calc(100% - 62px); }
  .incidentWorkPanel .detailTitle, .incident-work-panel .detailTitle { font-size:11px; }
  .incident-work-panel .detailSub { font-size:7px; }
  .radioPageHead { min-height:29px !important; }
  .radioPageSub { font-size:7px; }
  .radioPageActions { gap:2px; }
  .radioFilter { padding:3px 5px; font-size:7px; }
  .radioPageBody { height:calc(100% - 29px); }
  .radioFmsColumn { max-width:190px; }
  .unit { padding:5px 6px; }
  .unitName { font-size:8px; }
  .unitMeta { font-size:7px; }
  .unit .badge { font-size:7px; }
}

@media (max-width: 900px) and (min-width: 721px) {
  .brand { flex-basis:125px; }
  .nav { padding-left:5px !important; padding-right:5px !important; }
  .nav .lbl { font-size:8px; }
  .topbar-right .header-stat:nth-child(2), .topbar-right .header-stat:nth-child(3) { display:none; }
  #viewDispatch { grid-template-columns:minmax(185px,.7fr) minmax(330px,1.6fr) minmax(210px,.9fr) !important; }
  .radioFmsColumn { display:none; }
}


/* v4.21 REAL DESKTOP FIX
   Keep the workstation layout in normal document flow. The previous v4.20
   fallback incorrectly moved the sidebar to the top and could collapse the
   dispatch grid on browser/Windows scaling combinations.
*/
@media (min-width: 600px) and (hover: hover) {
  #app:not([hidden]) { display:grid !important; grid-template-columns:190px minmax(0,1fr) !important; width:100vw !important; height:100vh !important; min-height:100vh !important; }
  #app .side { position:relative !important; inset:auto !important; width:190px !important; min-width:190px !important; height:100vh !important; min-height:100vh !important; padding:16px 12px !important; display:flex !important; flex-direction:column !important; align-items:stretch !important; gap:6px !important; overflow:hidden !important; border-right:1px solid #26394a !important; border-bottom:0 !important; z-index:40 !important; }
  #app .brand { flex:0 0 auto !important; width:auto !important; height:auto !important; padding:8px 9px 16px !important; display:block !important; border-right:0 !important; border-bottom:1px solid #1e2d3a !important; }
  #app .brand-copy { display:block !important; }
  #app .brand-copy strong { font-size:18px !important; }
  #app .brand-copy span { font-size:9px !important; }
  #app .navbox { display:grid !important; flex:0 0 auto !important; width:auto !important; overflow:visible !important; gap:3px !important; }
  #app .nav { flex:0 0 auto !important; width:100% !important; min-height:42px !important; height:auto !important; padding:8px 10px !important; white-space:normal !important; }
  #app .nav .ico { width:20px !important; font-size:16px !important; }
  #app .nav .lbl { font-size:11px !important; }
  #app .side-foot { display:block !important; margin-top:auto !important; padding:10px 5px 0 !important; border-top:1px solid #1d2c38 !important; }
  #app .side-foot .operator, #app .side-foot .phaseDot { display:block !important; }
  #app .side-end-shift { width:100% !important; min-height:32px !important; margin-top:10px !important; }

  #app .main-shell { position:relative !important; display:grid !important; grid-template-rows:72px minmax(0,1fr) !important; width:auto !important; height:100vh !important; min-width:0 !important; min-height:0 !important; padding-top:0 !important; overflow:hidden !important; }
  #app .topbar { position:relative !important; inset:auto !important; width:100% !important; height:72px !important; min-height:72px !important; display:grid !important; grid-template-columns:250px minmax(0,1fr) auto !important; padding:0 !important; overflow:hidden !important; z-index:100 !important; }
  #app .topbar-left { display:flex !important; align-items:center !important; padding:8px 14px !important; }
  #app .topbar-center { display:flex !important; min-width:0 !important; overflow:hidden !important; }
  #app .topbar-right { display:flex !important; min-width:0 !important; overflow:hidden !important; }
  #app .content { display:grid !important; grid-template-rows:78px minmax(0,1fr) !important; width:100% !important; max-width:none !important; height:auto !important; min-width:0 !important; min-height:0 !important; overflow:hidden !important; padding:10px !important; box-sizing:border-box !important; }
  #app .stats { display:grid !important; grid-template-columns:repeat(5,minmax(0,1fr)) !important; height:78px !important; min-width:0 !important; }
  #viewDispatch.view.grid { display:grid !important; width:100% !important; height:100% !important; min-width:0 !important; min-height:0 !important; grid-template-columns:minmax(250px,.9fr) minmax(0,1.9fr) minmax(270px,1fr) !important; grid-template-rows:minmax(0,1fr) 190px !important; grid-template-areas:"map map active" "calls radio units" !important; gap:8px !important; }
  #viewDispatch > .call-panel { display:flex !important; grid-area:calls !important; min-width:0 !important; min-height:0 !important; flex-direction:column !important; }
  #viewDispatch > .map-panel { display:flex !important; grid-area:map !important; min-width:0 !important; min-height:0 !important; flex-direction:column !important; }
  #viewDispatch > .side-stack { display:contents !important; }
  #viewDispatch > .side-stack > .panel { display:flex !important; min-width:0 !important; min-height:0 !important; flex-direction:column !important; }
  #viewDispatch > .side-stack > .panel:first-child { grid-area:active !important; }
  #viewDispatch > .side-stack > .panel:last-child { grid-area:units !important; }
  #viewDispatch > .radio-panel { display:flex !important; grid-area:radio !important; min-width:0 !important; min-height:0 !important; flex-direction:column !important; }
  #viewDispatch .mapWrap, #viewDispatch #map { flex:1 !important; min-height:0 !important; height:100% !important; }
}


/* v4.22 – echte Leitstellen-Arbeitsbereiche
   Jede Hauptnavigation bekommt ihre eigene Arbeitsfläche. Die farbigen
   Kennzahlen bleiben ausschließlich auf der Notruf-/Übersichtsseite.
*/
@media (min-width: 801px) {
  #app[data-route="incidents"] .content,
  #app[data-route="map"] .content,
  #app[data-route="radio"] .content,
  #app[data-route="vehicles"] .content,
  #app[data-route="facilities"] .content,
  #app[data-route="patrol"] .content,
  #app[data-route="persons"] .content,
  #app[data-route="vehicleLookup"] .content,
  #app[data-route="archive"] .content,
  #app[data-route="statistics"] .content,
  #app[data-route="settings"] .content { grid-template-rows:minmax(0,1fr) !important; }

  #app[data-route]:not([data-route="overview"]) .stats { display:none !important; }

  /* Einsätze: große Einsatzarbeitsfläche statt kleiner Kacheln. */
  #app[data-route="incidents"] #viewDispatch.view.grid {
    display:grid !important;
    grid-template-columns:minmax(360px,.72fr) minmax(0,1.65fr) !important;
    grid-template-rows:minmax(0,1fr) !important;
    grid-template-areas:"calls active" !important;
    gap:10px !important;
  }
  #app[data-route="incidents"] #viewDispatch > .call-panel { grid-area:calls !important; display:flex !important; min-height:0 !important; }
  #app[data-route="incidents"] #viewDispatch > .side-stack { display:contents !important; }
  #app[data-route="incidents"] #viewDispatch > .side-stack > .incident-work-panel { grid-area:active !important; display:flex !important; min-height:0 !important; }
  #app[data-route="incidents"] #viewDispatch > .side-stack > .panel:last-child,
  #app[data-route="incidents"] #viewDispatch > .map-panel,
  #app[data-route="incidents"] #viewDispatch > .radio-panel { display:none !important; }
  #app[data-route="incidents"] #viewDispatch > .call-panel .body { max-height:none !important; overflow:auto !important; display:block !important; padding:12px !important; }
  #app[data-route="incidents"] #viewDispatch > .call-panel .call { min-height:0 !important; margin-bottom:10px !important; }
  #app[data-route="incidents"] .incident-work-panel .incidentWorkBody { max-height:none !important; height:auto !important; flex:1 1 auto !important; overflow:auto !important; }

  /* Karte: die Karte IST der Arbeitsbereich. */
  #app[data-route="map"] #viewDispatch.view.grid {
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    grid-template-rows:minmax(0,1fr) !important;
    grid-template-areas:"map" !important;
    gap:0 !important;
  }
  #app[data-route="map"] #viewDispatch > .map-panel { grid-area:map !important; display:flex !important; min-height:0 !important; height:100% !important; }
  #app[data-route="map"] #viewDispatch > .map-panel .mapWrap { flex:1 1 auto !important; min-height:0 !important; }
  #app[data-route="map"] #viewDispatch > .map-panel #map { height:100% !important; min-height:0 !important; }
  #app[data-route="map"] #viewDispatch > .call-panel,
  #app[data-route="map"] #viewDispatch > .side-stack,
  #app[data-route="map"] #viewDispatch > .radio-panel { display:none !important; }
  #app[data-route="map"] .mapSubtabs { min-height:34px !important; padding:4px 8px !important; }
  #app[data-route="map"] .mapSubtab { font-size:10px !important; padding:6px 9px !important; }

  /* Funk als eigener Vollbild-Arbeitsplatz. */
  #app[data-route="radio"] #viewDispatch.view.grid {
    display:grid !important; grid-template-columns:minmax(0,1fr) !important;
    grid-template-rows:minmax(0,1fr) !important; grid-template-areas:"radio" !important; gap:0 !important;
  }
  #app[data-route="radio"] #viewDispatch > .radio-panel { grid-area:radio !important; display:flex !important; min-height:0 !important; }
  #app[data-route="radio"] #viewDispatch > .call-panel,
  #app[data-route="radio"] #viewDispatch > .map-panel,
  #app[data-route="radio"] #viewDispatch > .side-stack { display:none !important; }
  #app[data-route="radio"] .radioPageBody { flex:1 1 auto !important; min-height:0 !important; }
  #app[data-route="radio"] .radioMainLog { max-height:none !important; height:100% !important; }

  /* Abfrage / Objekte: keine Dashboard-Kacheln, große Recherchefläche. */
  #app[data-route="persons"] .lookupView,
  #app[data-route="vehicleLookup"] .lookupView {
    display:grid !important; grid-template-columns:minmax(0,1fr) !important;
    grid-template-rows:minmax(0,1fr) !important; gap:0 !important; height:100% !important; min-height:0 !important;
  }
  #app[data-route="persons"] .lookupIntro,
  #app[data-route="vehicleLookup"] .lookupIntro { display:flex !important; flex-direction:column !important; min-height:0 !important; height:100% !important; }
  #app[data-route="persons"] .lookupIntro > .body,
  #app[data-route="vehicleLookup"] .lookupIntro > .body { display:flex !important; flex-direction:column !important; min-height:0 !important; flex:1 1 auto !important; overflow:auto !important; padding:18px 20px !important; }
  #app[data-route="persons"] .lookupBanner,
  #app[data-route="vehicleLookup"] .lookupBanner,
  #app[data-route="persons"] .lookupSide,
  #app[data-route="vehicleLookup"] .lookupSide { display:none !important; }
  #app[data-route="persons"] .lookupForm,
  #app[data-route="vehicleLookup"] .lookupForm { width:100% !important; max-width:none !important; margin:0 !important; }
  #app[data-route="persons"] .lookupQueryFields,
  #app[data-route="vehicleLookup"] .lookupQueryFields { grid-template-columns:repeat(2,minmax(260px,1fr)) !important; max-width:1100px !important; }
  #app[data-route="persons"] .lookupResult,
  #app[data-route="vehicleLookup"] .lookupResult { flex:1 1 auto !important; min-height:220px !important; margin-top:16px !important; overflow:auto !important; }

  /* Einsatzbearbeitung: die sechs Tabs sind echte Ansichten. */
  #app .incidentWorkBody[data-tab="data"] .detailTabPanel:not(.detailTabData),
  #app .incidentWorkBody[data-tab="caller"] .detailTabPanel:not(.detailTabCaller),
  #app .incidentWorkBody[data-tab="actions"] .detailTabPanel:not(.detailTabActions),
  #app .incidentWorkBody[data-tab="resources"] .detailTabPanel:not(.detailTabResources),
  #app .incidentWorkBody[data-tab="reports"] .detailTabPanel:not(.detailTabReports),
  #app .incidentWorkBody[data-tab="docs"] .detailTabPanel:not(.detailTabDocs) { display:none !important; }
  #app .detailTabPanel { padding:10px 0 4px; }
  #app .detailPanelIntro { display:flex; flex-direction:column; gap:3px; padding:8px 10px; margin-bottom:9px; border:1px solid #294052; border-radius:6px; background:#0f1b26; }
  #app .detailPanelIntro b { font-size:12px; }
  #app .detailPanelIntro small { color:#7f98aa; font-size:9px; }
  #app .resourceNeedBox, #app .reportCrewState { display:grid; gap:5px; padding:10px; margin-top:10px; border:1px solid #294052; border-radius:6px; background:#0e1923; }
  #app .resourceNeedBox span, #app .reportCrewState span { color:#77c6ff; font-weight:800; }
  #app .resourceNeedBox small, #app .reportCrewState small { color:#7f98aa; }
  #app .documentationText { margin-top:12px; padding:10px; border:1px solid #294052; border-radius:6px; background:#0e1923; }
  #app .documentationText b { display:block; color:#80cfff; font-size:10px; margin-top:7px; }
  #app .documentationText b:first-child { margin-top:0; }
  #app .documentationText p { margin:4px 0 8px; line-height:1.45; }
}

@media (max-width: 800px) {
  #app[data-route="incidents"] .stats,
  #app[data-route="map"] .stats,
  #app[data-route="radio"] .stats,
  #app[data-route="persons"] .stats,
  #app[data-route="vehicleLookup"] .stats { display:none !important; }
}

/* v4.23 – KPI-Kacheln dauerhaft oberhalb des jeweiligen Arbeitsbereichs */
#app .main-shell > .stats{
  position:relative;
  z-index:20;
  height:78px;
  min-height:78px;
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:12px;
  margin:0;
  padding:10px 14px 0;
  box-sizing:border-box;
  background:#071019;
}
#app .main-shell > .content{
  height:calc(100dvh - 72px - 88px);
  padding:0 14px 12px;
  grid-template-rows:minmax(0,1fr);
  gap:0;
}
#app .main-shell > .stats .stat{
  height:78px;
  min-height:78px;
  box-sizing:border-box;
}
@media (max-width:1100px){
  #app .main-shell > .stats{gap:8px;padding-left:10px;padding-right:10px}
  #app .main-shell > .content{height:calc(100dvh - 72px - 86px);padding-left:10px;padding-right:10px}
}
@media (max-width:720px){
  #app .main-shell > .stats{height:auto;min-height:0;grid-template-columns:repeat(2,minmax(0,1fr));padding:6px 8px;gap:6px}
  #app .main-shell > .stats .stat{height:62px;min-height:62px}
  #app .main-shell > .content{height:auto;min-height:calc(100dvh - 72px);padding:0 8px 8px}
}

/* v4.24 – integrierter Funkarbeitsplatz
   Der Funkkanal bleibt innerhalb der Arbeitsfläche. Das alte Overlay-Funkgerät
   wird auf der Funk-Seite nicht mehr über andere Bereiche gelegt. */
#app[data-route="radio"] .radioDrawer { display:none !important; }
#app[data-route="radio"] .radioPageBody.radioIntegratedBody {
  display:grid !important;
  grid-template-columns:minmax(0,1.55fr) minmax(420px,.95fr) !important;
  grid-template-rows:minmax(0,1fr) !important;
  gap:10px !important;
  flex:1 1 auto !important;
  min-height:0 !important;
  overflow:hidden !important;
  padding:8px 10px 10px !important;
}
#app[data-route="radio"] .radioMainColumn { min-width:0; min-height:0; }
#app[data-route="radio"] .radioConsoleColumn {
  display:grid;
  grid-template-rows:minmax(190px,.43fr) minmax(0,1fr);
  gap:8px;
  min-width:0;
  min-height:0;
}
#app[data-route="radio"] .radioUnitRoster,
#app[data-route="radio"] .radioUnitConsole { min-width:0; min-height:0; }
#app[data-route="radio"] .radioUnitRoster { overflow:hidden; }
#app[data-route="radio"] .radioUnitRoster .radioLiveUnitList { max-height:none; }
#app[data-route="radio"] .fmsLegendGrid.compact {
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:3px;
  padding:5px;
  border-bottom:1px solid #203546;
}
#app[data-route="radio"] .fmsLegendGrid.compact .fmsCode { min-height:25px; padding:3px 4px; }
#app[data-route="radio"] .fmsLegendGrid.compact .fmsCodeNum { flex-basis:18px; height:18px; }
#app[data-route="radio"] .fmsLegendGrid.compact .fmsCodeText { font-size:6.5px; }
#app[data-route="radio"] .radioLiveUnit {
  width:100%;
  border:1px solid #263d4e;
  cursor:pointer;
  text-align:left;
}
#app[data-route="radio"] .radioLiveUnit.selected { border-color:#3d9bf0; box-shadow:inset 3px 0 0 #3d9bf0; background:#12283a; }
#app[data-route="radio"] .radioUnitConsole { display:flex; flex-direction:column; overflow:hidden; }
#app[data-route="radio"] .radioConsoleEmpty { flex:1; display:grid; place-items:center; align-content:center; gap:7px; padding:30px; text-align:center; color:#718da3; }
#app[data-route="radio"] .radioConsoleEmpty span { font-size:34px; opacity:.9; }
#app[data-route="radio"] .radioConsoleEmpty b { color:#dcebf6; font-size:13px; }
#app[data-route="radio"] .radioConsoleEmpty small { max-width:360px; line-height:1.5; font-size:9px; }
#app[data-route="radio"] .radioConsoleHead { flex:0 0 auto; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:9px 10px; border-bottom:1px solid #203546; background:#101d28; }
#app[data-route="radio"] .radioConsoleIdentity { display:flex; align-items:center; gap:9px; min-width:0; }
#app[data-route="radio"] .consoleUnitIcon { font-size:24px; }
#app[data-route="radio"] .radioConsoleIdentity b { display:block; font-size:13px; color:#e7f2fa; }
#app[data-route="radio"] .radioConsoleIdentity small { display:block; margin-top:2px; color:#7891a4; font-size:8px; }
#app[data-route="radio"] .radioConsoleHeadActions { display:flex; align-items:center; gap:6px; }
#app[data-route="radio"] .consoleFms { padding:4px 7px; border:1px solid #31506a; border-radius:5px; color:#8ccaff; font-size:8px; font-weight:900; white-space:nowrap; }
#app[data-route="radio"] .consoleFms.free { border-color:#245c48; color:#72dfaa; }
#app[data-route="radio"] .consoleFms.busy { border-color:#715b2d; color:#efc96e; }
#app[data-route="radio"] .consoleFms.at { border-color:#30629a; color:#79baff; }
#app[data-route="radio"] .radioUnitFacts { flex:0 0 auto; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:5px; padding:6px; border-bottom:1px solid #203546; background:#0b1721; }
#app[data-route="radio"] .radioUnitFacts > div { min-width:0; padding:5px 6px; border:1px solid #203546; border-radius:5px; background:#0e1a24; }
#app[data-route="radio"] .radioUnitFacts small { display:block; color:#6f899c; font-size:6px; font-weight:800; letter-spacing:.07em; }
#app[data-route="radio"] .radioUnitFacts b { display:block; margin-top:2px; color:#dbe9f3; font-size:7.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
#app[data-route="radio"] .radioConsoleActions { flex:0 0 auto; display:flex; flex-wrap:wrap; gap:4px; padding:6px; border-bottom:1px solid #203546; }
#app[data-route="radio"] .radioConsoleActions .btn { flex:1 1 auto; }
#app[data-route="radio"] .consoleSpeechPending { flex:0 0 auto; display:flex; align-items:center; gap:7px; padding:6px 8px; border-bottom:1px solid #5d4522; background:#241d12; }
#app[data-route="radio"] .consoleSpeechPending b { color:#f0ca72; font-size:8px; }
#app[data-route="radio"] .consoleSpeechPending small { flex:1; color:#a98e62; font-size:7px; }
#app[data-route="radio"] .radioConsoleLog { flex:1 1 auto; min-height:80px; overflow:auto; padding:7px; background:#08121a; }
#app[data-route="radio"] .radioConsoleLog .rmsg { margin-bottom:6px; }
#app[data-route="radio"] .integratedQuickReplies { flex:0 0 auto; max-height:55px; overflow:auto; padding:5px 6px; border-top:1px solid #203546; background:#0d1721; }
#app[data-route="radio"] .radioConsoleInput { flex:0 0 auto; padding:6px; }
#app[data-route="radio"] .radioConsoleInput textarea { min-height:42px; max-height:80px; }
@media (max-width:1100px) {
  #app[data-route="radio"] .radioPageBody.radioIntegratedBody { grid-template-columns:minmax(0,1.2fr) minmax(350px,.95fr) !important; }
  #app[data-route="radio"] .radioUnitFacts { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:850px) {
  #app[data-route="radio"] .radioPageBody.radioIntegratedBody { grid-template-columns:1fr !important; grid-template-rows:minmax(330px,1fr) minmax(420px,1fr) !important; overflow:auto !important; }
}


/* v4.25 – Karten-Tabs und kompaktere Leitstellen-Kopfzeile */
@media (min-width: 801px) {
  /* Mehr vertikale Arbeitsfläche: Kopfzeile etwas kompakter. */
  #app .main-shell { grid-template-rows:60px minmax(0,1fr) !important; }
  #app .topbar { height:60px !important; min-height:60px !important; }
  #app .main-shell > .stats {
    height:68px !important;
    min-height:68px !important;
    padding:7px 10px 0 !important;
    gap:8px !important;
  }
  #app .main-shell > .stats .stat { height:61px !important; min-height:61px !important; padding:6px 10px !important; }
  #app .main-shell > .content {
    height:calc(100dvh - 60px - 68px) !important;
    padding:0 10px 9px !important;
  }

  /* Karten-Untertabs: größere, gleichmäßig über die gesamte Breite verteilte Arbeitsreiter. */
  #app[data-route="map"] .mapSubtabs,
  #app[data-route="overview"] .mapSubtabs {
    display:grid !important;
    grid-template-columns:repeat(10,minmax(0,1fr)) !important;
    align-items:stretch !important;
    gap:4px !important;
    min-height:42px !important;
    height:42px !important;
    padding:4px 6px !important;
    overflow:hidden !important;
    box-sizing:border-box !important;
  }
  #app[data-route="map"] .mapSubtab,
  #app[data-route="overview"] .mapSubtab {
    width:100% !important;
    min-width:0 !important;
    height:34px !important;
    padding:7px 5px !important;
    font-size:10px !important;
    font-weight:700 !important;
    line-height:1 !important;
    text-align:center !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
  }
}

@media (max-width: 1100px) and (min-width: 801px) {
  #app .main-shell > .stats { gap:5px !important; padding-left:7px !important; padding-right:7px !important; }
  #app .main-shell > .stats .stat { padding-left:7px !important; padding-right:7px !important; }
  #app[data-route="map"] .mapSubtab,
  #app[data-route="overview"] .mapSubtab { font-size:8px !important; padding-left:3px !important; padding-right:3px !important; }
}

/* v4.26 layout correction: the five KPI cards are a dedicated row above the work area.
   The stats block is a sibling of .content in the DOM, so it must have its own
   main-shell grid row. The previous rule accidentally gave .content the same row
   and pushed the real work area into an implicit zero-height row. */
#app .main-shell {
  grid-template-rows: 58px 66px minmax(0, 1fr) !important;
}
#app .stats {
  grid-row: 2;
  min-height: 0;
  height: 66px;
  padding: 7px 10px 0;
  box-sizing: border-box;
  overflow: hidden;
}
#app .content {
  grid-row: 3;
  grid-template-rows: minmax(0, 1fr) !important;
  min-height: 0;
  height: 100%;
  overflow: hidden;
}
@media (max-width: 1350px) and (min-width: 721px) {
  #app .main-shell { grid-template-rows: 58px 66px minmax(0, 1fr) !important; }
}
@media (max-width: 720px) {
  #app .main-shell { grid-template-rows: auto 66px minmax(0, 1fr) !important; }
  #app .stats { height: 66px; padding: 4px 8px 0; }
}

/* v4.27 – echte Arbeitsansichten unter den Karten-Tabs */
#app .mapContext {
  flex: 0 0 auto;
  margin: 0;
  border-top: 1px solid #243747;
  background: #0b151f;
  color: #dce8f2;
  max-height: 190px;
  overflow: auto;
}
#app .mapContext[hidden] { display: none !important; }
.mapContextHead {
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:7px 10px; border-bottom:1px solid #203342; background:#0e1a25;
}
.mapContextHead b { display:block; font-size:10px; letter-spacing:.08em; text-transform:uppercase; }
.mapContextHead small { display:block; margin-top:2px; color:#7890a3; font-size:8px; }
.mapContextBody { padding:8px 10px 10px; }
.mapCtxHero { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; margin-bottom:7px; }
.mapCtxCard { min-height:48px; padding:7px 9px; border:1px solid #263b4c; border-radius:6px; background:#111f2b; display:flex; align-items:center; justify-content:space-between; gap:8px; }
.mapCtxCard b { display:block; font-size:9px; }
.mapCtxCard small { display:block; margin-top:2px; color:#7890a3; font-size:7px; }
.mapCtxCard strong { font-size:15px; white-space:nowrap; }
.mapCtxCard.hero strong { color:#f3f7fb; }
.mapCtxCard.ok { border-color:#1b8f6a; }
.mapCtxCard.ok strong { color:#50e3ad; }
.mapCtxCard.warn { border-color:#8f6c1c; }
.mapCtxCard.warn strong { color:#ffc857; }
.mapCtxSection { margin-top:6px; }
.mapCtxSection > b { display:block; margin-bottom:5px; font-size:8px; color:#9eb3c3; letter-spacing:.08em; text-transform:uppercase; }
.mapCtxGrid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:5px; }
.mapCtxList { display:grid; gap:5px; }
.mapCtxRow { width:100%; box-sizing:border-box; min-height:34px; padding:6px 8px; border:1px solid #213747; border-radius:5px; background:#101e29; color:#dce8f2; text-align:left; display:flex; align-items:center; justify-content:space-between; gap:10px; font:inherit; }
.mapCtxRow b { font-size:8px; color:#eaf2f8; }
.mapCtxRow span { color:#8fa5b7; font-size:8px; text-align:right; }
.mapCtxRow.warn { border-left:3px solid #d9a52b; }
.mapCtxRow.clickable { cursor:pointer; }
.mapCtxRow.clickable:hover { background:#14283a; border-color:#2c628e; }
.mapCtxActions { display:flex; gap:6px; margin-top:7px; }
.mapCtxNote { margin:5px 0; padding:7px 9px; border:1px dashed #2b4659; border-radius:5px; background:#0e1b26; color:#91a7b8; font-size:8px; line-height:1.45; }
@media (max-width: 900px) {
  .mapCtxGrid, .mapCtxHero { grid-template-columns:1fr; }
  #app .mapContext { max-height:240px; }
}


/* v4.28 – kompakte Leitstellen-Topbar ohne KPI-Kachelzeile.
   Datum, Uhrzeit, Wetter, Verkehr, Einsatzkräfte, offene Einsätze, Wartend,
   Status und Punkte bleiben als Säulen direkt in der Topbar. */
#app .main-shell {
  grid-template-rows: 60px minmax(0, 1fr) !important;
}
#app .main-shell > .stats {
  display: none !important;
}
#app .main-shell > .content {
  grid-row: 2 !important;
  height: 100% !important;
  min-height: 0 !important;
  padding: 0 10px 10px !important;
}
@media (max-width: 720px) {
  #app .main-shell { grid-template-rows: auto minmax(0,1fr) !important; }
  #app .main-shell > .content { padding: 0 8px 8px !important; }
}

/* v4.29 – Kartenansichten als eigenständiges Arbeitsfenster
   Die Tabs öffnen keine schmale Zusatzleiste mehr unter der Karte. */
#app .mapContext {
  position: fixed !important;
  left: 50% !important;
  top: 50% !important;
  transform: translate(-50%, -50%) !important;
  z-index: 1200 !important;
  width: min(980px, calc(100vw - 70px)) !important;
  max-width: 980px !important;
  max-height: min(720px, calc(100vh - 120px)) !important;
  margin: 0 !important;
  border: 1px solid #36536a !important;
  border-radius: 12px !important;
  background: #0a141e !important;
  box-shadow: 0 24px 80px rgba(0,0,0,.72), 0 0 0 100vmax rgba(3,9,14,.62) !important;
  overflow: auto !important;
}
#app .mapContextHead { position:sticky; top:0; z-index:2; min-height:52px; padding:10px 13px; background:#0e1a25; }
#app .mapContextHead b { font-size:12px; }
#app .mapContextHead small { font-size:9px; }
#app .mapContextBody { padding:12px 14px 15px; }
#app .mapCtxHero { grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; }
#app .mapCtxCard { min-height:66px; padding:10px 12px; }
#app .mapCtxCard b { font-size:10px; }
#app .mapCtxCard small { font-size:8px; }
#app .mapCtxCard strong { font-size:18px; }
#app .mapCtxGrid { gap:8px; }
#app .mapCtxRow { min-height:44px; padding:8px 10px; }
#app .mapCtxRow b { font-size:9px; }
#app .mapCtxRow span { font-size:9px; }
#app .mapCtxSection > b { font-size:9px; }
#app .mapCtxNote { font-size:9px; }

/* v4.29 – Dashboard: Map etwas kompakter, Arbeitskacheln darunter höher. */
@media (min-width: 801px) {
  #app[data-route="overview"] #viewDispatch.view.grid,
  #app[data-route="dispatch"] #viewDispatch.view.grid {
    grid-template-rows:minmax(0,1fr) 275px !important;
  }
  #app[data-route="overview"] #viewDispatch .call-panel .body,
  #app[data-route="overview"] #viewDispatch .radioMainLog,
  #app[data-route="overview"] #viewDispatch .side-stack .body,
  #app[data-route="dispatch"] #viewDispatch .call-panel .body,
  #app[data-route="dispatch"] #viewDispatch .radioMainLog,
  #app[data-route="dispatch"] #viewDispatch .side-stack .body { max-height:none !important; }
}

/* v4.29 – Funk-Schnellantworten werden sofort als Funkspruch gesendet.
   Dadurch bleibt z.B. „Verstanden“ im sichtbaren Funkverlauf und landet
   nicht nur im kleinen Eingabefeld. */
#app .quickReplies button[data-q],
#app .integratedQuickReplies button[data-console-q] { cursor:pointer; }
#app .quickReplies button[data-q]:active,
#app .integratedQuickReplies button[data-console-q]:active { transform:translateY(1px); }

@media (max-width: 900px) {
  #app .mapContext { width:calc(100vw - 24px) !important; max-height:calc(100vh - 90px) !important; }
  #app .mapCtxGrid, #app .mapCtxHero { grid-template-columns:1fr; }
}


/* v4.31 – noch kompaktere Leitstellen-Topbar */
#app .main-shell { grid-template-rows: 48px minmax(0,1fr) !important; }
#app .topbar { height:48px !important; min-height:48px !important; padding:3px 10px !important; gap:6px !important; }
#app .topbar-center { gap:6px !important; }
#app .header-metric { padding:2px 7px !important; gap:1px !important; border-radius:8px !important; }
#app .header-stat { min-width:72px !important; padding:3px 6px !important; gap:1px !important; border-radius:8px !important; }
#app .metric-label, #app .header-stat span { font-size:8px !important; line-height:1 !important; }
#app .header-metric strong, #app .header-stat strong { font-size:12px !important; line-height:1.05 !important; }
#app .brand-mini span { font-size:13px !important; }
@media (max-width:1350px) and (min-width:721px){
 #app .main-shell { grid-template-rows:48px minmax(0,1fr) !important; }
 #app .topbar { min-height:48px !important; height:48px !important; padding:3px 7px !important; }
}


/* v4.32 – Topbar fix: never clip metric text */
#app .main-shell { grid-template-rows: 56px minmax(0,1fr) !important; }
#app .topbar { min-height:56px !important; height:56px !important; box-sizing:border-box !important; padding:3px 8px !important; overflow:visible !important; align-items:center !important; }
#app .topbar-center, #app .topbar-right { align-items:center !important; }
#app .header-metric, #app .header-stat { box-sizing:border-box !important; }
#app .header-metric strong, #app .header-stat strong { line-height:1.05 !important; }
@media (max-width:1350px) and (min-width:721px){
  #app .main-shell { grid-template-rows:56px minmax(0,1fr) !important; }
  #app .topbar { min-height:56px !important; height:56px !important; padding:3px 7px !important; }
}

/* Notrufort-Karte: separates Arbeitsfenster statt die Leitstellenansicht zu verdecken */
.callLocationMapOverlay[hidden] { display: none !important; }
.callLocationMapOverlay { position: fixed; inset: 0; z-index: 1600; display: grid; place-items: center; padding: 28px; background: rgba(2,7,12,.78); backdrop-filter: blur(3px); }
.callLocationMapDialog { width: min(1100px, 94vw); height: min(720px, 88vh); min-width: 0; min-height: 0; display: grid; grid-template-rows: 58px minmax(0,1fr); overflow: hidden; border: 1px solid #31506a; border-radius: 10px; background: #08131d; box-shadow: 0 24px 70px rgba(0,0,0,.58); }
.callLocationMapDialog > header { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 12px; border-bottom:1px solid #263b4c; background:#0d1923; }
.callLocationMapDialog > header small { display:block; color:#70b9f7; font-size:8px; font-weight:800; letter-spacing:.08em; }
.callLocationMapDialog > header b { display:block; margin-top:2px; color:#eaf3fb; font-size:13px; }
.callLocationMapDialog > header button { width:34px; height:34px; border:1px solid #334b60; border-radius:6px; background:#142332; color:#dbe8f5; font-size:22px; line-height:1; cursor:pointer; }
.callLocationMapBody { display:grid; grid-template-columns:minmax(0,1fr) 270px; min-width:0; min-height:0; }
.callLocationMap { min-width:0; min-height:0; background:#0e1721; }
.callLocationMapInfo { display:grid; align-content:start; gap:9px; padding:14px; border-left:1px solid #263b4c; background:#0d1822; }
.callLocationMapInfo small { color:#7fa0b9; font-size:8px; font-weight:850; letter-spacing:.08em; }
.callLocationMapInfo b { color:#edf5fb; font-size:14px; line-height:1.4; overflow-wrap:anywhere; }
.callLocationMapInfo span { color:#9cb0c1; font-size:9px; line-height:1.45; }
.callLocationMapInfo .btn { min-height:34px; margin-top:8px; font-size:9px; }
.callLocationMap .leaflet-control-attribution { font-size:9px !important; }
@media (max-width: 800px) {
  .callLocationMapOverlay { padding:8px; }
  .callLocationMapDialog { width:100%; height:94vh; }
  .callLocationMapBody { grid-template-columns:1fr; grid-template-rows:minmax(0,1fr) auto; }
  .callLocationMapInfo { border-left:0; border-top:1px solid #263b4c; }
}

/* v4.39 – Registerabfragen: Leitstellen-Arbeitsplatz */
.lookupView{display:block!important;min-height:0!important;height:100%!important;overflow:hidden!important;padding:0!important}
.lookupWorkspace{display:grid;grid-template-columns:300px minmax(0,1fr);gap:0;height:100%;min-height:0;background:#08131d;border:1px solid #22384b;border-radius:10px;overflow:hidden}
.lookupSearchRail{min-width:0;overflow:auto;background:#0c1721;border-right:1px solid #263b4d;padding:18px 16px}
.lookupRailTitle{display:flex;gap:11px;align-items:center;padding-bottom:18px;border-bottom:1px solid #203447;margin-bottom:18px}.lookupRailIcon{display:grid;place-items:center;width:42px;height:42px;border-radius:10px;background:#0e3156;border:1px solid #1d70c9;color:#4da2ff;font-size:25px}.lookupRailTitle b{display:block;font-size:12px;letter-spacing:.08em}.lookupRailTitle small{display:block;color:#71869a;font-size:10px;margin-top:3px}.lookupRailSection{margin-top:18px}.lookupRailKicker{font-size:9px;font-weight:900;color:#6e8ba4;letter-spacing:.1em;margin:0 0 8px}.lookupSearchRail .lookupInputField{display:grid;gap:5px;margin-bottom:10px}.lookupSearchRail .lookupInputField span{font-size:10px;color:#91a6ba;font-weight:800}.lookupSearchRail .lookupInputField .input{font-size:13px}.lookupStart{width:100%;min-height:43px}.lookupHelpText{display:block;line-height:1.45;margin:9px 2px 18px}.lookupRecent{border-top:1px solid #203447;padding-top:15px}.lookupRecentList{display:grid;gap:3px}.lookupRecentItem{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;padding:9px 7px;border:1px solid transparent;border-radius:8px;background:transparent;color:#dbe5ee;text-align:left}.lookupRecentItem:hover,.lookupRecentItem.active{background:#102b42;border-color:#245e92}.recentAvatar{width:34px;height:34px;display:grid;place-items:center;border-radius:8px;background:#132637;border:1px solid #29445a}.lookupRecentItem b,.lookupRecentItem small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lookupRecentItem b{font-size:11px}.lookupRecentItem small{font-size:9px;color:#7890a4;margin-top:2px}.lookupRecentItem time{font-size:9px;color:#6e8395}.lookupRecentEmpty{padding:12px;border:1px dashed #294052;border-radius:8px;color:#647b90;font-size:10px;text-align:center}
.lookupMainArea{min-width:0;min-height:0;overflow:auto;background:#08131d;padding:0 18px 28px}.lookupTopbar{position:sticky;top:0;z-index:8;display:flex;align-items:center;gap:12px;padding:16px 0 14px;background:#08131df2;border-bottom:1px solid #1d3346;margin-bottom:14px}.lookupTopbar>div:first-child{min-width:0;flex:1}.lookupTopKicker,.recordKicker{font-size:9px;font-weight:900;letter-spacing:.09em;color:#4b91d4}.lookupTopbar h1{margin:3px 0 2px;font-size:22px}.lookupTopbar p{margin:0;color:#8297aa;font-size:11px}.lookupGlobalSearch{display:flex;align-items:center;gap:7px;width:min(360px,34%);height:40px;padding:0 12px;border:1px solid #263e53;border-radius:9px;background:#0b1722;color:#5d7a92;font-size:14px}.lookupGlobalSearch span{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lookupTopbar>.btn{white-space:nowrap;height:40px}.lookupResult{margin:0}.lookupEmpty{padding:55px 20px;border:1px dashed #2b455c;border-radius:10px;text-align:center;color:#738a9d;background:#0b1722}.lookupEmpty small{display:block;margin-top:7px;font-size:10px}.recordCard{border:1px solid #20394d;border-radius:10px;background:#0a1621;overflow:hidden;box-shadow:0 12px 35px #0003}.recordHead{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;background:linear-gradient(90deg,#0e2334,#0b1722);border-bottom:1px solid #20384b}.recordTitle h2{margin:3px 0 2px;font-size:22px}.recordTitle>span:last-child{color:#93a9bc;font-size:11px}.lookupStatus{display:inline-flex;align-items:center;gap:5px;padding:9px 12px;border-radius:7px;font-size:10px;font-weight:900;letter-spacing:.03em}.lookupStatus.good{color:#69e4a2;background:#09281e;border:1px solid #176b49}.lookupStatus.bad{color:#ff7780;background:#32161c;border:1px solid #8c2e3c}.recordTabs{display:flex;gap:6px;flex-wrap:wrap;padding:9px 12px;border-bottom:1px solid #20384b;background:#0b1824}.recordTabs button{border:1px solid #263f54;background:#11202d;color:#9db0c1;border-radius:7px;padding:8px 11px;font-size:10px;font-weight:800}.recordTabs button.active{color:#fff;background:#096bd4;border-color:#248cf2}.personTopGrid{display:grid;grid-template-columns:190px minmax(260px,1fr) minmax(250px,.9fr);gap:10px;padding:12px}.portraitPanel,.basicPanel,.vehicleFacts,.ownerPanel,.carPanel,.infoBox,.dataPanel{border:1px solid #20394c;border-radius:8px;background:#0d1b27}.portraitPanel{display:grid;place-items:center;padding:12px;min-height:270px}.syntheticPortrait{position:relative;width:170px;max-width:100%}.syntheticPortrait svg{display:block;width:100%;height:auto;border-radius:10px}.portraitBadge{position:absolute;bottom:8px;right:8px;width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:#0b74d8;color:#fff;border:2px solid #0a1621;font-size:9px;font-weight:900}.basicPanel{padding:13px}.basicPanel h3,.dataPanel h3,.ownerPanel h3,.infoBox>b,.historyPanel h3{margin:0 0 10px;font-size:12px}.subHead{margin-top:17px!important;padding-top:13px;border-top:1px solid #20384b}.lookupKV{display:grid;grid-template-columns:minmax(105px,.9fr) minmax(0,1.5fr);gap:8px;padding:7px 0;border-bottom:1px solid #1a3041}.lookupKV:last-child{border-bottom:0}.lookupKV small{font-size:9px;color:#71899d;text-transform:uppercase;letter-spacing:.04em}.lookupKV b{font-size:11px;color:#e4edf4;overflow-wrap:anywhere}.emaTopGrid{display:grid;grid-template-columns:180px minmax(290px,1fr) minmax(290px,.95fr);gap:10px;padding:12px}.emaTopGrid .portraitPanel{min-height:255px}.emaLowerGrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0 12px 12px}.dataPanel{padding:13px}.alertStack{display:grid;gap:10px}.alertBox,.infoBox{padding:13px;border-radius:8px}.alertBox.bad{background:#29131a;border:1px solid #873041;color:#ffccd0}.alertBox.good{background:#0b271e;border:1px solid #176a48;color:#8ee5b4}.alertBox b,.infoBox>b{font-size:12px}.alertBox p,.alertBox li{font-size:10px;line-height:1.55;color:#b7c5d1}.alertBox ul{margin:8px 0 0;padding-left:18px}.infoBox{background:#0d1b27;border:1px solid #20394c}.contactRow{display:grid;grid-template-columns:90px minmax(0,1fr) auto;gap:6px;padding:8px 0;border-top:1px solid #20384b}.contactRow span,.contactRow small{font-size:9px;color:#7990a3}.contactRow b{font-size:10px}.historyPanel{margin:0 12px 12px;border:1px solid #20394c;border-radius:8px;overflow:hidden;background:#0d1b27}.historyPanel h3{padding:13px;margin:0;border-bottom:1px solid #20394c}.historyPanel table{width:100%;border-collapse:collapse;font-size:10px}.historyPanel th,.historyPanel td{padding:9px;border-bottom:1px solid #1d3243;text-align:left}.historyPanel th{color:#6f879a;font-size:8px;text-transform:uppercase}.tableGood{color:#55dda0;background:#09281e;border:1px solid #176a48;border-radius:5px;padding:3px 6px}.wantedPanel{display:grid;grid-template-columns:1.1fr .9fr;gap:20px;margin:0 12px 12px;padding:16px;border:1px solid #9b3340;border-radius:9px;background:linear-gradient(90deg,#2b131a,#1b1218);color:#f2cbd0}.wantedPanel h3{margin:0 0 8px;font-size:15px}.wantedPanel p{font-size:10px;line-height:1.55;margin:6px 0}.wantedIcon{float:left;font-size:25px;margin-right:10px;color:#ff6872}.clearPanel{margin:0 12px 12px;padding:17px;border:1px solid #176a48;background:#0b271e;border-radius:8px;color:#83dfae}.clearPanel b,.clearPanel span{display:block}.clearPanel span{font-size:10px;margin-top:4px;color:#9db9aa}.threeInfo{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:0 12px 12px}.threeInfo>div{padding:14px;border:1px solid #20394c;border-radius:8px;background:#0d1b27}.threeInfo h3{font-size:11px;margin:0 0 9px}.threeInfo b{font-size:10px;color:#8ee1b4}.licenseGrid{display:grid;grid-template-columns:190px 1fr minmax(240px,.8fr);gap:10px;padding:12px}.vehicleMainGrid{display:grid;grid-template-columns:minmax(330px,1.05fr) minmax(300px,.85fr) minmax(260px,.75fr);gap:10px;padding:12px}.carPanel{overflow:hidden;background:#07111a}.syntheticCar svg{display:block;width:100%;height:auto}.ownerPanel{padding:13px;margin-top:10px}.ownerLine{display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px;align-items:center}.ownerAvatar{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:#0b5ba6;border:1px solid #2a8be3;color:#fff;font-weight:900}.ownerLine b,.ownerLine span,.ownerLine small{display:block}.ownerLine b{font-size:13px}.ownerLine span{font-size:10px;color:#a8bac9;margin-top:3px}.ownerLine small{font-size:9px;color:#71899b;margin-top:4px}.vehicleFacts{padding:13px}.vehicleSideAlerts{display:grid;gap:10px}.vehicleSideAlerts .infoBox{padding:13px}.goodKV b{color:#66e3a4}.vehicleTabs{margin:0 12px 12px;border:1px solid #20384b;border-radius:8px}.lookupTransfer{display:grid;gap:9px;padding:13px 15px;border-top:1px solid #20384b;background:#0b1824}.lookupTransferHead{display:flex;justify-content:space-between;align-items:center;gap:8px}.lookupTransferHead b{font-size:10px;letter-spacing:.05em}.lookupTransfer .lookupInputField{display:grid;gap:5px}.lookupTransfer .lookupInputField span{font-size:8px;color:#7890a2;font-weight:900}.lookupTransferButtons{display:flex;flex-wrap:wrap;gap:7px}.lookupTransferButtons .btn{min-height:34px;font-size:9px}.lookupTransferButtons .btn.sent{border-color:#2e7659;color:#79d5a7}.lookupTransferNote{color:#7e93a5;font-size:9px}.licenseGrid .syntheticPortrait{align-self:start}
@media(max-width:1200px){.lookupWorkspace{grid-template-columns:260px minmax(0,1fr)}.personTopGrid,.emaTopGrid{grid-template-columns:170px minmax(240px,1fr)}.personTopGrid>.basicPanel:last-child,.emaTopGrid>.alertStack{grid-column:2}.vehicleMainGrid{grid-template-columns:1fr 1fr}.vehicleSideAlerts{grid-column:1/-1;grid-template-columns:1fr 1fr 1fr}}
@media(max-width:850px){.lookupWorkspace{grid-template-columns:1fr;height:auto;min-height:100%}.lookupSearchRail{border-right:0;border-bottom:1px solid #263b4d;max-height:none}.lookupTopbar{position:static;flex-wrap:wrap}.lookupGlobalSearch{width:100%;order:3}.personTopGrid,.emaTopGrid,.licenseGrid,.vehicleMainGrid,.emaLowerGrid,.wantedPanel,.threeInfo{grid-template-columns:1fr}.personTopGrid>.basicPanel:last-child,.emaTopGrid>.alertStack{grid-column:auto}.vehicleSideAlerts{grid-column:auto;grid-template-columns:1fr}.lookupMainArea{overflow:visible}.lookupView{overflow:auto!important;height:auto!important}}

/* v4.40 Admin Control Center */
.adminControlHero{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px;margin-bottom:12px;border:1px solid #315d84;border-radius:9px;background:linear-gradient(110deg,#10253a,#0d1823)}
.adminControlHero b{font-size:16px;color:#eef7ff}.adminControlHero p{margin:5px 0 0;color:#8fa6b9;font-size:10px;line-height:1.5;max-width:760px}.adminBigAction{min-width:220px;min-height:52px;font-size:12px;font-weight:900;letter-spacing:.03em}
.adminControlGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}.adminControlCard{display:grid;grid-template-columns:32px 1fr;grid-template-rows:auto auto;gap:2px 8px;text-align:left;padding:12px;border:1px solid #294258;border-radius:8px;background:#0e1b27;color:#e2edf7}.adminControlCard:hover{border-color:#438ac8;background:#122a3e}.adminControlCard>span{grid-row:1/3;font-size:23px;display:grid;place-items:center}.adminControlCard b{font-size:10px}.adminControlCard small{font-size:8px;color:#8198ab;line-height:1.4}.adminControlSplit{display:grid;grid-template-columns:1.3fr .7fr;gap:10px}.adminSubPanel{border:1px solid #22384a;border-radius:8px;background:#0b1721;padding:10px}.adminGlobalActions{display:grid;gap:7px}.adminGlobalActions .btn{justify-content:flex-start;text-align:left}
.adminQueryGrid{display:grid;grid-template-columns:minmax(260px,.75fr) minmax(420px,1.25fr);gap:10px}.adminQueryTypeLabel,.adminQueryFields label,.adminQueryTransfer label{display:grid;gap:5px;color:#a9b9c8;font-size:9px;font-weight:800}.adminQueryFields{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:9px 0}.adminQueryFields .input,.adminQueryTransfer .input{width:100%;min-width:0;min-height:36px;padding:7px 9px;border:1px solid #2b4052;border-radius:5px;background:#09131c;color:#e3edf6;font-size:10px}.adminQueryResult{min-height:115px}.adminQueryHit{display:grid;gap:5px;padding:13px;border:1px solid #29445a;border-radius:7px;background:#0d1b27}.adminQueryHit b{font-size:13px}.adminQueryHit span,.adminQueryHit small{font-size:9px;color:#9bb0c1}.adminQueryHit strong{padding:6px 7px;border-radius:5px;background:#28171b;color:#ff8c95;font-size:9px}.adminQueryHit .queryGood{background:#10291e;color:#7ee0a7}.adminQueryTransfer{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid #22384a}.adminQueryTransfer .wide{grid-column:1/-1}
.adminWeatherCards{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px;margin-top:10px}.adminWeatherCards button{min-height:56px;padding:8px;text-align:left;border:1px solid #263e51;background:#0d1a25}.adminWeatherCards button:hover{border-color:#438ac8}.adminWeatherCards b,.adminWeatherCards small{display:block}.adminWeatherCards b{font-size:9px}.adminWeatherCards small{margin-top:4px;color:#8095a8;font-size:8px}
@media(max-width:1100px){.adminControlGrid{grid-template-columns:1fr 1fr}.adminWeatherCards{grid-template-columns:repeat(3,1fr)}.adminQueryGrid,.adminControlSplit{grid-template-columns:1fr}}
@media(max-width:700px){.adminControlHero{align-items:stretch;flex-direction:column}.adminBigAction{width:100%}.adminControlGrid{grid-template-columns:1fr}.adminQueryFields,.adminQueryTransfer{grid-template-columns:1fr}.adminQueryTransfer .wide{grid-column:auto}.adminWeatherCards{grid-template-columns:1fr 1fr}}
/* Admin test/layout guarantees */
.adminWindow{min-height:0}
.adminBody{grid-template-rows:minmax(0,1fr);flex:1;min-height:0}
.adminViews{min-height:0}


/* v4.40 HOTFIX – Abfrage darf die normale Leitstellenansicht nicht überlagern.
   .lookupView hat in der Register-Gestaltung display:... !important. Dadurch
   konnte das native [hidden]-Attribut der anderen Routen überschrieben werden.
   Die Abfrage wird deshalb ausschließlich bei der Route persons/vehicleLookup
   sichtbar gemacht. */
.view.lookupView[hidden] {
  display: none !important;
}
#app[data-route="persons"] .view.lookupView,
#app[data-route="vehicleLookup"] .view.lookupView {
  display: grid !important;
}

/* v4.41 – Test-Abfrageaufträge / normaler Leitstellen-Workflow */
.lookupPending{margin-top:14px;padding-top:12px;border-top:1px solid #20384b}
.lookupRequestItem{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:7px;align-items:center;padding:8px 7px;margin:3px 0;text-align:left;border:1px solid #294258;border-radius:7px;background:#0c1925;color:#dce8f1;cursor:pointer}
.lookupRequestItem:hover{border-color:#3e84be;background:#102536}
.lookupRequestItem b,.lookupRequestItem small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lookupRequestItem b{font-size:9px}.lookupRequestItem small{font-size:8px;color:#7890a3;margin-top:2px}.lookupRequestItem time{font-size:8px;color:#688096}
.requestType,.adminQueueType{display:inline-flex;align-items:center;justify-content:center;min-width:45px;padding:4px 5px;border-radius:5px;font-size:7px;font-weight:900;letter-spacing:.04em;border:1px solid #31506a;background:#10283a;color:#7eb9ed}
.requestType.ema,.adminQueueType.ema{color:#9fe7cf;border-color:#2b6b59;background:#10271f}.requestType.vehicle,.adminQueueType.vehicle{color:#f0cb83;border-color:#725a2d;background:#2a2415}
.adminQueryRequestGrid{grid-template-columns:minmax(280px,.72fr) minmax(430px,1.28fr)}
.adminQueryQueuePanel{min-height:460px}
.adminQueryFilters{display:flex;gap:5px;flex-wrap:wrap;margin:8px 0 10px}.adminQueryFilters .btn{min-height:30px;padding:6px 9px;font-size:8px}.adminQueryFilters .btn.active{background:#135b99;border-color:#328ed5;color:#fff}
.adminQueryQueue{display:grid;gap:5px;max-height:500px;overflow:auto;padding-right:2px}
.adminQueryQueueItem{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;padding:9px;text-align:left;border:1px solid #263e52;border-radius:7px;background:#0c1823;color:#e4edf4;cursor:pointer}.adminQueryQueueItem:hover{border-color:#438ac8;background:#102637}
.adminQueryQueueItem b,.adminQueryQueueItem small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adminQueryQueueItem b{font-size:10px}.adminQueryQueueItem small{font-size:8px;color:#8198aa;margin-top:3px}.adminQueryQueueItem time{font-size:8px;color:#6d8498}
.adminQueryReason{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.adminQueryReason label{display:grid;gap:5px;color:#a9b9c8;font-size:9px;font-weight:800}.adminQueryReason .input{width:100%;min-height:36px;padding:7px 9px;border:1px solid #2b4052;border-radius:5px;background:#09131c;color:#e3edf6;font-size:10px}
.adminQueryExample{display:flex;align-items:center;gap:8px;margin:10px 0}.adminQueryExample small{font-size:8px;color:#7890a3;line-height:1.4}.queryRequestCreated{margin-top:8px}.queryRequestCreated strong{display:block}
@media(max-width:1100px){.adminQueryRequestGrid{grid-template-columns:1fr}.adminQueryQueuePanel{min-height:260px}}
@media(max-width:700px){.adminQueryReason{grid-template-columns:1fr}.lookupRequestItem,.adminQueryQueueItem{grid-template-columns:1fr}.requestType,.adminQueueType{justify-self:start}}

/* =========================================================
   v4.42 – Leitstellen-Abfrage: zentrale Eingabe + großes Ergebnisfenster
   ========================================================= */
body.lookupModalOpen{overflow:hidden}
.lookupView{height:100%;overflow:auto;background:#06111a}
.lookupQueryOnly{min-height:100%;display:flex;flex-direction:column;align-items:center;padding:42px 32px 60px;box-sizing:border-box}
.lookupQueryHeader{width:min(1120px,100%);display:flex;align-items:center;gap:16px;margin:8px auto 22px}
.lookupQueryIcon{width:54px;height:54px;border-radius:13px;display:grid;place-items:center;background:#0b2f4b;border:1px solid #2a72a8;color:#4aa9ff;font-size:28px;box-shadow:0 8px 25px rgba(0,0,0,.22)}
.lookupQueryHeader h1{margin:2px 0 4px;font-size:25px;color:#f1f6fa}.lookupQueryHeader p{margin:0;color:#8199aa;font-size:11px}.lookupQueryHeader>button{margin-left:auto}
.lookupQueryCard{width:min(960px,100%);margin:38px auto 0;padding:28px 32px 25px;border:1px solid #294c68;border-radius:14px;background:linear-gradient(180deg,#0b1b29,#08141f 72%);box-shadow:0 20px 60px rgba(0,0,0,.35)}
.lookupQueryCardHead{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;border-bottom:1px solid #1d3548;padding-bottom:19px}.lookupQueryCardHead h2{margin:4px 0 5px;font-size:22px}.lookupQueryCardHead p{margin:0;color:#7890a3;font-size:10px}.lookupLiveBadge{white-space:nowrap;color:#63d69b;border:1px solid #276f4e;background:#0b241b;border-radius:999px;padding:7px 10px;font-size:8px;font-weight:900}
.lookupTypeRow{margin:20px 0 8px}.lookupTypeChoice{display:grid;gap:7px;max-width:430px}.lookupTypeChoice>span{font-size:9px;color:#7590a5;font-weight:900;letter-spacing:.08em}.lookupTypeChoice .input{min-height:42px;font-size:12px}
.lookupQueryFieldsCenter{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}.lookupQueryFieldsCenter .lookupInputField{display:grid;gap:6px}.lookupQueryFieldsCenter .lookupInputField span{font-size:9px;color:#7e97aa;font-weight:900}.lookupQueryFieldsCenter .input{min-height:45px;padding:9px 11px;font-size:12px;border-radius:7px}
.lookupQueryActions{display:flex;justify-content:center;margin-top:24px}.lookupStartCenter{min-width:290px;min-height:47px;font-size:13px;font-weight:900}.lookupQueryStatus{min-height:19px;text-align:center;margin-top:12px;color:#6e879b;font-size:9px}.lookupQueryStatus.warn{color:#ff9aa2}.lookupQueryStatus:empty{display:none}
.lookupRequestHint{margin-top:15px;padding:10px 12px;border:1px solid #315c78;background:#0b2130;border-radius:7px;color:#9fc1d7;font-size:9px}.lookupRequestHint[hidden]{display:none}
.lookupPendingCenter{width:min(960px,100%);margin:18px auto 0;padding:15px 18px;border:1px solid #1e3b51;border-radius:10px;background:#081722}.lookupPendingCenter h3{margin:3px 0 10px;font-size:13px}.lookupPendingCenter #lookupPendingList{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.lookupPendingCenter .lookupRequestItem{margin:0}
.lookupResultModal{position:fixed;inset:0;z-index:12000;display:grid;place-items:center}.lookupResultModal[hidden]{display:none}.lookupResultBackdrop{position:absolute;inset:0;background:rgba(2,8,13,.84);backdrop-filter:blur(5px)}
.lookupResultWindow{position:relative;width:min(1600px,calc(100vw - 24px));height:min(940px,calc(100vh - 24px));display:flex;flex-direction:column;border:1px solid #315b79;border-radius:14px;background:#07131e;box-shadow:0 30px 100px rgba(0,0,0,.6);overflow:hidden}
.lookupResultModalHeader{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid #213b50;background:#091a28;flex:0 0 auto}.lookupResultModalIdentity{display:flex;align-items:center;gap:12px}.lookupResultModalIcon{width:43px;height:43px;border-radius:9px;display:grid;place-items:center;background:#0b3d63;color:#6ebeff;border:1px solid #2b80bb;font-size:23px}.lookupResultModalHeader span{font-size:8px;color:#559fe0;font-weight:900;letter-spacing:.09em}.lookupResultModalHeader h2{margin:3px 0 2px;font-size:19px}.lookupResultModalHeader small{color:#7891a5;font-size:9px}
.lookupResultModalBody{flex:1;overflow:auto;padding:0}.lookupResultModalBody .recordCard{border:0;border-radius:0;background:transparent;min-height:100%}.lookupResultModalBody .recordHead{padding:17px 20px}.lookupResultModalBody .recordTabs{padding:0 20px;border-top:1px solid #183044;border-bottom:1px solid #183044;background:#091824;position:sticky;top:0;z-index:4}.lookupResultModalBody .lookupTransfer{margin:0 20px 20px}
.lookupResultModalFooter{flex:0 0 auto;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 16px;border-top:1px solid #20394d;background:#081724;color:#6f8799;font-size:8px}.lookupResultModalFooter .btn{min-height:33px}
.lookupResultModalBody .recordTabs button{padding:11px 14px;font-size:9px}.lookupResultModalBody .personTopGrid{grid-template-columns:180px minmax(300px,1fr) minmax(300px,1fr);padding:16px 20px}.lookupResultModalBody .portraitPanel{display:flex;align-items:flex-start;justify-content:center;min-height:270px}.lookupResultModalBody .syntheticPortrait{width:180px;height:235px;position:relative;border-radius:10px;overflow:hidden;border:1px solid #31516a;background:#10202e}.lookupResultModalBody .syntheticPortrait img{width:100%;height:100%;display:block;object-fit:cover;object-position:center top}.lookupResultModalBody .portraitBadge{position:absolute;right:8px;bottom:8px;width:31px;height:31px;display:grid;place-items:center;border-radius:50%;background:#0874cf;color:white;border:2px solid #06131d;font-size:8px;font-weight:900}
.lookupResultModalBody .wantedPanel,.lookupResultModalBody .clearPanel,.lookupResultModalBody .threeInfo{margin-left:20px;margin-right:20px}.lookupResultModalBody .threeInfo{padding-bottom:16px}.lookupResultModalBody .lookupInfoNote{margin-top:10px;padding:9px;border:1px solid #4a2930;background:#27131a;border-radius:6px;color:#82c8f6;font-size:9px}.lookupResultModalBody .lookupInfoNote span{color:#a8bac7}
.lookupTabContent{min-height:340px}.lookupTabContent .resultOverview{padding-bottom:4px}.tabPanel{padding:20px}.tabPanel h3{margin:0 0 14px;font-size:14px}.detailGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.detailGrid .lookupKV{min-height:46px}.addressBox{margin-top:14px;padding:14px;border:1px solid #29455b;border-radius:8px;background:#0b1a27;display:grid;gap:5px}.addressBox span{color:#a8bac8;font-size:11px}.resultList{display:grid;gap:7px}.resultListRow{display:grid;grid-template-columns:110px minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;border:1px solid #203d52;border-radius:7px;background:#0b1925}.resultListRow b{font-size:11px}.resultListRow span,.resultListRow em{font-size:9px;color:#8da4b5;font-style:normal}.contactGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.contactGrid .infoBox{display:grid;gap:5px}.contactGrid .infoBox strong{font-size:12px}.contactGrid .infoBox span{font-size:9px;color:#91a7b7}
.lookupResultModalBody table{width:100%;border-collapse:collapse;font-size:10px}.lookupResultModalBody th,.lookupResultModalBody td{padding:10px;border-bottom:1px solid #1d3547;text-align:left}.lookupResultModalBody th{color:#7290a5;font-size:8px;text-transform:uppercase}.lookupResultModalBody td{color:#c8d6e0}.largeCarTab{max-width:800px;margin:auto}.largeCarTab .syntheticCar svg{width:100%}
.lookupResultModalBody .vehicleMainGrid{grid-template-columns:minmax(350px,1.1fr) minmax(300px,.85fr) minmax(260px,.75fr);padding:16px 20px}.lookupResultModalBody .vehicleTabs{margin:0;padding:0 20px}.lookupResultModalBody .vehicleRecord .lookupTabContent{min-height:390px}
@media(max-width:900px){.lookupQueryOnly{padding:25px 16px}.lookupQueryCard{padding:20px}.lookupQueryFieldsCenter{grid-template-columns:1fr}.lookupResultWindow{width:calc(100vw - 16px);height:calc(100vh - 16px)}.lookupResultModalBody .personTopGrid,.lookupResultModalBody .vehicleMainGrid{grid-template-columns:1fr}.lookupResultModalBody .portraitPanel{min-height:240px}.lookupResultModalBody .threeInfo{grid-template-columns:1fr}.detailGrid,.contactGrid{grid-template-columns:1fr}.lookupPendingCenter #lookupPendingList{grid-template-columns:1fr}}
/* v4.44 – realistischere Fahrzeugtreffer / getrennte Fahndungs- und Sicherstellungslogik */
.vehiclePhotoFrame{position:relative;min-height:300px;background:#07131e;border:1px solid #29455c;border-radius:9px;overflow:hidden}
.vehiclePhotoFrame img{display:block;width:100%;height:300px;object-fit:cover;object-position:center}
.vehiclePhotoCaption{position:absolute;left:12px;right:12px;bottom:12px;display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 11px;border:1px solid #34546d;border-radius:8px;background:rgba(5,15,24,.86);backdrop-filter:blur(4px)}
.vehiclePhotoCaption b{font-size:12px;color:#edf4f8}.vehiclePhotoCaption span{font-size:10px;color:#8fb0c5;font-weight:800}
.vehicleNotice{min-height:0}.vehicleNotice .lookupKV{grid-template-columns:105px minmax(0,1fr);border-color:#452733}.vehicleNotice .lookupKV b{color:#f0d7db}.vehicleNotice p{margin:9px 0 0}
.alertBox.warn{background:#2a2110;border:1px solid #866a23;color:#ffe1a0}
.alertBox.warn .lookupKV{border-color:#4b3c19}.alertBox.warn .lookupKV b{color:#ffe7a9}
.vehicleRecord .vehicleFacts h3{margin:0 0 9px;font-size:12px}
.vehicleRecord .vehicleSideAlerts{align-content:start}
@media(max-width:900px){.vehiclePhotoFrame,.vehiclePhotoFrame img{height:260px}}

/* ---------- Fahrzeug hinzufügen · neuer Einsatzkräfte-Arbeitsplatz ----- */
.modalBox.fleetAddWorkspace{width:min(1480px,calc(100vw - 28px));height:min(900px,calc(100vh - 28px));max-height:calc(100vh - 28px);padding:0;overflow:hidden;background:#07131e;border:1px solid #284763;border-radius:14px;display:flex;flex-direction:column;min-height:0}
.fleetAddHead{display:flex;justify-content:space-between;gap:20px;padding:18px 22px;border-bottom:1px solid #21394e;background:linear-gradient(180deg,#0b1c2b,#08131e)}
.fleetEyebrow{font-size:10px;font-weight:900;letter-spacing:.1em;color:#3f9bff}.fleetAddHead h2{margin:4px 0 3px;font-size:22px}.fleetAddHead p{margin:0;color:#8195aa;font-size:11px}.fleetClose{width:40px;height:40px;border:1px solid #29445c;border-radius:9px;background:#101f2e;color:#dbe7f2;font-size:17px;cursor:pointer}
.fleetOrgRail{display:grid;grid-template-columns:repeat(8,minmax(105px,1fr));gap:8px;padding:12px 16px;border-bottom:1px solid #20364a;background:#091824}.fleetOrg{min-height:62px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px;padding:8px 10px;border:1px solid #28425a;border-radius:10px;background:#0d1d2c;color:#dbe7f2;cursor:pointer;text-align:left}.fleetOrg span{font-size:22px}.fleetOrg b{font-size:11px}.fleetOrg em{font-style:normal;font-size:9px;color:#7e91a6;background:#14283a;padding:3px 6px;border-radius:999px}.fleetOrg.active{border-color:#1d83ff;box-shadow:0 0 0 1px #1d83ff44 inset;background:#102c49}.fleetOrg.fire.active{border-color:#ff3f52}.fleetOrg.pol.active,.fleetOrg.polheli.active{border-color:#3e91ff}.fleetOrg.ems.active,.fleetOrg.nef.active{border-color:#ff3f83}.fleetOrg.heli.active{border-color:#f2bd45}.fleetOrg.bund.active{border-color:#4c9fff}.fleetOrg.thw.active{border-color:#48a9d4}
.fleetToolbar{display:flex;align-items:center;gap:14px;padding:10px 16px;border-bottom:1px solid #20364a}.fleetSearch{flex:1;display:flex;align-items:center;gap:8px;border:1px solid #28445d;border-radius:9px;background:#081521;padding:0 11px}.fleetSearch span{color:#6d89a4;font-size:18px}.fleetSearch input{height:42px;border:0;background:transparent;outline:0;color:#e9f1f8;flex:1;font-size:12px}.fleetToggle{display:flex;align-items:center;gap:7px;color:#b4c3d1;font-size:11px;white-space:nowrap}.fleetToggle input{accent-color:#1d83ff}
.fleetWorkspace{display:grid;grid-template-columns:minmax(0,1fr) 360px;flex:1 1 auto;height:auto;min-height:0;overflow:hidden}.fleetGrid{overflow:auto;padding:14px;display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:10px;align-content:start}.fleetCard{padding:0;overflow:hidden;text-align:left;border:1px solid #254158;border-radius:11px;background:#0c1b28;color:#eaf1f7;cursor:pointer;transition:.15s;min-width:0}.fleetCard:hover{border-color:#3c8fe8;transform:translateY(-1px)}.fleetCard.selected{border-color:#ff3263;box-shadow:0 0 0 1px #ff326344,0 0 20px #ff32631c}.fleetCardBody{padding:9px 10px 11px}.fleetStatus{font-size:9px;color:#37e38a;margin-bottom:5px}.fleetCard strong{display:block;font-size:13px}.fleetCard small{display:block;color:#8498ab;font-size:9px;line-height:1.35;min-height:34px;margin-top:5px}.fleetCardBody>span{display:block;color:#a9bbca;font-size:9px;margin-top:8px}
.fleetVehicleArt{height:118px;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(circle at 50% 45%,#1b3a55 0,#102538 42%,#07131d 78%);border-bottom:1px solid #1d354a}.fleetVehicleArt:before{content:'';position:absolute;width:78%;height:40%;bottom:16%;border-radius:45% 55% 18% 18%;background:linear-gradient(145deg,#dbe3e8,#687888 62%,#283848);box-shadow:0 10px 20px #0008}.fleetVehicleArt span{position:relative;z-index:2;font-size:52px;filter:drop-shadow(0 6px 5px #0008)}.fleetVehicleArt i,.fleetVehicleArt b{position:absolute;z-index:3;width:28px;height:7px;border-radius:5px;background:#48a8ff;top:31%;box-shadow:0 0 13px #268fff}.fleetVehicleArt b{right:23%;left:auto}.fleetArt-fire:after,.fleetArt-ems:after,.fleetArt-nef:after{content:'';position:absolute;left:14%;right:14%;bottom:25%;height:3px;background:#ef3340;box-shadow:0 -7px #f1d34f}.fleetArt-pol:after,.fleetArt-bund:after{content:'';position:absolute;left:15%;right:15%;bottom:27%;height:4px;background:#317fff}.fleetArt-heli span,.fleetArt-polheli span{font-size:57px}.fleetArt-thw:after{content:'';position:absolute;left:14%;right:14%;bottom:25%;height:7px;background:#48a9d4}.fleetArt-ems:before,.fleetArt-nef:before{background:linear-gradient(145deg,#f2f4f4,#d8dce0 60%,#778492)}
.fleetDetails{border-left:1px solid #20394e;background:#0a1824;padding:16px;overflow:auto}.fleetSelectedBadge{font-size:9px;color:#6faeff;font-weight:900;letter-spacing:.08em;margin-bottom:9px}.fleetDetails .fleetVehicleArt{height:190px;border:1px solid #29445a;border-radius:10px;margin-bottom:12px}.fleetDetails .fleetVehicleArt span{font-size:78px}.fleetDetails h3{margin:4px 0;font-size:20px}.fleetDescription{color:#879caf;font-size:11px;line-height:1.5;min-height:48px}.fleetDetails label{display:block;color:#9fb0c1;font-size:10px;font-weight:800;margin-top:11px}.fleetDetails .input{width:100%;box-sizing:border-box;margin-top:5px}.fleetFacts{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:12px 0}.fleetFacts div{padding:9px;border:1px solid #243d53;border-radius:8px;background:#0d1c2a}.fleetFacts small{display:block;color:#71869a;font-size:8px}.fleetFacts b{display:block;font-size:10px;margin-top:3px}.fleetFacts b.ok{color:#42df91}.fleetAddButton{width:100%;height:46px;border:0;border-radius:9px;background:#ff2358;color:#fff;font-weight:900;cursor:pointer;box-shadow:0 7px 20px #ff235822}.fleetAddButton:hover{background:#ff3e6d}.fleetCancel{width:100%;height:40px;margin-top:8px;border:1px solid #2b4358;border-radius:9px;background:#101f2d;color:#bdd0df;cursor:pointer}
@media(max-width:1100px){.fleetOrgRail{grid-template-columns:repeat(4,1fr)}.fleetGrid{grid-template-columns:repeat(3,minmax(160px,1fr))}.fleetWorkspace{grid-template-columns:minmax(0,1fr) 320px}}
@media(max-width:820px){.modalBox.fleetAddWorkspace{width:calc(100vw - 12px);height:calc(100vh - 12px)}.fleetOrgRail{grid-template-columns:repeat(2,1fr);overflow:auto;max-height:150px}.fleetWorkspace{grid-template-columns:1fr}.fleetDetails{display:none}.fleetGrid{grid-template-columns:repeat(2,minmax(140px,1fr))}.fleetToolbar{flex-direction:column;align-items:stretch}.fleetToggle{white-space:normal}.fleetWorkspace{height:auto;flex:1 1 auto;min-height:0}}
@media(max-width:500px){.fleetGrid{grid-template-columns:1fr}.fleetAddHead h2{font-size:18px}.fleetAddHead p{display:none}}

/* v4.46 – echte Einsatzfahrzeug-Fotografien */
.fleetVehicleArt{background:#081722;position:relative;overflow:hidden;}
.fleetVehiclePhoto{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:1;}
.fleetVehicleArt:after{z-index:2;}
.fleetVehicleFallback{position:relative;z-index:3;display:none;align-items:center;justify-content:center;width:100%;height:100%;font-size:52px;}
.fleetVehicleArt i,.fleetVehicleArt b{z-index:4;}
.fleetDetails .fleetVehicleArt{height:190px;background:#081722;}
.fleetDetails .fleetVehiclePhoto{object-position:center center;}
.fleetPhotoCredit{margin:7px 0 10px;color:#71879b;font-size:8px;line-height:1.35;}
.fleetPhotoCredit a{color:#70b2ff;text-decoration:none;}
.fleetPhotoCredit a:hover{text-decoration:underline;}

/* v4.46 – echte Einsatzfahrzeug-Fotografien */
.fleetVehicleArt{background:#081722;position:relative;overflow:hidden}
.fleetVehiclePhoto{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:1}
.fleetVehicleArt:after{z-index:2}
.fleetVehicleFallback{position:relative;z-index:3;display:none;align-items:center;justify-content:center;width:100%;height:100%;font-size:52px}
.fleetVehicleArt i,.fleetVehicleArt b{z-index:4}
.fleetDetails .fleetVehicleArt{height:190px;background:#081722}
.fleetDetails .fleetVehiclePhoto{object-position:center center}
.fleetPhotoCredit{margin:7px 0 10px;color:#71879b;font-size:8px;line-height:1.35}
.fleetPhotoCredit a{color:#70b2ff;text-decoration:none}
.fleetPhotoCredit a:hover{text-decoration:underline}

/* v4.50 – lokale, hochskalierte Fahrzeugbilder aus dem Fahrzeugbilder-Paket */
.fleetVehicleArt{
  background:#071a2c !important;
  position:relative;
  overflow:hidden;
}
.fleetVehiclePhoto{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  object-fit:contain !important;
  display:block !important;
  z-index:1 !important;
  background:#071a2c;
}
.fleetVehicleArt:after,
.fleetVehicleArt i,
.fleetVehicleArt b{
  display:none !important;
}
.fleetVehicleFallback{
  position:relative;
  z-index:3;
  display:none;
  align-items:center;
  justify-content:center;
  width:100%;
  height:100%;
  font-size:52px;
}
.fleetDetails .fleetVehicleArt{
  height:205px;
}


/* v4.54 – Direktabfrage aus dem Funkgerät */
.radioDirectLookup{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 10px;padding:10px 11px;border:1px solid #3d6c95;border-left:3px solid var(--blue);border-radius:8px;background:linear-gradient(110deg,#12283b,#101a24)}
.radioDirectLookup b{display:block;font-size:11px}.radioDirectLookup small{display:block;margin-top:3px;color:#8ea6b8;font-size:10px}.radioDirectLookup .btn{flex:0 0 auto}
.radioLookupOverlay{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:20px;background:rgba(2,7,12,.78);backdrop-filter:blur(3px)}
.radioLookupDialog{width:min(720px,calc(100vw - 32px));max-height:min(820px,calc(100vh - 40px));overflow:auto;border:1px solid #31516c;border-radius:12px;background:#0c1721;box-shadow:0 24px 80px #000b;color:var(--text)}
.radioLookupHead{display:flex;justify-content:space-between;gap:15px;padding:16px 18px;border-bottom:1px solid #294052;background:#101e2b}.radioLookupHead span{font-size:9px;font-weight:900;letter-spacing:.1em;color:#6eb6ff}.radioLookupHead h2{margin:4px 0;font-size:19px}.radioLookupHead small{color:#8fa5b5;font-size:10px}
.radioLookupSource{margin:14px 18px 0;padding:10px 12px;border:1px solid #294457;border-radius:8px;background:#10202c}.radioLookupSource b{display:block;font-size:10px;color:#9ab1c2;text-transform:uppercase;letter-spacing:.06em}.radioLookupSource span{display:block;margin-top:4px;font-size:12px}
.radioLookupFields{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:15px 18px}.radioLookupFields label{display:grid;gap:5px}.radioLookupFields label span{font-size:10px;font-weight:800;color:#8fa5b5}.radioLookupFields em{font-style:normal;color:#66879f}.radioLookupActions{display:flex;justify-content:flex-end;gap:8px;padding:0 18px 14px}.radioLookupResult{padding:0 18px 18px}.radioLookupHit{display:flex;justify-content:space-between;gap:12px;padding:13px;border:1px solid #286247;border-radius:9px;background:#10251d}.radioLookupHitKicker{font-size:9px;font-weight:900;letter-spacing:.08em;color:#6bdca5}.radioLookupHit h3{margin:3px 0;font-size:17px}.radioLookupHit p{margin:0;color:#9db0bd;font-size:11px}.radioLookupHitStatus{align-self:flex-start;padding:4px 7px;border:1px solid #2e7758;border-radius:999px;color:#75e0ab;font-size:9px;font-weight:900}.radioLookupFacts{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;margin-top:10px;background:#263747;border:1px solid #263747;border-radius:7px;overflow:hidden}.radioLookupFacts .lookupKV{padding:10px;background:#101b25}.radioLookupFacts small,.radioLookupFacts b{display:block}.radioLookupFacts small{color:#71889a;font-size:8px;text-transform:uppercase}.radioLookupFacts b{margin-top:4px;font-size:11px}.radioLookupNote,.radioLookupWarn,.radioLookupError{margin-top:10px;padding:10px;border-radius:7px;font-size:10px;line-height:1.5}.radioLookupNote{border:1px solid #29475c;background:#10202c;color:#9eb1c0}.radioLookupWarn{border:1px solid #765c2a;background:#2b2316;color:#e6c77d}.radioLookupError{border:1px solid #6e3640;background:#29161b;color:#f0a8b2}
@media(max-width:700px){.radioLookupFields{grid-template-columns:1fr}.radioLookupActions{flex-direction:column}.radioLookupActions .btn{width:100%}.radioLookupFacts{grid-template-columns:1fr}}
\n\n/* ---- Live-Ortung im aktiven Notruf ----------------------------------- */\n#callOverlay .locationTrackingPanel{display:flex;align-items:center;gap:9px;margin-top:7px;padding:8px;border:1px solid #244156;border-radius:7px;background:#0a1823;overflow:hidden}\n#callOverlay .locationRadar{position:relative;flex:0 0 58px;height:58px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#173a52 0 12%,#0b1e2b 13% 100%);border:1px solid #245c7b;overflow:hidden}\n#callOverlay .locationRadar:before{content:'';position:absolute;width:6px;height:6px;border-radius:50%;background:#26d8ff;box-shadow:0 0 12px #26d8ff}\n#callOverlay .locationRadar i{position:relative;z-index:4;font-style:normal;font-weight:900;color:#8fa9ba;font-size:13px}\n#callOverlay .radarRing{position:absolute;border:1px solid rgba(38,216,255,.5);border-radius:50%;inset:10px;animation:locationPulse 2.4s infinite ease-out}\n#callOverlay .radarRing.r2{inset:18px;animation-delay:.5s}\n#callOverlay .radarRing.r3{inset:26px;animation-delay:1s}\n#callOverlay .locationTrackInfo{display:grid;gap:2px;min-width:0}\n#callOverlay .locationTrackInfo b{color:#b9eaff;font-size:9px;letter-spacing:.04em}\n#callOverlay .locationTrackInfo span{color:#8199aa;font-size:8px;line-height:1.35}\n#callOverlay .signalBars{display:flex;align-items:flex-end;gap:2px;height:13px;margin-top:2px}\n#callOverlay .signalBars i{display:block;width:4px;height:4px;border-radius:1px;background:#263b4a}\n#callOverlay .signalBars i:nth-child(2){height:6px}.signalBars i:nth-child(3){height:8px}.signalBars i:nth-child(4){height:10px}.signalBars i:nth-child(5){height:12px}\n#callOverlay .signalBars i.on{background:#21d6a0;box-shadow:0 0 5px rgba(33,214,160,.45)}\n@keyframes locationPulse{0%{transform:scale(.75);opacity:.9}100%{transform:scale(1.35);opacity:0}}\n
/* v4.59 – Live-Ortung wie im Leitstellen-Workspace */
#callOverlay .locationTrackingPanel{display:block;margin-top:8px;padding:9px;border:1px solid #244156;border-radius:8px;background:linear-gradient(180deg,#0c1d2a,#091722);overflow:hidden}
#callOverlay .locationTrackTitle{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:7px}
#callOverlay .locationTrackTitle small{display:block;color:#76bfe5;font-size:8px;font-weight:900;letter-spacing:.08em}
#callOverlay .locationTrackTitle b{display:block;margin-top:3px;color:#e1f5ff;font-size:11px}
#callOverlay .locationSignal{display:grid;justify-items:end;gap:2px}.locationSignal>span{color:#708b9e;font-size:7px}
#callOverlay .locationMap{position:relative;height:116px;border:1px solid #264b63;border-radius:6px;overflow:hidden;background:linear-gradient(135deg,#183a43,#17302d 48%,#142d42)}
#callOverlay .mapGrid{position:absolute;inset:0;opacity:.32;background-image:linear-gradient(90deg,transparent 0 23px,#75a08b 24px,transparent 25px),linear-gradient(transparent 0 19px,#6f9b87 20px,transparent 21px);background-size:48px 40px}
#callOverlay .mapRoad{position:absolute;height:5px;background:#9b9f93;opacity:.62;border-radius:8px;transform-origin:left center}.mapRoad.r1{width:125%;left:-15%;top:55%;transform:rotate(-19deg)}.mapRoad.r2{width:115%;left:-5%;top:25%;transform:rotate(27deg)}.mapRoad.r3{width:80%;left:35%;top:84%;transform:rotate(-47deg)}
#callOverlay .mapTower{position:absolute;display:grid;place-items:center;width:21px;height:21px;border:1px solid #52d4ff;border-radius:50%;background:#08344b;color:#8ce9ff;font-size:12px;box-shadow:0 0 12px #1bbbe955}.mapTower.t1{left:14%;top:18%}.mapTower.t2{right:12%;top:25%}.mapTower.t3{left:49%;bottom:8%}
#callOverlay .locationUncertainty{position:absolute;left:50%;top:54%;width:72px;height:72px;transform:translate(-50%,-50%);border-radius:50%;background:rgba(237,79,93,.14);border:1px solid rgba(237,79,93,.4);display:grid;place-items:center}.locationUncertainty:before{content:'';position:absolute;inset:24px;border-radius:50%;background:#9b2430aa}.locationUncertainty>b{position:relative;color:#fff;font-size:18px;z-index:4}
#callOverlay .locationUncertainty .radarRing{position:absolute;border:1px solid rgba(38,216,255,.55);border-radius:50%;animation:locationPulse 2.4s infinite ease-out}.locationUncertainty .radarRing.r1{inset:-2px}.locationUncertainty .radarRing.r2{inset:-13px;animation-delay:.5s}.locationUncertainty .radarRing.r3{inset:-25px;animation-delay:1s}
#callOverlay .mapCompass{position:absolute;right:7px;top:7px;width:22px;height:22px;border-radius:4px;background:#091824d9;color:#dcebf2;display:grid;place-items:center;font-size:9px;font-weight:900;border:1px solid #35556a}
#callOverlay .locationTrackInfo{display:grid;gap:2px;margin-top:7px}.locationTrackInfo b{color:#b9eaff;font-size:9px}.locationTrackInfo span{color:#8199aa;font-size:8px;line-height:1.35}
#callOverlay .locationProcess{display:grid;gap:3px;margin-top:8px;padding-top:7px;border-top:1px solid #1e3748}.locStep{display:grid;grid-template-columns:15px 1fr auto;align-items:center;gap:5px;color:#5f788a;font-size:8px}.locStep i{font-style:normal;color:#587082}.locStep em{font-style:normal;color:#587082;font-variant-numeric:tabular-nums}.locStep.active{color:#bfe9ff}.locStep.active i{color:#28d8ff}.locStep.done{color:#9adfc6}.locStep.done i,.locStep.done em{color:#28d8a5}
#callOverlay .locationTrackingPanel .signalBars{display:flex;align-items:flex-end;gap:2px;height:13px;margin-top:1px}.locationTrackingPanel .signalBars i{display:block;width:4px;height:4px;border-radius:1px;background:#263b4a}.locationTrackingPanel .signalBars i:nth-child(2){height:6px}.locationTrackingPanel .signalBars i:nth-child(3){height:8px}.locationTrackingPanel .signalBars i:nth-child(4){height:10px}.locationTrackingPanel .signalBars i:nth-child(5){height:12px}.locationTrackingPanel .signalBars i.on{background:#21d6a0;box-shadow:0 0 5px rgba(33,214,160,.45)}

/* ---- Live-Ortung: Referenzdarstellung -------------------------------- */
#callOverlay .locationTrackingPanel{padding:10px;background:linear-gradient(180deg,#0b1b29,#091722);border-color:#21435b}
#callOverlay .locationTrackTitle{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:9px}
#callOverlay .locationTrackTitle small{display:block;color:#8ea7ba;font-size:9px;font-weight:900;letter-spacing:.08em}
#callOverlay .locationTrackTitle b{display:block;color:#22d6a0;font-size:12px;margin-top:4px}
#callOverlay .locationTrackTitle:before{content:'◉';color:#20d9a1;font-size:20px;line-height:1;margin-right:4px}
#callOverlay .locationTrackTitle>div:first-of-type{flex:1}
#callOverlay .locationSignal{min-width:76px;text-align:right}
#callOverlay .locationSignal>span{display:block;color:#91a9ba;font-size:8px;font-weight:800}
#callOverlay .locationMap.locationMapReference{height:275px;background:#12232d;border:1px solid #2b5269;border-radius:7px;position:relative;overflow:hidden}
#callOverlay .locationMapImage{display:block;width:100%;height:100%;object-fit:cover;object-position:center;border:0}
#callOverlay .locationMapLiveOverlay{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 52% 56%,transparent 0 8%,rgba(255,58,93,.08) 8.5% 20%,transparent 20.5% 100%)}
#callOverlay .locationMapLiveOverlay .livePulse{position:absolute;left:52%;top:56%;width:24px;height:24px;border-radius:50%;border:2px solid rgba(255,83,112,.8);box-shadow:0 0 0 7px rgba(255,83,112,.12),0 0 0 18px rgba(255,83,112,.06);transform:translate(-50%,-50%);animation:locationPulse 2.2s infinite ease-out}
#callOverlay .locationProcess{margin-top:9px;padding:8px 2px 0;border-top:1px solid #1d3a4d;gap:2px}
#callOverlay .locStep{grid-template-columns:17px 1fr auto;min-height:22px;font-size:8.5px}
#callOverlay .locStep i{width:15px;height:15px;border:2px solid #4e6d84;border-radius:50%;display:grid;place-items:center;font-size:8px}
#callOverlay .locStep.active i{border-color:#22c8ff;color:#22c8ff}
#callOverlay .locStep.done i{border-color:#21d6a0;background:#21d6a0;color:#07161b}
#callOverlay .locStep em{font-size:8px}
@media(min-width:900px){#callOverlay .locationMap.locationMapReference{height:290px}}

/* v4.61 – Live-Ortung exakt als eigener Leitstellen-Block */
#callOverlay .callBriefLocation:has(.locationTrackingPanel){padding:0;background:transparent;border:0}
#callOverlay .locationTrackingPanel{display:block;margin:0;padding:12px;border:1px solid #163d58;border-radius:10px;background:linear-gradient(180deg,#071a29 0%,#061522 100%);overflow:hidden}
#callOverlay .locationTrackTitle{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin:0 0 10px}
#callOverlay .locationTrackTitle:before{display:none!important}
#callOverlay .locationTrackTitle>div:first-child{flex:1;min-width:0}
#callOverlay .locationTrackTitle small{display:block;color:#d6e9f6;font-size:10px;font-weight:900;letter-spacing:.07em}
#callOverlay .locationTrackTitle b{display:block;color:#20e5c0;font-size:14px;margin-top:5px;line-height:1.15}
#callOverlay .locationTrackSub{display:block;color:#9db6c9;font-size:10px;line-height:1.45;margin-top:4px;max-width:430px}
#callOverlay .locationSignal{min-width:84px;text-align:right}
#callOverlay .locationSignal>span{display:block;color:#a9c1d3;font-size:9px;font-weight:800;margin-bottom:4px}
#callOverlay .locationSignal .signalBars{justify-content:flex-end;gap:4px;height:27px}
#callOverlay .locationSignal .signalBars i{width:7px;border-radius:1px;background:#31475b}
#callOverlay .locationSignal .signalBars i:nth-child(1){height:8px}
#callOverlay .locationSignal .signalBars i:nth-child(2){height:13px}
#callOverlay .locationSignal .signalBars i:nth-child(3){height:18px}
#callOverlay .locationSignal .signalBars i:nth-child(4){height:23px}
#callOverlay .locationSignal .signalBars i:nth-child(5){height:27px}
#callOverlay .locationMap.locationMapReference{height:auto;aspect-ratio:775/600;border:1px solid #2b5269;border-radius:9px;background:#12232d;overflow:hidden}
#callOverlay .locationMapImage{width:100%;height:100%;object-fit:cover;display:block}
#callOverlay .locationProcessHead{margin:13px 0 7px;padding:0 1px;color:#c9e6f5;font-size:12px;font-weight:900;letter-spacing:.08em}
#callOverlay .locationProcess{margin:0;padding:7px 4px 0;border-top:1px solid #183b52;gap:1px}
#callOverlay .locStep{grid-template-columns:22px 1fr auto;min-height:27px;gap:7px;color:#9dbbd0;font-size:10px}
#callOverlay .locStep i{width:19px;height:19px;border:2px solid #5c7890;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:10px;line-height:1}
#callOverlay .locStep.active{color:#d8edf8}
#callOverlay .locStep.active i{border-color:#28c9ff;color:#28c9ff}
#callOverlay .locStep.done{color:#d6eef6}
#callOverlay .locStep.done i{border-color:#20d9a0;background:#20d9a0;color:#06151d}
#callOverlay .locStep em{font-size:9px;color:#5f8ba6;font-variant-numeric:tabular-nums}
#callOverlay .locStep.active em{color:#27c9ff}
#callOverlay .locationTrackInfo{display:none!important}


/* v4.62 – Live-Ortung: Karte und Prozess immer untereinander */
#callOverlay .callBriefLocation:has(.locationTrackingPanel){
  display:block!important;
  width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
  padding:0!important;
  margin-top:8px!important;
  background:transparent!important;
  border:0!important;
}
#callOverlay .locationTrackingPanel{
  display:block!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  box-sizing:border-box!important;
  margin:0!important;
  padding:12px!important;
  overflow:hidden!important;
  border:1px solid #163d58!important;
  border-radius:10px!important;
  background:linear-gradient(180deg,#071a29 0%,#061522 100%)!important;
}
#callOverlay .locationTrackTitle{
  display:flex!important;
  flex-direction:row!important;
  width:100%!important;
  box-sizing:border-box!important;
  margin:0 0 10px!important;
}
#callOverlay .locationTrackTitle>div:first-child{
  display:block!important;
  flex:1 1 auto!important;
  min-width:0!important;
}
#callOverlay .locationSignal{
  display:block!important;
  flex:0 0 76px!important;
  min-width:76px!important;
  width:76px!important;
}
#callOverlay .locationMap.locationMapReference{
  display:block!important;
  width:100%!important;
  height:275px!important;
  min-height:275px!important;
  aspect-ratio:auto!important;
  box-sizing:border-box!important;
  position:relative!important;
  margin:0!important;
  overflow:hidden!important;
  border:1px solid #2b5269!important;
  border-radius:9px!important;
  background:#0b1720!important;
}
#callOverlay .locationMapImage{
  display:block!important;
  width:100%!important;
  height:100%!important;
  min-width:100%!important;
  min-height:100%!important;
  object-fit:cover!important;
  object-position:center!important;
  visibility:visible!important;
  opacity:1!important;
}
#callOverlay .locationProcessHead{
  display:block!important;
  width:100%!important;
  margin:13px 0 7px!important;
  box-sizing:border-box!important;
}
#callOverlay .locationProcess{
  display:grid!important;
  width:100%!important;
  box-sizing:border-box!important;
  grid-template-columns:1fr!important;
  margin:0!important;
  padding:7px 4px 0!important;
}
#callOverlay .locStep{
  display:grid!important;
  grid-template-columns:22px minmax(0,1fr) auto!important;
  width:100%!important;
  box-sizing:border-box!important;
}
@media(max-width:700px){
  #callOverlay .locationMap.locationMapReference{
    height:230px!important;
    min-height:230px!important;
  }
}


/* v4.63 – echte interaktive Stadtkarte für die Live-Ortung */
#callOverlay .locationMapReference{position:relative!important;isolation:isolate!important}
#callOverlay .liveLocationMapCanvas{position:absolute!important;inset:0!important;z-index:1!important;background:#0b1720!important}
#callOverlay .liveLocationMapCanvas .leaflet-container{width:100%!important;height:100%!important;background:#0b1720!important;font:inherit!important}
#callOverlay .liveLocationHint{position:absolute;left:9px;bottom:9px;z-index:500;padding:7px 9px;border:1px solid #2a4b60;border-radius:6px;background:rgba(5,17,27,.9);color:#cce8f6;font-size:8px;font-weight:800;pointer-events:none;box-shadow:0 4px 14px rgba(0,0,0,.35)}
#callOverlay .liveLocationMapCanvas .leaflet-control-zoom{border:1px solid #35546a!important;box-shadow:0 3px 10px rgba(0,0,0,.3)!important}
#callOverlay .liveLocationMapCanvas .leaflet-control-zoom a{background:#091824!important;color:#dcebf2!important;border-bottom-color:#35546a!important}
@media(max-width:760px){#callOverlay .locationMap.locationMapReference{height:250px!important;min-height:250px!important}}

/* v4.64 – Live-Ortung bleibt nach erfolgreicher Ermittlung vollständig sichtbar */
#callOverlay .locationResolvedAddress{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:7px;margin-top:8px;padding:8px 9px;border:1px solid #1f6b59;border-radius:7px;background:#08251f}
#callOverlay .locationResolvedAddress small{grid-column:1/-1;color:#5ddbb4;font-size:7px;font-weight:900;letter-spacing:.08em}
#callOverlay .locationResolvedAddress b{min-width:0;color:#e8fff8;font-size:9px;line-height:1.35;overflow-wrap:anywhere}
#callOverlay .locationResolvedAddress .callMapFocus{min-height:30px;padding:5px 8px;border:1px solid #2d6c88;border-radius:5px;background:#102b3b;color:#d9efff;font-size:8px;font-weight:800;cursor:pointer}
#callOverlay .locationTrackingPanel.is-complete .locationMap{border-color:#1f6b59}
#callOverlay .locationTrackingPanel.is-complete .liveLocationHint{color:#63e2bb}

/* v4.65 – Live-Ortung: niemals leerer Kartenbereich */
#callOverlay .liveLocationMapCanvas,
#callOverlay .liveLocationMapCanvas .leaflet-container{
  background:transparent!important;
}
#callOverlay .locationMapFallback{display:none!important}
#callOverlay .liveLocationMapCanvas{
  z-index:5!important;
  display:block!important;
}
#callOverlay .liveLocationMapCanvas .leaflet-tile-pane{
  z-index:1!important;
}
#callOverlay .liveLocationMapCanvas .leaflet-control-container{
  z-index:10!important;
}

.aiFixedProvider{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:9px;padding:10px 12px;border:1px solid rgba(79,140,255,.22);border-radius:10px;background:rgba(25,53,89,.32)}.aiFixedProvider b{display:block;color:#dcecff;font-size:11px}.aiFixedProvider small{display:block;color:#71879b;font-size:8px;margin-top:3px}.fixedKicker{display:block;color:#5f8fca;font-size:7px;letter-spacing:.12em;margin-bottom:3px}.fixedBadge{padding:6px 9px;border-radius:8px;background:rgba(79,140,255,.12);border:1px solid rgba(79,140,255,.25);color:#78adff;font-size:8px;font-weight:700;letter-spacing:.08em}.aiFixedGrid{grid-template-columns:.8fr 1.2fr}.aiFixedGrid input[readonly]{opacity:.78;cursor:default}

/* =========================================================
   v4.72 – DISPATCH COMMAND Account / Login
   ========================================================= */
.authPending { overflow: hidden; }
.authPending > #setupOverlay, .authPending > #app { visibility: hidden; }
.authScreen {
  position: fixed; inset: 0; z-index: 10000; overflow: auto; color: #edf5ff;
  background: #06101c; isolation: isolate;
}
.authReferenceBackdrop {
  position: absolute; inset: -3%; z-index: -3;
  background: url('../assets/auth/dispatch-command-login-reference.png') center/cover no-repeat;
  filter: blur(1.5px) saturate(.95) brightness(.76);
  transform: scale(1.035);
}
.authBackdropShade { position:absolute; inset:0; z-index:-2; background:linear-gradient(90deg,rgba(3,13,25,.55),rgba(3,11,21,.25) 48%,rgba(4,7,14,.55)),linear-gradient(180deg,rgba(2,10,20,.16),rgba(2,8,16,.62)); backdrop-filter:blur(2px); }
.authScreen:after { content:""; position:absolute; inset:0; z-index:-1; pointer-events:none; background:radial-gradient(circle at 53% 44%,transparent 0,rgba(1,7,14,.08) 46%,rgba(1,7,14,.55) 100%); }
.authTopbar { width:min(1350px,calc(100% - 42px)); margin:0 auto; padding:16px 12px 8px; display:flex; justify-content:space-between; align-items:center; }
.authBrand { display:flex; align-items:center; gap:14px; }
.authBrandIcon { width:50px;height:50px;border-radius:15px;display:grid;place-items:center;background:linear-gradient(145deg,#f52d4f,#b71f42);box-shadow:0 8px 28px #ed294b55;border:1px solid #ff6379; font-size:24px; }
.authBrand strong { display:block; font-size:17px; letter-spacing:.12em; }
.authBrand span { display:block; margin-top:2px; color:#9eb0c7; font-size:12px; }
.authTopActions { display:flex; gap:10px; }
.authLang,.authTheme { min-height:42px; border:1px solid #31516c; background:#071726d9; color:#dbe9f7; border-radius:11px; padding:9px 14px; box-shadow:0 10px 30px #0005; }
.authTheme { width:42px; padding:0; color:#42cfff; }
.authShell { width:min(1350px,calc(100% - 42px)); margin:58px auto 20px; display:grid; grid-template-columns:1.12fr .78fr .78fr; gap:16px; align-items:stretch; }
.authIntro { min-height:620px; padding:30px 28px 18px; border:1px solid #183752; border-radius:20px; background:linear-gradient(135deg,#071a2ae8,#06121ee0 62%,#07111ae8); box-shadow:0 24px 70px #0009, inset 0 1px #ffffff0a; backdrop-filter:blur(12px); }
.authKicker { color:#b5c8dc; font-weight:800; font-size:12px; letter-spacing:.1em; }
.authIntro h1 { margin:3px 0 4px; font-size:41px; line-height:1; letter-spacing:.015em; }
.authIntro h1 span { color:#269bff; text-shadow:0 0 22px #148dff66; }
.authIntro h2 { margin:0 0 16px; color:#249bff; font-size:19px; }
.authIntro>p { max-width:620px; margin:0 0 18px; color:#c0d0df; line-height:1.55; font-size:13px; }
.authFeatureList { display:grid; gap:9px; }
.authFeatureList>div { display:flex; gap:12px; align-items:center; padding:10px 12px; border:1px solid #17334b; border-radius:13px; background:#061525aa; }
.authFeatureList i { flex:0 0 39px; width:39px;height:39px;border-radius:10px;display:grid;place-items:center;background:#062c4c;border:1px solid #1674b5;color:#42c6ff;font-style:normal;font-size:19px; }
.authFeatureList b { display:block;font-size:13px; }.authFeatureList span { display:block;margin-top:2px;color:#8fa6bb;font-size:10px;line-height:1.35; }
.authVehicleStrip { margin:12px 0 3px; display:flex; justify-content:space-around; align-items:end; font-size:56px; filter:drop-shadow(0 7px 8px #0008); }
.authIntroFooter { display:flex; justify-content:center; gap:15px; align-items:center; color:#d4dfeb;font-size:11px; }.authIntroFooter b{color:#168ff5;letter-spacing:.15em;}
.authCard { min-height:620px; padding:25px 23px 18px; border-radius:19px; background:linear-gradient(145deg,#071521ef,#06101bea); box-shadow:0 24px 70px #0009,inset 0 1px #ffffff0a; backdrop-filter:blur(12px); }
.authLoginCard { border:1px solid #128cf4; box-shadow:0 0 30px #0b8cff17,0 24px 70px #0009; }.authRegisterCard{border:1px solid #f52b52;box-shadow:0 0 30px #f52b5215,0 24px 70px #0009;}
.authPanelIcon { width:43px;height:43px;margin:0 auto 7px;display:grid;place-items:center;color:#2f9dff;font-size:27px; }.authPanelIcon.red{color:#ff3159}.authCard h3{text-align:center;font-size:18px}.authCard>p{text-align:center;color:#91a5b9;font-size:10px;margin:7px 0 14px;}
.authSocialStack{display:grid;gap:8px}.authSocial{min-height:40px;border-radius:9px;font-size:11px;background:#f4f7fb;color:#172230;border:1px solid #d9e1ea}.authSocial b{display:inline-grid;place-items:center;margin-right:8px;font-size:15px}.authSocial.discord{background:#2869ee;color:#fff;border-color:#3479ff}
.authOr{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin:14px 0;color:#8395a8;font-size:10px}.authOr span{height:1px;background:#293b4d}.authCard form>label{display:block;color:#a9b9c9;font-size:10px;margin:9px 0;text-transform:none}.authInput{display:block;width:100%;height:38px;margin-top:5px;border:1px solid #2b4054;border-radius:9px;background:#050e17;color:#ecf5ff;padding:8px 12px;font-size:11px;outline:none}.authInput:focus{border-color:#269dff;box-shadow:0 0 0 2px #168cff1b}.authPassword{position:relative}.authPassword .authInput{padding-right:40px}.authPassword button{position:absolute;right:4px;top:9px;width:30px;min-height:30px;padding:0;background:transparent;border:0;color:#71879c}.authRow{display:flex;justify-content:space-between;align-items:center;gap:7px;margin:8px 0 14px;font-size:10px;color:#9cafc2}.authCheck{display:flex!important;align-items:center;gap:5px!important;margin:0!important;color:#a9b9c9!important}.authCheck input{accent-color:#167cff}.authLink,.authSwitch button{border:0;background:transparent;color:#269dff;padding:0;min-height:auto;font-size:10px}.authPrimary,.authRegister{width:100%;min-height:41px;border-radius:9px;border:0;color:white;font-weight:800;font-size:12px}.authPrimary{background:linear-gradient(90deg,#1d62ef,#2b7dff);box-shadow:0 8px 20px #1e6cff33}.authRegister{background:linear-gradient(90deg,#ef3151,#f43e5a);box-shadow:0 8px 20px #ef315133}.authPrimary b,.authRegister b{float:right;margin-right:12px;font-size:17px}.authSwitch{text-align:center;margin-top:17px;color:#899bad;font-size:10px}.authRules{display:grid;gap:2px;margin:7px 0 10px;color:#8093a6;font-size:8px}.authRules .valid{color:#45d59c}.authLegal{display:block;text-align:center;margin-top:12px;color:#687b8e;font-size:7px;line-height:1.4}.authError{margin-top:9px;padding:8px 9px;border:1px solid #74313d;background:#421721aa;color:#ffadb9;border-radius:8px;font-size:9px;line-height:1.4}.authFooter{width:min(1050px,calc(100% - 42px));margin:8px auto 22px;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;color:#48c4ff}.authFooter>div{display:grid;grid-template-columns:30px 1fr;column-gap:8px;align-items:center;font-size:20px}.authFooter b{color:#e0ebf5;font-size:10px}.authFooter span{grid-column:2;color:#7e94a9;font-size:9px}
.authScreen.authBusy:after{background:#01060bc2}.authScreen.authHidden{display:none}.authPending #authScreen{display:block}
@media (max-width:1050px){.authShell{grid-template-columns:1fr 1fr}.authIntro{grid-column:1/-1;min-height:auto}.authCard{min-height:0}.authFooter{display:none}}
@media (max-width:700px){.authTopbar,.authShell{width:calc(100% - 20px)}.authTopbar{padding-top:10px}.authBrand strong{font-size:12px}.authBrand span{font-size:9px}.authBrandIcon{width:40px;height:40px;font-size:18px}.authTopActions .authLang{display:none}.authShell{margin-top:18px;grid-template-columns:1fr}.authIntro{display:none}.authCard{min-height:0;padding:22px 17px}.authScreen{overflow:auto}.authShell{padding-bottom:20px}.authVehicleStrip{font-size:42px}}

/* =========================================================
   Server Admin Center / Support
   ========================================================= */
.cloudKpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:10px 0 12px}.cloudKpis>div{padding:15px;border:1px solid #263e52;border-radius:9px;background:#0b1721}.cloudKpis b{display:block;font-size:24px;color:#f2f7fb}.cloudKpis span{display:block;margin-top:4px;color:#8197aa;font-size:9px}.cloudGrid2{display:grid;grid-template-columns:1.1fr .9fr;gap:10px}.cloudList,.cloudPlayerList,.cloudTicketList{display:grid;gap:7px;max-height:520px;overflow:auto}.cloudOnline{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:2px 8px;padding:10px;border:1px solid #253d50;border-radius:7px;background:#0c1823;color:#e5eef5;text-align:left}.cloudOnline small{color:#8297a8;font-size:8px}.cloudStatus{width:9px;height:9px;border-radius:50%;display:inline-block;background:#697786}.cloudStatus.online{background:#35c98a;box-shadow:0 0 10px rgba(53,201,138,.5)}.cloudStatus.offline{background:#697786}.cloudPlayer{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:10px;border:1px solid #263d50;border-radius:8px;background:#0b1721}.cloudPlayerMain{display:flex;gap:8px;align-items:center;min-width:0}.cloudPlayerMain b,.cloudPlayerMain small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cloudPlayerMain small{color:#8298aa;font-size:8px;margin-top:3px}.cloudPlayerMeta{display:grid;gap:4px;font-size:8px;color:#9ab0bf}.cloudActions{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.cloudActions .btn{font-size:8px;min-height:29px;padding:6px 8px}.cloudSearch{max-width:300px}.cloudTicket{padding:12px;border:1px solid #2a4255;border-radius:8px;background:#0b1721}.cloudTicket>div:first-child b,.cloudTicket>div:first-child small{display:block}.cloudTicket>div:first-child small{color:#8096a8;font-size:8px;margin-top:4px}.cloudTicket p{font-size:10px;line-height:1.5;color:#d2dee8}.ticketBadge{display:inline-block;margin-right:7px;padding:3px 6px;border-radius:4px;background:#273b4b;color:#9cb3c3;font-size:7px;text-transform:uppercase}.ticketBadge.open{background:#3a2516;color:#f4bf70}.ticketBadge.in_progress{background:#14314b;color:#75b9f5}.ticketBadge.closed{background:#163124;color:#79dca0}.cloudTicketAttachments{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.cloudStatRow{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid #1d3040;font-size:9px}.spectatorHead{display:flex;justify-content:space-between;align-items:center;padding:10px;border:1px solid #29445a;background:#0b1721;border-radius:8px}.spectatorHead b,.spectatorHead small{display:block}.spectatorHead small{font-size:8px;color:#8298aa;margin-top:3px}.spectatorGrid{display:grid;grid-template-columns:1.25fr .75fr;gap:10px;margin-top:10px}.spectatorMap{min-height:460px;border:1px solid #29445a;border-radius:9px;overflow:hidden;background:radial-gradient(circle at 50% 40%,#17334a,#071019 65%)}.spectatorMapInner{height:100%;min-height:460px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#8fb4cf}.spectatorMapInner strong{font-size:20px;color:#eaf2f8}.spectatorMapInner small{color:#8298aa}.spectatorUnits{display:grid;gap:5px;width:min(80%,420px);margin-top:14px}.spectatorUnits span,.spectatorRow{padding:8px;border:1px solid #243d50;border-radius:6px;background:#0c1823;font-size:8px;color:#b8c9d5}.spectatorSide{display:grid;align-content:start;gap:7px}.spectatorSide h4{margin:5px 0 2px}.spectatorRow b,.spectatorRow small{display:block}.spectatorRow small{margin-top:3px;color:#8298aa}.adminLocalBadge{white-space:nowrap}
@media(max-width:1100px){.cloudKpis{grid-template-columns:repeat(2,1fr)}.cloudGrid2,.spectatorGrid{grid-template-columns:1fr}.cloudPlayer{grid-template-columns:1fr}.cloudActions{justify-content:flex-start}}
@media(max-width:700px){.cloudKpis{grid-template-columns:1fr 1fr}.cloudSearch{max-width:none;width:100%}.cloudPlayerMeta{grid-template-columns:1fr 1fr}}
.spectatorSnapshotWrap{width:100%;height:100%;min-height:460px;display:grid;place-items:center;background:#071019}.spectatorSnapshot{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}.spectatorMapInner{width:100%}
