:root {
  --brand-orange: #ff6300;
  --brand-red: #dc002e;
  --brand-black: #111111;
  --brand-charcoal: #262626;
  --ink: #171717;
  --muted: #6b7280;
  --surface: #ffffff;
  --canvas: #f5f5f4;
  --line: #e7e5e4;
  --line-strong: #d6d3d1;
  --success: #16794b;
  --danger: #b42318;
  --warning: #b54708;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--ink);
  background: var(--canvas);
}

* { box-sizing: border-box; }
html { min-height: 100%; }
body { margin: 0; min-height: 100vh; background: var(--canvas); color: var(--ink); }
a { color: #9f1239; text-underline-offset: .18em; }
a:hover { color: var(--brand-orange); }

.site-header {
  position: sticky;
  top: 0;
  z-index: 30;
  min-height: 84px;
  background: rgba(255,255,255,.97);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
  padding: .7rem clamp(1rem, 2.4vw, 2.2rem);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.4rem;
  box-shadow: 0 2px 16px rgba(0,0,0,.04);
}
.site-header::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 3px;
  background: linear-gradient(90deg, var(--brand-orange) 0 48%, var(--brand-red) 48% 100%);
}
.brand-lockup { display: flex; align-items: center; gap: .9rem; min-width: max-content; }
.brand-logo { width: 88px; height: 52px; object-fit: contain; display: block; }
.brand-copy { display: flex; flex-direction: column; gap: .18rem; line-height: 1.15; }
.brand-copy strong { font-size: 1.08rem; letter-spacing: .01em; color: var(--brand-black); }
.brand-copy > span { color: var(--muted); font-size: .78rem; }
.badge { display: inline-block; font-size: .68rem; font-weight: 800; color: #fff; background: var(--brand-black); padding: .18rem .42rem; border-radius: 999px; vertical-align: middle; }
.tenant-badge { display: inline-block; font-size: .76rem; font-weight: 800; background: #fff0e8; color: #a33d00; border: 1px solid #ffd2b8; padding: .19rem .52rem; border-radius: 999px; }

.main-nav { display: flex; align-items: center; justify-content: flex-end; gap: .25rem; flex-wrap: wrap; }
.main-nav a, .nav-button {
  color: var(--brand-charcoal);
  text-decoration: none;
  font-size: .88rem;
  font-weight: 720;
  border-radius: .45rem;
  padding: .48rem .58rem;
  transition: background .15s ease, color .15s ease;
}
.main-nav a:hover, .nav-button:hover { background: #fff1e8; color: #aa3f00; }
.nav-button { border: 0; background: transparent; cursor: pointer; font-family: inherit; }

main { max-width: 1540px; margin: 0 auto; padding: clamp(1rem, 2.5vw, 2.1rem); }
.site-footer { text-align: center; padding: 1.4rem 1rem 2rem; color: var(--muted); font-size: .8rem; }
.footer-mark { display: inline-block; width: 30px; height: 3px; margin-right: .5rem; vertical-align: middle; background: linear-gradient(90deg, var(--brand-orange) 0 50%, var(--brand-red) 50%); border-radius: 3px; }

h1 { margin: 0 0 1.1rem; font-size: clamp(1.6rem, 2.4vw, 2.15rem); line-height: 1.15; letter-spacing: -.02em; }
h2 { margin: 0 0 .75rem; font-size: 1rem; }
p { line-height: 1.55; }
small { color: var(--muted); }
code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }

.grid { display: grid; gap: 1rem; }
.cards { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); margin-bottom: 1rem; }
.card {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: .85rem;
  padding: 1.15rem;
  margin-bottom: 1rem;
  box-shadow: 0 5px 20px rgba(17,17,17,.035);
}
.card::before { content: ""; position: absolute; top: 0; left: 1.1rem; width: 38px; height: 3px; background: var(--brand-orange); border-radius: 0 0 4px 4px; }
.status { font-size: 1.45rem; font-weight: 850; margin: .4rem 0; }
.status.ok { color: var(--success); }
.status.bad { color: var(--danger); }
.metric { font-size: 1.8rem; font-weight: 850; margin: .4rem 0; }
.metric-small { font-size: 1.4rem; font-weight: 850; }
.section-head { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: .7rem; }
.section-head h1, .section-head h2 { margin-bottom: 0; }
.details { display: grid; grid-template-columns: 200px 1fr; gap: .5rem; }
.details dt { font-weight: 750; }
.details dd { margin: 0; word-break: break-word; }

.table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: .65rem; }
table { width: 100%; border-collapse: collapse; font-size: .9rem; background: #fff; }
th, td { text-align: left; border-bottom: 1px solid var(--line); padding: .68rem .58rem; white-space: nowrap; vertical-align: top; }
th { background: #fafaf9; position: sticky; top: 0; z-index: 1; color: #44403c; font-size: .8rem; text-transform: uppercase; letter-spacing: .035em; }
tbody tr:hover { background: #fffaf7; }
tbody tr:last-child td { border-bottom: 0; }

.form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; margin-bottom: 1rem; }
.one-column { grid-template-columns: 1fr; }
label { display: flex; flex-direction: column; gap: .38rem; font-weight: 700; font-size: .9rem; color: #292524; }
input, select, textarea {
  width: 100%;
  min-height: 42px;
  padding: .68rem .75rem;
  border: 1px solid var(--line-strong);
  border-radius: .5rem;
  background: #fff;
  color: var(--ink);
  font: inherit;
  outline: none;
  transition: border-color .15s ease, box-shadow .15s ease;
}
input:focus, select:focus, textarea:focus { border-color: var(--brand-orange); box-shadow: 0 0 0 3px rgba(255,99,0,.12); }
textarea { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; resize: vertical; }
.checkbox { flex-direction: row; align-items: center; }
.checkbox input { width: auto; min-height: auto; accent-color: var(--brand-orange); }
.filter-grid { display: grid; grid-template-columns: repeat(3, minmax(180px, 1fr)) auto; gap: 1rem; align-items: end; }
.filter-grid-four { grid-template-columns: repeat(4, minmax(170px, 1fr)) auto; }
.filter-action { padding-bottom: 0; align-self: end; display: flex; align-items: center; flex-wrap: wrap; gap: .7rem; }

button { border: 1px solid var(--line-strong); border-radius: .5rem; padding: .62rem .85rem; background: white; color: var(--ink); cursor: pointer; font-weight: 760; }
button:hover { border-color: #a8a29e; background: #fafaf9; }
.primary { background: var(--brand-black); color: white; border-color: var(--brand-black); font-size: .95rem; padding: .72rem 1rem; box-shadow: inset 4px 0 0 var(--brand-orange); }
.primary:hover { background: #262626; color: white; border-color: #262626; }
.notice { background: #ecfdf3; border: 1px solid #abefc6; padding: .82rem; border-radius: .55rem; margin-bottom: 1rem; }
.notice.warn { background: #fffaeb; border-color: #fedf89; }
.notice.error { background: #fef3f2; border-color: #fecdca; color: #7a271a; }
.pill { display: inline-block; border-radius: 999px; background: #f5f5f4; border: 1px solid var(--line); padding: .22rem .55rem; font-size: .78rem; font-weight: 800; }
.pill.strong { background: #ecfdf3; color: #067647; border-color: #abefc6; }
.best-rssi { background: #fff7ed; }
.confidence { display: inline-block; border-radius: .35rem; padding: .2rem .45rem; background: #f2f4f7; }
.confidence.hoch { background: #ecfdf3; color: #067647; }
.confidence.mittel { background: #fffaeb; color: #b54708; }
.confidence.niedrig { background: #fef3f2; color: #b42318; }
.wrap-code { white-space: pre-wrap; word-break: break-all; }
.inline-form { display: inline; }
.inline-form button { padding: .25rem .45rem; }
.stale-row { opacity: .62; }

.zone-count-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; }
.zone-count-card { text-align: center; min-height: 190px; display: flex; flex-direction: column; justify-content: center; align-items: center; overflow: hidden; }
.zone-count-card::after { content: ""; position: absolute; right: -35px; bottom: -46px; width: 110px; height: 110px; border: 18px solid rgba(255,99,0,.06); transform: rotate(18deg); }
.zone-count-card h2 { font-size: 1.12rem; margin: .45rem 0 .2rem; }
.zone-count-link { display: inline-flex; align-items: center; justify-content: center; min-width: 110px; min-height: 82px; margin-top: .55rem; padding: .4rem 1rem; border-radius: .72rem; background: var(--brand-black); color: white; text-decoration: none; font-size: 3rem; font-weight: 900; line-height: 1; box-shadow: inset 0 -4px 0 var(--brand-orange); transition: transform .15s ease, background .15s ease; z-index: 1; }
.zone-count-link:hover { transform: translateY(-2px); background: #262626; color: #fff; }

.login-body { background: radial-gradient(circle at 15% 10%, rgba(255,99,0,.09), transparent 32%), radial-gradient(circle at 90% 85%, rgba(220,0,46,.07), transparent 34%), #f5f5f4; }
.login-wrap { min-height: 100vh; display: grid; place-items: center; max-width: none; padding: 1.2rem; }
.login-card { width: min(470px, 100%); background: #fff; border: 1px solid var(--line); border-radius: 1rem; padding: clamp(1.4rem, 4vw, 2.15rem); box-shadow: 0 25px 60px rgba(17,17,17,.12); position: relative; overflow: hidden; }
.login-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 5px; background: linear-gradient(90deg, var(--brand-orange) 0 50%, var(--brand-red) 50%); }
.login-brand { text-align: center; margin-bottom: 1.5rem; }
.login-brand img { width: 145px; height: 84px; object-fit: contain; margin-bottom: .4rem; }
.login-title { font-size: 1.45rem; font-weight: 900; letter-spacing: -.02em; }
.login-brand p { margin: .35rem 0 0; color: var(--muted); font-size: .9rem; }
.login-form { gap: .9rem; margin-bottom: 1rem; }
.login-button { width: 100%; margin-top: .25rem; }
.login-hint { color: var(--muted); font-size: .78rem; margin: 1rem 0 0; text-align: center; }
.login-version { color: #a8a29e; font-size: .7rem; text-align: center; margin-top: .7rem; }

@media (max-width: 1180px) {
  .site-header { align-items: flex-start; flex-direction: column; }
  .main-nav { justify-content: flex-start; }
  .filter-grid-four { grid-template-columns: repeat(2, minmax(180px, 1fr)); }
}
@media (max-width: 800px) {
  .site-header { position: static; padding: .8rem 1rem; }
  .brand-logo { width: 76px; height: 45px; }
  .main-nav { width: 100%; gap: .15rem; }
  .main-nav a, .nav-button { font-size: .82rem; padding: .42rem .48rem; }
  main { padding: 1rem; }
  .details { grid-template-columns: 1fr; }
  .filter-grid, .filter-grid-four { grid-template-columns: 1fr; }
  .section-head { align-items: flex-start; flex-direction: column; }
}
.pill.danger-pill { background: #fef3f2; color: #b42318; border-color: #fecdca; }
.compact-cards { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); margin: .75rem 0 1rem; }
.gateway-name-cell { min-width: 390px; }
.gateway-name-form { display: grid; grid-template-columns: minmax(220px, 1fr) auto; gap: .45rem; align-items: center; width: 100%; }
.gateway-name-form input { min-width: 0; width: 100%; }
.gateway-name-form .gw-save { white-space: nowrap; min-width: 92px; }
.gateway-status-cell { min-width: 92px; }

@media (max-width: 760px) {
  .gateway-name-cell { min-width: 300px; }
  .gateway-name-form { grid-template-columns: minmax(170px, 1fr) auto; }
}

/* API-first dashboard aliases */
.zone-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; }
.zone-card { position: relative; text-align: center; min-height: 190px; display: flex; flex-direction: column; justify-content: center; align-items: center; overflow: hidden; }
.zone-card::after { content: ""; position: absolute; right: -35px; bottom: -46px; width: 110px; height: 110px; border: 18px solid rgba(255,99,0,.06); transform: rotate(18deg); }
.zone-card h2 { font-size: 1.12rem; margin: .45rem 0 .2rem; }
.zone-card small { position: relative; z-index: 1; }
.zone-count-link { flex-direction: column; gap: .22rem; }
.zone-count { font-size: 3rem; font-weight: 900; line-height: 1; }
.zone-count-label { font-size: .72rem; font-weight: 760; letter-spacing: .035em; text-transform: uppercase; opacity: .78; }
.login-page { background: radial-gradient(circle at 15% 10%, rgba(255,99,0,.09), transparent 32%), radial-gradient(circle at 90% 85%, rgba(220,0,46,.07), transparent 34%), #f5f5f4; }
.login-logo { width: 145px; height: 84px; object-fit: contain; display: block; margin: 0 auto .45rem; }
.login-card form { display: grid; gap: .9rem; }

@media (max-width: 800px) {
  .zone-grid { grid-template-columns: 1fr; }
}

/* Movement History */
.movement-search-card form { display: grid; gap: 1rem; }
.query-examples { display: flex; flex-wrap: wrap; gap: .45rem; }
.query-chip { font-size: .78rem; padding: .42rem .65rem; border-radius: 999px; background: #fff7ed; border-color: #fed7aa; color: #9a3412; }
.query-chip:hover { background: #ffedd5; border-color: var(--brand-orange); }
.movement-filters { border-top: 1px solid var(--line); padding-top: .8rem; }
.movement-filters summary { cursor: pointer; font-weight: 800; color: #44403c; }
.movement-filter-grid { margin-top: .9rem; }
.movement-actions { display: flex; gap: .55rem; flex-wrap: wrap; }
.muted { color: var(--muted); }

/* v0.10.0 administration submenu, larger zone titles, split occupancy */
.nav-menu { position: relative; }
.nav-menu > summary { list-style: none; cursor: pointer; padding: .52rem .62rem; border-radius: .55rem; font-weight: 760; }
.nav-menu > summary::-webkit-details-marker { display: none; }
.nav-menu > summary:hover, .nav-menu[open] > summary { background: #fff1e8; color: #aa3f00; }
.nav-submenu { position: absolute; z-index: 50; top: calc(100% + .3rem); left: 0; min-width: 170px; padding: .35rem; border: 1px solid var(--line); border-radius: .7rem; background: white; box-shadow: 0 12px 34px rgba(0,0,0,.12); }
.nav-submenu a { display: block; white-space: nowrap; }
.zone-card h2 { font-size: 1.65rem; line-height: 1.1; }
.zone-detail-title { font-size: clamp(2rem, 4vw, 3.2rem); margin: .3rem 0; }
.zone-count-split { min-width: 230px; min-height: 92px; flex-direction: row; gap: 0; padding: 0; overflow: hidden; }
.zone-count-split > span { flex: 1; min-width: 0; padding: .65rem .8rem; display: flex; flex-direction: column; align-items: center; gap: .18rem; }
.zone-count-split > span + span { border-left: 1px solid rgba(255,255,255,.22); }
.zone-count-split strong { font-size: 2.45rem; line-height: 1; }
.zone-count-split small { font-size: .68rem; letter-spacing: .04em; text-transform: uppercase; color: white; opacity: .82; }
.zone-unassigned { margin-top: .5rem; color: var(--muted); }
@media (max-width: 760px) { .nav-submenu { position: static; box-shadow: none; margin-top: .25rem; } .zone-count-split { min-width: 200px; } }

/* v0.11.0 Smart Movement Search */
.ai-search-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.ai-search-head h2{margin:0 0 .25rem}.ai-query-label{font-weight:700}.ai-query-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.65rem;align-items:stretch}.ai-query-row input{font-size:1.05rem;min-height:46px}.movement-filter-groups{display:grid;gap:1rem;margin-top:1rem}.movement-filter-groups fieldset{border:1px solid #e1e1e1;border-radius:12px;padding:1rem;background:#fcfcfc}.movement-filter-groups legend{font-weight:800;padding:0 .35rem}.intent-chips{display:flex;flex-wrap:wrap;gap:.5rem}.intent-chip{display:inline-flex;align-items:center;border:1px solid #ffd1b4;background:#fff6f0;color:#4b2a15;border-radius:999px;padding:.38rem .7rem;font-size:.88rem;font-weight:650}.movement-answer{font-size:1.1rem;font-weight:750;margin:.9rem 0 .2rem}.smart-suggestions{margin-top:.8rem;padding:.8rem 1rem;border-left:4px solid #ff6300;background:#fff8f3;border-radius:8px}.smart-suggestions ul{margin:.45rem 0 0 1.1rem}.capability-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.6rem;margin-top:1rem}.capability-item{padding:.7rem .8rem;border:1px solid #e6e6e6;border-radius:9px;background:#fff}.smart-search-help summary{cursor:pointer;font-weight:750}.movement-filter-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.movement-filter-grid small{font-weight:400;color:#666}
@media (max-width:720px){.ai-search-head{display:block}.ai-search-head .pill{margin-top:.5rem}.ai-query-row{grid-template-columns:1fr}.movement-filter-groups fieldset{padding:.75rem}}

/* v0.13.0 compact administration and monitoring */
.pill.muted-pill { background: #f5f5f4; color: #57534e; border-color: #d6d3d1; }
/* 0.60.14: Antenne vom Gateway gemeldet, seit Dienststart aber noch keine TAG-Daten */
.pill.antenna-idle { opacity: .5; border-style: dashed; font-weight: 600; }
.gateway-disabled-row { opacity: .62; background: #fafaf9; }
.gateway-disabled-row:hover { background: #f5f5f4; }
.danger-action { color: #b42318; border-color: #fecdca; background: #fffafa; }
.danger-action:hover { background: #fef3f2; border-color: #fda29b; }
.gateway-page-summary { display: flex; align-items: center; gap: .5rem; margin-top: .35rem; }
.gateway-health-card .status { font-size: 1.8rem; letter-spacing: .02em; }

/* Movement History: keep related fields on a single desktop row. */
.movement-filter-grid { gap: .7rem; align-items: end; }
.movement-filter-grid > label { min-width: 0; }
.movement-filter-grid input,
.movement-filter-grid select { min-width: 0; padding-left: .6rem; padding-right: .6rem; font-size: .86rem; }
.movement-row-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.movement-row-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

/* Zonen & Antennen: compact hierarchy with switchable table view. */
.zone-create-grid { grid-template-columns: 150px minmax(180px,1fr) minmax(220px,1fr) minmax(220px,1fr) auto; align-items: end; }
.zone-assignment-grid { grid-template-columns: minmax(300px,1fr) minmax(300px,1fr) auto; align-items: end; }
.zone-hierarchy-head { align-items: flex-start; }
.view-switch { display: inline-flex; border: 1px solid var(--line-strong); border-radius: .55rem; overflow: hidden; background: #fff; }
.view-switch-button { border: 0; border-radius: 0; min-width: 92px; }
.view-switch-button + .view-switch-button { border-left: 1px solid var(--line-strong); }
.view-switch-button.active { background: var(--brand-black); color: #fff; box-shadow: inset 0 -3px 0 var(--brand-orange); }
.zone-compact-hierarchy { display: grid; grid-template-columns: repeat(auto-fit, minmax(420px, 1fr)); gap: .75rem; }
.hierarchy-site { border: 1px solid var(--line); border-radius: .7rem; padding: .75rem; background: #fcfcfc; min-width: 0; }
.hierarchy-site-head { display: flex; justify-content: space-between; align-items: flex-start; gap: .6rem; padding-bottom: .55rem; border-bottom: 1px solid var(--line); }
.hierarchy-site-head > div { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.hierarchy-site-head > div > strong { font-size: 1rem; }
.hierarchy-branches { display: grid; grid-template-columns: repeat(auto-fit, minmax(185px, 1fr)); gap: .55rem; margin-top: .55rem; }
.hierarchy-branch { border: 1px solid #eceae8; border-radius: .55rem; background: #fff; padding: .5rem; min-width: 0; }
.hierarchy-branch-head { display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: .4rem; }
.hierarchy-branch-head strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hierarchy-zones { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .45rem; }
.hierarchy-zone-chip { display: inline-grid; grid-template-columns: minmax(0,auto) auto auto; align-items: center; gap: .3rem; max-width: 100%; padding: .3rem .35rem .3rem .5rem; border-radius: 999px; border: 1px solid #ffd6bd; background: #fff7ed; }
.hierarchy-zone-chip > span { font-weight: 750; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hierarchy-zone-chip small { font-size: .67rem; }
.compact-delete { min-width: 26px; min-height: 26px; padding: .08rem .35rem; border-radius: 999px; line-height: 1; }
.hierarchy-empty { display: block; padding: .25rem 0; }

/* TAG positions: contain very large current-position tables. */
.position-table-scroll { max-height: 520px; overflow: auto; }
.position-table-scroll th { top: 0; }
.history-limit-label { flex-direction: row; align-items: center; gap: .5rem; font-size: .8rem; }
.history-limit-label select { width: auto; min-width: 86px; min-height: 36px; padding: .45rem .55rem; }

@media (max-width: 1240px) {
  .movement-row-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .movement-row-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .zone-create-grid { grid-template-columns: repeat(2, minmax(220px,1fr)); }
  .zone-assignment-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 800px) {
  .movement-row-4, .movement-row-6, .zone-create-grid, .zone-assignment-grid { grid-template-columns: 1fr; }
  .zone-compact-hierarchy { grid-template-columns: 1fr; }
  .hierarchy-branches { grid-template-columns: 1fr; }
  .zone-hierarchy-head { align-items: stretch; }
  .view-switch { width: 100%; }
  .view-switch-button { flex: 1; }
}

/* v0.13.0 Movement result dialog, live entity filters and gateway grouped assignments */
.movement-result-dialog {
  width: min(96vw, 1680px);
  max-width: 1680px;
  height: min(90vh, 980px);
  max-height: 90vh;
  padding: 0;
  border: 0;
  border-radius: 16px;
  box-shadow: 0 24px 80px rgba(0,0,0,.28);
  background: #fff;
}
.movement-result-dialog::backdrop { background: rgba(20,20,20,.58); backdrop-filter: blur(2px); }
.movement-dialog-shell { height: 100%; display: flex; flex-direction: column; padding: 1.1rem; gap: .85rem; overflow: hidden; }
.movement-dialog-head { flex: 0 0 auto; margin: 0; padding-bottom: .75rem; border-bottom: 1px solid var(--line); }
.movement-dialog-actions { display: flex; align-items: center; gap: .6rem; }
.dialog-close { width: 40px; height: 40px; min-width: 40px; border-radius: 999px; padding: 0; font-size: 1.55rem; line-height: 1; }
.movement-dialog-block { flex: 0 0 auto; border: 1px solid var(--line); border-radius: .7rem; padding: .8rem; background: #fcfcfc; }
.movement-dialog-block h3 { margin: 0 0 .15rem; }
.movement-dialog-summary { flex: 0 0 auto; margin: 0; }
#movement-result-card { min-height: 0; flex: 1 1 auto; overflow: hidden; }
.movement-result-table { max-height: 100%; height: 100%; overflow: auto; }
.movement-result-table th { position: sticky; top: 0; z-index: 2; }

.entity-list-head { align-items: end; gap: 1rem; }
.entity-live-filter { display: grid; grid-template-columns: auto minmax(260px, 420px) auto; align-items: center; gap: .5rem; }
.entity-live-filter label { font-size: .78rem; font-weight: 750; color: var(--muted); }
.entity-live-filter input { min-width: 260px; }

.assignment-section-head { align-items: end; gap: 1rem; }
.assignment-filter-wrap { display: grid; grid-template-columns: auto minmax(280px, 430px) auto; align-items: center; gap: .5rem; }
.assignment-filter-wrap label { font-size: .78rem; font-weight: 750; color: var(--muted); }
.assignment-site-groups { display: grid; gap: .75rem; }
.assignment-site-group { border: 1px solid var(--line); border-radius: .7rem; background: #fcfcfc; overflow: hidden; }
.assignment-site-group > summary { cursor: pointer; list-style: none; display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .7rem .85rem; border-bottom: 1px solid transparent; }
.assignment-site-group[open] > summary { border-bottom-color: var(--line); }
.assignment-site-group > summary::-webkit-details-marker { display: none; }
.assignment-gateway-list { display: grid; }
.assignment-gateway-row { display: grid; grid-template-columns: minmax(180px, 260px) minmax(0, 1fr); gap: .7rem; align-items: start; padding: .55rem .75rem; background: #fff; }
.assignment-gateway-row + .assignment-gateway-row { border-top: 1px solid #eceae8; }
.assignment-gateway-id { display: flex; flex-direction: column; gap: .12rem; min-width: 0; }
.assignment-gateway-id code { font-size: .88rem; font-weight: 750; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.assignment-gateway-id small { color: var(--muted); }
.assignment-antennas { display: flex; flex-wrap: wrap; gap: .4rem; min-width: 0; }
.assignment-ant-chip { display: inline-grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: .38rem; max-width: min(100%, 620px); border: 1px solid #ffd1b4; background: #fff7ed; border-radius: .55rem; padding: .28rem .32rem .28rem .5rem; }
.assignment-ant-chip strong { white-space: nowrap; }
.assignment-ant-chip > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .78rem; }
.assignment-chip-delete { width: 26px; height: 26px; min-width: 26px; border-radius: 999px; padding: 0; line-height: 1; }

@media (max-width: 900px) {
  .entity-list-head, .assignment-section-head { align-items: stretch; }
  .entity-live-filter, .assignment-filter-wrap { grid-template-columns: 1fr auto; }
  .entity-live-filter label, .assignment-filter-wrap label { grid-column: 1 / -1; }
  .entity-live-filter input, .assignment-filter-wrap input { min-width: 0; width: 100%; }
  .assignment-gateway-row { grid-template-columns: 1fr; }
  .movement-result-dialog { width: 98vw; max-height: 94vh; height: 94vh; }
}

/* Free-form tenant zone dashboard layout administration */
.zone-layout-head-actions { display: flex; align-items: center; justify-content: flex-end; gap: .55rem; flex-wrap: wrap; }
.zone-layout-toolbar, .zone-layout-actions, .zone-layout-edit-tools { display: inline-flex; gap: .45rem; align-items: center; }
.zone-layout-toolbar[hidden], .zone-layout-actions[hidden], .zone-layout-edit-tools[hidden], .zone-layout-controls[hidden], .zone-resize-handle[hidden] { display: none !important; }
.zone-grid { grid-template-columns: repeat(3, minmax(240px, 1fr)); }
.zone-grid.zone-free-layout { position: relative; display: block; min-height: 240px; overflow: hidden; }
.zone-free-layout .zone-card { position: absolute; width: min(300px, calc(100% - 2px)); height: 190px; min-width: 160px; min-height: 120px; max-width: 300px; max-height: 190px; margin: 0; touch-action: none; }
.zone-layout-editing { outline: 2px dashed #fed7aa; outline-offset: .55rem; border-radius: 1rem; background-image: radial-gradient(circle, rgba(255,99,0,.16) 1px, transparent 1px); background-size: 20px 20px; }
.zone-layout-editing .zone-card { cursor: grab; user-select: none; border-color: #fdba74; box-shadow: 0 8px 24px rgba(255,99,0,.10); z-index: 2; }
.zone-layout-editing .zone-card:active, .zone-layout-editing .zone-card.dragging { cursor: grabbing; z-index: 20; }
.zone-layout-editing .zone-card.dragging { opacity: .82; box-shadow: 0 16px 36px rgba(17,17,17,.18); }
.zone-layout-editing .zone-count-link { pointer-events: none; opacity: .78; }
.zone-layout-controls { position: absolute; z-index: 5; top: .55rem; right: .55rem; display: flex; gap: .28rem; max-width: 188px; flex-wrap: wrap; justify-content: flex-end; }
.zone-layout-controls button { width: 32px; min-width: 32px; height: 30px; padding: 0; border-radius: .5rem; background: #fff; border-color: #fdba74; box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.zone-layout-controls .zone-drag-handle { cursor: grab; font-size: 1rem; font-weight: 900; }
.zone-resize-handle { position: absolute; z-index: 8; right: .28rem; bottom: .28rem; width: 32px; min-width: 32px; height: 32px; padding: 0; border-radius: .55rem; background: #fff; border: 1px solid #fdba74; box-shadow: 0 2px 8px rgba(0,0,0,.10); cursor: nwse-resize; font-size: 1rem; font-weight: 900; line-height: 1; }
.zone-layout-editing .zone-card.resizing { z-index: 20; border-color: var(--brand-orange); box-shadow: 0 16px 36px rgba(17,17,17,.18); }
.zone-free-layout .zone-card.zone-card-compact { padding: .65rem .5rem; }
.zone-free-layout .zone-card.zone-card-compact h2 { margin: .25rem 0 .15rem; font-size: 1.15rem; }
.zone-free-layout .zone-card.zone-card-compact .zone-count-split { min-width: 0; width: calc(100% - .5rem); min-height: 58px; }
.zone-free-layout .zone-card.zone-card-compact .zone-count-split > span { padding: .4rem .3rem; }
.zone-free-layout .zone-card.zone-card-compact .zone-count-split strong { font-size: 1.55rem; }
.zone-free-layout .zone-card.zone-card-compact .zone-count-split small { font-size: .58rem; }
.zone-free-layout .zone-card.zone-card-compact .zone-unassigned { margin-top: .25rem; font-size: .66rem; }
.zone-free-layout .zone-card.zone-card-tiny h2 { font-size: .98rem; }
.zone-free-layout .zone-card.zone-card-tiny .zone-card-title > small { font-size: .62rem; }
.zone-free-layout .zone-card.zone-card-tiny .zone-count-split { min-height: 50px; }
.zone-free-layout .zone-card.zone-card-tiny .zone-count-split strong { font-size: 1.25rem; }
.zone-free-layout .zone-card.zone-card-tiny .zone-count-split small { font-size: .52rem; letter-spacing: .01em; }
.zone-free-layout .zone-card.zone-card-tiny .zone-unassigned { display: none; }
@media (max-width: 1050px) { .zone-grid:not(.zone-free-layout) { grid-template-columns: repeat(2, minmax(240px, 1fr)); } }
@media (max-width: 800px) { .zone-layout-head-actions { width: 100%; justify-content: flex-start; } .zone-layout-toolbar, .zone-layout-actions, .zone-layout-edit-tools { flex-wrap: wrap; } }
@media (max-width: 650px) { .zone-grid:not(.zone-free-layout) { grid-template-columns: 1fr; } .zone-free-layout .zone-card { width: min(300px, 100%); } }

/* v0.15.0 ID cards and webcam photos */
.photo-dialog { width:min(94vw,980px); border:0; border-radius:16px; padding:0; box-shadow:0 24px 80px rgba(0,0,0,.28); }
.photo-dialog::backdrop { background:rgba(20,20,20,.58); backdrop-filter:blur(2px); }
.photo-dialog-shell { padding:1.1rem; display:grid; gap:1rem; }
.photo-capture-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.camera-frame,.photo-preview-frame { position:relative; min-height:330px; border:1px solid var(--line); border-radius:.8rem; background:#171717; overflow:hidden; display:flex; align-items:center; justify-content:center; }
.camera-frame video { width:100%; height:100%; max-height:430px; object-fit:cover; }
.camera-placeholder { position:absolute; color:#ddd; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:none; }
.photo-preview-frame { background:#f5f5f4; }
.photo-preview-frame img { width:100%; height:100%; max-height:430px; object-fit:contain; display:block; }
.photo-preview-frame > span { color:var(--muted); }
.photo-actions { display:flex; flex-wrap:wrap; gap:.55rem; }

.idcard-admin-top { display:grid; grid-template-columns:minmax(280px,420px) 1fr; gap:1.5rem; align-items:end; }
.idcard-admin-top > div { display:flex; flex-direction:column; gap:.2rem; }
.idcard-editor-layout { display:grid; grid-template-columns:minmax(600px,1.15fr) minmax(520px,.85fr); gap:1rem; align-items:start; }
.idcard-form-grid { grid-template-columns:repeat(2,minmax(180px,1fr)); gap:.7rem; }
.idcard-form-grid .wide-field { grid-column:1/-1; }
.idcard-settings-panel h3 { margin:1rem 0 .3rem; }
.idcard-element-table { margin-top:.7rem; }
.idcard-element-table th,.idcard-element-table td { padding:.42rem; }
.compact-number { min-width:72px; width:84px; min-height:34px; padding:.35rem .45rem; }
.idcard-preview-panel { position:sticky; top:100px; }
.idcard-preview-stage { min-height:355px; overflow:auto; padding:1rem; border:1px dashed var(--line-strong); border-radius:.75rem; background:linear-gradient(45deg,#f6f6f6 25%,transparent 25%),linear-gradient(-45deg,#f6f6f6 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#f6f6f6 75%),linear-gradient(-45deg,transparent 75%,#f6f6f6 75%); background-size:20px 20px; background-position:0 0,0 10px,10px -10px,-10px 0; }
.preview-card { transform:scale(1.42); transform-origin:top left; box-shadow:0 8px 28px rgba(0,0,0,.16); }
.idcard-logo-admin { display:grid; gap:.7rem; margin-top:1rem; }

.idcard-card { position:relative; overflow:hidden; flex:0 0 auto; color:#000; background:#fff; font-family:Arial,Helvetica,sans-serif; border:0; }
.idcard-element { position:absolute; overflow:hidden; line-height:1.08; display:block; word-break:break-word; }
.idcard-title,.idcard-name,.idcard-company,.idcard-tag_id { display:flex; align-items:center; }
.idcard-logo,.idcard-photo { display:flex; align-items:center; justify-content:center; }
.idcard-logo img { width:100%; height:100%; object-fit:contain; display:block; }
.idcard-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.idcard-emergency { line-height:1.05; }
.idcard-emergency strong { font-weight:800; }
.idcard-placeholder { width:100%; height:100%; border:1px dashed #999; display:flex; align-items:center; justify-content:center; color:#777; font-size:2.4mm; background:#f5f5f5; }
.photo-placeholder { background:#e7e5e4; }
.admin-card-element { cursor:move; outline:1px dashed transparent; }
.admin-card-element:hover { outline-color:var(--brand-orange); background-color:rgba(255,99,0,.04); }

.idcard-print-body { margin:0; background:#ececec; min-height:100vh; }
.idcard-print-toolbar { position:sticky; top:0; z-index:10; display:flex; justify-content:center; gap:.6rem; padding:.7rem; background:#fff; border-bottom:1px solid #ddd; }
.idcard-print-main { min-height:calc(100vh - 70px); display:flex; align-items:flex-start; justify-content:center; padding:2rem; max-width:none; }
.print-card { box-shadow:0 10px 35px rgba(0,0,0,.18); }

@media (max-width:1200px){ .idcard-editor-layout{grid-template-columns:1fr}.idcard-preview-panel{position:static}.idcard-preview-stage{min-height:350px} }
@media (max-width:720px){ .photo-capture-grid,.idcard-admin-top,.idcard-form-grid{grid-template-columns:1fr}.camera-frame,.photo-preview-frame{min-height:250px}.preview-card{transform:scale(1)} }
@media print {
  .idcard-print-toolbar,#notice,.idcard-qr-info { display:none!important; }
  html,body.idcard-print-body { margin:0!important; padding:0!important; width:auto!important; min-height:0!important; background:#fff!important; }
  .idcard-print-main { display:block!important; margin:0!important; padding:0!important; min-height:0!important; }
  .print-card { margin:0!important; box-shadow:none!important; }
}


/* v0.15.1 Movement History result popup: compact metrics + large answer area */
.movement-answer-panel {
  flex: 0 0 auto;
  border: 1px solid #ffd1b4;
  border-radius: .8rem;
  padding: .85rem 1rem;
  background: linear-gradient(180deg,#fffaf7 0%,#fff 100%);
  box-shadow: 0 3px 14px rgba(255,99,0,.06);
}
.movement-answer-head { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; margin-bottom:.55rem; }
.movement-answer-head h3 { margin:0 0 .12rem; font-size:1.05rem; }
.movement-answer-head p { margin:.1rem 0 0; }
.movement-answer-scroll { max-height:min(34vh,360px); overflow:auto; border-top:1px solid #ffe5d5; padding-top:.6rem; }
.movement-answer { margin:0; white-space:pre-wrap; overflow-wrap:anywhere; word-break:normal; font-size:.96rem; line-height:1.5; font-weight:620; color:#292524; }
.movement-dialog-summary {
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:.6rem;
  width:100%;
}
.movement-dialog-summary .card { margin:0; min-width:0; padding:.75rem .8rem; }
.movement-dialog-summary .card h2 { margin-bottom:.35rem; font-size:.78rem; color:var(--muted); text-transform:uppercase; letter-spacing:.035em; }
.movement-dialog-summary .metric { font-size:1.6rem; margin:.1rem 0; }
.movement-dialog-summary .metric-small { font-size:.95rem; line-height:1.25; margin:.1rem 0; overflow-wrap:anywhere; }
@media (max-width:1200px){ .movement-dialog-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.movement-answer-scroll{max-height:30vh} }
@media (max-width:720px){ .movement-dialog-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.movement-answer-head{display:block}.movement-answer-head .pill{margin-top:.45rem}.movement-answer-scroll{max-height:36vh} }

/* v0.15.2 Movement History: table-first result workspace */
.movement-result-dialog {
  width: min(98.5vw, 1880px);
  max-width: 1880px;
  height: 96vh;
  max-height: 96vh;
}
.movement-dialog-shell { padding:.85rem 1rem; gap:.55rem; }
.movement-dialog-head { padding-bottom:.5rem; }
.movement-dialog-head h2 { margin-bottom:.18rem; }
.movement-dialog-actions { flex-wrap:wrap; justify-content:flex-end; }
.movement-focus-button { white-space:nowrap; }

.movement-answer-panel { padding:.58rem .75rem; border-radius:.7rem; }
.movement-answer-head { align-items:center; margin:0; min-height:42px; }
.movement-answer-title-wrap { min-width:0; flex:1 1 auto; display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:.7rem; }
.movement-answer-title-wrap h3 { margin:0; white-space:nowrap; }
.movement-answer-preview { color:#44403c; font-size:.9rem; line-height:1.3; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.movement-answer-actions { display:flex; align-items:center; gap:.45rem; flex:0 0 auto; }
.movement-answer-body { margin-top:.5rem; }
.movement-answer-scroll { max-height:min(42vh,520px); padding:.65rem .2rem .2rem 0; }
.movement-answer { font-size:.94rem; line-height:1.45; font-weight:560; }
.movement-answer-collapsed { background:#fffaf7; }

.movement-understood-details { padding:.48rem .7rem; }
.movement-understood-details > summary { cursor:pointer; display:flex; align-items:center; gap:.65rem; list-style:none; min-height:30px; }
.movement-understood-details > summary::-webkit-details-marker { display:none; }
.movement-understood-details > summary::before { content:'▸'; font-size:.85rem; transition:transform .15s ease; }
.movement-understood-details[open] > summary::before { transform:rotate(90deg); }
.movement-understood-details > summary .muted { font-size:.78rem; }
.movement-understood-body { padding-top:.55rem; }

.movement-dialog-summary { gap:.4rem; }
.movement-dialog-summary .card { padding:.48rem .62rem; min-height:58px; border-radius:.65rem; }
.movement-dialog-summary .card::before { width:26px; }
.movement-dialog-summary .card h2 { font-size:.68rem; margin-bottom:.15rem; }
.movement-dialog-summary .metric { font-size:1.28rem; line-height:1.05; }
.movement-dialog-summary .metric-small { font-size:.78rem; line-height:1.15; }

#movement-result-card { border:1px solid var(--line); border-radius:.65rem; background:#fff; }
.movement-result-table { min-height:280px; }
.movement-result-table table { font-size:.88rem; }
.movement-result-table th { padding:.56rem .62rem; white-space:nowrap; }
.movement-result-table td { padding:.56rem .62rem; vertical-align:top; }
.movement-result-table tbody tr:hover { background:#fffaf7; }

/* One-click focus mode: use nearly the whole modal for the result table. */
.movement-dialog-shell.movement-table-focus .movement-answer-panel,
.movement-dialog-shell.movement-table-focus .movement-understood-details,
.movement-dialog-shell.movement-table-focus .movement-dialog-summary { display:none !important; }
.movement-dialog-shell.movement-table-focus #movement-result-card { flex:1 1 auto; }

@media (max-width:1200px){
  .movement-answer-title-wrap{grid-template-columns:1fr}.movement-answer-preview{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .movement-result-dialog{width:99vw;height:97vh;max-height:97vh}
}
@media (max-width:720px){
  .movement-answer-head{align-items:stretch;flex-direction:column}.movement-answer-actions{justify-content:flex-start}.movement-dialog-actions{gap:.35rem}
  .movement-focus-button{font-size:.78rem;padding:.45rem .55rem}
}

/* v0.15.3 adaptive Movement History examples */
.query-chip{display:inline-flex;align-items:center;gap:.45rem;max-width:100%;}
.query-learned-mark{font-size:.68rem;font-weight:800;line-height:1;padding:.22rem .38rem;border-radius:999px;background:#fff3e8;color:#9a3c00;border:1px solid #ffc999;white-space:nowrap;}
.movement-learning-hint{margin:.35rem 0 0;font-size:.82rem;}

/* V0.16.0: hidden 2N credential controls must stay hidden even when form label rules set display. */
[hidden] { display: none !important; }
.switch-row { display: inline-flex; align-items: center; gap: .55rem; font-weight: 700; }
.two-n-field small { display: block; margin-top: .25rem; }

/* 0.16.1 access lock controls */
.icon-action{width:2.35rem;height:2.35rem;padding:0;display:inline-grid;place-items:center;font-size:1.05rem;line-height:1;border-radius:999px;vertical-align:middle}
.icon-action.is-blocked{border-color:#dc002e;background:#fff1f3}
.access-blocked-row td{background:#fff8f8}
.access-blocked-row td:first-child{box-shadow:inset 3px 0 0 #dc002e}

/* 0.17.0 reader/access-log */
.access-state{display:inline-flex;align-items:center;gap:.35rem;padding:.28rem .6rem;border-radius:999px;font-weight:800;white-space:nowrap}
.access-state.allowed{background:#e8f7ed;color:#146b32;border:1px solid #93d4a8}
.access-state.denied{background:#fdebed;color:#a7192f;border:1px solid #ef9baa}
.access-state.pending{background:#f3f3f3;color:#555;border:1px solid #d4d4d4}
.ok-text{color:#167238}.bad-text{color:#b51e35}
.access-filter-grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px;margin-top:12px}
.access-log-table{max-height:58vh;overflow:auto}.access-log-table thead th{position:sticky;top:0;z-index:2;background:#fff}
@media(max-width:1200px){.access-filter-grid{grid-template-columns:repeat(3,minmax(150px,1fr))}}
@media(max-width:720px){.access-filter-grid{grid-template-columns:1fr}}

/* 0.18.0 access groups and weekly schedule editor */
.access-group-field{grid-column:1/-1;border:1px solid var(--line);border-radius:.7rem;padding:.75rem;background:#fafafa}
.field-label{display:block;font-weight:800;margin-bottom:.45rem}
.group-picker{display:flex;flex-wrap:wrap;gap:.55rem;align-items:stretch}
.group-picker-item{display:flex;align-items:center;gap:.5rem;min-width:180px;padding:.5rem .65rem;border:1px solid var(--line);border-radius:.65rem;background:#fff;cursor:pointer}
.group-picker-item input{width:auto;margin:0}
.group-picker-item span{display:flex;flex-direction:column;gap:.05rem}
.group-picker-item small{color:var(--muted)}
.group-picker-item:has(input:checked){border-color:#ff9b5c;background:#fff5ee;box-shadow:inset 0 0 0 1px #ff9b5c}
.group-reader-panel{margin:1rem 0;padding:1rem;border:1px solid var(--line);border-radius:.8rem;background:#fafafa}
.group-reader-panel h3{margin-top:0}
.schedule-editor{margin:1rem 0;border:1px solid var(--line);border-radius:.8rem;overflow:hidden;background:#fff}
.schedule-editor>.section-head{padding:.8rem 1rem;margin:0;background:#f7f7f7;border-bottom:1px solid var(--line)}
.schedule-day{display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:.8rem;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--line)}
.schedule-day:last-child{border-bottom:0}
.schedule-day-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.schedule-day-head strong{font-size:1rem}
.schedule-day-head .checkbox{margin:0}
.schedule-intervals{display:flex;flex-wrap:wrap;gap:.55rem;min-height:38px;align-items:center}
.schedule-interval{display:flex;align-items:center;gap:.4rem;padding:.35rem .45rem;border-radius:.55rem;background:#f5f5f4;border:1px solid #e7e5e4}
.schedule-interval label{display:flex;align-items:center;gap:.3rem;margin:0;font-size:.78rem;font-weight:700}
.schedule-interval input[type=time]{width:112px;padding:.38rem .45rem}
.schedule-remove,.schedule-add,.schedule-copy{width:2.2rem;height:2.2rem;padding:0;display:inline-grid;place-items:center;font-size:1rem}
.schedule-day-actions{display:flex;gap:.35rem}
@media(max-width:900px){.schedule-day{grid-template-columns:1fr}.schedule-day-actions{justify-content:flex-start}.schedule-interval{width:100%;flex-wrap:wrap}.schedule-interval input[type=time]{width:125px}}

/* 0.19.0 Eddystone-TLM battery log */
.battery-summary-card { margin-bottom: 1rem; }
.battery-table td { vertical-align: middle; }
.battery-low { display:inline-flex; align-items:center; gap:.35rem; font-weight:800; color:#b00020; }
.battery-low::before { content:'●'; font-size:.8em; }
.battery-toolbar { display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.battery-export-buttons { display:flex; gap:.5rem; flex-wrap:wrap; }

/* 0.39.6 DSGVO page */
.dsgvo-tabs { display:flex; gap:.4rem; flex-wrap:wrap; margin:1rem 0 .75rem; }
.dsgvo-tab { font-weight:700; }
.dsgvo-tab.active { background:var(--ink, #1c1917); color:#fff; border-color:var(--ink, #1c1917); }
.dsgvo-metrics { margin:1rem 0; }
.dsgvo-metrics > div { display:flex; flex-direction:column; gap:.15rem; }
.dsgvo-metrics strong { font-size:1.15rem; }
.dsgvo-duration { display:flex; gap:.4rem; align-items:center; }
.dsgvo-duration input[type=number] { width:6rem; }
.dsgvo-readonly { margin:.5rem 0; }
.dsgvo-export-buttons { display:flex; gap:.5rem; flex-wrap:wrap; margin:.75rem 0; }
.dsgvo-lockouts { margin:1rem 0 1.5rem; padding:.9rem 1rem; border:1px solid var(--line-strong, #d6d3d1); border-radius:.6rem; background:#fffaf5; }
.dsgvo-lockouts .section-head { margin-bottom:.6rem; }
.dsgvo-subject-summary { margin-top:1rem; }
.dsgvo-subject-summary code { word-break:break-all; }


/* 0.19.1: Movement-style access-log workspace + compact settings values */
.access-log-filters { margin-top:.55rem; }
.access-result-dialog { width:min(98.5vw,1880px); max-width:1880px; height:96vh; max-height:96vh; }
.access-dialog-shell { padding:.85rem 1rem; gap:.55rem; }
.access-dialog-summary { grid-template-columns:repeat(6,minmax(0,1fr)); }
.access-log-result-card { min-height:0; flex:1 1 auto; overflow:hidden; border:1px solid var(--line); border-radius:.65rem; background:#fff; }
.access-log-result-table { min-height:280px; height:100%; max-height:100%; overflow:auto; }
.access-log-result-table table { font-size:.88rem; }
.access-log-result-table th { position:sticky; top:0; z-index:2; padding:.56rem .62rem; white-space:nowrap; }
.access-log-result-table td { padding:.56rem .62rem; vertical-align:top; }
.access-dialog-shell.movement-table-focus .movement-answer-panel,
.access-dialog-shell.movement-table-focus .movement-understood-details,
.access-dialog-shell.movement-table-focus .access-dialog-summary { display:none !important; }
.access-dialog-shell.movement-table-focus .access-log-result-card { flex:1 1 auto; }

.settings-grid { display:flex; flex-wrap:wrap; gap:1rem; justify-content:flex-start; align-items:flex-end; }
.settings-grid > label { width:min(100%,260px); }
.settings-grid .settings-field-wide { width:min(100%,340px); }
.settings-grid .settings-field-medium { width:min(100%,220px); }
.settings-grid .settings-field-port { width:120px; }
.settings-grid .settings-field-tiny { width:92px; }
.settings-grid .settings-checkbox { width:auto; align-self:center; min-height:42px; justify-content:center; }
.settings-value-grid { display:flex; flex-wrap:wrap; gap:.8rem 1rem; align-items:end; margin-bottom:1rem; }
.settings-value-grid > label { width:auto; min-width:0; }
.settings-value-grid input[type=number] { width:9.5rem; }
.input-with-unit { display:flex; align-items:center; gap:.45rem; }
.input-with-unit input { width:8.2rem !important; }
.input-with-unit span { color:var(--muted); font-weight:800; font-size:.86rem; }
@media(max-width:720px){.access-dialog-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-grid{grid-template-columns:1fr}.settings-grid > label,.settings-grid .settings-field-wide,.settings-grid .settings-field-medium,.settings-grid .settings-field-port,.settings-grid .settings-field-tiny{width:100%}.settings-value-grid{display:grid;grid-template-columns:1fr}.settings-value-grid input[type=number],.input-with-unit input{width:100% !important}.input-with-unit{display:grid;grid-template-columns:minmax(0,1fr) auto}}

/* v0.20.0: compact numeric controls in ANPR administration */
.compact-number-input{max-width:9.5rem}
@media(max-width:720px){.compact-number-input{max-width:none;width:100%}}
.inline-field-action{display:flex;gap:.5rem;align-items:center}.inline-field-action input{flex:1;min-width:12rem}.form-span-2{grid-column:span 2}@media(max-width:720px){.inline-field-action{align-items:stretch;flex-direction:column}.form-span-2{grid-column:auto}}


/* v0.21.1 dashboard/admin UI refinements */
.tag-login-title { text-align: center; }
.zone-occupants-scroll { max-height: 72vh; overflow: auto; }
.zone-occupants-scroll th { position: sticky; top: 0; z-index: 2; }
@media (max-width: 650px) {
  .filter-action { gap: .55rem; }
}

/* v0.21.3 TAG dashboard resizable free layout and saved overview focus */
.dashboard-view-toolbar[hidden], .dashboard-overview[hidden], #dashboard-free-view[hidden], #zone-background-remove[hidden], #zone-background-upload[hidden] { display: none !important; }
.dashboard-view-toolbar { display: inline-flex; align-items: center; }
.dashboard-view-label { display: inline-flex; flex-direction: row; align-items: center; gap: .45rem; font-size: .8rem; }
.dashboard-view-label select { min-height: 36px; width: auto; min-width: 170px; padding: .42rem .65rem; }
.zone-background-surface { position: relative; border-radius: .85rem; background-position: center; background-repeat: no-repeat; background-size: contain; transition: min-height .2s ease; }
.zone-background-surface.has-background { min-height: 560px; border: 1px solid var(--line); background-color: #ececec; box-shadow: inset 0 0 0 1px rgba(255,255,255,.6); overflow: hidden; }
.zone-background-surface.has-background .zone-grid { min-height: 560px; padding: 1rem; }
.zone-background-surface.has-background .zone-card { background: rgba(255,255,255,.94); border: 1px solid rgba(214,211,209,.95); border-radius: .85rem; box-shadow: 0 8px 24px rgba(17,17,17,.11); backdrop-filter: blur(3px); }
.zone-background-surface.has-background .zone-free-layout .zone-card { width: min(300px, calc(100% - 2rem)); }
.zone-background-surface.has-background .zone-layout-editing { outline-offset: -.45rem; }

.dashboard-overview { margin-top: .15rem; }
.dashboard-overview-columns { display: grid; grid-template-columns: minmax(300px, .72fr) minmax(620px, 1.65fr); gap: 1rem; align-items: stretch; }
.dashboard-overview-columns > .card { margin-bottom: 0; }
.dashboard-panel-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.dashboard-panel-title h2 { margin: .1rem 0 0; font-size: 1.35rem; }
.dashboard-focus-select-label { min-width: 210px; font-size: .78rem; }
.dashboard-focus-select-label select { min-height: 38px; padding: .48rem .62rem; }
.dashboard-focus-select-label select:disabled { cursor: not-allowed; opacity: .72; background: #f5f5f4; }
.dashboard-focus-card { min-height: 330px; display: flex; flex-direction: column; }
.dashboard-focus-total { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 145px; margin: .35rem 0 .9rem; border-radius: .8rem; background: #fafaf9; border: 1px solid var(--line); }
.dashboard-focus-total > span { font-size: clamp(3.2rem, 7vw, 5.8rem); line-height: .95; font-weight: 900; color: var(--brand-black); }
.dashboard-focus-total > small { margin-top: .55rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.dashboard-focus-breakdown { display: grid; grid-template-columns: repeat(3, 1fr); gap: .6rem; }
.dashboard-focus-breakdown > div { padding: .75rem .45rem; border: 1px solid var(--line); border-radius: .65rem; text-align: center; background: #fff; }
.dashboard-focus-breakdown strong { display: block; font-size: 1.55rem; line-height: 1; }
.dashboard-focus-breakdown small { display: block; margin-top: .35rem; font-size: .7rem; }
.dashboard-focus-link { align-self: flex-end; margin-top: .9rem; font-weight: 800; }
.dashboard-zone-table-card { min-width: 0; }
.dashboard-zone-table-wrap { max-height: 520px; overflow: auto; }
.dashboard-zone-table-wrap th { top: 0; }

.dashboard-summary-card { display: flex; align-items: center; gap: .9rem; min-height: 94px; padding: .9rem 1rem; }
.dashboard-summary-card::before { width: 28px; }
.dashboard-summary-card h2 { margin: 0 0 .2rem; font-size: .78rem; }
.dashboard-summary-card .metric { margin: 0; font-size: 1.5rem; }
.dashboard-summary-icon { width: 42px; height: 42px; flex: 0 0 42px; display: grid; place-items: center; border-radius: .7rem; background: #f5f5f4; color: #256b87; font-size: 1.55rem; font-weight: 900; }
.dashboard-summary-icon.ok, .dashboard-summary-status.ok { color: var(--success); }
.dashboard-summary-icon.bad, .dashboard-summary-status.bad { color: var(--danger); }
.dashboard-summary-status { font-size: 1.05rem; font-weight: 900; line-height: 1.1; }
.dashboard-summary-card small { font-size: .68rem; }

@media (max-width: 1120px) {
  .dashboard-overview-columns { grid-template-columns: 1fr; }
  .dashboard-zone-table-wrap { max-height: none; }
}
@media (max-width: 760px) {
  .dashboard-view-label { align-items: stretch; flex-direction: column; }
  .dashboard-view-label select { width: 100%; }
  .dashboard-panel-title { flex-direction: column; }
  .dashboard-focus-select-label { width: 100%; }
  .dashboard-focus-breakdown { grid-template-columns: 1fr; }
  .zone-background-surface.has-background, .zone-background-surface.has-background .zone-grid { min-height: 480px; }
}

/* v0.21.4: zone detail filters, equipment and anonymous InfoScreen */
.zone-count-triple { min-width: 270px; }
.zone-count-triple > span { padding-left: .55rem; padding-right: .55rem; }
.zone-detail-filterbar { display: flex; flex-wrap: wrap; gap: .55rem; margin-bottom: 1rem; }
.zone-filter { display: inline-flex; align-items: center; gap: .45rem; }
.zone-filter.active { background: var(--brand-black); color: #fff; border-color: var(--brand-black); }
.zone-filter .filter-count { display: inline-grid; min-width: 1.65rem; min-height: 1.65rem; place-items: center; border-radius: 999px; background: rgba(0,0,0,.08); font-size: .75rem; font-weight: 800; }
.zone-filter.active .filter-count { background: rgba(255,255,255,.18); }
.infoscreen-page { min-height: 100vh; background: #f6f7f7; }
.infoscreen-header { position: sticky; top: 0; z-index: 10; }
.infoscreen-live { display: flex; align-items: center; gap: .5rem; font-weight: 750; }
.live-dot { width: .7rem; height: .7rem; border-radius: 50%; background: var(--success); box-shadow: 0 0 0 .25rem rgba(29,126,74,.12); }
.infoscreen-main { max-width: 1880px; margin: 0 auto; padding: 1.2rem; }
.infoscreen-summary { margin-bottom: 1rem; }
.infoscreen-overview { align-items: stretch; }
.infoscreen-url { display: inline-block; max-width: 420px; overflow-wrap: anywhere; }
@media (max-width: 760px) { .zone-count-triple { min-width: 0; width: 100%; } .infoscreen-main { padding: .75rem; } }

/* v0.21.5: InfoScreen uses the same compact card/grid proportions as the TAG zone overview. */
.infoscreen-summary .dashboard-summary-card { margin-bottom: 0; }
.infoscreen-overview .dashboard-zone-table-card > #is-updated { display: block; margin: -.55rem 0 .65rem; }

/* v0.21.6: wider TAG dashboard canvas and per-zone equipment visibility. */
.tag-dashboard-wide-main { max-width: 2040px; width: 100%; }
.zone-toggle-equipment { color: var(--muted); }
.zone-toggle-equipment.is-active { color: #fff; background: var(--brand-black); border-color: var(--brand-black); }
.zone-equipment-count[hidden], .equipment-column[hidden], .movement-equipment-filter[hidden] { display: none !important; }

/* v0.21.7: full-width free-layout workspace and single-row dashboard summary. */
.tag-dashboard-wide-main {
  max-width: none;
  width: 100%;
  margin-left: 0;
  margin-right: 0;
  padding-left: clamp(.55rem, 1vw, 1rem);
  padding-right: clamp(.55rem, 1vw, 1rem);
}
.tag-dashboard-wide-main #tag-summary.cards {
  grid-template-columns: repeat(auto-fit, minmax(145px, 1fr));
  gap: .7rem;
}
.tag-dashboard-wide-main #tag-summary .dashboard-summary-card {
  min-height: 84px;
  padding: .72rem .78rem;
  gap: .7rem;
  margin-bottom: 0;
}
.tag-dashboard-wide-main #tag-summary .dashboard-summary-icon {
  width: 38px;
  height: 38px;
  flex-basis: 38px;
  font-size: 1.35rem;
}
.tag-dashboard-wide-main #tag-summary .dashboard-summary-card h2 { font-size: .72rem; }
.tag-dashboard-wide-main #tag-summary .dashboard-summary-card .metric { font-size: 1.35rem; }
.tag-dashboard-wide-main #tag-summary .dashboard-summary-status { font-size: .95rem; }
.tag-dashboard-wide-main #tag-summary .dashboard-summary-card small { font-size: .62rem; }

/* Break the free-layout canvas out of the normal content column so the complete
   browser width can be used for placing zone cards left and right. */
.tag-dashboard-wide-main #dashboard-free-view {
  width: calc(100vw - 1rem);
  max-width: none;
  margin-left: calc(50% - 50vw + .5rem);
  margin-right: calc(50% - 50vw + .5rem);
}
.tag-dashboard-wide-main #dashboard-free-view .zone-background-surface,
.tag-dashboard-wide-main #dashboard-free-view .zone-grid.zone-free-layout {
  width: 100%;
  max-width: none;
}

@media (max-width: 1120px) {
  .tag-dashboard-wide-main #tag-summary.cards { grid-template-columns: repeat(auto-fit, minmax(135px, 1fr)); }
}
@media (max-width: 760px) {
  .tag-dashboard-wide-main #dashboard-free-view { width: 100%; margin-left: 0; margin-right: 0; }
  .tag-dashboard-wide-main #tag-summary.cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}


/* v0.21.8: tenant-selectable free-layout width. Standard is tuned for typical 24–27 inch workstations. */
.zone-workspace-width-label { white-space: nowrap; }
.zone-workspace-width-label select { min-width: 154px; }
.tag-dashboard-wide-main #dashboard-free-view {
  width: min(88vw, 1680px);
  max-width: calc(100vw - 2rem);
  margin-left: auto;
  margin-right: auto;
}
.tag-dashboard-wide-main #dashboard-free-view[data-workspace-width="compact"] {
  width: min(78vw, 1440px);
}
.tag-dashboard-wide-main #dashboard-free-view[data-workspace-width="standard"] {
  width: min(88vw, 1680px);
}
.tag-dashboard-wide-main #dashboard-free-view[data-workspace-width="wide"] {
  width: min(94vw, 1920px);
}
.tag-dashboard-wide-main #dashboard-free-view[data-workspace-width="full"] {
  width: calc(100vw - 1rem);
  max-width: none;
  margin-left: calc(50% - 50vw + .5rem);
  margin-right: calc(50% - 50vw + .5rem);
}
@media (max-width: 900px) {
  .zone-workspace-width-label { width: 100%; }
  .zone-workspace-width-label select { width: 100%; }
  .tag-dashboard-wide-main #dashboard-free-view,
  .tag-dashboard-wide-main #dashboard-free-view[data-workspace-width] {
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
  }
}


/* v0.21.9: edit-only layout tools and stable zone coordinates while the browser viewport changes. */
.tag-dashboard-wide-main #dashboard-free-view {
  overflow-x: auto;
  overflow-y: visible;
  scrollbar-gutter: stable;
}
.tag-dashboard-wide-main #dashboard-free-view .zone-background-surface {
  width: 100%;
  min-width: 1680px;
}
.tag-dashboard-wide-main #dashboard-free-view[data-workspace-width="compact"] .zone-background-surface { min-width: 1440px; }
.tag-dashboard-wide-main #dashboard-free-view[data-workspace-width="standard"] .zone-background-surface { min-width: 1680px; }
.tag-dashboard-wide-main #dashboard-free-view[data-workspace-width="wide"] .zone-background-surface { min-width: 1920px; }
.tag-dashboard-wide-main #dashboard-free-view[data-workspace-width="full"] .zone-background-surface { min-width: 2040px; }
.zone-layout-edit-tools[hidden], .zone-workspace-width-label[hidden] { display: none !important; }
@media (max-width: 900px) {
  .tag-dashboard-wide-main #dashboard-free-view[data-workspace-width] .zone-background-surface {
    width: 100%;
  }
}

/* v0.22.2: Windows Print-Agent installer uses venv python -m pip for reliable self-upgrades. */
.idcard-print-agent-panel { grid-column:1 / -1; }
.print-agent-create-grid { display:grid; grid-template-columns:minmax(220px,1fr) minmax(320px,1.6fr) auto; gap:.8rem; align-items:end; margin-bottom:1rem; }
.print-agent-create-grid label { margin:0; }
.print-agent-secret { margin:0 0 1rem; }
.print-agent-secret textarea { width:100%; min-height:12rem; resize:vertical; font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:.85rem; }
.print-agent-name-edit { min-width:180px; }
.print-agent-printer { min-width:220px; max-width:360px; }
.idcard-agent-choice { display:flex; align-items:center; gap:.45rem; margin:0; font-size:.85rem; font-weight:700; }
.idcard-agent-choice select { min-width:240px; }
@media (max-width:900px){ .print-agent-create-grid{grid-template-columns:1fr}.idcard-print-toolbar{flex-wrap:wrap}.idcard-agent-choice{width:100%;justify-content:center}.idcard-agent-choice select{min-width:0;max-width:70vw} }

/* v0.22.3: visible product name is ZOKA Dashboard; no layout geometry changes. */

/* v0.22.4: wider entity administration and manual Transponder Live workflow. */
main.entity-admin-wide,
main.transponder-live-main {
  width: min(96vw, 1900px);
  max-width: 1900px;
}
.entity-admin-wide .table-wrap { width: 100%; }
.entity-admin-wide table { min-width: 1320px; }

.transponder-live-actions { position: sticky; top: 96px; z-index: 8; }
.transponder-live-toolbar {
  display: grid;
  grid-template-columns: minmax(300px, 1.4fr) minmax(320px, 1.4fr) auto;
  gap: 1rem;
  align-items: end;
}
.transponder-live-hint { margin: .85rem 0 0; }
.transponder-live-table-wrap { max-height: none; min-height: 0; overflow: visible; }
.transponder-live-table { width:100%; min-width:0; table-layout:fixed; font-size:.86rem; }
.transponder-live-table th { position:static; min-width:0; overflow-wrap:anywhere; padding-left:10px; padding-right:10px; }
.transponder-live-table td { min-width:0; overflow-wrap:anywhere; padding-left:10px; padding-right:10px; }
.transponder-live-table .live-object-col { width:19%; }
.transponder-live-table .live-mac-col { width:15%; }
.transponder-live-table .live-zone-col { width:17%; }
.transponder-live-table .live-source-col { width:12%; }
.transponder-live-table .live-time-col { width:13%; }
.transponder-live-table .live-action-col { width:24%; }
.live-object-cell strong,.live-object-cell small { display:block; }
.live-object-cell .live-type-pill { display:inline-flex; margin-bottom:4px; }
.transponder-live-table code { white-space:normal; overflow-wrap:anywhere; }
.transponder-live-table .live-select-col { width: 46px; text-align: center; }
.transponder-live-table .live-select-col input { width: auto; min-height: auto; accent-color: var(--brand-orange); }
.live-row-action { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.4rem; align-items:center; min-width:0; }
.live-row-action select { width:100%; min-width:0; min-height:38px; padding-top:.45rem; padding-bottom:.45rem; }
.live-row-action button { white-space:nowrap; padding-left:10px; padding-right:10px; }

@media (max-width: 1000px) {
  main.entity-admin-wide,
  main.transponder-live-main { width: 100%; max-width: 100%; }
  .transponder-live-actions { position: static; }
  .transponder-live-toolbar { grid-template-columns: 1fr; }
  .transponder-live-table-wrap { max-height: none; }
}

/* v0.22.5: compact entity administration with modal editors. */
.entity-head-actions { display:flex; align-items:center; justify-content:flex-end; gap:.65rem; flex-wrap:wrap; }
.entity-editor-dialog {
  width:min(94vw,1180px);
  max-width:1180px;
  max-height:90vh;
  border:0;
  border-radius:16px;
  padding:0;
  background:#fff;
  box-shadow:0 24px 80px rgba(0,0,0,.28);
}
.entity-editor-dialog-wide { width:min(96vw,1360px); max-width:1360px; }
.entity-editor-dialog::backdrop { background:rgba(20,20,20,.58); backdrop-filter:blur(2px); }
.entity-editor-shell { padding:1.1rem; max-height:90vh; overflow:auto; }
.entity-editor-head { padding-bottom:.7rem; border-bottom:1px solid var(--line); margin-bottom:1rem; }
.entity-editor-head h2 { font-size:1.12rem; margin-bottom:.15rem; }
.entity-form-grid { grid-template-columns:repeat(3,minmax(210px,1fr)); margin-bottom:0; }
.entity-group-field { padding:.55rem .65rem; }
.entity-group-field .field-label { margin-bottom:.3rem; }
.entity-group-picker { gap:.35rem; align-items:center; }
.entity-group-picker .group-picker-item {
  min-width:0;
  width:auto;
  padding:.3rem .55rem;
  gap:.38rem;
  border-radius:999px;
  align-items:center;
}
.entity-group-picker .group-picker-item span { flex-direction:row; align-items:baseline; gap:.3rem; white-space:nowrap; }
.entity-group-picker .group-picker-item small { font-size:.72rem; }
.entity-editor-actions { grid-column:1 / -1; display:flex; gap:.55rem; align-items:center; padding-top:.2rem; }
.entity-row-actions { display:flex; align-items:center; justify-content:flex-end; gap:.3rem; }
.entity-actions-cell, .entity-actions-heading { width:132px; min-width:132px; text-align:right; }
.entity-row-actions .icon-action { width:2.15rem; height:2.15rem; min-width:2.15rem; font-size:1rem; }
.danger-action { color:#a7192f; border-color:#efb2bc; background:#fff8f8; }
.danger-action:hover { background:#fdebed; border-color:#ef9baa; }

@media (max-width:1000px) {
  .entity-form-grid { grid-template-columns:repeat(2,minmax(200px,1fr)); }
}
@media (max-width:650px) {
  .entity-head-actions { width:100%; justify-content:flex-start; }
  .entity-editor-dialog,.entity-editor-dialog-wide { width:98vw; max-height:94vh; }
  .entity-editor-shell { max-height:94vh; padding:.85rem; }
  .entity-form-grid { grid-template-columns:1fr; }
  .entity-group-picker .group-picker-item span { white-space:normal; }
}

/* v0.22.6: compact entity actions and Movement History export controls. */
.person-actions-cell, .person-actions-heading { width:186px; min-width:186px; }
.equipment-actions-cell, .equipment-actions-heading { width:90px; min-width:90px; }
.person-actions-cell .entity-row-actions { gap:.22rem; }
.movement-export-button { white-space:nowrap; }
@media (max-width:720px) {
  .movement-dialog-actions .movement-export-button { flex:1 1 auto; }
}

/* v0.22.7: mobile QR ID-card verification */
.idcard-qr img { width:100%; height:100%; object-fit:contain; image-rendering:auto; background:#fff; }
.public-idcard-page { margin:0; min-height:100vh; background:#f4f5f6; color:#111; }
.public-idcard-header { display:flex; align-items:center; gap:14px; padding:14px max(16px,env(safe-area-inset-left)); background:#fff; border-bottom:3px solid #ff5a00; }
.public-idcard-header .brand-logo { width:74px; height:auto; }
.public-idcard-header div { display:flex; flex-direction:column; gap:2px; }
.public-idcard-header strong { font-size:1.05rem; }
.public-idcard-header small { color:#667085; }
.public-idcard-main { width:min(100%,760px); margin:0 auto; padding:20px 14px 32px; box-sizing:border-box; }
.public-idcard-status { display:flex; align-items:center; gap:8px; margin-bottom:14px; padding:10px 12px; border:1px solid #d9dde3; border-radius:12px; background:#fff; font-size:.9rem; }
.public-idcard-status span:last-child { margin-left:auto; color:#667085; }
.public-idcard-stage { overflow:auto; padding:16px; border-radius:16px; background:#e9eaec; box-shadow:inset 0 0 0 1px #d7d9dd; }
.public-idcard-card { position:relative; margin:auto; transform-origin:top left; box-shadow:0 8px 28px rgba(0,0,0,.16); }
.public-idcard-note { margin:14px 4px 0; color:#667085; font-size:.82rem; text-align:center; }
@media (max-width:520px) {
  .public-idcard-main { padding-left:8px; padding-right:8px; }
  .public-idcard-stage { padding:8px; }
  .public-idcard-card { zoom:.9; }
}
.idcard-qr-info { max-width:1100px; margin:8px auto; padding:7px 10px; font-size:.75rem; color:#667085; overflow-wrap:anywhere; }
.idcard-qr-placeholder { display:flex; width:100%; height:100%; align-items:center; justify-content:center; border:2px dashed #111; background:repeating-linear-gradient(45deg,#fff,#fff 3px,#111 3px,#111 5px); color:#fff; text-shadow:0 1px 2px #000; font-weight:900; }

/* v0.22.8: Mobile QR-ID-Card scanner */
.mobile-scanner-panel { display:grid; gap:12px; }
.mobile-scanner-panel h1 { margin:.15rem 0 0; font-size:1.45rem; }
.mobile-scanner-panel p { margin:.15rem 0; }
.mobile-scanner-camera { position:relative; width:100%; aspect-ratio:4/3; overflow:hidden; border-radius:16px; background:#111; color:#fff; display:flex; align-items:center; justify-content:center; }
.mobile-scanner-camera video { width:100%; height:100%; object-fit:cover; }
#qr-camera-placeholder { color:#d7d7d7; font-weight:700; }
.mobile-scanner-target { position:absolute; width:min(58vw,260px); aspect-ratio:1; border:3px solid #ff5a00; border-radius:18px; box-shadow:0 0 0 999px rgba(0,0,0,.2); pointer-events:none; }
.mobile-scanner-actions { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; }
.mobile-scanner-actions button,.button-like { min-height:44px; padding:10px 14px; border:1px solid #cfd3d8; border-radius:10px; background:#fff; color:#111; font:inherit; font-weight:800; cursor:pointer; box-sizing:border-box; }
.mobile-scanner-actions .primary { background:#111; color:#fff; border-left:3px solid #ff5a00; }
.mobile-scanner-manual { display:grid; grid-template-columns:1fr auto; gap:8px; align-items:end; }
.mobile-scanner-manual label { display:grid; gap:5px; font-weight:700; }
.mobile-scanner-manual input { min-height:44px; border:1px solid #cfd3d8; border-radius:10px; padding:8px 10px; font:inherit; text-transform:uppercase; }
.mobile-scanner-manual button { min-height:44px; }
.mobile-scanner-status { padding:10px 12px; border-radius:10px; background:#eef9f1; color:#176b36; font-weight:700; }
.mobile-scanner-status.error { background:#fff0f0; color:#b42318; }
#scanner-result .public-idcard-status { margin-top:0; }
@media (max-width:560px){ .mobile-scanner-manual{grid-template-columns:1fr}.mobile-scanner-manual button{width:100%} }


/* v0.22.9: compact MAC picker and normalized entity filters. */
.mac-picker-field { min-width:0; }
.mac-picker { position:relative; }
.mac-picker > input { width:100%; }
.mac-suggestion-list {
  position:absolute;
  z-index:80;
  left:0;
  right:0;
  top:calc(100% + .3rem);
  max-height:240px;
  overflow-y:auto;
  border:1px solid #d9d9d9;
  border-radius:10px;
  background:#fff;
  box-shadow:0 10px 28px rgba(17,17,17,.14);
  padding:.3rem;
}
.mac-suggestion-list[hidden] { display:none !important; }
.mac-suggestion-summary { padding:.35rem .55rem; color:var(--muted); font-size:.76rem; font-weight:700; border-bottom:1px solid #eee; }
.mac-suggestion-list button { display:block; width:100%; padding:.48rem .55rem; border:0; border-radius:7px; background:transparent; text-align:left; cursor:pointer; }
.mac-suggestion-list button:hover, .mac-suggestion-list button:focus { background:#f5f5f5; }
.mac-suggestion-list code { white-space:nowrap; }
.entity-live-filter { grid-template-columns:auto minmax(220px,360px) auto; }
@media (max-width:720px) {
  .mac-suggestion-list { max-height:190px; }
}

/* v0.23.0: bulk import and destructive tenant maintenance */
.button-row{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0 18px}.button-row a{display:inline-flex;align-items:center;min-height:38px;padding:0 14px;border:1px solid #d5d5d5;border-radius:9px;background:#fff;color:#111;text-decoration:none;font-weight:800}.button-row a:hover{border-color:#ff5a00}.bulk-import-form{align-items:start}.bulk-mode-field{grid-column:1/-1;border:1px solid #ddd;border-radius:12px;padding:12px;display:grid;gap:8px}.bulk-mode-field legend{font-weight:900;padding:0 6px}.radio-option{display:flex;gap:10px;align-items:flex-start;border:1px solid #e1e1e1;border-radius:10px;padding:10px;background:#fff}.radio-option input{margin-top:4px}.radio-option span{display:grid;gap:3px}.radio-option small{color:#667085;font-weight:500}.danger-option{border-color:#f0b5b5;background:#fffafa}.danger-confirm{grid-column:1/-1;padding:10px 12px;border:1px solid #efb0b0;border-radius:10px;background:#fff7f7}.danger-zone{border-color:#e3a0a0}.tenant-delete-summary{grid-column:1/-1;padding:12px;border:1px solid #ddd;border-radius:10px;background:#fafafa;line-height:1.6}.danger-zone .danger-action[type="submit"]{min-height:42px;padding:0 16px;border-radius:9px;font-weight:900}.danger-zone .danger-action[type="submit"]:disabled{opacity:.45;cursor:not-allowed}

/* v0.24.3 geographic coordinates for central status map. */
.coordinate-form{display:flex;gap:.35rem;align-items:center;min-width:340px}.coordinate-form input{width:105px;min-width:0;padding:.45rem .5rem}.coordinate-form button{white-space:nowrap;padding:.45rem .65rem}
@media(max-width:900px){.coordinate-form{min-width:300px}}

/* v0.24.3 coordinate map picker */
.coordinate-form{flex-wrap:wrap}.coordinate-form .coord-map-button,.coordinate-form .coord-inherit-button{padding:.45rem .65rem}.coordinate-source{width:100%;font-size:.78rem;color:#667085;line-height:1.25}.coordinate-picker-dialog{width:min(860px,94vw);max-width:860px;border:0;border-radius:14px;padding:0;box-shadow:0 24px 90px #0007}.coordinate-picker-dialog::backdrop{background:#0008}.coordinate-picker-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding:18px 20px 12px}.coordinate-picker-head h2{margin:0 0 5px}.coordinate-picker-head p{margin:0}.coordinate-picker-close{width:38px;height:38px;padding:0;border-radius:50%;font-size:24px;line-height:1}.coordinate-picker-map{position:relative;height:min(58vh,520px);min-height:360px;overflow:hidden;border-top:1px solid #d8dde4;border-bottom:1px solid #d8dde4;background:#dbe4ea;cursor:crosshair;touch-action:none}.coordinate-picker-map.dragging{cursor:grabbing}.coordinate-picker-tiles{position:absolute;inset:0}.coordinate-picker-tiles img{position:absolute;width:256px;height:256px;user-select:none;-webkit-user-drag:none}.coordinate-picker-marker{position:absolute;left:50%;top:50%;width:24px;height:24px;border-radius:50% 50% 50% 0;transform:translate(-50%,-100%) rotate(-45deg);background:#df4b15;border:3px solid #fff;box-shadow:0 3px 10px #0006;z-index:20;pointer-events:none}.coordinate-picker-marker::after{content:'';position:absolute;width:6px;height:6px;border-radius:50%;background:#fff;left:6px;top:6px}.coordinate-picker-controls{position:absolute;top:12px;left:12px;display:flex;flex-direction:column;z-index:30;box-shadow:0 1px 6px #0004}.coordinate-picker-controls button{width:40px;height:40px;padding:0;border-radius:0;background:#fff;color:#111;font-size:25px}.coordinate-picker-controls button:first-child{border-radius:7px 7px 0 0}.coordinate-picker-controls button:last-child{border-radius:0 0 7px 7px}.coordinate-picker-attribution{position:absolute;right:0;bottom:0;z-index:25;background:#ffffffe8;padding:3px 6px;font-size:11px}.coordinate-picker-attribution a{color:#245}.coordinate-picker-values{display:flex;gap:24px;flex-wrap:wrap;padding:12px 20px;background:#f8fafc;font-variant-numeric:tabular-nums}.coordinate-picker-actions{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px 18px}.coordinate-picker-actions .primary{background:#111;color:#fff}.coordinate-picker-actions button:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:700px){.coordinate-picker-dialog{width:96vw}.coordinate-picker-map{min-height:330px;height:55vh}.coordinate-picker-values{gap:10px;display:grid;grid-template-columns:1fr 1fr}.coordinate-picker-actions{flex-wrap:wrap}.coordinate-picker-actions button{flex:1}}

/* v0.24.5: compact gateway administration and aligned settings forms. */
.settings-grid.settings-grid-aligned{align-items:flex-start}
.settings-grid.settings-grid-aligned>label{align-self:flex-start}
.device-coordinate-field{min-width:0}
.device-coordinate-editor{display:grid;grid-template-columns:minmax(120px,1fr) minmax(120px,1fr) auto auto;gap:.45rem;align-items:center}
.device-coordinate-editor input{min-width:0}
.device-coordinate-field small{font-weight:500;line-height:1.3}
.gateway-admin-table-wrap{overflow-x:visible}
.gateway-admin-table{table-layout:fixed;font-size:.82rem}
.gateway-admin-table th,.gateway-admin-table td{white-space:normal;padding:.52rem .42rem;overflow-wrap:anywhere}
.gateway-admin-table .gw-col-site{width:9%}.gateway-admin-table .gw-col-id{width:10%}.gateway-admin-table .gw-col-name{width:16%}.gateway-admin-table .gw-col-coord{width:29%}.gateway-admin-table .gw-col-status{width:8%}.gateway-admin-table .gw-col-monitor{width:5%}.gateway-admin-table .gw-col-last{width:11%}.gateway-admin-table .gw-col-age{width:5%}.gateway-admin-table .gw-col-rssi{width:7%}
.gateway-admin-table .gateway-name-form{grid-template-columns:minmax(0,1fr) auto;min-width:0;gap:.3rem}
.gateway-admin-table .gateway-name-form .gw-save{min-width:0;padding:.42rem .5rem;font-size:.75rem}
.gateway-admin-table .coordinate-form{display:grid;grid-template-columns:minmax(72px,1fr) minmax(72px,1fr) auto auto;min-width:0;gap:.3rem;align-items:center}
.gateway-admin-table .coordinate-form input{width:100%;padding:.42rem .4rem;font-size:.78rem}
.gateway-admin-table .coordinate-form button{padding:.42rem .48rem;font-size:.74rem}
.gateway-admin-table .coordinate-source{grid-column:1/-1;width:auto;font-size:.7rem}
.gateway-monitor-toggle{width:34px;height:34px;min-width:34px;padding:0;border-radius:999px;font-size:1rem;line-height:1;text-align:center}
@media(max-width:1100px){.gateway-admin-table-wrap{overflow-x:auto}.gateway-admin-table{min-width:1080px}.device-coordinate-editor{grid-template-columns:1fr 1fr}.device-coordinate-editor button{width:100%}}
@media(max-width:720px){.device-coordinate-editor{grid-template-columns:1fr}.device-coordinate-editor button{width:100%}}

/* v0.24.6: foreign-device ping administration. */
.foreign-device-toolbar-head{align-items:flex-end}
.foreign-device-toolbar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin:0 0 1rem}
.foreign-device-toolbar .danger-action{border-color:#e3aaaa;color:#a01818;background:#fff8f8}
.foreign-select-col{width:42px;text-align:center}.foreign-select-col input{width:auto;min-height:auto;accent-color:var(--brand-orange)}
.foreign-device-table{min-width:1040px}.foreign-device-table th,.foreign-device-table td{vertical-align:middle}.foreign-row-actions{white-space:nowrap}
.foreign-row-actions button{width:36px;height:36px;min-height:36px;padding:0;border-radius:9px;font-size:1rem;line-height:1}.foreign-row-actions .danger-icon{color:#a01818}
.foreign-device-dialog{width:min(960px,96vw);max-width:960px;max-height:94vh;border:0;border-radius:16px;padding:0;box-shadow:0 24px 90px #0007}
.foreign-device-dialog::backdrop{background:#0008;backdrop-filter:blur(2px)}
.foreign-device-dialog-shell{padding:0;margin:0;display:block;background:#fff}
.foreign-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.15rem 1.3rem .8rem}.foreign-dialog-head h2{margin:0 0 .25rem}.foreign-dialog-head p{margin:0}
.foreign-dialog-close{flex:none;width:38px;height:38px;min-height:38px;padding:0;border-radius:50%;font-size:24px;line-height:1}
.foreign-device-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem 1rem;padding:.6rem 1.3rem .9rem}.foreign-device-form-grid>label{display:grid;grid-template-rows:auto 42px auto;align-content:start;gap:.3rem;margin:0}.foreign-device-form-grid input:not([type=checkbox]),.foreign-device-form-grid select,.foreign-device-form-grid button{height:42px;min-height:42px;box-sizing:border-box}.foreign-device-form-grid .checkbox{display:flex;align-items:center;gap:.55rem;min-height:42px;align-self:end;padding-bottom:0}.foreign-device-form-grid .checkbox input{width:auto;min-height:auto}.foreign-device-form-grid .device-coordinate-field{grid-template-rows:auto auto auto}.foreign-coordinate-editor{align-items:stretch}.foreign-coordinate-editor input,.foreign-coordinate-editor button{height:42px!important;min-height:42px!important}
.foreign-dialog-actions{display:flex;justify-content:flex-end;gap:.55rem;padding:.2rem 1.3rem 1rem}.foreign-dialog-actions button{height:42px;min-height:42px}
.foreign-import-panel{border-top:1px solid #e0e4e8;background:#f8fafc;padding:1rem 1.3rem 1.25rem}.foreign-import-panel h3{margin:.1rem 0 .25rem}.foreign-import-panel p{margin:0 0 .75rem}.foreign-import-grid{display:grid;grid-template-columns:minmax(260px,1fr) auto auto auto;gap:.55rem;align-items:end;margin:.7rem 0}.foreign-import-grid>label{display:grid;grid-template-rows:auto 42px;gap:.3rem;margin:0}.foreign-import-grid input[type=file],.foreign-import-grid button,.foreign-import-grid .button-link{height:42px;min-height:42px;box-sizing:border-box}.foreign-import-grid input[type=file]{padding:.38rem .5rem;background:#fff}.foreign-import-grid .button-link{display:inline-flex;align-items:center;justify-content:center;padding:0 .8rem;border:1px solid #cfd3d8;border-radius:9px;background:#fff;color:#111;text-decoration:none;font-weight:800;white-space:nowrap}.foreign-import-grid .button-link:hover{border-color:var(--brand-orange)}
#foreign-import-result{margin-top:.7rem}
@media(max-width:850px){.foreign-device-form-grid{grid-template-columns:1fr}.foreign-device-form-grid .form-span-2{grid-column:auto}.foreign-import-grid{grid-template-columns:1fr 1fr}.foreign-import-file{grid-column:1/-1}.foreign-device-table-wrap{overflow-x:auto}}
@media(max-width:560px){.foreign-import-grid{grid-template-columns:1fr}.foreign-import-file{grid-column:auto}.foreign-device-toolbar button{flex:1 1 46%}}

/* v0.24.12 profiling / monitoring */
.performance-head{align-items:flex-start;gap:18px}.performance-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.performance-card-grid{grid-template-columns:repeat(5,minmax(150px,1fr))}.performance-card-grid .card{min-height:116px}.performance-card-grid .metric{font-variant-numeric:tabular-nums}.performance-explain{margin-bottom:16px}.performance-explain p{max-width:1100px}.performance-table{min-width:1180px}.performance-table th,.performance-table td{white-space:nowrap}.performance-table td:first-child{white-space:normal;min-width:220px}.performance-stage-name{display:flex;gap:8px;align-items:center}.performance-stage-name code{font-size:.83rem}.performance-aggregate-row{opacity:.72;background:rgba(0,0,0,.018)}.performance-hot{font-weight:750}.performance-cpu-bar{display:inline-block;min-width:58px;font-variant-numeric:tabular-nums}.performance-card-sub{display:block;margin-top:5px;color:#737373;font-size:.78rem}@media(max-width:1100px){.performance-card-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}}@media(max-width:640px){.performance-card-grid{grid-template-columns:1fr}.performance-actions{justify-content:flex-start}}
.admin-tenant-switch{display:flex;align-items:center;gap:.35rem;color:inherit;font-size:.78rem}.admin-tenant-switch span{opacity:.72}.admin-tenant-switch select{min-width:150px;max-width:240px;padding:.45rem .55rem}

/* v0.35.5: large OpenStreetMap zone map with permission-gated drag/drop editor. */
.zone-map-main{max-width:none;padding:.9rem clamp(.7rem,1.5vw,1.35rem) 1rem}
.zone-map-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin:0 0 .65rem}
.zone-map-page-head h1{margin:0 0 .2rem}.zone-map-page-head p{margin:0;color:var(--muted);font-size:.88rem}
.zone-map-mode{display:flex;gap:.25rem;padding:.25rem;background:#fff;border:1px solid var(--line);border-radius:.7rem;box-shadow:0 2px 10px #00000008}
.zone-map-mode button{min-height:36px;padding:.42rem .75rem;border:0;background:transparent}.zone-map-mode button.active{background:var(--brand-black);color:#fff;box-shadow:inset 3px 0 0 var(--brand-orange)}
.zone-map-shell{display:grid;grid-template-columns:300px minmax(0,1fr);gap:.7rem;align-items:stretch}.zone-map-shell.viewer-only{grid-template-columns:minmax(0,1fr)}
.zone-map-sidebar{height:calc(100vh - 176px);min-height:620px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:.85rem;padding:.8rem;box-shadow:0 6px 22px #1111110b}
.zone-map-sidebar-head,.zone-map-sidebar-subhead{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.zone-map-sidebar-head h2{margin:.05rem 0 0;font-size:1.08rem}.zone-map-sidebar-head small{text-transform:uppercase;letter-spacing:.06em;font-weight:800;font-size:.68rem}
.zone-map-help{font-size:.78rem;color:var(--muted);line-height:1.4;margin:.65rem 0 .75rem}.zone-map-list{display:grid;gap:.45rem}.zone-map-placed-section{margin-top:1rem;padding-top:.85rem;border-top:1px solid var(--line)}.zone-map-sidebar-subhead{margin-bottom:.55rem;font-size:.83rem}.zone-map-sidebar-subhead span{color:var(--muted)}
.zone-map-zone-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;padding:.62rem;border:1px solid var(--line);border-radius:.65rem;background:#fff;box-shadow:0 2px 8px #00000008}.zone-map-zone-item[draggable=true]{cursor:grab}.zone-map-zone-item[draggable=true]:active{cursor:grabbing}.zone-map-zone-item>div:first-child{min-width:0;display:flex;flex-direction:column;gap:.08rem}.zone-map-zone-item strong{font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zone-map-zone-item small{font-size:.69rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zone-map-zone-item span{display:flex;gap:.55rem;margin-top:.2rem;font-size:.69rem;color:#57534e;font-variant-numeric:tabular-nums}.zone-map-zone-item b{font-weight:800}.zone-map-zone-item>button,.zone-map-item-actions button{padding:.4rem .5rem;min-height:32px;font-size:.72rem}.zone-map-item-actions{display:flex;gap:.25rem}.zone-map-item-actions button{width:34px;padding:0;font-size:1rem}.zone-map-remove{color:#b42318}.zone-map-empty{padding:.8rem;border:1px dashed var(--line-strong);border-radius:.6rem;color:var(--muted);font-size:.78rem;text-align:center}
.zone-map-canvas-wrap{min-width:0}.zone-map-canvas{position:relative;height:calc(100vh - 176px);min-height:620px;overflow:hidden;border:1px solid #cdd5dc;border-radius:.85rem;background:#dbe4ea;cursor:grab;touch-action:none;box-shadow:0 6px 22px #11111112}.zone-map-canvas.dragging{cursor:grabbing}.zone-map-canvas.placing{cursor:crosshair}.zone-map-canvas.drop-ready{box-shadow:0 0 0 4px rgba(255,99,0,.28),0 6px 22px #11111112}
.zone-map-tiles,.zone-map-railway-tiles,.zone-map-markers{position:absolute;inset:0}.zone-map-tiles img,.zone-map-railway-tiles img{position:absolute;width:256px;height:256px;user-select:none;-webkit-user-drag:none}.zone-map-tiles{z-index:1}.zone-map-railway-tiles{z-index:2;pointer-events:none}.zone-map-markers{pointer-events:none;z-index:12}
.zone-map-marker{position:absolute;width:76px;height:82px;transform:translate(-50%,-31px);pointer-events:auto;user-select:none;z-index:14}.zone-map-marker.editable{cursor:grab}.zone-map-marker.dragging{cursor:grabbing;z-index:40;filter:drop-shadow(0 8px 12px #0005)}
.zone-map-pin-shape{position:absolute;left:7px;top:0;width:62px;height:62px;background:#d93624;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid rgba(166,31,18,.25);box-shadow:0 4px 10px #0005}
.zone-map-pin-core{position:absolute;left:8px;top:8px;width:46px;height:46px;border-radius:50%;background:#fff;border:2px solid #ece7e4;transform:rotate(45deg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;line-height:1;color:#111}
.zone-map-pin-icon{width:19px;height:17px;display:grid;place-items:center;margin-top:-1px}.zone-map-pin-icon svg{width:19px;height:17px;fill:#111;stroke:#111;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.zone-map-pin-number{font-size:1.16rem;font-weight:950;letter-spacing:-.04em;font-variant-numeric:tabular-nums;margin-top:-1px}.zone-map-pin-plus{position:absolute;right:1px;bottom:1px;width:13px;height:13px;border-radius:50%;display:grid;place-items:center;background:#111;color:#fff;font-size:9px;font-weight:900}
.zone-map-marker-label{position:absolute;top:66px;left:50%;transform:translateX(-50%);min-width:96px;max-width:160px;padding:.24rem .42rem;border-radius:.4rem;background:#fffffff2;border:1px solid #ddd6d1;box-shadow:0 2px 8px #0002;text-align:center;line-height:1.1;pointer-events:none}.zone-map-marker-label strong,.zone-map-marker-label small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.zone-map-marker-label strong{font-size:.7rem}.zone-map-marker-label small{font-size:.58rem;margin-top:.08rem}
.zone-map-controls{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;z-index:50;box-shadow:0 2px 8px #0004}.zone-map-controls button{width:42px;height:42px;min-height:42px;padding:0;border-radius:0;background:#fff;font-size:1.35rem}.zone-map-controls button:first-child{border-radius:.5rem .5rem 0 0}.zone-map-controls button:last-child{border-radius:0 0 .5rem .5rem}.zone-map-controls .zone-map-fit{font-size:1.1rem}
.zone-map-placement-hint{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:52;background:#111;color:#fff;padding:.55rem .8rem;border-radius:.55rem;box-shadow:0 4px 18px #0005;font-size:.8rem;pointer-events:none}.zone-map-placement-hint strong{color:#fff}.zone-map-attribution{position:absolute;right:0;bottom:0;z-index:50;background:#ffffffe8;padding:3px 6px;font-size:11px}.zone-map-attribution a{color:#245}
body[data-page="tag_zone_map"] .site-footer{padding:.55rem 1rem .8rem}
@media(max-width:900px){.zone-map-shell{grid-template-columns:1fr}.zone-map-sidebar{height:auto;min-height:0;max-height:290px}.zone-map-canvas{height:68vh;min-height:480px}.zone-map-page-head{align-items:flex-start;flex-direction:column}.zone-map-mode{align-self:flex-start}}
@media(max-width:560px){.zone-map-main{padding:.65rem}.zone-map-canvas{min-height:440px;height:65vh}.zone-map-marker-label{display:none}.zone-map-sidebar{max-height:250px}.zone-map-mode button{padding:.4rem .58rem}}

/* v0.35.5: multi-map editor, combined person+vehicle marker and embeddable public visualization. */
.zone-map-head-tools{display:flex;align-items:flex-end;justify-content:flex-end;gap:.42rem;flex-wrap:wrap}.zone-map-select-label{display:grid;gap:.18rem;min-width:220px}.zone-map-layer-label{display:grid;gap:.18rem;min-width:220px}.zone-map-select-label>span,.zone-map-layer-label>span{font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.zone-map-select-label select,.zone-map-layer-label select{min-height:38px}.zone-map-layer-status{display:block;max-width:260px;margin-top:.15rem;font-size:.64rem;font-weight:750;color:#2f6b3d;text-transform:none;letter-spacing:0}.zone-map-layer-status.error{color:#b42318}
.zone-map-main .zone-map-canvas,.zone-map-main .zone-map-sidebar{height:calc(100vh - 164px);min-height:640px}.zone-map-mode [data-map-mode="combined"]{font-weight:800}.zone-map-pin-icon .zone-map-combined-icon{width:26px;height:18px}.zone-map-marker-split{font-variant-numeric:tabular-nums;font-weight:800;color:#444!important;margin-top:.13rem!important;font-size:.55rem!important;letter-spacing:.01em}
.zone-map-dialog{width:min(680px,calc(100vw - 2rem));border:0;border-radius:1rem;padding:0;box-shadow:0 24px 70px #0008}.zone-map-dialog::backdrop{background:#1118}.zone-map-dialog form{padding:1rem}.zone-map-dialog-title{display:flex;align-items:center;justify-content:space-between;gap:1rem}.zone-map-dialog-title h2{margin:.05rem 0}.zone-map-dialog-title small{text-transform:uppercase;font-weight:800;letter-spacing:.06em}.zone-map-dialog-title button{width:38px;height:38px;padding:0;font-size:1.35rem}.zone-map-public-check{align-self:end;margin-bottom:.42rem}.zone-map-link-panel{display:grid;gap:.65rem;padding:.8rem;background:#f7f7f5;border:1px solid var(--line);border-radius:.7rem}.zone-map-link-panel label{display:grid;gap:.2rem}.zone-map-link-panel input,.zone-map-link-panel textarea{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.74rem}.zone-map-link-panel textarea{resize:vertical}.zone-map-link-panel small{color:var(--muted);line-height:1.4}.zone-map-dialog-actions{justify-content:flex-end}.zone-map-dialog .danger{margin-right:auto}
.public-zone-map-page{margin:0;min-height:100vh;background:#111;overflow:hidden}.public-zone-map-header{height:68px;padding:.55rem 1rem;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line);box-sizing:border-box}.public-zone-map-header .brand-logo{height:42px}.public-zone-map-status{display:flex;gap:.45rem;align-items:center;font-size:.78rem;font-weight:800}.public-zone-map-main{height:calc(100vh - 68px);padding:0}.public-zone-map-canvas{height:100%;min-height:0;border:0;border-radius:0;box-shadow:none}.public-zone-map-mode{position:absolute;top:12px;left:12px;z-index:51;display:flex;gap:.2rem;padding:.22rem;background:#fffffff2;border:1px solid #d8d3ce;border-radius:.6rem;box-shadow:0 2px 8px #0004}.public-zone-map-mode button{min-height:34px;padding:.35rem .55rem;border:0;background:transparent;font-size:.72rem}.public-zone-map-mode button.active{background:#111;color:#fff;box-shadow:inset 3px 0 0 var(--brand-orange)}#public-zone-map-notice{position:fixed;top:78px;left:50%;transform:translateX(-50%);z-index:90;background:#fff2;padding:.5rem .8rem;border-radius:.5rem;font-size:.8rem}.public-zone-map-page.kiosk .public-zone-map-header{display:none}.public-zone-map-page.kiosk .public-zone-map-main{height:100vh}.public-zone-map-page.kiosk #public-zone-map-notice{top:10px}.public-zone-map-page.kiosk .public-zone-map-mode{top:10px}
@media(max-width:1100px){.zone-map-page-head{align-items:flex-start;flex-direction:column}.zone-map-head-tools{justify-content:flex-start;width:100%}.zone-map-main .zone-map-canvas,.zone-map-main .zone-map-sidebar{height:calc(100vh - 220px)}}
@media(max-width:700px){.zone-map-select-label,.zone-map-layer-label{min-width:180px;flex:1}.zone-map-head-tools{align-items:stretch}.zone-map-head-tools>button{flex:0 0 auto}.zone-map-mode{width:100%}.zone-map-mode button{flex:1}.public-zone-map-mode{max-width:calc(100vw - 72px)}.public-zone-map-mode button{padding:.32rem .4rem}.public-zone-map-header{height:60px}.public-zone-map-main{height:calc(100vh - 60px)}}

/* 0.35.5 Emergency Mode */
#nav-emergency{font-weight:800}.emergency-command-main{max-width:1900px;margin:0 auto;padding:20px}.emergency-command-head{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:18px}.emergency-command-head h1{font-size:clamp(2rem,4vw,3.6rem);margin:.15rem 0}.emergency-kicker{font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;font-weight:900}.emergency-head-actions{display:flex;align-items:center;gap:10px}.emergency-start-card{display:grid;grid-template-columns:minmax(280px,1fr) minmax(340px,1fr);gap:24px;align-items:center}.emergency-start-controls{display:grid;grid-template-columns:1fr auto;gap:10px}.emergency-start-controls input{min-height:52px;font-size:1.08rem}.emergency-start-button{min-height:52px;background:#c62828!important;color:#fff!important;border-color:#c62828!important;font-weight:900;letter-spacing:.04em}.emergency-alert-banner{background:linear-gradient(120deg,#8b0000,#d32f2f);color:#fff;border-radius:18px;padding:24px 28px;margin-bottom:18px;box-shadow:0 14px 36px rgba(160,0,0,.22)}.emergency-alert-banner>div{font-weight:900;letter-spacing:.12em;font-size:.78rem}.emergency-alert-banner h2{font-size:clamp(2rem,4vw,4rem);margin:.3rem 0}.emergency-alert-banner p{font-size:1.1rem;margin:0}.emergency-alarm-dot{display:inline-block;width:11px;height:11px;border-radius:50%;background:#fff;margin-right:9px;box-shadow:0 0 0 0 rgba(255,255,255,.8);animation:emergencyPulse 1.2s infinite}@keyframes emergencyPulse{70%{box-shadow:0 0 0 12px rgba(255,255,255,0)}100%{box-shadow:0 0 0 0 rgba(255,255,255,0)}}.emergency-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px;margin:18px 0}.emergency-metric{border-radius:16px;padding:18px 22px;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:13px;align-items:center;background:#fff;border:1px solid var(--border,#ddd)}.emergency-metric>span{grid-row:1/3;font-size:1.7rem}.emergency-metric strong{font-size:clamp(2rem,4vw,3.2rem);line-height:1}.emergency-metric small{font-weight:800;text-transform:uppercase;letter-spacing:.06em}.emergency-metric.safe>span{color:#2e7d32}.emergency-metric.route>span{color:#f9a825}.emergency-metric.open>span{color:#c62828}.emergency-metric.unknown>span{color:#9e9e9e}.emergency-secondary-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.emergency-category-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.emergency-category-row span{display:flex;flex-direction:column;padding:10px;border-radius:10px;background:rgba(127,127,127,.08)}.emergency-category-row strong{font-size:1.7rem}.emergency-muster-live{display:flex;flex-wrap:wrap;gap:8px}.emergency-muster-live .pill{font-size:.95rem}.emergency-roster-card{margin-top:14px}.emergency-roster-head{align-items:center}.emergency-filters{display:flex;gap:6px;flex-wrap:wrap}.emergency-filters button.active{background:#111;color:#fff}.emergency-status{display:inline-flex;align-items:center;gap:6px;font-weight:800;white-space:nowrap}.emergency-status::before{content:'●'}.emergency-status.safe{color:#2e7d32}.emergency-status.en_route{color:#b77900}.emergency-status.not_evacuated{color:#c62828}.emergency-status.unknown{color:#777}.emergency-person-actions{display:flex;gap:5px;flex-wrap:wrap}.emergency-person-actions button{padding:6px 8px;font-size:.78rem}.emergency-event-log{max-height:260px;overflow:auto;display:grid;gap:6px}.emergency-event{display:grid;grid-template-columns:160px 150px 1fr;gap:12px;padding:8px;border-bottom:1px solid var(--border,#ddd);font-size:.9rem}.emergency-settings-card{margin-top:16px}.emergency-settings-card>summary{cursor:pointer;padding:4px}.emergency-settings-grid{display:grid;grid-template-columns:1.4fr .6fr;gap:24px;margin-top:16px}.emergency-muster-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}.emergency-muster-picker label{display:flex;gap:9px;align-items:flex-start;padding:10px;border:1px solid var(--border,#ddd);border-radius:10px}.emergency-timing{align-content:start}.infoscreen-emergency{display:none}.infoscreen-page.emergency-active .infoscreen-normal{display:none!important}.infoscreen-page.emergency-active .infoscreen-emergency{display:block}.infoscreen-page.emergency-active{background:#170707;color:#fff}.infoscreen-emergency-banner{min-height:calc(100vh - 100px);display:flex;flex-direction:column;justify-content:center;padding:clamp(20px,4vw,60px);background:radial-gradient(circle at top right,#6e1212 0,#260606 52%,#130404 100%)}.infoscreen-emergency-title{font-size:clamp(2.2rem,6vw,6.2rem);line-height:1.02;margin:0 0 12px;text-transform:uppercase}.infoscreen-emergency-total{font-size:clamp(1.3rem,2.8vw,2.6rem);margin-bottom:28px}.infoscreen-emergency-total strong{font-size:1.7em}.infoscreen-emergency-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.infoscreen-emergency-card{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.16);border-radius:20px;padding:22px}.infoscreen-emergency-card strong{font-size:clamp(2.8rem,6vw,6rem);display:block}.infoscreen-emergency-card span{font-size:clamp(1rem,1.8vw,1.5rem);font-weight:800}.infoscreen-emergency-card.safe strong{color:#55d66b}.infoscreen-emergency-card.route strong{color:#ffd54f}.infoscreen-emergency-card.open strong{color:#ff5a5a}.infoscreen-emergency-card.unknown strong{color:#ddd}.infoscreen-emergency-muster{margin-top:24px;font-size:clamp(1rem,1.8vw,1.5rem)}
@media(max-width:900px){.emergency-start-card,.emergency-settings-grid,.emergency-secondary-grid{grid-template-columns:1fr}.emergency-start-controls{grid-template-columns:1fr}.emergency-metric-grid,.infoscreen-emergency-grid{grid-template-columns:repeat(2,1fr)}.emergency-event{grid-template-columns:1fr}.emergency-command-head{flex-direction:column}.emergency-command-main{padding:12px}}

/* 0.35.7: scalable Emergency muster selector + tenant-safe antenna assignment. */
.emergency-muster-select{display:grid;gap:9px;max-width:760px}.emergency-muster-selected{display:flex;gap:6px;flex-wrap:wrap;min-height:28px}.emergency-muster-dropdown{position:relative}.emergency-muster-dropdown>summary{list-style:none;cursor:pointer;min-height:46px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border:1px solid var(--border,#ddd);border-radius:10px;background:#fff;font-weight:800}.emergency-muster-dropdown>summary::-webkit-details-marker{display:none}.emergency-muster-dropdown>summary::after{content:'▾';font-size:.85rem;margin-left:auto}.emergency-muster-dropdown[open]>summary::after{content:'▴'}.emergency-muster-dropdown-panel{position:absolute;z-index:80;top:calc(100% + 6px);left:0;right:0;padding:10px;background:#fff;border:1px solid var(--border,#ddd);border-radius:12px;box-shadow:0 14px 36px #0003}.emergency-muster-dropdown-panel input[type="search"]{width:100%;min-height:42px;margin-bottom:8px}.emergency-muster-picker{display:grid;grid-template-columns:1fr;gap:4px;max-height:320px;overflow:auto;padding-right:3px}.emergency-muster-picker label{display:flex;gap:9px;align-items:flex-start;padding:8px 9px;border:1px solid transparent;border-radius:8px}.emergency-muster-picker label:hover{background:rgba(127,127,127,.08);border-color:var(--border,#ddd)}.emergency-muster-picker label[hidden]{display:none!important}.emergency-muster-picker label input{margin-top:3px}.zone-assignment-grid select:disabled{opacity:.62;cursor:not-allowed}
@media(max-width:700px){.emergency-muster-dropdown-panel{position:fixed;left:12px;right:12px;top:18vh;max-height:64vh}.emergency-muster-picker{max-height:48vh}}

/* v0.36.9: OpenRailwayMap-only style and permission-locked map-style selector. */
.zone-map-canvas.railway-only-layer{background:#f8f8f5}
.zone-map-layer-label select:disabled{cursor:not-allowed;opacity:.72;background:#f5f5f4}
.zone-map-layer-permission{display:block;max-width:260px;margin-top:.15rem;font-size:.64rem;font-weight:750;color:var(--muted);text-transform:none;letter-spacing:0}

/* v0.37.15 Mobile Scanner administration */
.mobile-admin-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(160px,1fr);gap:18px;align-items:start}
.mobile-server-url{display:flex;gap:8px;align-items:center;margin-top:8px}.mobile-server-url code{display:block;flex:1;padding:10px 12px;border:1px solid #d6d9dd;border-radius:9px;overflow-wrap:anywhere;background:#f7f8f9}
.mobile-enrollment-result{margin-top:16px;padding:16px;border:1px solid #d6d9dd;border-left:4px solid #ff5a00;border-radius:10px;background:#fafafa}
.mobile-enrollment-code{display:block;font-size:1.05rem;padding:12px;margin:8px 0 12px;overflow-wrap:anywhere;user-select:all;background:#fff;border:1px solid #d6d9dd;border-radius:8px}
.mobile-wipe-pending{font-weight:700;color:#9a6700}.mobile-wipe-done{font-weight:700;color:#176b36}.mobile-wipe-none{color:#6b7280}
@media(max-width:700px){.mobile-admin-grid{grid-template-columns:1fr}.mobile-server-url{align-items:stretch;flex-direction:column}}

/* v0.37.15 Mobile Scanner provisioning lifecycle */
.mobile-activation-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,320px);gap:24px;align-items:start}
.mobile-qr-panel{text-align:center}
.mobile-qr-panel img{display:block;width:min(280px,100%);height:auto;margin:10px auto;padding:10px;background:#fff;border:1px solid #d6d9dd;border-radius:10px;image-rendering:pixelated}
@media (max-width:760px){.mobile-activation-grid{grid-template-columns:1fr}}

/* v0.37.22 ELKA Schrankensteuerung */
.elka-barrier-form-grid{display:grid;grid-template-columns:minmax(190px,260px) minmax(190px,280px) 176px 116px;gap:.75rem 1rem;align-items:start;margin-bottom:.9rem}
.elka-barrier-form-grid>label{display:grid;grid-template-rows:auto 42px auto;align-content:start;gap:.3rem;margin:0}
.elka-barrier-form-grid input,.elka-barrier-form-grid select{height:42px;min-height:42px;box-sizing:border-box;padding:.55rem .65rem}
.elka-field-ip input{font-variant-numeric:tabular-nums}.elka-field-port input{max-width:116px}
.elka-topic-preview{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem 1rem;padding:.72rem .8rem;border:1px solid var(--line);border-radius:.55rem;background:#fafaf9}
.elka-topic-preview>div{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:.55rem}.elka-topic-preview span{font-size:.78rem;font-weight:850;text-transform:uppercase;color:#57534e}.elka-topic-preview code{overflow-wrap:anywhere;white-space:normal}
.elka-barrier-table{min-width:1280px}.elka-barrier-table th,.elka-barrier-table td{vertical-align:middle}.elka-barrier-table code{white-space:normal;overflow-wrap:anywhere}.elka-barrier-table .elka-error-list{white-space:normal;max-width:260px}.elka-barrier-table .elka-row-actions{display:flex;gap:.4rem}.elka-barrier-table .elka-row-actions button{height:36px;min-height:36px;padding:.35rem .6rem}

@media(max-width:1000px){.elka-barrier-form-grid{grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) 176px}.elka-field-port{grid-column:auto}}
@media(max-width:700px){.elka-barrier-form-grid{grid-template-columns:1fr}.elka-field-port input{max-width:none}.elka-topic-preview{grid-template-columns:1fr}.elka-topic-preview>div{grid-template-columns:1fr}}

/* v0.37.26 self-hosted ALTCHA login protection + redesigned admin login */
.admin-login-page { min-height: 100vh; background: #f3f3f1; overflow-x: hidden; }
.admin-login-shell { max-width: none; min-height: 100vh; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(420px, .9fr) minmax(520px, 1.1fr); }
.admin-login-brand { position: relative; min-height: 100vh; padding: clamp(2rem, 5vw, 4.5rem); color: #fff; background:
  radial-gradient(circle at 12% 14%, rgba(255,99,0,.38), transparent 28%),
  radial-gradient(circle at 88% 88%, rgba(220,0,46,.24), transparent 34%),
  linear-gradient(145deg, #111 0%, #191919 55%, #282828 100%); overflow: hidden; display: flex; flex-direction: column; justify-content: space-between; }
.admin-login-brand::before { content:""; position:absolute; width:360px; height:360px; right:-180px; top:18%; border:1px solid rgba(255,255,255,.08); border-radius:50%; box-shadow:0 0 0 60px rgba(255,255,255,.025),0 0 0 120px rgba(255,255,255,.018); }
.admin-login-brand::after { content:""; position:absolute; left:0; top:0; bottom:0; width:5px; background:linear-gradient(180deg,var(--brand-orange),var(--brand-red)); }
.admin-login-brand-inner,.admin-login-brand-footer { position:relative; z-index:1; }
.admin-login-brand-mark { display:inline-flex; align-items:center; justify-content:center; width:178px; height:92px; padding:.6rem 1rem; background:#fff; border-radius:1rem; box-shadow:0 16px 40px rgba(0,0,0,.28); }
.admin-login-brand-mark img { width:100%; height:100%; object-fit:contain; }
.admin-login-kicker { margin:clamp(2.5rem,7vh,5rem) 0 .9rem; color:#ffad78; text-transform:uppercase; letter-spacing:.16em; font-size:.78rem; font-weight:850; }
.admin-login-brand h1 { margin:0; max-width:720px; color:#fff; font-size:clamp(2.4rem,5vw,5rem); line-height:.98; letter-spacing:-.055em; }
.admin-login-intro { max-width:620px; margin:1.5rem 0 0; color:#d6d3d1; font-size:clamp(1rem,1.5vw,1.2rem); }
.admin-login-feature-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.75rem; margin-top:clamp(2rem,6vh,4.5rem); max-width:760px; }
.admin-login-feature-grid > div { display:grid; grid-template-columns:auto 1fr; column-gap:.65rem; row-gap:.12rem; align-items:center; padding:.85rem; border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.045); border-radius:.85rem; backdrop-filter:blur(8px); }
.admin-login-feature-grid strong { font-size:.9rem; }
.admin-login-feature-grid small { grid-column:2; color:#a8a29e; font-size:.72rem; line-height:1.35; }
.admin-login-feature-icon { grid-row:1 / span 2; display:grid; place-items:center; width:34px; height:34px; border-radius:50%; color:#fff; background:rgba(255,99,0,.18); border:1px solid rgba(255,99,0,.45); font-size:.68rem; font-weight:900; }
.admin-login-brand-footer { color:#78716c; font-size:.75rem; letter-spacing:.04em; }
.admin-login-form-panel { min-height:100vh; display:grid; place-items:center; padding:clamp(1.5rem,5vw,5rem); background:
  radial-gradient(circle at 90% 10%, rgba(255,99,0,.075), transparent 27%),
  radial-gradient(circle at 15% 90%, rgba(220,0,46,.055), transparent 31%),#f6f6f4; }
.admin-login-card { width:min(480px,100%); padding:clamp(1.5rem,3.5vw,2.6rem); border:1px solid rgba(214,211,209,.9); border-radius:1.35rem; background:rgba(255,255,255,.94); box-shadow:0 28px 80px rgba(17,17,17,.12); backdrop-filter:blur(14px); }
.admin-login-mobile-logo { display:none; }
.admin-login-card-head { margin-bottom:1.4rem; }
.admin-login-card-head h2 { margin:.4rem 0 .45rem; font-size:clamp(1.75rem,3vw,2.35rem); letter-spacing:-.035em; }
.admin-login-card-head p { margin:0; color:var(--muted); }
.admin-login-eyebrow { display:inline-flex; align-items:center; gap:.45rem; color:#9a3412; font-size:.73rem; font-weight:850; text-transform:uppercase; letter-spacing:.12em; }
.admin-login-eyebrow::before { content:""; width:24px; height:3px; border-radius:99px; background:linear-gradient(90deg,var(--brand-orange),var(--brand-red)); }
.admin-login-form { display:grid; gap:1rem; }
.admin-login-field span { font-size:.83rem; }
.admin-login-field input { min-height:48px; border-radius:.7rem; padding:.75rem .85rem; background:#fcfcfb; }
.admin-login-submit { width:100%; min-height:50px; margin-top:.15rem; display:flex; align-items:center; justify-content:space-between; border-radius:.7rem; padding:.8rem 1rem .8rem 1.15rem; }
.admin-login-submit:disabled { cursor:wait; opacity:.68; }
.admin-login-meta { display:flex; align-items:center; gap:.45rem; margin-top:1.25rem; padding-top:1rem; border-top:1px solid var(--line); color:#78716c; font-size:.72rem; }
.admin-login-version { margin-left:auto; font-variant-numeric:tabular-nums; }
.admin-login-lock { width:8px; height:8px; overflow:hidden; color:#16a34a; font-size:12px; line-height:8px; }

.altcha-login-box { display:grid; gap:.55rem; padding:.8rem .85rem; border:1px solid #e7e5e4; border-radius:.75rem; background:linear-gradient(135deg,#fafaf9,#fff); }
.altcha-login-box[hidden] { display:none !important; }
.altcha-login-head { display:flex; align-items:center; justify-content:space-between; gap:.8rem; }
.altcha-login-head > div { min-width:0; display:grid; gap:.15rem; }
.altcha-login-head strong { font-size:.78rem; }
.altcha-login-head small { font-size:.69rem; line-height:1.3; }
.altcha-login-box progress { width:100%; height:5px; border:0; border-radius:999px; overflow:hidden; accent-color:var(--brand-orange); }
.altcha-login-box progress::-webkit-progress-bar { background:#e7e5e4; border-radius:999px; }
.altcha-login-box progress::-webkit-progress-value { background:linear-gradient(90deg,var(--brand-orange),var(--brand-red)); border-radius:999px; }
.altcha-login-note { font-size:.66rem; color:#8a817c; }
.altcha-state-badge { flex:0 0 auto; padding:.24rem .5rem; border-radius:999px; border:1px solid #fed7aa; background:#fff7ed; color:#9a3412; font-size:.65rem; font-weight:850; }
.altcha-state-badge[data-state="ready"] { border-color:#abefc6; background:#ecfdf3; color:#067647; }
.altcha-state-badge[data-state="error"] { border-color:#fecdca; background:#fef3f2; color:#b42318; }
.altcha-state-badge[data-state="off"] { border-color:#d6d3d1; background:#f5f5f4; color:#57534e; }
.altcha-login-box.compact { margin:.15rem 0; }

.security-settings-card .settings-section-intro { margin:.2rem 0 0; }
.altcha-settings-layout { display:grid; grid-template-columns:minmax(260px,.8fr) minmax(480px,1.2fr); gap:1.4rem; align-items:start; }
.altcha-settings-switches { display:grid; gap:.6rem; padding:.85rem; background:#fafaf9; border:1px solid var(--line); border-radius:.7rem; }
.altcha-master-switch { font-weight:850; color:#171717; }
.altcha-settings-values { margin:0; grid-template-columns:repeat(3,minmax(130px,1fr)); align-items:end; }
.altcha-settings-values input { max-width:180px; min-height:40px; }
.altcha-settings-help { margin:.9rem 0 0; font-size:.82rem; }

@media (max-width: 1020px) {
  .admin-login-shell { grid-template-columns:minmax(320px,.75fr) minmax(460px,1.25fr); }
  .admin-login-feature-grid { grid-template-columns:1fr; }
  .admin-login-feature-grid > div { max-width:360px; }
  .altcha-settings-layout { grid-template-columns:1fr; }
}
@media (max-width: 760px) {
  .admin-login-shell { display:block; min-height:100vh; }
  .admin-login-brand { display:none; }
  .admin-login-form-panel { min-height:100vh; padding:1rem; }
  .admin-login-card { border-radius:1rem; padding:1.35rem; }
  .admin-login-mobile-logo { display:block; text-align:center; margin:0 auto 1.1rem; }
  .admin-login-mobile-logo img { width:132px; height:70px; object-fit:contain; }
  .altcha-settings-values { grid-template-columns:1fr; }
  .altcha-settings-values input { max-width:none; }
}

/* v0.37.27: unified Admin/ZOKA login design */
.zoka-login-page .tag-login-title { text-align:left; }
.zoka-login-card { width:min(500px,100%); }
.zoka-login-page .admin-login-field input[name="baustelle"] { letter-spacing:.01em; }
@media (max-width:760px) {
  .zoka-login-page .tag-login-title { text-align:center; }
}


/* v0.37.28: overflow-safe login feature cards */
.admin-login-feature-grid {
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  align-items: stretch;
}
.admin-login-feature-grid > div {
  min-width: 0;
  height: auto;
  min-height: 0;
  grid-template-columns: 34px minmax(0, 1fr);
  align-content: start;
  align-items: start;
}
.admin-login-feature-grid strong,
.admin-login-feature-grid small {
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: normal;
  hyphens: auto;
}
.admin-login-feature-grid strong {
  line-height: 1.25;
}
.admin-login-feature-grid small {
  line-height: 1.4;
}
@media (max-width: 1020px) {
  .admin-login-feature-grid { grid-template-columns: 1fr; }
  .admin-login-feature-grid > div { width: 100%; max-width: 360px; }
}
@media (max-width: 420px) {
  .admin-login-feature-grid > div { grid-template-columns: 30px minmax(0, 1fr); column-gap: .55rem; padding: .75rem; }
  .admin-login-feature-icon { width: 30px; height: 30px; }
}

/* v0.37.32: isolated network scan and StamPLC status administration. */
.foreign-scan-card{margin-top:1rem}.foreign-scan-form{display:grid;grid-template-columns:minmax(220px,300px) minmax(300px,1fr) auto;gap:.8rem 1rem;align-items:end;margin-bottom:.8rem}.foreign-scan-form>label{display:grid;gap:.3rem;margin:0}.foreign-scan-form input,.foreign-scan-form select,.foreign-scan-form button{height:42px;min-height:42px;box-sizing:border-box}.foreign-scan-results{margin-top:1rem}.foreign-scan-table{min-width:560px}.foreign-scan-table th:first-child,.foreign-scan-table td:first-child{width:42px;text-align:center}.foreign-scan-table input{width:auto;min-height:auto;accent-color:var(--brand-orange)}
.plc-table{min-width:1450px}.plc-table th,.plc-table td{vertical-align:middle}.plc-table .plc-error{display:block;max-width:250px;margin-top:.25rem;color:#a01818;white-space:normal}.plc-actions{white-space:nowrap}.plc-actions button{min-height:36px;height:36px;padding:.35rem .55rem}
@media(max-width:800px){.foreign-scan-form{grid-template-columns:1fr}.foreign-scan-form button{width:100%}}

/* v0.37.34: tenant-centric admin scope and protected ZOKA map editing. */
.admin-tenant-scope-bar{max-width:1540px;margin:.85rem auto 0;padding:.72rem clamp(1rem,2.5vw,2.1rem);display:grid;grid-template-columns:minmax(280px,1fr) minmax(280px,420px) auto;gap:.85rem 1.15rem;align-items:center;background:#171717;color:#fff;border-radius:.8rem;box-shadow:0 8px 24px #1112}
.admin-tenant-scope-copy{display:flex;flex-direction:column;gap:.12rem;min-width:0}.admin-tenant-scope-copy strong{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:#ffb17d}.admin-tenant-scope-copy span{font-size:.8rem;color:#d6d3d1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-tenant-scope-select{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.55rem;color:#fff;font-size:.76rem}.admin-tenant-scope-select>span{white-space:nowrap}.admin-tenant-scope-select select{min-height:40px;border-color:#57534e;background:#fff;color:#171717;font-weight:800}
.admin-tenant-scope-dashboard{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:.55rem .75rem;border:1px solid #57534e;border-radius:.5rem;color:#fff;text-decoration:none;font-size:.8rem;font-weight:800;white-space:nowrap}.admin-tenant-scope-dashboard:hover{border-color:#ff8a44;background:#2a211c;color:#fff}
select[data-admin-scope-locked="1"]{border-color:#ffb17d;box-shadow:inset 3px 0 0 var(--brand-orange)}
.zone-admin-summary{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:.75rem;margin-bottom:1rem}.zone-admin-stat{margin:0;padding:.8rem 1rem;display:flex;flex-direction:column;gap:.12rem}.zone-admin-stat small{font-weight:800;text-transform:uppercase;letter-spacing:.055em;font-size:.68rem}.zone-admin-stat strong{font-size:1.75rem;line-height:1.1;font-variant-numeric:tabular-nums}.zone-create-card{margin-top:0}.zone-create-grid{grid-template-columns:150px minmax(220px,1fr) minmax(260px,1fr) auto}.zone-assignment-grid{grid-template-columns:repeat(3,minmax(220px,1fr)) auto}.zone-assignment-grid>label small{font-weight:500;line-height:1.35}.zone-tenant-root{background:#faf7f5}.zone-tenant-root:hover{background:#faf7f5}
.zone-map-edit-toggle{font-weight:850;border-color:#d6d3d1}.zone-map-edit-toggle.active{background:var(--brand-black);border-color:var(--brand-black);color:#fff;box-shadow:inset 3px 0 0 var(--brand-orange)}.zone-map-canvas.edit-mode{box-shadow:0 0 0 3px rgba(255,99,0,.18),0 6px 22px #11111112}.zone-map-canvas.edit-mode .zone-map-marker.editable .zone-map-pin-shape{filter:drop-shadow(0 0 5px rgba(255,99,0,.32))}
.zone-map-pin-icon{width:25px;height:18px}.zone-map-pin-icon svg{width:24px;height:18px;stroke-width:1}.zone-map-pin-icon .zone-map-person-icon{width:21px;height:19px}.zone-map-pin-icon .zone-map-vehicle-icon{width:26px;height:19px}.zone-map-pin-icon .zone-map-combined-icon{width:33px;height:19px;overflow:visible}.zone-map-pin-icon .zone-map-icon-divider{fill:none;stroke:#8a817c;stroke-width:1.3}.zone-map-marker-split{font-size:.54rem!important;letter-spacing:0!important}
@media(max-width:1050px){.admin-tenant-scope-bar{margin:.65rem 1rem 0;grid-template-columns:1fr minmax(260px,360px)}.admin-tenant-scope-dashboard{grid-column:1/-1;justify-self:end}.zone-admin-summary{grid-template-columns:repeat(2,minmax(150px,1fr))}.zone-create-grid{grid-template-columns:150px 1fr 1fr}.zone-create-grid .filter-action{grid-column:1/-1;justify-content:flex-end}.zone-assignment-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}.zone-assignment-grid .filter-action{grid-column:1/-1;justify-content:flex-end}}
@media(max-width:700px){.admin-tenant-scope-bar{grid-template-columns:1fr;margin:.55rem .65rem 0}.admin-tenant-scope-copy span{white-space:normal}.admin-tenant-scope-select{grid-template-columns:1fr}.admin-tenant-scope-dashboard{grid-column:auto;width:100%}.zone-admin-summary{grid-template-columns:1fr 1fr}.zone-create-grid,.zone-assignment-grid{grid-template-columns:1fr}.zone-create-grid .filter-action,.zone-assignment-grid .filter-action{grid-column:auto}.zone-map-head-tools .zone-map-edit-toggle{order:-1}}

/* v0.37.34: one central tenant context for tenant-scoped administration. */
.admin-tenant-local-field-hidden{display:none!important}
.tenant-create-card{border-left:4px solid var(--brand-orange)}
.tenant-create-grid{grid-template-columns:minmax(240px,1fr) minmax(300px,1.2fr) auto;align-items:end}
.tenant-create-grid label small{display:block;margin-top:.3rem;line-height:1.35}
.tenant-scope-explainer{margin-top:0}
.gateway-delivery-help{margin:.5rem 0 1rem;padding:.85rem 1rem;border-left:4px solid var(--brand-orange);border-radius:.45rem;background:#faf7f5}
.gateway-delivery-help p{margin:.3rem 0 0;line-height:1.5}
.settings-advanced{margin:.75rem 0 0;border:1px solid var(--line);border-radius:.55rem;background:#fafaf9}
.settings-advanced>summary{cursor:pointer;padding:.7rem .85rem;font-weight:800}
.settings-advanced>.form-grid{padding:0 .85rem .85rem}
@media(max-width:800px){.tenant-create-grid{grid-template-columns:1fr}}

/* v0.37.35: tenant-safe gateway setup and consistent admin form alignment. */
.settings-relocated-note{display:flex;flex-wrap:wrap;gap:.3rem .65rem;align-items:baseline;margin:0 0 1rem;padding:.7rem .85rem;border-left:4px solid var(--brand-orange);border-radius:.45rem;background:#faf7f5}.settings-relocated-note span{color:var(--muted);line-height:1.45}.settings-relocated-note a,.gateway-config-intro a,.zone-gateway-prerequisite a{font-weight:800}
.gateway-setup-card{padding:0;overflow:visible}.gateway-config-details>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.15rem;font-weight:850}.gateway-config-details>summary::-webkit-details-marker{display:none}.gateway-config-details>summary:before{content:'▸';font-size:1rem;transition:transform .15s ease}.gateway-config-details[open]>summary:before{transform:rotate(90deg)}.gateway-config-details>summary>span:first-of-type{margin-right:auto}.gateway-config-details[open]>summary{border-bottom:1px solid var(--line)}
.gateway-config-body{padding:1rem 1.15rem 1.15rem}.gateway-config-intro{margin:0 0 1rem;padding:.85rem 1rem;border-left:4px solid var(--brand-orange);border-radius:.45rem;background:#fff7ed}.gateway-config-intro p{margin:.35rem 0 0;line-height:1.5}.gateway-config-form{display:grid;gap:.8rem}.gateway-config-form>label{margin:0}.gateway-config-form textarea{width:100%;min-height:190px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.45}.gateway-config-form small{line-height:1.45}.gateway-config-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.7rem}.gateway-config-meta>span{font-size:.86rem;color:var(--muted)}.gateway-config-meta button{min-height:42px}
.zone-gateway-prerequisite{margin:.2rem 0 1rem;padding:.65rem .8rem;border-radius:.45rem;background:#faf7f5;line-height:1.45}.zone-assignment-grid{align-items:start}.zone-assignment-grid>.filter-action{align-self:start;padding-top:1.45rem}
.tenant-create-help{margin:.65rem 0 0;line-height:1.45}.tenant-create-status{min-height:1.35rem;margin-top:.25rem;font-size:.82rem}.tenant-create-status.error{color:#a01818;font-weight:750}.tenant-create-status.ok{color:#247234;font-weight:700}
.foreign-scan-help{margin:-.35rem 0 .8rem;line-height:1.4}
.tenant-delete-field-caption{display:block;min-height:2.35rem;line-height:1.2}
.gateway-admin-card .section-head{align-items:flex-start}
@media(max-width:700px){.zone-assignment-grid>.filter-action{padding-top:0}.gateway-config-meta{align-items:stretch}.gateway-config-meta button{width:100%}.tenant-delete-field-caption{min-height:0}}

/* 0.38.1: HA mode guidance and edit-safe live refresh. */
.ha-mode-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(220px, 1fr));
  gap: .85rem;
  margin: .9rem 0 1rem;
}
.ha-mode-choice {
  min-height: 168px;
  padding: 1rem;
  border: 1px solid var(--line-strong);
  border-radius: .75rem;
  background: #fff;
  color: var(--ink);
  text-align: left;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: .58rem;
  font-weight: 650;
  box-shadow: none;
}
.ha-mode-choice:hover { border-color: var(--brand-orange); background: #fffaf7; }
.ha-mode-choice:focus-visible { outline: 3px solid rgba(255,99,0,.2); outline-offset: 2px; }
.ha-mode-choice.is-selected {
  border-color: var(--brand-orange);
  background: #fff8f3;
  box-shadow: inset 4px 0 0 var(--brand-orange), 0 6px 18px rgba(17,17,17,.05);
}
.ha-mode-choice-head { display: flex; align-items: center; justify-content: space-between; gap: .65rem; }
.ha-mode-choice-head strong { font-size: .98rem; }
.ha-mode-choice small { display: block; line-height: 1.45; font-weight: 500; }
.ha-refresh-note { margin-top: .25rem; }
.ha-dirty-pill, .ha-row-dirty { color: var(--warning); border-color: #fedf89; background: #fffaeb; }
.ha-dirty-row { background: #fffcf5; }
.ha-dirty-row:hover { background: #fff8e8; }
.ha-row-dirty { display: inline-block; margin-top: .35rem; border: 1px solid #fedf89; border-radius: 999px; padding: .14rem .42rem; font-size: .72rem; font-weight: 800; }
@media (max-width: 1050px) { .ha-mode-grid { grid-template-columns: 1fr; } .ha-mode-choice { min-height: auto; } }

/* 0.38.7 HA single-writer status */
.ha-project-banner{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;padding:.7rem 1rem;border-bottom:1px solid var(--border,#d7d7d7);background:#fff3cd;color:#5f4700;font-size:.92rem}.ha-project-banner[hidden]{display:none}.ha-project-banner.ha-active{background:#e8f5e9;color:#1b5e20}.ha-project-banner.ha-locked{background:#fff3cd;color:#5f4700}.ha-project-banner strong{letter-spacing:.02em}.ha-project-banner-progress{margin-left:auto;font-variant-numeric:tabular-nums}

/* 0.38.10 HA Admin single-writer visual guard */
.admin-ha-readonly main .ha-readonly-form{position:relative;opacity:.78}
.admin-ha-readonly main .ha-readonly-form button[type=submit]:disabled,.admin-ha-readonly main .ha-readonly-form input[type=submit]:disabled{cursor:not-allowed;filter:grayscale(.35)}
.admin-ha-readonly #admin-ha-banner.ha-locked{position:sticky;top:0;z-index:60}

/* v0.38.16: clickable dashboard KPIs and Transponder-Live type filters. */
.dashboard-summary-link { color: inherit; text-decoration: none; cursor: pointer; transition: transform .12s ease, border-color .12s ease, box-shadow .12s ease; }
.dashboard-summary-link:hover { transform: translateY(-1px); border-color: rgba(255,99,0,.55); box-shadow: 0 7px 18px rgba(17,17,17,.08); }
.dashboard-summary-link:focus-visible { outline: 3px solid rgba(255,99,0,.35); outline-offset: 2px; }
.transponder-live-type-filters { display:flex; flex-wrap:wrap; gap:.5rem; margin:.25rem 0 1rem; }
.transponder-live-type-filters button { display:inline-flex; align-items:center; gap:.45rem; min-height:36px; padding:.45rem .75rem; background:#f5f5f4; color:var(--brand-black); border:1px solid var(--line); }
.transponder-live-type-filters button span { display:inline-grid; place-items:center; min-width:1.6rem; height:1.6rem; padding:0 .35rem; border-radius:999px; background:rgba(0,0,0,.07); font-size:.75rem; font-weight:850; }
.transponder-live-type-filters button.active { background:var(--brand-black); color:#fff; border-color:var(--brand-black); box-shadow:inset 3px 0 0 var(--brand-orange); }
.transponder-live-type-filters button.active span { background:rgba(255,255,255,.16); }
.live-unassigned-row { background:rgba(127,127,127,.035); }
.live-unassigned-hint { display:inline-block; line-height:1.35; }

/* 0.38.18 encrypted full-backup administration */
.backup-status-cards{grid-template-columns:repeat(4,minmax(180px,1fr));}
.backup-status-value{font-size:1.08rem;font-weight:850;line-height:1.3;margin:.35rem 0;}
.backup-code-break{display:block;overflow-wrap:anywhere;word-break:break-word;}
.backup-target-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:1rem;margin-bottom:1rem;}
.backup-target-grid>div{display:grid;gap:.42rem;padding:.85rem;border:1px solid var(--line);border-radius:.6rem;background:#fafaf9;min-width:0;}
.backup-target-grid code{display:block;overflow-wrap:anywhere;word-break:break-word;}
.backup-actions{justify-content:flex-start;margin-bottom:1rem;}
@media(max-width:1000px){.backup-status-cards{grid-template-columns:repeat(2,minmax(180px,1fr));}.backup-target-grid{grid-template-columns:1fr;}}
@media(max-width:620px){.backup-status-cards{grid-template-columns:1fr;}.backup-actions>button{width:100%;}}

/* 0.38.27 AXIS Audio / Durchsagen */
.axis-audio-admin-grid{grid-template-columns:repeat(3,minmax(210px,1fr));align-items:start}.axis-audio-admin-grid>label{min-width:0}.axis-audio-route{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;padding:.8rem;border:1px solid var(--line);border-radius:.65rem;background:#fafafa}.axis-audio-route span{font-size:.78rem;font-weight:800;color:var(--muted);padding:.25rem .5rem;border-radius:999px;border:1px solid var(--line);background:#fff}.axis-audio-dashboard-grid{display:grid;grid-template-columns:minmax(320px,1.15fr) minmax(300px,.85fr);gap:1rem;margin-bottom:1rem}.axis-audio-dashboard-grid>.card{margin:0}.axis-audio-call-card>label,.axis-audio-live-card>label{display:grid;gap:.35rem;margin-bottom:1rem}.axis-audio-zones{border:1px solid var(--line);border-radius:.7rem;margin:0 0 1rem;padding:.75rem .85rem}.axis-audio-zones legend{font-weight:800;padding:0 .3rem}.axis-audio-zone-list{display:grid;gap:.45rem}.axis-audio-zone-option{display:grid;grid-template-columns:auto 1fr auto;gap:.55rem;align-items:center;margin:0;padding:.45rem .55rem;border-radius:.55rem;background:#fafafa;border:1px solid #eee}.axis-audio-zone-option input{width:auto;min-height:auto}.axis-audio-zone-option small{color:var(--muted)}.axis-audio-loop-option{display:flex!important;align-items:center;gap:.55rem;margin:0 0 1rem!important;font-weight:800}.axis-audio-loop-option input{width:auto;min-height:auto}.axis-audio-actions{display:grid;grid-template-columns:1fr;gap:.6rem}.axis-audio-start,.axis-audio-stop{width:100%;min-height:48px;font-weight:900;letter-spacing:.025em}.axis-audio-live-targets{min-height:42px;padding:.55rem .65rem;border:1px solid var(--line);border-radius:.55rem;margin-bottom:1rem;background:#fafafa}.axis-device-state{font-weight:850;white-space:nowrap}.axis-device-state.axis-online{color:#067647}.axis-device-state.axis-warning{color:#b54708}.axis-device-state.axis-offline{color:#b42318}.axis-audio-device-table code{white-space:nowrap}@media(max-width:900px){.axis-audio-admin-grid{grid-template-columns:1fr 1fr}.axis-audio-dashboard-grid{grid-template-columns:1fr}}@media(max-width:620px){.axis-audio-admin-grid{grid-template-columns:1fr}.axis-audio-route{display:grid}}

/* 0.38.29 mobile Transponder Live + active AXIS audio */
.axis-audio-dashboard-grid .card.axis-audio-active{border:2px solid #b42318;box-shadow:0 0 0 3px rgba(180,35,24,.12);background:#fff5f4}.axis-audio-active-pill{background:#b42318!important;color:#fff!important;border-color:#b42318!important;animation:zoka-audio-pulse 1.2s ease-in-out infinite}.axis-audio-live-card.axis-audio-active .axis-audio-start,.axis-audio-call-card.axis-audio-active .axis-audio-start{background:#b42318;border-color:#b42318}@keyframes zoka-audio-pulse{50%{opacity:.62}}
.status-mail-monitor-grid{display:grid;gap:.75rem}.status-mail-monitor-group{border:1px solid var(--line);border-radius:.7rem;overflow:hidden}.status-mail-monitor-group-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem .85rem;background:#f7f7f6}.mail-toggle{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--line);border-radius:999px;padding:.35rem .6rem;font-weight:800;background:#fff}.mail-toggle.on{color:#067647;border-color:#75c99d;background:#ecfdf3}.mail-toggle.off{color:#b42318;border-color:#fda29b;background:#fef3f2}.status-mail-device-list{display:grid}.status-mail-device-row{display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(160px,1fr) auto;align-items:center;gap:.7rem;padding:.6rem .85rem;border-top:1px solid var(--line)}
@media(max-width:700px){.transponder-live-main{padding-left:.6rem!important;padding-right:.6rem!important}.transponder-live-type-filters{display:grid;grid-template-columns:1fr 1fr}.transponder-live-type-filters button{justify-content:space-between;width:100%}.transponder-live-table-wrap{overflow:visible}.transponder-live-table,.transponder-live-table tbody,.transponder-live-table tr,.transponder-live-table td{display:block;width:100%}.transponder-live-table thead{display:none}.transponder-live-table tr{position:relative;margin:0 0 .8rem;padding:.65rem .7rem;border:1px solid var(--line);border-radius:.8rem;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.04)}.transponder-live-table td{display:grid;grid-template-columns:105px minmax(0,1fr);gap:.55rem;padding:.38rem 0;border:0!important;text-align:left!important}.transponder-live-table td::before{content:attr(data-label);font-size:.75rem;font-weight:850;color:var(--muted)}.transponder-live-table td.live-select-col{position:absolute;right:.65rem;top:.65rem;width:auto!important;display:block;padding:0}.transponder-live-table td.live-select-col::before{display:none}.transponder-live-table td.live-object-cell{padding-right:2.3rem}.transponder-live-table td.live-object-cell::before{content:'Objekt'}.live-row-action{grid-template-columns:1fr}.live-row-action button{width:100%}.transponder-live-actions .section-head{align-items:flex-start;flex-direction:column}.transponder-live-toolbar .filter-action{display:grid;grid-template-columns:1fr 1fr}.transponder-live-toolbar .filter-action button{width:100%}.status-mail-device-row{grid-template-columns:1fr}.status-mail-monitor-group-head{align-items:flex-start;flex-direction:column}}
@media(max-width:420px){.transponder-live-type-filters{grid-template-columns:1fr}.transponder-live-table td{grid-template-columns:88px minmax(0,1fr)}}

/* 0.38.29 dynamic device health in the ZOKA dashboard */
.dashboard-system-status-card{min-width:min(360px,100%)}
.dashboard-device-health-list{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.dashboard-device-health{display:inline-flex;gap:4px;align-items:center;border:1px solid currentColor;border-radius:999px;padding:3px 7px;font-size:.72rem;line-height:1.15;white-space:nowrap}
.dashboard-device-health.ok{color:#18763b;background:rgba(24,118,59,.07)}
.dashboard-device-health.bad{color:#b42318;background:rgba(180,35,24,.08)}
.dashboard-device-health b{font-weight:700}
@media(max-width:620px){.dashboard-system-status-card{min-width:0}.dashboard-device-health-list{gap:4px}.dashboard-device-health{font-size:.68rem;padding:3px 6px}}

/* 0.39.2 Admin navigation layering fix.
 * The HA standby banner is a sticky stacking context.  In 0.39.1 it had a
 * higher z-index than the sticky header, so every absolutely positioned
 * submenu could slide behind the yellow banner on project-scoped pages.
 * Keep the complete header/navigation above status banners and keep the
 * banner sticky directly below the real (possibly wrapped) header height. */
.site-header { z-index: 100; overflow: visible; }
.main-nav { position: relative; z-index: 1; overflow: visible; }
.main-nav details.nav-menu { position: relative; }
.main-nav details.nav-menu[open] { z-index: 120; }
.main-nav .nav-submenu { z-index: 130; }
.admin-ha-readonly #admin-ha-banner.ha-locked {
  top: var(--admin-sticky-header-offset, 84px);
  z-index: 70;
}
@media (max-width: 800px) {
  .admin-ha-readonly #admin-ha-banner.ha-locked {
    position: static;
    top: auto;
    z-index: auto;
  }
}
/* 0.39.3 AXIS Auto Speaker Test */
.speaker-test-toolbar{display:flex;align-items:end;justify-content:space-between;gap:1rem;flex-wrap:wrap}.speaker-test-toolbar>label{display:grid;gap:.35rem;min-width:min(420px,100%)}.speaker-test-job{display:grid;gap:.55rem;margin-top:1rem;padding:.8rem 1rem;border:1px solid var(--line);border-radius:.7rem;background:#fafafa}.speaker-test-job progress{width:100%;height:1rem}.speaker-test-state{display:inline-flex;align-items:center;padding:.2rem .5rem;border-radius:999px;font-size:.76rem;font-weight:900;white-space:nowrap}.speaker-test-ok{background:#dcfce7;color:#166534}.speaker-test-pending{background:#dbeafe;color:#1d4ed8}.speaker-test-warn{background:#fef3c7;color:#92400e}.speaker-test-bad{background:#fee2e2;color:#991b1b}.speaker-test-actions{white-space:nowrap}.speaker-test-actions button{margin:.12rem}.speaker-test-table td{vertical-align:top}@media(max-width:900px){.speaker-test-toolbar{align-items:stretch}.speaker-test-toolbar>label{min-width:100%}.speaker-test-toolbar .filter-action{width:100%}.speaker-test-toolbar .filter-action button{flex:1}}


/* 0.39.4 nested AXIS speaker navigation */
.main-nav .nav-submenu { overflow: visible; }
.nav-flyout { position: relative; }
.nav-flyout-trigger { display: flex !important; align-items: center; justify-content: space-between; gap: 1rem; }
.nav-flyout-arrow { margin-left: .65rem; font-size: 1.15rem; line-height: 1; color: var(--muted); }
.nav-flyout-panel {
  position: absolute; top: -.35rem; left: calc(100% - .05rem); z-index: 160;
  min-width: 190px; padding: .35rem; border: 1px solid var(--line); border-radius: .7rem;
  background: #fff; box-shadow: 0 12px 34px rgba(0,0,0,.14);
  opacity: 0; visibility: hidden; pointer-events: none; transform: translateX(-4px);
  transition: opacity .12s ease, transform .12s ease, visibility .12s ease;
}
.nav-flyout:hover > .nav-flyout-panel,
.nav-flyout:focus-within > .nav-flyout-panel { opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(0); }
@media (max-width: 800px) {
  .nav-flyout-panel { position: static; display: block; min-width: 0; margin: 0 0 .15rem .7rem; padding: 0 0 0 .35rem; border: 0; border-left: 2px solid #ffd6bd; border-radius: 0; box-shadow: none; opacity: 1; visibility: visible; pointer-events: auto; transform: none; }
  .nav-flyout-arrow { transform: rotate(90deg); }
}

/* 0.39.4 compact dashboard status strip and supplied icon language */
.tag-dashboard-wide-main #tag-summary.cards { grid-template-columns: repeat(auto-fit, minmax(128px, 1fr)); gap: .5rem; margin-bottom: .65rem; }
.tag-dashboard-wide-main #tag-summary .dashboard-summary-card { min-height: 66px; padding: .48rem .58rem; gap: .52rem; border-radius: .72rem; }
.tag-dashboard-wide-main #tag-summary .dashboard-summary-card::before { left: .65rem; width: 22px; height: 2px; }
.tag-dashboard-wide-main #tag-summary .dashboard-summary-icon { width: 32px; height: 32px; flex: 0 0 32px; padding: 2px; border-radius: .55rem; background: transparent; color: #2e6397; }
.tag-dashboard-wide-main #tag-summary .dashboard-summary-svg { display: block; width: 100%; height: 100%; }
.tag-dashboard-wide-main #tag-summary .dashboard-summary-card h2 { margin-bottom: .08rem; font-size: .66rem; }
.tag-dashboard-wide-main #tag-summary .dashboard-summary-card .metric { font-size: 1.18rem; line-height: 1.05; }
.tag-dashboard-wide-main #tag-summary .dashboard-summary-status { font-size: .88rem; line-height: 1.05; }
.tag-dashboard-wide-main #tag-summary .dashboard-summary-card small { font-size: .56rem; line-height: 1.1; }
.dashboard-system-status-card { position: relative; overflow: visible; }
/* 0.39.9: .dashboard-summary-link:hover sets `transform: translateY(-1px)`
 * for a lift effect. Any transform other than `none` creates a new stacking
 * context, which trapped this card's popover (z-index: 80) inside it - so on
 * hover, the very moment the popover should appear, it rendered behind
 * later-in-DOM content like #dashboard-zones instead of above it. The other
 * summary cards have no absolutely positioned child, so only this one needs
 * the lift effect cancelled. */
.dashboard-system-status-card:hover,
.dashboard-system-status-card:focus,
.dashboard-system-status-card:focus-visible { transform: none; }
.dashboard-device-health-popover {
  position: absolute; right: .45rem; top: calc(100% + .35rem); z-index: 80; width: max-content; min-width: 235px; max-width: min(380px, calc(100vw - 2rem));
  padding: .65rem; border: 1px solid var(--line-strong); border-radius: .7rem; background: #fff; color: var(--ink);
  box-shadow: 0 14px 36px rgba(17,17,17,.16); opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(-4px);
  transition: opacity .12s ease, transform .12s ease, visibility .12s ease; text-align: left;
}
.dashboard-system-status-card:hover .dashboard-device-health-popover,
.dashboard-system-status-card:focus .dashboard-device-health-popover,
.dashboard-system-status-card:focus-visible .dashboard-device-health-popover { opacity: 1; visibility: visible; transform: translateY(0); }
.dashboard-device-health-popover > strong { display: block; margin-bottom: .45rem; font-size: .76rem; }
.dashboard-device-health-popover .dashboard-device-health-list { display: grid; gap: .3rem; margin: 0; }
.dashboard-device-health-popover .dashboard-device-health { display: flex; justify-content: space-between; gap: .8rem; width: 100%; border-radius: .45rem; padding: .3rem .45rem; font-size: .68rem; }
.dashboard-device-health-popover .dashboard-device-health span { color: inherit; font-weight: 600; }
@media (max-width: 620px) {
  .tag-dashboard-wide-main #tag-summary.cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dashboard-device-health-popover { right: 0; left: auto; }
}

/* 0.59.12 HTTPS gateway provisioning / HA */
.gateway-https-card{overflow:visible}.gateway-https-form{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.gateway-https-form .settings-field-wide{grid-column:1/-1}.gateway-https-table-wrap{margin-top:1rem}.gateway-https-table td{vertical-align:top}.gateway-https-table code{overflow-wrap:anywhere}.gateway-https-endpoints{display:grid;gap:.2rem;min-width:220px}.gateway-https-endpoints small{display:block}.gateway-https-actions{display:flex;flex-wrap:wrap;gap:.35rem}.gateway-https-actions button{white-space:nowrap}.gateway-https-disabled{opacity:.62}.gateway-https-secret-note{margin-top:.65rem}.gateway-https-command-count{font-variant-numeric:tabular-nums}
@media(max-width:800px){.gateway-https-form{grid-template-columns:1fr}.gateway-https-form .settings-field-wide{grid-column:auto}.gateway-https-table{min-width:980px}}

/* 0.59.14 compact 300+ gateway overview */
.gateway-overview-card{overflow:visible}.gateway-overview-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) 180px 90px auto auto auto;gap:.45rem;align-items:center;margin:.75rem 0}.gateway-overview-table{font-size:.8rem;min-width:1040px}.gateway-overview-table th,.gateway-overview-table td{padding:.46rem .5rem;vertical-align:top}.gateway-overview-main>td:nth-child(1){width:130px}.gateway-overview-main>td:nth-child(2){width:180px}.gateway-overview-main>td:nth-child(3){min-width:270px}.gateway-overview-main>td:nth-child(4){width:150px}.gateway-overview-main>td:nth-child(5){width:190px}.gateway-compact-actions{display:flex;gap:.28rem;flex-wrap:wrap}.gateway-compact-actions button{padding:.34rem .46rem;font-size:.72rem}.gateway-overview-detail td{background:color-mix(in srgb,var(--panel) 84%,var(--accent) 16%)}.gateway-row-details{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;padding:.5rem}.gateway-row-details code{overflow-wrap:anywhere}.gateway-detail-edit{display:grid;gap:.35rem}.gateway-credential-create{margin:.8rem 0}.gateway-credential-create>summary{cursor:pointer;font-weight:800}.gateway-overview-table small{display:inline-block;line-height:1.3}@media(max-width:900px){.gateway-overview-toolbar{grid-template-columns:1fr 1fr}.gateway-row-details{grid-template-columns:1fr 1fr}}

/* 0.59.16 HTTPS runtime diagnostics */
.pill.warning-pill{background:#fffaeb;color:#b54708;border-color:#fedf89}
.gateway-site-match{color:#067647;font-weight:900}
.gateway-site-mismatch{color:#b42318;font-weight:900}
.gateway-overview-main>td:first-child .pill{margin:.08rem .12rem .08rem 0}
/* 0.61.9: Status-Pillen in einem Container mit festem Platz. Taucht "Heartbeat veraltet" o. ae.
   auf oder verschwindet, aendert sich die Zeilenhoehe dadurch nicht mehr - die Tabelle springt nicht. */
.gateway-status-pills{display:flex;flex-wrap:wrap;gap:.1rem .12rem;align-content:flex-start;min-height:3.6em}
.gateway-overview-detail[hidden]{display:none}

/* 0.59.17 - mobile single-TAG commissioning (IBN) */
.commissioning-title-row{align-items:flex-start;gap:1rem}
.commissioning-start-card{max-width:54rem;margin-inline:auto}
.commissioning-privacy-note{display:grid;gap:.3rem;margin-bottom:1rem;padding:.9rem 1rem;border:1px solid #a7d7bf;border-radius:.8rem;background:#f2fbf6;color:#185c3b;line-height:1.45}
.commissioning-privacy-note strong{font-size:1rem}
.commissioning-start-form{display:grid;grid-template-columns:minmax(15rem,1fr) minmax(18rem,1.25fr) auto;gap:.9rem;align-items:end}
.commissioning-start-form label{display:grid;gap:.38rem;min-width:0;font-weight:800}
.commissioning-start-form input,.commissioning-start-form select{width:100%;min-height:48px;font-size:1rem}
.commissioning-start-form small{font-weight:500;line-height:1.35;color:var(--muted)}
.commissioning-primary-action{min-height:48px;padding:.72rem 1.15rem;font-size:1rem;font-weight:900;border-radius:.7rem}
.commissioning-gateway-summary{margin-top:.85rem;min-height:1.4rem}
.commissioning-session{display:grid;gap:1rem;max-width:76rem;margin-inline:auto}
.commissioning-session-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;position:sticky;top:.5rem;z-index:8;border-color:#b9d5c5;box-shadow:0 10px 30px #0b30130f}
.commissioning-session-head h2{margin:.16rem 0 .45rem}
.commissioning-eyebrow{display:block;text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;font-weight:900;color:var(--muted)}
.commissioning-selected-tag{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap}
.commissioning-selected-tag span{font-weight:800;color:var(--muted)}
.commissioning-selected-tag code{font-size:1.04rem;font-weight:900;background:#f1f5f3;border:1px solid var(--line);border-radius:.45rem;padding:.34rem .55rem;word-break:break-all}
.commissioning-session-status{display:grid;gap:.38rem;justify-items:end;text-align:right}
.status-warn{background:#fff5d8;color:#805400;border-color:#f1d082}
.commissioning-location-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.commissioning-location-strip>div{display:grid;gap:.28rem;padding:.7rem .8rem;border:1px solid var(--line);border-radius:.7rem;background:#fbfcfb;min-width:0}
.commissioning-location-strip span{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;font-weight:900;color:var(--muted)}
.commissioning-location-strip strong{font-size:1.08rem;overflow-wrap:anywhere}
.commissioning-location-strip small{line-height:1.35;color:var(--muted)}
.commissioning-antenna-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.commissioning-antenna-card{display:grid;gap:.8rem;padding:1rem;border:2px solid var(--line);border-radius:1rem;background:var(--card,#fff);min-width:0;box-shadow:0 8px 24px #0b301309}
.commissioning-antenna-card.is-strongest{border-color:#3a9b68;background:#f2fbf6;box-shadow:0 10px 28px #2d82531f}
.commissioning-antenna-card.is-empty{background:#fafafa;color:#646b67}
.commissioning-antenna-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.7rem}
.commissioning-antenna-head>div{display:grid;gap:.15rem;min-width:0}
.commissioning-antenna-head span:first-child{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;font-weight:900;color:var(--muted)}
.commissioning-antenna-head strong{font-size:1rem;overflow-wrap:anywhere}
.commissioning-rssi-value{font-size:2.25rem;line-height:1;font-weight:950;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.commissioning-rssi-bar{height:.56rem;background:#e9ecea;border-radius:999px;overflow:hidden}
.commissioning-rssi-bar span{display:block;height:100%;min-width:0;border-radius:inherit;background:linear-gradient(90deg,#df7d33,#3c9669);transition:width .25s ease}
.commissioning-antenna-card dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;margin:0}
.commissioning-antenna-card dl>div{display:grid;gap:.12rem;padding:.48rem .55rem;border-radius:.55rem;background:#fff;border:1px solid #e6e9e7;min-width:0}
.commissioning-antenna-card dt{font-size:.72rem;font-weight:800;color:var(--muted)}
.commissioning-antenna-card dd{margin:0;font-weight:900;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.commissioning-antenna-card>small{line-height:1.4;color:var(--muted);overflow-wrap:anywhere}
.commissioning-assignment-panel{padding:0;overflow:hidden}
.commissioning-assignment-panel summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem;cursor:pointer;list-style:none;min-height:58px}
.commissioning-assignment-panel summary::-webkit-details-marker{display:none}
.commissioning-assignment-panel summary>span:first-child{display:grid;gap:.2rem}
.commissioning-assignment-panel summary small{font-weight:500;color:var(--muted)}
.commissioning-assignment-panel[open] summary{border-bottom:1px solid var(--line);background:#fafbfa}
.commissioning-assignment-body{display:grid;gap:1rem;padding:1rem}
.commissioning-assignment-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}
.commissioning-assignment-fields label{display:grid;gap:.36rem;font-weight:900}
.commissioning-assignment-fields select{width:100%;min-height:48px;font-size:1rem}
.commissioning-swap-actions,.commissioning-assignment-actions,.commissioning-bottom-actions{display:flex;gap:.7rem;flex-wrap:wrap}
.commissioning-swap-actions button,.commissioning-assignment-actions button,.commissioning-bottom-actions button{min-height:48px;font-weight:850}
.commissioning-assignment-actions{justify-content:flex-end;border-top:1px solid var(--line);padding-top:1rem}
.commissioning-assignment-warning{margin:0;line-height:1.45}
.commissioning-bottom-actions{justify-content:flex-end}
.commissioning-bottom-actions .danger{border-color:#ef9d9d;background:#fff5f5;color:#a7192f}
.commissioning-bottom-actions .danger:hover{background:#fde8e8}
.commissioning-separation-note{max-width:76rem;margin-inline:auto;border-style:dashed}
.commissioning-separation-note h2{margin-top:0}
.commissioning-separation-note p{margin-bottom:0;line-height:1.5}

@media(max-width:900px){
  .commissioning-start-form{grid-template-columns:1fr 1fr}
  .commissioning-start-form .commissioning-primary-action{grid-column:1/-1;width:100%}
  .commissioning-antenna-grid{grid-template-columns:1fr}
  .commissioning-assignment-fields{grid-template-columns:1fr}
}

@media(max-width:640px){
  .commissioning-title-row{display:grid;grid-template-columns:1fr}
  .commissioning-title-row>.pill{justify-self:start}
  .commissioning-start-card,.commissioning-session,.commissioning-separation-note{margin-left:-.15rem;margin-right:-.15rem}
  .commissioning-start-form{grid-template-columns:1fr}
  .commissioning-start-form .commissioning-primary-action{grid-column:auto}
  .commissioning-start-form input,.commissioning-start-form select,.commissioning-primary-action{min-height:52px}
  .commissioning-session-head{top:.25rem;display:grid;grid-template-columns:1fr;padding:.9rem}
  .commissioning-session-status{justify-items:start;text-align:left}
  .commissioning-location-strip{grid-template-columns:1fr;padding:.8rem}
  .commissioning-location-strip>div{padding:.75rem}
  .commissioning-antenna-grid{gap:.75rem}
  .commissioning-antenna-card{padding:.9rem;border-radius:.85rem}
  .commissioning-rssi-value{font-size:2.45rem}
  .commissioning-antenna-card dl{grid-template-columns:1fr 1fr}
  .commissioning-assignment-panel summary{align-items:flex-start;padding:.9rem}
  .commissioning-assignment-panel summary>.pill{flex:0 0 auto}
  .commissioning-assignment-body{padding:.9rem}
  .commissioning-swap-actions{display:grid;grid-template-columns:1fr}
  .commissioning-swap-actions button{width:100%}
  .commissioning-assignment-actions{display:grid;grid-template-columns:1fr}
  .commissioning-assignment-actions button{width:100%}
  .commissioning-bottom-actions{position:sticky;bottom:.5rem;z-index:7;padding:.6rem;background:#ffffffed;border:1px solid var(--line);border-radius:.8rem;box-shadow:0 10px 30px #0002}
  .commissioning-bottom-actions button{width:100%;min-height:52px}
}

/* 0.59.18 - IBN montage access + prominent RSSI entry */
.commissioning-title-actions{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}
.commissioning-rssi-link{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:.52rem .78rem;border:1px solid var(--line);border-radius:.65rem;background:#fff;color:inherit;text-decoration:none;font-weight:850;white-space:nowrap}
.commissioning-rssi-link:hover{background:#f5f7f6;border-color:#aeb8b2}
.commissioning-access-card{max-width:76rem;margin-inline:auto}
.commissioning-access-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}
.commissioning-access-head h2{margin-top:0;margin-bottom:.3rem}
.commissioning-access-head p{margin:0;line-height:1.45}
.commissioning-access-form{display:grid;grid-template-columns:minmax(14rem,1fr) minmax(10rem,.55fr) minmax(18rem,1.2fr) auto;gap:.8rem;align-items:end;margin-top:1rem}
.commissioning-access-form>label:not(.commissioning-access-check){display:grid;gap:.35rem;font-weight:850}
.commissioning-access-form input,.commissioning-access-form select,.commissioning-access-form button{min-height:46px}
.commissioning-access-check{display:flex;align-items:flex-start;gap:.55rem;padding:.55rem .7rem;border:1px solid var(--line);border-radius:.65rem;background:#fafbfa;min-height:46px}
.commissioning-access-check input{min-height:auto;margin-top:.18rem}
.commissioning-access-check span{display:grid;gap:.15rem}
.commissioning-access-check small{font-weight:500;color:var(--muted);line-height:1.3}
.commissioning-access-result{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1rem;margin-top:1rem;padding:1rem;border:1px solid #a7d7bf;border-radius:.85rem;background:#f4fbf7}
.commissioning-access-qr{display:grid;place-items:center;background:#fff;border:1px solid var(--line);border-radius:.7rem;padding:.55rem;align-self:start}
.commissioning-access-qr img{width:170px;height:170px;display:block}
.commissioning-access-result-copy{display:grid;gap:.65rem;align-content:start;min-width:0}
.commissioning-access-result-copy label{display:grid;gap:.35rem;font-weight:850}
.commissioning-access-url-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem}
.commissioning-access-url-row input{width:100%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.82rem}
.commissioning-access-actions{display:flex;gap:.6rem;flex-wrap:wrap}
.commissioning-access-list-wrap{margin-top:1.1rem;border-top:1px solid var(--line);padding-top:.9rem}
.commissioning-access-list-wrap h3{margin:.1rem 0 .7rem}
.commissioning-access-revoke{min-height:36px}

.public-ibn-body{margin:0;background:#f4f6f5;color:var(--text,#202522)}
.public-ibn-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem clamp(.8rem,3vw,2rem);background:#111;color:#fff;position:sticky;top:0;z-index:20;box-shadow:0 8px 24px #0002}
.public-ibn-header .brand-copy span{color:#cdd4d0}
.public-ibn-header .pill{background:#eef8f1;color:#195e3b;border-color:#a8d2b8}
.public-ibn-main{max-width:86rem;margin:0 auto;padding:1rem clamp(.65rem,2vw,1.5rem) 2rem;display:grid;gap:1rem}
.public-ibn-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:1.2rem;border-top:4px solid #222}
.public-ibn-hero h1{margin:.16rem 0 .45rem}
.public-ibn-hero p{max-width:60rem;margin:0;line-height:1.5;color:var(--muted)}
.public-ibn-hero-actions{display:flex;flex-direction:column;align-items:flex-end;gap:.6rem}
.public-ibn-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem}
.public-ibn-kpis article{display:grid;gap:.3rem;min-height:92px;align-content:center}
.public-ibn-kpis span{font-size:.78rem;font-weight:850;color:var(--muted);text-transform:uppercase;letter-spacing:.045em}
.public-ibn-kpis strong{font-size:2rem;line-height:1;font-variant-numeric:tabular-nums}
.public-ibn-map-card .section-head{margin-bottom:.7rem}
.public-ibn-map-card h2{margin:0 0 .2rem}
.public-ibn-gateway-table td{vertical-align:top}
.public-ibn-test-card{max-width:none;width:100%}
.public-ibn-security-note{display:flex;gap:.65rem;align-items:flex-start;border-style:dashed;line-height:1.45}
.public-ibn-security-note strong{white-space:nowrap}
.public-ibn-footer{padding:1rem;text-align:center;color:var(--muted);font-size:.82rem}
.public-ibn-expired{max-width:42rem;margin:10vh auto 0;padding:1.4rem}
.public-ibn-expired h1{margin:.2rem 0 .7rem}

@media(max-width:1050px){
 .commissioning-access-form{grid-template-columns:1fr 1fr}
 .commissioning-access-form>button{grid-column:1/-1}
 .public-ibn-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:700px){
 .commissioning-title-actions{align-items:flex-start}
 .commissioning-access-head,.public-ibn-hero{display:grid}
 .commissioning-access-form{grid-template-columns:1fr}
 .commissioning-access-form>button{grid-column:auto;width:100%}
 .commissioning-access-result{grid-template-columns:1fr}
 .commissioning-access-qr{justify-self:center}
 .commissioning-access-url-row{grid-template-columns:1fr}
 .public-ibn-header{align-items:flex-start}
 .public-ibn-header .brand-logo{max-width:115px}
 .public-ibn-hero-actions{align-items:flex-start}
 .public-ibn-kpis{grid-template-columns:1fr 1fr}
 .public-ibn-kpis article{min-height:82px}
 .public-ibn-security-note{display:grid}
 .public-ibn-security-note strong{white-space:normal}
}


/* 0.59.19 - compact mobile IBN and gateway-owned RSSI-filter overview */
.rssi-filter-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin-bottom:1rem}.rssi-filter-kpis article{display:grid;gap:.25rem;min-height:88px;align-content:center}.rssi-filter-kpis span{font-size:.78rem;color:var(--muted)}.rssi-filter-kpis strong{font-size:1.8rem;line-height:1}.rssi-overview-tools{display:grid;grid-template-columns:minmax(220px,2fr) minmax(180px,1fr);gap:.75rem;margin:.8rem 0}.rssi-overview-tools label{display:grid;gap:.35rem}.rssi-filter-value strong{font-variant-numeric:tabular-nums}.rssi-remote-row td{padding-top:.3rem;padding-bottom:.45rem;background:color-mix(in srgb,var(--surface-2) 70%,transparent);font-size:.86rem}.rssi-remote-row td:first-child{padding-left:1.1rem}.rssi-remote-ant{display:inline-block;font-size:.72rem;font-weight:700;color:var(--muted);margin-right:.35rem}.rssi-live-details{padding:0;overflow:hidden}.rssi-live-details>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.1rem}.rssi-live-details>summary::-webkit-details-marker{display:none}.rssi-live-details>summary span:first-child{display:grid;gap:.2rem}.rssi-live-details>summary small{color:var(--muted);font-weight:400}.rssi-live-details[open]>summary{border-bottom:1px solid var(--line)}.rssi-live-body{padding:1rem 1.1rem 1.2rem}.rssi-live-body h3{margin-top:1.2rem}
@media (max-width:900px){.rssi-filter-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){
  .public-ibn-header{padding:.55rem .65rem;gap:.45rem}.public-ibn-header .brand-lockup{gap:.5rem}.public-ibn-header .brand-logo{max-width:92px}.public-ibn-header .brand-copy strong{font-size:.82rem}.public-ibn-header .brand-copy span{font-size:.68rem}.public-ibn-header #public-ibn-expiry{font-size:.7rem;padding:.28rem .42rem}
  .public-ibn-main{padding:.55rem .45rem 1rem;gap:.55rem}.public-ibn-main>.card,.public-ibn-main>section.card{padding:.7rem;border-radius:12px}.public-ibn-hero{gap:.55rem}.public-ibn-hero h1{font-size:1.35rem;margin:.08rem 0}.public-ibn-hero p{font-size:.82rem;line-height:1.35;margin:.3rem 0}.public-ibn-hero-actions{gap:.4rem}.public-ibn-hero-actions .commissioning-rssi-link{font-size:.8rem}.public-ibn-kpis{gap:.4rem}.public-ibn-kpis article{min-height:64px!important;padding:.5rem .55rem!important}.public-ibn-kpis article span{font-size:.66rem;line-height:1.15}.public-ibn-kpis article strong{font-size:1.38rem;line-height:1}.public-ibn-kpis article:last-child{grid-column:1/-1;min-height:55px!important}.public-ibn-map-card .section-head{display:grid;grid-template-columns:1fr;gap:.45rem}.public-ibn-map-card .section-head h2{font-size:1.05rem}.public-ibn-map-card .section-head p{font-size:.76rem}.public-ibn-map-card #public-ibn-refresh{width:100%;min-height:42px}
  .public-ibn-gateway-table,.public-ibn-gateway-table tbody,.public-ibn-gateway-table tr,.public-ibn-gateway-table td{display:block;width:100%}.public-ibn-gateway-table thead{display:none}.public-ibn-gateway-table tbody{display:grid;gap:.5rem}.public-ibn-gateway-table tr{border:1px solid var(--line);border-radius:10px;padding:.45rem .55rem;background:var(--surface-2)}.public-ibn-gateway-table tr td{display:grid;grid-template-columns:minmax(82px,.8fr) minmax(0,1.4fr);gap:.45rem;padding:.32rem 0;border:0;border-bottom:1px solid color-mix(in srgb,var(--line) 65%,transparent);font-size:.78rem;overflow-wrap:anywhere}.public-ibn-gateway-table tr td:last-child{border-bottom:0}.public-ibn-gateway-table tr td::before{content:attr(data-label);color:var(--muted);font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.public-ibn-gateway-table tr td:first-child{grid-template-columns:1fr;padding:.1rem 0 .42rem;font-size:.88rem}.public-ibn-gateway-table tr td:first-child::before{display:none}
  .public-ibn-test-card{padding:.65rem!important}.public-ibn-test-card .commissioning-privacy-note{padding:.55rem .6rem;gap:.25rem}.public-ibn-test-card .commissioning-privacy-note strong{font-size:.82rem}.public-ibn-test-card .commissioning-privacy-note span{font-size:.74rem}.public-ibn-test-card .commissioning-start-form{gap:.55rem}.public-ibn-test-card input,.public-ibn-test-card select,.public-ibn-test-card button{min-height:46px!important}.public-ibn-test-card small{font-size:.68rem}
  .public-ibn-body .commissioning-session{gap:.5rem}.public-ibn-body .commissioning-session-head,.public-ibn-body .commissioning-location-strip,.public-ibn-body .commissioning-antenna-card,.public-ibn-body .commissioning-assignment-panel{border-radius:11px}.public-ibn-body .commissioning-session-head{padding:.65rem}.public-ibn-body .commissioning-session-head h2{font-size:1.05rem}.public-ibn-body .commissioning-selected-tag{font-size:.72rem}.public-ibn-body .commissioning-location-strip{padding:.6rem;gap:.5rem}.public-ibn-body .commissioning-location-strip strong{font-size:.95rem}.public-ibn-body .commissioning-antenna-grid{gap:.5rem}.public-ibn-body .commissioning-antenna-card{padding:.65rem}.public-ibn-body .commissioning-antenna-card .commissioning-rssi{font-size:2rem}.public-ibn-security-note{font-size:.76rem;line-height:1.3}.public-ibn-footer{font-size:.68rem;padding:.6rem}
  .commissioning-access-card{padding:.75rem}.commissioning-access-head{gap:.45rem}.commissioning-access-head h2{font-size:1.05rem}.commissioning-access-head p{font-size:.78rem}.commissioning-access-form{gap:.55rem}.commissioning-access-form input,.commissioning-access-form select,.commissioning-access-form button{min-height:46px}.commissioning-access-check{padding:.6rem}.commissioning-access-result{padding:.65rem;gap:.65rem}.commissioning-access-qr img{width:138px;height:138px}.commissioning-access-actions{gap:.4rem}.commissioning-access-actions a{flex:1;text-align:center}.commissioning-access-list-wrap h3{font-size:.95rem}
  .commissioning-access-table,.commissioning-access-table tbody,.commissioning-access-table tr,.commissioning-access-table td{display:block;width:100%}.commissioning-access-table thead{display:none}.commissioning-access-table tbody{display:grid;gap:.5rem}.commissioning-access-table tr{border:1px solid var(--line);border-radius:10px;padding:.42rem .55rem;background:var(--surface-2)}.commissioning-access-table tr td{display:grid;grid-template-columns:minmax(96px,.9fr) minmax(0,1.25fr);gap:.4rem;padding:.3rem 0;border:0;border-bottom:1px solid color-mix(in srgb,var(--line) 65%,transparent);font-size:.78rem;overflow-wrap:anywhere}.commissioning-access-table tr td:last-child{border-bottom:0}.commissioning-access-table tr td::before{content:attr(data-label);font-size:.67rem;color:var(--muted);font-weight:700;text-transform:uppercase}.commissioning-access-table .commissioning-access-revoke{width:100%;min-height:40px}
  .rssi-overview-head{display:grid;grid-template-columns:1fr;gap:.55rem}.rssi-overview-head #rssi-refresh{width:100%}.rssi-filter-kpis{gap:.45rem;margin-bottom:.65rem}.rssi-filter-kpis article{min-height:64px;padding:.55rem}.rssi-filter-kpis span{font-size:.68rem}.rssi-filter-kpis strong{font-size:1.4rem}.rssi-overview-tools{grid-template-columns:1fr;gap:.5rem}.rssi-filter-overview-table,.rssi-filter-overview-table tbody,.rssi-filter-overview-table tr,.rssi-filter-overview-table td{display:block;width:100%}.rssi-filter-overview-table thead{display:none}.rssi-filter-overview-table tbody{display:grid;gap:.55rem}.rssi-filter-overview-table tr{border:1px solid var(--line);border-radius:10px;padding:.5rem .6rem;background:var(--surface-2)}.rssi-filter-overview-table tr td{display:grid;grid-template-columns:minmax(96px,.9fr) minmax(0,1.2fr);gap:.4rem;padding:.33rem 0;border:0;border-bottom:1px solid color-mix(in srgb,var(--line) 65%,transparent);font-size:.8rem}.rssi-filter-overview-table tr td:last-child{border-bottom:0}.rssi-filter-overview-table tr td::before{content:attr(data-label);font-size:.67rem;color:var(--muted);font-weight:700;text-transform:uppercase}.rssi-filter-overview-table tr td:first-child{grid-template-columns:1fr;font-size:.9rem}.rssi-filter-overview-table tr.rssi-remote-row{margin-top:-.4rem;border-style:dashed}.rssi-filter-overview-table tr td.rssi-remote-empty{display:none}.rssi-filter-overview-table tr.rssi-remote-row .rssi-remote-ant{display:none}.rssi-filter-overview-table tr td::before{white-space:normal;overflow-wrap:anywhere}.rssi-filter-overview-table tr td:first-child::before{display:none}.rssi-live-details>summary{padding:.75rem;align-items:flex-start}.rssi-live-details>summary small{font-size:.7rem}.rssi-live-body{padding:.7rem}.rssi-live-body .filter-grid{grid-template-columns:1fr}
}
@media (max-width:390px){.public-ibn-main{padding:.45rem .35rem .8rem}.public-ibn-kpis{grid-template-columns:1fr 1fr}.public-ibn-kpis article{padding:.42rem!important}.public-ibn-header .brand-copy span{display:none}.public-ibn-gateway-table tr td,.commissioning-access-table tr td,.rssi-filter-overview-table tr td{grid-template-columns:86px minmax(0,1fr)}.public-ibn-gateway-table tr td:first-child,.rssi-filter-overview-table tr td:first-child{grid-template-columns:1fr}}

/* 0.59.21 - unique-zone automatic zone/gateway/antenna topology */
.topology-page-head{align-items:flex-start}.topology-head-actions{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.topology-summary{margin-bottom:1rem}.topology-rule-card{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:1rem}.topology-rule-card>div{display:flex;flex-direction:column;gap:.3rem}.topology-rule-card span{color:var(--muted);font-size:.92rem;line-height:1.45}.topology-diagrams{display:grid;gap:1rem}.topology-component{overflow:hidden}.topology-component-head{margin-bottom:.45rem}.topology-svg-wrap{overflow:auto;border:1px solid var(--border);border-radius:12px;background:#fff;min-height:260px}.topology-svg{display:block;width:100%;min-width:850px;height:auto;background:#fff}.topology-zone-label,.topology-branch-label{font-weight:800;font-size:20px}.topology-zone-parent{font-size:12px;fill:#64748b}.topology-gateway-stem{stroke:#334155;stroke-width:2}.topology-gateway-box{fill:#f8fafc;stroke:#0f172a;stroke-width:2}.topology-gateway-name{font-weight:800;font-size:15px;fill:#0f172a}.topology-gateway-ip{font-size:12px;fill:#475569}.topology-antenna-number{font-weight:800;font-size:13px;fill:#0f172a}.topology-arrow{font-weight:900;font-size:28px}.topology-unlinked-card{margin-top:1rem}.topology-unlinked{display:flex;flex-wrap:wrap;gap:.55rem}.topology-unlinked-chip{display:inline-flex;gap:.5rem;align-items:center;border:1px solid var(--border);border-radius:999px;padding:.45rem .7rem;background:#f8fafc}.topology-unlinked-chip strong{font-size:.75rem;text-transform:uppercase;color:var(--muted)}
.topology-component:fullscreen{background:#f8fafc;padding:1rem;overflow:auto}.topology-component:fullscreen .topology-svg-wrap{height:calc(100vh - 100px)}.topology-component:fullscreen .topology-svg{min-width:1100px}
@media(max-width:700px){.topology-rule-card{grid-template-columns:1fr}.topology-page-head{gap:.7rem}.topology-head-actions{width:100%;justify-content:space-between}.topology-svg-wrap{margin:0 -.35rem}.topology-svg{min-width:780px}.topology-component{padding:.75rem}.topology-component-head h2{font-size:1.05rem}.topology-fullscreen{padding:.55rem .7rem}}

/* 0.59.22 - topology lane routing + commissioning access actions */
.commissioning-access-row-actions{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.commissioning-access-row-actions button{min-height:36px;padding:.38rem .55rem;font-size:.78rem}.commissioning-access-share{font-weight:800}.commissioning-access-delete.danger{border-color:#ef9d9d;background:#fff5f5;color:#a7192f}.commissioning-access-delete.danger:hover{background:#fde8e8}
.topology-gateway-box{filter:drop-shadow(0 2px 2px rgb(15 23 42 / .06))}.topology-antenna-badges circle{filter:drop-shadow(0 1px 1px rgb(15 23 42 / .08))}.topology-svg-wrap{background:linear-gradient(180deg,#fff,#fcfdff)}
@media(max-width:640px){.commissioning-access-row-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.commissioning-access-row-actions button,.commissioning-access-row-actions .muted{width:100%}.commissioning-access-table tr td:last-child{grid-template-columns:1fr}.commissioning-access-table tr td:last-child::before{margin-bottom:.2rem}.commissioning-access-row-actions .commissioning-access-delete{grid-column:1/-1}}

/* 0.59.23 IBN hierarchy zone order */
.commissioning-zone-order-card{margin-bottom:1rem}.commissioning-zone-order-groups{display:grid;gap:.8rem;margin:.7rem 0}.commissioning-zone-order-group{border:1px solid var(--line);border-radius:.75rem;padding:.7rem;background:#fafafa}.commissioning-zone-order-group>div:first-child{display:flex;justify-content:space-between;gap:.8rem;align-items:center;margin-bottom:.55rem}.commissioning-zone-order-group small{color:var(--muted)}.commissioning-zone-order-list{display:flex;gap:.45rem;flex-wrap:wrap}.commissioning-zone-order-item{display:grid;grid-template-columns:26px minmax(100px,1fr) auto;align-items:center;gap:.45rem;min-width:220px;padding:.5rem .55rem;border:1px solid var(--line);border-radius:.6rem;background:#fff}.commissioning-zone-order-item>span{display:grid;place-items:center;width:24px;height:24px;border-radius:999px;background:#111;color:#fff;font-size:.72rem;font-weight:900}.commissioning-zone-order-item>div{display:flex;gap:.2rem}.commissioning-zone-order-item button{width:34px;min-height:34px;padding:0;font-weight:900}@media(max-width:620px){.commissioning-zone-order-list{display:grid}.commissioning-zone-order-item{min-width:0;width:100%}}

/* 0.60.0 Live-Zutritte: current ZOKA light brand system */
.live-access-page{margin:0;min-height:100vh;background:var(--canvas);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;display:flex;flex-direction:column}
.live-access-header{min-height:82px;background:var(--surface);display:grid;grid-template-columns:minmax(280px,1fr) auto minmax(280px,1fr);align-items:center;gap:22px;padding:0 30px;border-bottom:1px solid var(--line);box-shadow:0 3px 12px rgba(17,17,17,.05)}
.live-access-brand{display:flex;align-items:center;gap:18px;min-width:0}.live-access-brand img{width:132px;max-height:42px;object-fit:contain}.live-access-brand-divider{width:1px;height:42px;background:var(--line-strong)}.live-access-brand div{display:flex;flex-direction:column}.live-access-brand strong{font-size:21px;line-height:1.1}.live-access-brand small{margin-top:4px;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}
.live-access-header-center{display:flex;align-items:center;gap:12px}.live-access-connection{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:#fafaf9;border-radius:999px;padding:8px 12px;font-size:13px;font-weight:800}.live-access-connection i{width:9px;height:9px;border-radius:50%;background:var(--warning);box-shadow:0 0 0 4px rgba(181,71,8,.1)}.live-access-connection.is-online i{background:var(--success);box-shadow:0 0 0 4px rgba(22,121,75,.1)}.live-access-connection.is-offline i{background:var(--danger);box-shadow:0 0 0 4px rgba(180,35,24,.1)}.live-access-tenant{color:var(--muted);font-size:13px;font-weight:700}
.live-access-header-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px}.live-access-clock{display:flex;flex-direction:column;text-align:right;margin-right:4px}.live-access-clock strong{font-size:18px;letter-spacing:.04em}.live-access-clock small{color:var(--muted);font-size:11px}.live-access-icon-button{width:42px;height:42px;border:1px solid var(--line-strong);border-radius:10px;background:#fff;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-size:20px;cursor:pointer}.live-access-icon-button:hover{border-color:var(--brand-orange);box-shadow:inset 0 -2px 0 var(--brand-orange)}
.live-access-brandline{height:3px;background:#111;display:flex}.live-access-brandline span:first-child{width:62%;background:var(--brand-orange)}.live-access-brandline span:last-child{width:38%;background:var(--brand-red)}
.live-access-main{width:min(1760px,calc(100% - 48px));margin:0 auto;flex:1;padding:30px 0 38px}.live-access-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px}.live-access-intro h1{font-size:36px;line-height:1.05;margin:4px 0 8px}.live-access-intro p{margin:0;color:var(--muted)}.live-access-counter{background:#fff;border:1px solid var(--line);border-radius:14px;padding:13px 18px;min-width:145px;text-align:right;box-shadow:0 4px 14px rgba(17,17,17,.04)}.live-access-counter strong{display:block;font-size:26px}.live-access-counter span{color:var(--muted);font-size:12px;font-weight:700}
.live-access-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:start}.live-access-card{--status:var(--success);background:#fff;border:1px solid var(--line-strong);border-top:4px solid var(--status);border-radius:16px;box-shadow:0 8px 28px rgba(17,17,17,.08);overflow:hidden;animation:liveCardIn .24s ease both;transition:opacity .28s ease,transform .28s ease}.live-access-card.is-denied{--status:var(--danger)}.live-access-card.is-leaving{opacity:0;transform:translateY(-8px) scale(.985)}@keyframes liveCardIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.live-access-card-status{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:12px 16px;background:color-mix(in srgb,var(--status) 8%,white);border-bottom:1px solid color-mix(in srgb,var(--status) 20%,white)}.live-access-status-icon{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--status);color:#fff;font-size:20px;font-weight:900}.live-access-card-status strong{font-size:13px;letter-spacing:.035em;color:var(--status)}.live-access-card-status small{font-variant-numeric:tabular-nums;font-weight:800;color:var(--ink)}
.live-access-card-body{display:grid;grid-template-columns:160px minmax(0,1fr);gap:18px;padding:18px}.live-access-avatar{width:160px;height:190px;border-radius:12px;overflow:hidden;background:#e7e5e4;border:1px solid var(--line);display:grid;place-items:center}.live-access-avatar img{width:100%;height:100%;object-fit:cover}.live-access-avatar.fallback{background:linear-gradient(145deg,#f5f5f4,#e7e5e4);color:#555}.live-access-avatar.fallback span{width:86px;height:86px;border-radius:50%;background:#fff;border:2px solid #d6d3d1;display:grid;place-items:center;font-size:30px;font-weight:900}.live-access-avatar.vehicle{background:linear-gradient(145deg,#fafaf9,#e7e5e4)}.live-access-car-shape{position:relative;width:104px;height:48px;border-radius:14px 14px 8px 8px;background:#262626;border-bottom:8px solid #111}.live-access-car-shape:before{content:"";position:absolute;left:18px;right:18px;top:-30px;height:34px;background:#444;border-radius:28px 28px 2px 2px;clip-path:polygon(18% 100%,30% 0,72% 0,86% 100%)}.live-access-car-shape:after{content:"";position:absolute;left:12px;right:12px;bottom:-17px;height:18px;border-left:20px solid #111;border-right:20px solid #111}.live-access-card-copy{min-width:0}.live-access-card-copy h2{font-size:27px;line-height:1.08;margin:2px 0 5px;overflow-wrap:anywhere}.live-access-entity-sub{margin:0 0 16px;color:var(--muted);font-weight:650}.live-access-meta{display:grid;grid-template-columns:1fr 1fr;gap:11px 14px}.live-access-meta div{min-width:0}.live-access-meta span{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:800;margin-bottom:2px}.live-access-meta strong{display:block;font-size:14px;overflow-wrap:anywhere}.live-access-reason{margin-top:14px;padding:9px 11px;border-radius:8px;background:#fff4f2;color:var(--danger);font-size:12px;font-weight:750}.live-access-card-progress{height:5px;background:#eee}.live-access-card-progress span{display:block;width:100%;height:100%;background:var(--status);transform-origin:left;animation:liveProgress var(--live-duration) linear forwards}@keyframes liveProgress{to{transform:scaleX(0)}}
.live-access-empty{min-height:360px;border:1px dashed var(--line-strong);border-radius:18px;background:rgba(255,255,255,.72);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px}.live-access-empty[hidden]{display:none}.live-access-empty-mark{width:72px;height:72px;border-radius:18px;background:#111;color:#fff;display:grid;place-items:center;font-size:37px;font-weight:900;box-shadow:inset 0 -4px 0 var(--brand-orange)}.live-access-empty h2{margin:18px 0 8px}.live-access-empty p{max-width:560px;color:var(--muted);margin:0}.live-access-footer{min-height:42px;padding:0 30px;border-top:1px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px}
@media(max-width:1250px){.live-access-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.live-access-header{grid-template-columns:1fr auto}.live-access-header-center{display:none}}@media(max-width:760px){.live-access-header{padding:0 16px;min-height:70px}.live-access-brand img{width:100px}.live-access-brand-divider,.live-access-clock{display:none}.live-access-main{width:min(100% - 24px,1760px);padding-top:20px}.live-access-intro h1{font-size:29px}.live-access-grid{grid-template-columns:1fr}.live-access-card-body{grid-template-columns:112px 1fr}.live-access-avatar{width:112px;height:145px}.live-access-card-copy h2{font-size:22px}.live-access-meta{grid-template-columns:1fr}.live-access-footer{padding:0 14px}.live-access-counter{display:none}}

/* 0.60.0 Reader-IBN + Live-Zutritte admin */
.reader-ibn-card,.live-access-admin-card{margin-top:18px}.reader-ibn-form,.live-access-admin-form{align-items:end}.reader-ibn-active{margin-top:18px;border-top:1px solid var(--line);padding-top:18px}.reader-ibn-run-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.reader-ibn-run-head h3{margin:4px 0}.reader-ibn-steps{display:grid;gap:10px;margin:16px 0}.reader-ibn-step{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:12px;border:1px solid var(--line);border-left:4px solid var(--line-strong);background:#fff;border-radius:10px;padding:12px 14px}.reader-ibn-step.is-ok{border-left-color:var(--success);background:#fbfefc}.reader-ibn-step.is-error{border-left-color:var(--danger);background:#fffdfd}.reader-ibn-step.is-running{border-left-color:var(--brand-orange);box-shadow:inset 0 0 0 1px rgba(255,99,0,.12)}.reader-ibn-step-number{width:30px;height:30px;border-radius:50%;background:#f1f1f0;display:grid;place-items:center;font-weight:900}.reader-ibn-step div{display:flex;flex-direction:column;gap:3px}.reader-ibn-step small{color:var(--muted)}.reader-ibn-step em{font-style:normal;font-size:12px;font-weight:700;color:var(--ink)}.reader-ibn-action{border:1px solid var(--line);background:#fafaf9;border-radius:12px;padding:16px;display:flex;align-items:center;justify-content:space-between;gap:16px}.reader-ibn-action-copy{display:flex;flex-direction:column;gap:4px}.reader-ibn-action-copy span{color:var(--muted);font-size:13px}.reader-ibn-manual{display:flex;gap:8px;flex-wrap:wrap}.reader-ibn-wait{display:flex;gap:12px;align-items:center}.reader-ibn-wait div{display:flex;flex-direction:column;gap:3px}.reader-ibn-wait span:last-child{color:var(--muted);font-size:13px}.spinner{display:block;width:24px;height:24px;border:3px solid #e7e5e4;border-top-color:var(--brand-orange);border-radius:50%;animation:zokaSpin .85s linear infinite}@keyframes zokaSpin{to{transform:rotate(360deg)}}.reader-ibn-history{margin-top:22px}.reader-ibn-history h3{margin-bottom:8px}.live-access-source-field{grid-column:1/-1}.live-access-source-field>strong{display:block;margin-bottom:8px}.live-access-source-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.live-access-source-option{display:flex!important;align-items:center;gap:10px;border:1px solid var(--line);border-radius:9px;background:#fafaf9;padding:10px!important}.live-access-source-option input{width:auto!important;margin:0}.live-access-source-option span{display:flex;flex-direction:column}.live-access-source-option small{color:var(--muted);font-size:11px}.live-access-admin-url{display:inline-block;max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.live-access-admin-card .commissioning-access-row-actions{margin-top:7px}
@media(max-width:900px){.live-access-source-list{grid-template-columns:1fr}.reader-ibn-action{align-items:stretch;flex-direction:column}.reader-ibn-step{grid-template-columns:32px 1fr}.reader-ibn-step>.pill{grid-column:2}}

/* 0.60.2 Guided IBN */
.guided-ibn-page-head{align-items:flex-start}.guided-ibn-head-actions,.guided-ibn-public-nav{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.guided-ibn-public-nav{justify-content:space-between;margin:.25rem 0 1rem}.guided-ibn-public-nav a{color:#111;font-weight:800}.guided-ibn-root{display:grid;gap:1rem}.guided-ibn-filters{display:flex;gap:.5rem;flex-wrap:wrap;margin:.75rem 0 1rem}.guided-ibn-filters button{border-radius:999px;background:#fff;border:1px solid #d4d4d4;padding:.5rem .85rem}.guided-ibn-filters button.is-active{background:#111;color:#fff;border-color:#111}.guided-ibn-device-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(285px,1fr));gap:1rem}.guided-device-card{appearance:none;text-align:left;background:#fff;border:1px solid #dededb;border-radius:14px;padding:0;overflow:hidden;cursor:pointer;color:#171717;box-shadow:0 2px 10px rgba(0,0,0,.04);transition:.15s transform,.15s border-color}.guided-device-card:hover{transform:translateY(-2px);border-color:#ff6300}.guided-device-card-state{display:block;padding:.55rem .85rem;background:#f5f5f4;font-size:.78rem;font-weight:800}.guided-device-card.is-online .guided-device-card-state{color:#167742}.guided-device-card.is-offline .guided-device-card-state{color:#8a1c2d}.guided-device-card-action{display:block;border-top:1px solid #ececea;padding:.8rem 1rem;font-weight:850;color:#dc002e}.guided-device-summary{display:grid;grid-template-columns:112px 1fr;gap:1rem;padding:1rem}.guided-device-summary.is-compact{grid-template-columns:90px 1fr;padding:.4rem 0}.guided-device-image{height:104px;border-radius:12px;background:#f4f4f2;display:grid;place-items:center;border:1px solid #e4e4e1}.guided-device-summary.is-compact .guided-device-image{height:86px}.guided-device-image img{max-width:84%;max-height:84%}.guided-device-copy h3{margin:.1rem 0 .55rem;font-size:1.15rem}.guided-device-copy dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem .8rem;margin:0}.guided-device-copy dl div{min-width:0}.guided-device-copy dt{font-size:.72rem;text-transform:uppercase;color:#777;font-weight:800}.guided-device-copy dd{margin:0;font-weight:700;overflow-wrap:anywhere}.guided-device-copy p{margin:.6rem 0 0;color:#666;font-size:.86rem}.guided-ibn-setup{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.7fr);gap:1rem}.guided-ibn-start-form{border-left:1px solid #e5e5e3;padding-left:1rem;display:flex;flex-direction:column;justify-content:center;gap:1rem}.guided-ibn-start-form label{display:grid;gap:.4rem;font-weight:750}.guided-ibn-start-form small{font-weight:400;color:#666}.guided-ibn-run{display:grid;gap:1rem}.guided-run-top{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;border-bottom:1px solid #ececea;padding-bottom:.7rem}.guided-run-top h2{margin:.15rem 0}.guided-state{display:inline-flex;padding:.34rem .62rem;border-radius:999px;font-size:.78rem;font-weight:900;border:1px solid #ccc;background:#f5f5f4}.guided-state.is-ok{color:#126b3b;background:#edf8f1;border-color:#bfe5cb}.guided-state.is-bad{color:#a20d2a;background:#fff1f3;border-color:#f1b6c1}.guided-state.is-live{color:#9b3f00;background:#fff3e9;border-color:#ffcfaf}.guided-ibn-run-layout{display:grid;grid-template-columns:minmax(260px,.72fr) minmax(0,1.7fr);gap:1rem}.guided-ibn-step-rail{padding:1rem}.guided-ibn-step-rail-head{display:flex;justify-content:space-between;gap:.5rem;align-items:center;margin-bottom:.8rem}.guided-step-item{width:100%;display:grid;grid-template-columns:34px 1fr;gap:.65rem;align-items:center;text-align:left;border:0;border-left:3px solid #d5d5d2;background:#fff;padding:.65rem .55rem;margin:.25rem 0;color:#222}.guided-step-item>span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#eee;font-weight:900}.guided-step-item div{display:grid;gap:.1rem}.guided-step-item small{color:#777}.guided-step-item.is-ok{border-left-color:#238b52}.guided-step-item.is-bad{border-left-color:#dc002e}.guided-step-item.is-live{border-left-color:#ff6300;background:#fff7f1}.guided-ibn-current{padding:clamp(1rem,3vw,2rem)}.guided-current-progress{display:flex;justify-content:space-between;font-size:.82rem;color:#666}.guided-progress{height:5px;background:#ececea;border-radius:999px;margin:.4rem 0 1.5rem;overflow:hidden}.guided-progress span{display:block;height:100%;background:#ff6300}.guided-ibn-current h2{font-size:clamp(1.35rem,2.6vw,2rem);margin:.3rem 0 1rem}.guided-instruction{display:grid;grid-template-columns:48px 1fr;gap:1rem;align-items:start;background:#f7f7f5;border:1px solid #e3e3df;border-radius:14px;padding:1rem;margin:1rem 0}.guided-instruction-no{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:#111;color:#fff;font-size:1.2rem;font-weight:900}.guided-instruction p{margin:.1rem 0;font-size:1.06rem;line-height:1.5}.guided-expected,.guided-actual{display:grid;gap:.2rem;padding:.85rem 1rem;border-left:4px solid #ff6300;background:#fff7f1;margin:.8rem 0}.guided-actual.is-ok{border-left-color:#238b52;background:#f0faf4}.guided-actual.is-bad{border-left-color:#dc002e;background:#fff2f4}.guided-expected span,.guided-actual span{font-size:.74rem;text-transform:uppercase;font-weight:850;color:#666}.guided-big-action{min-height:52px;margin-top:.8rem}.guided-manual-actions{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1rem}.guided-waiting{display:grid;grid-template-columns:28px 1fr;gap:.25rem .75rem;align-items:center;padding:1rem;border:1px solid #ffd1b2;background:#fff7f1;border-radius:12px;margin-top:1rem}.guided-waiting small{grid-column:2;color:#666}.guided-spinner{width:22px;height:22px;border-radius:50%;border:3px solid #ffd3b7;border-top-color:#ff6300;animation:guidedspin .9s linear infinite}@keyframes guidedspin{to{transform:rotate(360deg)}}.guided-complete{text-align:center;padding:2rem}.guided-complete-icon{margin:auto;width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:#e9f8ef;color:#147a43;font-size:2rem;font-weight:900}.guided-history-card{width:100%;display:grid;grid-template-columns:1fr auto auto;gap:.7rem;text-align:left;border:1px solid #ddd;background:#fff;border-radius:10px;padding:.8rem;margin:.5rem 0}.guided-history-card span,.guided-history-card small{color:#666}.guided-ibn-public-history{display:grid;gap:.25rem}@media(max-width:820px){.guided-ibn-setup,.guided-ibn-run-layout{grid-template-columns:1fr}.guided-ibn-start-form{border-left:0;border-top:1px solid #e5e5e3;padding-left:0;padding-top:1rem}.guided-device-summary{grid-template-columns:86px 1fr}.guided-device-copy dl{grid-template-columns:1fr}.guided-ibn-step-rail{order:2}.guided-ibn-current{order:1}}
.guided-ibn-launch-card{border-left:4px solid #ff6300}.guided-ibn-launch-types{display:flex;gap:.5rem;flex-wrap:wrap;margin:.8rem 0 1rem}.guided-ibn-launch-types span{padding:.4rem .65rem;border-radius:999px;background:#f4f4f2;font-size:.82rem;font-weight:800}.guided-ibn-launch-button,.public-guided-ibn-button{display:inline-flex;text-decoration:none;align-items:center;justify-content:center}.legacy-reader-ibn>summary{cursor:pointer;display:flex;justify-content:space-between;gap:1rem;align-items:center}.legacy-reader-ibn>summary span:first-child{display:grid;gap:.2rem}.legacy-reader-ibn-body{padding-top:1rem}.public-guided-ibn-button{margin-bottom:.5rem}
.guided-live-hint{display:grid;gap:.2rem;padding:.85rem 1rem;border:1px solid #ffd0b1;background:#fff8f3;border-radius:10px;margin:.8rem 0}.guided-live-hint span{font-size:.72rem;text-transform:uppercase;font-weight:900;color:#ff6300}.guided-live-hint strong{font-size:.95rem}

/* 0.60.3 Guided IBN UX refresh: online-only, readable zones, mobile-first flow */
.guided-ibn-catalog-card{overflow:hidden}.guided-ibn-online-note{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;margin:-.25rem 0 1rem}.guided-online-summary{display:inline-flex;align-items:center;gap:.35rem;padding:.34rem .62rem;border-radius:999px;background:#edf8f1;color:#126b3b;border:1px solid #bfe5cb;font-size:.8rem;font-weight:850}.guided-ibn-device-grid{grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:1rem}.guided-device-card{min-width:0}.guided-device-card-state{display:none}.guided-device-card-action{display:flex;align-items:center;justify-content:flex-end;min-height:48px;color:var(--brand-red);font-weight:900;padding:.75rem 1rem}.guided-device-summary{grid-template-columns:96px minmax(0,1fr);gap:1rem;padding:1rem;align-items:start}.guided-device-summary.is-compact{grid-template-columns:82px minmax(0,1fr);gap:.85rem}.guided-device-image{height:92px}.guided-device-summary.is-compact .guided-device-image{height:78px}.guided-device-copy{min-width:0}.guided-device-title-row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap}.guided-online-pill{display:inline-flex;align-items:center;gap:.25rem;color:var(--success);font-size:.75rem;font-weight:900}.guided-device-copy h3{font-size:1.28rem;line-height:1.18;margin:.18rem 0 .75rem;overflow-wrap:anywhere}.guided-device-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin-bottom:.8rem}.guided-device-facts>div{display:grid;gap:.14rem;padding:.55rem .65rem;background:#fafaf9;border:1px solid var(--line);border-radius:10px;min-width:0}.guided-device-facts span,.guided-single-zone>span,.guided-zone-target div>span{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:#78716c;font-weight:850}.guided-device-facts code,.guided-device-facts strong{font-size:.9rem;overflow-wrap:anywhere;color:var(--ink)}.guided-zone-list{display:grid;gap:.45rem;margin-top:.3rem}.guided-zone-row{display:grid;grid-template-columns:64px minmax(0,1fr);gap:.65rem;align-items:center;padding:.58rem .65rem;background:#fff7f1;border:1px solid #ffd9c2;border-radius:10px}.guided-antenna-badge{display:grid;place-items:center;min-height:34px;border-radius:8px;background:var(--brand-black);color:#fff;font-size:.78rem;font-weight:900;white-space:nowrap}.guided-zone-copy{display:grid;gap:.08rem;min-width:0}.guided-zone-copy strong{font-size:1rem;line-height:1.2;color:var(--ink);overflow-wrap:anywhere}.guided-zone-copy small{font-size:.76rem;line-height:1.3;overflow-wrap:anywhere}.guided-single-zone{display:grid;gap:.08rem;padding:.62rem .7rem;background:#fff7f1;border:1px solid #ffd9c2;border-radius:10px}.guided-single-zone strong{font-size:1.02rem;line-height:1.2}.guided-single-zone small{font-size:.76rem;overflow-wrap:anywhere}.guided-zone-empty{padding:.6rem .7rem;border:1px dashed #d6d3d1;border-radius:10px;color:#78716c;font-size:.83rem}.guided-device-detail{margin:.62rem 0 0!important;padding-top:.55rem;border-top:1px solid var(--line);font-size:.8rem!important}.guided-empty-state{grid-column:1/-1;display:grid;gap:.3rem;place-items:start;padding:1.2rem;border:1px dashed var(--line-strong);border-radius:12px;background:#fafaf9}.guided-empty-state strong{font-size:1rem}.guided-empty-state span{color:var(--muted);line-height:1.45}
.guided-ibn-setup{grid-template-columns:minmax(0,1.45fr) minmax(300px,.72fr);align-items:stretch}.guided-setup-copy{margin-bottom:.75rem}.guided-setup-copy h2{font-size:1.35rem;margin:.2rem 0 .35rem}.guided-setup-copy p{margin:0;color:var(--muted)}.guided-ibn-start-form input{min-height:50px;font-size:1rem}.guided-ibn-start-form button{min-height:52px;font-size:1rem;font-weight:850}.guided-ibn-run-layout{grid-template-columns:minmax(235px,.55fr) minmax(0,1.8fr);align-items:start}.guided-ibn-step-rail{position:sticky;top:calc(var(--admin-sticky-header-offset,84px) + 86px);padding:.85rem}.guided-ibn-step-rail-head{align-items:flex-start;flex-direction:column}.guided-ibn-step-rail-head strong{font-size:.72rem;color:var(--muted);overflow-wrap:anywhere}.guided-step-item{cursor:default;grid-template-columns:30px minmax(0,1fr);padding:.58rem .5rem;border-left-width:4px;border-radius:0 8px 8px 0}.guided-step-item>span{width:26px;height:26px;font-size:.82rem}.guided-step-item strong{font-size:.86rem;line-height:1.25}.guided-step-item small{font-size:.72rem}.guided-step-item.is-current{background:#fff7f1;box-shadow:inset 0 0 0 1px #ffd9c2}.guided-ibn-current{min-height:420px}.guided-zone-target{display:grid;grid-template-columns:88px minmax(0,1fr);gap:.9rem;align-items:center;margin:.85rem 0 1rem;padding:.9rem;border:2px solid #ffb98f;background:#fff7f1;border-radius:14px}.guided-zone-target-ant{display:grid;place-items:center;min-height:58px;border-radius:12px;background:var(--brand-black);color:#fff;font-size:1.05rem;font-weight:900}.guided-zone-target div{display:grid;gap:.08rem;min-width:0}.guided-zone-target strong{font-size:clamp(1.3rem,3vw,1.8rem);line-height:1.05;overflow-wrap:anywhere}.guided-zone-target small{font-size:.82rem;line-height:1.3;margin-top:.12rem;overflow-wrap:anywhere}.guided-instruction{grid-template-columns:46px minmax(0,1fr);gap:.85rem}.guided-instruction p{font-size:1.08rem;line-height:1.55}.guided-expected,.guided-actual,.guided-live-hint{border-radius:10px}.guided-live-hint{display:grid;gap:.16rem;padding:.85rem 1rem;border-left:4px solid var(--brand-orange);background:#fff7f1;margin:.8rem 0}.guided-live-hint span{font-size:.72rem;text-transform:uppercase;font-weight:900;color:#9b3f00}.guided-live-hint strong{line-height:1.4}.guided-big-action{width:100%;min-height:54px;font-size:1rem;font-weight:900}.guided-manual-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.guided-manual-actions button{min-height:52px;font-weight:850}.guided-manual-actions button:last-child:nth-child(3){grid-column:1/-1}.guided-waiting{grid-template-columns:28px minmax(0,1fr)}
@media(max-width:1100px){.guided-ibn-device-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.guided-ibn-run-layout{grid-template-columns:220px minmax(0,1fr)}}
@media(max-width:820px){.guided-ibn-page-head{gap:.7rem}.guided-ibn-head-actions{width:100%;justify-content:space-between}.guided-ibn-device-grid{grid-template-columns:1fr}.guided-ibn-setup,.guided-ibn-run-layout{grid-template-columns:1fr}.guided-ibn-run-device{padding:.9rem}.guided-ibn-current{order:1;min-height:0;padding:1rem}.guided-ibn-step-rail{order:2;position:static}.guided-device-summary,.guided-device-summary.is-compact{grid-template-columns:76px minmax(0,1fr);padding:.8rem;gap:.75rem}.guided-device-image,.guided-device-summary.is-compact .guided-device-image{height:72px;border-radius:10px}.guided-device-facts{grid-template-columns:1fr 1fr;gap:.45rem}.guided-zone-row{grid-template-columns:58px minmax(0,1fr)}.guided-ibn-start-form{border-left:0;border-top:1px solid var(--line);padding:.9rem 0 0}.guided-ibn-history-card .table-wrap{overflow:visible}.guided-ibn-history-card table,.guided-ibn-history-card thead,.guided-ibn-history-card tbody,.guided-ibn-history-card tr,.guided-ibn-history-card td{display:block;width:100%}.guided-ibn-history-card thead{display:none}.guided-ibn-history-card tr{border:1px solid var(--line);border-radius:12px;background:#fff;margin:.65rem 0;padding:.3rem .75rem}.guided-ibn-history-card td{display:grid;grid-template-columns:92px minmax(0,1fr);gap:.65rem;border:0;border-bottom:1px solid #f0efed;padding:.55rem 0}.guided-ibn-history-card td:last-child{border-bottom:0}.guided-ibn-history-card td::before{content:attr(data-label);font-size:.7rem;text-transform:uppercase;color:#78716c;font-weight:850}.guided-history-card{grid-template-columns:1fr;gap:.2rem}}
@media(max-width:560px){body[data-page="guided_commissioning"] main,.public-ibn-main{padding:.7rem!important}.guided-ibn-root{gap:.7rem}.guided-ibn-catalog-card,.guided-ibn-setup,.guided-ibn-run-device,.guided-ibn-current,.guided-ibn-step-rail,.guided-ibn-history-card{border-radius:12px}.guided-ibn-catalog-card{padding:.85rem}.guided-ibn-catalog-card .section-head{align-items:flex-start;gap:.65rem}.guided-ibn-catalog-card .section-head button{min-height:44px}.guided-ibn-filters{overflow-x:auto;flex-wrap:nowrap;margin:.65rem -.15rem .75rem;padding:.1rem .15rem .3rem;scrollbar-width:thin}.guided-ibn-filters button{flex:0 0 auto;min-height:42px}.guided-device-summary,.guided-device-summary.is-compact{grid-template-columns:64px minmax(0,1fr);padding:.72rem;gap:.65rem}.guided-device-image,.guided-device-summary.is-compact .guided-device-image{height:62px}.guided-device-copy h3{font-size:1.14rem;margin:.14rem 0 .55rem}.guided-device-title-row{display:block}.guided-online-pill{margin-top:.15rem}.guided-device-facts{grid-template-columns:1fr}.guided-device-facts>div{padding:.48rem .55rem}.guided-zone-list{gap:.38rem}.guided-zone-row{grid-template-columns:54px minmax(0,1fr);padding:.5rem}.guided-antenna-badge{font-size:.72rem}.guided-zone-copy strong{font-size:.94rem}.guided-zone-copy small{font-size:.72rem}.guided-device-card-action{min-height:50px;padding:.7rem .8rem}.guided-setup-copy h2{font-size:1.2rem}.guided-run-top{align-items:flex-start}.guided-run-top h2{font-size:1.2rem}.guided-run-top .guided-state{flex:0 0 auto}.guided-ibn-run-device .guided-device-summary.is-compact{grid-template-columns:54px minmax(0,1fr)}.guided-ibn-run-device .guided-device-image{height:52px}.guided-ibn-current h2{font-size:1.45rem;margin:.25rem 0 .8rem}.guided-zone-target{grid-template-columns:72px minmax(0,1fr);gap:.65rem;padding:.7rem}.guided-zone-target-ant{min-height:52px;font-size:.9rem}.guided-zone-target strong{font-size:1.35rem}.guided-instruction{grid-template-columns:38px minmax(0,1fr);padding:.8rem;gap:.65rem}.guided-instruction-no{width:36px;height:36px;font-size:1rem}.guided-instruction p{font-size:1rem;line-height:1.5}.guided-expected,.guided-actual,.guided-live-hint,.guided-waiting{padding:.75rem .8rem}.guided-manual-actions{grid-template-columns:1fr}.guided-manual-actions button,.guided-manual-actions button:last-child:nth-child(3){grid-column:auto;width:100%;min-height:54px}.guided-step-item{margin:.2rem 0}.guided-step-item strong{font-size:.82rem}.guided-step-item small{font-size:.68rem}}

/* 0.60.5: Gateway-IP -> lokales Webinterface, Provisionierungsexport */
.gateway-ip-link{color:inherit;text-decoration:none;white-space:nowrap}
.gateway-ip-link code{text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.gateway-ip-link::after{content:" \2197";font-size:.85em;opacity:.7}
.gateway-ip-link:hover code,.gateway-ip-link:focus-visible code{color:#ff6300}
.gateway-provisioning-steps{margin:.4rem 0 .6rem 1.2rem;padding:0}
.gateway-provisioning-steps li{margin:.15rem 0}

/* 0.60.6: Reader -> Sensoren */
.sensor-head{align-items:flex-start}
.sensor-auto{display:inline-flex;align-items:center;gap:.35rem;margin-right:.5rem;font-size:.85rem}
.sensor-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin-bottom:1rem}
.sensor-kpis article{display:grid;gap:.25rem;min-height:84px;align-content:center}
.sensor-kpis span{font-size:.78rem;color:var(--muted)}
.sensor-kpis strong{font-size:1.8rem;line-height:1;font-variant-numeric:tabular-nums}
.sensor-tools{display:grid;grid-template-columns:minmax(220px,2fr) minmax(160px,1fr) minmax(140px,1fr);gap:.75rem;margin:.8rem 0}
.sensor-tools label,.sensor-lab-grid label,.sensor-alias-form label,.sensor-retention label{display:grid;gap:.3rem}
.sensor-table td{vertical-align:top}
.sensor-hidden{opacity:.55}
.sensor-chips{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}
.sensor-chip{display:inline-flex;align-items:baseline;gap:.35rem;border:1px solid var(--line);border-radius:999px;padding:.18rem .55rem;background:#fafaf9;font-size:.82rem;white-space:nowrap}
.sensor-chip span{color:var(--muted);font-size:.74rem}
.sensor-chip strong{font-variant-numeric:tabular-nums}
.sensor-detail-row>td{background:#fafaf9}
.sensor-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.4rem}
.sensor-detail-grid h3{margin:.2rem 0 .5rem;font-size:.95rem}
.sensor-detail-wide{grid-column:1/-1}
.sensor-kv td{padding:.3rem .5rem}
.sensor-raw{display:grid;gap:.2rem}
.sensor-raw code,.sensor-hex{word-break:break-all;font-size:.8rem}
.sensor-error{color:var(--danger)}
.sensor-alias-form{display:grid;gap:.55rem;max-width:420px}
.sensor-alias-form label.checkbox{display:flex;align-items:center;gap:.45rem}
.sensor-alias-form label.checkbox input{width:auto}
.sensor-series-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.6rem;margin-bottom:.8rem}
.sensor-series{display:grid;gap:.2rem;border:1px solid var(--line);border-radius:10px;padding:.5rem .6rem;background:var(--surface)}
.sensor-series span{font-size:.78rem;color:var(--muted);font-weight:600}
.sensor-series small{color:var(--muted)}
.sensor-spark{width:100%;height:44px}
.sensor-spark path{fill:none;stroke:var(--brand-orange);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.sensor-history-wrap{max-height:360px;overflow:auto}
.sensor-type-table td{vertical-align:top}
.sensor-type-table select,.sensor-type-table input{max-width:100%}
.st-offline{width:7.5rem}
.st-fields-wrap textarea{width:100%;min-width:260px;margin-top:.4rem;font-family:ui-monospace,Consolas,monospace;font-size:.78rem}
.sensor-type-actions{display:flex;flex-wrap:wrap;gap:.35rem}
.sensor-lab-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(180px,1fr);gap:.75rem;align-items:end}
.sensor-lab-wide{grid-column:1/-1}
.sensor-lab-grid textarea{font-family:ui-monospace,Consolas,monospace;font-size:.85rem;width:100%}
.sensor-lab-result{margin-top:1rem;border-top:1px solid var(--line);padding-top:.8rem}
.sensor-monitor{padding:0;overflow:hidden}
.sensor-monitor>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.1rem}
.sensor-monitor>summary::-webkit-details-marker{display:none}
.sensor-monitor>summary span:first-child{display:grid;gap:.2rem}
.sensor-monitor>summary small{color:var(--muted);font-weight:400}
.sensor-monitor[open]>summary{border-bottom:1px solid var(--line)}
.sensor-monitor-body{padding:1rem 1.1rem 1.2rem}
.sensor-metric-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:.5rem}
.sensor-metric-grid>div{display:grid;gap:.15rem;border:1px solid var(--line);border-radius:10px;padding:.55rem .7rem}
.sensor-metric-grid span{font-size:.74rem;color:var(--muted)}
.sensor-metric-grid strong{font-size:1.15rem;font-variant-numeric:tabular-nums}
.sensor-metric-wide{grid-column:1/-1;margin:.2rem 0}
.sensor-retention{display:flex;flex-wrap:wrap;gap:.6rem;align-items:end;margin:1rem 0 .4rem}
.sensor-retention input{width:9rem}
@media (max-width:900px){
  .sensor-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sensor-tools,.sensor-lab-grid,.sensor-detail-grid{grid-template-columns:1fr}
  .sensor-table thead,.sensor-type-table thead{display:none}
  .sensor-table,.sensor-table tbody,.sensor-table tr,.sensor-table td,.sensor-type-table,.sensor-type-table tbody,.sensor-type-table tr,.sensor-type-table td{display:block;width:100%}
  .sensor-table tr.sensor-row,.sensor-type-table tr{border:1px solid var(--line);border-radius:10px;padding:.45rem .6rem;margin-bottom:.5rem;background:var(--surface)}
  .sensor-table td,.sensor-type-table td{border:0;padding:.3rem 0}
  .sensor-table td[data-label]::before,.sensor-type-table td[data-label]::before{content:attr(data-label);display:block;font-size:.67rem;color:var(--muted);font-weight:700;text-transform:uppercase}
  .sensor-detail-row>td{border-radius:10px;margin-bottom:.6rem}
}
.sensor-detail-actions{display:flex;flex-wrap:wrap;gap:.45rem}
.sensor-bulk{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin:-.2rem 0 .8rem}
.sensor-bulk small{flex:1 1 260px}
.sensor-filter-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:1rem;align-items:start}
#sensor-filter-rev{white-space:nowrap;flex:0 0 auto}
.sensor-filter-editor{display:flex;flex-direction:column;gap:.3rem}
.sensor-filter-editor textarea{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.85rem;min-height:12rem}
.sensor-filter-table td code{word-break:break-all}
.sensor-filter-gw-table td:first-child,.sensor-filter-gw-table th:first-child{width:2rem}
@media (max-width:820px){.sensor-filter-grid{grid-template-columns:1fr}}

/* 0.60.11 ELKA-Schranken im Kunden-Dashboard */
.barrier-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.barrier-card{display:flex;flex-direction:column;gap:10px}
.barrier-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.barrier-head h2{margin:0;overflow-wrap:anywhere}
.barrier-state{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px}
.barrier-state-badge{font-size:1.6rem;font-weight:800;letter-spacing:.02em}
.barrier-open-state{color:#1f8a3b}
.barrier-closed-state{color:#b42318}
.barrier-moving-state{color:#b26a00}
.barrier-unknown-state{color:#6b7280}
.barrier-faults{margin:0;padding-left:18px;color:#b42318}
.barrier-faults:empty{display:none}
.barrier-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.barrier-timed{display:inline-flex;gap:6px;align-items:center}
.barrier-seconds{width:5.5em}
.barrier-unit{color:#6b7280}
.barrier-actions button:disabled,.barrier-seconds:disabled{opacity:.4;cursor:not-allowed;filter:grayscale(1)}
.barrier-feedback{min-height:1.2em}
@media (max-width:600px){.barrier-grid{grid-template-columns:1fr}.barrier-actions button{flex:1 1 45%}}

/* 0.60.12 Zonenpfad-Hinweis nach 5 s Verweilen */
.zone-dwell-hint{position:fixed;z-index:10000;max-width:min(460px,calc(100vw - 16px));display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:baseline;padding:10px 12px;border-radius:10px;background:#111;color:#fff;box-shadow:0 10px 30px rgba(0,0,0,.28);font-size:.9rem;line-height:1.35;pointer-events:none}
.zone-dwell-hint[hidden]{display:none}
.zone-dwell-hint .zone-dwell-label{color:#f5a25d;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.zone-dwell-hint .zone-dwell-path{overflow-wrap:anywhere;font-weight:700}
.zone-dwell-hint .zone-dwell-id{color:#fff;background:rgba(255,255,255,.12);padding:1px 6px;border-radius:6px;justify-self:start}

/* 0.60.18: Schranken-Objekt (freies Zonenlayout, Zonenkarten, Popup) */
.zone-grid:not(.zone-free-layout) .barrier-object { display: none; }
.zone-free-layout .barrier-object { position: absolute; z-index: 4; display: flex; flex-direction: column; align-items: center; gap: .15rem; width: max-content; max-width: 180px; touch-action: none; }
.zone-grid:not(.zone-layout-editing) .barrier-object.barrier-hidden,
.zone-grid:not(.zone-layout-editing) .barrier-object.barrier-unplaced { display: none; }
.zone-layout-editing .barrier-object { cursor: grab; outline: 2px dashed rgba(23, 92, 211, .55); outline-offset: 3px; border-radius: 12px; }
.zone-layout-editing .barrier-object.dragging { cursor: grabbing; }
.zone-layout-editing .barrier-object.barrier-hidden { opacity: .45; }
.zone-layout-editing .barrier-object.barrier-unplaced { outline-color: #d97706; }
.barrier-object-button { --barrier-ring: #9aa4b2; display: inline-flex; align-items: center; justify-content: center; width: var(--barrier-size, 68px); height: var(--barrier-size, 68px); padding: calc(var(--barrier-size, 68px) * .1); border-radius: 50%; border: 3px solid var(--barrier-ring); background: #fff; color: #263445; cursor: pointer; box-shadow: 0 6px 16px rgba(16, 36, 70, .18); }
.barrier-object-button:hover { box-shadow: 0 8px 22px rgba(16, 36, 70, .28); }
.barrier-object-button:focus-visible { outline: 3px solid #175cd3; outline-offset: 2px; }
.barrier-object-label { max-width: 180px; padding: .1rem .45rem; border-radius: 999px; background: rgba(255, 255, 255, .92); font-size: .78rem; font-weight: 700; color: #1d2939; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; box-shadow: 0 2px 6px rgba(16, 36, 70, .12); }
.barrier-layout-controls { display: flex; gap: .2rem; }
.barrier-layout-controls button { min-width: 1.9rem; height: 1.7rem; padding: 0 .35rem; font-size: .8rem; line-height: 1; opacity: .55; }
.barrier-layout-controls button.is-active, .barrier-layout-controls .barrier-size-toggle { opacity: 1; }
.barrier-icon { width: 100%; height: 100%; overflow: visible; }
.barrier-icon .barrier-housing, .barrier-icon .barrier-base { fill: currentColor; }
.barrier-icon .barrier-pivot { fill: #fff; stroke: currentColor; stroke-width: .6; }
.barrier-icon .barrier-arm-body { fill: #fff; stroke: #c62828; stroke-width: .7; }
.barrier-icon .barrier-arm-stripe { fill: #c62828; }
/* Arm um den Drehpunkt (6|11): waagrecht = geschlossen, 90 Grad nach oben = offen */
.barrier-icon .barrier-arm { transform-box: view-box; transform-origin: 6px 11px; transition: transform .9s ease-in-out; }
.barrier-icon-open .barrier-arm { transform: rotate(-90deg); }
.barrier-icon-moving .barrier-arm { transform: rotate(-45deg); animation: barrier-arm-moving 1.4s ease-in-out infinite alternate; }
@keyframes barrier-arm-moving { from { transform: rotate(-15deg); } to { transform: rotate(-75deg); } }
.barrier-state-open { --barrier-ring: #16a34a; }
.barrier-state-closed { --barrier-ring: #dc2626; }
.barrier-state-moving { --barrier-ring: #d97706; }
.barrier-state-unknown { --barrier-ring: #9aa4b2; }
.barrier-object-button.barrier-offline { --barrier-ring: #9aa4b2; color: #98a2b3; background: #f2f4f7; }
.barrier-offline .barrier-arm-body { stroke: #98a2b3; }
.barrier-offline .barrier-arm-stripe { fill: #98a2b3; }
@media (prefers-reduced-motion: reduce) { .barrier-icon .barrier-arm { transition: none; } .barrier-icon-moving .barrier-arm { animation: none; } }
.barrier-popup { width: min(440px, calc(100vw - 2rem)); border: 0; border-radius: 16px; padding: 1.1rem 1.25rem; box-shadow: 0 24px 60px rgba(16, 36, 70, .35); }
.barrier-popup::backdrop { background: rgba(16, 24, 40, .45); }
.barrier-popup-head { display: flex; align-items: center; gap: .8rem; }
.barrier-popup-head > div { flex: 1; min-width: 0; }
.barrier-popup-head small { color: #667085; text-transform: uppercase; letter-spacing: .06em; font-size: .7rem; }
.barrier-popup-head h2 { margin: 0; font-size: 1.2rem; overflow-wrap: anywhere; }
.barrier-popup-icon .barrier-object-button { --barrier-size: 56px; cursor: default; }
.barrier-popup-close { min-width: 2rem; font-size: 1.3rem; line-height: 1; }
.barrier-popup-state { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: .9rem 0 .3rem; }
.barrier-popup-detail { margin: .2rem 0 .8rem; min-height: 1.2em; }
.barrier-popup-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: .5rem; }
.barrier-popup-actions button { min-height: 2.75rem; font-weight: 700; }
.barrier-popup-feedback { margin: .7rem 0 0; min-height: 1.2em; }
.zone-map-barrier-marker { --barrier-size: 46px; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; }
.zone-map-barrier-marker { height: auto; }
.zone-map-barrier-marker .zone-map-marker-label { top: calc(var(--barrier-size, 46px) + 6px); }
.zone-map-barrier-section { margin-top: 1rem; }
/* 0.60.19: Namen aus dem AXIS Audio Manager im Admin-Menue */
.axis-audio-names-head{margin-top:1rem;align-items:center;gap:.6rem;flex-wrap:wrap}.axis-audio-names-head h3{margin:0}.axis-audio-names-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.axis-audio-names-actions a.button{display:inline-flex;align-items:center;min-height:36px;padding:.35rem .8rem;border:1px solid var(--line);border-radius:.55rem;text-decoration:none;font-weight:700}.axis-audio-name-hint{margin-top:.4rem}

/* v0.61.1: ZOKA-Dashboard-Login mit Baustellenbild links (Text bleibt im Bild) */
.zoka-login-page .admin-login-brand { background:
  linear-gradient(180deg, rgba(12,12,12,.78) 0%, rgba(12,12,12,.42) 38%, rgba(12,12,12,.58) 64%, rgba(12,12,12,.9) 100%),
  linear-gradient(90deg, rgba(12,12,12,.55) 0%, rgba(12,12,12,.12) 70%),
  radial-gradient(circle at 12% 14%, rgba(255,99,0,.28), transparent 32%),
  url("/static/zoka-login-hero.webp") 28% center / cover no-repeat, #151515; }
.zoka-login-page .admin-login-brand::before { display:none; }
.zoka-login-page .admin-login-brand h1,
.zoka-login-page .admin-login-intro { text-shadow:0 2px 18px rgba(0,0,0,.55); }
.zoka-login-page .admin-login-intro { color:#ece9e6; }
.zoka-login-page .admin-login-feature-grid > div { background:rgba(15,15,15,.52); border-color:rgba(255,255,255,.16); }
.zoka-login-page .admin-login-feature-grid small { color:#d6d3d1; }
.zoka-login-page .admin-login-brand-footer { color:#c7c2be; }
@media (max-width: 760px) {
  .zoka-login-page .admin-login-form-panel { background:
    linear-gradient(180deg, rgba(12,12,12,.55), rgba(12,12,12,.78)),
    url("/static/zoka-login-hero.webp") 30% center / cover no-repeat, #151515; }
}

/* 0.61.11: Geführte IBN jederzeit abbrechen */
.guided-run-top-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}
.guided-cancel-run.danger,.guided-ibn-history-card .danger,#guided-ibn-history .danger{border-color:#ef9d9d;background:#fff5f5;color:#a7192f;font-weight:800}
.guided-cancel-run.danger{min-height:38px;padding:.4rem .75rem;font-size:.82rem}
.guided-cancel-footer{display:flex;justify-content:center;margin-top:1.4rem;padding-top:.9rem;border-top:1px solid #ececea}
.guided-cancel-link{background:transparent;border:0;color:#a7192f;font-weight:800;text-decoration:underline;min-height:44px;padding:.4rem .8rem;cursor:pointer}
.guided-stuck-actions button:only-child{grid-column:1/-1}
.guided-stuck-actions .danger{border-color:#ef9d9d;background:#fff5f5;color:#a7192f}
.guided-complete.is-cancelled .guided-complete-icon{background:#fff1f3;color:#a20d2a}
@media(max-width:560px){.guided-run-top{flex-wrap:wrap}.guided-run-top-actions{justify-content:flex-start}}
.guided-history-actions{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.guided-history-actions button{min-height:36px;padding:.38rem .6rem;font-size:.8rem}

/* 0.61.12 Menue-Pruefung: Dropdown-Titel im Kopfmenue gleich gross wie die uebrigen Menuepunkte (Admin + Dashboard) */
.main-nav .nav-menu > summary{font-size:.88rem}
@media(max-width:800px){.main-nav .nav-menu > summary{font-size:.82rem}}
/* 0.61.12: Gruppen-Auswahl im Personen-/Fahrzeugdialog wieder einzeilig (die allgemeine label-Regel stellte Checkbox und Text untereinander) */
.group-picker-item{flex-direction:row}
.group-picker-item input{min-height:0;height:auto}
/* 0.61.12: Transponder Live - lange Texte umbrechen statt seitlich ueberlaufen (Hinweis bei nicht zugeordneten TAGs auch am Tablet) */
.live-unassigned-hint{white-space:normal}
@media(max-width:700px){.transponder-live-table td,.transponder-live-table td *{white-space:normal}}
/* 0.61.12: Code-Beispiele (Lizenz, REST API) scrollen im eigenen Kasten statt die ganze Seite zu verbreitern */
main pre{max-width:100%;overflow-x:auto}
main code{overflow-wrap:anywhere}
/* 0.61.12: Fehlermeldung direkt im offenen Dialog (Personen, Fahrzeuge, Ausruestung ...) */
.dialog-notice:empty{display:none}
.dialog-notice .notice{margin:0 0 .8rem}

/* 0.61.13: Gateway-Details - Texte umbrechen (die allgemeine td-Regel nowrap liess sie in die
   Nachbarspalte laufen) und Switch-Nachbarn / DHCP-Option 138 als eigene Zeile unter den Spalten */
.gateway-row-details{white-space:normal;overflow-wrap:anywhere}
.gateway-row-details .gateway-detail-network{grid-column:1/-1;border-top:1px solid var(--line);padding-top:.6rem}
.gw-neighbors{display:flex;flex-wrap:wrap;gap:.5rem 2rem;margin:.35rem 0 .5rem}
.gw-neighbor{min-width:260px;max-width:520px}

/* 0.61.15: Reader -> TAG-Konfiguration */
.tc-slot-table td{vertical-align:top}
.tc-slot-table input,.tc-slot-table select{width:100%;min-width:0}
.tc-slot-table .tc-data{display:grid;gap:.35rem}
.tc-slot-table .tc-data[hidden]{display:none}
.tc-slot-table .tc-data-IBEACON{grid-template-columns:2fr 1fr 1fr 1fr}
.tc-slot-table .tc-data-UID{grid-template-columns:5fr 3fr}
.tc-profile-grid{margin-top:.75rem}
.tc-hint{margin:.5rem 0 0}
.tc-scope{display:flex;flex-wrap:wrap;gap:1.25rem;margin-bottom:.5rem}
.tc-target-form textarea{width:100%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.tc-table .inline-actions{flex-wrap:wrap;gap:.35rem}
.tc-rb summary{cursor:pointer;font-size:.8rem;color:var(--muted)}
.tc-rb pre{margin:.3rem 0 0;font-size:.75rem}
.tc-kpis small{font-size:.75rem}
@media (max-width:760px){.tc-slot-table .tc-data-IBEACON,.tc-slot-table .tc-data-UID{grid-template-columns:1fr}}
/* 0.61.16 TAG-Konfiguration: Seitensperre, gesperrter Slot 3, Gateway-/Antennenauswahl */
.tc-lock{max-width:30rem}
.tc-lock[hidden],#tc-content[hidden]{display:none}
.tc-unlock-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem}
.tc-unlock-form label{flex:1 1 14rem}
.tc-unlock-form input{width:100%}
.tc-fieldset{border:0;margin:0;padding:0;min-width:0}
.tc-slot-locked{background:var(--surface-2,rgba(127,127,127,.06))}
.tc-slot-locked select:disabled,.tc-slot-locked input:disabled{opacity:.75}
.tc-routing{border:1px solid var(--line,rgba(127,127,127,.25));border-radius:8px;margin:.9rem 0 0;padding:.6rem .85rem .8rem;min-width:0}
.tc-routing legend{font-weight:600;padding:0 .35rem}
.tc-routing-table td:not(:first-child),.tc-routing-table th:not(:first-child){text-align:center;width:5rem}
.tc-routing-table input[type=checkbox]{width:auto}
.tc-field{display:grid;gap:.15rem;min-width:0}
.tc-field>span{font-size:.72rem;color:var(--muted);font-weight:600}
.tc-slot-table .tc-data-IBEACON,.tc-slot-table .tc-data-UID{align-items:end}
/* 0.61.51 TAG-Konfiguration: Trigger je Slot, Transponder ausschalten */
.tc-trg-detail{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.35rem;margin-top:.35rem;min-width:13rem}
.tc-trg-detail[hidden]{display:none}
.tc-trg-always-wrap{grid-column:1/-1;font-size:.8rem}
.tc-trg-always-wrap input{width:auto}
.tc-trigger-warning ul,.tc-poweroff-warning ul{margin:.4rem 0 0;padding-left:1.2rem;display:grid;gap:.25rem}
.tc-trigger-risks:empty{display:none}
.tc-trigger-risks{color:#b42318}
.tc-poweroff-form{display:grid;gap:.75rem}
.tc-poweroff-form textarea{width:100%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.tc-poweroff-form label.checkbox{align-items:flex-start}
.tc-poweroff-form label.checkbox input{width:auto;margin-top:.2rem}
.tc-poweroff-confirm{display:grid;gap:.25rem;max-width:22rem}
.tc-poweroff-confirm input{text-transform:none;letter-spacing:.04em}
.tc-poweroff .danger-action[type=submit]{min-height:42px;padding:0 16px;border-radius:9px;font-weight:900}
.tc-poweroff .danger-action[type=submit]:disabled{opacity:.45;cursor:not-allowed}
@media (max-width:760px){.tc-trg-detail{grid-template-columns:1fr;min-width:0}}
/* 0.61.17 Gateway-Provisionierung */
.gp-static{border:1px solid var(--line);border-radius:8px;padding:.6rem .85rem .8rem;min-width:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem}
.gp-static[hidden]{display:none}
.gp-static legend{font-weight:600;padding:0 .35rem}
.gp-table td{vertical-align:top}
.gp-steps{margin:.25rem 0 0;padding-left:1.2rem;display:grid;gap:.4rem}
#gp-edit[hidden]{display:none}
/* 0.61.40 Navigation: Unterseiten immer sichtbar (kein Hover-Flyout), aktive Seite, Tastaturfokus */
.nav-flyout-panel,
.nav-flyout:hover > .nav-flyout-panel,
.nav-flyout:focus-within > .nav-flyout-panel { position: static; display: block; min-width: 0; margin: 0 0 .15rem .7rem; padding: 0 0 0 .35rem; border: 0; border-left: 2px solid #ffd6bd; border-radius: 0; box-shadow: none; opacity: 1; visibility: visible; pointer-events: auto; transform: none; transition: none; }
.nav-flyout-arrow { display: none; }
.nav-flyout-panel a { font-size: .84rem; font-weight: 640; }
.main-nav a[aria-current="page"] { background: #fff1e8; color: #aa3f00; box-shadow: inset 0 -2px 0 var(--brand-orange); }
.main-nav .nav-submenu a[aria-current="page"] { box-shadow: inset 2px 0 0 var(--brand-orange); }
.main-nav details.nav-menu-current > summary { color: #aa3f00; box-shadow: inset 0 -2px 0 var(--brand-orange); }
a:focus-visible, button:focus-visible, summary:focus-visible, [tabindex]:focus-visible { outline: 3px solid rgba(255,99,0,.55); outline-offset: 2px; }
/* 0.61.40 Live-Stand (Zonenuebersicht, Zonendetail, Karte, Emergency) und Texteingabe-Dialog */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.live-freshness { display: inline-flex; align-items: center; gap: .4rem; padding: .22rem .6rem; border-radius: 999px; font-size: .78rem; font-weight: 700; background: #ecfdf3; color: #166534; border: 1px solid #abefc6; white-space: nowrap; }
.live-freshness::before { content: ""; width: .5rem; height: .5rem; border-radius: 50%; background: currentColor; }
.live-freshness[hidden] { display: none; }
.live-freshness.is-stale { background: #fef3f2; color: #b42318; border-color: #fecdca; }
.zoka-ask-dialog { width: min(440px, calc(100vw - 2rem)); padding: 0; border: 1px solid var(--line); border-radius: .8rem; }
.zoka-ask-dialog::backdrop { background: rgba(17,17,17,.45); }
.zoka-ask-form { display: grid; gap: .8rem; padding: 1.1rem 1.2rem; margin: 0; }
.zoka-ask-form h2 { margin: 0; font-size: 1.1rem; }
.zoka-ask-form label { display: grid; gap: .35rem; font-weight: 700; }
.zoka-ask-form textarea { font-family: inherit; }
.zoka-ask-actions { display: flex; justify-content: flex-end; gap: .5rem; }
/* 0.61.40 Stufe 2: Einstellungen (Mehr erfahren, Speicherleiste), Benutzerrechte, Bestaetigungsdialog, Gefahrenbereich */
.settings-more { margin-top: .35rem; }
.settings-more > summary { cursor: pointer; font-size: .82rem; font-weight: 700; color: #aa3f00; width: max-content; }
.settings-more[open] > summary { margin-bottom: .35rem; }
.settings-savebar { position: sticky; bottom: 0; z-index: 20; display: flex; align-items: center; justify-content: flex-end; gap: .8rem; margin-top: 1rem; padding: .7rem 1rem; background: rgba(255,255,255,.96); border: 1px solid var(--line); border-radius: .7rem; box-shadow: 0 -6px 18px rgba(0,0,0,.06); }
.settings-dirty { font-size: .85rem; font-weight: 700; color: #92400e; background: #fffaeb; border: 1px solid #fedf89; padding: .25rem .6rem; border-radius: 999px; }
.settings-dirty[hidden] { display: none; }
.perm-presets, .perm-group, .perm-enabled { grid-column: 1 / -1; }
.perm-presets { display: grid; gap: .4rem; }
.perm-preset-buttons { display: flex; flex-wrap: wrap; gap: .4rem; }
.perm-preset-buttons button { padding: .45rem .7rem; font-size: .85rem; }
.perm-group { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: .45rem 1rem; margin: 0; padding: .7rem .9rem .85rem; border: 1px solid var(--line); border-radius: .7rem; min-width: 0; }
.perm-group legend { padding: 0 .35rem; font-weight: 800; font-size: .9rem; }
.perm-chips { display: flex; flex-wrap: wrap; gap: .25rem; max-width: 46rem; }
.perm-chip { display: inline-block; padding: .12rem .45rem; border-radius: 999px; font-size: .75rem; font-weight: 700; background: #f5f5f4; color: #44403c; border: 1px solid var(--line); white-space: nowrap; }
.perm-chip-manage { background: #fff1e8; color: #9a3412; border-color: #ffd6bd; }
.zoka-confirm-dialog { width: min(460px, calc(100vw - 2rem)); padding: 0; border: 1px solid var(--line); border-radius: .8rem; }
.zoka-confirm-dialog::backdrop { background: rgba(17,17,17,.45); }
.zoka-confirm-dialog.is-danger { border-top: 4px solid #b42318; }
.zoka-confirm-text { margin: 0; white-space: pre-line; line-height: 1.5; font-weight: 600; }
.zoka-confirm-dialog button.danger { background: #b42318; color: #fff; border-color: #b42318; }
.zoka-confirm-dialog button.danger:hover { background: #912018; }
input.input-ok { border-color: #16794b; }
input.input-mismatch { border-color: #b42318; background: #fffafa; }
.danger-link { color: #b42318; font-weight: 800; border: 1px solid #fecdca; border-radius: .5rem; padding: .55rem .85rem; text-decoration: none; background: #fffafa; white-space: nowrap; }
.danger-link:hover { background: #fef3f2; }
/* 0.61.40 Stufe 3: neue Menuegruppen (Zwischenueberschriften, Trenner links/rechts, Notfall, Gefahr) */
.nav-subhead { display: block; margin: .45rem .58rem .15rem; font-size: .72rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.nav-submenu > .nav-subhead:first-child { margin-top: .2rem; }
.nav-spacer { width: 1px; height: 1.5rem; margin: 0 .3rem; background: var(--line-strong); }
.main-nav a.nav-danger { color: #b42318; }
.main-nav a.nav-danger:hover { background: #fef3f2; color: #912018; }
.main-nav a.nav-emergency-link { background: #b42318; color: #fff; }
.main-nav a.nav-emergency-link:hover, .main-nav a.nav-emergency-link[aria-current="page"] { background: #912018; color: #fff; box-shadow: none; }
@media (max-width: 800px) { .nav-spacer { display: none; } }
/* 0.61.41 Zonenuebersicht als gruppierte Tabelle (Entwurf D) */
#dashboard-overview-view .dashboard-focus-total { align-items: flex-start; justify-content: flex-start; gap: .45rem; padding: 1rem 1.1rem; min-height: 0; }
#dashboard-overview-view .dashboard-focus-total > small { order: -1; margin-top: 0; font-size: .75rem; color: #57534e; }
#dashboard-overview-view .dashboard-focus-total > span { font-variant-numeric: tabular-nums; }
.dashboard-focus-bar { display: flex; width: 100%; height: 10px; border-radius: 5px; overflow: hidden; background: var(--line); margin-top: .35rem; }
.focus-bar-person { background: #262626; }
.focus-bar-vehicle { background: var(--brand-orange); }
.focus-bar-equipment { background: #a8a29e; }
#dashboard-overview-view .dashboard-focus-breakdown > div { text-align: left; padding: .6rem .7rem; }
#dashboard-overview-view .dashboard-focus-breakdown small { display: flex; align-items: center; gap: .35rem; margin: 0 0 .25rem; font-size: .78rem; color: #44403c; }
#dashboard-overview-view .dashboard-focus-breakdown strong { font-variant-numeric: tabular-nums; }
#dashboard-overview-view .dashboard-focus-breakdown .is-zero strong { color: #78716c; }
.focus-dot { display: inline-block; width: .55rem; height: .55rem; border-radius: 2px; }
.dashboard-focus-unassigned { display: flex; align-items: center; justify-content: space-between; gap: .8rem; margin-top: .75rem; padding: .75rem .9rem; border: 1px dashed var(--line-strong); border-radius: .7rem; }
.dashboard-focus-unassigned strong { display: block; font-size: .88rem; }
.dashboard-focus-unassigned small { display: block; font-size: .75rem; color: #57534e; }
.dashboard-focus-unassigned > span { font-size: 1.6rem; font-weight: 800; color: #57534e; font-variant-numeric: tabular-nums; }
.dashboard-zone-table-head { align-items: center; flex-wrap: wrap; }
.dashboard-zone-table-tools { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.dashboard-zone-search input { min-height: 38px; width: 220px; padding: .45rem .7rem; }
.dashboard-zone-hide-empty { flex-direction: row; align-items: center; gap: .4rem; font-size: .85rem; font-weight: 600; white-space: nowrap; }
.dashboard-zone-table { font-variant-numeric: tabular-nums; }
.dashboard-zone-table th.num, .dashboard-zone-table td.num { text-align: right; }
.dashboard-zone-sort { border: 0; background: transparent; padding: 0; font: inherit; font-weight: inherit; color: inherit; text-transform: inherit; letter-spacing: inherit; cursor: pointer; }
.dashboard-zone-sort::after { content: " ↕"; color: #a8a29e; }
.dashboard-zone-sort.is-sorted[data-dir="desc"]::after { content: " ↓"; color: var(--brand-orange); }
.dashboard-zone-sort.is-sorted[data-dir="asc"]::after { content: " ↑"; color: var(--brand-orange); }
.dashboard-zone-table th.dashboard-zone-unassigned-col, .dashboard-zone-table td.unassigned-cell { color: #57534e; border-left: 1px solid var(--line); }
.dashboard-zone-table .zone-group-row th, .dashboard-zone-table .zone-group-row td { background: #f5f5f4; font-size: .88rem; }
.dashboard-zone-table .zone-group-row th { text-align: left; font-weight: 600; text-transform: none; letter-spacing: 0; color: var(--ink); }
.dashboard-zone-table .zone-group-row small { color: #57534e; font-weight: 500; }
.zone-type-pill { font-size: .7rem; font-weight: 800; }
.zone-type-areal { background: #fff1e8; color: #9a3412; border-color: #ffd6bd; }
.dashboard-zone-table .zone-row .zone-name-cell { padding-left: 2rem; }
.dashboard-zone-table td.is-zero { color: #a8a29e; }
.zone-total { display: inline-flex; align-items: center; justify-content: flex-end; gap: .6rem; }
.zone-total-bar { width: 72px; height: 6px; border-radius: 3px; background: #f0efed; overflow: hidden; }
.zone-total-bar > span { display: block; height: 100%; background: var(--brand-orange); }
.dashboard-zone-table tfoot th, .dashboard-zone-table tfoot td { background: var(--brand-black); color: #fff; font-weight: 800; position: sticky; bottom: 0; }
.dashboard-zone-table tfoot th { text-align: left; text-transform: none; letter-spacing: 0; }
.dashboard-zone-table tfoot td.unassigned-cell { color: #d6d3d1; border-left-color: #3f3f46; }
.dashboard-zone-table tfoot td.is-zero { color: #a8a29e; }
@media (max-width: 760px) { .zone-total-bar { display: none; } .dashboard-zone-search input { width: 100%; } .dashboard-zone-table-tools { width: 100%; } }
.dashboard-zone-table tbody th { position: static; }
.dashboard-zone-table tfoot th { top: auto; }
.dashboard-zone-table tbody td, .dashboard-zone-table tbody th, .dashboard-zone-table tfoot th, .dashboard-zone-table tfoot td { vertical-align: middle; }
/* 0.61.42 Admin Geraete > Gateways (Entwurf E): Kennzahlen als Filter, Gruppen nach Zustand, Aktionsmenue */
.gateway-page-head { align-items: flex-start; }
.gateway-page-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.gateway-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .75rem; margin-bottom: 1rem; }
.gateway-kpi { display: flex; flex-direction: column; align-items: flex-start; gap: .1rem; padding: .75rem 1rem; border: 1px solid var(--line); border-radius: .75rem; background: #fff; text-align: left; font: inherit; color: var(--ink); }
.gateway-kpi > span { font-size: .8rem; font-weight: 700; color: #57534e; }
.gateway-kpi > strong { font-size: 1.65rem; font-weight: 800; line-height: 1.1; font-variant-numeric: tabular-nums; }
.gateway-kpi > small { font-size: .75rem; color: #57534e; }
button.gateway-kpi:hover { border-color: var(--line-strong); background: #fafaf9; }
button.gateway-kpi[aria-pressed="true"] { border-color: var(--brand-black); box-shadow: inset 0 -3px 0 var(--brand-orange); }
.gateway-kpi-ok > strong { color: #166534; }
.gateway-kpi-bad { border-color: #fecdca; background: #fffafa; }
.gateway-kpi-bad > strong { color: #b42318; }
.gateway-kpi-warn { border-color: #fedf89; background: #fffdf5; }
.gateway-kpi-warn > strong { color: #92400e; }
.gateway-kpi-static { cursor: default; }
.gateway-overview-table td.num, .gateway-overview-table th.num { text-align: right; font-variant-numeric: tabular-nums; }
.gateway-overview-table tbody td { vertical-align: middle; }
.gateway-overview-table tbody th { position: static; }
.gateway-overview-table .gateway-group-row th { text-align: left; text-transform: none; letter-spacing: 0; font-size: .88rem; color: var(--ink); padding: .5rem .7rem; }
.gateway-overview-table .gateway-group-row small { color: #57534e; font-weight: 500; }
.gateway-group-dot { display: inline-block; width: .6rem; height: .6rem; border-radius: 50%; margin-right: .5rem; background: #a8a29e; vertical-align: middle; }
.gateway-group-offline th { background: #fef3f2; } .gateway-group-offline .gateway-group-dot { background: #b42318; }
.gateway-group-check th { background: #fffaeb; } .gateway-group-check .gateway-group-dot { background: #b54708; }
.gateway-group-online th { background: #f5f5f4; } .gateway-group-online .gateway-group-dot { background: #16a34a; }
.gateway-group-ha th, .gateway-group-disabled th { background: #fafaf9; }
.gw-ants { display: flex; gap: .3rem; flex-wrap: wrap; }
.gw-ant { display: inline-flex; align-items: center; justify-content: center; min-width: 2rem; height: 1.5rem; padding: 0 .3rem; border-radius: .35rem; font-size: .72rem; font-weight: 800; border: 1px solid var(--line); background: #f5f5f4; color: #78716c; }
.gw-ant-ok { background: #ecfdf3; color: #166534; border-color: #abefc6; }
.gw-ant-bad { background: #fef3f2; color: #b42318; border-color: #fecdca; }
.gw-queue-busy { font-weight: 800; }
.gw-age-bad { color: #b42318; font-weight: 700; }
.gw-age-warn { color: #92400e; font-weight: 700; }
.gateway-compact-actions { display: flex; gap: .4rem; justify-content: flex-end; align-items: center; flex-wrap: nowrap; }
.gateway-actions-col { text-align: right; }
.gw-actions-menu { position: relative; }
.gw-actions-menu > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; width: 2.4rem; height: 2.2rem; border: 1px solid var(--line-strong); border-radius: .5rem; background: #fff; font-weight: 800; font-size: 1.1rem; line-height: 1; }
.gw-actions-menu > summary::-webkit-details-marker { display: none; }
.gw-actions-menu[open] > summary { border-color: var(--brand-black); }
.gw-actions-popover { position: fixed; z-index: 200; min-width: 240px; display: flex; flex-direction: column; padding: .35rem; background: #fff; border: 1px solid var(--line); border-radius: .7rem; box-shadow: 0 14px 34px rgba(0,0,0,.16); }
.gw-actions-popover button { text-align: left; border: 0; background: transparent; padding: .55rem .65rem; border-radius: .45rem; font-weight: 600; white-space: nowrap; }
.gw-actions-popover button:hover, .gw-actions-popover button:focus-visible { background: #f5f5f4; }
.gw-actions-popover button.danger-action { color: #b42318; background: transparent; border: 0; }
.gw-actions-popover button.danger-action:hover { background: #fef3f2; }
.gw-actions-popover hr { width: 100%; border: 0; border-top: 1px solid var(--line); margin: .3rem 0; }
.gateway-security-note { margin: .75rem 0 0; }
.gateway-setup-card h2 { margin-top: 0; }
.gateway-setup-card details + details { margin-top: .75rem; }
@media (max-width: 900px) { .gateway-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* 0.61.43 Weitere Seiten im Stil D/E: Transponder live nach Zone, kompakte Stammdaten, Zeitraum/Filter-Chips, Antennen nach Zone */
.transponder-live-table tbody th { position: static; }
.live-zone-group td, .live-zone-group th { background: #f5f5f4; font-size: .88rem; text-align: left; text-transform: none; letter-spacing: 0; color: var(--ink); vertical-align: middle; }
.live-zone-group th small { color: #57534e; font-weight: 500; margin-left: .35rem; }
.live-zone-counts { float: right; font-weight: 600; color: #44403c; font-size: .82rem; }
.live-zone-none td, .live-zone-none th { background: #fafaf9; color: #57534e; }
.live-object-row td { vertical-align: middle; }
.live-type-vehicle { background: #fff1e8; color: #9a3412; border-color: #ffd6bd; }
.live-type-equipment { background: #f5f5f4; color: #44403c; }
.live-type-unassigned { background: #fafaf9; color: #78716c; }
.entity-filter-row { display: flex; flex-wrap: wrap; gap: .5rem; width: 100%; margin-top: .5rem; }
.entity-filter-row select { min-height: 38px; width: auto; min-width: 11rem; }
.entity-filter-row select[hidden] { display: none; }
.entity-expand-cell { width: 2.4rem; }
.entity-expand { width: 2rem; height: 2rem; padding: 0; border-radius: .45rem; font-size: .9rem; line-height: 1; transition: transform .15s ease; }
.entity-row.is-expanded .entity-expand { transform: rotate(90deg); }
.entity-main-cell small { color: #57534e; }
.entity-type-pill, .entity-plate { font-size: .72rem; vertical-align: middle; }
.entity-detail-row td { background: #fafaf9; }
.entity-detail-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: .5rem 1.2rem; margin: .2rem 0; }
.entity-detail-list dt { font-size: .75rem; font-weight: 700; color: #57534e; }
.entity-detail-list dd { margin: .1rem 0 0; white-space: normal; overflow-wrap: anywhere; }
.period-presets { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin: .4rem 0 .6rem; }
.period-presets > span { font-size: .82rem; font-weight: 700; color: #44403c; margin-right: .2rem; }
.period-presets button { padding: .4rem .7rem; font-size: .85rem; border-radius: 999px; }
.period-presets button[aria-pressed="true"] { background: var(--brand-black); color: #fff; border-color: var(--brand-black); }
.filter-active-count { color: #aa3f00; font-weight: 700; }
.filter-chips { display: flex; flex-wrap: wrap; gap: .4rem; margin: .5rem 0 0; }
.filter-chips[hidden] { display: none; }
.filter-chip { display: inline-flex; align-items: center; gap: .35rem; padding: .2rem .25rem .2rem .6rem; border-radius: 999px; background: #fff1e8; border: 1px solid #ffd6bd; color: #7c2d12; font-size: .82rem; }
.filter-chip button { border: 0; background: transparent; padding: 0 .35rem; font-size: 1rem; line-height: 1; color: inherit; }
.view-switch { display: inline-flex; gap: .25rem; }
.assignment-zone-table tbody th { position: static; }
.assignment-zone-table td { vertical-align: middle; }
.assignment-zone-table td.num, .assignment-zone-table th.num { text-align: right; width: 6rem; }
.assignment-area-row th { background: #f5f5f4; text-align: left; text-transform: none; letter-spacing: 0; font-size: .88rem; color: var(--ink); }
.assignment-area-row th small { color: #57534e; font-weight: 500; }
.assignment-zone-name { padding-left: 2rem !important; }
.assignment-zone-row .assignment-ant-chip { margin: .15rem .3rem .15rem 0; }
.assignment-zone-row .assignment-ant-chip code { margin-right: .3rem; }
.assignment-zone-row.is-empty td.num { color: #b42318; font-weight: 800; }
.assignment-zone-missing { color: #b42318; font-weight: 600; font-size: .88rem; }
.assignment-free-row th { background: #fffaeb; }
.assignment-free-list { display: flex; flex-wrap: wrap; gap: .4rem; }
.assignment-free-chip { display: inline-flex; align-items: center; gap: .3rem; padding: .35rem .6rem; border-radius: .5rem; font-size: .85rem; }
.assignment-free-chip span { color: #aa3f00; font-weight: 700; }
/* 0.61.44: Notfall nach Entwurf F */
.emergency-alert-banner { display: flex; justify-content: space-between; align-items: center; gap: 1.2rem; flex-wrap: wrap; background: #b42318; padding: 1rem 1.4rem; border-radius: 14px; box-shadow: 0 8px 24px rgba(180,35,24,.22); }
.emergency-banner-kicker { display: inline-flex; align-items: center; font-weight: 800; letter-spacing: .12em; font-size: .75rem; text-transform: uppercase; }
.emergency-alert-banner h2 { font-size: clamp(1.5rem, 2.6vw, 2.3rem); margin: .2rem 0; color: #fff; }
.emergency-banner-meta { display: flex; flex-wrap: wrap; gap: .3rem 1.4rem; font-size: .98rem; margin: 0; }
.emergency-banner-meta strong { font-variant-numeric: tabular-nums; }
.emergency-banner-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.emergency-banner-actions button { background: #fff; color: #7a1a12; border-color: #fff; font-weight: 700; min-height: 44px; }
.emergency-banner-actions button.danger-action { background: #7a1a12; color: #fff; border-color: #fff; }
.emergency-progress { margin: 14px 0; }
.emergency-progress-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .3rem 1rem; margin-bottom: .5rem; }
.emergency-progress-head strong { font-size: 1.35rem; }
.emergency-progress-bar { display: flex; height: 18px; border-radius: 999px; overflow: hidden; background: #e7e5e4; }
.emergency-progress-bar span { display: block; height: 100%; }
.emergency-progress-bar .safe, .emergency-progress-legend .safe::before { background: #2e7d32; }
.emergency-progress-bar .en_route, .emergency-progress-legend .en_route::before { background: #e0a100; }
.emergency-progress-bar .not_evacuated, .emergency-progress-legend .not_evacuated::before { background: #c62828; }
.emergency-progress-bar .unknown, .emergency-progress-legend .unknown::before { background: #57534e; }
.emergency-progress-legend { display: flex; flex-wrap: wrap; gap: .3rem 1rem; margin-top: .45rem; font-size: .8rem; color: #57534e; }
.emergency-progress-legend span::before { content: ''; display: inline-block; width: .7rem; height: .7rem; border-radius: 3px; margin-right: .35rem; vertical-align: -1px; }
.emergency-metric-grid { grid-template-columns: repeat(4, minmax(140px, 1fr)) minmax(110px, .6fr); gap: 12px; margin: 0 0 14px; }
.emergency-metric { display: flex; flex-direction: column; align-items: flex-start; text-align: left; gap: .1rem; padding: 14px 18px; border-radius: 14px; border: 2px solid var(--border, #e7e5e4); background: #fff; color: var(--ink); cursor: pointer; font: inherit; min-height: 44px; }
.emergency-metric-grid .emergency-metric > span { grid-row: auto; font-size: .82rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: #44403c; }
.emergency-metric strong { font-size: clamp(1.8rem, 3vw, 2.6rem); line-height: 1.05; font-variant-numeric: tabular-nums; }
.emergency-metric small { font-weight: 500; text-transform: none; letter-spacing: 0; color: #57534e; font-size: .8rem; }
.emergency-metric.unknown strong { color: #44403c; }
.emergency-metric.unknown.has-missing { border-color: #b42318; background: #fef3f2; }
.emergency-metric.unknown.has-missing strong { color: #b42318; }
.emergency-metric.open strong { color: #c62828; }
.emergency-metric.route strong { color: #a15c00; }
.emergency-metric.safe strong { color: #2e7d32; }
.emergency-metric:hover { border-color: #a8a29e; }
.emergency-metric.active, .emergency-metric[aria-pressed="true"] { border-color: var(--brand-black, #111); box-shadow: inset 0 0 0 1px var(--brand-black, #111); }
.emergency-metric:focus-visible { outline: 3px solid #f97316; outline-offset: 2px; }
.emergency-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 340px); gap: 14px; align-items: start; }
.emergency-layout .emergency-roster-card { margin-top: 0; }
.emergency-side { display: grid; gap: 14px; }
.emergency-side .card { margin: 0; }
.emergency-side h3 { margin: 0 0 .6rem; }
.emergency-search input { min-width: 240px; min-height: 42px; }
.emergency-roster-table td { vertical-align: top; }
.emergency-roster-table td:first-child strong { display: block; }
.emergency-person-meta { display: block; color: #57534e; }
.emergency-phone { display: inline-block; margin-top: .2rem; font-weight: 700; text-decoration: none; padding: .15rem 0; }
.emergency-stale { color: #b42318; font-weight: 700; }
.emergency-group-row th { background: #f5f5f4; text-align: left; text-transform: none; letter-spacing: 0; font-size: .9rem; color: var(--ink); }
.emergency-group-row.unknown th { background: #fef3f2; }
.emergency-group-row th small { color: #57534e; font-weight: 700; margin-left: .3rem; }
.emergency-group-toggle { float: right; padding: .2rem .6rem; font-size: .8rem; }
.emergency-person-row.unknown td:first-child { box-shadow: inset 4px 0 0 #b42318; }
.emergency-person-row.not_evacuated td:first-child { box-shadow: inset 4px 0 0 #c62828; }
.emergency-person-row.en_route td:first-child { box-shadow: inset 4px 0 0 #e0a100; }
.emergency-person-row.safe td:first-child { box-shadow: inset 4px 0 0 #2e7d32; }
.emergency-status.unknown { color: #b42318; }
.emergency-status-switch { display: inline-flex; flex-wrap: wrap; border: 1px solid #d6d3d1; border-radius: 10px; overflow: hidden; background: #fff; }
.emergency-status-switch button { border: 0; border-right: 1px solid #e7e5e4; border-radius: 0; background: transparent; padding: .45rem .65rem; font-size: .8rem; min-height: 36px; color: #292524; }
.emergency-status-switch button:last-child { border-right: 0; }
.emergency-status-switch button:hover { background: #f5f5f4; }
.emergency-status-switch button.is-current { font-weight: 800; color: #fff; }
.emergency-status-switch .sw-safe.is-current { background: #2e7d32; }
.emergency-status-switch .sw-en_route.is-current { background: #a15c00; }
.emergency-status-switch .sw-not_evacuated.is-current { background: #c62828; }
.emergency-status-switch .sw-unknown.is-current { background: #44403c; }
.emergency-status-switch .sw-auto.is-current { background: #e7e5e4; color: #292524; }
.emergency-status-switch button:focus-visible { outline: 3px solid #f97316; outline-offset: -3px; }
.emergency-source { display: block; margin-top: .3rem; color: #57534e; }
.emergency-source.manual { color: #7c2d12; font-weight: 700; }
.emergency-note { display: block; color: #44403c; font-style: italic; }
.emergency-muster-live { display: grid; gap: .5rem; }
.emergency-muster-row { display: grid; grid-template-columns: 1fr auto; gap: .2rem .6rem; align-items: center; font-size: .9rem; }
.emergency-muster-row strong { font-size: 1.1rem; font-variant-numeric: tabular-nums; }
.emergency-muster-row i { grid-column: 1 / -1; display: block; height: 6px; border-radius: 999px; background: #2e7d32; min-width: 4px; }
.emergency-side .emergency-category-row strong { font-size: 1.4rem; }
.emergency-side .emergency-event-log { max-height: 320px; margin-top: .5rem; }
.emergency-side .emergency-event { grid-template-columns: 1fr; gap: .1rem; padding: .45rem 0; font-size: .85rem; }
@media (max-width: 1200px) { .emergency-layout { grid-template-columns: minmax(0, 1fr); } .emergency-metric-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 700px) { .emergency-metric-grid { grid-template-columns: repeat(2, 1fr); } .emergency-search input { min-width: 0; width: 100%; } .emergency-alert-banner { padding: .9rem 1rem; } }
@media (prefers-reduced-motion: reduce) { .emergency-alarm-dot { animation: none; } }
.emergency-roster-head { flex-wrap: wrap; }
@media (max-width: 760px) {
  .emergency-roster-table, .emergency-roster-table tbody, .emergency-roster-table tr, .emergency-roster-table td, .emergency-roster-table th { display: block; width: 100%; box-sizing: border-box; }
  .emergency-roster-table thead { display: none; }
  .emergency-roster-table td { border: 0; padding: .3rem .8rem; }
  .emergency-roster-table td[data-label]:not([data-label="Person"])::before { content: attr(data-label); display: block; font-size: .68rem; font-weight: 700; text-transform: uppercase; color: #57534e; }
  .emergency-person-row { border-bottom: 1px solid #e7e5e4; padding: .4rem 0; }
  .emergency-person-row td:first-child { box-shadow: none; }
  .emergency-person-row.unknown { box-shadow: inset 4px 0 0 #b42318; } .emergency-person-row.not_evacuated { box-shadow: inset 4px 0 0 #c62828; } .emergency-person-row.en_route { box-shadow: inset 4px 0 0 #e0a100; } .emergency-person-row.safe { box-shadow: inset 4px 0 0 #2e7d32; }
  .emergency-status-switch button { min-height: 44px; flex: 1 1 auto; }
  .emergency-status-switch { display: flex; }
  .emergency-banner-actions { width: 100%; } .emergency-banner-actions button { flex: 1 1 auto; }
}
@media (max-width: 760px) { .emergency-roster-head .emergency-search { width: 100%; } }
/* 0.61.44: Dashboard Gateway-Status nach Muster E */
.device-status-head { align-items: flex-start; }
.device-status-actions { display: flex; align-items: center; gap: .5rem; }
.device-status-alert { border-radius: 12px; padding: .8rem 1rem; margin: 0 0 14px; border: 1px solid #e7e5e4; background: #fff; }
.device-status-alert strong { margin-right: .5rem; }
.device-status-alert ul { margin: .35rem 0 0; padding-left: 1.2rem; display: grid; gap: .15rem; }
.device-status-alert small { color: #57534e; }
.device-status-alert.is-problem { background: #fef3f2; border-color: #fecdca; color: #7a1a12; }
.device-status-alert.is-problem strong { color: #b42318; }
.device-status-alert.is-ok { background: #ecfdf3; border-color: #abefc6; color: #05603a; }
.device-status-alert.is-standby { background: #f5f5f4; color: #44403c; }
.device-status-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin: 0 0 14px; }
.device-kpi { display: flex; flex-direction: column; align-items: flex-start; text-align: left; gap: .1rem; padding: 12px 16px; border-radius: 14px; border: 2px solid #e7e5e4; background: #fff; color: var(--ink); font: inherit; cursor: pointer; min-height: 44px; }
.device-kpi strong { font-size: 1.9rem; line-height: 1.05; font-variant-numeric: tabular-nums; }
.device-kpi span { font-size: .8rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: #44403c; }
.device-kpi small { color: #57534e; font-size: .8rem; }
.device-kpi:hover { border-color: #a8a29e; }
.device-kpi.active { border-color: var(--brand-black, #111); box-shadow: inset 0 0 0 1px var(--brand-black, #111); }
.device-kpi.has-problem { border-color: #b42318; background: #fef3f2; }
.device-kpi.has-problem strong { color: #b42318; }
.device-kpi:focus-visible { outline: 3px solid #f97316; outline-offset: 2px; }
.device-status-card .section-head { align-items: center; flex-wrap: wrap; gap: .5rem; }
.device-status-table td { vertical-align: top; }
.device-state { display: inline-flex; align-items: center; gap: .4rem; font-weight: 700; white-space: nowrap; }
.device-dot { width: .65rem; height: .65rem; border-radius: 50%; background: #a8a29e; flex: none; }
.device-state.online .device-dot { background: #2e7d32; }
.device-state.offline { color: #b42318; }
.device-state.offline .device-dot { background: #b42318; }
.device-state.standby { color: #57534e; }
.device-stale { color: #b42318; font-weight: 700; }
.device-row.offline td:first-child { box-shadow: inset 4px 0 0 #b42318; }
.device-row.standby td { color: #57534e; }
#tag-gateway-filter button[aria-pressed="true"] { background: var(--brand-black, #111); color: #fff; border-color: var(--brand-black, #111); }
@media (max-width: 700px) {
  .device-status-kpis { grid-template-columns: repeat(2, 1fr); }
  .device-status-table, .device-status-table tbody, .device-status-table tr, .device-status-table td { display: block; width: 100%; box-sizing: border-box; }
  .device-status-table thead { display: none; }
  .device-status-table td { border: 0; padding: .25rem .8rem; }
  .device-status-table td[data-label]:not(:first-child)::before { content: attr(data-label); display: block; font-size: .68rem; font-weight: 700; text-transform: uppercase; color: #57534e; }
  .device-row { border-bottom: 1px solid #e7e5e4; padding: .4rem 0; }
  .device-row.offline { box-shadow: inset 4px 0 0 #b42318; } .device-row.offline td:first-child { box-shadow: none; }
}
/* 0.61.44: Admin Sensoren im Stil von Muster E */
.sensor-kpis.device-status-kpis { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
.sensor-kpis .device-kpi span { font-size: .8rem; color: #44403c; }
.device-kpi.has-warn { border-color: #dc6803; background: #fffaeb; }
.device-kpi.has-warn strong { color: #b54708; }
.sensor-setup-title { margin: 1.6rem 0 .6rem; font-size: 1.05rem; color: #44403c; }
.sensor-fold > summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .2rem 0; }
.sensor-fold > summary::-webkit-details-marker { display: none; }
.sensor-fold > summary > span:first-child { display: grid; gap: .2rem; }
.sensor-fold > summary > span:first-child > strong::before, .sensor-monitor > summary > span:first-child > strong::before { content: '▸'; display: inline-block; width: 1.1rem; color: #57534e; }
.sensor-fold[open] > summary > span:first-child > strong::before, .sensor-monitor[open] > summary > span:first-child > strong::before { content: '▾'; }
.sensor-fold > summary small, .sensor-monitor > summary small { padding-left: 1.1rem; }
.sensor-fold > summary small { color: var(--muted); font-weight: 400; }
.sensor-fold[open] > summary { border-bottom: 1px solid var(--line); padding-bottom: .7rem; margin-bottom: .7rem; }
.sensor-fold > summary:focus-visible { outline: 3px solid #f97316; outline-offset: 2px; }
/* 0.61.44: RSSI-Monitor im Stil von Muster E */
.rssi-filter-kpis.device-status-kpis { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.rssi-filter-kpis .device-kpi span { font-size: .8rem; color: #44403c; }
@media (max-width: 700px) { .rssi-filter-kpis.device-status-kpis { grid-template-columns: repeat(2, 1fr); } }
/* 0.61.44: Zonendetail im Stil der Zonentabelle */
.device-kpi[hidden] { display: none; }
.zone-detail-head { align-items: flex-start; }
.zone-detail-back { font-size: .9rem; }
.zone-detail-path { margin: .4rem 0 0; color: #57534e; font-size: .9rem; }
.zone-detail-title { margin-top: .1rem; }
.zone-detail-actions { display: flex; align-items: center; }
.zone-detail-filterbar.device-status-kpis { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
.zone-detail-filterbar .device-kpi span { font-size: .8rem; color: #44403c; }
.zone-detail-search input { min-width: 260px; min-height: 42px; }
.zone-occupants-table td { vertical-align: top; }
.zone-detail-sub { display: block; color: #57534e; margin-top: .15rem; }
.zone-detail-phone { display: inline-block; margin-top: .2rem; font-weight: 700; text-decoration: none; }
@media (max-width: 700px) {
  .zone-detail-filterbar.device-status-kpis { grid-template-columns: repeat(2, 1fr); }
  .zone-detail-search, .zone-detail-search input { width: 100%; min-width: 0; }
  .zone-occupants-table, .zone-occupants-table tbody, .zone-occupants-table tr, .zone-occupants-table td { display: block; width: 100%; box-sizing: border-box; }
  .zone-occupants-table thead { display: none; }
  .zone-occupants-table td { border: 0; padding: .25rem .8rem; }
  .zone-occupants-table td[data-label]:not(:first-child)::before { content: attr(data-label); display: block; font-size: .68rem; font-weight: 700; text-transform: uppercase; color: #57534e; }
  .zone-occupant-row { border-bottom: 1px solid #e7e5e4; padding: .4rem 0; }
}
.zone-detail-filterbar.device-status-kpis { display: grid; margin-bottom: 14px; }
.zone-filter.device-kpi { display: flex; flex-direction: column; align-items: flex-start; gap: .1rem; }
.zone-filter.device-kpi[hidden] { display: none; }
.zone-filter.device-kpi.active { background: #fff; color: var(--ink); border-color: var(--brand-black, #111); box-shadow: inset 0 0 0 1px var(--brand-black, #111); }
.zone-filter.device-kpi .filter-count, .zone-filter.device-kpi.active .filter-count { display: block; min-width: 0; min-height: 0; background: none; border-radius: 0; font-size: 1.9rem; font-weight: 800; line-height: 1.05; }
/* 0.61.44: Batterie im Stil von Muster E */
.battery-head { align-items: flex-start; }
.battery-head-actions { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; justify-content: flex-end; }
.battery-kpis.device-status-kpis { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.battery-kpis .device-kpi span { font-size: .8rem; color: #44403c; }
.battery-level { display: inline-flex; align-items: center; gap: .5rem; white-space: nowrap; }
.battery-bar { display: inline-block; width: 64px; height: 12px; border-radius: 3px; border: 1px solid #a8a29e; background: #fff; overflow: hidden; position: relative; }
.battery-bar i { display: block; height: 100%; }
.battery-level.is-low .battery-bar i { background: #dc6803; }
.battery-level.is-critical .battery-bar i { background: #b42318; }
.battery-level.is-critical .battery-low { color: #b42318; }
.battery-crit-label { display: block; color: #b42318; font-weight: 700; }
.battery-sub { display: block; color: #57534e; margin-top: .15rem; }
.battery-row.is-critical td:first-child { box-shadow: inset 4px 0 0 #b42318; }
.battery-table td { vertical-align: top; }
@media (max-width: 700px) {
  .battery-kpis.device-status-kpis { grid-template-columns: repeat(2, 1fr); }
  .battery-table table, .battery-table tbody, .battery-table tr, .battery-table td { display: block; width: 100%; box-sizing: border-box; }
  .battery-table thead { display: none; }
  .battery-table td { border: 0; padding: .25rem .8rem; }
  .battery-table td[data-label]:not(:first-child)::before { content: attr(data-label); display: block; font-size: .68rem; font-weight: 700; text-transform: uppercase; color: #57534e; }
  .battery-row { border-bottom: 1px solid #e7e5e4; padding: .4rem 0; }
}
.battery-level .battery-low::before { content: none; }
.battery-level.is-low .battery-low { color: #b54708; }
/* 0.61.48: Sensorenliste seitenweise */
.sensor-tools { grid-template-columns: minmax(220px,2fr) minmax(160px,1fr) minmax(140px,1fr) minmax(100px,.6fr); }
.sensor-pager { display: flex; align-items: center; justify-content: flex-end; gap: .45rem; margin: -.3rem 0 .6rem; }
.sensor-pager button { min-width: 44px; min-height: 36px; }
@media (max-width: 900px) { .sensor-tools { grid-template-columns: 1fr 1fr; } }
/* 0.61.48: gemeinsame Listen-Werkzeugleiste (Suche, Filter, pro Seite, Vor/Zurueck) */
.list-toolbar { display: grid; grid-template-columns: minmax(220px,1fr) 190px 90px auto auto auto; gap: .45rem; align-items: center; margin: .75rem 0; }
.list-toolbar button { min-width: 44px; min-height: 36px; }
@media (max-width: 760px) { .list-toolbar { grid-template-columns: 1fr 1fr; } .list-toolbar input[type="search"] { grid-column: 1 / -1; } }
.gateway-setup-result:has(> #gateway-https-provisioning[hidden]) { display: none; }
.gateway-page-actions a.button { display: inline-flex; align-items: center; min-height: 40px; padding: .45rem .9rem; border: 1px solid var(--line); border-radius: .55rem; text-decoration: none; font-weight: 700; color: var(--ink); background: #fff; }
.gateway-page-actions a.button.primary { background: var(--brand-black); color: #fff; border-color: var(--brand-black); }
/* 0.61.52: RS485 / Modbus in den Gateway-Details und Uebersicht */
.gateway-row-details .gateway-detail-modbus{grid-column:1/-1;border-top:1px solid var(--line);padding-top:.6rem}
.mb-grid{display:flex;flex-wrap:wrap;gap:.5rem 2rem;margin:.4rem 0 .6rem}
.mb-values{min-width:220px;max-width:460px}
.mb-table{border-collapse:collapse;font-size:.78rem;width:100%}
.mb-table td,.mb-table th{padding:.18rem .45rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.mb-table td.num,.mb-table th.num{text-align:right;font-variant-numeric:tabular-nums}
.mb-form{display:flex;flex-wrap:wrap;gap:.4rem .6rem;align-items:flex-end;margin:.4rem 0}
.mb-form label{display:grid;gap:.15rem;font-size:.74rem}
.mb-form input{width:7.5rem}.mb-form input[data-k="unit"],.mb-form input[data-k="count"]{width:4.5rem}
.mb-form[data-action="read"] .mb-w,.mb-form[data-action="read"] .mb-wn,.mb-form[data-action="read"] .mb-ww{display:none}
.mb-form[data-action="write"] .mb-rd{display:none}
.mb-form[data-action="write"][data-mode="node"] .mb-r,.mb-form[data-action="write"][data-mode="node"] .mb-ww{display:none}
.mb-form[data-action="write"][data-mode="raw"] .mb-wn{display:none}
.mb-jobs-head{display:flex;gap:.6rem;align-items:center;margin-top:.4rem}
.mb-jobs-head button{padding:.2rem .45rem;font-size:.72rem}
.mb-result code{overflow-wrap:anywhere;white-space:normal}
.gateway-modbus-card .mb-overview{min-width:720px}
