/* ========================================================================
   ResQVision Management Admin -- Brand Stylesheet
   Content-first, low-chrome. Single accent (crimson), navy topbar.
   Constrained layout, whitespace as structure.
   ======================================================================== */

:root {
  /* DJI-SEI Design System Tokens */
  --canvas:        #15191b;
  --rail:          #1a1f21;
  --surface:       #202628;
  --surface-bright:#293032;
  --surface-raised:var(--surface-bright);
  --line:          rgba(226,235,235,.11);
  --line-strong:   rgba(226,235,235,.2);
  --muted:         #929c9e;
  --soft:          #cbd1d2;
  --brand:         #b33c50;
  --brand-bright:  #df566d;
  --brand-wash:    rgba(179,60,80,.13);
  --amber:         #f1b85b;
  --cyan:          #69d7e7;
  --success:       #5ed39a;
  --danger:        #ed5d70;
  --ease:          cubic-bezier(.2,.8,.2,1);

  /* Legacy aliases — map old names to DJI-SEI tokens */
  --accent:        var(--brand);
  --accent-dark:   var(--brand);
  --accent-light:  var(--brand-wash);
  --accent-focus:  var(--brand-wash);
  --navy:          var(--canvas);
  --bg:            var(--canvas);
  --card-bg:       var(--surface);
  --border:        var(--line);
  --hover:         var(--line-strong);
  --hover-bg:      var(--surface-bright);
  --text:          #f1f4f4;
  --text-muted:    var(--muted);
  --warning:       var(--amber);
  --error:         var(--danger);
  --radius-sm:     2px;
  --radius:        2px;
  --radius-lg:     2px;
  --mono:          ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --max-width:     1080px;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
  font-family: Inter, "Avenir Next", ui-sans-serif, system-ui, -apple-system, sans-serif;
  font-size: 15px;
  line-height: 1.5;
  color: var(--text);
  background: var(--canvas);
}



a { color: var(--accent); text-decoration: none; }
a:hover { color: var(--accent-dark); }

/* ---- Topbar ---- */
.topbar {
  background: rgba(9,12,13,.94);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border-bottom: 1px solid var(--line);
  color: #fff;
  height: 82px;
  position: sticky;
  top: 0;
  z-index: 100;
}
.topbar::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 24px;
  width: 116px;
  height: 1px;
  background: var(--brand);
}
.topbar-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 0 auto;
  padding: 0 clamp(24px,5vw,74px);
  height: 100%;
  gap: 16px;
}
.topbar-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #fff;
  text-decoration: none;
  margin-right: 32px;
  flex-shrink: 0;
}
.topbar-logo {
  height: 30px;
  width: auto;
}
.topbar-brand-text {
  height: 22px;
  width: auto;
  opacity: 0.9;
}
.topbar-brand .brand-divider {
  display: inline-block;
  width: 1px;
  height: 28px;
  margin: 0 5px 0 3px;
  background: var(--line-strong);
  flex-shrink: 0;
}
.topbar-brand .brand-product {
  display: grid;
  gap: 2px;
  white-space: nowrap;
}
.topbar-brand .brand-product small,
.topbar-brand .brand-product strong {
  text-transform: uppercase;
}
.topbar-brand .brand-product small {
  color: var(--muted);
  font-size: 8px;
  font-weight: 700;
  letter-spacing: .2em;
}
.topbar-brand .brand-product strong {
  color: #d9dede;
  font-size: 11px;
  font-weight: 560;
  letter-spacing: .08em;
}
.topbar-nav {
  display: flex;
  align-items: center;
  gap: 25px;
  flex: 1;
}
.topbar-link {
  color: #aeb6b7;
  text-decoration: none;
  font-size: 9px;
  font-weight: 650;
  letter-spacing: .04em;
  padding: 9px 0;
  border-radius: 0;
  transition: color .2s var(--ease), transform .2s var(--ease);
  white-space: nowrap;
}
.topbar-link:hover { color: #fff; transform: translateY(-1px); background: transparent; }
.topbar-link.active { color: #fff; background: transparent; position: relative; }
.topbar-link.active::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 14px;
  right: 14px;
  height: 2px;
  background: var(--accent);
  border-radius: 1px;
}

/* ---- Nav Dropdown ---- */
.nav-dropdown { position: relative; }
.nav-dropdown-trigger {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  cursor: pointer;
  background: none;
  border: none;
  font: inherit;
  color: rgba(255,255,255,0.65);
  font-size: 14px;
  font-weight: 500;
  padding: 8px 14px;
  border-radius: var(--radius-sm);
  transition: background 0.15s, color 0.15s var(--ease);
  white-space: nowrap;
}
.nav-dropdown-trigger:hover { color: #fff; background: rgba(255,255,255,0.08); }
.nav-dropdown.open .nav-dropdown-trigger { color: #fff; background: rgba(255,255,255,0.12); }
.nav-dropdown-trigger svg { transition: transform 0.15s var(--ease); }
.nav-dropdown.open .nav-dropdown-trigger svg { transform: rotate(180deg); }
.nav-dropdown-menu {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  min-width: 180px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: 0 8px 24px rgba(0,0,0,0.12);
  padding: 6px;
  z-index: 200;
}
.nav-dropdown-menu-right { left: auto; right: 0; }
.nav-dropdown.open .nav-dropdown-menu { display: block; }
.nav-dropdown-item {
  display: block;
  padding: 8px 12px;
  color: var(--text);
  text-decoration: none;
  font-size: 14px;
  border-radius: var(--radius-sm);
  transition: background 0.12s var(--ease);
  width: 100%;
  text-align: left;
  background: none;
  border: none;
  cursor: pointer;
  font: inherit;
}
.nav-dropdown-item:hover { background: var(--accent-light); color: var(--accent-dark); }
.nav-dropdown-header { padding: 10px 12px 8px; }
.nav-dropdown-email { display: block; font-size: 14px; font-weight: 600; color: var(--text); }
.nav-dropdown-header .badge { margin-top: 4px; display: inline-block; }
.nav-dropdown-divider { height: 1px; background: var(--border); margin: 4px 8px; }
.nav-dropdown-signout { color: var(--error) !important; }

/* ---- User Avatar ---- */
.topbar-user { position: relative; }
.topbar-avatar {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--accent);
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: box-shadow 0.15s var(--ease);
}
.topbar-avatar:hover { box-shadow: 0 0 0 2px rgba(172,57,72,0.3); }
.avatar-initials { color: #fff; font-size: 14px; font-weight: 700; line-height: 1; }

/* ---- Buttons ---- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 10px 20px;
  border: none;
  border-radius: var(--radius-sm);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.2s var(--ease), transform 0.2s var(--ease), border-color 0.2s var(--ease);
  text-decoration: none;
}
.btn-primary { background: var(--brand); color: #fff; border: 1px solid var(--brand); }
.btn-primary:hover { background: var(--brand-bright); border-color: var(--brand-bright); transform: translateY(-1px); }
.btn-secondary { background: transparent; color: var(--soft); border: 1px solid var(--line-strong); }
.btn-secondary:hover { background: var(--surface-bright); border-color: var(--soft); }
.btn-danger { background: var(--danger); color: #fff; }
.btn-danger:hover { background: #c04452; transform: translateY(-1px); }
.btn-accent { background: var(--brand); color: #fff; }
.btn-accent:hover { background: var(--brand-bright); transform: translateY(-1px); }
.btn-sm { padding: 6px 12px; font-size: 13px; }
.btn-block { width: 100%; }
.btn + .btn { margin-left: 8px; }

/* ---- Layout ---- */
.page {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 32px 24px 48px;
}
.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 32px;
}
.page-title {
  font-size: 28px;
  font-weight: 700;
  color: var(--text);
  letter-spacing: -0.02em;
}

/* ---- Asset Management ---- */
.asset-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}

.asset-map-picker {
  width: 100%;
  height: 300px;
  border-radius: 2px;
  border: 1px solid var(--border);
  margin-bottom: 8px;
}

.form-row {
  display: flex;
  gap: 16px;
}
.form-row .form-group {
  flex: 1;
}

.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  margin-top: 16px;
  font-size: 14px;
  color: var(--muted);
}
.pagination-btn {
  display: inline-block;
  padding: 6px 16px;
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--soft);
  text-decoration: none;
  font-size: 14px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s var(--ease);
}
.pagination-btn:hover {
  background: var(--brand);
  color: #fff;
  border-color: var(--brand);
}
.pagination-disabled {
  opacity: 0.4;
  cursor: default;
  pointer-events: none;
}
.pagination-info {
  font-size: 14px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.modal-wide {
  max-width: 700px;
  width: 90vw;
}

/* ---- Auth Pages ---- */
.auth-page {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  background: var(--navy);
}
.auth-card {
  background: var(--card-bg);
  border-radius: var(--radius-lg);
  padding: 40px;
  width: 100%;
  max-width: 420px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.25);
}
.auth-card-wide { max-width: 560px; }
.auth-logo {
  height: 48px;
  width: auto;
  display: block;
  margin: 0 auto 16px;
}
.auth-title {
  font-size: 22px;
  font-weight: 700;
  text-align: center;
  margin-bottom: 8px;
  color: var(--navy);
}
.auth-footer {
  text-align: center;
  margin-top: 24px;
  font-size: 14px;
  color: var(--text-muted);
}
.auth-footer a { color: var(--accent); font-weight: 500; }

/* ---- Alerts ---- */
.alert {
  padding: 12px 16px;
  border-radius: var(--radius-sm);
  margin-bottom: 16px;
  font-size: 14px;
}
.alert-error {
  background: rgba(239,68,68,0.08);
  border: 1px solid rgba(239,68,68,0.2);
  color: #dc2626;
}
.alert-success {
  background: rgba(16,185,129,0.08);
  border: 1px solid rgba(16,185,129,0.2);
  color: #059669;
}

/* ---- Stat Grid ---- */
.stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 16px;
  margin-bottom: 32px;
}
.stat-card {
  padding: 20px;
}
.stat-card .stat-value {
  font-size: 32px;
  font-weight: 700;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.stat-card .stat-label {
  font-size: 12px;
  font-weight: 500;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-top: 4px;
}

/* ---- Quick Links ---- */
/* Org cards */
.org-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
  margin-bottom: 24px;
}
.org-card {
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  transition: background 0.15s var(--ease);
}
.org-card:hover {
  background: var(--hover-bg);
}
.org-card-header {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.org-card-name {
  font-size: 18px;
  font-weight: 600;
  color: var(--text);
}
.org-card-slug {
  font-size: 13px;
  color: var(--text-muted);
  font-family: monospace;
}
.org-card-stats {
  display: flex;
  gap: 16px;
  padding: 8px 0;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.org-card-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
.org-card-stat-value {
  font-size: 20px;
  font-weight: 700;
  color: var(--accent);
}
.org-card-stat-label {
  font-size: 11px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.org-card-btn {
  width: 100%;
  margin-top: auto;
}

.quick-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* ---- Tables ---- */
.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}
.data-table th {
  text-align: left;
  padding: 12px 16px;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--muted);
  border-bottom: 1px solid var(--line);
}
.data-table td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
}
.data-table tbody tr:last-child td { border-bottom: none; }
.data-table tbody tr:hover { background: var(--brand-wash); }
.clickable-row { cursor: pointer; }
.clickable-row:hover { background: rgba(172,57,72,0.06) !important; }
.empty-state {
  text-align: center;
  color: var(--text-muted);
  padding: 48px 16px !important;
  font-style: italic;
}

/* ---- Badges ---- */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0 10px 0 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  text-transform: capitalize;
  letter-spacing: 0.3px;
}
.badge::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}
.badge-success { background: rgba(94,211,154,0.12); color: var(--success); }
.badge-success::before { background: var(--success); box-shadow: 0 0 6px rgba(94,211,154,0.6); }
.badge-warning { background: rgba(241,184,91,0.12); color: var(--amber); }
.badge-warning::before { background: var(--amber); box-shadow: 0 0 6px rgba(241,184,91,0.6); }
.badge-error   { background: rgba(237,93,112,0.12); color: var(--danger); }
.badge-error::before   { background: var(--danger); box-shadow: 0 0 6px rgba(237,93,112,0.6); }
.badge-muted   { background: rgba(126,136,138,0.12); color: var(--muted); }
.badge-muted::before   { background: var(--muted); box-shadow: 0 0 4px rgba(126,136,138,0.4); }
.badge-accent  { background: rgba(105,215,231,0.12); color: var(--cyan); }
.badge-accent::before  { background: var(--cyan); box-shadow: 0 0 6px rgba(105,215,231,0.6); }

/* Role badges */
.role-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  text-transform: capitalize;
}
.role-super_admin { background: rgba(239,68,68,0.1); color: #dc2626; }
.role-owner       { background: var(--accent-light);  color: var(--accent-dark); }
.role-manager     { background: var(--accent-light);  color: var(--accent-dark); }
.role-operator    { background: rgba(100,116,139,0.1); color: #64748b; }
.role-responder   { background: rgba(100,116,139,0.1); color: #64748b; }

/* ---- Cards ---- */
.card {
  padding: 0;
  margin-bottom: 40px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 0;
}
.card-danger {
  border: 1px solid rgba(239,68,68,0.2);
  background: rgba(239,68,68,0.02);
}
.card-danger .card-title {
  color: var(--error);
}
.card-title {
  font-size: 13px;
  font-weight: 600;
  margin-bottom: 20px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

/* ---- Section ---- */
.section {
  padding: 0;
  margin-bottom: 40px;
}
.section-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 20px;
}

/* ---- Modal ---- */
.modal-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(9,11,12,0.6);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 200;
  align-items: center;
  justify-content: center;
}
.modal {
  background: rgba(18,22,23,.98);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid var(--line-strong);
  border-radius: 0;
  padding: 32px;
  width: 100%;
  max-width: 500px;
  box-shadow: 0 16px 48px rgba(0,0,0,0.4);
  max-height: 90vh;
  overflow-y: auto;
}
.modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 20px;
}
.modal-header h2, .modal h2 { font-size: 18px; margin: 0 0 20px 0; }
.modal-close {
  background: none;
  border: none;
  font-size: 24px;
  color: var(--text-muted);
  cursor: pointer;
  padding: 4px 8px;
  line-height: 1;
}
.modal-close:hover { color: var(--text); }
.modal-body { /* form lives here */ }
.modal-footer {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 20px;
}

/* ---- Forms ---- */
.form-label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
  margin-bottom: 6px;
}
.form-input {
  width: 100%;
  padding: 10px 12px;
  border: 0;
  border-bottom: 1px solid var(--line-strong);
  border-radius: 0;
  font-size: 15px;
  transition: border-color 0.2s var(--ease), box-shadow 0.2s var(--ease);
  background: transparent;
}
.form-input:focus {
  outline: none;
  border-bottom-color: var(--brand-bright);
  box-shadow: 0 1px 0 0 var(--brand-bright), 0 4px 12px var(--brand-wash);
}
.form-stack {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.form-group { margin-bottom: 16px; }
.form-group label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted);
  margin-bottom: 6px;
}
.form-group input,
.form-group select,
.form-group textarea {
  width: 100%;
  padding: 10px 12px;
  border: 0;
  border-bottom: 1px solid var(--line-strong);
  border-radius: 0;
  font-size: 15px;
  transition: border-color 0.2s var(--ease), box-shadow 0.2s var(--ease);
  background: transparent;
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
  outline: none;
  border-bottom-color: var(--brand-bright);
  box-shadow: 0 1px 0 0 var(--brand-bright), 0 4px 12px var(--brand-wash);
}
.form-group select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 32px;
}
.form-group input[type="checkbox"] {
  width: auto;
  margin-right: 6px;
}
.checkbox-label {
  display: flex;
  align-items: center;
  font-size: 14px;
  color: var(--text);
  cursor: pointer;
}
.form-hint {
  font-size: 13px;
  color: var(--text-muted);
  margin-bottom: 12px;
  line-height: 1.4;
}
.form-group .form-hint {
  margin-top: 4px;
  margin-bottom: 0;
}
.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.form-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 20px;
}

/* ---- Inline Form ---- */
.inline-form {
  display: flex;
  gap: 8px;
  align-items: flex-end;
  margin-bottom: 16px;
}
.inline-form .form-group { margin-bottom: 0; flex: 1; }
.inline-form select {
  padding: 8px 32px 8px 12px;
  font-size: 14px;
}

/* ---- Registration Steps ---- */
.reg-steps {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-bottom: 28px;
  font-size: 13px;
  font-weight: 500;
  color: var(--text-muted);
}
.reg-step.active {
  color: var(--accent);
  font-weight: 600;
}
.reg-step + .reg-step::before {
  content: '--';
  margin-right: 8px;
  color: var(--border);
}

/* ---- Choice Cards ---- */
.choice-cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin: 16px 0;
}
.choice-card { cursor: pointer; }
.choice-card input[type="radio"] { display: none; }
.choice-card-inner {
  display: block;
  border: 2px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 20px;
  text-align: center;
  transition: border-color 0.2s, background 0.2s var(--ease);
}
.choice-card input[type="radio"]:checked + .choice-card-inner {
  border-color: var(--accent);
  background: var(--accent-light);
}
.choice-card:hover .choice-card-inner {
  border-color: var(--accent);
  background: rgba(172,57,72,0.04);
}
.choice-card-inner strong { display: block; font-size: 15px; margin-bottom: 4px; }
.choice-card-inner small { font-size: 13px; color: var(--text-muted); line-height: 1.4; }

/* ---- Fieldset ---- */
fieldset { border: none; padding: 0; margin: 0; }

/* ---- Code ---- */
code, .invite-code {
  font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
  font-size: 13px;
  background: var(--canvas);
  padding: 2px 6px;
  border-radius: 4px;
}

/* ---- Details/Summary ---- */
details summary {
  cursor: pointer;
  color: var(--accent);
  font-size: 13px;
}
details summary:hover { color: var(--accent-dark); }
details pre {
  background: var(--canvas);
  border-radius: var(--radius-sm);
  padding: 12px;
  font-size: 12px;
  overflow-x: auto;
  margin-top: 8px;
  max-width: 500px;
}

/* ---- Filters ---- */
.filters {
  background: var(--card-bg);
  border-radius: var(--radius-sm);
  padding: 12px 16px;
  margin-bottom: 16px;
}

/* ---- Text utilities ---- */
.text-muted { color: var(--text-muted); }

/* ---- Footer ---- */
.footer {
  border-top: 1px solid var(--line);
  padding: 24px;
  text-align: center;
  font-size: 13px;
  color: var(--muted);
  margin-top: 48px;
}

/* ---- Tenant Selector ---- */
.topbar-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
}
.tenant-selector {
  position: relative;
}
.tenant-selector-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 12px;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 999px;
  color: rgba(255,255,255,0.75);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s var(--ease);
  white-space: nowrap;
  line-height: 1;
  height: 32px;
}
.tenant-selector-btn:hover {
  background: rgba(255,255,255,0.15);
  border-color: rgba(255,255,255,0.35);
  color: #fff;
}
.tenant-selector-btn .tenant-selector-label {
  max-width: 120px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tenant-selector-btn .tenant-selector-chevron {
  opacity: 0.5;
  font-size: 10px;
  transition: transform 0.2s var(--ease);
}
.tenant-selector.open .tenant-selector-btn .tenant-selector-chevron {
  transform: rotate(180deg);
}
.tenant-selector-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  min-width: 200px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0,0,0,0.18);
  padding: 6px;
  z-index: 300;
}
.tenant-selector.open .tenant-selector-dropdown {
  display: block;
}
.tenant-selector-option {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 7px 12px;
  border: none;
  background: none;
  color: var(--text);
  font-size: 13px;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  border-radius: 6px;
  transition: background 0.12s var(--ease);
  font-family: inherit;
}
.tenant-selector-option:hover {
  background: var(--accent-light);
}
.tenant-selector-option.active {
  background: var(--accent-light);
  color: var(--accent);
  font-weight: 600;
}
.tenant-selector-btn {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.12);
  color: rgba(255,255,255,0.65);
}
.tenant-selector-btn:hover {
  background: rgba(255,255,255,0.12);
  border-color: rgba(255,255,255,0.25);
  color: #fff;
}

/* ---- Scope Banner ---- */
.scope-banner {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--accent-light);
  border: 1px solid var(--accent);
  border-radius: 999px;
  padding: 4px 14px 4px 10px;
  font-size: 13px;
  font-weight: 500;
  color: var(--accent-dark);
  margin-bottom: 16px;
}
.scope-banner-icon {
  font-size: 14px;
}
.scope-banner-name {
  font-weight: 600;
}
.scope-banner-clear {
  color: var(--accent-dark);
  text-decoration: none;
  font-weight: 600;
  font-size: 13px;
  margin-left: 4px;
  opacity: 0.7;
  transition: opacity 0.15s var(--ease);
}
.scope-banner-clear:hover {
  opacity: 1;
  text-decoration: underline;
}

/* ---- Org Assumption Banner ---- */
.org-assume-banner {
  background: #e67e22;
  color: #fff;
  text-align: center;
  padding: 8px 16px;
  font-size: 0.875rem;
  font-weight: 500;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
}
.org-assume-banner a {
  color: #fff;
  text-decoration: underline;
  font-weight: 600;
}
.org-assume-banner a:hover {
  opacity: 0.85;
}

/* ---- Trial Banner ---- */
.trial-banner {
  background: #f59e0b;
  color: #1a1a1a;
  padding: 10px 24px;
  text-align: center;
}
.trial-banner-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  max-width: 1080px;
  margin: 0 auto;
}
.trial-banner-text {
  font-size: 0.875rem;
  font-weight: 500;
}
.trial-banner-text strong {
  font-size: 1.1rem;
}
.trial-banner-cta {
  background: #1a1a1a;
  color: #fff;
  padding: 4px 14px;
  border-radius: 6px;
  font-size: 0.8rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.15s var(--ease);
}
.trial-banner-cta:hover {
  background: #333;
}
.trial-banner-expired {
  background: #ef4444;
  color: #fff;
}
.trial-banner-expired .trial-banner-cta {
  background: var(--surface);
  color: #1a1a1a;
}
.trial-banner-expired .trial-banner-cta:hover {
  background: #f3f3f3;
}
.trial-banner {
  background: #b45309;
  color: #fff;
}
.trial-banner-cta {
  background: var(--surface);
  color: #1a1a1a;
}
.trial-banner-expired {
  background: #b91c1c;
  color: #fff;
}

.trial-banner-dismiss {
  background: transparent;
  border: none;
  color: rgba(255,255,255,0.7);
  font-size: 18px;
  line-height: 1;
  padding: 0 0 0 12px;
  cursor: pointer;
  transition: color 0.2s var(--ease);
}
.trial-banner-dismiss:hover {
  color: white;
}
.trial-banner-dismiss {
  color: rgba(255,255,255,0.5);
}
.trial-banner-dismiss:hover {
  color: rgba(255,255,255,0.9);
}

/* ---- Org Selector ---- */
.org-selector-form {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.org-selector-form label {
  color: rgba(255,255,255,0.7);
  font-size: 0.8rem;
  white-space: nowrap;
}
.org-selector {
  background: var(--card-bg);
  color: var(--text);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 6px;
  padding: 4px 8px;
  font-size: 0.8rem;
  cursor: pointer;
}
.org-selector:hover {
  border-color: rgba(255,255,255,0.3);
}

/* ---- Dashboard Org Cards ---- */
.org-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
  margin-top: 16px;
}
.org-card {
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 16px;
  transition: background 0.15s var(--ease);
}
.org-card:hover {
  background: var(--hover-bg);
}
.org-card-name {
  font-size: 1rem;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 4px;
}
.org-card-slug {
  font-size: 0.8rem;
  color: var(--text-secondary);
  margin-bottom: 12px;
}
.org-card-stats {
  display: flex;
  gap: 16px;
  font-size: 0.8rem;
  color: var(--text-secondary);
  margin-bottom: 12px;
}
.org-card-actions {
  display: flex;
  gap: 8px;
}

/* ---- Org Assume Indicator (topbar) ---- */
.org-assume-indicator {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(230, 126, 34, 0.15);
  border: 1px solid #e67e22;
  border-radius: 6px;
  padding: 4px 10px;
  font-size: 0.8rem;
  white-space: nowrap;
}
.org-assume-label {
  color: var(--text-secondary);
}
.org-assume-name {
  font-weight: 600;
  color: #ffffff;
}
.org-assume-exit {
  color: #e67e22;
  text-decoration: none;
  font-weight: 600;
  margin-left: 4px;
}
.org-assume-exit:hover {
  opacity: 0.7;
}

/* ---- Org List (dashboard) ---- */
.org-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.org-list-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 12px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 6px;
}
.org-list-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.org-list-name {
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--text);
}
.org-list-slug {
  font-size: 0.75rem;
  color: var(--text-secondary);
}

/* ---- Theme Toggle ---- */
.theme-toggle {
  background: none;
  border: 1px solid rgba(255,255,255,0.2);
  color: rgba(255,255,255,0.7);
  width: 32px;
  height: 32px;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s, color 0.2s, border-color 0.2s var(--ease);
  flex-shrink: 0;
}
.theme-toggle:hover {
  background: rgba(255,255,255,0.08);
  color: #fff;
  border-color: rgba(255,255,255,0.4);
}
.theme-toggle svg { width: 18px; height: 18px; }
.theme-icon-sun { display: none; }
.theme-icon-moon { display: block; }
.theme-icon-moon { display: block; }
.theme-icon-sun { display: none; }

/* ---- Dark mode overrides ---- */
.form-group input,
.form-group select,
.form-group textarea,
.form-input {
  background: #0f172a;
  border-color: var(--border);
  color: var(--text);
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus,
.form-input:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-focus);
}
.auth-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
}
.auth-title {
  color: #f1f5f9;
}
.stat-card .stat-value {
  color: #f1f5f9;
}
.modal {
  background: var(--card-bg);
  border: 1px solid var(--border);
}
.modal-overlay {
  background: rgba(0,0,0,0.6);
}
.data-table th {
  background: var(--canvas);
}
code, .invite-code {
  background: rgba(255,255,255,0.06);
}
.choice-card-inner {
  border-color: var(--border);
}
.choice-card input[type="radio"]:checked + .choice-card-inner {
  border-color: var(--accent);
  background: var(--accent-light);
}
.filters {
  background: var(--card-bg);
}
.nav-dropdown-trigger {
  color: rgba(255,255,255,0.7);
}
.modal-close {
  color: var(--text-muted);
}
.scope-banner {
  background: rgba(172,57,72,0.12);
  border-color: rgba(172,57,72,0.4);
  color: #f0a0ac;
}
.scope-banner-name { color: #f0a0ac; }
.scope-banner-clear { color: #f0a0ac; }
.modal-close:hover {
  color: var(--text);
}

/* ---- Map View ---- */
.map-type-toggle {
  display: flex;
  gap: 4px;
}
.map-type-btn {
  padding: 4px 10px;
  font-size: 12px;
  font-weight: 600;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--canvas);
  color: var(--text-muted);
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s var(--ease);
}
.map-type-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
}
.map-type-btn.active {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
}

.map-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}
.map-legend-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--text-muted);
}
.legend-icon {
  display: inline-block;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  flex-shrink: 0;
}
.legend-camera  { background: #2563eb; }
.legend-vehicle { background: #f59e0b; }
.legend-rescue  { background: #ef4444; }
.legend-air     { background: #8b5cf6; }
.legend-water   { background: #06b6d4; }
.legend-marine  { background: #0891b2; }
.legend-command { background: #7c3aed; }
.legend-firstaid{ background: #dc2626; }
.legend-asset   { background: #64748b; }

/* ---- Asset Management ---- */
.asset-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  margin-bottom: 24px;
}
.asset-stat-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 2px;
  padding: 20px;
  text-align: center;
}
.asset-stat-card .stat-value {
  font-size: 28px;
  font-weight: 700;
  color: var(--navy);
}
.asset-stat-card .stat-label {
  font-size: 12px;
  font-weight: 500;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-top: 4px;
}
.asset-filters {
  display: flex;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 24px;
  padding: 16px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 2px;
}
.asset-filters select,
.asset-filters input[type="text"] {
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 14px;
  background: var(--canvas);
}
.asset-filters input[type="text"] {
  flex: 1;
  min-width: 200px;
}
.asset-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 2px;
  overflow: hidden;
}
.asset-table thead {
  background: var(--navy);
  color: #fff;
}
.asset-table th {
  padding: 12px 16px;
  text-align: left;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.asset-table td {
  padding: 12px 16px;
  border-top: 1px solid var(--border);
  font-size: 14px;
}
.asset-table tbody tr:hover {
  background: var(--accent-light);
}
.asset-table a {
  color: var(--accent);
  font-weight: 500;
  text-decoration: none;
}
.asset-table a:hover {
  text-decoration: underline;
}
.status-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.status-badge.active { background: #dcfce7; color: #166534; }
.status-badge.inactive { background: #f1f5f9; color: #475569; }
.status-badge.maintenance { background: #fef3c7; color: #92400e; }
.condition-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 600;
}
.condition-badge.operational { background: #dcfce7; color: #166534; }
.condition-badge.degraded { background: #fef3c7; color: #92400e; }
.condition-badge.out-of-service { background: #fecaca; color: #991b1b; }
.tag-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 500;
  background: var(--accent-light);
  color: var(--accent);
  margin: 2px;
}
.asset-detail-grid {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 24px;
  margin-bottom: 24px;
}
.asset-info-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 2px;
  padding: 24px;
}
.asset-info-card .card-title {
  font-size: 14px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--muted);
  margin-bottom: 16px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border);
}
.asset-field {
  margin-bottom: 12px;
}
.asset-field .field-label {
  font-size: 12px;
  font-weight: 500;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.asset-field .field-value {
  font-size: 14px;
  color: var(--navy);
  margin-top: 2px;
}
.hours-log {
  margin-top: 24px;
}
.hours-log-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 2px;
  overflow: hidden;
}
.hours-log-table thead {
  background: var(--navy);
  color: #fff;
}
.hours-log-table th {
  padding: 10px 14px;
  text-align: left;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.hours-log-table td {
  padding: 10px 14px;
  border-top: 1px solid var(--border);
  font-size: 13px;
}

/* ---- Responsive ---- */
@media (max-width: 768px) {
  /* Topbar */
  .topbar-inner { padding: 0 12px; gap: 8px; }
  .topbar-nav { gap: 2px; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; }
  .topbar-nav::-webkit-scrollbar { display: none; }
  .topbar-link { padding: 6px 8px; font-size: 13px; }
  .topbar-brand { margin-right: 8px; }
  .topbar-logo { height: 24px; }
  .topbar-actions { gap: 4px; }

  /* Page layout */
  .page { padding: 20px 12px 32px; }
  .page-header { flex-direction: column; align-items: flex-start; gap: 12px; }
  .page-title { font-size: 22px; }
  .card { margin-bottom: 28px; }

  /* Stat grids */
  .stat-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .stat-card { padding: 14px; }
  .stat-card .stat-value { font-size: 22px; }
  .asset-stats { grid-template-columns: repeat(2, 1fr); gap: 10px; }

  /* Tables - horizontal scroll wrapper */
  .data-table { font-size: 13px; display: block; overflow-x: auto; white-space: nowrap; scrollbar-width: thin; }
  .data-table th, .data-table td { padding: 8px 10px; }
  .asset-table { font-size: 13px; display: block; overflow-x: auto; white-space: nowrap; scrollbar-width: thin; }
  .asset-table th, .asset-table td { padding: 8px 10px; }
  .hours-log-table { font-size: 13px; display: block; overflow-x: auto; white-space: nowrap; scrollbar-width: thin; }
  .hours-log-table th, .hours-log-table td { padding: 6px 8px; }

  /* Grids - single column */
  .org-grid { grid-template-columns: 1fr; }
  .org-card-grid { grid-template-columns: 1fr; }
  .asset-detail-grid { grid-template-columns: 1fr; gap: 16px; }
  .billing-summary { grid-template-columns: 1fr; }
  .billing-manage-grid { grid-template-columns: 1fr; }
  .billing-toggle { width: 100%; }
  .billing-toggle-btn { flex: 1; text-align: center; padding: 8px 12px; }

  /* Forms */
  .form-row { grid-template-columns: 1fr; }
  .form-actions { flex-direction: column; }
  .form-actions .btn { width: 100%; }
  .inline-form { flex-direction: column; align-items: stretch; }
  .inline-form .btn { width: 100%; }

  /* Choice cards */
  .choice-cards { grid-template-columns: 1fr; }

  /* Modals */
  .modal { padding: 20px; margin: 12px; max-width: 100%; }
  .modal-wide { width: 100%; }
  .modal-footer { flex-direction: column; }
  .modal-footer .btn { width: 100%; }

  /* Auth */
  .auth-card { padding: 24px; margin: 16px; }
  .nav-dropdown-menu { min-width: 160px; }

  /* Filters */
  .filters { padding: 8px 10px; }
  .asset-filters { flex-direction: column; align-items: stretch; padding: 12px; }
  .asset-filters input[type="text"] { min-width: 0; }
  .asset-toolbar { flex-direction: column; align-items: stretch; }

  /* Pagination */
  .pagination { flex-wrap: wrap; gap: 8px; }

  /* User tenant grid */
  .user-tenant-grid { grid-template-columns: 1fr; }

  /* Org cards */
  .org-card { padding: 14px; }
  .org-card-stats { flex-wrap: wrap; gap: 8px; }

  /* Org list items */
  .org-list-item { flex-direction: column; align-items: flex-start; gap: 8px; }

  /* Pricing */
  .pricing-grid { grid-template-columns: 1fr; }
  .pricing-enterprise-stats { grid-template-columns: 1fr; }
  .pricing-stats-grid { grid-template-columns: 1fr; }
  .pricing-projection-grid { grid-template-columns: 1fr; }
  .pricing-usage-stats { grid-template-columns: 1fr; }
  .pricing-trial-banner-inner { flex-direction: column; text-align: center; }
  .pricing-period-toggle { flex-direction: column; gap: 8px; }

  /* Billing manage */
  .billing-manage-form { flex-direction: column; align-items: stretch; }

  /* Buttons */
  .btn { font-size: 13px; padding: 8px 16px; }
  .btn + .btn { margin-left: 0; margin-top: 6px; }
  .btn-block { margin-top: 0; }

  /* Footer */
  .footer { padding: 16px; }

  /* Scope banner */
  .scope-banner { font-size: 12px; flex-wrap: wrap; }

  /* Map */
  .asset-map-picker { height: 200px; }
}

/* Very small screens */
@media (max-width: 420px) {
  .stat-grid { grid-template-columns: 1fr; }
  .asset-stats { grid-template-columns: 1fr; }
  .topbar-link { padding: 4px 6px; font-size: 12px; }
  .page-title { font-size: 20px; }
}

/* ===== Pricing Cards (Portainer-style) ===== */
.pricing-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin-bottom: 32px;
  max-width: 860px;
  margin-left: auto;
  margin-right: auto;
}

.pricing-card {
  padding: 32px 28px;
  display: flex;
  flex-direction: column;
  position: relative;
}
.pricing-card-current {
  border-color: var(--accent);
}

.pricing-card-badge {
  position: absolute;
  top: -1px;
  right: 24px;
  background: var(--accent);
  color: #fff;
  padding: 5px 14px;
  font-size: 12px;
  font-weight: 600;
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
  letter-spacing: 0.3px;
}

.pricing-card-title {
  font-size: 22px;
  font-weight: 700;
  margin: 0 0 4px;
  color: var(--text);
}

.pricing-card-subtitle {
  font-size: 14px;
  color: var(--text-muted);
  margin: 0 0 24px;
}

.pricing-card-price {
  margin-bottom: 24px;
}

.pricing-amount {
  font-size: 36px;
  font-weight: 700;
  color: var(--accent);
}
.pricing-amount-custom {
  font-size: 36px;
  font-weight: 700;
  color: var(--text);
}

.pricing-period {
  font-size: 14px;
  color: var(--text-muted);
}

.pricing-features {
  list-style: none;
  padding: 0;
  margin: 0 0 24px;
  font-size: 14px;
  flex: 1;
}
.pricing-features li {
  padding: 8px 0;
  border-bottom: 1px solid var(--border);
}
.pricing-features li:last-child {
  border-bottom: none;
}

.pricing-feature-included {
  color: var(--text);
}
.pricing-feature-included::before {
  content: '\2713';
  display: inline-block;
  width: 20px;
  color: var(--success);
  font-weight: 700;
  font-size: 15px;
}

.pricing-feature-excluded {
  color: var(--text-muted);
  opacity: 0.65;
}
.pricing-feature-excluded::before {
  content: '\2717';
  display: inline-block;
  width: 20px;
  color: var(--text-muted);
  font-weight: 700;
  font-size: 15px;
}

/* Volume pricing table inside Business card */
.pricing-volume-table {
  border-top: 1px solid var(--border);
  padding-top: 16px;
  margin-bottom: 24px;
}

.pricing-volume-title {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--text-muted);
  margin-bottom: 10px;
}

.pricing-volume-prices {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.pricing-volume-prices th {
  text-align: left;
  padding: 4px 0;
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.pricing-volume-prices th:not(:first-child) {
  text-align: right;
}
.pricing-volume-prices td {
  padding: 4px 0;
}
.pricing-volume-prices td:not(:first-child) {
  text-align: right;
}

/* Card CTA */
.pricing-card-cta {
  margin-top: auto;
}

.pricing-card-current-label {
  display: block;
  text-align: center;
  color: var(--text-muted);
  font-size: 13px;
  font-weight: 500;
  padding: 10px 0;
}

/* Trial Banner */
.pricing-trial-banner {
  background: #f59e0b;
  color: #1a1a1a;
  padding: 14px 24px;
  border-radius: var(--radius-lg);
  margin-bottom: 24px;
}
.pricing-trial-banner-expired {
  background: #ef4444;
  color: #fff;
}
.pricing-trial-banner-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  max-width: var(--max-width);
  margin: 0 auto;
}
.pricing-trial-banner-icon {
  font-size: 20px;
  flex-shrink: 0;
}
.pricing-trial-banner-text {
  font-size: 14px;
  font-weight: 500;
}
.pricing-trial-banner-text strong {
  font-size: 16px;
}
.pricing-trial-banner-cta {
  background: #1a1a1a;
  color: #fff;
  padding: 6px 16px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
  transition: background 0.15s var(--ease);
}
.pricing-trial-banner-cta:hover {
  background: #333;
}
.pricing-trial-banner-expired .pricing-trial-banner-cta {
  background: var(--surface);
  color: #1a1a1a;
}
.pricing-trial-banner-expired .pricing-trial-banner-cta:hover {
  background: #f3f3f3;
}

/* Paid Until Banner */
.pricing-paid-banner {
  border-left: 4px solid var(--accent);
  background: var(--card-bg);
  border-radius: var(--radius-lg);
  padding: 16px 24px;
  margin-bottom: 24px;
}
.pricing-paid-banner-inner {
  display: flex;
  align-items: center;
  gap: 12px;
}
.pricing-paid-banner-icon {
  font-size: 24px;
}
.pricing-paid-banner-title {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color: var(--accent);
}
.pricing-paid-banner-subtitle {
  margin: 4px 0 0;
  font-size: 14px;
  color: var(--text-muted);
}

/* Enterprise Panel */
.pricing-enterprise-panel {
  margin-bottom: 24px;
}
.pricing-enterprise-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
}
.pricing-enterprise-header h3 {
  margin: 0;
}
.pricing-enterprise-stats {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 16px;
}
.pricing-enterprise-stat {
  padding: 16px;
  background: var(--canvas);
  border-radius: var(--radius-sm);
  text-align: center;
}
.pricing-enterprise-stat-label {
  font-size: 12px;
  color: var(--text-muted);
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 4px;
}
.pricing-enterprise-stat-value {
  font-size: 24px;
  font-weight: 700;
  color: var(--text);
}
.pricing-enterprise-stat-sub {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 4px;
}
.pricing-highlight {
  color: var(--accent);
}
.pricing-muted {
  color: var(--text-muted);
}
.pricing-muted-inline {
  font-size: 14px;
  font-weight: 400;
  color: var(--text-muted);
}
.pricing-enterprise-footer {
  margin: 16px 0 0;
  color: var(--text-muted);
  font-size: 13px;
}
.pricing-enterprise-footer a {
  color: var(--accent);
}

/* Period Toggle */
.pricing-period-toggle {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 24px;
}
.pricing-period-label {
  font-size: 14px;
  color: var(--text-muted);
}

/* Section Headers */
.pricing-section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
}
.pricing-section-header h3 {
  margin: 0;
}
.pricing-section-subtitle {
  font-size: 13px;
  color: var(--text-muted);
}

/* Progress Bar */
.pricing-progress-row {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  color: var(--text-muted);
  margin-bottom: 8px;
}
.pricing-progress-bar {
  background: var(--canvas);
  border-radius: var(--radius-sm);
  height: 12px;
  overflow: hidden;
}
.pricing-progress-fill {
  height: 100%;
  background: var(--accent);
  border-radius: var(--radius-sm);
  transition: width 0.3s var(--ease);
}

/* Stats Grid */
.pricing-stats-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-top: 20px;
}
.pricing-stat {
  padding: 16px;
  background: var(--canvas);
  border-radius: var(--radius-sm);
}
.pricing-stat-label {
  font-size: 12px;
  color: var(--text-muted);
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 4px;
}
.pricing-stat-value {
  font-size: 28px;
  font-weight: 700;
  color: var(--text);
}
.pricing-stat-sub {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 2px;
}

/* Cost Projection */
.pricing-projection-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.pricing-projection-col {
  padding: 16px;
  background: var(--canvas);
  border-radius: var(--radius-sm);
}
.pricing-projection-label {
  font-size: 13px;
  color: var(--text-muted);
  margin-bottom: 8px;
  text-transform: uppercase;
  font-weight: 600;
}
.pricing-projection-items {
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 14px;
}
.pricing-projection-row {
  display: flex;
  justify-content: space-between;
}
.pricing-projection-total {
  font-weight: 700;
  border-top: 1px solid var(--border);
  padding-top: 8px;
  margin-top: 4px;
}

/* Usage */
.pricing-usage-intro {
  color: var(--text-muted);
  font-size: 13px;
  margin: 0 0 16px;
}
.pricing-usage-stats {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}
.pricing-usage-stat {
  padding: 16px;
  background: var(--canvas);
  border-radius: var(--radius-sm);
  text-align: center;
}
.pricing-usage-stat-label {
  font-size: 12px;
  color: var(--text-muted);
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 4px;
}
.pricing-usage-stat-value {
  font-size: 28px;
  font-weight: 700;
  color: var(--text);
}
.pricing-usage-empty {
  color: var(--text-muted);
  font-size: 13px;
  margin-top: 8px;
}
.pricing-usage-table {
  margin-top: 12px;
  font-size: 13px;
}

/* Invoice Form */
.pricing-invoice-form {
  display: flex;
  gap: 12px;
  align-items: center;
}
.pricing-invoice-form label {
  font-size: 14px;
  color: var(--text-muted);
}
.pricing-invoice-select {
  width: auto;
  padding: 8px 12px;
}

/* Dark theme overrides */
.pricing-trial-banner {
  background: #b45309;
  color: #fff;
}
.pricing-trial-banner-cta {
  background: var(--surface);
  color: #1a1a1a;
}
.pricing-trial-banner-expired {
  background: #b91c1c;
  color: #fff;
}
.pricing-paid-banner {
  background: var(--card-bg);
}
.pricing-volume-table {
  border-top-color: var(--border);
}
.pricing-enterprise-stat {
  background: rgba(15,23,42,0.5);
}
.pricing-stat {
  background: rgba(15,23,42,0.5);
}
.pricing-projection-col {
  background: rgba(15,23,42,0.5);
}
.pricing-usage-stat {
  background: rgba(15,23,42,0.5);
}
.pricing-progress-bar {
  background: rgba(15,23,42,0.5);
}

/* Responsive */
@media (max-width: 768px) {
  .pricing-grid {
    grid-template-columns: 1fr;
  }
  .pricing-enterprise-stats {
    grid-template-columns: 1fr;
  }
  .pricing-stats-grid {
    grid-template-columns: 1fr;
  }
  .pricing-projection-grid {
    grid-template-columns: 1fr;
  }
  .pricing-usage-stats {
    grid-template-columns: 1fr;
  }
  .pricing-trial-banner-inner {
    flex-direction: column;
    text-align: center;
  }
}

/* ===== Billing ===== */
.billing-toggle {
  display: flex;
  gap: 0;
  margin-bottom: 24px;
  background: var(--card-bg);
  border-radius: 2px;
  border: 1px solid var(--border);
  overflow: hidden;
  width: fit-content;
}
.billing-toggle-btn {
  padding: 10px 24px;
  border: none;
  background: transparent;
  color: var(--text-muted);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s var(--ease);
}
.billing-toggle-btn.active {
  background: var(--accent);
  color: #fff;
}
.billing-toggle-btn:hover:not(.active) {
  background: var(--bg-secondary);
}
.billing-save {
  font-size: 11px;
  background: rgba(16, 185, 129, 0.15);
  color: var(--accent);
  padding: 2px 6px;
  border-radius: 4px;
  margin-left: 6px;
  font-weight: 600;
}
.pricing-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
  margin-bottom: 32px;
}
.pricing-card {
  padding: 24px;
}
.pricing-card-title {
  font-size: 18px;
  font-weight: 600;
  margin: 0 0 4px;
  color: var(--text);
}
.pricing-card-subtitle {
  font-size: 13px;
  color: var(--text-muted);
  margin: 0 0 20px;
}
.pricing-card-price {
  margin-bottom: 20px;
}
.pricing-amount {
  font-size: 36px;
  font-weight: 700;
  color: var(--accent);
}
.pricing-period {
  font-size: 14px;
  color: var(--text-muted);
  margin-left: 2px;
}
.pricing-features {
  list-style: none;
  padding: 0;
  margin: 0;
  font-size: 14px;
  color: var(--text);
}
.pricing-features li {
  padding: 6px 0;
  border-bottom: 1px solid var(--border);
}
.pricing-features li:last-child {
  border-bottom: none;
}
.pricing-features li.muted {
  color: var(--text-muted);
  opacity: 0.6;
}
.billing-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 16px;
}
.billing-stat {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.billing-stat-label {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
  font-weight: 500;
}
.billing-stat-value {
  font-size: 16px;
  font-weight: 600;
  color: var(--text);
}
.billing-highlight {
  color: var(--accent);
}
.billing-save-highlight {
  color: #10b981;
}

/* ===== Billing Manage Panel ===== */
.billing-manage-inner {
  background: var(--canvas);
  border-top: 1px solid var(--border);
  padding: 20px 24px;
}
.billing-manage-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.billing-manage-section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.billing-manage-label {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
}
.billing-manage-form {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.billing-manage-select,
.billing-manage-input {
  padding: 6px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  font-size: 13px;
  background: var(--card-bg);
  color: var(--text);
  transition: border-color 0.15s var(--ease);
}
.billing-manage-select:focus,
.billing-manage-input:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 2px var(--accent-focus);
}
.billing-manage-feedback {
  font-size: 12px;
  font-weight: 600;
  min-width: 60px;
}
.feedback-success { color: var(--success); }
.feedback-error { color: var(--error); }

/* Tier badges for billing table */
.tier-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 9999px;
  font-size: 11px;
  font-weight: 600;
  text-transform: capitalize;
  color: #fff;
}
.tier-free_trial  { background: #f59e0b; }
.tier-business    { background: #2563eb; }
.tier-enterprise  { background: #7c3aed; }


.billing-manage-inner {
  background: rgba(15, 23, 42, 0.5);
}
.billing-manage-select,
.billing-manage-input {
  background: var(--card-bg);
  border-color: var(--border);
  color: var(--text);
}

@media (max-width: 768px) {
  .billing-manage-grid {
    grid-template-columns: 1fr;
  }
}

/* ===== User Edit Modal ===== */
.user-edit-field {
  margin-bottom: 16px;
}
.user-edit-field label {
  display: block;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
  margin-bottom: 4px;
}
.user-edit-field .field-value {
  font-size: 15px;
  color: var(--text);
}
.user-tenant-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 8px;
  max-height: 200px;
  overflow-y: auto;
  padding: 8px 0;
}
.user-tenant-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 6px;
  background: var(--bg-secondary);
}
.user-tenant-item input[type="checkbox"] {
  accent-color: var(--accent);
  width: 16px;
  height: 16px;
}
.user-tenant-item label {
  font-size: 13px;
  color: var(--text);
  text-transform: none;
  letter-spacing: normal;
  margin-bottom: 0;
  cursor: pointer;
}

/* -- Google Maps InfoWindow theming -- */
.gm-style .gm-style-iw {
  border-radius: 2px;
  overflow: hidden;
}
.gm-style .gm-style-iw-c {
  border-radius: 2px;
  padding: 0;
}
.gm-style .gm-style-iw-c {
  background: var(--bg-primary, #1e293b);
  color: var(--text-primary, #f1f5f9);
}
.gm-style .gm-style-iw-t::after {
  background: var(--bg-primary, #1e293b);
}

/* Hide InfoWindow close button */
.gm-style .gm-style-iw-c .gm-ui-hover-effect {
  display: none !important;
}

/* ---- Page Entrance Animation ---- */
.page {
  animation: pageFadeIn 0.4s ease-out;
}
@keyframes pageFadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ---- Stat Card Hover ---- */
.stat-card {
  transition: transform 0.2s ease, opacity 0.2s var(--ease);
}
.stat-card:hover {
  transform: translateY(-2px);
}

/* ---- Org Card Hover ---- */
.org-card {
  transition: background 0.15s var(--ease);
}
.org-card:hover {
  background: var(--hover-bg, rgba(241,245,249,0.5));
}

/* ---- Quick Links ---- */
.quick-links a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  color: var(--text-muted);
  background: var(--canvas);
  transition: all 0.15s var(--ease);
}
.quick-links a:hover {
  color: var(--accent);
  background: var(--accent-light);
}

/* ---- Smooth transitions on theme toggle ---- */
.topbar-link,
.nav-dropdown-trigger,
.tenant-selector-btn,
.btn,
.topbar-avatar {
  transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, border-color 0.2s var(--ease);
}

/* ---- Brand text in topbar ---- */
.topbar-brand-text { display: none; }

@media (min-width: 480px) {
  .topbar-brand-text { display: inline; }
}

/* ---- Logged-in ambient background ---- */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(ellipse at 20% 0%, rgba(179,60,80,0.04) 0%, transparent 50%),
    radial-gradient(ellipse at 80% 100%, rgba(179,60,80,0.03) 0%, transparent 50%);
}
.topbar, .footer { position: relative; z-index: 1; }
.page { position: relative; }

/* ---- Stat card modern ---- */
.stat-card {
  padding: 0;
}
.stat-card .stat-value {
  font-size: 32px;
  font-weight: 800;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.stat-card .stat-label {
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-top: 6px;
}

/* ---- Quick links pill style ---- */
.quick-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.quick-links a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  color: var(--text-muted);
  background: var(--canvas);
  transition: all 0.15s var(--ease);
  text-decoration: none;
}
.quick-links a:hover {
  color: var(--accent);
  background: var(--accent-light);
}

/* ---- Org list modern ---- */
.org-list-item {
  border: none !important;
  background: transparent !important;
  border-radius: 0 !important;
  padding: 14px 0 !important;
  border-bottom: 1px solid var(--border) !important;
  transition: padding-left 0.15s var(--ease);
}
.org-list-item:hover {
  padding-left: 8px;
}
.org-list-item:last-child {
  border-bottom: none !important;
}

/* ---- Section spacing ---- */
.stat-grid + .stat-grid {
  margin-top: -16px;
}

/* ---- Dashboard hero ---- */
.dashboard-hero {
  margin-bottom: 40px;
}
.dashboard-hero h1 {
  font-size: 32px;
  font-weight: 800;
  letter-spacing: -0.03em;
  margin-bottom: 6px;
}
.dashboard-hero p {
  font-size: 15px;
  color: var(--text-muted);
}

/* ---- Table hover ---- */
.data-table tbody tr {
  transition: background 0.12s var(--ease);
}

/* ---- Smooth scroll ---- */
html { scroll-behavior: smooth; min-height: 100%; }
body { min-height: 100%; }

/* ---- Focus visible ---- */
*:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

/* ---- Display utilities (replacing inline style attributes) ---- */
.is-hidden { display: none; }
.is-inline { display: inline; }

/* ===== DJI-SEI consolidated view styles (extracted from EJS <style> blocks) ===== */

/* Dashboard */
.dash-stat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 24px; margin-bottom: 48px; }
.dash-stat { }
.dash-stat .stat-num { font-size: 32px; font-weight: 800; color: var(--soft); letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.dash-stat .stat-lbl { font-size: 12px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.06em; margin-top: 4px; }
.dash-cols { display: grid; grid-template-columns: 2fr 1fr; gap: 48px; margin-bottom: 48px; }
.dash-cols-right { display: flex; flex-direction: column; gap: 48px; }
.dash-section { margin-bottom: 48px; }
.dash-section-title { font-size: 13px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 16px; }
.bar-chart { display: flex; flex-direction: column; gap: 12px; }
.bar-chart-row { display: flex; align-items: center; gap: 12px; }
.bar-chart-label { width: 100px; font-size: 13px; color: var(--muted); flex-shrink: 0; }
.bar-chart-track { flex: 1; height: 8px; background: var(--line); border-radius: 4px; overflow: hidden; }
.bar-chart-fill { height: 100%; border-radius: 4px; transition: width 0.6s ease; }
.bar-chart-value { font-size: 13px; font-weight: 600; color: var(--soft); min-width: 40px; text-align: right; font-variant-numeric: tabular-nums; }
.dash-map { width: 100%; height: 350px; border-radius: 2px; overflow: hidden; }
.activity-feed { display: flex; flex-direction: column; gap: 12px; }
.activity-item { display: flex; align-items: baseline; gap: 8px; font-size: 13px; }
.activity-action { font-weight: 600; color: var(--soft); }
.activity-entity { color: var(--muted); }
.activity-time { color: var(--muted); font-size: 12px; margin-left: auto; white-space: nowrap; }
.activity-user { font-size: 12px; color: var(--muted); }
.org-list { display: flex; flex-direction: column; gap: 8px; }
.org-list-item { display: flex; align-items: center; justify-content: space-between; padding: 10px 0; }
.org-list-info { display: flex; flex-direction: column; gap: 2px; }
.org-list-name { font-weight: 600; font-size: 14px; color: var(--soft); }
.org-list-slug { font-size: 12px; color: var(--muted); }
.bar-h { display: flex; flex-direction: column; gap: 16px; }
.bar-h-row { display: flex; flex-direction: column; gap: 4px; }
.bar-h-top { display: flex; justify-content: space-between; font-size: 13px; }
.bar-h-label { color: var(--muted); }
.bar-h-value { font-weight: 600; font-variant-numeric: tabular-nums; }
.bar-h-track { height: 6px; background: var(--line); border-radius: 3px; overflow: hidden; }
.bar-h-fill { height: 100%; border-radius: 3px; transition: width 0.6s ease; }
@media (max-width: 768px) {
  .dash-cols { grid-template-columns: 1fr; gap: 32px; }
  .dash-stat-grid { grid-template-columns: repeat(2, 1fr); gap: 16px; }
  .dash-map { height: 250px; }
}

/* Tab bar + stat cards (cameras + assets) */
.tab-bar { display: flex; gap: 0; border-bottom: 1px solid var(--line); margin-bottom: 24px; }
.tab-bar .tab { padding: 10px 20px; cursor: pointer; font-size: 14px; font-weight: 500; color: var(--muted); border-bottom: 2px solid transparent; transition: color 0.15s, border-color 0.15s; }
.tab-bar .tab:hover { color: var(--soft); }
.tab-bar .tab.active { color: var(--soft); border-bottom-color: var(--brand); }
.tab-content { display: none; }
.tab-content.active { display: block; }
.stat-card { background: var(--surface); border: 1px solid var(--line); border-radius: 2px; padding: 20px; }
.stat-card .stat-value { font-size: 32px; font-weight: 700; color: var(--soft); }
.stat-card .stat-label { font-size: 13px; color: var(--muted); margin-top: 4px; }
.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; margin-bottom: 24px; }
#camera-map { width: 100%; height: 500px; border-radius: 2px; border: 1px solid var(--line); }
#gps-map { width: 100%; height: 500px; border-radius: 2px; border: 1px solid var(--line); }
.btn-delete { color: var(--danger); }

/* Assets: icon grid + type bars + tag pills */
.icon-grid { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
.icon-option { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 8px; border: 2px solid var(--line); border-radius: 2px; cursor: pointer; transition: border-color 0.15s, background 0.15s; min-width: 70px; }
.icon-option:hover { border-color: var(--brand); background: var(--brand-wash); }
.icon-option.selected { border-color: var(--brand); background: var(--brand-wash); }
.icon-option svg { width: 28px; height: 28px; }
.icon-option span { font-size: 10px; color: var(--muted); text-align: center; line-height: 1.1; }
.type-icon-cell { display: flex; align-items: center; gap: 6px; }
.type-icon-cell svg { width: 20px; height: 20px; }
.type-bar { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.type-bar .bar-label { width: 120px; font-size: 13px; color: var(--soft); flex-shrink: 0; }
.type-bar .bar-track { flex: 1; height: 24px; background: var(--surface-bright); border-radius: 4px; overflow: hidden; }
.type-bar .bar-fill { height: 100%; background: var(--brand); border-radius: 4px; min-width: 2px; }
.type-bar .bar-count { font-size: 13px; color: var(--muted); width: 30px; text-align: right; flex-shrink: 0; }
.tag-pill { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 9999px; font-size: 12px; font-weight: 500; text-decoration: none; }
.tag-pill-remove { cursor: pointer; font-weight: 700; margin-left: 2px; opacity: 0.6; }
.tag-pill-remove:hover { opacity: 1; }
.color-swatch { display: inline-block; width: 16px; height: 16px; border-radius: 50%; cursor: pointer; border: 2px solid rgba(226,235,235,0.8); box-shadow: 0 0 0 1px rgba(0,0,0,0.1); vertical-align: middle; }
.color-input-wrapper { position: relative; display: inline-block; }
.color-input-wrapper input[type="color"] { width: 36px; height: 30px; padding: 2px; border: 1px solid var(--line); border-radius: 4px; cursor: pointer; background: none; }
.tag-select-grid { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.tag-checkbox { display: flex; align-items: center; gap: 4px; font-size: 13px; }
.tag-checkbox input { margin: 0; }

/* Asset detail: pill selector + tag pills + toast */
.pill-selector { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.pill-checkbox { display: none; }
.pill-label {
  display: inline-block; padding: 4px 12px; border-radius: 14px;
  font-size: 13px; font-weight: 500; cursor: pointer;
  border: 1px solid var(--line); color: var(--muted);
  background: transparent; transition: all 0.15s;
}
.pill-checkbox:checked + .pill-label {
  background: var(--brand-wash); color: var(--brand); border-color: var(--brand);
}
.pill-new-input {
  border: 1px solid var(--line); border-radius: 14px;
  padding: 4px 10px; font-size: 13px; width: 120px; outline: none;
  background: var(--surface); color: var(--soft);
}
.pill-new-input:focus { border-color: var(--brand); }
.pill-add-btn {
  padding: 4px 10px; border-radius: 14px; font-size: 13px;
  background: var(--brand); color: var(--canvas); border: none;
  cursor: pointer; font-weight: 500;
}
.pill-add-btn:hover { opacity: 0.9; }
.asset-tag-pill {
  display: inline-block; padding: 2px 10px; border-radius: 12px;
  font-size: 12px; font-weight: 500;
  margin: 2px 4px 2px 0;
  cursor: default;
}
.asset-tag-remove {
  cursor: pointer; margin-left: 4px; opacity: 0.6;
  font-weight: 700; font-size: 14px; background: none; border: none; color: inherit;
  padding: 0; line-height: 1;
}
.asset-tag-remove:hover { opacity: 1; color: var(--danger); }
/* Toast notification */
.toast {
  position: fixed; bottom: 24px; right: 24px; z-index: 10000;
  padding: 10px 20px; border-radius: 6px;
  background: var(--success); color: var(--canvas); font-size: 14px; font-weight: 500;
  box-shadow: 0 4px 12px rgba(0,0,0,0.15);
  opacity: 0; transition: opacity 0.3s;
}
.toast.show { opacity: 1; }
.toast.error { background: var(--danger); }
.modal-error {
  color: var(--danger); font-size: 13px; margin-top: 8px;
  padding: 8px 12px; background: var(--brand-wash); border-radius: 4px;
  border: 1px solid var(--line-strong);
}

/* ---- Settings MFA status badges ---- */
.mfa-badge {
  display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px;
  border-radius: 9999px; font-size: 13px; font-weight: 600;
}
.mfa-badge-on { background: var(--brand-wash); color: var(--success); }
.mfa-badge-off { background: var(--brand-wash); color: var(--amber); }
.mfa-badge-required { background: var(--brand-wash); color: var(--danger); }

/* ---- Settings inline layout helpers ---- */
.settings-card { margin-bottom: 24px; }
.mfa-row { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.mfa-desc { color: var(--muted); margin-bottom: 16px; }
.input-disabled { opacity: 0.6; }
.mfa-hint { color: var(--muted); margin-top: 4px; display: block; }
.mfa-code-label { color: var(--muted); font-weight: 400; }
.org-mfa-row { display: flex; align-items: center; gap: 12px; }
.org-mfa-check { display: flex; align-items: center; gap: 8px; cursor: pointer; }
.org-mfa-check input { width: 18px; height: 18px; cursor: pointer; }
.btn-save-policy { margin-top: 12px; }
.btn-disable-mfa { background: var(--line); color: var(--soft); }

/* ---- Scope banner helper ---- */
.scope-row { display: flex; align-items: center; gap: 8px; margin-top: 4px; }
.scope-link { font-size: 12px; color: var(--brand); }
.scope-margin { margin-bottom: 16px; }

/* ---- Inline form filter helpers ---- */
.filter-form { gap: 12px; flex-wrap: wrap; }
.filter-group { margin-bottom: 0; min-width: 160px; }
.filter-end { margin-bottom: 0; align-self: flex-end; }
.filter-input { padding: 8px 12px; }
.filter-btn { padding: 8px 16px; }

/* ---- Small button / pagination helpers ---- */
.btn-add { margin-left: auto; }
.btn-sm-pad { padding: 4px 12px; font-size: 12px; }
.btn-sm-page { padding: 4px 12px; font-size: 13px; }
.btn-edit-inline { margin-left: auto; }
.muted-sm { font-size: 14px; }
.muted-xs { font-size: 13px; margin-top: 4px; }
.text-bold { font-weight: 500; }
.card-mt { margin-top: 16px; }
.card-mt-sm { margin-top: 16px; }
.pagination-row { margin-top: 16px; display: flex; gap: 8px; justify-content: center; }
.form-inline { display: inline; }
.preview-center { text-align: center; padding: 24px 0; }
.danger-desc { margin-bottom: 16px; }
.detail-label-col { width: 180px; }
.code-break { word-break: break-all; }
.map-detail { width: 100%; height: 350px; border-radius: 2px; border: 1px solid var(--line); }
.asset-tags-list { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 12px; }
.asset-tags-empty { margin-bottom: 12px; }

/* ---- Utility classes for inline style migration ---- */
.flex-row { display: flex; gap: 8px; }
.flex-wrap { flex-wrap: wrap; }
.flex-center { display: flex; gap: 8px; align-items: center; }
.btn-sm { padding: 4px 12px; font-size: 12px; }
.btn-compact { padding: 8px 16px; }
.modal-hidden { display: none; }
.text-sm { font-size: 13px; }

/* ===== Extracted from tenants.ejs ===== */
.tab-bar { display: flex; gap: 0; border-bottom: 1px solid var(--line); margin-bottom: 24px; }
.tab-bar .tab { padding: 10px 20px; cursor: pointer; font-size: 14px; font-weight: 500; color: var(--muted); border-bottom: 2px solid transparent; transition: color 0.15s, border-color 0.15s; }
.tab-bar .tab:hover { color: var(--soft); }
.tab-bar .tab.active { color: var(--soft); border-bottom-color: var(--brand); }
.tab-content { display: none; }
.tab-content.active { display: block; }
.stat-card { background: var(--surface); border: 1px solid var(--line); border-radius: 2px; padding: 20px; }
.stat-card .stat-value { font-size: 32px; font-weight: 700; color: var(--soft); }
.stat-card .stat-label { font-size: 13px; color: var(--muted); margin-top: 4px; }
.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; margin-bottom: 24px; }

/* ===== Extracted from audit.ejs ===== */
.audit-filters { display: flex; flex-direction: column; gap: 12px; }
.audit-filter-row { display: flex; gap: 12px; flex-wrap: wrap; }
.audit-filter-group { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 150px; }
.audit-filter-group .btn { margin-top: auto; }
.table-wrapper { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.table-wrapper .data-table { min-width: 700px; }

/* ===== Extracted from super_admin_dashboard.ejs ===== */
.dash-stat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 24px; margin-bottom: 48px; }
.dash-stat { }
.dash-stat .stat-num { font-size: 32px; font-weight: 800; color: var(--soft); letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.dash-stat .stat-lbl { font-size: 12px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.06em; margin-top: 4px; }

.dash-cols { display: grid; grid-template-columns: 2fr 1fr; gap: 48px; margin-bottom: 48px; }
.dash-cols-right { display: flex; flex-direction: column; gap: 48px; }

.dash-section { margin-bottom: 48px; }
.dash-section-title { font-size: 13px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 20px; }

.status-bar { display: flex; height: 8px; border-radius: 999px; overflow: hidden; margin-bottom: 12px; }
.status-bar-seg { height: 100%; transition: width 0.6s ease; }
.status-bar-seg.active { background: var(--brand); }
.status-bar-seg.inactive { background: var(--line); }
.status-bar-seg.pending { background: var(--amber); }
.status-bar-legend { display: flex; gap: 20px; font-size: 13px; color: var(--muted); }
.status-bar-legend span { display: flex; align-items: center; gap: 6px; }
.status-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.status-dot.active { background: var(--brand); }
.status-dot.inactive { background: var(--line); }
.status-dot.pending { background: var(--amber); }

.bar-chart { display: flex; flex-direction: column; gap: 12px; }
.bar-chart-row { display: flex; align-items: center; gap: 12px; }
.bar-chart-label { width: 120px; font-size: 13px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 0; }
.bar-chart-track { flex: 1; height: 24px; background: var(--canvas); border-radius: 6px; overflow: hidden; position: relative; }
.bar-chart-fill { height: 100%; background: var(--brand); border-radius: 6px; transition: width 0.6s ease; opacity: 0.85; }
.bar-chart-fill-secondary { position: absolute; height: 100%; background: var(--brand); opacity: 0.3; border-radius: 6px; transition: width 0.6s ease; }
.bar-chart-value { width: 60px; font-size: 13px; font-weight: 600; color: var(--soft); text-align: right; flex-shrink: 0; font-variant-numeric: tabular-nums; }

.tier-bar { display: flex; flex-direction: column; gap: 8px; }
.tier-row { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.tier-row .tier-name { width: 100px; color: var(--muted); text-transform: capitalize; }
.tier-row .tier-track { flex: 1; height: 6px; background: var(--canvas); border-radius: 999px; overflow: hidden; }
.tier-row .tier-fill { height: 100%; border-radius: 999px; transition: width 0.6s ease; }
.tier-row .tier-count { font-weight: 600; font-variant-numeric: tabular-nums; width: 30px; text-align: right; }

.dash-map { width: 100%; height: 320px; border-radius: 2px; overflow: hidden; }

.audit-feed { display: flex; flex-direction: column; gap: 0; }
.audit-row { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 13px; }
.audit-row:last-child { border-bottom: none; }
.audit-action { font-weight: 600; color: var(--soft); text-transform: capitalize; min-width: 80px; }
.audit-type { color: var(--muted); font-size: 12px; }
.audit-user { color: var(--brand); font-size: 12px; flex: 1; }
.audit-time { color: var(--muted); font-size: 11px; white-space: nowrap; font-variant-numeric: tabular-nums; }

.org-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.org-table th { text-align: left; padding: 10px 12px; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted); border-bottom: 1px solid var(--line); }
.org-table td { padding: 12px; border-bottom: 1px solid var(--line); vertical-align: middle; }
.org-table tbody tr:hover { background: var(--brand-wash); }
.org-table .num { font-variant-numeric: tabular-nums; text-align: center; }
.org-table a { color: var(--brand); font-weight: 500; }

@media (max-width: 768px) {
  .dash-cols { grid-template-columns: 1fr; gap: 32px; }
  .dash-cols-right { gap: 32px; }
  .dash-stat-grid { grid-template-columns: repeat(2, 1fr); gap: 16px; }
  .dash-stat .stat-num { font-size: 24px; }
  .dash-map { height: 220px; }
  .bar-chart-label { width: 80px; }
  .org-table { display: block; overflow-x: auto; white-space: nowrap; }
}

/* ===== Admin billing helpers ===== */
.billing-summary { margin-bottom: 2rem; }
.billing-stat { background: var(--surface); border: 1px solid var(--line); border-radius: 2px; padding: 1.5rem; text-align: center; }
.billing-org-table { width: 100%; border-collapse: collapse; background: var(--surface); border: 1px solid var(--line); border-radius: 2px; overflow: hidden; }
.billing-manage-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; padding: 1rem; }
.billing-manage-section { display: flex; flex-direction: column; gap: 0.5rem; }
.billing-manage-label { font-size: 0.8rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; font-weight: 600; }
.billing-manage-form { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.billing-manage-select, .billing-manage-input { padding: 6px 10px; background: var(--surface-bright); border: 1px solid var(--line); border-radius: 4px; color: var(--soft); font-size: 0.85rem; }
.billing-manage-feedback { font-size: 0.75rem; color: var(--muted); }
.feedback-success { color: var(--success); }
.feedback-error { color: var(--danger); }
.tier-badge { padding: 0.2rem 0.6rem; border-radius: 9999px; font-size: 0.7rem; font-weight: 600; text-transform: capitalize; }
.tier-free_trial { background: rgba(241,184,91,0.13); color: var(--amber); }
.tier-business { background: var(--brand-wash); color: var(--brand-bright); }
.tier-enterprise { background: rgba(105,215,231,0.13); color: var(--cyan); }

/* ===== Tenant detail helpers ===== */
.loc-type-badge { font-size: 12px; padding: 2px 8px; border-radius: 4px; }
.loc-type-dynamic { background: rgba(105,215,231,0.1); color: var(--cyan); }
.loc-type-fixed { background: rgba(94,211,154,0.1); color: var(--success); }
.dsn-mono { font-family: monospace; font-size: 13px; }
.stream-video { width: 100%; background: var(--canvas); }
.stream-status { padding: 8px 16px; color: var(--brand); font-size: 0.85rem; }
.modal-stream { max-width: 720px; }
.modal-body-nopad { padding: 0; }

/* ===== Admin billing table helpers ===== */
.billing-th-left { padding: 0.75rem 1rem; text-align: left; color: var(--muted); font-size: 0.8rem; text-transform: uppercase; }
.billing-th-right { padding: 0.75rem 1rem; text-align: right; color: var(--muted); font-size: 0.8rem; text-transform: uppercase; }
.billing-th-center { padding: 0.75rem 1rem; text-align: center; color: var(--muted); font-size: 0.8rem; text-transform: uppercase; }
.billing-td-left { padding: 0.75rem 1rem; color: var(--soft); }
.billing-td-muted { padding: 0.75rem 1rem; color: var(--muted); }
.billing-td-right { padding: 0.75rem 1rem; text-align: right; color: var(--soft); font-variant-numeric: tabular-nums; }
.billing-td-center { padding: 0.75rem 1rem; text-align: center; color: var(--soft); }
.billing-row-border { border-top: 1px solid var(--line); }
.billing-row-bottom-border { border-bottom: 1px solid var(--line); }
.billing-h2 { color: var(--soft); margin-bottom: 1rem; }
.billing-margin-bottom { margin-bottom: 2rem; }
.billing-stat-label { font-size: 0.85rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; }
.billing-stat-value { font-size: 2rem; font-weight: 700; color: var(--soft); margin: 0.5rem 0; }
.billing-stat-sub { font-size: 0.8rem; color: var(--muted); }
.billing-td-success { padding: 0.75rem 1rem; text-align: right; color: var(--success); font-variant-numeric: tabular-nums; }
.billing-status-badge { padding: 0.2rem 0.6rem; border-radius: 9999px; font-size: 0.7rem; font-weight: 600; text-transform: capitalize; }

/* ===== Org detail form helpers ===== */
.org-form-panel { margin-bottom: 1.5rem; padding: 1rem; background: var(--surface); border: 1px solid var(--line); border-radius: 2px; }
.org-form-panel-last { margin-bottom: 0; padding: 1rem; background: var(--surface); border: 1px solid var(--line); border-radius: 2px; }
.org-form-row { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.org-form-label { font-weight: 600; margin-bottom: 0.75rem; }
.org-form-hint { font-size: 0.8rem; color: var(--muted); margin-bottom: 0.5rem; }
.org-form-result { margin-top: 0.5rem; font-size: 0.85rem; display: none; }
.org-paid-status { margin-bottom: 1.5rem; padding: 1rem; background: var(--surface); border: 1px solid var(--line); border-radius: 2px; }
.org-paid-status-label { font-weight: 600; margin-bottom: 0.5rem; }
.org-paid-status-text { font-size: 0.9rem; color: var(--muted); }

/* ===== Tenant detail helpers ===== */
.td-muted-sm { font-weight:400; font-size:13px; margin-left:8px; }
.td-hint-sm { font-size:13px; margin-top:4px; }
.td-width-auto { width: auto; }
.td-width-160 { width: 160px; }
.td-width-180 { width: 180px; }
.td-btn-margin-auto { margin-left: auto; }

/* ===== Width helpers ===== */
.w-80px { width: 80px; }
.w-100px { width: 100px; }
.w-120px { width: 120px; }
.w-140px { width: 140px; }
.w-160px { width: 160px; }
.w-180px { width: 180px; }
.w-200px { width: 200px; }

/* ===== Display helpers ===== */
.display-none { display: none; }
.display-inline { display: inline; }

/* ---- Admin billing utility classes ---- */
.billing-section { margin-bottom: 2rem; }
.billing-section-title { color: var(--soft); margin-bottom: 1rem; }
.billing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; }
.billing-stat-card { background: var(--surface); border: 1px solid var(--line); border-radius: 2px; padding: 1.5rem; text-align: center; }
.billing-stat-label { font-size: 0.85rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; }
.billing-stat-value { font-size: 2rem; font-weight: 700; color: var(--soft); margin: 0.5rem 0; }
.billing-stat-value-success { font-size: 2rem; font-weight: 700; color: var(--success); margin: 0.5rem 0; }
.billing-stat-value-danger { font-size: 2rem; font-weight: 700; color: var(--danger); margin: 0.5rem 0; }
.billing-stat-sub { font-size: 0.8rem; color: var(--muted); }
.billing-table { width: 100%; border-collapse: collapse; background: var(--surface); border: 1px solid var(--line); border-radius: 2px; overflow: hidden; }
.billing-table-head { background: var(--surface-bright); }
.billing-th { padding: 0.75rem 1rem; text-align: left; color: var(--muted); font-size: 0.8rem; text-transform: uppercase; }
.billing-th-right { padding: 0.75rem 1rem; text-align: right; color: var(--muted); font-size: 0.8rem; text-transform: uppercase; }
.billing-th-center { padding: 0.75rem 1rem; text-align: center; color: var(--muted); font-size: 0.8rem; text-transform: uppercase; }
.billing-td { padding: 0.75rem 1rem; color: var(--soft); }
.billing-td-muted { padding: 0.75rem 1rem; color: var(--muted); }
.billing-td-right { padding: 0.75rem 1rem; text-align: right; color: var(--soft); font-variant-numeric: tabular-nums; }
.billing-td-right-success { padding: 0.75rem 1rem; text-align: right; color: var(--success); font-variant-numeric: tabular-nums; }
.billing-td-center { padding: 0.75rem 1rem; text-align: center; color: var(--soft); }
.billing-row { border-top: 1px solid var(--line); }
.billing-row-bottom { border-bottom: 1px solid var(--line); }
.billing-badge-paid { background: var(--success); color: var(--success); padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; }
.billing-badge-expired { background: var(--danger); color: var(--danger); padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; }
.billing-invoice-status { padding: 0.2rem 0.6rem; border-radius: 9999px; font-size: 0.7rem; font-weight: 600; text-transform: capitalize; }
.billing-manage-panel-hidden { display: none; }
.billing-input-narrow { width: 80px; }
.billing-th-sm { padding: 0.75rem 1rem; text-align: left; color: var(--muted); font-size: 0.85rem; }
.billing-th-sm-right { padding: 0.75rem 1rem; text-align: right; color: var(--muted); font-size: 0.85rem; }

/* ---- Admin page utility classes ---- */
.admin-section { margin-bottom: 2rem; }
.admin-section-title { color: var(--soft); margin-bottom: 1rem; }
.admin-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; }
.admin-table { width: 100%; border-collapse: collapse; background: var(--surface); border: 1px solid var(--line); border-radius: 2px; overflow: hidden; }
.admin-table-head { background: var(--surface-bright); }
.admin-th { padding: 0.75rem 1rem; text-align: left; color: var(--muted); font-size: 0.8rem; text-transform: uppercase; }
.admin-th-right { padding: 0.75rem 1rem; text-align: right; color: var(--muted); font-size: 0.8rem; text-transform: uppercase; }
.admin-th-center { padding: 0.75rem 1rem; text-align: center; color: var(--muted); font-size: 0.8rem; text-transform: uppercase; }
.admin-td { padding: 0.75rem 1rem; color: var(--soft); }
.admin-td-muted { padding: 0.75rem 1rem; color: var(--muted); }
.admin-td-right { padding: 0.75rem 1rem; text-align: right; color: var(--soft); }
.admin-td-center { padding: 0.75rem 1rem; text-align: center; color: var(--soft); }
.admin-td-bold { padding: 0.75rem 1rem; color: var(--soft); font-weight: 600; }
.admin-row { border-top: 1px solid var(--line); }
.admin-row-bottom { border-bottom: 1px solid var(--line); }
.admin-stat-card { background: var(--surface); border: 1px solid var(--line); border-radius: 2px; padding: 1.5rem; text-align: center; }
.admin-stat-label { font-size: 0.85rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; }
.admin-stat-value { font-size: 2rem; font-weight: 700; color: var(--soft); margin: 0.5rem 0; }
.admin-stat-sub { font-size: 0.8rem; color: var(--muted); }
.admin-badge { padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; }
.admin-badge-success { background: var(--success); color: var(--success); padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; }
.admin-badge-danger { background: var(--danger); color: var(--danger); padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; }
.admin-badge-muted { background: var(--muted); color: var(--muted); padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; }
.admin-flex { display: flex; gap: 0.5rem; align-items: center; }
.admin-flex-wrap { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.admin-mt-1 { margin-top: 0.5rem; }
.admin-mt-2 { margin-top: 1rem; }
.admin-mb-1 { margin-bottom: 0.5rem; }
.admin-mb-2 { margin-bottom: 1rem; }
.admin-hidden { display: none; }
.admin-w-80 { width: 80px; }

/* ---- More admin utility classes ---- */
.w-180 { width: 180px; }
.w-140 { width: 140px; }
.w-200 { width: 200px; }
.w-auto { width: auto; }
.ml-auto { margin-left: auto; }
.display-inline { display: inline; }
.nowrap { white-space: nowrap; }
.mono { font-family: monospace; }
.fs-13 { font-size: 13px; }
.fs-14 { font-size: 14px; }
.fs-085 { font-size: 0.85rem; }
.fs-09 { font-size: 0.9rem; }
.fw-600 { font-weight: 600; }
.fw-400 { font-weight: 400; }
.text-right { text-align: right; }
.text-center { text-align: center; }
.break-all { word-break: break-all; }
.gap-12 { gap: 12px; }
.data-yearly-hidden[data-yearly] { display: none; }
.admin-card { margin-bottom: 1.5rem; padding: 1rem; background: var(--surface); border: 1px solid var(--line); border-radius: 2px; }

/* ---- Additional utility classes ---- */
.input-mono { font-family: monospace; font-size: 13px; }
.flex-1-min200 { flex: 1; min-width: 200px; }
.w-auto-min140 { width: auto; min-width: 140px; }
.modal-wide { max-width: 720px; }
.modal-body-nopad { padding: 0; }
.video-player { width: 100%; background: var(--canvas); }
.camera-live-stage { position: relative; min-height: 280px; background: #090b0c; overflow: hidden; }
.camera-live-stage .video-player { display: block; min-height: 280px; max-height: 70vh; object-fit: contain; }
.camera-live-stage canvas { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.camera-live-controls { display: flex; align-items: center; gap: 18px; padding: 9px 16px; border-top: 1px solid var(--border); background: var(--surface); font-size: .82rem; }
.camera-live-controls label { display: inline-flex; align-items: center; gap: 7px; }
.stream-status { padding: 8px 16px; color: var(--brand); font-size: 0.85rem; }
.mw-640 { max-width: 640px; width: 90%; }

/* ---- Visual parity fixes ---- */

/* Monospace font stack for data values */
.mono, .data-value, .stat-value, .timestamp, .code, pre, code, .tabular {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}

/* Apply monospace to table data cells and stat values */
.data-table td, .data-table th, .stat-value, .stat-card .value {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* Keyframe animations from DJI-SEI */
@keyframes breathe {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.4; }
}

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

@keyframes spin {
  to { transform: rotate(360deg); }
}

@keyframes toastEnter {
  from { opacity: 0; transform: translateY(-12px) scale(0.95); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

/* Status dot breathe */
.status-dot, .badge-dot {
  animation: breathe 2.5s var(--ease) infinite;
}

/* Page content enter animation */
.page > * {
  animation: enter 0.4s var(--ease) both;
}

/* Scrollbar styling */
* {
  scrollbar-color: #343b3c transparent;
}

/* Tap highlight removal */
button, a {
  -webkit-tap-highlight-color: transparent;
}

/* Spinner utility */
.spinner {
  width: 16px;
  height: 16px;
  border: 2px solid var(--line-strong);
  border-top-color: var(--brand-bright);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

/* ---- Release notes dialog (DJI-SEI style) ---- */
.release-notes-trigger { appearance: none; padding: 0; border: 0; color: var(--muted); background: transparent; cursor: pointer; font: 700 8px ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .08em; text-transform: uppercase; transition: color .2s var(--ease), transform .2s var(--ease); }
.release-notes-trigger:hover, .release-notes-trigger:focus-visible { color: var(--soft); transform: translateY(-1px); outline: none; }
.release-notes-dialog { width: min(1040px, calc(100% - 42px)); height: min(760px, calc(100% - 42px)); max-width: none; max-height: none; padding: 0; overflow: hidden; border: 1px solid var(--line-strong); border-radius: 2px; color: var(--text); background: rgba(10,13,14,.985); box-shadow: 0 35px 110px rgba(0,0,0,.68); }
.release-notes-dialog::backdrop { background: rgba(3,5,6,.78); backdrop-filter: blur(9px); }
.release-dialog-heading { height: 106px; display: flex; align-items: center; justify-content: space-between; padding: 0 34px; border-bottom: 1px solid var(--line); background: linear-gradient(90deg, rgba(179,60,80,.08), transparent 42%); }
.release-dialog-heading h2 { margin: 7px 0 4px; font-size: 28px; font-weight: 440; letter-spacing: -.035em; color: var(--text); }
.release-dialog-heading small { color: var(--muted); font: 8px ui-monospace, SFMono-Regular, Menlo, monospace; }
.release-dialog-heading .eyebrow { color: var(--brand-bright); font-size: 8px; font-weight: 750; letter-spacing: .2em; text-transform: uppercase; }
#close-release-notes { appearance: none; width: 38px; height: 38px; border: 1px solid var(--line); color: var(--soft); background: transparent; cursor: pointer; font-size: 25px; font-weight: 300; line-height: 1; transition: color .2s var(--ease), border-color .2s var(--ease), background .2s var(--ease); }
#close-release-notes:hover { color: #fff; border-color: rgba(223,86,109,.5); background: var(--brand-wash); }
.release-dialog-layout { height: calc(100% - 106px); display: grid; grid-template-columns: 230px minmax(0, 1fr); }
#release-notes-list { padding: 17px 0; overflow-y: auto; border-right: 1px solid var(--line); scrollbar-width: thin; scrollbar-color: #343b3c transparent; }
#release-notes-list > span { display: block; padding: 15px 25px; color: var(--muted); font-size: 9px; line-height: 1.5; }
#release-notes-list button { appearance: none; width: 100%; display: grid; gap: 5px; padding: 14px 25px; border: 0; border-left: 2px solid transparent; color: var(--soft); background: transparent; cursor: pointer; text-align: left; transition: color .2s var(--ease), background .2s var(--ease), border-color .2s var(--ease); }
#release-notes-list button strong { font-size: 10px; font-weight: 610; color: var(--text); }
#release-notes-list button span { color: var(--muted); font: 7px ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .08em; text-transform: uppercase; }
#release-notes-list button:hover { color: #f0f3f3; background: rgba(255,255,255,.025); }
#release-notes-list button.active { color: #fff; border-left-color: var(--brand-bright); background: linear-gradient(90deg, rgba(179,60,80,.15), rgba(179,60,80,.025)); }
.release-markdown { padding: 34px clamp(30px, 5vw, 68px) 60px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #343b3c transparent; }
.release-markdown > :first-child { margin-top: 0; }
.release-markdown h1 { margin: 0 0 32px; color: #f4f6f6; font-size: clamp(27px, 4vw, 42px); font-weight: 430; line-height: 1.08; letter-spacing: -.04em; }
.release-markdown h2 { margin: 38px 0 14px; padding-top: 23px; border-top: 1px solid var(--line); color: #e7ebeb; font-size: 16px; font-weight: 580; letter-spacing: -.01em; }
.release-markdown h3, .release-markdown h4 { margin: 27px 0 11px; color: #d9dede; font-size: 12px; font-weight: 620; }
.release-markdown p, .release-markdown li, .release-markdown blockquote { color: #aab3b4; font-size: 10px; line-height: 1.75; }
.release-markdown ul, .release-markdown ol { margin: 11px 0 21px; padding-left: 19px; }
.release-markdown li { margin: 7px 0; padding-left: 6px; }
.release-markdown li::marker { color: var(--brand-bright); }
.release-markdown code { padding: 2px 5px; color: #f2a3b0; background: rgba(179,60,80,.1); font: 9px ui-monospace, SFMono-Regular, Menlo, monospace; }
.release-markdown pre { margin: 20px 0; padding: 17px; overflow-x: auto; border-left: 2px solid var(--brand); background: #07090a; }
.release-markdown pre code { padding: 0; color: #cad1d1; background: transparent; line-height: 1.6; }
.release-markdown a { color: #84dce8; text-decoration-color: rgba(105,215,231,.4); text-underline-offset: 3px; }

/* ---- Portal / Dashboard tile grid ---- */
.portal-screen { min-height: 100vh; min-height: 100dvh; background: radial-gradient(circle at 72% 18%, rgba(179,60,80,.12), transparent 33%), linear-gradient(120deg,#080a0b,#0d1112 66%,#090b0c); overflow-x: hidden; overflow-y: auto; overscroll-behavior-y: contain; scrollbar-gutter: stable; }
.portal-header { position: sticky; z-index: 30; top: 0; height: 82px; display: flex; align-items: center; justify-content: space-between; padding: 0 clamp(24px,5vw,74px); border-bottom: 1px solid var(--line); background: rgba(9,12,13,.94); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); }
.portal-header .entry-brand img { width: 32px; height: 32px; }
.portal-header .entry-brand { font-size: 15px; }
.portal-header .entry-brand small { font-size: 7px; }
.portal-home { appearance: none; padding: 0; border: 0; background: transparent; cursor: pointer; text-align: left; }
.portal-nav { min-width: 0; display: flex; align-items: center; justify-content: flex-end; gap: 22px; color: #8d9798; font-size: 9px; white-space: nowrap; }
.portal-nav-link { padding: 8px 0; border: 0; color: #aeb6b7; background: transparent; cursor: pointer; font-size: 9px; font-weight: 680; text-decoration: none; transition: color .2s var(--ease), transform .2s var(--ease); }
.portal-nav-link:hover { color: #fff; transform: translateY(-1px); }
.portal-content { width: min(1180px,calc(100% - 48px)); margin: 0 auto; padding: clamp(20px,4vh,48px) 0 24px; }
.portal-content .eyebrow { color: var(--brand-bright); font-size: 8px; font-weight: 750; letter-spacing: .2em; text-transform: uppercase; display: block; margin-bottom: 6px; }
.portal-content h1 { margin: 12px 0 10px; font-size: clamp(30px,4vw,52px); line-height: 1; font-weight: 430; letter-spacing: -.045em; color: #edf0f0; }
.portal-content > p { max-width: 610px; margin: 0 0 16px; color: var(--muted); font-size: 11px; line-height: 1.65; }

.mode-options { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1px; margin-top: 16px; background: var(--line); border: 1px solid var(--line); }
.mode-tile { min-height: 190px; display: flex; flex-direction: column; align-items: flex-start; padding: 26px 28px; border: 0; color: #e9eded; background: #0d1112; text-align: left; cursor: pointer; text-decoration: none; transition: background .3s var(--ease), transform .3s var(--ease); position: relative; }
.mode-tile:hover { position: relative; z-index: 1; background: #131819; transform: translateY(-4px); }
.mode-tile i { color: var(--brand-bright); font: 750 8px ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing: .18em; font-style: normal; }
.mode-tile strong { margin-top: auto; font-size: 24px; font-weight: 470; letter-spacing: -.03em; }
.mode-tile span { max-width: 430px; margin-top: 8px; color: var(--muted); font-size: 11px; line-height: 1.6; }
.mode-tile em { margin-top: 14px; color: #d9dede; font-size: 10px; font-style: normal; font-weight: 690; }

.portal-stats { display: flex; flex-wrap: wrap; gap: 1px; margin-top: 16px; background: var(--line); border: 1px solid var(--line); }
.portal-stat { flex: 1 1 0; min-width: 120px; padding: 14px 20px; background: #0d1112; }
.portal-stat-num { font-size: 22px; font-weight: 430; letter-spacing: -.03em; color: #edf0f0; font-variant-numeric: tabular-nums; }
.portal-stat-lbl { margin-top: 4px; font-size: 8px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }

@media (max-width: 768px) {
  .portal-header { padding: 0 20px; }
  .portal-header .entry-brand small { display: none; }
  .portal-nav { gap: 14px; overflow-x: auto; scrollbar-width: none; }
  .portal-nav::-webkit-scrollbar { display: none; }
  .portal-content { width: calc(100% - 38px); padding: 50px 0 max(90px,calc(env(safe-area-inset-bottom) + 60px)); }
  .mode-options { grid-template-columns: 1fr; }
  .mode-tile { min-height: 120px; padding: 16px; }
  .portal-stats { grid-template-columns: 1fr 1fr; }
}

/* ---- Tile metadata badges ---- */
.mode-tile-meta {
  position: absolute;
  top: 20px;
  right: 24px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-items: flex-end;
}
.mode-tile-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 600;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  color: var(--muted);
  letter-spacing: 0.02em;
}
.mode-tile-badge .badge-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}
.mode-tile-badge .badge-dot.active { background: var(--success); box-shadow: 0 0 6px rgba(94,211,154,.5); }
.mode-tile-badge .badge-dot.inactive { background: var(--muted); }
.mode-tile-badge .badge-dot.danger { background: var(--danger); box-shadow: 0 0 6px rgba(237,93,112,.5); }
.mode-tile-badge .badge-dot.amber { background: var(--amber); }
.mode-tile-badge .badge-val {
  color: var(--soft);
  font-variant-numeric: tabular-nums;
}
.mode-tile-badge .badge-val.active { color: var(--success); }
.mode-tile-badge .badge-val.danger { color: var(--danger); }
.mode-tile-badge .badge-val.amber { color: var(--amber); }
.portal-stat-num.danger { color: var(--danger); }

/* ---- Assets map page ---- */
.assets-page { position: fixed; top: 82px; left: 0; right: 0; bottom: 0; display: flex; }
#assets-map { flex: 1; height: 100%; background: var(--canvas); cursor: crosshair; }
#assets-map canvas { cursor: crosshair !important; }
.assets-rhs {
  width: 340px; flex-shrink: 0; background: rgba(9,11,12,.96);
  backdrop-filter: blur(16px); border-left: 1px solid var(--line);
  display: flex; flex-direction: column; overflow: hidden;
}
.assets-rhs-header { padding: 16px 18px 8px; border-bottom: 1px solid var(--line); }
.assets-rhs-title { display: flex; align-items: center; justify-content: space-between; }
.assets-rhs-title h2 { font-size: 16px; font-weight: 650; color: var(--text); margin: 0; }
.assets-rhs-count { font-family: ui-monospace, monospace; font-size: 10px; color: var(--muted); }
.assets-tabs { display: flex; gap: 0; border-bottom: 1px solid var(--line); }
.assets-tab {
  flex: 1; padding: 10px 8px; text-align: center; font-size: 10px; font-weight: 650;
  color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent;
  transition: color var(--ease), border-color var(--ease);
  font-family: ui-monospace, monospace; letter-spacing: .04em; text-transform: uppercase;
}
.assets-tab:hover { color: var(--soft); }
.assets-tab.active { color: var(--brand-bright); border-bottom-color: var(--brand); }
.assets-tab-content { flex: 1; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #343b3c transparent; }
.assets-tab-content::-webkit-scrollbar { width: 4px; }
.assets-tab-content::-webkit-scrollbar-thumb { background: #343b3c; border-radius: 2px; }
.asset-filter-bar { padding: 10px 14px; border-bottom: 1px solid var(--line); display: flex; flex-direction: column; gap: 8px; }
.asset-search-input {
  width: 100%; padding: 8px 10px; background: var(--surface); border: 1px solid var(--line);
  border-radius: 2px; color: var(--text); font-size: 13px; font-family: inherit;
}
.asset-search-input:focus { outline: none; border-color: var(--brand-bright); }
.asset-filter-row { display: flex; gap: 6px; }
.asset-filter-select {
  flex: 1; padding: 6px 8px; background: var(--surface); border: 1px solid var(--line);
  border-radius: 2px; color: var(--soft); font-size: 11px; font-family: ui-monospace, monospace;
}
.asset-filter-select:focus { outline: none; border-color: var(--brand-bright); }
.asset-list { padding: 0; }
.asset-list-item {
  display: flex; align-items: flex-start; gap: 10px; padding: 10px 14px;
  border-bottom: 1px solid var(--line); cursor: pointer;
  transition: background var(--ease);
}
.asset-list-item:hover { background: var(--surface-bright); }
.asset-list-dot { width: 6px; height: 6px; border-radius: 50%; margin-top: 5px; flex-shrink: 0; }
.asset-list-info { flex: 1; min-width: 0; }
.asset-list-name { font-size: 13px; font-weight: 500; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.asset-list-meta { font-size: 10px; color: var(--muted); font-family: ui-monospace, monospace; margin-top: 2px; }
.asset-list-delete {
  background: none; border: none; color: var(--muted); cursor: pointer;
  font-size: 14px; padding: 2px 6px; border-radius: 2px; opacity: 0;
  transition: opacity var(--ease), color var(--ease);
}
.asset-list-item:hover .asset-list-delete { opacity: 1; }
.asset-list-delete:hover { color: var(--danger); }
.asset-section-label {
  padding: 8px 14px 4px; font-size: 9px; font-weight: 700; color: var(--muted);
  text-transform: uppercase; letter-spacing: .12em; font-family: ui-monospace, monospace;
}
.asset-add-btn {
  margin: 8px 14px 14px; padding: 10px; text-align: center; font-size: 11px;
  font-weight: 650; color: var(--brand-bright); border: 1px dashed var(--line-strong);
  border-radius: 2px; cursor: pointer; background: transparent;
  transition: background var(--ease), border-color var(--ease);
  font-family: ui-monospace, monospace; letter-spacing: .04em; text-transform: uppercase;
}
.asset-add-btn:hover { background: var(--brand-wash); border-color: var(--brand); }
.asset-create-form {
  padding: 12px 14px; border-bottom: 1px solid var(--line); display: none;
}
.asset-create-form.open { display: block; }
.asset-create-form input, .asset-create-form select {
  width: 100%; padding: 6px 8px; margin-bottom: 6px; background: var(--surface);
  border: 1px solid var(--line); border-radius: 2px; color: var(--text); font-size: 12px;
}
.asset-create-form input:focus, .asset-create-form select:focus { outline: none; border-color: var(--brand-bright); }
.asset-create-form .form-row { display: flex; gap: 6px; }
.asset-create-form .form-row input { flex: 1; }
.asset-create-actions { display: flex; gap: 6px; margin-top: 6px; }
.asset-create-actions button { flex: 1; padding: 8px; font-size: 11px; }
.asset-empty { padding: 40px 20px; text-align: center; color: var(--muted); font-size: 12px; }

/* ---- Release notes in RHS panel ---- */
.assets-rhs-release { padding: 10px 18px; border-top: 1px solid var(--line); margin-top: auto; }
.assets-rhs-release .release-notes-trigger { font-size: 9px; }

/* ---- Map context menu ---- */
.map-context-menu {
  position: absolute;
  z-index: 10;
  display: none;
  background: var(--surface);
  border: 1px solid var(--line-strong);
  border-radius: 2px;
  box-shadow: 0 8px 32px rgba(0,0,0,.6);
  padding: 4px 0;
  min-width: 160px;
}
.map-context-menu button {
  display: block;
  width: 100%;
  padding: 8px 16px;
  background: transparent;
  border: 0;
  color: var(--soft);
  font-size: 13px;
  text-align: left;
  cursor: pointer;
  transition: background var(--ease), color var(--ease);
}
.map-context-menu button:hover {
  background: var(--surface-bright);
  color: var(--brand-bright);
}

/* Operations Centre v1.1 — unified shell and map-first management */
html,body{width:100%;height:100%}body{overflow:hidden;background:var(--canvas)}button,input,select,textarea{font:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.ops-shell{width:100%;height:100%;display:grid;grid-template-columns:248px minmax(0,1fr);transition:grid-template-columns .24s var(--ease)}.ops-rail{z-index:120;height:100vh;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--line);background:linear-gradient(#0e1112,#0a0c0d)}
.ops-brand{height:76px;display:flex;align-items:center;gap:12px;padding:0 22px;color:var(--text);border-bottom:1px solid var(--line)}.ops-brand img{width:30px;height:30px}.ops-brand span{display:grid;gap:2px}.ops-brand strong{font-size:13px}.ops-brand small,.ops-nav-label{color:var(--muted);font:700 8px ui-monospace,monospace;letter-spacing:.13em;text-transform:uppercase}
.ops-nav{flex:1;overflow:auto;padding:18px 12px}.ops-nav-label{display:block;padding:13px 11px 7px;color:#596264}.ops-nav-link{position:relative;min-height:42px;display:flex;align-items:center;gap:11px;padding:8px 11px;color:#9aa4a5;border:1px solid transparent;border-radius:3px;font-size:11px;white-space:nowrap}.ops-nav-link:hover{color:#e8ecec;background:rgba(255,255,255,.035)}.ops-nav-link.active{color:white;border-color:rgba(223,86,109,.22);background:linear-gradient(90deg,rgba(179,60,80,.16),transparent)}.ops-nav-link.active:before{content:"";position:absolute;top:8px;bottom:8px;left:-1px;width:2px;background:var(--brand-bright)}
.ops-nav-icon{width:26px;height:26px;display:grid;place-items:center;flex:0 0 auto;color:#768082;border:1px solid var(--line-strong);border-radius:2px;font:700 7px ui-monospace,monospace}.ops-live-dot{width:6px;height:6px;margin-left:auto;border-radius:50%;background:var(--success);box-shadow:0 0 10px rgba(94,211,154,.55)}.ops-rail-footer{padding:10px 12px 14px;border-top:1px solid var(--line)}.ops-collapse{width:100%;padding:9px 11px;color:#5f696b;border:0;background:none;text-align:left;font:700 8px ui-monospace,monospace}.ops-assumed-org{display:grid;gap:3px;padding:11px;border:1px solid rgba(105,215,231,.17)}
.ops-main{min-width:0;min-height:0;height:100vh;display:flex;flex-direction:column}.ops-topbar{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 22px;border-bottom:1px solid var(--line);background:rgba(10,13,14,.94);backdrop-filter:blur(18px)}.ops-breadcrumb{display:grid;gap:3px}.ops-breadcrumb span{color:#5f696b;font:700 8px ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase}.ops-breadcrumb strong{font-size:13px;font-weight:560}.ops-topbar-actions,.operations-actions{display:flex;align-items:center;gap:10px}
.tenant-selector{position:relative}.tenant-selector-btn{min-width:220px;min-height:44px;display:flex;align-items:center;gap:9px;padding:7px 10px;color:var(--text);border:1px solid var(--line);background:#101415}.tenant-indicator{width:6px;height:6px;border-radius:50%;background:var(--cyan)}.tenant-selector-copy{display:grid;flex:1;gap:2px;text-align:left}.tenant-selector-copy small{color:var(--muted);font-size:7px;text-transform:uppercase}.tenant-selector-copy strong{font-size:10px}.tenant-selector-dropdown{position:absolute;top:calc(100% + 6px);right:0;z-index:300;min-width:260px;display:none;padding:6px;border:1px solid var(--line-strong);background:#121617;box-shadow:0 18px 50px #000}.tenant-selector-dropdown.open{display:block}.tenant-selector-option{width:100%;padding:10px;color:var(--soft);border:0;background:none;text-align:left;font-size:10px}.tenant-selector-option:hover,.tenant-selector-option.active{color:white;background:var(--brand-wash)}
.ops-user{display:flex;align-items:center;gap:9px;padding:4px;color:var(--text);border:0;background:none}.ops-user-avatar{width:34px;height:34px;display:grid;place-items:center;color:#f5abb7;border:1px solid rgba(223,86,109,.28);background:var(--brand-wash);font:700 11px ui-monospace,monospace}.ops-user-copy{display:grid;gap:1px}.ops-user-copy strong{font-size:9px}.ops-user-copy small{color:var(--muted);font-size:8px}.ops-content{min-width:0;min-height:0;flex:1;overflow:auto}.ops-footer{min-height:34px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;color:#515a5c;border-top:1px solid var(--line);background:#0b0e0f;font:700 7px ui-monospace,monospace}.ops-footer>span{display:flex;align-items:center;gap:7px}.ops-footer>span i{width:5px;height:5px;border-radius:50%;background:var(--success)}.ops-mobile-menu,.ops-rail-scrim{display:none}.page{max-width:1420px;margin:0 auto;padding:30px clamp(22px,3vw,46px) 54px}
body.ops-rail-collapsed .ops-shell{grid-template-columns:74px minmax(0,1fr)}body.ops-rail-collapsed .ops-brand{padding-inline:21px}body.ops-rail-collapsed .ops-brand span,body.ops-rail-collapsed .ops-nav-link>span:not(.ops-nav-icon),body.ops-rail-collapsed .ops-nav-label,body.ops-rail-collapsed .ops-live-dot,body.ops-rail-collapsed .ops-assumed-org,body.ops-rail-collapsed .ops-collapse{display:none}body.ops-rail-collapsed .ops-nav-link{justify-content:center;padding-inline:0}
.eyebrow{color:var(--brand-bright);font:700 8px ui-monospace,monospace;letter-spacing:.16em;text-transform:uppercase}.ops-dashboard{display:grid;gap:22px}.ops-hero{min-height:210px;display:flex;align-items:flex-end;justify-content:space-between;gap:30px;padding:clamp(28px,4vw,52px);border:1px solid var(--line);background:radial-gradient(circle at 78% 20%,rgba(105,215,231,.09),transparent 30%),linear-gradient(135deg,#111617,#0d1011)}.ops-hero>div{max-width:720px}.ops-hero h1{margin-top:15px;color:#f0f3f3;font-size:clamp(27px,4vw,47px);line-height:1.04;font-weight:470;letter-spacing:-.035em}.ops-hero p{margin-top:18px;color:#8d9799;font-size:12px;line-height:1.7}
.ops-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line)}.ops-kpi{min-height:116px;display:grid;align-content:center;gap:4px;padding:20px 23px;border-right:1px solid var(--line);background:#0f1213}.ops-kpi span,.ops-kpi small{color:var(--muted);font-size:8px}.ops-kpi strong{color:#e8ecec;font:500 30px ui-monospace,monospace}.ops-kpi em{color:#626c6e;font-size:14px;font-style:normal}.ops-dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.ops-command-card{min-height:260px;display:flex;flex-direction:column;padding:25px;border:1px solid var(--line);background:#101415}.ops-command-primary{background:linear-gradient(145deg,rgba(179,60,80,.11),#101415 45%)}.ops-card-heading{display:flex;justify-content:space-between;color:#687274;font:700 8px ui-monospace,monospace}.ops-command-card h2{margin-top:28px;font-size:18px;font-weight:520}.ops-command-card p{margin-top:11px;color:var(--muted);font-size:10px;line-height:1.7}.ops-command-meta{display:flex;gap:17px;margin-top:23px;color:#717b7d;font-size:8px}.ops-command-card>a{display:flex;justify-content:space-between;margin-top:auto;padding-top:20px;color:#d7dcdd;border-top:1px solid var(--line);font-size:9px}.ops-readiness{display:grid;grid-template-columns:260px 1fr;gap:30px;padding:26px;border:1px solid var(--line)}.ops-readiness>div:last-child{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ops-readiness span{display:flex;align-items:center;gap:9px;color:var(--soft);font-size:9px}.status-ok,.status-warn{width:6px;height:6px;border-radius:50%}.status-ok{background:var(--success)}.status-warn{background:var(--amber)}
body[data-route="/assets"] .ops-content{overflow:hidden}body[data-route="/assets"] .ops-footer{display:none}.asset-workspace{height:100%;display:grid;grid-template-columns:minmax(0,1fr) 402px}.asset-stage{position:relative;min-width:0;overflow:hidden;background:#15191a}.asset-map{position:absolute;inset:0}.asset-stage-heading{position:absolute;z-index:5;top:24px;left:26px;pointer-events:none;text-shadow:0 2px 12px #000}.asset-stage-heading h1{margin-top:8px;font-size:21px;font-weight:510}.asset-stage-heading p{margin-top:7px;color:#a9b2b3;font-size:9px}.asset-map-toolbar{position:absolute;z-index:8;top:22px;right:22px;display:flex;gap:7px}.asset-view-toggle{display:flex;padding:3px;border:1px solid rgba(255,255,255,.16);background:rgba(9,13,14,.88)}.asset-view-toggle button,.asset-toolbar-button{min-height:33px;padding:0 12px;color:#8d9799;border:0;background:transparent;font-size:8px}.asset-view-toggle button.active{color:white;background:rgba(255,255,255,.09)}.asset-toolbar-button{min-height:39px;color:#d9dede;border:1px solid rgba(255,255,255,.16);background:rgba(9,13,14,.88)}.asset-toolbar-button.primary{color:white;border-color:var(--brand);background:rgba(179,60,80,.92)}
.asset-map-legend,.asset-stream-state{position:absolute;z-index:7;bottom:22px;display:flex;align-items:center;gap:10px;padding:9px 11px;color:#aeb7b8;border:1px solid rgba(255,255,255,.13);background:rgba(9,13,14,.84);font-size:8px}.asset-map-legend{left:24px;bottom:104px;padding:4px}.asset-stream-state{right:22px;font:inherit;cursor:pointer}.asset-map-legend button,.asset-legend-static{display:flex;align-items:center;gap:6px;padding:6px 7px;color:inherit;border:1px solid transparent;background:transparent;font:inherit}.asset-map-legend button{cursor:pointer;opacity:.48;transition:opacity .15s ease,border-color .15s ease,background .15s ease}.asset-map-legend button:hover,.asset-map-legend button:focus-visible{border-color:rgba(255,255,255,.22);outline:none}.asset-map-legend button.active{opacity:1;background:rgba(255,255,255,.06)}.asset-map-legend small{padding:0 7px;color:#788284;font-size:7px}.asset-map-legend i,.asset-stream-state i{width:6px;height:6px;border-radius:50%}.asset-map-legend .legend-smart-camera,.asset-map-legend .legend-video-camera{width:13px;height:9px;border-radius:2px;background:var(--brand-bright);box-shadow:4px 0 0 -1px var(--brand-bright)}.asset-map-legend .legend-video-camera{background:transparent;border:1px solid var(--brand-bright);box-shadow:4px 0 0 -2px #0a0d0e,4px 0 0 -1px var(--brand-bright)}.legend-asset{background:var(--cyan)}.legend-offline{background:#5c6668}.asset-stream-state i{background:var(--amber)}.asset-stream-state[data-state=connected] i{background:var(--success)}.asset-stream-state[data-state=unavailable] i{background:var(--danger)}.map-loading{position:absolute;z-index:10;top:92px;left:26px;display:none;padding:8px 10px;background:#0a0d0e;font-size:8px}.map-loading.show{display:flex}.rsq-map-marker{width:30px;height:30px;display:grid;place-items:center;color:#061012;border:2px solid #cbd6d6;border-radius:50%;background:var(--cyan);box-shadow:0 4px 16px #000}.rsq-map-marker.marker-camera{--camera-color:#df566d;position:relative;width:38px;height:34px;padding:2px;color:var(--camera-color);border:0;border-radius:4px;background:rgba(10,13,14,.92);box-shadow:0 5px 18px #000}.rsq-map-marker.marker-camera::before{content:"";position:absolute;inset:-4px;border:2px solid #ed5d70;border-radius:8px;opacity:.88}.rsq-map-marker.marker-camera.marker-health-live::before{border-color:#5ed39a}.rsq-map-marker.marker-camera.marker-health-connecting::before{border-color:#f1b85b}.rsq-map-marker.marker-camera.marker-health-disabled::before{border-color:#667173}.rsq-map-marker.marker-camera svg{width:34px;height:28px;overflow:visible}.rsq-map-marker.marker-camera-video{background:rgba(10,13,14,.96)}.rsq-map-marker.marker-inactive{filter:grayscale(1);opacity:.5}.rsq-map-marker span{font:800 7px ui-monospace,monospace}.camera-colour-field{display:flex;align-items:center;gap:10px}.camera-colour-field input[type=color]{width:48px;min-height:34px;padding:2px}.camera-colour-field output{color:var(--muted);font:8px ui-monospace,SFMono-Regular,Menlo,monospace}.camera-map-identity{display:flex;align-items:center;gap:9px}.camera-map-identity i{width:18px;height:18px;border-radius:4px;background:var(--camera-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--camera-color) 22%,transparent)}.camera-tag-list{display:flex;flex-wrap:wrap;gap:5px}.camera-tag-list>span{padding:3px 6px;border:1px solid var(--line);background:rgba(255,255,255,.025);font-size:8px}
.asset-stream-health-panel{position:absolute;z-index:47;right:22px;bottom:64px;width:min(330px,calc(100% - 32px));padding:15px;color:var(--text);border:1px solid var(--line-strong);background:color-mix(in srgb,var(--surface),transparent 3%);box-shadow:0 20px 60px rgba(0,0,0,.35);backdrop-filter:blur(18px);opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .16s ease-out,transform .16s ease-out,visibility 0s linear .16s}.asset-stream-health-panel.open{opacity:1;visibility:visible;transform:none;transition-delay:0s}.asset-stream-health-panel header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:11px;border-bottom:1px solid var(--line)}.asset-stream-health-panel h2{margin-top:4px;font-size:13px}.asset-stream-health-panel header button{width:28px;height:28px;color:var(--soft);border:1px solid var(--line);background:transparent;cursor:pointer}.asset-stream-health-panel dl{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin:12px 0;background:var(--line)}.asset-stream-health-panel dl div{padding:9px;background:var(--surface)}.asset-stream-health-panel dt{color:var(--muted);font:700 7px var(--mono);letter-spacing:.06em;text-transform:uppercase}.asset-stream-health-panel dd{margin-top:4px;font-size:9px}.asset-stream-health-panel p{margin:0 0 12px;color:var(--muted);font-size:8px;line-height:1.55}
.asset-context-menu{position:absolute;z-index:25;display:none;padding:5px;border:1px solid var(--line-strong);background:#101415}.asset-context-menu.open{display:grid}.asset-context-menu button{padding:9px;color:var(--soft);border:0;background:none;text-align:left;font-size:9px}.asset-panel{position:relative;z-index:20;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;border-left:1px solid var(--line);background:#0d1011}.asset-panel-heading{min-height:87px;display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line)}.asset-panel-heading h2{margin-top:7px;font-size:16px}.asset-counts{display:grid;justify-items:end}.asset-counts strong{font:560 18px ui-monospace,monospace}.asset-counts span{color:var(--muted);font-size:7px}.asset-filter-panel{display:grid;gap:11px;padding:14px 15px;border-bottom:1px solid var(--line);background:#101415}.asset-search>span,.asset-select-grid label>span{display:block;margin-bottom:5px;color:#687274;font:700 7px ui-monospace,monospace;text-transform:uppercase}.asset-search input,.asset-select-grid select{width:100%;min-height:36px;padding:0 10px;color:#d8dddd;border:1px solid var(--line-strong);background:#0b0e0f;font-size:9px}.asset-kind-filter,.asset-select-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.asset-kind-filter button{min-height:31px;color:#6f797b;border:1px solid var(--line);background:none;font-size:8px}.asset-kind-filter button.active{color:#dfe4e4;background:rgba(105,215,231,.07)}.asset-filter-actions{display:flex;justify-content:space-between;color:#606a6c;font-size:8px}.asset-filter-actions button{color:var(--brand-bright);border:0;background:none;font-size:8px}
.asset-object-list{min-height:0;overflow:auto}.asset-object-row{width:100%;min-height:58px;display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 15px;color:var(--text);border:0;border-bottom:1px solid var(--line);background:none;text-align:left}.asset-object-row:hover{background:#121718}.asset-object-glyph{width:30px;height:30px;display:grid;place-items:center;color:#9ce3ec;border:1px solid rgba(105,215,231,.2);border-radius:50%;font:800 7px ui-monospace,monospace}.asset-object-glyph.camera{color:#f19aab;background:var(--brand-wash)}.asset-object-copy{display:grid;min-width:0}.asset-object-copy strong,.asset-object-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asset-object-copy strong{font-size:10px}.asset-object-copy small{color:var(--muted);font-size:8px}.asset-object-row i{font-size:7px;font-style:normal}.is-active{color:var(--success)}.is-inactive{color:#697375}.asset-list-empty,.operations-empty{min-height:220px;display:grid;place-content:center;justify-items:center;gap:8px;padding:30px;text-align:center}.asset-list-empty span,.operations-empty p{max-width:430px;color:var(--muted);font-size:9px}.asset-panel-footer{min-height:38px;display:flex;align-items:center;justify-content:space-between;padding:0 15px;color:#697375;border-top:1px solid var(--line);font-size:8px}
.asset-detail-panel{position:absolute;z-index:15;inset:0;display:grid;grid-template-rows:auto 1fr;opacity:0;visibility:hidden;transform:translateX(22px);background:#0d1011;transition:.2s}.asset-detail-panel.open{opacity:1;visibility:visible;transform:none}.asset-detail-panel>header{min-height:66px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid var(--line)}.asset-detail-panel button{color:var(--soft);border:0;background:none}.asset-detail-body{overflow:auto;padding:24px 20px}.asset-detail-status{display:flex;gap:7px;color:var(--muted);font-size:8px}.asset-detail-status i{width:6px;height:6px;border-radius:50%}.asset-detail-status i.active{background:var(--success)}.asset-detail-status i.inactive{background:#697375}.asset-detail-body h2{margin-top:13px;font-size:23px;font-weight:490}.asset-detail-body>p{color:var(--muted);font-size:9px}.camera-preview{margin:20px 0}.camera-preview-frame{position:relative;aspect-ratio:16/9;background:#080a0b}.camera-preview-frame img{width:100%;height:100%;object-fit:cover}.camera-preview-frame div{position:absolute;inset:0;display:grid;place-items:center;background:rgba(6,8,9,.8);font-size:8px}.camera-preview-frame div[hidden]{display:none}.asset-facts{margin-top:20px;border-top:1px solid var(--line)}.asset-facts div{min-height:45px;display:grid;grid-template-columns:43% 1fr;align-items:center;border-bottom:1px solid var(--line)}.asset-facts dt{color:#687274;font-size:8px}.asset-facts dd{text-align:right;font:500 8px ui-monospace,monospace}.asset-detail-tags{display:flex;gap:5px;margin-top:15px}.asset-detail-tags span{padding:5px;border:1px solid var(--line);font-size:7px}.asset-detail-actions{display:grid;gap:8px;margin-top:22px}.asset-detail-actions a,.asset-detail-actions button{min-height:38px;display:grid;place-items:center;border:1px solid var(--line-strong);font-size:8px}.asset-detail-actions .danger{color:var(--danger)}
.asset-registry-view{position:absolute;z-index:12;inset:0;display:none;overflow:auto;padding:92px 28px 30px;background:#0c0f10}.registry-mode .asset-registry-view{display:block}.asset-registry-view header{display:flex;justify-content:space-between;margin-bottom:20px}.asset-registry-table{min-width:760px;border:1px solid var(--line)}.asset-registry-head,.asset-registry-row{display:grid;grid-template-columns:1.4fr .8fr 1fr 80px 1fr 130px;gap:14px;align-items:center}.asset-registry-head{min-height:38px;padding:0 14px;color:#667072;font:700 7px ui-monospace,monospace}.asset-registry-row{width:100%;min-height:56px;padding:8px 14px;color:#aab3b4;border:0;border-top:1px solid var(--line);background:#0c1011;text-align:left;font-size:8px}.asset-registry-row>span:first-child{display:grid}.asset-registry-row strong{color:#dfe4e4;font-size:9px}.asset-registry-row small{color:#606a6c;font-size:7px}.registry-active{color:var(--success)}.registry-inactive{color:#687274}
.operations-dialog{width:min(680px,calc(100vw - 28px));max-height:calc(100vh - 28px);padding:0;color:var(--text);border:1px solid var(--line-strong);background:#111516}.operations-dialog::backdrop{background:rgba(3,5,6,.76);backdrop-filter:blur(8px)}.dialog-close-form{position:absolute;top:12px;right:12px}.dialog-close-form button{width:32px;height:32px;color:#8c9698;border:1px solid var(--line);background:#0d1011}.operations-form{display:grid;gap:16px;max-height:inherit;overflow:auto;padding:26px}.operations-form h2{margin-top:9px;font-size:21px}.operations-form label{display:grid;gap:6px;color:#7d8789;font:700 8px ui-monospace,monospace}.operations-form input,.operations-form select,.operations-form textarea{width:100%;min-height:40px;padding:9px 10px;color:#e3e7e7;border:1px solid var(--line-strong);background:#0a0d0e;font:400 10px Inter,sans-serif}.form-grid-two,.object-kind-picker{display:grid;grid-template-columns:1fr 1fr;gap:13px}.operations-form footer{display:flex;justify-content:flex-end;padding-top:14px;border-top:1px solid var(--line)}.object-kind-picker button{min-height:70px;display:grid;gap:5px;padding:13px;color:var(--muted);border:1px solid var(--line);background:none;text-align:left}.object-kind-picker button.active{background:var(--brand-wash);border-color:rgba(223,86,109,.35)}.ops-toast{position:fixed;z-index:1000;right:22px;bottom:22px;max-width:390px;padding:12px 15px;opacity:0;visibility:hidden;transform:translateY(12px);color:#d9e5df;border:1px solid rgba(94,211,154,.28);background:#0c1310;transition:.2s}.ops-toast.show{opacity:1;visibility:visible;transform:none}.ops-toast.error{color:#f3b4bf;border-color:rgba(237,93,112,.32);background:#1b0d10}
.alerting-page{display:grid;gap:18px}.operations-page-header{display:flex;align-items:flex-end;justify-content:space-between}.operations-page-header h1{margin-top:9px;font-size:36px;font-weight:490}.operations-page-header p{color:var(--muted);font-size:10px}.alerting-summary{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line)}.alerting-summary article{min-height:108px;display:grid;align-content:center;gap:4px;padding:18px 20px;border-right:1px solid var(--line);background:#0f1314}.alerting-summary span,.alerting-summary small{color:var(--muted);font-size:8px}.alerting-summary strong{font:500 27px ui-monospace,monospace}.operations-tabs{display:flex;gap:22px;border-bottom:1px solid var(--line)}.operations-tabs a{padding:12px 0;color:#717b7d;border-bottom:2px solid transparent;font-size:9px}.operations-tabs a.active{color:white;border-color:var(--brand-bright)}.operations-panel{min-height:360px;border:1px solid var(--line);background:#0e1213}.operations-panel-heading{min-height:74px;display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line)}.operations-panel-heading h2{margin-top:7px;font-size:15px}
.rule-row{min-height:84px;display:grid;grid-template-columns:3px 1.5fr 1fr .8fr 1fr auto;align-items:center;gap:16px;padding:12px 17px;border-bottom:1px solid var(--line)}.rule-row.is-disabled{opacity:.48}.severity-marker{width:3px;height:38px;background:#748082}.severity-critical{background:#ff4f69}.severity-high{background:var(--brand-bright)}.severity-medium{background:var(--amber)}.rule-identity,.rule-condition,.rule-policy{min-width:0;display:grid;gap:3px}.rule-identity span,.rule-condition span,.rule-policy span{color:#687274;font:700 7px ui-monospace,monospace;text-transform:uppercase}.rule-identity strong{font-size:10px}.rule-identity small{color:var(--muted);font-size:8px}.rule-classes{display:flex;gap:4px}.rule-classes span{padding:4px 6px;border:1px solid var(--line);font-size:7px}.switch{display:grid;justify-items:center;gap:4px}.switch input{position:absolute;opacity:0}.switch span{position:relative;width:30px;height:16px;border-radius:8px;background:#293032}.switch span:after{content:"";position:absolute;top:3px;left:3px;width:10px;height:10px;border-radius:50%;background:#748082}.switch input:checked+span{background:rgba(94,211,154,.18)}.switch input:checked+span:after{transform:translateX(14px);background:var(--success)}.switch em{color:#687274;font-size:7px;font-style:normal}
.zone-grid,.response-group-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line)}.zone-card,.response-group-grid>article{min-height:150px;padding:19px;background:#0e1213}.zone-card{display:grid;grid-template-columns:42px 1fr;gap:14px}.zone-swatch{width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--zone-color)}.zone-swatch i{width:18px;height:18px;border:1px solid var(--zone-color);transform:rotate(18deg)}.zone-card span,.response-group-grid span,.escalation-card header span{color:#687274;font-size:7px;text-transform:uppercase}.zone-card h3,.response-group-grid h3,.escalation-card h3{margin-top:6px;font-size:11px}.zone-card p,.response-group-grid p,.escalation-card p{margin-top:7px;color:var(--muted);font-size:8px}.escalation-list{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}.escalation-card{padding:20px;background:#0e1213}.escalation-card ol{margin-top:19px;list-style:none}.escalation-card li{min-height:48px;display:grid;grid-template-columns:24px 1fr;align-items:center;gap:10px}.escalation-card li>i{width:24px;height:24px;display:grid;place-items:center;color:#f19aab;border:1px solid rgba(223,86,109,.28);border-radius:50%;font:700 7px ui-monospace,monospace}.escalation-card li div{display:grid}.escalation-card li strong{font-size:8px}.escalation-card li span{color:#687274;font-size:7px}.activity-table>div{min-height:50px;display:grid;grid-template-columns:80px 1fr 1fr 150px;align-items:center;padding:8px 16px;border-bottom:1px solid var(--line);font-size:8px}.member-picker{max-height:210px;overflow:auto;border:1px solid var(--line)}.member-picker label{display:grid;grid-template-columns:18px 1fr;align-items:center;padding:8px;border-bottom:1px solid var(--line)}.member-picker label span{display:grid}.member-picker small{color:var(--muted);font-size:7px}
@media(max-width:1180px){.ops-shell{grid-template-columns:74px minmax(0,1fr)}.ops-brand{padding-inline:21px}.ops-brand span,.ops-nav-link>span:not(.ops-nav-icon),.ops-nav-label,.ops-live-dot,.ops-assumed-org,.ops-collapse{display:none}.ops-nav-link{justify-content:center;padding-inline:0}.asset-workspace{grid-template-columns:minmax(0,1fr) 360px}.ops-dashboard-grid{grid-template-columns:1fr 1fr}.rule-policy{display:none}}
@media(max-width:820px){.ops-shell{display:block}.ops-rail{position:fixed;inset:0 auto 0 0;width:min(290px,86vw);transform:translateX(-102%);transition:.2s}body.ops-rail-open .ops-rail{transform:none}.ops-rail .ops-brand span,.ops-rail .ops-nav-link>span:not(.ops-nav-icon),.ops-rail .ops-nav-label,.ops-rail .ops-live-dot{display:initial}.ops-rail .ops-nav-link{justify-content:flex-start;padding-inline:11px}.ops-rail-scrim{position:fixed;z-index:110;inset:0;border:0;background:rgba(3,5,6,.72)}body.ops-rail-open .ops-rail-scrim{display:block}.ops-mobile-menu{display:block}.ops-topbar{padding:0 12px}.ops-breadcrumb span,.ops-user-copy{display:none}.tenant-selector-btn{min-width:42px}.tenant-selector-copy,.tenant-selector-btn>span:last-child{display:none}.page{padding:22px 14px}.ops-hero{align-items:flex-start;flex-direction:column}.ops-kpi-grid,.alerting-summary{grid-template-columns:1fr 1fr}.ops-dashboard-grid,.ops-readiness{grid-template-columns:1fr}.asset-workspace{display:block}.asset-stage{height:58%}.asset-panel{height:42%;border-top:1px solid var(--line)}.asset-stage-heading{top:15px;left:15px}.asset-stage-heading p{display:none}.asset-map-toolbar{top:13px;right:13px}.asset-toolbar-button:not(.primary){display:none}.asset-detail-panel{position:fixed;z-index:130;inset:62px 0 0}.asset-registry-view{padding:75px 14px}.operations-page-header{align-items:flex-start;flex-direction:column}.operations-tabs{overflow:auto}.rule-row{grid-template-columns:3px 1fr auto}.rule-condition,.rule-classes,.rule-policy{display:none}.zone-grid,.response-group-grid,.escalation-list{grid-template-columns:1fr}.form-grid-two,.object-kind-picker{grid-template-columns:1fr}}

/* Shared minimal camera language: capability never impersonates connectivity. */
.rsq-map-marker.marker-camera {
  --camera-accent:#df566d;
  width:34px;
  height:34px;
  padding:4px;
  color:#dce3e3;
  border:1px solid rgba(224,232,232,.32);
  border-radius:10px;
  background:rgba(10,14,15,.92);
  box-shadow:0 6px 20px rgba(0,0,0,.42);
}
.rsq-map-marker.marker-camera::after {
  content:"";
  position:absolute;
  right:8px;
  bottom:3px;
  left:8px;
  height:2px;
  border-radius:2px;
  background:var(--camera-accent);
  opacity:.74;
}
.rsq-map-marker.marker-camera::before {
  content:"";
  position:absolute;
  z-index:3;
  top:-3px;
  right:-3px;
  inset:auto -3px auto auto;
  width:7px;
  height:7px;
  border:2px solid #0a0e0f;
  border-radius:50%;
  background:#ed5d70;
  opacity:1;
}
.rsq-map-marker.marker-camera.marker-health-live::before{border-color:#0a0e0f;background:#5ed39a}
.rsq-map-marker.marker-camera.marker-health-connecting::before{border-color:#0a0e0f;background:#f1b85b}
.rsq-map-marker.marker-camera.marker-health-disabled::before{border-color:#0a0e0f;background:#667173}
.rsq-map-marker.marker-camera svg{width:27px;height:24px;color:#dce3e3}
.marker-camera-ai{position:absolute;z-index:2;top:1px;left:3px;color:#7fcbd6;font:700 9px ui-monospace,monospace;line-height:1;text-shadow:0 0 8px rgba(105,215,231,.35)}
.asset-object-glyph.camera{--camera-accent:var(--camera-color,#df566d);position:relative;color:#dce3e3;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface)}
.asset-object-glyph.camera::after{content:"";position:absolute;right:7px;bottom:2px;left:7px;height:2px;border-radius:2px;background:var(--camera-accent);opacity:.72}
.asset-object-glyph.camera svg{width:25px;height:21px;color:var(--soft)}
.asset-object-glyph.camera .marker-camera-ai{top:1px;left:2px}
.asset-map-legend .legend-smart-camera,.asset-map-legend .legend-video-camera,.camera-map-key i,.map-legend .legend-smart-camera,.map-legend .legend-video-camera{
  position:relative;width:17px;height:14px;border:1px solid rgba(225,233,233,.46);border-radius:4px;background:#111718;box-shadow:inset 0 -2px var(--brand-bright)
}
.asset-map-legend .legend-smart-camera::after,.camera-map-key .legend-smart-camera::after,.map-legend .legend-smart-camera::after{content:"✦";position:absolute;top:-5px;left:-4px;color:var(--cyan);font-size:8px}
.asset-map-legend .legend-video-camera,.camera-map-key .legend-video-camera,.map-legend .legend-video-camera{background:#111718;border:1px solid rgba(225,233,233,.46);box-shadow:inset 0 -2px var(--brand-bright)}
.camera-map-identity i{position:relative;width:24px;height:20px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);box-shadow:inset 0 -2px var(--camera-color)}
.camera-map-identity i::after{content:"CAM";position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font:700 5px ui-monospace,monospace;letter-spacing:.05em}
.camera-row-capability i{width:12px;height:7px;border:1px solid var(--line-strong);border-radius:3px;background:var(--surface);box-shadow:inset 0 -2px var(--camera-color)}

/* ========================================================================
   Operations Centre v1.2 — shared page system and accessible appearance
   ======================================================================== */
html[data-theme="light"] {
  --canvas: #eef2f3;
  --rail: #f8fafb;
  --surface: #ffffff;
  --surface-bright: #e7edef;
  --line: rgba(31,45,49,.13);
  --line-strong: rgba(31,45,49,.22);
  --muted: #657477;
  --soft: #344144;
  --text: #152023;
  --brand: #a93549;
  --brand-bright: #c63e56;
  --brand-wash: rgba(169,53,73,.09);
  --amber: #9a650e;
  --cyan: #157788;
  --success: #237954;
  --danger: #b62e45;
}

html[data-theme="light"] { color-scheme: light; }
html[data-theme="dark"] { color-scheme: dark; }
body { background: var(--canvas); color: var(--text); }
body::before { background: radial-gradient(ellipse at 16% 0%, var(--brand-wash), transparent 48%); }
input, select, textarea, button { font: inherit; }

/* Shell chrome uses tokens so both appearance modes remain operational. */
.ops-rail { background: var(--rail); }
.ops-brand, .ops-rail-footer, .ops-topbar, .ops-footer { background: var(--rail); }
.ops-topbar { box-shadow: 0 1px 0 var(--line); }
.ops-footer { color: var(--muted); }
.ops-nav-link:hover, .ops-nav-link.active { background: var(--surface-bright); }
.ops-nav-link.active { color: var(--text); }
.ops-user:hover, .tenant-selector-btn:hover { background: var(--surface-bright); }
.nav-dropdown-menu, .tenant-selector-dropdown { background: var(--surface); border-color: var(--line-strong); box-shadow: 0 18px 48px rgba(0,0,0,.18); }
.nav-dropdown-item, .tenant-selector-option { color: var(--soft); }
.nav-dropdown-item:hover, .tenant-selector-option:hover { color: var(--text); background: var(--surface-bright); }
.nav-dropdown-heading { display: block; padding: 11px 14px 7px; color: var(--muted); font: 750 7px ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .14em; text-transform: uppercase; }

/* A collapsed rail always keeps its own expand control. */
.ops-collapse { min-height: 36px; display: flex; align-items: center; justify-content: center; gap: 8px; color: var(--muted); border: 1px solid var(--line); background: transparent; cursor: pointer; font-size: 8px; }
.ops-collapse:hover { color: var(--text); border-color: var(--line-strong); background: var(--surface-bright); }
.ops-collapse-icon { font-size: 17px; line-height: 1; transition: transform .2s var(--ease); }
body.ops-rail-collapsed .ops-collapse { display: flex; width: 38px; margin-inline: auto; padding: 0; }
body.ops-rail-collapsed .ops-collapse-label { display: none; }
body.ops-rail-collapsed .ops-collapse-icon { transform: rotate(180deg); }

.ops-context-back { display: inline-flex; align-items: center; gap: 6px; padding: 0; color: var(--brand-bright); border: 0; background: transparent; cursor: pointer; font: 750 8px ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .04em; }
.ops-context-back:hover { color: var(--text); }
.ops-breadcrumb { min-width: 0; }
.ops-breadcrumb strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Modern management subpages share the same hierarchy and density. */
.ops-content > .page:not(.ops-dashboard):not(.alerting-page) { width: min(1440px,100%); max-width: none; padding: 34px clamp(20px,3.3vw,50px) 64px; }
.ops-content > .page:not(.ops-dashboard):not(.alerting-page) > .page-header { min-height: 84px; align-items: flex-end; gap: 20px; margin: 0 0 22px; padding: 0 0 19px; border-bottom: 1px solid var(--line); }
.ops-content > .page:not(.ops-dashboard):not(.alerting-page) > .page-title { margin: 0 0 22px; padding-bottom: 18px; border-bottom: 1px solid var(--line); }
.page-title { color: var(--text); font-size: clamp(25px,3vw,36px); font-weight: 480; letter-spacing: -.035em; }
.page-description { max-width: 670px; margin-top: 8px; color: var(--muted); font-size: 10px; line-height: 1.65; }
.page-header .page-title { margin-top: 7px; }

.ops-content > .page:not(.ops-dashboard):not(.alerting-page) .card { margin-bottom: 14px; padding: 22px; border: 1px solid var(--line); border-radius: 3px; background: var(--surface); box-shadow: 0 14px 38px rgba(0,0,0,.05); }
.ops-content > .page:not(.ops-dashboard):not(.alerting-page) .card-title { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 18px; color: var(--soft); font: 720 9px ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .11em; text-transform: uppercase; }
.card-heading-copy { margin-bottom: 21px; }
.card-heading-copy .card-title { margin: 7px 0 6px !important; color: var(--text) !important; font: 520 19px Inter, sans-serif !important; letter-spacing: -.02em !important; text-transform: none !important; }
.card-heading-copy p { max-width: 660px; color: var(--muted); font-size: 10px; line-height: 1.65; }

.table-wrapper, .data-table, .org-table, .admin-table, .billing-table, .billing-org-table { border-color: var(--line); background: var(--surface); }
.data-table th, .org-table th, .admin-table th, .billing-table th { height: 38px; padding: 9px 13px; color: var(--muted); background: var(--surface-bright); border-bottom: 1px solid var(--line); font: 730 8px ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .08em; }
.data-table td, .org-table td, .admin-table td, .billing-table td { height: 48px; padding: 10px 13px; color: var(--soft); border-bottom: 1px solid var(--line); font-size: 10px; }
.data-table tbody tr:hover, .org-table tbody tr:hover { background: var(--brand-wash); }
.empty-state { color: var(--muted); font-size: 10px; font-style: normal; }
.stat-card, .billing-stat, .billing-stat-card, .org-form-panel, .org-form-panel-last, .org-paid-status { background: var(--surface); border-color: var(--line); border-radius: 3px; }
.stat-card .stat-value, .dash-stat .stat-num, .billing-stat-value { color: var(--text); font-weight: 510; }

.form-group { margin-bottom: 17px; }
.form-label, .form-group > label:not(.checkbox-label), .audit-filter-group > label { color: var(--muted); font: 710 8px ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .06em; text-transform: uppercase; }
.form-input, .form-group input:not([type="checkbox"]):not([type="radio"]), .form-group select, .form-group textarea, .audit-filter-group input, .audit-filter-group select, .billing-manage-select, .billing-manage-input { min-height: 40px; padding: 9px 11px; color: var(--text); border: 1px solid var(--line-strong); border-radius: 2px; background: var(--canvas); font-size: 10px; }
.form-input:focus, .form-group input:focus, .form-group select:focus, .form-group textarea:focus { outline: 2px solid var(--brand-wash); outline-offset: 1px; border-color: var(--brand-bright); box-shadow: none; }
.btn { min-height: 38px; padding: 0 15px; border-radius: 2px; font-size: 9px; letter-spacing: .01em; }
.btn-primary { color: #fff; }
.btn-secondary { color: var(--soft); background: transparent; }
.badge, .role-badge, .tier-badge { min-height: 20px; align-items: center; border-radius: 12px; font-size: 8px; }
.tab-bar { margin-bottom: 20px; }
.tab-bar .tab { padding: 11px 15px; color: var(--muted); font-size: 9px; }
.tab-bar .tab.active { color: var(--text); border-bottom-color: var(--brand-bright); }
.modal-overlay { background: rgba(8,12,13,.52); }
.modal, .operations-dialog { color: var(--text); border-color: var(--line-strong); background: var(--surface); }
.modal h2, .modal-header h2 { color: var(--text); }

/* Account customisation. */
.settings-page { display: grid; gap: 14px; }
.settings-page .alert { margin: 0; }
.settings-page-header { margin-bottom: 2px !important; }
.appearance-card { display: grid; grid-template-columns:minmax(220px,.75fr) minmax(520px,1.5fr); gap: 30px; align-items: start; }
.appearance-card .card-heading-copy { margin: 0; }
.theme-choice-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; margin-bottom: 15px; }
.theme-choice { position: relative; min-width: 0; display: grid; gap: 5px; padding: 9px; color: var(--text); border: 1px solid var(--line); background: var(--canvas); cursor: pointer; }
.theme-choice:has(input:checked) { border-color: var(--brand-bright); box-shadow: inset 0 0 0 1px var(--brand-bright); }
.theme-choice input { position: absolute; top: 11px; right: 11px; accent-color: var(--brand); }
.theme-choice strong { font-size: 10px; }
.theme-choice small { min-height: 27px; color: var(--muted); font-size: 8px; line-height: 1.45; }
.theme-choice-preview { height: 55px; display: grid; grid-template-columns: 18px 1fr; grid-template-rows: 12px 1fr; gap: 3px; padding: 5px; margin-bottom: 3px; border: 1px solid rgba(90,100,102,.24); }
.theme-choice-preview i:first-child { grid-row: 1 / 3; }
.theme-choice-preview i:nth-child(2) { grid-column: 2; }
.theme-choice-preview i { display: block; background: currentColor; opacity: .18; }
.theme-preview-dark { color: #e8eeee; background: #1a1f21; }
.theme-preview-light { color: #243033; background: #f5f7f8; }
.theme-preview-system { color: #e8eeee; background: linear-gradient(115deg,#1a1f21 0 49%,#f5f7f8 50%); }
.settings-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.settings-grid .card { margin: 0 !important; }

/* Dark chrome is intentionally softer than the prior near-black palette. */
.ops-hero { background: radial-gradient(circle at 78% 20%,rgba(105,215,231,.1),transparent 30%),linear-gradient(135deg,var(--surface),var(--rail)); }
.ops-kpi, .ops-command-card, .zone-card, .response-group-grid > article, .escalation-card, .operations-panel, .alerting-summary article { background: var(--surface); }
.asset-panel, .asset-detail-panel { background: var(--rail); }
.asset-filter-panel, .asset-context-menu, .asset-registry-view, .asset-registry-row { background: var(--surface); }
.asset-object-row:hover { background: var(--surface-bright); }
.asset-search input, .asset-select-grid select, .operations-form input, .operations-form select, .operations-form textarea { color: var(--text); background: var(--canvas); }
.operations-dialog, .operations-form { background: var(--surface); }

/* Light mode keeps the geospatial canvas subdued while lifting surrounding UI. */
html[data-theme="light"] .ops-brand strong,
html[data-theme="light"] .ops-breadcrumb strong,
html[data-theme="light"] .ops-user-copy strong,
html[data-theme="light"] .ops-hero h1,
html[data-theme="light"] .ops-kpi strong,
html[data-theme="light"] .ops-command-card h2,
html[data-theme="light"] .ops-command-card > a,
html[data-theme="light"] .operations-page-header h1,
html[data-theme="light"] .operations-tabs a.active,
html[data-theme="light"] .asset-panel-heading h2,
html[data-theme="light"] .asset-detail-body h2,
html[data-theme="light"] .asset-object-row,
html[data-theme="light"] .asset-registry-row strong { color: var(--text); }
html[data-theme="light"] .ops-hero p,
html[data-theme="light"] .asset-stage-heading p { color: var(--muted); }
html[data-theme="light"] .ops-live-dot { box-shadow: 0 0 0 3px rgba(35,121,84,.12); }
html[data-theme="light"] .asset-stage::after { content:""; position:absolute; z-index:2; inset:0; pointer-events:none; background:rgba(238,242,243,.04); }
html[data-theme="light"] .asset-stage-heading,
html[data-theme="light"] .asset-map-toolbar,
html[data-theme="light"] .asset-map-legend,
html[data-theme="light"] .asset-stream-state { z-index: 7; }
html[data-theme="light"] .asset-stage-heading { color: #fff; text-shadow: 0 2px 12px #000; }
html[data-theme="light"] .asset-view-toggle,
html[data-theme="light"] .asset-toolbar-button,
html[data-theme="light"] .asset-map-legend,
html[data-theme="light"] .asset-stream-state { color:#dbe3e4; background:rgba(18,24,26,.88); border-color:rgba(255,255,255,.2); }
html[data-theme="light"] .asset-view-toggle button.active { color:#fff; background:rgba(255,255,255,.14); }
html[data-theme="light"] .camera-preview-frame { background:#111718; }
html[data-theme="light"] .ops-toast { color:#22563f; background:#edf8f2; }
html[data-theme="light"] .ops-toast.error { color:#8f2437; background:#fff0f2; }
html[data-theme="light"] .release-notes-dialog { color:var(--text); background:var(--surface); }
html[data-theme="light"] .release-dialog-heading { background:linear-gradient(90deg,var(--brand-wash),transparent 42%); }
html[data-theme="light"] .release-dialog-heading h2,
html[data-theme="light"] .release-markdown h1,
html[data-theme="light"] .release-markdown h2,
html[data-theme="light"] .release-markdown h3 { color:var(--text); }
html[data-theme="light"] .release-markdown p,
html[data-theme="light"] .release-markdown li { color:var(--soft); }

@media (max-width:1180px) and (min-width:821px) {
  .ops-shell { grid-template-columns: 230px minmax(0,1fr); }
  .ops-brand { padding-inline: 18px; }
  .ops-brand span, .ops-nav-link > span:not(.ops-nav-icon), .ops-nav-label, .ops-live-dot, .ops-assumed-org { display: initial; }
  .ops-nav-link { justify-content: flex-start; padding-inline: 11px; }
  .ops-collapse { display:flex; }
  body.ops-rail-collapsed .ops-shell { grid-template-columns: 74px minmax(0,1fr); }
  body.ops-rail-collapsed .ops-brand { padding-inline:21px; }
  body.ops-rail-collapsed .ops-brand span,
  body.ops-rail-collapsed .ops-nav-link > span:not(.ops-nav-icon),
  body.ops-rail-collapsed .ops-nav-label,
  body.ops-rail-collapsed .ops-live-dot,
  body.ops-rail-collapsed .ops-assumed-org { display:none; }
  body.ops-rail-collapsed .ops-nav-link { justify-content:center; padding-inline:0; }
}

@media (max-width:820px) {
  .ops-rail .ops-collapse { display:none; }
  .ops-breadcrumb .ops-context-back span:last-child { display:none; }
  .appearance-card, .settings-grid { grid-template-columns:1fr; }
  .appearance-card { gap:18px; }
  .theme-choice-grid { grid-template-columns:1fr; }
  .theme-choice { grid-template-columns:90px 1fr; grid-template-rows:auto auto; align-items:center; }
  .theme-choice-preview { grid-row:1 / 3; }
  .theme-choice small { min-height:0; }
  .ops-content > .page:not(.ops-dashboard):not(.alerting-page) > .page-header { align-items:flex-start; flex-direction:column; }
}

/* Production billing workspace ------------------------------------------------ */
.billing-v2 { max-width: 1480px; }
.billing-v2-header { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; }
.billing-v2-actions { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:10px; }
.billing-v2-actions form { margin:0; }
.billing-status { display:inline-flex; align-items:center; width:max-content; min-height:25px; padding:3px 9px; border:1px solid var(--line); border-radius:999px; color:var(--soft); background:var(--surface-raised); font-size:11px; font-weight:750; letter-spacing:.03em; text-transform:uppercase; }
.billing-status-active, .billing-status-paid, .billing-status-processed { color:var(--success); border-color:color-mix(in srgb,var(--success),transparent 68%); background:color-mix(in srgb,var(--success),transparent 90%); }
.billing-status-pending_payment, .billing-status-processing, .billing-status-trialing { color:var(--warning); border-color:color-mix(in srgb,var(--warning),transparent 68%); background:color-mix(in srgb,var(--warning),transparent 90%); }
.billing-status-past_due, .billing-status-failed, .billing-status-expired, .billing-status-canceled, .billing-status-suspended, .billing-status-uncollectible { color:var(--danger); border-color:color-mix(in srgb,var(--danger),transparent 68%); background:color-mix(in srgb,var(--danger),transparent 91%); }
.billing-v2-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:18px 0; }
.billing-metric { display:flex; flex-direction:column; gap:7px; min-height:132px; padding:20px; }
.billing-metric > span { color:var(--muted); font-size:12px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; }
.billing-metric > strong { color:var(--text); font-size:28px; font-weight:780; line-height:1.1; }
.billing-metric > small { margin-top:auto; color:var(--muted); }
.billing-metric-primary { border-color:color-mix(in srgb,var(--brand),transparent 56%); background:linear-gradient(145deg,var(--surface),var(--brand-wash)); }
.billing-metric-danger { border-color:color-mix(in srgb,var(--danger),transparent 60%); }
.billing-v2-section { margin-top:14px; padding:22px; }
.billing-section-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:17px; }
.billing-section-heading h2, .billing-section-heading h3 { margin:2px 0 0; color:var(--text); }
.billing-section-heading p { margin:5px 0 0; color:var(--muted); }
.billing-note { max-width:480px; color:var(--muted); font-size:12px; text-align:right; }
.billing-line-code { display:block; margin-top:3px; color:var(--muted); font-family:var(--mono); font-size:10px; }
.billing-table tfoot td { padding:15px 12px; border-top:1px solid var(--line-strong); color:var(--text); }
.billing-footnote { margin:15px 0 0; color:var(--muted); font-size:12px; line-height:1.55; }
.contract-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.contract-grid > div, .commercial-account-facts > div { display:flex; flex-direction:column; gap:6px; padding:15px; border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--surface-raised); }
.contract-grid span, .commercial-account-facts span { color:var(--muted); font-size:10px; font-weight:750; letter-spacing:.06em; text-transform:uppercase; }
.contract-grid strong, .commercial-account-facts strong { color:var(--text); font-size:13px; overflow-wrap:anywhere; }
.billing-camera-list { display:flex; flex-direction:column; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
.billing-camera-row { display:grid; grid-template-columns:minmax(230px,1fr) 150px 150px auto; align-items:center; gap:14px; margin:0; padding:14px 16px; border-bottom:1px solid var(--line); background:var(--surface-raised); }
.billing-camera-row:last-child { border-bottom:0; }
.billing-camera-row > div { display:flex; flex-direction:column; gap:4px; }
.billing-camera-row strong { color:var(--text); }
.billing-camera-row small { color:var(--muted); }
.billing-check { display:flex; align-items:center; gap:8px; color:var(--soft); font-size:12px; }
.billing-check input { accent-color:var(--brand); }
.billing-layer-count { display:flex; align-items:center; gap:8px; color:var(--soft); font-size:12px; }
.billing-layer-count input { width:64px; min-height:34px; padding:5px 7px; color:var(--text); border:1px solid var(--line-strong); background:var(--canvas); }
.commercial-catalog-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.commercial-catalog-item { display:flex; flex-direction:column; gap:12px; margin:0; padding:18px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface-raised); }
.commercial-catalog-title { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.commercial-catalog-title > div { display:flex; flex-direction:column; gap:4px; }
.commercial-catalog-title strong { color:var(--text); }
.commercial-catalog-title small { color:var(--muted); font-family:var(--mono); }
.commercial-catalog-item > p { min-height:38px; margin:0; color:var(--soft); font-size:12px; line-height:1.5; }
.commercial-catalog-item .btn { align-self:flex-start; }
.billing-review-flag { padding:9px 11px; border-left:2px solid var(--warning); color:var(--warning); background:color-mix(in srgb,var(--warning),transparent 92%); font-size:11px; }
.commercial-org-list { display:flex; flex-direction:column; gap:9px; }
.commercial-org { border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:var(--surface-raised); }
.commercial-org summary { display:grid; grid-template-columns:minmax(210px,1fr) auto auto; align-items:center; gap:24px; padding:16px 18px; cursor:pointer; list-style:none; }
.commercial-org summary::-webkit-details-marker { display:none; }
.commercial-org summary > div:first-child { display:flex; flex-direction:column; gap:4px; }
.commercial-org summary strong { color:var(--text); }
.commercial-org summary small { color:var(--muted); }
.commercial-org-usage { display:flex; gap:16px; color:var(--soft); font-size:12px; }
.commercial-org-body { padding:18px; border-top:1px solid var(--line); background:var(--surface); }
.commercial-account-facts { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; margin-bottom:18px; }
.commercial-contract-form { margin:0; padding-top:4px; }
.billing-upcoming-terms { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:10px 0 18px; padding:11px 13px; border:1px solid var(--line); background:var(--surface-raised); }
.billing-upcoming-terms strong { margin-right:4px; color:var(--text); font-size:11px; }
.billing-upcoming-terms span { padding:4px 7px; color:var(--soft); border:1px solid var(--line); font-size:10px; }
.billing-term-chip { display:flex; align-items:center; gap:5px; }
.billing-term-chip form { margin:0; }
.commercial-form-four { grid-template-columns:repeat(4,minmax(0,1fr)); }
.commercial-monitor-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.commercial-event-list { display:flex; flex-direction:column; }
.commercial-event-list article { display:grid; grid-template-columns:minmax(160px,.7fr) minmax(220px,1fr) minmax(200px,1fr); gap:12px; padding:11px 0; border-bottom:1px solid var(--line); }
.commercial-event-list article:last-child { border-bottom:0; }
.commercial-event-list strong { color:var(--text); font-size:12px; }
.commercial-event-list span, .commercial-event-list small { color:var(--muted); font-size:11px; overflow-wrap:anywhere; }

@media (max-width:1100px) {
  .billing-v2-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .commercial-account-facts, .commercial-form-four { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .billing-camera-row { grid-template-columns:minmax(200px,1fr) 130px 130px auto; }
}
@media (max-width:760px) {
  .billing-v2-header, .billing-section-heading { align-items:flex-start; flex-direction:column; }
  .billing-note { text-align:left; }
  .billing-v2-actions { justify-content:flex-start; }
  .billing-v2-metrics, .commercial-catalog-grid, .contract-grid, .commercial-monitor-grid, .commercial-account-facts, .commercial-form-four { grid-template-columns:1fr; }
  .billing-camera-row { grid-template-columns:1fr 1fr; }
  .billing-camera-row > div { grid-column:1 / -1; }
  .commercial-org summary { grid-template-columns:1fr; gap:9px; }
  .commercial-event-list article { grid-template-columns:1fr; gap:4px; }
}

/* Super-admin organisation support mode ------------------------------------ */
.ops-assumed-org { margin-bottom:9px; border-color:color-mix(in srgb,var(--cyan),transparent 65%); background:color-mix(in srgb,var(--cyan),transparent 93%); }
.ops-assumed-org > span { color:var(--cyan); font:750 7px var(--mono); letter-spacing:.12em; text-transform:uppercase; }
.ops-assumed-org > strong { overflow:hidden; color:var(--text); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.ops-assumed-org form { margin:5px 0 0; }
.ops-assumed-org button { padding:0; color:var(--soft); border:0; background:transparent; cursor:pointer; font-size:8px; text-align:left; text-decoration:underline; text-underline-offset:3px; }
.ops-assumed-org button:hover { color:var(--text); }

.ops-support-context { min-height:62px; display:flex; align-items:center; justify-content:space-between; gap:20px; padding:10px 22px; border-bottom:1px solid color-mix(in srgb,var(--cyan),transparent 68%); background:color-mix(in srgb,var(--cyan),var(--surface) 91%); }
.ops-support-context > div { min-width:0; display:flex; align-items:center; gap:12px; }
.ops-support-context-mark { width:34px; height:34px; display:grid; flex:0 0 auto; place-items:center; color:var(--cyan); border:1px solid color-mix(in srgb,var(--cyan),transparent 60%); font:800 8px var(--mono); letter-spacing:.07em; }
.ops-support-context p { min-width:0; display:grid; gap:2px; }
.ops-support-context strong { overflow:hidden; color:var(--text); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.ops-support-context small { color:var(--muted); font-size:8px; line-height:1.45; }
.ops-support-context form { margin:0; flex:0 0 auto; }
.ops-support-context .btn { min-height:34px; }

.org-support-actions { display:flex; align-items:center; flex-wrap:wrap; gap:7px; }
.org-support-actions form { display:inline-flex; margin:0; }
.org-support-actions .btn { white-space:nowrap; }
.ops-hero-actions { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:8px; }
.invite-url { display:block; max-width:420px; color:var(--accent); font-family:var(--font-mono); font-size:10px; overflow-wrap:anywhere; }

.support-launcher { padding:22px; border:1px solid color-mix(in srgb,var(--cyan),transparent 74%); background:linear-gradient(130deg,color-mix(in srgb,var(--cyan),transparent 95%),var(--surface) 42%); }
.support-launcher-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; padding-bottom:18px; border-bottom:1px solid var(--line); }
.support-launcher-heading > div { max-width:720px; }
.support-launcher-heading h2 { margin:8px 0 6px; color:var(--text); font-size:19px; font-weight:520; }
.support-launcher-heading p { color:var(--muted); font-size:10px; line-height:1.6; }
.support-launcher-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
.support-launcher-list > article { min-height:66px; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 0; border-bottom:1px solid var(--line); }
.support-launcher-list > article:nth-child(odd) { padding-right:18px; border-right:1px solid var(--line); }
.support-launcher-list > article:nth-child(even) { padding-left:18px; }
.support-launcher-list > article > div:first-child { min-width:0; display:grid; gap:3px; }
.support-launcher-list strong { overflow:hidden; color:var(--text); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.support-launcher-list small { color:var(--muted); font-size:8px; }

@media (max-width:900px) {
  .ops-support-context small { display:none; }
  .support-launcher-list { grid-template-columns:1fr; }
  .support-launcher-list > article:nth-child(odd), .support-launcher-list > article:nth-child(even) { padding-inline:0; border-right:0; }
}
@media (max-width:620px) {
  .ops-support-context { padding-inline:12px; }
  .ops-support-context-mark { display:none; }
  .ops-support-context .btn { padding-inline:10px; font-size:8px; }
  .support-launcher-heading { align-items:flex-start; flex-direction:column; }
  .support-launcher-list > article { align-items:flex-start; flex-direction:column; }
}

/* Operator interaction and layer reliability -------------------------------- */
.ops-topbar { position:relative; z-index:400; flex:0 0 auto; overflow:visible; }
.ops-content { position:relative; z-index:1; }
.ops-topbar-actions, .ops-topbar .nav-dropdown { position:relative; z-index:410; }
.ops-topbar .nav-dropdown-menu { z-index:500; min-width:230px; }
.ops-user { cursor:pointer; transition:background .16s ease, border-color .16s ease, box-shadow .16s ease, transform .08s ease; }
.ops-user:hover, .ops-user:focus-visible, .nav-dropdown.open .ops-user { border-color:var(--line-strong); background:var(--surface-bright); box-shadow:0 8px 22px rgba(0,0,0,.12); outline:none; }
.ops-user:active { transform:translateY(1px); }
.ops-user-chevron { color:var(--muted); font-size:10px; transition:transform .16s ease, color .16s ease; }
.nav-dropdown.open .ops-user-chevron { color:var(--text); transform:rotate(180deg); }

.asset-map-toolbar { z-index:35; }
.asset-map-toolbar button, .asset-context-menu button, .asset-object-row, .asset-registry-row,
.asset-kind-filter button, .asset-filter-actions button, .object-kind-picker button,
.asset-detail-panel button, .asset-detail-actions a { cursor:pointer; -webkit-tap-highlight-color:transparent; }
.asset-view-toggle button, .asset-toolbar-button, .asset-context-menu button,
.asset-kind-filter button, .asset-filter-actions button, .object-kind-picker button,
.asset-object-row, .asset-registry-row, .rsq-map-marker, .asset-detail-panel button,
.asset-detail-actions a { transition:color .15s ease, background .15s ease, border-color .15s ease, box-shadow .15s ease, transform .08s ease; }
.asset-view-toggle button:hover, .asset-view-toggle button:focus-visible { color:#fff; background:rgba(255,255,255,.11); outline:none; }
.asset-toolbar-button:hover, .asset-toolbar-button:focus-visible { color:#fff; border-color:rgba(255,255,255,.34); background:rgba(28,36,38,.96); box-shadow:0 7px 20px rgba(0,0,0,.22); outline:none; }
.asset-toolbar-button.primary:hover, .asset-toolbar-button.primary:focus-visible { border-color:#ff9bad; background:color-mix(in srgb,var(--brand),#fff 8%); }
.asset-view-toggle button:active, .asset-toolbar-button:active { transform:translateY(1px); box-shadow:inset 0 2px 6px rgba(0,0,0,.24); }

.asset-context-menu { min-width:196px; padding:6px; border-radius:4px; box-shadow:0 18px 48px rgba(0,0,0,.34); }
.asset-context-menu.open { animation:asset-menu-in .12s ease-out; }
.asset-context-menu button { min-height:38px; padding:9px 11px; border-radius:2px; }
.asset-context-menu button:hover, .asset-context-menu button:focus-visible { color:var(--text); background:var(--surface-bright); outline:1px solid var(--line-strong); }
.asset-context-menu button:active { color:#fff; background:var(--brand); transform:translateY(1px); }
@keyframes asset-menu-in { from { opacity:0; transform:translateY(-4px) scale(.98); } to { opacity:1; transform:none; } }

.rsq-map-marker:hover, .rsq-map-marker:focus-visible { box-shadow:0 7px 22px #000; outline:2px solid rgba(255,255,255,.8); outline-offset:2px; }
.rsq-map-marker:active { opacity:.88; }
.rsq-map-marker.selected { outline:3px solid #fff; outline-offset:3px; box-shadow:0 0 0 6px rgba(105,215,231,.25),0 8px 24px #000; }
.rsq-map-marker.marker-camera.selected { box-shadow:0 0 0 6px rgba(223,86,109,.25),0 8px 24px #000; }

.asset-panel-heading { min-height:96px; }
.asset-panel-hint { max-width:245px; margin-top:6px; color:var(--muted); font-size:7px; line-height:1.45; }
.asset-object-row { position:relative; cursor:pointer; }
.asset-object-row:hover, .asset-object-row:focus-visible { background:var(--surface-bright); box-shadow:inset 3px 0 0 var(--cyan); outline:none; }
.asset-object-row:active { background:color-mix(in srgb,var(--cyan),transparent 92%); transform:translateY(1px); }
.asset-object-row.selected { background:color-mix(in srgb,var(--cyan),transparent 91%); box-shadow:inset 3px 0 0 var(--cyan); }
.asset-object-row.selected .asset-object-glyph { border-color:var(--cyan); box-shadow:0 0 0 3px color-mix(in srgb,var(--cyan),transparent 86%); }
.asset-registry-row:hover, .asset-registry-row:focus-visible { color:var(--text); background:var(--surface-bright); box-shadow:inset 3px 0 0 var(--cyan); outline:none; }
.asset-registry-row:active { transform:translateY(1px); }
.asset-registry-row.selected { color:var(--text); background:color-mix(in srgb,var(--cyan),transparent 91%); box-shadow:inset 3px 0 0 var(--cyan); }

.asset-kind-filter button:hover, .asset-kind-filter button:focus-visible,
.object-kind-picker button:hover, .object-kind-picker button:focus-visible { color:var(--text); border-color:var(--line-strong); background:var(--surface-bright); outline:none; }
.asset-kind-filter button:active, .object-kind-picker button:active,
.asset-filter-actions button:active, .asset-detail-panel button:active,
.asset-detail-actions a:active { transform:translateY(1px); }
.asset-filter-actions button:hover, .asset-filter-actions button:focus-visible { color:var(--text); text-decoration:underline; text-underline-offset:3px; outline:none; }
.asset-detail-panel > header button:hover, .asset-detail-panel > header button:focus-visible,
.camera-preview > button:hover, .camera-preview > button:focus-visible { color:var(--text); outline:none; }
.asset-detail-actions a:hover, .asset-detail-actions a:focus-visible,
.asset-detail-actions button:hover, .asset-detail-actions button:focus-visible { color:var(--text); border-color:var(--cyan); background:color-mix(in srgb,var(--cyan),transparent 94%); outline:none; }
.asset-detail-actions .danger:hover, .asset-detail-actions .danger:focus-visible { color:#fff; border-color:var(--danger); background:color-mix(in srgb,var(--danger),transparent 78%); }
.operations-form button:disabled { cursor:wait; opacity:.66; }

.asset-registry-view header { align-items:flex-start; gap:20px; }
.asset-registry-actions { display:flex; align-items:flex-end; flex-direction:column; gap:10px; }
.asset-registry-actions small { color:var(--muted); }
.registry-return-map { min-height:36px; color:var(--text); border-color:var(--line-strong); background:var(--canvas); }

html[data-theme="light"] .asset-object-row:hover,
html[data-theme="light"] .asset-object-row:focus-visible,
html[data-theme="light"] .asset-registry-row:hover,
html[data-theme="light"] .asset-registry-row:focus-visible { background:var(--surface-bright); }

@media (max-width:820px) {
  .asset-registry-view .registry-return-map { display:inline-flex; align-items:center; }
  .asset-registry-view header { align-items:flex-start; }
  .asset-registry-actions { align-items:flex-end; }
  .asset-panel-hint { display:none; }
}
@media (max-width:560px) {
  .asset-registry-view header { flex-direction:column; }
  .asset-registry-actions { align-items:flex-start; }
}

/* Calm, centred native dialog motion ---------------------------------------- */
dialog.operations-dialog, dialog.release-notes-dialog, dialog.modal {
  position:fixed; inset:0; margin:auto; opacity:0; transform:translateY(10px) scale(.985);
  transform-origin:center; transition:opacity .17s ease-out, transform .17s ease-out;
}
dialog.operations-dialog.dialog-visible, dialog.release-notes-dialog.dialog-visible, dialog.modal.dialog-visible {
  opacity:1; transform:none;
}
dialog.operations-dialog.dialog-closing, dialog.release-notes-dialog.dialog-closing, dialog.modal.dialog-closing {
  opacity:0; transform:translateY(6px) scale(.99);
}
dialog.operations-dialog::backdrop, dialog.release-notes-dialog::backdrop, dialog.modal::backdrop {
  opacity:0; transition:opacity .17s ease-out;
}
dialog.operations-dialog.dialog-visible::backdrop, dialog.release-notes-dialog.dialog-visible::backdrop, dialog.modal.dialog-visible::backdrop { opacity:1; }

/* Non-blocking map inspectors ------------------------------------------------ */
.asset-floating-editor { position:absolute; z-index:48; top:92px; right:22px; width:min(390px,calc(100% - 28px)); max-height:calc(100% - 116px); display:grid; grid-template-rows:auto minmax(0,1fr); overflow:hidden; opacity:0; visibility:hidden; transform:translateY(8px) scale(.985); color:var(--text); border:1px solid var(--line-strong); border-radius:4px; background:color-mix(in srgb,var(--surface),transparent 3%); box-shadow:0 24px 72px rgba(0,0,0,.38); backdrop-filter:blur(18px); transition:opacity .17s ease-out, transform .17s ease-out, visibility 0s linear .17s; }
.asset-floating-editor.open { opacity:1; visibility:visible; transform:none; transition-delay:0s; }
.asset-floating-editor-heading { min-height:58px; display:flex; align-items:center; justify-content:space-between; gap:14px; padding:10px 13px 10px 16px; border-bottom:1px solid var(--line); cursor:move; user-select:none; }
.asset-floating-editor-heading h2 { margin-top:4px; font-size:13px; font-weight:560; }
.asset-floating-editor-heading p { margin-top:3px; color:var(--muted); font-size:7px; }
.asset-floating-editor-heading button { width:30px; height:30px; flex:0 0 auto; color:var(--soft); border:1px solid var(--line); background:transparent; cursor:pointer; }
.asset-floating-form { display:grid; gap:12px; padding:15px; overflow:auto; }
.asset-floating-form label { display:grid; gap:5px; color:var(--muted); font:700 7px var(--mono); letter-spacing:.04em; text-transform:uppercase; }
.asset-floating-form input, .asset-floating-form select, .asset-floating-form textarea { width:100%; min-height:36px; padding:8px 9px; color:var(--text); border:1px solid var(--line-strong); background:var(--canvas); font:400 9px Inter,"Avenir Next",ui-sans-serif,system-ui,sans-serif; }
.asset-floating-form input:focus, .asset-floating-form select:focus, .asset-floating-form textarea:focus { border-color:var(--cyan); outline:2px solid color-mix(in srgb,var(--cyan),transparent 84%); outline-offset:0; }
.asset-floating-form footer { display:flex; align-items:center; justify-content:space-between; gap:8px; padding-top:4px; }
.asset-floating-form footer > span { color:var(--muted); font-size:7px; line-height:1.4; }
.asset-editor-actions { display:flex; gap:7px; }
.asset-editor-actions .btn { min-height:34px; }
.asset-form-check { min-height:36px; display:flex !important; align-items:center; grid-template-columns:18px 1fr; text-transform:none !important; }
.asset-form-check input { width:16px; min-height:16px; }
.asset-editor-status { min-height:24px; display:flex; align-items:center; gap:7px; padding:0 9px; color:var(--cyan); border:1px solid color-mix(in srgb,var(--cyan),transparent 78%); background:color-mix(in srgb,var(--cyan),transparent 94%); font-size:7px; }
.asset-editor-status i { width:5px; height:5px; border-radius:50%; background:var(--cyan); }
.zone-editor-controls { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.zone-editor-controls button { min-height:30px; padding:0 9px; }
.zone-editor-map { position:relative; min-height:340px; overflow:hidden; border:1px solid var(--line-strong); background:var(--canvas); }
.zone-editor-map .maplibregl-canvas { cursor:crosshair; }
.zone-editor-instructions { color:var(--muted); font-size:8px; line-height:1.55; }
.zone-vertex-marker { width:14px; height:14px; border:2px solid #fff; border-radius:50%; background:var(--brand-bright); box-shadow:0 3px 12px rgba(0,0,0,.45); cursor:move; }
.zone-vertex-marker.selected { width:18px; height:18px; border-color:var(--cyan); background:#fff; box-shadow:0 0 0 4px color-mix(in srgb,var(--cyan),transparent 58%),0 5px 16px rgba(0,0,0,.5); }
.zone-editor-controls button:disabled { cursor:not-allowed; opacity:.42; }
.zone-card { width:100%; color:var(--text); border:0; cursor:pointer; text-align:left; font-family:inherit; transition:background .15s ease, box-shadow .15s ease, transform .08s ease; }
.zone-card:hover, .zone-card:focus-visible { background:var(--surface-bright); box-shadow:inset 3px 0 0 var(--zone-color,var(--brand)); outline:none; }
.zone-card:active { transform:translateY(1px); }
.zone-dialog { width:min(920px,calc(100vw - 28px)); }
.zone-dialog-layout { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(260px,.7fr); gap:15px; }
.zone-dialog-fields { display:grid; align-content:start; gap:12px; }
.zone-manager-layout { display:grid; grid-template-columns:minmax(0,1fr) 350px; min-height:430px; }
.zone-manager-layout .zone-grid { grid-template-columns:repeat(2,minmax(0,1fr)); align-content:start; }
.zone-manager-layout .zone-card { min-height:172px; }
.zone-card.selected { position:relative; z-index:1; background:var(--surface-bright); box-shadow:inset 3px 0 0 var(--zone-color,var(--brand)),0 0 0 1px var(--zone-color,var(--brand)); }
.zone-card small { display:block; margin-top:10px; color:var(--soft); font:700 7px var(--mono); }
.zone-swatch.camera-view { width:42px; height:30px; margin-top:5px; }
.zone-swatch.camera-view i { width:24px; height:13px; transform:none; }
.zone-rule-inspector { display:grid; align-content:start; gap:12px; padding:20px; border-left:1px solid var(--line); background:var(--canvas); }
.zone-rule-inspector h3 { font-size:16px; font-weight:560; }
.zone-rule-inspector > p { color:var(--muted); font-size:8px; line-height:1.6; }
.zone-inspector-facts { display:grid; border:1px solid var(--line); }
.zone-inspector-facts div { display:grid; grid-template-columns:110px 1fr; gap:8px; padding:8px 9px; border-bottom:1px solid var(--line); }
.zone-inspector-facts div:last-child { border-bottom:0; }
.zone-inspector-facts dt { color:var(--muted); font:700 7px var(--mono); text-transform:uppercase; }
.zone-inspector-facts dd { color:var(--text); font-size:8px; }
.zone-inspector-actions { display:flex; flex-wrap:wrap; gap:7px; }
.zone-attached-heading { padding-top:11px; border-top:1px solid var(--line); color:var(--text); font:750 8px var(--mono); text-transform:uppercase; }
.zone-attached-list { display:grid; gap:7px; max-height:280px; overflow:auto; }
.zone-attached-rule { display:grid; gap:6px; padding:10px; border:1px solid var(--line); background:var(--surface); }
.zone-attached-rule.is-disabled { opacity:.5; }
.zone-attached-rule header { display:flex; justify-content:space-between; align-items:center; }
.zone-attached-rule header > span:last-child { color:var(--success); font:750 6px var(--mono); }
.zone-attached-rule strong { font-size:9px; }
.zone-attached-rule p,.zone-attached-rule small,.zone-inspector-empty,.zone-inspector-loading,.zone-inspector-error { color:var(--muted); font-size:7px; line-height:1.5; }
.zone-inspector-error { color:var(--danger); }
.zone-type-picker { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.zone-type-picker label { position:relative; display:block; }
.zone-type-picker input { position:absolute; opacity:0; }
.zone-type-picker span { min-height:58px; display:grid; align-content:center; gap:4px; padding:10px 12px; border:1px solid var(--line); background:var(--canvas); cursor:pointer; transition:border-color .15s ease,background .15s ease; }
.zone-type-picker strong { color:var(--text); font-size:9px; }
.zone-type-picker small { color:var(--muted); font-size:7px; }
.zone-type-picker input:checked + span { border-color:var(--brand-bright); background:var(--brand-wash); box-shadow:inset 3px 0 0 var(--brand-bright); }
.image-zone-camera { display:grid; gap:5px; margin-bottom:8px; color:var(--muted); font:700 7px var(--mono); text-transform:uppercase; }
.image-zone-camera select { min-height:35px; padding:7px 8px; color:var(--text); border:1px solid var(--line-strong); background:var(--canvas); }
.image-zone-editor { min-height:0; display:flex; align-items:center; justify-content:center; overflow:hidden; border:1px solid var(--line-strong); background-color:#101719; background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px); background-size:24px 24px; }
.image-zone-frame { position:relative; width:100%; max-width:100%; aspect-ratio:16 / 9; overflow:hidden; background:#0b1012; }
.image-zone-frame > img { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; user-select:none; }
.image-zone-empty { position:absolute; inset:0; display:grid; place-content:center; gap:7px; padding:36px; color:var(--muted); text-align:center; }
.image-zone-empty strong { color:var(--soft); font-size:12px; }
.image-zone-empty span { max-width:420px; font-size:8px; line-height:1.55; }
.image-zone-overlay { position:absolute; z-index:2; inset:0; width:100%; height:100%; cursor:crosshair; touch-action:none; }
.image-zone-overlay circle { cursor:move; pointer-events:all; }
.image-zone-coordinate-note { display:grid; gap:5px; padding:10px; color:var(--muted); border:1px solid color-mix(in srgb,var(--cyan),transparent 72%); background:color-mix(in srgb,var(--cyan),transparent 95%); font-size:7px; line-height:1.5; }
.image-zone-coordinate-note strong { color:var(--cyan); font:750 7px var(--mono); text-transform:uppercase; }
.safe-access-parent{display:grid;grid-template-columns:auto 1fr;gap:11px;align-items:center;padding:11px 12px;border:1px solid rgba(105,215,231,.32);background:rgba(105,215,231,.07)}
.safe-access-parent>span{padding:5px 7px;color:#8ce5ef;border:1px solid rgba(105,215,231,.35);font:700 7px var(--mono);letter-spacing:.08em}
.safe-access-parent>div{display:grid;gap:3px}.safe-access-parent strong{font-size:9px}.safe-access-parent small{color:var(--muted);font-size:7px;line-height:1.45}
.owned-safe-access-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-top:3px;padding-top:13px;border-top:1px solid var(--line)}
.owned-safe-access-heading>div{display:grid;gap:3px}.owned-safe-access-heading strong{font-size:9px}.owned-safe-access-heading small{max-width:310px;color:var(--muted);font-size:7px;line-height:1.45}
.owned-safe-access-list{display:grid;gap:6px}.owned-safe-access-card{display:grid;grid-template-columns:5px minmax(0,1fr) auto;gap:9px;align-items:center;padding:9px;border:1px solid var(--line);background:var(--surface-bright)}
.owned-safe-access-swatch{align-self:stretch;background:var(--zone-color,#69d7e7)}.owned-safe-access-card>div:nth-child(2){display:grid;gap:3px}.owned-safe-access-card span{color:#8ce5ef;font:700 7px var(--mono);letter-spacing:.05em}.owned-safe-access-card strong{font-size:8px}.owned-safe-access-card small{color:var(--muted);font-size:7px}.owned-safe-access-actions{display:flex;gap:7px}
.asset-zone-alerts { display:grid; gap:9px; padding-top:13px; border-top:1px solid var(--line); }
.asset-zone-alerts > div:first-child { display:flex; align-items:center; justify-content:space-between; color:var(--muted); font:750 7px var(--mono); text-transform:uppercase; }
.asset-zone-alerts > div:first-child strong { display:grid; place-items:center; min-width:24px; height:20px; color:var(--text); border:1px solid var(--line); }

/* Operational data layers, analytics and ONVIF control */
.data-layer-hero,.analytics-hero{align-items:flex-end}.data-layer-hero>div:first-child,.analytics-hero>div:first-child{max-width:760px}.data-layer-hero p,.analytics-hero p{margin:9px 0 0;color:var(--muted);font-size:12px;line-height:1.7}.page-actions{display:flex;gap:9px;align-items:center}.data-layer-principles{display:grid;grid-template-columns:repeat(3,1fr);margin:8px 0 28px;border:1px solid var(--line);background:var(--panel)}.data-layer-principles article{display:flex;gap:14px;min-height:108px;padding:22px;border-right:1px solid var(--line)}.data-layer-principles article:last-child{border-right:0}.data-layer-principles article>span{color:var(--brand-bright);font:700 10px var(--mono)}.data-layer-principles strong{font-size:13px}.data-layer-principles p{margin:7px 0 0;color:var(--muted);font-size:10px;line-height:1.6}.data-layer-section{margin:0 0 30px}.data-layer-section>header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:12px}.data-layer-section>header h2{margin:5px 0 0;font-size:18px}.data-layer-section>header>span{color:var(--muted);font:700 8px var(--mono);text-transform:uppercase}.data-layer-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(275px,1fr));gap:11px}.data-layer-card{display:grid;gap:15px;min-height:260px;padding:18px;border:1px solid var(--line);background:var(--panel);transition:border-color .18s ease,transform .18s ease}.data-layer-card:hover{border-color:var(--line-strong);transform:translateY(-1px)}.data-layer-card.is-disabled{opacity:.58}.data-layer-card-head{display:flex;align-items:center;gap:11px}.data-layer-card-head>i{width:4px;height:38px;background:var(--layer-color)}.data-layer-card-head>div{display:grid;gap:4px;min-width:0;margin-right:auto}.data-layer-card-head strong{font-size:12px}.data-layer-card-head code{overflow:hidden;color:var(--muted);font-size:8px;text-overflow:ellipsis}.data-layer-card>p{margin:0;color:var(--muted);font-size:10px;line-height:1.6}.data-layer-card dl{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0}.data-layer-card dl div{display:grid;gap:4px}.data-layer-card dt{color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.data-layer-card dd{margin:0;color:var(--text);font-size:10px;text-transform:capitalize}.data-layer-card footer{display:flex;align-items:center;justify-content:space-between;padding-top:13px;border-top:1px solid var(--line)}.data-layer-card footer span{color:var(--muted);font-size:9px}.data-layer-card footer button,.data-source-row>button{padding:7px 9px;color:var(--soft);border:1px solid var(--line);background:transparent;font-size:8px}.data-layer-card footer button:hover,.data-source-row>button:hover{color:var(--text);border-color:var(--brand)}.data-layer-empty,.data-source-empty{padding:30px;color:var(--muted);border:1px dashed var(--line);text-align:center}.data-layer-empty strong{display:block;color:var(--text)}.data-layer-empty p{font-size:10px}.data-source-table{border:1px solid var(--line);background:var(--panel)}.data-source-head,.data-source-row{display:grid;grid-template-columns:minmax(210px,1.4fr) minmax(120px,.8fr) minmax(130px,.8fr) minmax(150px,.9fr) 80px 70px;align-items:center;gap:14px;padding:13px 16px}.data-source-head{color:var(--muted);border-bottom:1px solid var(--line);font:700 7px var(--mono);text-transform:uppercase}.data-source-row{min-height:70px;border-bottom:1px solid var(--line);font-size:9px}.data-source-row:last-child{border-bottom:0}.data-source-row>span:first-child,.data-source-row>span:nth-child(3){display:grid;gap:4px}.data-source-row small{display:block;color:var(--muted);font-size:8px}.data-source-row time{color:var(--muted);font-size:8px}.data-layer-dialog{width:min(780px,calc(100vw - 32px))}.camera-config-section{margin:18px 0;border:1px solid var(--line);background:var(--panel-2)}.camera-config-section summary{display:flex;align-items:center;justify-content:space-between;padding:15px 17px;cursor:pointer;list-style:none}.camera-config-section summary::-webkit-details-marker{display:none}.camera-config-section summary>span:first-child{display:grid;gap:4px}.camera-config-section summary strong{font-size:11px}.camera-config-section summary small{color:var(--muted);font-size:8px}.camera-config-section summary>span:last-child{color:var(--brand-bright);font:700 8px var(--mono);text-transform:uppercase}.camera-config-section-body{padding:5px 17px 18px;border-top:1px solid var(--line)}.camera-ptz-enable{margin:15px 0}.camera-credential-choice{display:grid;grid-template-columns:1fr 40px 1fr;align-items:center;gap:12px;margin:14px 0;padding:15px;border:1px solid var(--line)}.camera-credential-choice>div{min-width:0}.camera-credential-choice small{display:block;margin-top:7px;color:var(--muted);font-size:8px;line-height:1.5}.camera-credential-or{color:var(--muted);font:700 8px var(--mono);text-align:center;text-transform:uppercase}.camera-security-note{margin:14px 0 0;padding:11px 13px;color:var(--muted);border-left:2px solid var(--brand);background:var(--canvas);font-size:8px;line-height:1.6}.form-optional{color:var(--muted);font:600 7px var(--mono)}.input-with-suffix{display:flex}.input-with-suffix input{min-width:0}.input-with-suffix span{display:flex;align-items:center;padding:0 10px;color:var(--muted);border:1px solid var(--line);border-left:0;font-size:8px}.camera-ptz-card>.card-title{display:flex;align-items:center;justify-content:space-between}.camera-ptz-layout{display:grid;grid-template-columns:minmax(230px,1fr) 170px minmax(100px,.55fr);align-items:center;gap:26px}.camera-ptz-copy h3{margin:6px 0;font-size:15px}.camera-ptz-copy p{max-width:520px;color:var(--muted);font-size:9px;line-height:1.6}.camera-ptz-copy p.is-error{color:var(--danger)}.camera-ptz-session{display:flex;align-items:center;gap:7px;margin-top:12px;color:var(--muted);font:700 8px var(--mono)}.camera-ptz-session i{width:7px;height:7px;border-radius:50%;background:var(--line-strong)}.camera-ptz-session.active i{background:var(--success);box-shadow:0 0 9px color-mix(in srgb,var(--success) 70%,transparent)}.camera-ptz-pad{display:grid;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,40px);gap:4px;justify-content:center}.camera-ptz-pad button,.camera-ptz-actions button{color:var(--text);border:1px solid var(--line);background:var(--panel-2);transition:background .14s ease,border-color .14s ease,transform .1s ease}.camera-ptz-pad button:hover,.camera-ptz-actions button:hover{border-color:var(--brand);background:var(--hover)}.camera-ptz-pad button:active,.camera-ptz-actions button:active,.camera-ptz-pad button.is-sending{transform:scale(.96);background:var(--brand-soft)}.camera-ptz-pad button:nth-child(1){grid-column:2}.camera-ptz-pad button:nth-child(2){grid-column:1;grid-row:2}.camera-ptz-pad button:nth-child(3){grid-column:2;grid-row:2}.camera-ptz-pad button:nth-child(4){grid-column:3;grid-row:2}.camera-ptz-pad button:nth-child(5){grid-column:2;grid-row:3}.camera-ptz-pad .ptz-stop{color:var(--brand-bright)}.camera-ptz-actions{display:grid;gap:5px}.camera-ptz-actions button{min-height:36px}.camera-ptz-session-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;padding-top:15px;border-top:1px solid var(--line)}.camera-ptz-empty{display:flex;align-items:center;justify-content:space-between;gap:18px}.camera-ptz-empty p{color:var(--muted);font-size:10px}.asset-camera-ptz .camera-config-section-body{padding:10px 12px 14px}.asset-camera-ptz small{color:var(--muted);font-size:8px;line-height:1.5}.asset-layer-panel{position:absolute;z-index:34;top:70px;right:22px;width:330px;max-height:calc(100% - 145px);display:flex;visibility:hidden;flex-direction:column;opacity:0;border:1px solid rgba(255,255,255,.16);background:rgba(13,17,18,.96);box-shadow:0 18px 45px rgba(0,0,0,.35);transform:translateY(-5px);transition:opacity .18s ease,transform .18s ease,visibility .18s}.asset-layer-panel.open{visibility:visible;opacity:1;transform:none}.asset-layer-panel>header{display:flex;align-items:center;justify-content:space-between;padding:15px;border-bottom:1px solid var(--line)}.asset-layer-panel h2{margin:4px 0 0;font-size:14px}.asset-layer-panel>header button{width:28px;height:28px;color:var(--muted);border:0;background:transparent;font-size:18px}.asset-layer-panel>div{overflow:auto;padding:7px}.asset-layer-option{display:grid;grid-template-columns:18px 4px 1fr;align-items:center;gap:9px;padding:10px;cursor:pointer}.asset-layer-option:hover{background:var(--hover)}.asset-layer-option input{accent-color:var(--brand)}.asset-layer-option>i{width:3px;height:28px;background:var(--layer-color)}.asset-layer-option>span{display:grid;gap:3px}.asset-layer-option strong{font-size:9px}.asset-layer-option small{color:var(--muted);font-size:7px;text-transform:capitalize}.asset-layer-panel>footer{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;color:var(--muted);border-top:1px solid var(--line);font-size:7px}.asset-layer-panel>footer a{color:var(--brand-bright)}.camera-preview-frame{position:relative}.camera-preview-overlay{position:absolute;z-index:2;inset:0;width:100%;height:100%;pointer-events:none}.camera-preview-overlay text{paint-order:stroke;stroke:rgba(0,0,0,.85);stroke-width:5px}.analytics-filters{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr)) auto;align-items:end;gap:9px;margin:8px 0 16px;padding:14px;border:1px solid var(--line);background:var(--panel)}.analytics-filters label{display:grid;gap:6px}.analytics-filters label>span{color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.analytics-filters input,.analytics-filters select{height:38px;padding:0 9px;color:var(--text);border:1px solid var(--line);background:var(--panel-2);font-size:9px}.analytics-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin-bottom:9px}.analytics-kpis article{display:grid;gap:8px;min-height:112px;padding:17px;border:1px solid var(--line);background:var(--panel)}.analytics-kpis span{color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.analytics-kpis strong{font:500 27px var(--mono)}.analytics-kpis small{color:var(--muted);font-size:8px}.analytics-kpis small b{color:var(--brand-bright)}.analytics-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:9px}.analytics-panel{min-width:0;border:1px solid var(--line);background:var(--panel)}.analytics-panel>header{display:flex;align-items:flex-end;justify-content:space-between;padding:16px 17px;border-bottom:1px solid var(--line)}.analytics-panel>header h2{margin:5px 0 0;font-size:14px}.analytics-panel>header>span{color:var(--muted);font:700 7px var(--mono)}.analytics-chart{height:280px;padding:18px}.analytics-chart svg{width:100%;height:100%;overflow:visible}.analytics-chart-legend{display:flex;justify-content:flex-end;gap:15px;padding:0 18px 14px;color:var(--muted);font-size:8px}.analytics-chart-legend span{display:flex;align-items:center;gap:5px}.analytics-chart-legend i{width:13px;height:2px}.analytics-chart-legend i.detections{background:#df566d}.analytics-chart-legend i.tracks{background:#62c5d8}.analytics-chart-legend i.alerts{background:#f1b45d}.analytics-map{height:332px}.analytics-bars{display:grid;gap:10px;padding:17px}.analytics-bar-row{display:grid;grid-template-columns:minmax(100px,1fr) 1.6fr 55px;align-items:center;gap:10px}.analytics-bar-row>span{display:grid;gap:2px;min-width:0}.analytics-bar-row strong{overflow:hidden;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.analytics-bar-row small{color:var(--muted);font-size:7px}.analytics-bar-row>i{position:relative;height:5px;background:var(--canvas)}.analytics-bar-row>i:after{position:absolute;inset:0 auto 0 0;width:var(--bar-width);content:"";background:linear-gradient(90deg,var(--brand),var(--brand-bright))}.analytics-bar-row>b{color:var(--soft);font:500 9px var(--mono);text-align:right}.analytics-location-list{display:grid}.analytics-location-list>div{display:grid;grid-template-columns:30px minmax(120px,1fr) 120px 80px;align-items:center;gap:9px;padding:13px 17px;border-bottom:1px solid var(--line);font-size:8px}.analytics-location-list>div:last-child{border-bottom:0}.analytics-location-list b{color:var(--brand-bright);font:700 7px var(--mono)}.analytics-location-list span,.analytics-location-list small{color:var(--muted)}.analytics-recent{margin-top:9px}.analytics-observation-table{overflow:auto}.analytics-observation-head,.analytics-observation-row{display:grid;grid-template-columns:170px 1.2fr 1.2fr 1fr 1fr 80px;gap:12px;align-items:center;min-width:850px;padding:11px 16px}.analytics-observation-head{color:var(--muted);border-bottom:1px solid var(--line);font:700 7px var(--mono);text-transform:uppercase}.analytics-observation-row{border-bottom:1px solid var(--line);font-size:8px}.analytics-observation-row time,.analytics-observation-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.analytics-observation-row time{color:var(--muted)}.analytics-observation-row b{text-align:right}.analytics-empty{margin:auto;color:var(--muted);font-size:9px;text-align:center}.data-source-layer-options{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;max-height:220px;overflow:auto}.data-source-layer-options label{display:flex;align-items:center;gap:8px;padding:9px;border:1px solid var(--line)}.data-source-layer-options span{display:grid;gap:2px}.data-source-layer-options small{color:var(--muted);font-size:7px}.one-time-token{display:flex;gap:8px;padding:12px;border:1px solid var(--brand);background:var(--canvas)}.one-time-token code{flex:1;overflow:auto;color:var(--brand-bright);font-size:10px}.one-time-token button{color:var(--text);border:1px solid var(--line);background:var(--panel)}.token-dialog{width:min(760px,calc(100vw - 32px))}.token-dialog pre{overflow:auto;padding:14px;color:var(--soft);background:#101415;font-size:8px;line-height:1.6}

.analytics-filters{grid-template-columns:repeat(7,minmax(110px,1fr)) auto}
.camera-preview-actions{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin-top:1px;background:var(--line)}.camera-preview-actions button{min-height:36px;color:var(--soft);border:0;background:var(--panel);font-size:8px}.camera-preview-actions button:hover,.camera-preview-actions button:focus-visible{color:var(--text);background:var(--hover);outline:none}
.analytics-observation-row{width:100%;color:var(--text);border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;cursor:pointer}.analytics-observation-row:hover,.analytics-observation-row:focus-visible{background:var(--hover);outline:none}
.analytics-area-scope[hidden]{display:none}
.analytics-area-scope{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:8px 0 10px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--area-color,#62c5d8) 45%,var(--line));background:color-mix(in srgb,var(--area-color,#62c5d8) 7%,var(--panel))}.analytics-area-scope>div{display:flex;align-items:center;gap:11px}.analytics-area-scope>div>i{width:8px;height:38px;background:var(--area-color,#62c5d8)}.analytics-area-scope>div>span{display:grid;gap:3px}.analytics-area-scope small{color:var(--area-color,#62c5d8);font:700 7px var(--mono);text-transform:uppercase}.analytics-area-scope strong{font-size:12px}.analytics-area-scope em{color:var(--muted);font-size:8px;font-style:normal}.analytics-area-dialog{width:min(1040px,calc(100vw - 28px))}.analytics-area-map{height:min(54vh,560px);border:1px solid var(--line)}.analytics-image-zone-editor{min-height:360px}.analytics-image-heatmap{height:332px;padding:14px}.analytics-image-frame{position:relative;width:100%;height:100%;overflow:hidden;background:#080b0c}.analytics-image-frame img{width:100%;height:100%;object-fit:contain}.analytics-image-frame svg{position:absolute;inset:0;width:100%;height:100%}.analytics-image-area{fill:rgba(98,197,216,.13);stroke:#62c5d8;stroke-width:4;stroke-dasharray:14 8;vector-effect:non-scaling-stroke}.analytics-image-detection{fill:rgba(223,86,109,.72);stroke:#fff;stroke-width:3;vector-effect:non-scaling-stroke}.analytics-hour-chart{height:220px;display:grid;grid-template-columns:repeat(24,1fr);align-items:end;gap:4px;padding:22px 18px 16px}.analytics-hour-chart>div{height:100%;display:grid;grid-template-rows:1fr 18px;align-items:end}.analytics-hour-chart i{display:block;height:var(--hour-height);min-height:2px;background:linear-gradient(180deg,var(--brand-bright),var(--brand));border-radius:2px 2px 0 0}.analytics-hour-chart span{padding-top:5px;color:var(--muted);font:600 7px var(--mono);text-align:center}.analytics-observation-dialog{width:min(840px,calc(100vw - 28px))}.analytics-observation-dialog>article{padding:28px}.analytics-observation-dialog header p{color:var(--muted);font-size:9px}.analytics-observation-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:18px 0;background:var(--line)}.analytics-observation-facts div{min-width:0;padding:11px;background:var(--panel)}.analytics-observation-facts dt{color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.analytics-observation-facts dd{overflow:hidden;margin:5px 0 0;font-size:9px;text-overflow:ellipsis}.analytics-observation-dialog section{margin-top:12px}.analytics-observation-dialog section h3{margin:0 0 6px;font-size:10px}.analytics-observation-dialog pre{max-height:220px;overflow:auto;margin:0;padding:13px;color:var(--soft);background:var(--canvas);font:8px/1.6 var(--mono)}.alert-zone-context-menu{position:fixed;z-index:120;display:none;min-width:190px;padding:6px;border:1px solid var(--line-strong);border-radius:4px;background:var(--surface);box-shadow:0 18px 48px rgba(0,0,0,.34)}.alert-zone-context-menu.open{display:grid}.alert-zone-context-menu button{min-height:38px;padding:9px 11px;color:var(--soft);border:0;border-radius:2px;background:none;font-size:9px;text-align:left}.alert-zone-context-menu button:hover,.alert-zone-context-menu button:focus-visible{color:var(--text);background:var(--surface-bright);outline:1px solid var(--line-strong)}

.analytics-image-heatmap{display:grid;place-items:center}.analytics-image-frame{width:auto;height:auto}
html[data-theme="light"] .asset-layer-panel{border-color:rgba(31,42,43,.18);background:rgba(247,249,249,.97);box-shadow:0 18px 45px rgba(25,35,36,.16)}
@media(max-width:1180px){.analytics-filters{grid-template-columns:repeat(3,1fr)}.analytics-kpis{grid-template-columns:repeat(3,1fr)}.camera-ptz-layout{grid-template-columns:1fr 170px}.camera-ptz-actions{grid-column:1/-1;grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.data-layer-principles,.analytics-grid{grid-template-columns:1fr}.data-layer-principles article{border-right:0;border-bottom:1px solid var(--line)}.data-layer-principles article:last-child{border-bottom:0}.analytics-filters{grid-template-columns:1fr 1fr}.analytics-kpis{grid-template-columns:1fr 1fr}.data-source-head{display:none}.data-source-row{grid-template-columns:1fr 1fr}.camera-credential-choice,.camera-ptz-layout{grid-template-columns:1fr}.camera-credential-or{padding:5px}.asset-layer-panel{right:8px;left:8px;width:auto}.data-source-layer-options{grid-template-columns:1fr}}

/* Guided data-layer connection workflow */
.data-connection-table .data-source-row{grid-template-columns:minmax(230px,1.45fr) minmax(110px,.7fr) minmax(120px,.72fr) minmax(150px,.9fr) 72px 120px}
.data-source-empty{display:grid;gap:6px}.data-source-empty strong{color:var(--text);font-size:11px}.connection-url{max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.connection-error{max-width:250px;overflow:hidden;color:var(--danger)!important;text-overflow:ellipsis;white-space:nowrap}.connection-row-actions{display:flex!important;justify-content:flex-end;gap:5px}.connection-row-actions button{padding:7px 8px;color:var(--soft);border:1px solid var(--line);background:transparent;font-size:8px}.connection-row-actions button:hover{border-color:var(--brand);color:var(--text)}.badge-danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--line));background:color-mix(in srgb,var(--danger) 9%,transparent)}
.connection-wizard-dialog{width:min(1180px,calc(100vw - 28px));height:min(820px,calc(100vh - 28px));max-width:none;max-height:none;padding:0;overflow:hidden}.connection-wizard{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;height:100%;background:var(--canvas)}.connection-wizard-header{display:flex;align-items:flex-start;justify-content:space-between;padding:23px 26px 18px;border-bottom:1px solid var(--line);background:var(--panel)}.connection-wizard-header h2{margin:5px 0 4px;font-size:22px}.connection-wizard-header p{margin:0;color:var(--muted);font-size:10px}.connection-wizard-close{width:34px;height:34px;color:var(--muted);border:1px solid var(--line);background:transparent;font-size:21px}.connection-wizard-close:hover{color:var(--text);border-color:var(--brand)}
.connection-wizard-progress{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line);background:var(--panel)}.connection-wizard-progress button{position:relative;display:flex;align-items:center;gap:9px;padding:13px 18px;color:var(--muted);border:0;border-right:1px solid var(--line);background:transparent;text-align:left}.connection-wizard-progress button:last-child{border-right:0}.connection-wizard-progress button:after{position:absolute;right:0;bottom:-1px;left:0;height:2px;background:transparent;content:""}.connection-wizard-progress button.active{color:var(--text);background:var(--hover)}.connection-wizard-progress button.active:after{background:var(--brand)}.connection-wizard-progress button.complete{color:var(--soft);cursor:pointer}.connection-wizard-progress button span{display:grid;width:22px;height:22px;place-items:center;border:1px solid var(--line);border-radius:50%;font:700 7px var(--mono)}.connection-wizard-progress button.active span,.connection-wizard-progress button.complete span{color:var(--brand-bright);border-color:var(--brand)}.connection-wizard-progress button strong{font-size:9px}
.connection-wizard-body{min-height:0;overflow:auto;padding:26px}.connection-wizard label{display:grid;gap:6px;color:var(--muted);font:700 8px var(--mono)}.connection-wizard input:not([type="radio"]):not([type="checkbox"]),.connection-wizard select,.connection-wizard textarea{width:100%;min-height:40px;padding:9px 10px;color:var(--text);border:1px solid var(--line-strong);background:var(--canvas);font:400 10px Inter,sans-serif}.connection-wizard textarea{resize:vertical}.connection-step{animation:connection-step-in .16s ease}.connection-step-heading{margin-bottom:20px}.connection-step-heading>span{color:var(--brand-bright);font:700 7px var(--mono);letter-spacing:.12em;text-transform:uppercase}.connection-step-heading h3{margin:6px 0;font-size:20px}.connection-step-heading p{max-width:720px;margin:0;color:var(--muted);font-size:10px;line-height:1.6}@keyframes connection-step-in{from{opacity:.3;transform:translateY(4px)}to{opacity:1;transform:none}}
.connection-source-picker{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:20px}.connection-source-picker label{position:relative;display:grid;grid-template-columns:48px 1fr;grid-template-rows:auto auto;column-gap:13px;padding:19px;cursor:pointer;border:1px solid var(--line);background:var(--panel);transition:border-color .15s ease,background .15s ease}.connection-source-picker label:hover{border-color:var(--line-strong);background:var(--hover)}.connection-source-picker label:has(input:checked){border-color:var(--brand);background:var(--brand-soft)}.connection-source-picker input{position:absolute;opacity:0}.connection-source-mark{display:grid;grid-row:1/3;width:48px;height:42px;place-items:center;color:var(--brand-bright);border:1px solid var(--line);font:700 7px var(--mono)}.connection-source-picker strong{align-self:end;font-size:11px}.connection-source-picker small{align-self:start;margin-top:5px;color:var(--muted);font-size:8px;line-height:1.4}.connection-source-fields{padding:18px;border:1px solid var(--line);background:var(--panel)}
.connection-file-drop{display:grid;min-height:150px;place-content:center;gap:8px;cursor:pointer;border:1px dashed var(--line-strong);background:var(--canvas);text-align:center}.connection-file-drop:hover,.connection-file-drop.dragging{border-color:var(--brand);background:var(--brand-soft)}.connection-file-drop input{position:absolute;width:1px;height:1px;opacity:0}.connection-file-drop span{font-size:12px}.connection-file-drop small{color:var(--muted);font-size:8px}.connection-callout{padding:17px;border-left:3px solid var(--brand);background:var(--canvas)}.connection-callout strong{font-size:11px}.connection-callout p{margin:7px 0 0;color:var(--muted);font-size:9px;line-height:1.6}.connection-callout code{color:var(--brand-bright)}.connection-private-toggle{display:flex!important;align-items:flex-start;gap:10px;margin:14px 0 0!important;padding:13px;border:1px solid var(--line)}.connection-private-toggle input{margin-top:3px;accent-color:var(--brand)}.connection-private-toggle span{display:grid;gap:4px}.connection-private-toggle strong{font-size:9px}.connection-private-toggle small{color:var(--muted);font-size:8px;line-height:1.45}
.connection-catalogue-result{display:grid;gap:8px;margin-top:14px;padding:17px;border-left:3px solid var(--warning);background:var(--canvas)}.connection-catalogue-result>strong{font-size:12px}.connection-catalogue-result p{margin:0;color:var(--soft);font-size:9px;line-height:1.55}.connection-catalogue-result small{color:var(--muted);font-size:8px}.connection-catalogue-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.connection-catalogue-links a,.connection-catalogue-links span{padding:8px 10px;color:var(--brand-bright);border:1px solid var(--line);font:700 8px var(--mono)}.connection-catalogue-links a:hover{border-color:var(--brand);background:var(--brand-soft)}
.connection-preview-layout{display:grid;grid-template-columns:minmax(350px,.9fr) minmax(430px,1.25fr);gap:18px}.connection-preview-stats{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:16px;border:1px solid var(--line);background:var(--panel)}.connection-preview-stats article{display:grid;gap:6px;min-width:0;padding:14px;border-right:1px solid var(--line)}.connection-preview-stats article:last-child{border-right:0}.connection-preview-stats span{color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.connection-preview-stats strong{overflow:hidden;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.connection-field-mapping{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:14px}.connection-field-mapping label:last-child{grid-column:1/-1}.connection-preview-panel{position:relative;min-height:470px;border:1px solid var(--line);background:var(--panel)}.connection-preview-panel>header{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 14px;border-bottom:1px solid var(--line)}.connection-preview-panel>header span{font:700 8px var(--mono);text-transform:uppercase}.connection-preview-panel>header strong{color:var(--muted);font-size:8px}.connection-preview-panel #connection-preview-map{height:420px}.connection-preview-empty{position:absolute;inset:48px 0 0;z-index:2;display:grid;place-items:center;color:var(--muted);background:var(--panel);font-size:9px}
.connection-config-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin-bottom:11px}.connection-refresh-fields{margin-top:18px;padding:17px;border:1px solid var(--line);background:var(--panel)}.connection-refresh-fields label[data-refresh-interval]{position:relative}.connection-refresh-fields label[data-refresh-interval] small{position:absolute;right:10px;bottom:12px;color:var(--muted);font-size:8px}.connection-refresh-fields label[data-refresh-interval] input{padding-right:60px}
.connection-review-layout{display:grid;grid-template-columns:1fr 330px;gap:22px}.connection-review{display:grid;grid-template-columns:1fr 1fr;margin:0;border:1px solid var(--line);background:var(--panel)}.connection-review>div{display:grid;gap:5px;padding:14px 16px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.connection-review>div:nth-child(even){border-right:0}.connection-review dt{color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.connection-review dd{margin:0;font-size:10px}.connection-readiness{padding:20px;border:1px solid var(--line);background:var(--panel)}.connection-readiness ul{display:grid;gap:10px;margin:16px 0;padding:0;list-style:none}.connection-readiness li{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:9px}.connection-readiness li:before{display:grid;width:17px;height:17px;place-items:center;border:1px solid var(--line);border-radius:50%;content:""}.connection-readiness li.ready{color:var(--text)}.connection-readiness li.ready:before{color:var(--success);border-color:var(--success);content:"✓"}.connection-readiness p{margin:18px 0 0;padding-top:15px;color:var(--muted);border-top:1px solid var(--line);font-size:8px;line-height:1.6}.connection-activation-state{margin-top:16px;padding:14px 16px;border:1px solid var(--line);font-size:9px}.connection-activation-state.working{color:var(--brand-bright);border-color:var(--brand)}.connection-activation-state.success{color:var(--success);border-color:var(--success)}.connection-activation-state.error{color:var(--danger);border-color:var(--danger)}
.connection-token-result{margin-top:18px;padding:18px;border:1px solid var(--brand);background:var(--panel)}.connection-token-result header h3{margin:5px 0}.connection-token-result header p{margin:0 0 14px;color:var(--muted);font-size:9px}.connection-token-result label{margin-top:8px}.connection-token-result label>div{display:flex;margin-top:6px}.connection-token-result code{flex:1;overflow:auto;padding:11px;color:var(--brand-bright);background:var(--canvas);font-size:9px;white-space:nowrap}.connection-token-result button{padding:0 13px;color:var(--text);border:1px solid var(--line);background:var(--panel-2);font-size:8px}.connection-wizard-actions{display:flex;align-items:center;gap:8px;padding:15px 24px;border-top:1px solid var(--line);background:var(--panel)}.connection-wizard-actions>span{flex:1}
@media(max-width:900px){.connection-wizard-dialog{width:calc(100vw - 12px);height:calc(100vh - 12px)}.connection-wizard-progress button{justify-content:center;padding:12px 6px}.connection-wizard-progress button strong{display:none}.connection-source-picker,.connection-preview-layout,.connection-review-layout{grid-template-columns:1fr}.connection-config-grid{grid-template-columns:1fr 1fr}.connection-preview-panel{min-height:350px}.connection-preview-panel #connection-preview-map{height:300px}.data-connection-table .data-source-row{grid-template-columns:1fr 1fr}.connection-row-actions{justify-content:flex-start}}
@media(max-width:560px){.connection-wizard-body{padding:17px}.connection-source-picker,.connection-config-grid,.connection-field-mapping,.connection-review{grid-template-columns:1fr}.connection-review>div{border-right:0}.connection-wizard-header{padding:18px}.connection-wizard-actions{padding:12px}.connection-wizard-actions .btn{padding-right:10px;padding-left:10px}.connection-preview-stats{grid-template-columns:1fr}.connection-preview-stats article{border-right:0;border-bottom:1px solid var(--line)}}
#detail-zone-rule-list { display:grid; gap:7px; }
.asset-zone-rule { display:grid; gap:5px; padding:9px; border:1px solid var(--line); background:var(--canvas); }
.asset-zone-rule.is-disabled { opacity:.5; }
.asset-zone-rule > div { display:flex; align-items:center; justify-content:space-between; gap:7px; }
.asset-zone-rule strong { font-size:8px; }
.asset-zone-rule span { color:var(--brand-bright); font:750 6px var(--mono); text-transform:uppercase; }
.asset-zone-rule p,.asset-zone-rule small,.asset-zone-rule-empty { color:var(--muted); font-size:7px; line-height:1.45; }
.camera-cone-map-label { color:#fff; font:750 7px var(--mono); text-shadow:0 1px 5px #000; pointer-events:none; }

.ops-dashboard .ops-kpi-grid { grid-template-columns:repeat(5,minmax(0,1fr)); }
.admin-user-management { padding:22px; border:1px solid var(--line); background:var(--surface); }
.admin-user-role-summary { display:flex; flex-wrap:wrap; gap:7px; padding:14px 0; border-bottom:1px solid var(--line); }
.admin-user-role-summary span { display:flex; align-items:center; gap:7px; padding:5px 9px; color:var(--muted); border:1px solid var(--line); background:var(--canvas); font:700 8px var(--mono); text-transform:capitalize; }
.admin-user-role-summary strong { color:var(--text); font-size:11px; }
.admin-user-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
.admin-user-list article { min-height:64px; display:grid; grid-template-columns:34px minmax(0,1fr) auto auto; align-items:center; gap:10px; padding:10px 0; border-bottom:1px solid var(--line); }
.admin-user-list article:nth-child(odd) { padding-right:18px; border-right:1px solid var(--line); }
.admin-user-list article:nth-child(even) { padding-left:18px; }
.admin-user-list article > div { min-width:0; display:grid; gap:3px; }
.admin-user-list article strong,.admin-user-list article small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.admin-user-list article strong { color:var(--text); font-size:9px; }
.admin-user-list article small { color:var(--muted); font-size:7px; }
.admin-security-state { color:var(--danger); font:700 7px var(--mono); font-style:normal; white-space:nowrap; }
.admin-security-state.secure { color:var(--success); }

@media (max-width:820px) {
  .asset-floating-editor { position:fixed; z-index:150; top:auto !important; right:10px !important; bottom:10px; left:10px !important; width:auto; max-height:min(72vh,620px); }
  .zone-dialog-layout { grid-template-columns:1fr; }
  .zone-editor-map { min-height:300px; }
  .ops-dashboard .ops-kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .admin-user-list { grid-template-columns:1fr; }
  .admin-user-list article:nth-child(odd),.admin-user-list article:nth-child(even) { padding-inline:0; border-right:0; }
}

/* Camera detail operational location --------------------------------------- */
.camera-location-stage { position:relative; min-height:540px; margin-bottom:14px; overflow:hidden; border:1px solid var(--line-strong); background:#15191a; }
.camera-location-map { position:absolute; inset:0; }
.camera-location-heading { position:absolute; z-index:7; top:23px; left:25px; max-width:min(520px,calc(100% - 300px)); color:#fff; pointer-events:none; text-shadow:0 2px 12px #000; }
.camera-location-heading h2 { margin-top:8px; font-size:21px; font-weight:510; }
.camera-location-heading p { margin-top:6px; color:#b7c0c1; font:500 8px var(--mono); }
.camera-location-actions { position:absolute; z-index:35; top:21px; right:21px; display:flex; gap:7px; }
.camera-location-legend { position:absolute; z-index:7; bottom:21px; left:23px; display:flex; align-items:center; gap:13px; padding:9px 11px; color:#dbe3e4; border:1px solid rgba(255,255,255,.16); background:rgba(9,13,14,.86); font-size:8px; backdrop-filter:blur(12px); }
.camera-location-legend span { display:flex; align-items:center; gap:6px; white-space:nowrap; }
.camera-location-legend i { width:7px; height:7px; border-radius:50%; background:var(--brand-bright); box-shadow:0 0 7px rgba(223,86,109,.75); }
.camera-location-legend b { width:14px; height:8px; border:1px solid #f08ca0; background:rgba(223,86,109,.24); transform:skewX(-20deg); }
.camera-location-legend em { width:15px; height:0; border-top:1px dashed #f4bac4; }
.camera-location-readout { position:absolute; z-index:7; right:21px; bottom:21px; display:grid; grid-template-columns:repeat(4,minmax(66px,1fr)); border:1px solid rgba(255,255,255,.16); background:rgba(9,13,14,.88); backdrop-filter:blur(12px); }
.camera-location-readout div { min-width:72px; display:grid; gap:3px; padding:9px 10px; border-right:1px solid rgba(255,255,255,.12); }
.camera-location-readout div:last-child { border-right:0; }
.camera-location-readout dt { color:#8f999b; font:700 7px var(--mono); text-transform:uppercase; }
.camera-location-readout dd { color:#f0f3f3; font:560 9px var(--mono); }
.camera-location-popup { min-width:150px; display:grid; gap:4px; padding:2px 3px; }
.camera-location-popup strong { color:#f2f5f5; font-size:10px; }
.camera-location-popup span { color:#9ca6a8; font-size:8px; }
.camera-location-empty { min-height:340px; display:grid; place-content:center; justify-items:center; gap:11px; padding:36px; text-align:center; }
.camera-location-empty h2 { max-width:520px; font-size:22px; font-weight:510; }
.camera-location-empty p { max-width:460px; color:var(--muted); font-size:10px; }
html[data-theme="light"] .camera-location-stage::after { content:""; position:absolute; z-index:2; inset:0; pointer-events:none; background:rgba(238,242,243,.04); }
html[data-theme="light"] .camera-location-heading,html[data-theme="light"] .camera-location-legend,html[data-theme="light"] .camera-location-readout { z-index:7; }
html[data-theme="light"] .camera-location-actions { z-index:35; }

@media (max-width:760px) {
  .camera-location-stage { min-height:500px; }
  .camera-location-heading { top:16px; left:16px; max-width:calc(100% - 32px); }
  .camera-location-heading p { display:none; }
  .camera-location-actions { top:82px; right:15px; }
  .camera-location-legend { right:15px; bottom:15px; left:15px; justify-content:center; }
  .camera-location-readout { right:15px; bottom:56px; left:15px; grid-template-columns:repeat(4,1fr); }
  .camera-location-readout div { min-width:0; }
}

/* Reusable alert workflows ------------------------------------------------ */
.alerting-workspace { display:grid; gap:18px; }
.rule-library { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
.rule-template-card { min-width:0; display:grid; gap:10px; padding:18px 20px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); background:var(--surface); transition:opacity .18s ease,background .18s ease; }
.rule-template-card:nth-child(even) { border-right:0; }
.rule-template-card.is-disabled,.deployment-card.is-disabled { opacity:.48; }
.rule-template-card header,.rule-template-card footer { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.rule-card-actions { display:flex; align-items:center; gap:12px; }
.rule-template-card h3 { font-size:13px; font-weight:570; }
.rule-template-card p { min-height:32px; color:var(--muted); font-size:8px; line-height:1.6; }
.rule-scope,.severity-chip,.reusable-badge { font:750 7px var(--mono); text-transform:uppercase; letter-spacing:.06em; }
.rule-scope { color:var(--muted); }
.severity-chip { padding:4px 6px; color:var(--text); border:1px solid var(--line-strong); background:var(--canvas); }
.severity-chip.severity-critical { color:#ff8396; border-color:color-mix(in srgb,#ff4f69,transparent 60%); }
.severity-chip.severity-high { color:var(--brand-bright); border-color:color-mix(in srgb,var(--brand-bright),transparent 60%); }
.severity-chip.severity-medium { color:var(--amber); border-color:color-mix(in srgb,var(--amber),transparent 60%); }
.rule-template-metrics { display:grid; grid-template-columns:repeat(3,1fr); border:1px solid var(--line); background:var(--canvas); }
.rule-template-metrics span { display:grid; gap:2px; padding:8px 9px; color:var(--muted); border-right:1px solid var(--line); font-size:7px; }
.rule-template-metrics span:last-child { border-right:0; }
.rule-template-metrics strong { color:var(--text); font:600 10px var(--mono); }
.reusable-badge { color:var(--cyan); }

.deployment-list { display:grid; }
.deployment-card { display:grid; grid-template-columns:minmax(0,1fr) auto auto; align-items:center; gap:18px; padding:15px 18px; border-bottom:1px solid var(--line); transition:opacity .18s ease,background .18s ease; }
.deployment-card:hover { background:var(--surface-bright); }
.deployment-flow,.deployment-preview { display:flex; align-items:stretch; gap:8px; min-width:0; }
.deployment-flow div,.deployment-preview div { min-width:0; flex:1; display:grid; align-content:center; gap:4px; padding:10px 11px; border:1px solid var(--line); background:var(--canvas); }
.deployment-flow div span,.deployment-preview div span { color:var(--muted); font:750 7px var(--mono); letter-spacing:.06em; }
.deployment-flow div strong,.deployment-preview div strong { overflow:hidden; color:var(--text); font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.deployment-flow i,.deployment-preview i { align-self:center; color:var(--brand-bright); font-style:normal; }
.deployment-meta { display:grid; gap:4px; min-width:155px; color:var(--muted); font:650 7px var(--mono); }
.deployment-actions { display:flex; align-items:center; gap:13px; }
.deployment-card.has-evaluation-attention { box-shadow:inset 3px 0 0 var(--amber); background:color-mix(in srgb,var(--amber),transparent 96%); }
.deployment-card.is-disabled.has-evaluation-attention { opacity:.72; }
.evaluation-status { display:inline-flex; width:max-content; max-width:220px; padding:4px 6px; color:var(--amber); border:1px solid color-mix(in srgb,var(--amber),transparent 55%); background:color-mix(in srgb,var(--amber),transparent 92%); font:750 8px/1.25 var(--mono); white-space:normal; }
.evaluation-status-quarantined { color:var(--danger); border-color:color-mix(in srgb,var(--danger),transparent 45%); background:color-mix(in srgb,var(--danger),transparent 92%); }
.evaluation-status-recovering { color:var(--cyan); border-color:color-mix(in srgb,var(--cyan),transparent 55%); background:color-mix(in srgb,var(--cyan),transparent 93%); }
.evaluation-error { max-width:260px; overflow:hidden; color:var(--danger); font-size:7px; line-height:1.35; text-overflow:ellipsis; white-space:nowrap; }
.icon-text-button.evaluation-retry { color:var(--amber); border:1px solid color-mix(in srgb,var(--amber),transparent 50%); }
.icon-text-button.evaluation-retry:hover { color:var(--text); border-color:var(--amber); }
.icon-text-button { padding:5px 7px; color:var(--muted); border:0; background:none; font:700 7px var(--mono); cursor:pointer; }
.icon-text-button:hover { color:var(--text); background:var(--surface-bright); }
.icon-text-button.danger,.btn.danger { color:var(--danger); }

.workflow-dialog { width:calc(100vw - 16px); max-width:none; height:calc(100vh - 16px); max-height:none; }
.workflow-dialog .dialog-close-form { z-index:4; }
.workflow-dialog .operations-form { height:100%; display:grid; grid-template-rows:auto auto minmax(0,1fr) auto; gap:10px; padding:18px 22px; overflow:hidden; }
.workflow-dialog .operations-form > header p { margin-top:4px; }
.workflow-dialog .operations-form > label textarea { min-height:42px; height:42px; resize:vertical; }
.rule-basics { display:grid; grid-template-columns:2fr 1fr .8fr .75fr; gap:12px; }
.workflow-builder { min-height:0; display:grid; grid-template-rows:auto minmax(0,1fr); overflow:hidden; border:1px solid var(--line-strong); background:var(--canvas); }
.workflow-toolbar { min-height:54px; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:9px 12px; border-bottom:1px solid var(--line); background:var(--surface); }
.workflow-toolbar > div:first-child { display:grid; gap:3px; }
.workflow-toolbar strong { font-size:9px; }
.workflow-toolbar span { color:var(--muted); font-size:7px; }
.workflow-toolbar > div:last-child { display:flex; flex-wrap:wrap; gap:6px; }
.workflow-template-controls select { min-width:190px; min-height:30px; padding:5px 7px; color:var(--text); border:1px solid var(--line); background:var(--canvas); font:650 7px var(--mono); }
.workflow-source-stage { display:none; min-height:0; align-content:start; gap:16px; padding:24px; overflow:auto; background:linear-gradient(135deg,color-mix(in srgb,var(--brand),transparent 92%),var(--canvas) 52%); }
.workflow-builder.awaiting-source .workflow-source-stage { display:grid; }
.workflow-builder.awaiting-source .workflow-builder-body { display:none; }
.workflow-source-stage > div:first-child { display:grid; gap:6px; max-width:760px; }
.workflow-source-stage h3 { font-size:16px; }
.workflow-source-stage p { color:var(--muted); font-size:8px; line-height:1.6; }
.workflow-source-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.workflow-source-grid button { min-height:104px; display:grid; align-content:start; gap:7px; padding:13px; color:var(--text); border:1px solid var(--line-strong); background:var(--surface); text-align:left; cursor:pointer; transition:border-color .14s ease,transform .1s ease,background .14s ease; }
.workflow-source-grid button:hover,.workflow-source-grid button:focus-visible,.workflow-source-grid button.selected { border-color:var(--brand-bright); background:var(--brand-wash); outline:none; transform:translateY(-1px); }
.workflow-source-grid button i { color:var(--cyan); font:800 7px var(--mono); font-style:normal; letter-spacing:.08em; }
.workflow-source-grid button strong { font-size:9px; }
.workflow-source-grid button small { color:var(--muted); font-size:7px; line-height:1.45; }
.workflow-builder-body { min-height:0; display:grid; grid-template-columns:180px minmax(0,1fr) 360px; }
.workflow-palette { display:grid; align-content:start; gap:8px; padding:14px 11px; overflow:auto; border-right:1px solid var(--line); background:var(--surface); }
.workflow-palette > p { color:var(--muted); font-size:7px; line-height:1.5; }
.workflow-palette > button { min-height:48px; display:grid; grid-template-columns:28px 1fr; align-items:center; gap:8px; padding:7px; color:var(--text); border:1px solid var(--line); background:var(--canvas); text-align:left; cursor:grab; transition:border-color .14s ease,transform .08s ease; }
.workflow-palette > button:hover,.workflow-palette > button:focus-visible { border-color:var(--brand-bright); outline:none; }
.workflow-palette > button:active { transform:translateY(1px); }
.workflow-palette > button i { display:grid; place-items:center; width:27px; height:27px; color:var(--brand-bright); border:1px solid var(--line-strong); font:750 7px var(--mono); font-style:normal; }
.workflow-palette > button span { display:grid; gap:2px; }
.workflow-palette > button strong { font-size:8px; }
.workflow-palette > button small { color:var(--muted); font-size:6px; }
.workflow-palette-help { display:grid; gap:5px; margin-top:8px; padding-top:10px; border-top:1px solid var(--line); }
.workflow-palette-help strong { font:750 7px var(--mono); text-transform:uppercase; }
.workflow-palette-help span { color:var(--muted); font-size:7px; line-height:1.55; }
.workflow-canvas { position:relative; min-width:0; min-height:0; overflow:hidden; background-color:var(--canvas); background-image:radial-gradient(circle,var(--line-strong) 1px,transparent 1px); background-size:18px 18px; cursor:grab; touch-action:none; }
.workflow-canvas.is-panning { cursor:grabbing; }
.workflow-surface { position:absolute; top:0; left:0; width:6000px; height:4000px; transform-origin:0 0; will-change:transform; }
.workflow-surface > svg,.workflow-surface > div { position:absolute; inset:0; width:6000px; height:4000px; }
.workflow-surface > svg { z-index:1; overflow:visible; }
.workflow-edge { fill:none; stroke:color-mix(in srgb,var(--brand-bright),transparent 34%); stroke-width:1.5; }
.workflow-edge.selected { stroke-width:3; filter:drop-shadow(0 0 4px color-mix(in srgb,var(--brand-bright),transparent 25%)); }
.workflow-edge.branch-then { stroke:color-mix(in srgb,var(--success),transparent 26%); }
.workflow-edge.branch-else { stroke:color-mix(in srgb,var(--amber),transparent 30%); stroke-dasharray:5 4; }
.workflow-edge-draft { stroke-width:2.5; stroke-dasharray:6 5; pointer-events:none; }
.workflow-edge-hit { fill:none; stroke:transparent; stroke-width:14; pointer-events:stroke; cursor:pointer; }
.workflow-edge-label { fill:var(--muted); font:750 7px var(--mono); text-anchor:middle; paint-order:stroke; stroke:var(--canvas); stroke-width:5px; }
.workflow-edge-label.branch-then { fill:var(--success); }
.workflow-edge-label.branch-else { fill:var(--amber); }
.workflow-node { position:absolute; z-index:2; width:174px; min-height:70px; display:grid; align-content:center; gap:4px; padding:10px 12px; color:var(--text); border:1px solid var(--line-strong); border-left:3px solid var(--muted); background:var(--surface); box-shadow:0 8px 25px rgba(0,0,0,.16); text-align:left; font-family:inherit; cursor:grab; touch-action:none; transition:border-color .14s ease,box-shadow .14s ease; }
.workflow-node:hover,.workflow-node.selected { border-color:color-mix(in srgb,var(--brand-bright),transparent 28%); box-shadow:0 0 0 2px color-mix(in srgb,var(--brand-bright),transparent 82%),0 10px 28px rgba(0,0,0,.2); }
.workflow-node:active,.workflow-node.is-dragging { cursor:grabbing; }
.workflow-node.is-dragging { z-index:7; transition:none; }
.workflow-node-event { border-left-color:var(--cyan); }
.workflow-node-if { width:230px; min-height:118px; align-content:start; padding-right:28px; border-left-color:#a995ff; }
.workflow-node-outcome { width:208px; border-left-color:var(--success); }
.workflow-node-outcome:has(.workflow-node-type:first-child) { border-left-color:var(--success); }
.workflow-node-type { color:var(--muted); font:750 6px var(--mono); letter-spacing:.08em; }
.workflow-node strong { overflow:hidden; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.workflow-node small { overflow:hidden; color:var(--muted); font:600 7px var(--mono); text-overflow:ellipsis; white-space:nowrap; }
.if-node-tests { display:grid; gap:3px; margin-top:5px; }
.if-node-tests span { overflow:hidden; padding:3px 4px; color:var(--muted); border-left:1px solid var(--line-strong); background:var(--canvas); font:600 6px var(--mono); text-overflow:ellipsis; white-space:nowrap; }
.if-node-branches { position:absolute; top:27px; right:-27px; display:grid; gap:25px; }
.workflow-port { position:relative; z-index:4; display:flex; align-items:center; gap:5px; padding:0; color:var(--muted); border:0; background:transparent; font:750 6px var(--mono); cursor:crosshair; user-select:none; }
.workflow-port::after { content:""; width:11px; height:11px; border:2px solid currentColor; border-radius:50%; background:var(--surface); box-shadow:0 0 0 2px var(--surface); }
.workflow-output-port.branch-then { color:var(--success); }
.workflow-output-port.branch-else { color:var(--amber); }
.workflow-output-port.branch-next { color:var(--cyan); }
.workflow-output-port.connected::after { background:currentColor; }
.workflow-output-port.connecting::after { box-shadow:0 0 0 5px color-mix(in srgb,currentColor,transparent 64%); }
.workflow-input-port { position:absolute; top:50%; left:-8px; width:15px; height:20px; transform:translateY(-50%); font-size:0; }
.workflow-input-port::after { width:12px; height:12px; color:var(--brand-bright); background:var(--canvas); }
.workflow-builder.is-connecting .workflow-input-port::after { animation:workflow-port-pulse 1.2s ease-in-out infinite; }
@keyframes workflow-port-pulse { 50% { box-shadow:0 0 0 6px color-mix(in srgb,var(--brand-bright),transparent 72%); } }
.event-node-output { position:absolute; top:50%; right:-24px; display:flex; transform:translateY(-50%); }
.branch-connection-state { display:grid; border:1px solid var(--line); }
.branch-connection-state > div { display:grid; grid-template-columns:38px 1fr auto; align-items:center; gap:7px; min-height:34px; padding:5px 7px; border-bottom:1px solid var(--line); }
.branch-connection-state > div:last-child { border-bottom:0; }
.branch-connection-state b { font:750 7px var(--mono); }
.branch-connection-state .branch-then { color:var(--success); }.branch-connection-state .branch-else { color:var(--amber); }
.branch-connection-state span { overflow:hidden; color:var(--muted); font-size:7px; text-overflow:ellipsis; white-space:nowrap; }
.workflow-connect-hint { position:absolute; z-index:8; right:10px; bottom:10px; max-width:75%; padding:6px 9px; color:var(--muted); border:1px solid var(--line); background:color-mix(in srgb,var(--surface),transparent 5%); font:700 7px var(--mono); pointer-events:none; backdrop-filter:blur(8px); }
.workflow-connect-hint.valid { color:var(--success); border-color:color-mix(in srgb,var(--success),transparent 58%); }
.workflow-connect-hint.connecting { color:var(--cyan); border-color:color-mix(in srgb,var(--cyan),transparent 58%); }
.workflow-connect-hint.error { color:var(--amber); border-color:color-mix(in srgb,var(--amber),transparent 58%); }
.workflow-inspector { display:grid; align-content:start; gap:12px; min-height:0; max-height:none; padding:16px; overflow:auto; border-left:1px solid var(--line); background:var(--surface); }
.notification-channel-intro{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px;padding:16px;border:1px solid color-mix(in srgb,var(--cyan),transparent 72%);background:color-mix(in srgb,var(--cyan),transparent 95%)}.notification-channel-intro h3{margin:5px 0;font-size:13px}.notification-channel-intro p{max-width:760px;color:var(--muted);font-size:8px;line-height:1.55}.notification-channel-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.notification-channel-card{display:grid;align-content:start;gap:12px;padding:16px;border:1px solid var(--line-strong);background:var(--surface)}.notification-channel-card>header{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;padding-bottom:12px;border-bottom:1px solid var(--line)}.notification-channel-icon{width:38px;height:38px;display:grid;place-items:center;color:var(--cyan);border:1px solid color-mix(in srgb,var(--cyan),transparent 54%);background:color-mix(in srgb,var(--cyan),transparent 92%);font:800 8px var(--mono)}.notification-channel-card header>div:nth-child(2){display:grid;gap:3px}.notification-channel-card header span{color:var(--muted);font:700 7px var(--mono);letter-spacing:.06em;text-transform:uppercase}.notification-channel-card h3{font-size:11px}.notification-channel-card>p{min-height:39px;color:var(--muted);font-size:8px;line-height:1.6}.notification-channel-card>label{display:grid;gap:5px;color:var(--muted);font:700 7px var(--mono);letter-spacing:.04em;text-transform:uppercase}.notification-channel-card>label input{min-height:37px;padding:8px 9px;color:var(--text);border:1px solid var(--line-strong);background:var(--canvas);font:400 8px Inter,system-ui,sans-serif}.notification-channel-card>label input:focus{border-color:var(--cyan);outline:2px solid color-mix(in srgb,var(--cyan),transparent 84%)}.notification-channel-card>footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px;padding-top:12px;border-top:1px solid var(--line)}.notification-channel-card>footer>div{display:flex;gap:6px}.channel-status{color:var(--muted);font:700 7px var(--mono);text-transform:capitalize}.channel-status.status-verified{color:var(--success)}.channel-status.status-error{color:var(--danger)}.channel-status.status-unverified{color:var(--amber)}
.workflow-inspector h3 { font-size:12px; }
.workflow-inspector label { display:grid; gap:5px; }
.workflow-inspector label > span { color:var(--muted); font:700 7px var(--mono); }
.workflow-inspector input,.workflow-inspector select { min-height:34px; padding:7px 8px; color:var(--text); border:1px solid var(--line-strong); background:var(--canvas); font-size:8px; }
.inspector-help { color:var(--muted); font-size:8px; line-height:1.55; }
.predicate-heading { display:flex; align-items:center; justify-content:space-between; padding-top:5px; border-top:1px solid var(--line); }
.predicate-heading strong { font-size:8px; }
.predicate-heading span { color:var(--muted); font:700 7px var(--mono); }
.predicate-editor { display:grid; gap:8px; max-height:260px; overflow:auto; }
.predicate-row { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.8fr) 30px; gap:6px; padding:8px; border:1px solid var(--line); background:var(--canvas); }
.predicate-row label { min-width:0; }
.predicate-row label:nth-child(1),.predicate-row label:nth-child(2) { grid-column:span 1; }
.predicate-row label:nth-child(3) { grid-column:1; }
.predicate-row label:nth-child(4) { grid-column:2; }
.predicate-row .icon-text-button { grid-column:3; grid-row:1/3; align-self:center; font-size:14px; }
.predicate-row input,.predicate-row select { min-width:0; min-height:30px; padding:5px 6px; font-size:7px; }
.predicate-row select[multiple] { min-height:84px; padding:3px; }
.predicate-row select[multiple] option { padding:5px 6px; border-radius:2px; }
.predicate-row select[multiple] option:checked { color:var(--text); background:linear-gradient(color-mix(in srgb,var(--brand),transparent 72%),color-mix(in srgb,var(--brand),transparent 72%)); }
.branch-editor { display:grid; grid-template-columns:1fr 1fr; gap:6px; padding-top:10px; border-top:1px solid var(--line); }
.branch-editor strong { grid-column:1/-1; font-size:8px; }
.branch-button-then { color:var(--success); border:1px solid color-mix(in srgb,var(--success),transparent 55%); background:color-mix(in srgb,var(--success),transparent 94%); }
.branch-button-else { color:var(--amber); border:1px solid color-mix(in srgb,var(--amber),transparent 55%); background:color-mix(in srgb,var(--amber),transparent 94%); }

.deployment-dialog { width:min(790px,calc(100vw - 28px)); }
.deployment-preview { padding:12px; border:1px solid var(--line); background:var(--canvas); }
.deployment-preview div { background:var(--surface); }
.deployment-form-status{padding:10px 12px;color:var(--cyan);border:1px solid color-mix(in srgb,var(--cyan) 40%,var(--line));background:color-mix(in srgb,var(--cyan) 6%,var(--canvas));font-size:9px;font-weight:650;line-height:1.55;outline:none}.deployment-form-status.error{color:var(--danger);border-width:2px;border-color:color-mix(in srgb,var(--danger) 58%,var(--line));background:color-mix(in srgb,var(--danger) 10%,var(--canvas));box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 13%,transparent)}.deployment-routing-note{margin:-5px 0 0;color:var(--muted);font-size:8px;line-height:1.5}
.routing-window { display:grid; gap:11px; padding:13px; border:1px solid var(--line); }
.routing-window legend { padding:0 7px; color:var(--muted); font:700 8px var(--mono); }
.form-grid-three { display:grid; grid-template-columns:repeat(3,1fr); gap:11px; }
.form-grid-two .span-two { grid-column:1/-1; }
.weekday-picker { display:grid; grid-template-columns:repeat(7,1fr); gap:5px; }
.weekday-picker label { position:relative; display:block; }
.weekday-picker input { position:absolute; opacity:0; }
.weekday-picker span { display:grid; place-items:center; min-height:30px; color:var(--muted); border:1px solid var(--line); background:var(--canvas); cursor:pointer; }
.weekday-picker input:checked + span { color:var(--text); border-color:color-mix(in srgb,var(--brand-bright),transparent 45%); background:var(--brand-wash); }

.policy-dialog { width:min(920px,calc(100vw - 28px)); }
.policy-steps-heading { display:flex; align-items:center; justify-content:space-between; }
#policy-steps { display:grid; gap:8px; }
.policy-step { display:grid; grid-template-columns:28px .72fr 1fr 1.15fr .65fr auto auto; align-items:end; gap:8px; padding:10px; border:1px solid var(--line); background:var(--canvas); }
.policy-step-number { align-self:center; display:grid; place-items:center; width:24px; height:24px; color:var(--brand-bright); border:1px solid color-mix(in srgb,var(--brand-bright),transparent 55%); font:700 8px var(--mono); }
.policy-step .policy-ack { align-self:center; grid-template-columns:auto 1fr; align-items:center; white-space:nowrap; }
.policy-step .policy-ack input { width:15px; min-height:15px; }
.policy-step .icon-text-button { align-self:center; }

html[data-theme="light"] .operations-form input,html[data-theme="light"] .operations-form select,html[data-theme="light"] .operations-form textarea,
html[data-theme="light"] .dialog-close-form button { color:var(--text); background:var(--canvas); }

@media (max-width:980px) {
  .rule-basics { grid-template-columns:1fr 1fr; }
  .workflow-builder-body { grid-template-columns:140px minmax(0,1fr) 300px; }
  .deployment-card { grid-template-columns:1fr auto; }
  .deployment-meta { grid-column:1; grid-row:2; }
  .deployment-actions { grid-column:2; grid-row:1/3; }
  .policy-step { grid-template-columns:28px 1fr 1fr; }
  .policy-step > *:nth-child(n+5) { grid-column:auto; }
}
@media (max-width:720px) {
  .rule-library { grid-template-columns:1fr; }
  .rule-template-card { border-right:0; }
  .rule-basics,.form-grid-three { grid-template-columns:1fr; }
  .workflow-builder-body { display:block; overflow:auto; }
  .workflow-palette { grid-template-columns:repeat(4,1fr); border-right:0; border-bottom:1px solid var(--line); }
  .workflow-palette > .eyebrow,.workflow-palette > p,.workflow-palette-help { grid-column:1/-1; }
  .workflow-palette > button { grid-template-columns:1fr; justify-items:center; text-align:center; }
  .workflow-canvas { min-height:520px; }
  .workflow-inspector { border-top:1px solid var(--line); border-left:0; }
  .deployment-card { display:grid; grid-template-columns:1fr; }
  .deployment-flow { overflow-x:auto; }
  .deployment-meta,.deployment-actions { grid-column:1; grid-row:auto; }
  .weekday-picker { grid-template-columns:repeat(4,1fr); }
  .policy-step { grid-template-columns:28px 1fr; }
  .zone-manager-layout { display:block; }
  .zone-manager-layout .zone-grid { grid-template-columns:1fr; }
  .zone-rule-inspector { border-top:1px solid var(--line); border-left:0; }
  .zone-type-picker { grid-template-columns:1fr; }
}

/* Management taxonomy and people workspaces */
.taxonomy-page,.people-page{display:grid;gap:18px}.taxonomy-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}.taxonomy-section,.people-section{min-height:0;overflow:hidden}.taxonomy-list{display:grid}.taxonomy-list>article{min-height:72px;display:grid;grid-template-columns:40px minmax(0,1fr) auto auto;align-items:center;gap:13px;padding:11px 16px;border-bottom:1px solid var(--line);transition:background .14s ease}.taxonomy-list>article:last-child{border-bottom:0}.taxonomy-list>article:hover{background:var(--surface-bright)}.taxonomy-list>article>i{width:36px;height:36px;display:grid;place-items:center;flex:0 0 auto;font-style:normal}.taxonomy-glyph{color:var(--cyan);border:1px solid color-mix(in srgb,var(--cyan),transparent 64%);background:color-mix(in srgb,var(--cyan),transparent 94%);font:750 7px var(--mono);letter-spacing:.04em}.taxonomy-colour{border:1px solid color-mix(in srgb,var(--tag-colour),transparent 28%);background:color-mix(in srgb,var(--tag-colour),transparent 78%)}.taxonomy-colour:after{width:13px;height:13px;border-radius:50%;background:var(--tag-colour);box-shadow:0 0 14px color-mix(in srgb,var(--tag-colour),transparent 35%);content:""}.taxonomy-list>article>div{display:grid;min-width:0;gap:4px}.taxonomy-list>article strong{overflow:hidden;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.taxonomy-list>article div span{color:var(--muted);font-size:8px}.taxonomy-list>article>em{padding:4px 7px;color:var(--muted);border:1px solid var(--line);font:700 7px var(--mono);font-style:normal;text-transform:uppercase}.taxonomy-list>article>button{min-height:30px;padding:0 10px;color:var(--soft);border:1px solid var(--line);background:transparent;font-size:8px;cursor:pointer}.taxonomy-list>article>button:hover{color:var(--text);border-color:var(--brand-bright)}.taxonomy-dialog{width:min(620px,calc(100vw - 28px))}.taxonomy-dialog input[type=color]{height:40px;padding:4px;cursor:pointer}

.people-table{min-width:0;overflow-x:auto}.people-table-head,.people-row{display:grid;grid-template-columns:minmax(250px,1.45fr) minmax(125px,.6fr) minmax(190px,1fr) minmax(100px,.5fr) 88px;align-items:center;gap:14px;min-width:860px;padding:11px 16px}.people-table-head{min-height:40px;color:var(--muted);border-bottom:1px solid var(--line);background:var(--canvas);font:700 7px var(--mono);letter-spacing:.05em;text-transform:uppercase}.people-row{min-height:68px;border-bottom:1px solid var(--line);transition:background .14s ease,opacity .14s ease}.people-row:last-child{border-bottom:0}.people-row:hover{background:var(--surface-bright)}.people-row.is-disabled{opacity:.5}.people-identity{display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:11px;min-width:0}.people-identity>i{width:34px;height:34px;display:grid;place-items:center;color:var(--brand-bright);border:1px solid color-mix(in srgb,var(--brand-bright),transparent 64%);background:var(--brand-wash);font:750 10px var(--mono);font-style:normal}.people-identity>span{display:grid;min-width:0;gap:4px}.people-identity strong,.people-identity small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.people-identity strong{font-size:10px}.people-identity small{color:var(--muted);font-size:7px}.people-row>.badge{justify-self:start;min-height:24px;font-size:8px}.people-tenant-chips{display:flex;min-width:0;flex-wrap:wrap;gap:4px}.people-tenant-chips span{max-width:135px;overflow:hidden;padding:4px 6px;color:var(--soft);border:1px solid var(--line);background:var(--canvas);font-size:7px;text-overflow:ellipsis;white-space:nowrap}.people-tenant-chips em{color:var(--muted);font-size:8px;font-style:normal}.people-status{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:8px}.people-status i{width:6px;height:6px;border-radius:50%}.people-status.online{color:var(--success)}.people-status.online i{background:var(--success);box-shadow:0 0 9px color-mix(in srgb,var(--success),transparent 35%)}.people-status.offline i{background:var(--muted)}.duty-group-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line)}.duty-group-card{min-height:176px;display:flex;flex-direction:column;padding:18px;background:var(--surface)}.duty-group-card.is-disabled{opacity:.5}.duty-group-card>header,.duty-group-card>footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.duty-group-card>header span,.duty-group-card>header i,.duty-group-card>footer span{color:var(--muted);font:700 7px var(--mono);font-style:normal;text-transform:uppercase}.duty-group-card h3{margin-top:22px;font-size:13px}.duty-group-card p{margin:7px 0 18px;color:var(--muted);font-size:8px;line-height:1.55}.duty-group-card>footer{margin-top:auto;padding-top:12px;border-top:1px solid var(--line)}.duty-group-card>footer button{padding:6px 8px;color:var(--brand-bright);border:0;background:transparent;font-size:8px;cursor:pointer}.people-dialog{width:min(860px,calc(100vw - 28px))}.duty-group-dialog{width:min(760px,calc(100vw - 28px))}.tenant-access-editor,.member-picker{min-width:0;padding:0;border:1px solid var(--line)}.tenant-access-editor>legend,.member-picker>legend{margin-left:10px;padding:0 6px;color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.tenant-access-row{display:grid;grid-template-columns:minmax(190px,.8fr) 120px minmax(300px,1.5fr);align-items:center;gap:12px;padding:11px;border-bottom:1px solid var(--line);opacity:.55}.tenant-access-row:last-child{border-bottom:0}.tenant-access-row.enabled{opacity:1;background:color-mix(in srgb,var(--cyan),transparent 97%)}.tenant-access-name{grid-template-columns:18px 1fr!important;align-items:center}.tenant-access-name input{width:15px!important;min-height:15px!important;accent-color:var(--brand)}.tenant-access-name span{display:grid;gap:3px}.tenant-access-name strong{color:var(--text);font:650 9px var(--sans)}.tenant-access-name small{color:var(--muted);font:500 7px var(--sans)}.tenant-access-row>select{min-height:34px!important}.tenant-capabilities{display:flex;flex-wrap:wrap;gap:5px}.tenant-capability{display:flex!important;grid-template-columns:none!important;align-items:center;gap:5px;padding:5px 7px;color:var(--soft)!important;border:1px solid var(--line);background:var(--canvas);font-size:7px!important;cursor:pointer}.tenant-capability input{width:13px!important;min-height:13px!important;accent-color:var(--brand)}.member-picker>div{display:grid;grid-template-columns:1fr 1fr;max-height:230px;overflow:auto}.member-picker label{min-width:0}.member-picker label input{width:15px;min-height:15px;accent-color:var(--brand)}.member-picker label span{min-width:0}.member-picker label strong,.member-picker label small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.people-dialog .operations-form>footer,.duty-group-dialog .operations-form>footer,.taxonomy-dialog .operations-form>footer{align-items:center;gap:8px}.people-dialog .operations-form>footer>span,.duty-group-dialog .operations-form>footer>span,.taxonomy-dialog .operations-form>footer>span{flex:1}

@media(max-width:1050px){.taxonomy-layout{grid-template-columns:1fr}.duty-group-grid{grid-template-columns:1fr 1fr}.tenant-access-row{grid-template-columns:minmax(180px,1fr) 120px}.tenant-capabilities{grid-column:1/-1}}
@media(max-width:700px){.taxonomy-list>article{grid-template-columns:36px minmax(0,1fr) auto}.taxonomy-list>article>em{display:none}.duty-group-grid{grid-template-columns:1fr}.tenant-access-row{grid-template-columns:1fr}.tenant-capabilities{grid-column:auto}.member-picker>div{grid-template-columns:1fr}.operations-page-header h1{font-size:29px}}

.tenant-access-name strong{font-family:Inter,sans-serif;font-size:9px;font-weight:650}.tenant-access-name small{font-family:Inter,sans-serif;font-size:7px;font-weight:500}

/* Interactive task guide */
.channel-status.status-available{color:var(--success)}.channel-status.status-degraded{color:var(--danger)}
.ops-help-dialog{width:min(920px,calc(100vw - 28px));max-height:calc(100vh - 40px);padding:0;color:var(--text);border:1px solid var(--line-strong);background:var(--surface);box-shadow:0 28px 90px rgba(0,0,0,.42)}.ops-help-dialog>header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:22px 24px 17px;border-bottom:1px solid var(--line)}.ops-help-dialog>header h2{margin:5px 0;font-size:18px}.ops-help-dialog>header p{max-width:650px;color:var(--muted);font-size:8px;line-height:1.55}.ops-help-dialog>header button{width:34px;height:34px;flex:0 0 auto;color:var(--soft);border:1px solid var(--line);background:transparent;font-size:18px;cursor:pointer}.ops-help-context{padding:11px 24px;color:var(--cyan);border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--cyan),transparent 96%);font:750 7px var(--mono);letter-spacing:.05em;text-transform:uppercase}.ops-help-sections{display:grid;gap:18px;max-height:min(62vh,650px);padding:20px 24px;overflow:auto}.ops-help-topic-section{display:grid;gap:9px}.ops-help-topic-section>header{display:flex;align-items:center;justify-content:space-between}.ops-help-topic-section>header strong{color:var(--muted);font:700 7px var(--mono)}.ops-help-topic-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.ops-help-topic{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;min-height:72px;padding:13px 14px;color:var(--text);border:1px solid var(--line);background:var(--canvas);text-align:left;cursor:pointer;transition:border-color .14s ease,background .14s ease,transform .08s ease}.ops-help-topic:hover,.ops-help-topic:focus-visible{border-color:var(--brand-bright);background:var(--surface-bright);outline:none}.ops-help-topic:active{transform:translateY(1px)}.ops-help-topic>span{display:grid;gap:5px}.ops-help-topic strong{font-size:9px}.ops-help-topic small{color:var(--muted);font-size:7px;line-height:1.5}.ops-help-topic i{color:var(--brand-bright);font:750 7px var(--mono);font-style:normal}.ops-help-dialog>footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 24px;border-top:1px solid var(--line)}.ops-help-dialog>footer span{color:var(--muted);font-size:7px}.ops-help-coach{position:fixed;z-index:1002;right:24px;bottom:24px;width:min(390px,calc(100vw - 28px));padding:17px;color:var(--text);border:1px solid color-mix(in srgb,var(--cyan),transparent 30%);background:color-mix(in srgb,var(--surface),transparent 2%);box-shadow:0 20px 60px rgba(0,0,0,.38);backdrop-filter:blur(18px);animation:ops-coach-in .16s ease-out}.ops-help-coach[hidden]{display:none}.ops-help-coach h3{margin:6px 0;font-size:13px}.ops-help-coach p{color:var(--muted);font-size:8px;line-height:1.6}.ops-help-coach>footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.ops-help-coach>footer>div{display:flex;gap:6px}.ops-help-coach.target-missing{border-color:color-mix(in srgb,var(--amber),transparent 35%)}.rsq-help-highlight{position:relative!important;z-index:999!important;outline:3px solid color-mix(in srgb,var(--cyan),transparent 10%)!important;outline-offset:5px!important;box-shadow:0 0 0 9px color-mix(in srgb,var(--cyan),transparent 82%),0 12px 50px rgba(0,0,0,.28)!important;animation:ops-help-pulse 1.8s ease-in-out infinite}.ops-help-trigger{cursor:pointer}@keyframes ops-coach-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes ops-help-pulse{50%{outline-color:color-mix(in srgb,var(--brand-bright),transparent 10%);box-shadow:0 0 0 12px color-mix(in srgb,var(--cyan),transparent 88%),0 12px 50px rgba(0,0,0,.28)}}
.ops-help-dialog>[data-help-drag-handle],.ops-help-coach>[data-help-drag-handle]{cursor:move;cursor:grab;touch-action:none;user-select:none}.ops-help-dialog.is-dragging,.ops-help-coach.is-dragging{transition:none!important}.ops-help-dialog.is-dragging>[data-help-drag-handle],.ops-help-coach.is-dragging>[data-help-drag-handle]{cursor:grabbing}.ops-help-drag-cue{align-self:center;padding:4px 7px;color:var(--muted);border:1px solid var(--line);font:700 6px var(--mono);letter-spacing:.08em;text-transform:uppercase}.ops-help-coach>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.ops-help-coach>header>div{min-width:0}.ops-help-coach>header h3{margin-bottom:0}.rsq-help-highlight{animation:none!important}.rsq-help-highlight:after{position:absolute!important;z-index:2147483000!important;inset:-9px!important;pointer-events:none!important;border:3px solid var(--cyan)!important;border-radius:4px!important;box-shadow:0 0 0 7px color-mix(in srgb,var(--cyan),transparent 72%),0 0 30px color-mix(in srgb,var(--cyan),transparent 34%)!important;content:""!important;animation:ops-help-obvious-pulse 1.05s cubic-bezier(.4,0,.2,1) infinite!important}@keyframes ops-help-obvious-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.38;transform:scale(1.035);border-color:var(--brand-bright);box-shadow:0 0 0 15px color-mix(in srgb,var(--cyan),transparent 90%),0 0 48px color-mix(in srgb,var(--brand-bright),transparent 24%)}}
@media(max-width:900px){.notification-channel-grid{grid-template-columns:1fr}.ops-help-topic-grid{grid-template-columns:1fr}.workflow-dialog .operations-form{padding:14px}.workflow-builder-body{grid-template-columns:150px minmax(0,1fr) 290px}}

/* Drone live feed preview panel */
.drone-feed-panel { position: fixed; right: 16px; bottom: 16px; z-index: 1200; width: 320px; max-width: calc(100vw - 32px); background: rgba(10,13,14,.94); border: 1px solid rgba(255,255,255,.14); border-radius: 4px; box-shadow: 0 14px 40px rgba(0,0,0,.32); backdrop-filter: blur(12px); color: #b7bfc0; font-family: Inter, sans-serif; }
.drone-feed-panel[hidden] { display: none; }
.drone-feed-panel header { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; border-bottom: 1px solid rgba(255,255,255,.08); }
.drone-feed-panel .drone-feed-title { font-size: 13px; font-weight: 600; color: #e6e9ec; }
.drone-feed-panel .drone-feed-close { background: none; border: none; color: #7f8a8c; font-size: 18px; cursor: pointer; padding: 0 4px; line-height: 1; }
.drone-feed-panel .drone-feed-close:hover { color: #e6e9ec; }
.drone-feed-panel .drone-feed-img { display: block; width: 100%; height: auto; background: #000; }
.drone-feed-panel footer { padding: 6px 12px; font-size: 11px; color: #7f8a8c; }

/* Data-layer drill-down and lifecycle management */
.data-connection-table .data-source-head,.data-connection-table .data-source-row{grid-template-columns:minmax(230px,1.45fr) minmax(110px,.7fr) minmax(120px,.72fr) minmax(150px,.9fr) 72px 170px}.connection-row-actions{flex-wrap:wrap}
.connection-basemap-state,.data-layer-map-warning{position:absolute;z-index:4;right:10px;bottom:10px;left:10px;padding:9px 11px;color:var(--amber);border:1px solid color-mix(in srgb,var(--amber) 38%,var(--line));background:rgba(14,17,18,.92);font-size:8px;line-height:1.5}.connection-basemap-state[hidden],.data-layer-map-warning[hidden]{display:none}.connection-row-actions button.danger{color:var(--danger)}
.data-layer-card-head a{color:var(--text)}.data-layer-card-actions{display:flex!important;align-items:center;gap:7px}.data-layer-card-actions a{color:var(--brand-bright);font:700 8px var(--mono)}
.detail-breadcrumb{display:flex;align-items:center;gap:8px;margin:0 0 16px;color:var(--muted);font-size:8px}.detail-breadcrumb a{color:var(--brand-bright)}
.data-layer-detail-hero{align-items:flex-end}.data-layer-detail-hero>div:first-child{max-width:850px}.data-layer-detail-hero h1{display:flex;align-items:center;gap:12px}.data-layer-detail-hero h1 i{width:5px;height:36px;background:var(--layer-color)}.data-layer-detail-hero p{max-width:760px;margin:9px 0;color:var(--muted);font-size:10px;line-height:1.65}.data-layer-detail-badges{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.data-layer-detail-badges>span,.data-layer-detail-badges>code{padding:5px 7px;color:var(--muted);border:1px solid var(--line);font:700 7px var(--mono);text-transform:uppercase}.data-layer-detail-badges>code{color:var(--brand-bright);text-transform:none}
.data-layer-system-notice{display:grid;grid-template-columns:180px 1fr;gap:18px;margin:4px 0 12px;padding:13px 16px;border-left:3px solid var(--cyan);background:color-mix(in srgb,var(--cyan) 6%,var(--panel));font-size:9px}.data-layer-system-notice span{color:var(--muted);line-height:1.55}
.data-layer-tenant-policy-panel{margin:0 0 12px;border:1px solid var(--line);background:var(--panel)}.data-layer-tenant-policy-panel>header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:17px;border-bottom:1px solid var(--line)}.data-layer-tenant-policy-panel>header h2{margin:5px 0;font-size:17px}.data-layer-tenant-policy-panel>header p{max-width:760px;margin:0;color:var(--muted);font-size:8px;line-height:1.6}.data-layer-tenant-policy-panel>header>strong{color:var(--muted);font:700 8px var(--mono);text-transform:uppercase}.data-layer-tenant-policy-head,.data-layer-tenant-policy-row{display:grid;grid-template-columns:minmax(220px,1.25fr) repeat(3,minmax(125px,.7fr)) minmax(100px,.55fr);align-items:center;gap:14px;padding:12px 16px}.data-layer-tenant-policy-head{color:var(--muted);border-bottom:1px solid var(--line);font:700 7px var(--mono);text-transform:uppercase}.data-layer-tenant-policy-row{min-height:66px;border-bottom:1px solid var(--line);transition:opacity .15s ease}.data-layer-tenant-policy-row:last-child{border-bottom:0}.data-layer-tenant-policy-row.is-saving{opacity:.55}.data-layer-tenant-policy-row>span:first-child{display:grid;gap:4px;min-width:0}.data-layer-tenant-policy-row>span:first-child strong{font-size:10px}.data-layer-tenant-policy-row>span:first-child small{overflow:hidden;color:var(--muted);font:500 7px var(--mono);text-overflow:ellipsis}.data-layer-tenant-policy-row label{display:flex;align-items:center;gap:8px;color:var(--soft);font-size:8px;cursor:pointer}.data-layer-tenant-policy-row input{width:15px;height:15px;accent-color:var(--brand)}.data-layer-tenant-policy-empty{margin:0;padding:18px;color:var(--muted);font-size:8px}
.data-layer-detail-stats{display:grid;grid-template-columns:repeat(5,1fr);margin-bottom:12px;border:1px solid var(--line);background:var(--panel)}.data-layer-detail-stats article{display:grid;gap:8px;min-width:0;padding:17px;border-right:1px solid var(--line)}.data-layer-detail-stats article:last-child{border-right:0}.data-layer-detail-stats span{color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.data-layer-detail-stats strong{font:500 22px var(--mono)}.data-layer-detail-stats .data-layer-stat-time{font-size:11px;line-height:1.45}.data-layer-detail-stats small{color:var(--muted);font-size:7px}
.data-layer-explorer{margin-bottom:12px;border:1px solid var(--line);background:var(--panel)}.data-layer-explorer>header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:17px;border-bottom:1px solid var(--line)}.data-layer-explorer>header h2{margin:5px 0;font-size:17px}.data-layer-explorer>header p{margin:0;color:var(--muted);font-size:8px}.data-layer-explorer-actions{display:flex;align-items:flex-end;gap:6px}.data-layer-explorer-actions label{display:grid;gap:5px;color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.data-layer-explorer-actions select,.data-layer-explorer-actions button{height:35px;padding:0 10px;color:var(--soft);border:1px solid var(--line);background:var(--canvas);font-size:8px}.data-layer-explorer-actions button:hover{color:var(--text);border-color:var(--brand)}
.data-layer-explorer-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(240px,.55fr);min-height:470px;border-bottom:1px solid var(--line)}.data-layer-map-panel{position:relative;min-width:0;border-right:1px solid var(--line)}.data-layer-map-panel>header,.data-layer-profile-panel>header{display:flex;align-items:center;justify-content:space-between;height:44px;padding:0 14px;border-bottom:1px solid var(--line)}.data-layer-map-panel>header span,.data-layer-profile-panel>header span{font:700 7px var(--mono);text-transform:uppercase}.data-layer-map-panel>header strong,.data-layer-profile-panel>header strong{color:var(--muted);font-size:7px}.data-layer-map-panel #layer-detail-map{height:425px}.data-layer-map-unavailable{display:grid;height:425px;place-content:center;gap:7px;color:var(--muted);text-align:center}.data-layer-map-unavailable strong{color:var(--text)}
.data-layer-profile-panel{min-width:0}.data-layer-class-list{display:grid;gap:13px;padding:16px}.data-layer-class-list>p{color:var(--muted);font-size:8px}.data-layer-class-list>div{display:grid;gap:6px}.data-layer-class-list>div>span{display:flex;align-items:center;justify-content:space-between;gap:8px}.data-layer-class-list strong{overflow:hidden;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.data-layer-class-list small{color:var(--muted);font:700 7px var(--mono)}.data-layer-class-list i{position:relative;height:3px;background:var(--canvas)}.data-layer-class-list i:after{position:absolute;inset:0 auto 0 0;width:var(--class-width);content:"";background:var(--brand)}
.data-layer-observation-table{overflow:auto}.data-layer-observation-head,.data-layer-observation-row{display:grid;grid-template-columns:155px minmax(150px,1fr) minmax(100px,.7fr) 80px minmax(130px,.8fr) 80px;align-items:center;gap:12px;min-width:850px;padding:11px 16px}.data-layer-observation-head{color:var(--muted);border-bottom:1px solid var(--line);font:700 7px var(--mono);text-transform:uppercase}.data-layer-observation-row{border-bottom:1px solid var(--line);font-size:8px}.data-layer-observation-row>span,.data-layer-observation-row>time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-layer-observation-row time{color:var(--muted)}.data-layer-observation-row details{position:relative}.data-layer-observation-row summary{color:var(--brand-bright);cursor:pointer;font:700 7px var(--mono)}.data-layer-observation-row details[open] pre{position:absolute;z-index:20;right:0;width:min(580px,80vw);max-height:360px;overflow:auto;padding:13px;color:var(--soft);border:1px solid var(--line-strong);background:var(--canvas);box-shadow:0 18px 50px rgba(0,0,0,.4);font-size:8px;line-height:1.5}.data-layer-observation-empty,.data-layer-observation-limit{padding:24px;color:var(--muted);font-size:8px;text-align:center}.data-layer-observation-limit{border-top:1px solid var(--line)}
.data-layer-detail-lower{display:grid;grid-template-columns:1.3fr .7fr;gap:12px}.data-layer-detail-panel{border:1px solid var(--line);background:var(--panel)}.data-layer-detail-panel>header{display:flex;align-items:flex-end;justify-content:space-between;padding:16px;border-bottom:1px solid var(--line)}.data-layer-detail-panel>header h2{margin:5px 0 0;font-size:14px}.data-layer-detail-panel>header>span{color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.data-layer-linked-sources>p{padding:18px;color:var(--muted);font-size:8px}.data-layer-linked-sources article{display:grid;grid-template-columns:minmax(180px,1fr) 130px 75px 140px;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);font-size:8px}.data-layer-linked-sources article:last-child{border-bottom:0}.data-layer-linked-sources article>div{display:grid;gap:4px}.data-layer-linked-sources code,.data-layer-linked-sources small{color:var(--muted);font-size:7px}.data-layer-contract{display:grid;grid-template-columns:1fr 1fr;margin:0}.data-layer-contract>div{display:grid;gap:5px;padding:13px 16px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.data-layer-contract>div:nth-child(even){border-right:0}.data-layer-contract dt{color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.data-layer-contract dd{margin:0;font-size:8px;text-transform:capitalize}.data-layer-contract code{color:var(--brand-bright);text-transform:none}.ops-toast.visible{opacity:1;visibility:visible;transform:none}
@media(max-width:1050px){.data-layer-detail-stats{grid-template-columns:repeat(3,1fr)}.data-layer-detail-stats article{border-bottom:1px solid var(--line)}.data-layer-explorer-grid,.data-layer-detail-lower{grid-template-columns:1fr}.data-layer-map-panel{border-right:0;border-bottom:1px solid var(--line)}.data-layer-linked-sources article{grid-template-columns:1fr 1fr}.data-layer-tenant-policy-head,.data-layer-tenant-policy-row{grid-template-columns:minmax(190px,1fr) repeat(3,105px) 90px}}
@media(max-width:700px){.data-layer-detail-stats{grid-template-columns:1fr 1fr}.data-layer-explorer>header{align-items:flex-start;flex-direction:column}.data-layer-explorer-actions{align-items:stretch;flex-wrap:wrap}.data-layer-system-notice{grid-template-columns:1fr}.data-layer-linked-sources article{grid-template-columns:1fr}.data-layer-contract{grid-template-columns:1fr}.data-layer-contract>div{border-right:0}.data-layer-tenant-policy-head{display:none}.data-layer-tenant-policy-row{grid-template-columns:1fr 1fr}.data-layer-tenant-policy-row>span:first-child{grid-column:1/-1}.data-layer-tenant-policy-row>[data-policy-state]{justify-self:start}.data-layer-tenant-policy-panel>header{align-items:flex-start;flex-direction:column}}

/* Click-through inspection for geospatial data-layer features */
.maplibregl-popup-content:has(.rsq-observation-inspector){width:min(430px,calc(100vw - 42px));padding:0;overflow:hidden}.maplibregl-popup-close-button{z-index:2;width:28px;height:28px;color:var(--muted);font-size:18px}.maplibregl-popup-close-button:hover{color:var(--text);background:var(--hover)}
.rsq-observation-inspector{max-height:min(640px,72vh);overflow:auto;color:var(--text);background:var(--panel)}.rsq-observation-inspector>header{padding:16px 42px 13px 16px;border-bottom:1px solid var(--line)}.rsq-observation-inspector>header h3{margin:5px 0 4px;font-size:15px}.rsq-observation-inspector>header code{display:block;overflow:hidden;color:var(--muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.rsq-observation-facts{display:grid;grid-template-columns:1fr 1fr;margin:0;border-bottom:1px solid var(--line)}.rsq-observation-facts>div{display:grid;gap:4px;padding:10px 13px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.rsq-observation-facts>div:nth-child(even){border-right:0}.rsq-observation-facts dt{color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.rsq-observation-facts dd{min-width:0;overflow:hidden;margin:0;font-size:8px;text-overflow:ellipsis;white-space:nowrap}
.rsq-observation-properties{padding:13px 16px;border-bottom:1px solid var(--line)}.rsq-observation-properties>div{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.rsq-observation-properties>div strong{font-size:9px}.rsq-observation-properties>div span{color:var(--muted);font:700 7px var(--mono)}.rsq-observation-properties>p{margin:0;color:var(--muted);font-size:8px}.rsq-observation-properties dl{display:grid;gap:1px;max-height:260px;overflow:auto;margin:0;border:1px solid var(--line)}.rsq-observation-properties dl>div{display:grid;grid-template-columns:minmax(90px,.65fr) minmax(150px,1.35fr);border-bottom:1px solid var(--line)}.rsq-observation-properties dl>div:last-child{border-bottom:0}.rsq-observation-properties dt,.rsq-observation-properties dd{min-width:0;margin:0;padding:7px 8px;font-size:8px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}.rsq-observation-properties dt{color:var(--muted);border-right:1px solid var(--line);font-family:var(--mono)}
.rsq-observation-raw{border-bottom:1px solid var(--line)}.rsq-observation-raw summary{padding:11px 16px;color:var(--brand-bright);cursor:pointer;font:700 8px var(--mono)}.rsq-observation-raw pre{max-height:300px;overflow:auto;margin:0;padding:13px 16px;color:var(--soft);background:var(--canvas);font-size:8px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.rsq-observation-open{display:block;padding:11px 16px;color:var(--brand-bright)!important;font:700 8px var(--mono)}.rsq-observation-open:hover{background:var(--hover)}
.rsq-ais-loading{padding:14px 16px;color:var(--brand-bright);border-bottom:1px solid var(--line);font:700 8px var(--mono)}.rsq-ais-loading.is-error{color:var(--danger)}.rsq-ais-detail-section dl{max-height:none}.rsq-ais-message-history pre{max-height:420px}
@media(max-width:520px){.rsq-observation-facts{grid-template-columns:1fr}.rsq-observation-facts>div{border-right:0}.rsq-observation-properties dl>div{grid-template-columns:1fr}.rsq-observation-properties dt{border-right:0;border-bottom:1px solid var(--line)}}

/* Final camera presentation overrides shared by all management map/list views. */
.asset-object-glyph.camera{--camera-accent:var(--camera-color,#df566d);position:relative;color:#dce3e3!important;border:1px solid var(--line-strong);border-radius:8px!important;background:var(--surface)!important}
.asset-object-glyph.camera::after{content:"";position:absolute;right:7px;bottom:2px;left:7px;height:2px;border-radius:2px;background:var(--camera-accent);opacity:.72}
.asset-object-glyph.camera svg{width:25px!important;height:21px!important;color:var(--soft)}
.camera-map-key i,.map-legend .legend-smart-camera,.map-legend .legend-video-camera,.asset-map-legend .legend-smart-camera,.asset-map-legend .legend-video-camera{position:relative!important;width:17px!important;height:14px!important;border:1px solid rgba(225,233,233,.46)!important;border-radius:4px!important;background:#111718!important;box-shadow:inset 0 -2px var(--brand-bright)!important}
.camera-map-key .legend-smart-camera::after,.map-legend .legend-smart-camera::after,.asset-map-legend .legend-smart-camera::after{content:"✦";position:absolute;top:-6px;left:-5px;color:var(--cyan);font-size:8px}
.camera-map-identity i{position:relative;width:24px;height:20px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);box-shadow:inset 0 -2px var(--camera-color)}
.camera-map-identity i::after{content:"CAM";position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font:700 5px ui-monospace,monospace;letter-spacing:.05em}
.camera-row-capability i{width:12px!important;height:7px!important;border:1px solid var(--line-strong);border-radius:3px!important;background:var(--surface)!important;box-shadow:inset 0 -2px var(--camera-color)}

/* Camera operations overview */
.camera-health-stats .health-live{color:var(--success)}.camera-health-stats .health-connecting{color:var(--amber)}.camera-health-stats .health-offline{color:var(--danger)}
.camera-operations-card{border:1px solid var(--line);background:var(--surface)}
.camera-operations-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:18px 20px;border-bottom:1px solid var(--line)}
.camera-operations-card>header h2{margin:5px 0 4px;font-size:16px}.camera-operations-card>header p{margin:0;color:var(--muted);font-size:9px}.camera-health-refresh{color:var(--muted);font:700 8px var(--mono);white-space:nowrap}
.camera-health-filters{display:flex;gap:3px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--canvas)}.camera-health-filters button{padding:7px 10px;color:var(--muted);border:1px solid transparent;background:transparent;font-size:8px}.camera-health-filters button:hover,.camera-health-filters button.active{color:var(--text);border-color:var(--line);background:var(--surface-bright)}.camera-health-filters button.active{box-shadow:inset 0 -2px var(--brand-bright)}
.camera-health-table{min-width:0;overflow-x:auto}.camera-health-head,.camera-health-row{display:grid;grid-template-columns:minmax(190px,1.2fr) 110px minmax(145px,.8fr) minmax(150px,.9fr) minmax(190px,1fr) 70px;align-items:center;gap:14px;min-width:920px;padding:11px 16px}.camera-health-head{min-height:38px;color:var(--muted);border-bottom:1px solid var(--line);font:700 7px var(--mono);letter-spacing:.06em;text-transform:uppercase}.camera-health-row{min-height:66px;border-bottom:1px solid var(--line)}.camera-health-row:last-child{border-bottom:0}.camera-health-row:hover{background:var(--surface-bright)}.camera-health-row>div{min-width:0;display:grid;gap:4px}.camera-health-row strong,.camera-health-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.camera-health-row strong{font-size:9px}.camera-health-row small{color:var(--muted);font-size:7px}.camera-health-row>.badge{justify-self:start}.camera-health-row>a{justify-self:end}
/* Camera inference remains independent from live publication. */
.asset-camera-detection .camera-config-section-body{display:grid;gap:11px;padding:10px 12px 14px}.camera-detection-note{margin:0;padding:9px 11px;color:var(--muted);border-left:2px solid var(--cyan);background:var(--canvas);font-size:8px;line-height:1.55}.camera-detection-region-editor{min-height:210px}.camera-detection-region-editor .image-zone-frame{max-height:270px}
.camera-map-identity>span{display:grid;gap:2px}.camera-map-identity small,.camera-row-capability{display:block;color:var(--muted);font-size:7px}.camera-row-capability{margin-top:4px}.camera-map-key{display:flex;align-items:center;gap:14px;margin:8px 0 12px;color:var(--muted);font-size:8px}.camera-map-key span{display:flex;align-items:center;gap:6px}
/* Camera icons use one neutral silhouette. Capability is a small AI sparkle,
   grouping is a narrow accent, and only the status dot communicates health. */
.asset-object-glyph.camera{--camera-accent:var(--camera-color,#df566d);position:relative;color:#dce3e3;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface)}
.asset-object-glyph.camera::after{content:"";position:absolute;right:7px;bottom:2px;left:7px;height:2px;border-radius:2px;background:var(--camera-accent);opacity:.72}.asset-object-glyph.camera svg{width:25px;height:21px;color:var(--soft)}
.camera-map-key i,.map-legend .legend-smart-camera,.map-legend .legend-video-camera,.asset-map-legend .legend-smart-camera,.asset-map-legend .legend-video-camera{display:inline-block;position:relative;width:17px;height:14px;border:1px solid rgba(225,233,233,.46);border-radius:4px;background:#111718;box-shadow:inset 0 -2px var(--brand-bright)}
.camera-map-key .legend-smart-camera::after,.map-legend .legend-smart-camera::after,.asset-map-legend .legend-smart-camera::after{content:"✦";position:absolute;top:-6px;left:-5px;color:var(--cyan);font-size:8px}.camera-map-identity i{position:relative;width:24px;height:20px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);box-shadow:inset 0 -2px var(--camera-color)}.camera-map-identity i::after{content:"CAM";position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font:700 5px ui-monospace,monospace;letter-spacing:.05em}.camera-row-capability i{display:inline-block;width:12px;height:7px;margin-right:5px;border:1px solid var(--line-strong);border-radius:3px;background:var(--surface);box-shadow:inset 0 -2px var(--camera-color)}

/* Management inventory navigation and correctly themed top-bar help. */
.ops-help-trigger{min-height:38px;display:inline-flex;align-items:center;gap:8px;padding:5px 10px 5px 6px;color:var(--soft);border:1px solid var(--line);border-radius:3px;background:var(--surface);box-shadow:none;cursor:pointer;transition:color .14s ease,border-color .14s ease,background .14s ease}
.ops-help-trigger>span{width:25px;height:25px;display:grid;place-items:center;color:var(--brand-bright);border:1px solid color-mix(in srgb,var(--brand-bright),transparent 64%);border-radius:2px;background:var(--brand-wash);font:800 9px var(--mono)}
.ops-help-trigger>strong{font:700 8px var(--mono);letter-spacing:.03em}
.ops-help-trigger:hover,.ops-help-trigger:focus-visible{color:var(--text);border-color:color-mix(in srgb,var(--brand-bright),transparent 45%);background:var(--surface-bright);outline:none}
html[data-theme="light"] .ops-help-trigger{background:var(--surface);box-shadow:0 1px 2px rgba(20,28,30,.06)}
.asset-registry-view>header>div:first-child{max-width:680px}.asset-registry-view>header p{max-width:650px;margin-top:7px;color:var(--muted);font-size:8px;line-height:1.55}
.asset-registry-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:7px}.asset-registry-actions small{width:100%;color:var(--muted);text-align:right;font-size:7px}
.asset-registry-actions .asset-toolbar-button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;cursor:pointer}
.asset-import-dialog{width:min(760px,calc(100vw - 28px))}.asset-import-guidance{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line);background:var(--canvas);font-size:8px}.asset-import-guidance strong{color:var(--text)}.asset-import-guidance span{color:var(--muted)}.asset-import-guidance a{margin-left:auto;color:var(--brand-bright);font:700 8px var(--mono)}.asset-import-dialog textarea{min-height:230px;resize:vertical;font-family:var(--mono);line-height:1.5}
@media(max-width:760px){.ops-help-trigger>strong{display:none}.ops-help-trigger{padding-right:6px}.asset-registry-view>header{align-items:flex-start;flex-direction:column}.asset-registry-actions{justify-content:flex-start}.asset-registry-actions small{display:none}.asset-import-guidance{align-items:flex-start;flex-direction:column}.asset-import-guidance a{margin-left:0}}

/* Compact geometric camera markers. The outline is the configured group
   accent, the centre point means AI is enabled, and health remains a separate
   status dot. The marker keeps a generous hit target without a bulky icon. */
.rsq-map-marker.marker-camera{
  --camera-accent:var(--camera-color,#df566d);
  width:28px;
  height:28px;
  padding:0;
  border:0;
  border-radius:50%;
  background:transparent;
  box-shadow:none;
}
.rsq-map-marker.marker-camera::after{
  position:absolute;
  z-index:1;
  top:8px;
  left:8px;
  width:11px;
  height:11px;
  border:2px solid var(--camera-accent);
  border-radius:2px;
  background:#0d1213;
  box-shadow:0 2px 7px rgba(0,0,0,.48);
  content:"";
  opacity:1;
  transform:rotate(45deg);
}
.rsq-map-marker.marker-camera::before{
  position:absolute;
  z-index:3;
  top:2px;
  right:1px;
  width:5px;
  height:5px;
  border:1.5px solid #0a0e0f;
  border-radius:50%;
  background:#ed5d70;
  content:"";
  opacity:1;
}
.rsq-map-marker.marker-camera.marker-health-live::before{border-color:#0a0e0f;background:#5ed39a}
.rsq-map-marker.marker-camera.marker-health-connecting::before{border-color:#0a0e0f;background:#f1b85b}
.rsq-map-marker.marker-camera.marker-health-disabled::before{border-color:#0a0e0f;background:#667173}
.rsq-map-marker.marker-camera .camera-shape-core{
  position:absolute;
  z-index:2;
  top:12px;
  left:12px;
  width:4px;
  height:4px;
  border-radius:50%;
  background:transparent;
  box-shadow:none;
}
.rsq-map-marker.marker-camera-smart .camera-shape-core{background:#7fcbd6;box-shadow:0 0 5px rgba(127,203,214,.5)}
.rsq-map-marker.marker-camera.selected{box-shadow:0 0 0 5px rgba(223,86,109,.2)}
.rsq-map-marker.marker-camera svg,.marker-camera-ai{display:none!important}

.asset-object-glyph.camera{
  position:relative;
  width:30px;
  height:30px;
  color:inherit!important;
  border:0!important;
  border-radius:50%!important;
  background:transparent!important;
  box-shadow:none!important;
}
.asset-object-glyph.camera::before{
  position:absolute;
  top:8px;
  left:8px;
  width:11px;
  height:11px;
  border:2px solid var(--camera-color,#df566d);
  border-radius:2px;
  background:var(--surface);
  content:"";
  transform:rotate(45deg);
}
.asset-object-glyph.camera::after{display:none!important}
.asset-object-glyph.camera .camera-shape-core{position:absolute;z-index:2;top:13px;left:13px;width:4px;height:4px;border-radius:50%;background:transparent}
.asset-object-glyph.camera.smart .camera-shape-core{background:var(--cyan)}
.asset-object-glyph.camera svg{display:none!important}

.camera-map-key i,.map-legend .legend-smart-camera,.map-legend .legend-video-camera,.asset-map-legend .legend-smart-camera,.asset-map-legend .legend-video-camera{
  position:relative!important;
  width:11px!important;
  height:11px!important;
  margin:2px!important;
  border:2px solid var(--brand-bright)!important;
  border-radius:2px!important;
  background:var(--surface)!important;
  box-shadow:none!important;
  transform:rotate(45deg);
}
.camera-map-key .legend-smart-camera::after,.map-legend .legend-smart-camera::after,.asset-map-legend .legend-smart-camera::after{
  position:absolute;
  inset:3px;
  border-radius:50%;
  background:var(--cyan);
  content:"";
  font-size:0;
}
.camera-map-identity i{
  position:relative;
  width:13px;
  height:13px;
  flex:0 0 13px;
  margin:3px;
  border:2px solid var(--camera-color,#df566d);
  border-radius:2px;
  background:var(--surface);
  box-shadow:none;
  transform:rotate(45deg);
}
.camera-map-identity i::after,.camera-row-capability i::after{
  position:absolute;
  inset:3px;
  display:block;
  border-radius:50%;
  background:transparent;
  content:"";
}
.camera-map-identity i.smart::after,.camera-row-capability i.smart::after{background:var(--cyan)}
.camera-row-capability i{
  position:relative;
  display:inline-block;
  width:9px!important;
  height:9px!important;
  margin:0 8px 0 3px;
  border:1.5px solid var(--camera-color,#df566d)!important;
  border-radius:1px!important;
  background:var(--surface)!important;
  box-shadow:none!important;
  transform:rotate(45deg);
}
.camera-row-capability i::after{inset:2px}

/* Model ontology --------------------------------------------------------- */
.ontology-page{max-width:1560px;margin:0 auto}.ontology-hero{align-items:stretch}.ontology-integrity{min-width:280px;padding:18px 20px;border:1px solid var(--border);border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--cyan) 8%,var(--surface)),var(--surface));display:flex;flex-direction:column;justify-content:center;gap:4px}.ontology-integrity span,.ontology-integrity small{color:var(--muted);font-size:12px}.ontology-integrity strong{font-size:17px}.ontology-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0}.ontology-summary article{padding:16px 18px;border:1px solid var(--border);border-radius:10px;background:var(--surface);display:grid;gap:4px}.ontology-summary span,.ontology-summary small{color:var(--muted);font-size:12px}.ontology-summary strong{font-size:22px}.ontology-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:18px;align-items:start}.ontology-main{display:grid;gap:18px}.ontology-panel{padding:0;overflow:hidden}.ontology-panel>.operations-panel-heading{padding:20px;border-bottom:1px solid var(--border)}.ontology-panel .operations-panel-heading p{margin:4px 0 0;color:var(--muted)}.ontology-inline-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:18px 20px;background:color-mix(in srgb,var(--surface-raised) 70%,transparent);border-bottom:1px solid var(--border)}.ontology-inline-form label,.ontology-mapping-form label{display:grid;gap:6px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.ontology-inline-form input,.ontology-inline-form select,.ontology-mapping-form input,.ontology-mapping-form select{width:100%;min-width:0}.ontology-inline-form .span-two{grid-column:span 2}.ontology-form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px}.ontology-class-list{display:grid}.ontology-class{border-bottom:1px solid var(--border)}.ontology-class:last-child{border-bottom:0}.ontology-class>summary{display:grid;grid-template-columns:120px minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px 20px;cursor:pointer;list-style:none}.ontology-class>summary::-webkit-details-marker{display:none}.ontology-class>summary div{display:flex;align-items:baseline;gap:10px}.ontology-class>summary small{color:var(--muted)}.ontology-kind{display:inline-flex;width:max-content;padding:3px 7px;border:1px solid color-mix(in srgb,var(--cyan) 35%,var(--border));border-radius:999px;color:var(--cyan);font-size:10px;text-transform:uppercase;letter-spacing:.07em}.ontology-kind-semantic_region{color:#8fc9ff;border-color:color-mix(in srgb,#8fc9ff 35%,var(--border))}.ontology-kind-hazard{color:var(--red);border-color:color-mix(in srgb,var(--red) 35%,var(--border))}.ontology-kind-attribute{color:#c9a7ff;border-color:color-mix(in srgb,#c9a7ff 35%,var(--border))}.ontology-class code,.ontology-model code,.ontology-mapping-list code,.ontology-reference-grid code{font-family:var(--font-mono,ui-monospace,monospace);font-size:11px;color:var(--muted);overflow-wrap:anywhere}.ontology-class.is-inactive,.ontology-model.is-inactive{opacity:.58}.ontology-models{display:grid;gap:14px;padding:18px}.ontology-model{border:1px solid var(--border);border-radius:12px;background:var(--surface-raised);overflow:hidden}.ontology-model>header{padding:17px 18px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid var(--border)}.ontology-model>header h3{margin:7px 0 4px;font-size:18px}.ontology-model>header h3 small{color:var(--muted);font-size:12px;font-weight:500}.ontology-model>p{margin:0;padding:12px 18px;color:var(--muted);font-size:13px}.ontology-model-state{display:grid;justify-items:end;gap:6px}.ontology-model-tabs>details{border-top:1px solid var(--border)}.ontology-model-tabs>details:first-child{border-top:0}.ontology-model-tabs>details>summary{padding:12px 18px;cursor:pointer;font-size:13px}.ontology-model-tabs>details>summary strong{margin-left:6px;color:var(--cyan)}.ontology-mapping-list{display:grid}.ontology-mapping-list>div{display:grid;grid-template-columns:80px minmax(120px,1fr) 24px minmax(140px,1fr) minmax(140px,auto) auto;align-items:center;gap:10px;padding:10px 18px;border-top:1px solid var(--border);font-size:12px}.ontology-mapping-list i{color:var(--cyan);font-style:normal}.ontology-mapping-list small{color:var(--muted)}.ontology-empty-row{display:block!important;color:var(--muted);padding:18px!important}.ontology-mapping-form{display:grid;grid-template-columns:90px minmax(120px,1fr) minmax(180px,1.4fr) minmax(160px,1fr) auto;align-items:end;gap:10px;padding:14px 18px;border-top:1px solid var(--border);background:color-mix(in srgb,var(--cyan) 3%,var(--surface))}.ontology-org-access{padding:14px 18px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.ontology-org-access label{display:flex;align-items:center;gap:9px;padding:10px;border:1px solid var(--border);border-radius:8px}.ontology-org-access label span{display:grid}.ontology-org-access label small{color:var(--muted)}.ontology-org-access button{grid-column:1/-1;justify-self:end}.ontology-history{padding:0 18px 14px}.ontology-history>div{display:grid;grid-template-columns:80px 1fr auto;gap:10px;padding:8px 0;border-top:1px solid var(--border);font-size:12px}.ontology-history small{color:var(--muted)}.ontology-guidance{position:sticky;top:86px;padding:18px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.ontology-guidance ol{padding:0;margin:16px 0;list-style:none;display:grid;gap:12px;counter-reset:ontology}.ontology-guidance li{counter-increment:ontology;display:grid;grid-template-columns:24px 1fr;column-gap:8px}.ontology-guidance li::before{content:counter(ontology);grid-row:1/3;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--cyan) 14%,var(--surface));color:var(--cyan);font-size:11px}.ontology-guidance li span,.ontology-guidance p{color:var(--muted);font-size:12px}.ontology-guidance>div{padding-top:14px;border-top:1px solid var(--border)}.ontology-reference-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:18px}.ontology-reference-grid article{padding:13px;border:1px solid var(--border);border-radius:9px;display:grid;gap:7px}.ontology-reference-grid p{margin:0;color:var(--muted);font-size:12px}.ontology-models-readonly .ontology-model>header code{display:block;max-width:800px;margin-top:5px}
@media(max-width:1100px){.ontology-layout{grid-template-columns:1fr}.ontology-guidance{position:static}.ontology-inline-form{grid-template-columns:repeat(2,minmax(0,1fr))}.ontology-summary,.ontology-reference-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ontology-mapping-form{grid-template-columns:repeat(2,minmax(0,1fr))}.ontology-mapping-form button{justify-self:start}.ontology-org-access{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.ontology-summary,.ontology-reference-grid,.ontology-inline-form,.ontology-org-access{grid-template-columns:1fr}.ontology-inline-form .span-two{grid-column:auto}.ontology-class>summary{grid-template-columns:1fr}.ontology-mapping-list>div{grid-template-columns:60px 1fr}.ontology-mapping-list i{display:none}.ontology-mapping-list form{grid-column:2}.ontology-hero{display:grid}.ontology-integrity{min-width:0}}

/* Organisation model catalogue: capability-first and deliberately free of
   inference hashes, raw label IDs and mapping internals. */
.model-catalog-page{max-width:1320px}.model-catalog-hero>div:first-child{max-width:780px}.model-catalog-managed{min-width:275px;display:grid;align-content:center;gap:5px;padding:18px 20px;border:1px solid color-mix(in srgb,var(--success) 32%,var(--border));border-radius:10px;background:linear-gradient(135deg,color-mix(in srgb,var(--success) 7%,var(--surface)),var(--surface))}.model-catalog-managed span,.model-catalog-managed small{color:var(--muted);font-size:11px}.model-catalog-managed strong{font-size:17px}.model-catalog-summary{grid-template-columns:repeat(3,minmax(0,1fr));max-width:900px}.model-catalog-panel{padding:0;overflow:hidden}.model-catalog-panel>.operations-panel-heading{padding:20px;border-bottom:1px solid var(--border)}.model-catalog-panel .operations-panel-heading p{margin:5px 0 0;color:var(--muted);font-size:11px}.model-catalog-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:18px}.model-catalog-card{min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:10px;background:var(--surface-raised)}.model-catalog-card>header{display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:12px;padding:16px 17px;border-bottom:1px solid var(--border)}.model-catalog-mark{width:46px;height:46px;display:grid;place-items:center;color:var(--brand-bright);border:1px solid color-mix(in srgb,var(--brand-bright) 35%,var(--border));border-radius:8px;background:color-mix(in srgb,var(--brand-bright) 6%,var(--canvas));font:750 9px var(--mono)}.model-catalog-card>header>div{min-width:0}.model-catalog-card>header small,.model-catalog-card>header span{color:var(--muted);font-size:9px}.model-catalog-card h3{overflow:hidden;margin:3px 0;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.model-catalog-card>header i{padding:5px 8px;color:var(--success);border:1px solid color-mix(in srgb,var(--success) 34%,var(--border));border-radius:999px;font:700 8px var(--mono);font-style:normal}.model-catalog-card>p{margin:0;padding:13px 17px 0;color:var(--muted);font-size:10px;line-height:1.6}.model-catalog-labels{padding:14px 17px 17px}.model-catalog-labels>div{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.model-catalog-labels>div strong{font-size:10px}.model-catalog-labels>div span{color:var(--muted);font:700 9px var(--mono)}.model-catalog-labels ul{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.model-catalog-labels li{display:flex;align-items:center;gap:7px;padding:7px 9px;border:1px solid var(--line);border-radius:5px;background:var(--canvas)}.model-catalog-labels li span{font-size:9px}.model-catalog-labels li small{padding-left:7px;color:var(--muted);border-left:1px solid var(--line);font:650 7px var(--mono)}.model-catalog-labels>p{margin:0;padding:13px;color:var(--muted);border:1px dashed var(--line);font-size:9px;text-align:center}.model-catalog-empty{grid-column:1/-1}
@media(max-width:850px){.model-catalog-grid{grid-template-columns:1fr}.model-catalog-summary{grid-template-columns:1fr}.model-catalog-managed{min-width:0}.model-catalog-card>header{grid-template-columns:42px minmax(0,1fr)}.model-catalog-card>header i{grid-column:2;justify-self:start}}

.ontology-start-empty{min-height:170px;border-top:1px solid var(--border)}
.ontology-discovery-list{display:grid;border-top:1px solid var(--border)}
.ontology-discovery{display:grid;gap:10px;padding:13px 18px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--amber) 2.5%,var(--surface))}
.ontology-discovery:last-child{border-bottom:0}.ontology-discovery.is-mapped{background:color-mix(in srgb,var(--cyan) 2.5%,var(--surface))}
.ontology-discovery-identity{display:grid;grid-template-columns:80px minmax(0,1fr) auto;align-items:center;gap:10px}.ontology-discovery-identity span{display:grid;gap:2px}.ontology-discovery-identity small{color:var(--muted);font-size:10px}.ontology-discovery-identity em{color:var(--amber);font-size:10px;font-style:normal;text-transform:uppercase;letter-spacing:.05em}.ontology-discovery.is-mapped .ontology-discovery-identity em{color:var(--cyan)}
.ontology-discovery-name,.ontology-discovery-map{display:grid;align-items:end;gap:9px}.ontology-discovery-name{grid-template-columns:minmax(180px,1fr) auto}.ontology-discovery-map{grid-template-columns:minmax(190px,1fr) minmax(180px,1fr) auto}.ontology-discovery-name label,.ontology-discovery-map label{display:grid;gap:5px;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.04em}.ontology-discovery-name input,.ontology-discovery-map input,.ontology-discovery-map select{width:100%}.ontology-discovery-mapped{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--border);border-radius:7px;background:var(--surface)}.ontology-discovery-mapped span{color:var(--muted);font-size:10px;text-transform:uppercase}.ontology-discovery-mapped code{margin-left:auto}
@media(max-width:700px){.ontology-discovery-identity,.ontology-discovery-name,.ontology-discovery-map{grid-template-columns:1fr}.ontology-discovery-identity em{justify-self:start}.ontology-discovery-name button,.ontology-discovery-map button{justify-self:start}}

/* Models & labels form language. Keep configuration controls visually aligned
   with the management plane instead of inheriting browser-native fields. */
.ontology-page .ontology-inline-form,
.ontology-page .ontology-mapping-form,
.ontology-page .ontology-discovery-name,
.ontology-page .ontology-discovery-map{
  --ontology-field-bg:color-mix(in srgb,var(--canvas) 82%,var(--surface));
  --ontology-field-hover:color-mix(in srgb,var(--surface-raised) 72%,var(--canvas));
}
.ontology-page .ontology-inline-form{
  row-gap:15px;
  padding:20px;
  border-left:2px solid color-mix(in srgb,var(--brand-bright) 58%,transparent);
  background:linear-gradient(110deg,color-mix(in srgb,var(--brand) 4%,var(--surface-raised)),var(--surface));
}
.ontology-page .ontology-inline-form label,
.ontology-page .ontology-mapping-form label,
.ontology-page .ontology-discovery-name label,
.ontology-page .ontology-discovery-map label{
  gap:7px;
  color:var(--muted);
  font:700 9px var(--mono,ui-monospace,SFMono-Regular,Menlo,monospace);
  letter-spacing:.075em;
  line-height:1.25;
  text-transform:uppercase;
}
.ontology-page .ontology-inline-form input:not([type="hidden"]):not([type="checkbox"]),
.ontology-page .ontology-inline-form select,
.ontology-page .ontology-mapping-form input:not([type="hidden"]),
.ontology-page .ontology-mapping-form select,
.ontology-page .ontology-discovery-name input:not([type="hidden"]),
.ontology-page .ontology-discovery-map input:not([type="hidden"]),
.ontology-page .ontology-discovery-map select{
  width:100%;
  min-width:0;
  height:42px;
  padding:0 12px;
  color:var(--text);
  border:1px solid var(--line-strong);
  border-radius:4px;
  outline:0;
  background:var(--ontology-field-bg);
  box-shadow:inset 0 1px 0 color-mix(in srgb,var(--text) 3%,transparent),0 1px 2px rgba(0,0,0,.16);
  font:500 11px Inter,system-ui,sans-serif;
  letter-spacing:0;
  text-transform:none;
  transition:border-color .15s ease,background .15s ease,box-shadow .15s ease,color .15s ease;
}
.ontology-page .ontology-inline-form select,
.ontology-page .ontology-mapping-form select,
.ontology-page .ontology-discovery-map select{
  padding-right:34px;
  appearance:none;
  background-color:var(--ontology-field-bg);
  background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 17px) 17px,calc(100% - 12px) 17px;
  background-repeat:no-repeat;
  background-size:5px 5px,5px 5px;
}
.ontology-page .ontology-inline-form input::placeholder,
.ontology-page .ontology-mapping-form input::placeholder,
.ontology-page .ontology-discovery-name input::placeholder,
.ontology-page .ontology-discovery-map input::placeholder{color:color-mix(in srgb,var(--muted) 72%,transparent);opacity:1}
.ontology-page .ontology-inline-form input:not([type="hidden"]):not([type="checkbox"]):hover,
.ontology-page .ontology-inline-form select:hover,
.ontology-page .ontology-mapping-form input:not([type="hidden"]):hover,
.ontology-page .ontology-mapping-form select:hover,
.ontology-page .ontology-discovery-name input:not([type="hidden"]):hover,
.ontology-page .ontology-discovery-map input:not([type="hidden"]):hover,
.ontology-page .ontology-discovery-map select:hover{border-color:color-mix(in srgb,var(--soft) 55%,var(--line));background-color:var(--ontology-field-hover)}
.ontology-page .ontology-inline-form input:not([type="hidden"]):not([type="checkbox"]):focus,
.ontology-page .ontology-inline-form select:focus,
.ontology-page .ontology-mapping-form input:not([type="hidden"]):focus,
.ontology-page .ontology-mapping-form select:focus,
.ontology-page .ontology-discovery-name input:not([type="hidden"]):focus,
.ontology-page .ontology-discovery-map input:not([type="hidden"]):focus,
.ontology-page .ontology-discovery-map select:focus{
  border-color:var(--brand-bright);
  background-color:var(--ontology-field-hover);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--brand-bright) 14%,transparent),inset 0 1px 0 color-mix(in srgb,var(--text) 4%,transparent);
}
.ontology-page select:disabled,
.ontology-page input:disabled{
  cursor:not-allowed;
  color:color-mix(in srgb,var(--muted) 70%,transparent)!important;
  border-color:var(--line)!important;
  background-color:color-mix(in srgb,var(--canvas) 76%,transparent)!important;
  box-shadow:none!important;
  opacity:.62;
}
.ontology-page .ontology-mapping-form,
.ontology-page .ontology-discovery-map{
  padding:14px 18px;
  border-top:1px solid var(--line);
  background:color-mix(in srgb,var(--cyan) 2.5%,var(--surface));
}
.ontology-page .ontology-discovery-name{
  padding:11px 12px;
  border:1px solid var(--line);
  border-radius:6px;
  background:color-mix(in srgb,var(--canvas) 68%,transparent);
}
.ontology-page .ontology-mapping-form>.btn,
.ontology-page .ontology-discovery-name>.btn,
.ontology-page .ontology-discovery-map>.btn{min-height:42px;align-self:end;white-space:nowrap}
.ontology-page .ontology-form-actions{padding-top:2px}
html[data-theme="light"] .ontology-page .ontology-inline-form,
html[data-theme="light"] .ontology-page .ontology-mapping-form,
html[data-theme="light"] .ontology-page .ontology-discovery-name,
html[data-theme="light"] .ontology-page .ontology-discovery-map{--ontology-field-bg:var(--canvas);--ontology-field-hover:var(--surface)}

/* Model language workbench -------------------------------------------------
   A persistent master/detail workspace keeps catalogue navigation, mapping
   and dependency inspection in one viewport. */
.ontology-workspace-page{max-width:1680px;margin:0 auto;display:grid;gap:0}
.ontology-workspace-header{margin-bottom:14px;align-items:center}
.ontology-workspace-header h1{margin-bottom:3px}
.ontology-workspace-header p{max-width:720px;margin:0;color:var(--muted)}
.ontology-health-strip{display:flex;align-items:center;gap:6px;padding:6px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.ontology-health-strip span{display:flex;align-items:baseline;gap:6px;padding:8px 11px;color:var(--muted);font-size:11px;white-space:nowrap}
.ontology-health-strip span+span{border-left:1px solid var(--line)}
.ontology-health-strip strong{color:var(--text);font:700 16px var(--mono,ui-monospace,monospace)}
.ontology-health-strip .ontology-health-attention strong{color:var(--amber)}
.ontology-workspace-tabs{display:flex;align-items:flex-end;gap:2px;border-bottom:1px solid var(--line)}
.ontology-workspace-tabs button{position:relative;min-width:190px;padding:11px 14px 10px;border:0;background:transparent;color:var(--muted);display:grid;gap:2px;text-align:left;cursor:pointer}
.ontology-workspace-tabs button::after{content:"";position:absolute;right:0;bottom:-1px;left:0;height:2px;background:transparent}
.ontology-workspace-tabs button:hover{color:var(--text);background:color-mix(in srgb,var(--surface) 64%,transparent)}
.ontology-workspace-tabs button.active{color:var(--text)}
.ontology-workspace-tabs button.active::after{background:var(--brand-bright)}
.ontology-workspace-tabs span{font-size:13px;font-weight:700}.ontology-workspace-tabs small{font-size:10px;color:var(--muted)}
.ontology-workbench{height:calc(100dvh - 252px);min-height:580px;max-height:980px;display:grid;grid-template-columns:320px minmax(0,1fr);border:1px solid var(--line);border-top:0;border-radius:0 0 8px 8px;background:var(--surface);overflow:hidden}
.ontology-workbench[hidden]{display:none}
.ontology-browser{min-width:0;display:grid;grid-template-rows:auto auto minmax(0,1fr);border-right:1px solid var(--line);background:color-mix(in srgb,var(--canvas) 65%,var(--surface))}
.ontology-browser>header{min-height:66px;padding:14px 15px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line)}
.ontology-browser>header h2{margin:3px 0 0;font-size:15px}.ontology-browser>header .eyebrow{font-size:8px}
.ontology-browser-tools{padding:11px 12px;display:grid;gap:9px;border-bottom:1px solid var(--line)}
.ontology-search{height:36px;display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid var(--line-strong);border-radius:4px;background:var(--canvas);color:var(--muted)}
.ontology-search:focus-within{border-color:var(--brand-bright);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand-bright) 12%,transparent)}
.ontology-search input{width:100%;min-width:0;padding:0!important;border:0!important;outline:0;background:transparent!important;box-shadow:none!important;color:var(--text);font-size:11px}
.ontology-filter-pills{display:flex;gap:4px;overflow-x:auto}.ontology-filter-pills button{padding:5px 8px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--muted);font-size:9px;white-space:nowrap;cursor:pointer}
.ontology-filter-pills button:hover{color:var(--text);background:var(--surface)}.ontology-filter-pills button.active{border-color:var(--line-strong);background:var(--surface);color:var(--text)}
.ontology-browser-list,.ontology-class-tree{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.ontology-model-item{width:100%;padding:12px 13px;border:0;border-bottom:1px solid var(--line);border-left:2px solid transparent;background:transparent;color:var(--text);display:grid;gap:7px;text-align:left;cursor:pointer}
.ontology-model-item:hover{background:color-mix(in srgb,var(--surface-raised) 72%,transparent)}.ontology-model-item.active{border-left-color:var(--brand-bright);background:var(--surface)}
.ontology-model-item-heading,.ontology-model-item-detail{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
.ontology-model-item-heading strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.ontology-model-item-detail small{color:var(--muted);font-size:9px}.ontology-model-item-detail code{color:var(--muted);font-size:9px}
.ontology-state-dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:var(--muted)}.ontology-state-dot.is-ready{background:var(--success)}.ontology-state-dot.needs-attention{background:var(--amber)}.ontology-state-dot.is-waiting{background:var(--cyan)}.ontology-state-dot.is-offline{background:var(--muted)}
.ontology-browser-empty{padding:24px 18px;display:grid;gap:5px;color:var(--muted);font-size:11px}.ontology-browser-empty strong{color:var(--text)}
.ontology-inspector{min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;background:var(--surface)}
.ontology-inspector-heading{position:sticky;z-index:3;top:0;min-height:82px;padding:15px 20px;display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(10px)}
.ontology-inspector-heading h2{margin:4px 0 2px;font-size:19px}.ontology-inspector-heading p{margin:0;color:var(--muted);font-size:10px}
.ontology-status-label{display:inline-flex;padding:3px 6px;border:1px solid var(--line-strong);border-radius:999px;color:var(--muted);font-size:8px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.ontology-status-label.is-ready{color:var(--success);border-color:color-mix(in srgb,var(--success) 40%,var(--line))}.ontology-status-label.needs-attention{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 42%,var(--line))}.ontology-status-label.is-waiting{color:var(--cyan)}
.ontology-reference-bar{padding:9px 20px;display:grid;grid-template-columns:minmax(260px,2fr) minmax(150px,1fr) minmax(130px,.7fr);gap:18px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--canvas) 60%,var(--surface))}
.ontology-reference-bar span{min-width:0;display:grid;gap:3px}.ontology-reference-bar small{color:var(--muted);font:700 8px var(--mono,ui-monospace,monospace);text-transform:uppercase;letter-spacing:.05em}.ontology-reference-bar code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:9px}.ontology-reference-bar strong{font-size:10px;text-transform:capitalize}
.ontology-inspector-content{padding:14px;display:grid;gap:14px}
.ontology-output-section,.ontology-dependency-panel,.ontology-class-note{border:1px solid var(--line);border-radius:6px;background:color-mix(in srgb,var(--surface-raised) 45%,var(--surface));overflow:hidden}
.ontology-output-section>header,.ontology-dependency-panel>header{padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid var(--line)}
.ontology-output-section>header h3,.ontology-dependency-panel>header h3,.ontology-class-note h3{margin:0;font-size:13px}.ontology-output-section>header p,.ontology-dependency-panel>header p{margin:2px 0 0;color:var(--muted);font-size:9px}.ontology-output-section>header>strong,.ontology-dependency-panel>header>strong{color:var(--muted);font:700 15px var(--mono,ui-monospace,monospace)}
.ontology-output-section.attention>header>strong{color:var(--amber)}
.ontology-output-list{display:grid}.ontology-output-row{padding:11px 13px;display:grid;grid-template-columns:minmax(200px,.8fr) minmax(420px,1.6fr);align-items:center;gap:16px;border-bottom:1px solid var(--line)}.ontology-output-row:last-child{border-bottom:0}
.ontology-output-row.needs-attention{background:color-mix(in srgb,var(--amber) 2.5%,transparent)}
.ontology-output-identity{min-width:0;display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:10px}.ontology-output-identity code{width:max-content;padding:3px 6px;border-radius:3px;background:var(--canvas);color:var(--cyan);font-size:10px}.ontology-output-identity span{min-width:0;display:grid;gap:2px}.ontology-output-identity strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.ontology-output-identity small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:8px}.ontology-output-identity em{color:var(--amber);font-size:8px;font-style:normal;text-transform:uppercase}.ontology-output-identity em.is-mapped{color:var(--success)}
.ontology-output-editor{display:grid;grid-template-columns:minmax(120px,.75fr) minmax(170px,1fr) auto auto;align-items:end;gap:7px}.ontology-output-editor label{min-width:0;display:grid;gap:4px}.ontology-output-editor label>span{color:var(--muted);font:700 8px var(--mono,ui-monospace,monospace);letter-spacing:.04em;text-transform:uppercase}.ontology-output-editor input,.ontology-output-editor select{width:100%;min-width:0;height:34px;padding:0 9px;border:1px solid var(--line-strong);border-radius:4px;background:var(--canvas);color:var(--text);font-size:10px;outline:0}.ontology-output-editor input:focus,.ontology-output-editor select:focus{border-color:var(--brand-bright);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand-bright) 12%,transparent)}.ontology-output-editor .btn{height:34px;white-space:nowrap}.ontology-output-editor .icon-text-button{height:34px;white-space:nowrap}
.ontology-empty-row{padding:18px!important;color:var(--muted);font-size:10px}.ontology-large-empty,.ontology-inspector-empty{min-height:340px;padding:36px;display:grid;align-content:center;justify-items:center;text-align:center;color:var(--muted)}.ontology-large-empty>span,.ontology-inspector-empty>span{width:44px;height:44px;margin-bottom:10px;border:1px solid var(--line-strong);border-radius:50%;display:grid;place-items:center;color:var(--cyan);font:700 11px var(--mono,ui-monospace,monospace)}.ontology-large-empty h3,.ontology-inspector-empty h2{margin:0;color:var(--text)}.ontology-large-empty p,.ontology-inspector-empty p{max-width:440px;margin:5px 0 0;font-size:11px}
.ontology-tree-row{width:100%;min-height:47px;padding:8px 11px 8px calc(11px + var(--tree-depth,0) * 18px);border:0;border-bottom:1px solid var(--line);border-left:2px solid transparent;background:transparent;color:var(--text);display:grid;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:7px;text-align:left;cursor:pointer}.ontology-tree-row:hover{background:var(--surface)}.ontology-tree-row.active{border-left-color:var(--brand-bright);background:var(--surface)}.ontology-tree-row.is-inactive{opacity:.55}.ontology-tree-branch{color:var(--muted);font:10px var(--mono,ui-monospace,monospace)}.ontology-tree-row>span:nth-child(2){display:grid;gap:1px}.ontology-tree-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.ontology-tree-row small{color:var(--muted);font-size:8px}.ontology-tree-row em{color:var(--muted);font-size:8px;font-style:normal}
.ontology-class-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.ontology-class-summary article{padding:12px 14px;border:1px solid var(--line);border-radius:5px;background:color-mix(in srgb,var(--canvas) 55%,var(--surface));display:flex;align-items:baseline;gap:8px}.ontology-class-summary strong{font:700 18px var(--mono,ui-monospace,monospace)}.ontology-class-summary span{color:var(--muted);font-size:9px}
.ontology-relationship-tree{padding:14px;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.ontology-relationship{padding:7px 9px;border:1px solid var(--line-strong);border-radius:4px;background:var(--canvas);color:var(--text);font-size:9px}.ontology-relationship.parent::after{content:"  →";color:var(--muted)}.ontology-relationship.current{border-color:var(--brand-bright);background:color-mix(in srgb,var(--brand-bright) 8%,var(--surface));font-weight:700}.ontology-relationship.child::before{content:"↳  ";color:var(--muted)}button.ontology-relationship{cursor:pointer}button.ontology-relationship:hover{border-color:var(--brand-bright)}.ontology-relationship-tree>small{color:var(--muted)}
.ontology-dependency-list{display:grid}.ontology-dependency-row{width:100%;padding:10px 14px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px;text-align:left;cursor:pointer}.ontology-dependency-row:last-child{border-bottom:0}.ontology-dependency-row:hover{background:var(--surface)}.ontology-dependency-row>span{display:grid;gap:2px}.ontology-dependency-row strong{font-size:11px}.ontology-dependency-row small{color:var(--muted);font-size:8px}.ontology-dependency-row em{color:var(--muted);font-size:9px;font-style:normal}.ontology-dependency-row i{color:var(--cyan);font-size:9px;font-style:normal}.ontology-class-note{padding:14px}.ontology-class-note p{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.6}
.ontology-toast{position:fixed;z-index:1600;right:24px;bottom:24px;max-width:420px;padding:11px 14px;border:1px solid color-mix(in srgb,var(--success) 45%,var(--line));border-radius:5px;background:var(--surface-raised);box-shadow:0 14px 40px rgba(0,0,0,.32);color:var(--text);font-size:11px}.ontology-toast.is-error{border-color:color-mix(in srgb,var(--danger) 55%,var(--line))}
.ontology-workspace-dialog{width:min(570px,calc(100vw - 28px))}.ontology-workspace-dialog .operations-form{display:grid;gap:15px}.ontology-workspace-dialog .operations-form>label,.ontology-workspace-dialog .form-grid-two>label{display:grid;gap:6px}.ontology-workspace-dialog input:not([type=checkbox]):not([type=radio]),.ontology-workspace-dialog select,.ontology-workspace-dialog textarea{width:100%;border-color:var(--line-strong);background:var(--canvas)}
.ontology-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.ontology-choice-grid>label{position:relative}.ontology-choice-grid input{position:absolute;opacity:0}.ontology-choice-grid span{min-height:68px;padding:11px;border:1px solid var(--line-strong);border-radius:5px;display:grid;align-content:center;gap:3px;cursor:pointer}.ontology-choice-grid small{color:var(--muted);font-size:9px}.ontology-choice-grid input:checked+span{border-color:var(--brand-bright);background:color-mix(in srgb,var(--brand-bright) 7%,var(--surface))}.ontology-access-picker{max-height:235px;padding:10px;border:1px solid var(--line);border-radius:5px;overflow:auto}.ontology-access-picker legend{padding:0 5px;color:var(--muted);font-size:9px}.ontology-access-picker>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.ontology-access-picker label{padding:8px;border:1px solid var(--line);border-radius:4px;display:flex;align-items:center;gap:8px}.ontology-access-picker label span{display:grid}.ontology-access-picker label strong{font-size:10px}.ontology-access-picker label small{color:var(--muted);font-size:8px}.ontology-toggle-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media(max-width:1050px){.ontology-workbench{grid-template-columns:280px minmax(0,1fr)}.ontology-output-row{grid-template-columns:1fr}.ontology-reference-bar{grid-template-columns:1fr 1fr}.ontology-reference-bar span:first-child{grid-column:1/-1}.ontology-output-editor{grid-template-columns:minmax(120px,.8fr) minmax(160px,1fr) auto auto}}
@media(max-width:760px){.ontology-workspace-header{display:grid}.ontology-health-strip{width:100%;overflow:auto}.ontology-workspace-tabs button{min-width:0;flex:1}.ontology-workbench{height:auto;max-height:none;min-height:0;grid-template-columns:1fr;overflow:visible}.ontology-browser{height:390px;border-right:0;border-bottom:1px solid var(--line)}.ontology-inspector{max-height:none;overflow:visible}.ontology-inspector-heading{position:static}.ontology-output-editor{grid-template-columns:1fr 1fr}.ontology-output-editor .btn,.ontology-output-editor .icon-text-button{justify-self:start}.ontology-reference-bar{grid-template-columns:1fr}.ontology-reference-bar span:first-child{grid-column:auto}.ontology-class-summary{grid-template-columns:1fr}.ontology-choice-grid,.ontology-access-picker>div,.ontology-toggle-row{grid-template-columns:1fr}}

/* Alert video tester ------------------------------------------------------ */
.alert-gate{margin-bottom:16px;border:1px solid var(--line);border-top:2px solid var(--cyan);background:color-mix(in srgb,var(--surface) 94%,var(--cyan));display:grid}.alert-gate-heading{padding:16px 17px 13px;display:flex;align-items:start;justify-content:space-between;gap:18px}.alert-gate-heading>div{display:grid;gap:3px}.alert-gate-heading h3{margin:0;font-size:17px}.alert-gate-heading p{max-width:760px;margin:0;color:var(--muted);font-size:9px;line-height:1.55}.alert-gate-health{min-width:90px;padding:5px 8px;border:1px solid var(--line-strong);color:var(--muted);font:800 8px var(--mono);letter-spacing:.06em;text-align:center;text-transform:uppercase}.alert-gate-health.health-healthy{border-color:color-mix(in srgb,var(--success) 55%,var(--line));color:var(--success)}.alert-gate-health.health-failed{border-color:color-mix(in srgb,var(--danger) 60%,var(--line));color:var(--danger)}.alert-gate-health.health-running,.alert-gate-health.health-pending{border-color:color-mix(in srgb,var(--cyan) 55%,var(--line));color:var(--cyan)}
.alert-gate-progress{padding:0 17px 13px;display:grid;grid-template-columns:minmax(120px,1fr) auto;align-items:center;gap:10px}.alert-gate-progress>div{height:6px;background:var(--canvas);overflow:hidden}.alert-gate-progress i{display:block;height:100%;background:var(--cyan);transition:width .2s ease}.alert-gate-progress span{color:var(--muted);font:8px var(--mono)}
.alert-gate-config{padding:13px 17px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(210px,1fr) auto;align-items:end;gap:11px}.alert-gate-config>label:not(.alert-gate-enable){display:grid;gap:5px;color:var(--soft);font-size:8px;font-weight:700}.alert-gate-config input[type=text],.alert-gate-config input:not([type]),.alert-gate-config select{width:100%;height:35px;padding:0 9px;border:1px solid var(--line-strong);border-radius:3px;background:var(--canvas);color:var(--text);font:inherit}.alert-gate-enable{min-height:35px;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px;cursor:pointer}.alert-gate-enable span{display:grid;gap:1px}.alert-gate-enable strong{font-size:9px}.alert-gate-enable small{color:var(--muted);font-size:7px}.alert-gate-actions{display:flex;gap:6px}
.alert-gate-body{display:grid;grid-template-columns:1fr 1fr;gap:0}.alert-gate-body>div{min-width:0;padding:14px 17px}.alert-gate-body>div+div{border-left:1px solid var(--line)}.alert-gate-fixtures,.alert-gate-tests{margin-top:8px;display:grid}.alert-gate-case{min-height:45px;padding:8px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr) minmax(80px,150px) auto;align-items:center;gap:10px}.alert-gate-case:first-child{border-top:0}.alert-gate-case>span{display:grid;gap:2px;min-width:0}.alert-gate-case strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px}.alert-gate-case small{color:var(--muted);font-size:7px}.alert-gate-case em{min-width:52px;color:var(--muted);font:700 7px var(--mono);font-style:normal;text-align:right;text-transform:uppercase}.alert-gate-case em.assertion-passed{color:var(--success)}.alert-gate-case em.assertion-failed{color:var(--danger)}.alert-gate-case-progress{height:4px;background:var(--canvas);overflow:hidden}.alert-gate-case-progress i{display:block;height:100%;background:var(--cyan)}.alert-gate-case-controls{display:flex;align-items:center;justify-content:flex-end;gap:7px}.alert-gate-case-controls select,.alert-test-gate-controls select{height:29px;padding:0 7px;border:1px solid var(--line);border-radius:3px;background:var(--canvas);color:var(--text);font-size:8px}.alert-gate-empty,.alert-gate-model,.alert-gate-failure{margin:0;padding:9px 0;color:var(--muted);font-size:8px;line-height:1.5}.alert-gate-failure{color:var(--danger)}.alert-test-gate-controls{display:flex;gap:5px}.alert-test-assertion{padding:9px 11px;border-left:2px solid var(--cyan);background:color-mix(in srgb,var(--cyan) 5%,transparent);font-size:9px}.alert-test-assertion.assertion-passed{border-left-color:var(--success);color:var(--success)}.alert-test-assertion.assertion-failed{border-left-color:var(--danger);color:var(--danger)}
.alert-test-safety-banner{margin-bottom:14px;padding:13px 15px;border:1px solid color-mix(in srgb,var(--cyan) 35%,var(--line));border-radius:6px;background:color-mix(in srgb,var(--cyan) 5%,var(--surface));display:flex;align-items:center;gap:13px}
.alert-test-safety-banner>span{padding:5px 7px;border:1px solid color-mix(in srgb,var(--cyan) 50%,var(--line));border-radius:3px;color:var(--cyan);font:800 9px var(--mono);letter-spacing:.08em;white-space:nowrap}
.alert-test-safety-banner div{display:grid;gap:2px}.alert-test-safety-banner strong{font-size:12px}.alert-test-safety-banner p{margin:0;color:var(--muted);font-size:10px;line-height:1.55}
.alert-test-create-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:12px;align-items:start}
.alert-test-upload-card,.alert-test-guidance{border:1px solid var(--line);border-radius:6px;background:color-mix(in srgb,var(--surface-raised) 42%,var(--surface))}
.alert-test-upload-card{padding:17px;display:grid;gap:15px}.alert-test-upload-card>header{display:grid;gap:3px}.alert-test-upload-card h3{margin:0;font-size:16px}.alert-test-upload-card header p{margin:0;color:var(--muted);font-size:10px}
.alert-test-upload-card label{display:grid;gap:5px;color:var(--soft);font-size:9px;font-weight:700}.alert-test-upload-card input:not([type=checkbox]),.alert-test-upload-card select{width:100%;height:38px;padding:0 10px;border:1px solid var(--line-strong);border-radius:4px;background:var(--canvas);color:var(--text);font:inherit}.alert-test-upload-card input[type=file]{padding:7px 9px;font-size:10px}.alert-test-file-picker small{color:var(--muted);font-size:8px;font-weight:500}
.alert-test-deployment-picker{padding:11px;border:1px solid var(--line);border-radius:5px}.alert-test-deployment-picker legend{padding:0 5px;color:var(--muted);font:700 8px var(--mono);letter-spacing:.05em;text-transform:uppercase}.alert-test-deployment-picker>div{max-height:230px;display:grid;gap:5px;overflow:auto}.alert-test-deployment-picker>div>p{padding:10px;color:var(--muted);font-size:10px}.alert-test-deployment-picker label{position:relative;padding:9px 10px;border:1px solid var(--line);border-radius:4px;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:9px;cursor:pointer}.alert-test-deployment-picker label:hover{border-color:var(--line-strong);background:var(--surface)}.alert-test-deployment-picker label:has(input:checked){border-color:color-mix(in srgb,var(--brand-bright) 50%,var(--line));background:color-mix(in srgb,var(--brand-bright) 5%,var(--surface))}.alert-test-deployment-picker input{margin-top:3px}.alert-test-deployment-picker span{display:grid;gap:2px}.alert-test-deployment-picker strong{font-size:10px}.alert-test-deployment-picker small{color:var(--muted);font-size:8px}.alert-test-deployment-picker em{color:var(--amber);font-size:8px;font-style:normal}.alert-test-deployment-picker .is-unavailable{opacity:.55;cursor:not-allowed}
.alert-test-upload-card>footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.alert-test-upload-card>footer>span{color:var(--muted);font-size:9px}
.alert-test-upload-progress{display:grid;grid-template-columns:minmax(120px,1fr) auto;align-items:center;gap:9px}.alert-test-upload-progress>div{height:5px;border-radius:99px;background:var(--canvas);overflow:hidden}.alert-test-upload-progress i{display:block;width:0;height:100%;background:var(--brand-bright);transition:width .18s ease}.alert-test-upload-progress span{color:var(--muted);font-size:9px}
.alert-test-guidance{padding:16px}.alert-test-guidance ol{margin-top:13px;display:grid;gap:14px;list-style:none;counter-reset:steps}.alert-test-guidance li{position:relative;padding-left:29px;display:grid;gap:2px;counter-increment:steps}.alert-test-guidance li::before{content:counter(steps);position:absolute;top:0;left:0;width:20px;height:20px;border:1px solid var(--line-strong);border-radius:50%;display:grid;place-items:center;color:var(--cyan);font:700 8px var(--mono)}.alert-test-guidance strong{font-size:10px}.alert-test-guidance li span{color:var(--muted);font-size:9px;line-height:1.5}
.alert-test-results-layout{min-height:620px;margin-top:14px;display:grid;grid-template-columns:275px minmax(0,1fr);border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}
.alert-test-run-list{min-width:0;border-right:1px solid var(--line);background:color-mix(in srgb,var(--canvas) 58%,var(--surface))}.alert-test-run-list>header{padding:13px;display:flex;align-items:end;justify-content:space-between;border-bottom:1px solid var(--line)}.alert-test-run-list>header strong{font:700 10px var(--mono);color:var(--muted)}.alert-test-run-list>div{max-height:760px;overflow:auto}.alert-test-run-list button{position:relative;width:100%;padding:12px 13px 14px;border:0;border-bottom:1px solid var(--line);border-left:2px solid transparent;background:transparent;color:var(--text);display:grid;gap:4px;text-align:left;cursor:pointer}.alert-test-run-list button:hover{background:var(--surface)}.alert-test-run-list button.active{border-left-color:var(--brand-bright);background:var(--surface)}.alert-test-run-list button>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}.alert-test-run-list button>small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:8px}.alert-test-run-list button>i{position:absolute;right:0;bottom:0;left:0;height:2px;background:linear-gradient(90deg,var(--brand-bright) var(--test-progress,0%),transparent var(--test-progress,0%));opacity:.8}
.alert-test-status{width:max-content;padding:3px 6px;border:1px solid var(--line-strong);border-radius:999px;color:var(--muted);font:800 7px var(--mono);letter-spacing:.05em;text-transform:uppercase}.alert-test-status.status-completed{border-color:color-mix(in srgb,var(--success) 45%,var(--line));color:var(--success)}.alert-test-status.status-processing,.alert-test-status.status-queued{border-color:color-mix(in srgb,var(--cyan) 45%,var(--line));color:var(--cyan)}.alert-test-status.status-failed{border-color:color-mix(in srgb,var(--danger) 50%,var(--line));color:var(--danger)}.alert-test-status.status-cancelled,.alert-test-status.status-expired{opacity:.7}
.alert-test-detail{min-width:0;padding:17px;display:grid;align-content:start;gap:14px}.alert-test-detail-header{display:flex;align-items:start;justify-content:space-between;gap:15px}.alert-test-detail-header>div:first-child{display:grid;gap:4px}.alert-test-detail-header h3{margin:0;font-size:18px}.alert-test-detail-header p{margin:0;color:var(--muted);font-size:9px}.alert-test-detail-header>div:last-child{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.alert-test-detail-loading{min-height:300px;display:grid;place-items:center;color:var(--muted);font-size:10px}.alert-test-error{padding:10px 12px;border:1px solid color-mix(in srgb,var(--danger) 50%,var(--line));border-radius:4px;background:color-mix(in srgb,var(--danger) 7%,var(--surface));color:var(--danger);font-size:10px}
.alert-test-active-progress{display:grid;grid-template-columns:minmax(160px,auto) minmax(100px,1fr) auto;align-items:center;gap:10px}.alert-test-active-progress strong,.alert-test-active-progress span{font-size:9px}.alert-test-active-progress span{color:var(--muted);font-family:var(--mono)}.alert-test-active-progress>div{height:5px;border-radius:99px;background:var(--canvas);overflow:hidden}.alert-test-active-progress i{display:block;height:100%;background:var(--cyan)}
.alert-test-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.alert-test-metrics article{padding:10px;border:1px solid var(--line);border-radius:4px;background:color-mix(in srgb,var(--canvas) 52%,var(--surface));display:grid;gap:2px}.alert-test-metrics span,.alert-test-metrics small{color:var(--muted);font-size:8px}.alert-test-metrics strong{font:700 18px var(--mono)}
.alert-test-invariant{padding:9px 11px;border-left:2px solid var(--success);background:color-mix(in srgb,var(--success) 5%,transparent);display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px}.alert-test-invariant strong{color:var(--success);font-size:9px}.alert-test-invariant span{color:var(--muted);font-size:9px}
.alert-test-viewer{border:1px solid var(--line);border-radius:5px;overflow:hidden;background:#070a0b}.alert-test-video-stage{position:relative;width:100%;display:grid;place-items:center}.alert-test-video-stage video{display:block;width:100%;height:auto;background:#050607}.alert-test-video-stage canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.alert-test-viewer-legend{padding:7px 9px;border-top:1px solid var(--line);display:flex;gap:12px;flex-wrap:wrap;background:var(--canvas)}.alert-test-viewer-legend span{color:var(--muted);font-size:8px}.alert-test-model{margin:0;color:var(--muted);font-size:9px}
.alert-test-coverage,.alert-test-event-section{display:grid;gap:8px}.alert-test-coverage h4,.alert-test-event-section h4{margin:0;font-size:12px}.alert-test-coverage>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.alert-test-coverage-card{padding:10px;border:1px solid var(--line);border-radius:4px;display:grid;gap:7px}.alert-test-coverage-card header,.alert-test-coverage-card>div{display:flex;align-items:center;justify-content:space-between;gap:8px}.alert-test-coverage-card header div{font-size:10px;font-weight:700}.alert-test-coverage-card header span{color:var(--cyan);font:700 7px var(--mono);text-transform:uppercase}.alert-test-coverage-card>div span{color:var(--muted);font-size:8px}.alert-test-coverage-card p{margin:0;color:var(--muted);font-size:8px}.alert-test-coverage-warning{color:var(--amber)!important}
.alert-test-event-list{display:grid;gap:5px}.alert-test-event{border:1px solid var(--line);border-left:2px solid var(--muted);border-radius:4px;overflow:hidden}.alert-test-event.event-alert{border-left-color:var(--danger)}.alert-test-event.event-watch{border-left-color:var(--amber)}.alert-test-event.event-recovered{border-left-color:var(--success)}.alert-test-event>button{width:100%;padding:9px 10px;border:0;background:transparent;color:var(--text);display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:9px;text-align:left;cursor:pointer}.alert-test-event>button:hover{background:var(--surface-raised)}.alert-test-event time{color:var(--cyan);font:700 9px var(--mono)}.alert-test-event>button span{display:grid;gap:2px}.alert-test-event>button strong{font-size:9px}.alert-test-event>button small{color:var(--muted);font-size:8px}.alert-test-event details{padding:0 10px 9px}.alert-test-event summary{color:var(--muted);font-size:8px;cursor:pointer}.alert-test-decision{margin-top:6px;padding:7px;border:1px solid var(--line);display:grid;gap:3px}.alert-test-decision>strong{font-size:8px}.alert-test-decision>span{color:var(--muted);font:8px/1.5 var(--mono)}.alert-test-decision>span.failed{color:var(--danger)}.alert-test-decision>span.passed{color:var(--success)}.alert-test-no-events{margin:0;padding:16px;border:1px dashed var(--line-strong);color:var(--muted);font-size:9px;text-align:center}
@media(max-width:1000px){.alert-test-create-layout{grid-template-columns:1fr}.alert-test-guidance ol{grid-template-columns:repeat(3,minmax(0,1fr))}.alert-test-results-layout{grid-template-columns:235px minmax(0,1fr)}.alert-test-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.alert-test-guidance ol{grid-template-columns:1fr}.alert-test-results-layout{grid-template-columns:1fr}.alert-test-run-list{border-right:0;border-bottom:1px solid var(--line)}.alert-test-run-list>div{max-height:280px}.alert-test-detail-header{display:grid}.alert-test-detail-header>div:last-child{justify-content:start}.alert-test-coverage>div{grid-template-columns:1fr}.alert-test-upload-card>footer{align-items:stretch;flex-direction:column}.alert-test-upload-card>footer .btn{width:100%}}
@media(max-width:1000px){.alert-gate-config{grid-template-columns:1fr 1fr}.alert-gate-actions{justify-content:flex-end}}
@media(max-width:720px){.alert-gate-heading{display:grid}.alert-gate-progress{grid-template-columns:1fr}.alert-gate-config,.alert-gate-body{grid-template-columns:1fr}.alert-gate-body>div+div{border-left:0;border-top:1px solid var(--line)}.alert-gate-actions{justify-content:stretch}.alert-gate-actions .btn{flex:1}.alert-gate-case{grid-template-columns:minmax(0,1fr) auto}.alert-gate-case-progress{grid-column:1/-1;grid-row:2}.alert-test-gate-controls{width:100%;flex-wrap:wrap}}

/* Persistent management navigation --------------------------------------
   Keep the rail, top bar and current page painted while the next server-
   rendered page is fetched and initialised. This prevents the unstyled
   document flash produced by full-page management navigation. */
.ops-content{transition:opacity .14s ease;will-change:opacity}
.ops-content:focus{outline:0}
.ops-main.rsq-navigation-visible .ops-content{opacity:.72;pointer-events:none;user-select:none}
.ops-content.rsq-content-enter{opacity:.78}
.ops-topbar::after{content:"";position:absolute;z-index:520;right:0;bottom:-1px;left:0;height:2px;pointer-events:none;background:linear-gradient(90deg,transparent 0,var(--brand-bright) 35%,var(--cyan) 62%,transparent 100%);opacity:0;transform:scaleX(.22) translateX(-160%);transform-origin:left center}
.ops-main.rsq-navigation-visible .ops-topbar::after{opacity:1;animation:rsq-navigation-progress 1.05s ease-in-out infinite}
@keyframes rsq-navigation-progress{0%{transform:scaleX(.22) translateX(-160%)}55%{transform:scaleX(.48) translateX(85%)}100%{transform:scaleX(.25) translateX(420%)}}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(prefers-reduced-motion:reduce){.ops-content{transition:none}.ops-main.rsq-navigation-visible .ops-topbar::after{animation:none;transform:none}}

/* Reusable tag assignment ------------------------------------------------- */
.rsq-tag-source{display:none!important}
.rsq-tag-picker{position:relative;width:100%;font-family:inherit}
.rsq-tag-selected{min-height:40px;display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:5px 7px;border:1px solid var(--line);background:var(--panel-2);cursor:text;transition:border-color .14s ease,box-shadow .14s ease}
.rsq-tag-picker:focus-within .rsq-tag-selected{border-color:var(--brand-bright);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand-bright),transparent 82%)}
.rsq-tag-token{display:inline-flex;align-items:center;gap:5px;max-width:100%;padding:4px 5px;color:var(--soft);border:1px solid var(--line-strong);border-radius:2px;background:var(--canvas);font:650 8px var(--mono)}
.rsq-tag-token button{width:16px;height:16px;padding:0;color:var(--muted);border:0;background:transparent;font:14px/14px sans-serif;cursor:pointer}
.rsq-tag-token button:hover,.rsq-tag-token button:focus-visible{color:var(--text);background:var(--hover);outline:none}
.rsq-tag-editor{min-width:145px!important;min-height:28px!important;flex:1!important;padding:2px!important;border:0!important;background:transparent!important;box-shadow:none!important;font-size:9px!important;outline:none!important}
.rsq-tag-options{position:absolute;z-index:180;top:calc(100% + 4px);right:0;left:0;max-height:240px;overflow:auto;padding:5px;border:1px solid var(--line-strong);background:var(--surface);box-shadow:0 18px 44px rgba(0,0,0,.34)}
.rsq-tag-options[hidden]{display:none}
.rsq-tag-option{width:100%;min-height:43px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 9px;color:var(--text);border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;cursor:pointer}
.rsq-tag-option:last-child{border-bottom:0}
.rsq-tag-option:hover,.rsq-tag-option:focus-visible{background:var(--hover);outline:none}
.rsq-tag-option strong{overflow:hidden;font-size:9px;text-overflow:ellipsis;white-space:nowrap}
.rsq-tag-option small{flex:0 0 auto;color:var(--muted);font:650 7px var(--mono)}
.rsq-tag-options>p{margin:0;padding:12px;color:var(--muted);font-size:8px;text-align:center}

/* MapLibre owns marker transforms. Never animate them: doing so makes DOM
   markers lag behind their coordinates while the map zooms or pans. */
.maplibregl-marker.rsq-map-marker{will-change:transform;transition:opacity .15s ease,filter .15s ease,box-shadow .15s ease!important}

/* Management uses the same centred basemap switch as Watch & Coordinate. It
   is a page overlay rather than a top-right MapLibre control, so it cannot
   collide with registry, layer or fit controls. */
.asset-basemap-toggle{position:absolute;z-index:36;top:22px;left:50%;display:flex;padding:2px;transform:translateX(-50%);border:1px solid var(--line-strong);border-radius:3px;background:rgba(9,13,14,.86);box-shadow:0 10px 32px rgba(0,0,0,.2);backdrop-filter:blur(12px)}
.asset-basemap-toggle button{min-width:66px;height:28px;padding:0 10px;color:var(--muted);border:0;background:transparent;font:700 8px var(--mono);cursor:pointer}
.asset-basemap-toggle button:hover,.asset-basemap-toggle button:focus-visible{color:var(--text);background:rgba(255,255,255,.045);outline:none}
.asset-basemap-toggle button.active{color:var(--text);background:rgba(255,255,255,.08);box-shadow:inset 0 -2px var(--brand-bright)}
@media(max-width:820px){.asset-basemap-toggle{top:72px}.asset-map-toolbar{max-width:calc(100% - 24px);flex-wrap:wrap;justify-content:flex-end}}

/* Map workspace chrome stays clear of native MapLibre controls. The visibility
   filters are a centred dock, service health sits above attribution, and the
   inventory panel can collapse without recreating the map. */
.asset-workspace{--asset-panel-width:402px;grid-template-columns:minmax(0,1fr) var(--asset-panel-width);transition:grid-template-columns .2s ease-out}
.asset-workspace.panel-collapsed{grid-template-columns:minmax(0,1fr) 0}
.asset-panel{min-width:0;transition:opacity .16s ease-out,visibility 0s linear 0s}
.asset-workspace.panel-collapsed .asset-panel{overflow:hidden;opacity:0;visibility:hidden;pointer-events:none;border-left:0;transition:opacity .12s ease-out,visibility 0s linear .12s}
.asset-panel-toggle{position:absolute;z-index:40;top:50%;right:0;width:34px;min-height:82px;display:grid;place-items:center;gap:5px;padding:8px 4px;color:var(--soft);border:1px solid var(--line-strong);border-right:0;border-radius:4px 0 0 4px;background:rgba(9,13,14,.9);box-shadow:0 10px 28px rgba(0,0,0,.28);transform:translateY(-50%);cursor:pointer;backdrop-filter:blur(12px)}
.asset-panel-toggle span{font:500 18px/1 var(--mono)}
.asset-panel-toggle small{color:var(--muted);font:650 7px var(--mono);letter-spacing:.04em;writing-mode:vertical-rl;transform:rotate(180deg)}
.asset-panel-toggle:hover,.asset-panel-toggle:focus-visible{color:var(--text);background:rgba(24,31,33,.96);outline:none}
.asset-map-legend{left:50%;right:auto;bottom:16px;max-width:calc(100% - 190px);overflow-x:auto;transform:translateX(-50%);white-space:nowrap;box-shadow:0 10px 30px rgba(0,0,0,.24);backdrop-filter:blur(12px)}
.asset-stream-state{right:12px;bottom:48px;min-height:26px;gap:6px;padding:6px 8px;border-radius:3px;font:650 7px var(--mono);letter-spacing:.02em;box-shadow:0 8px 24px rgba(0,0,0,.22);backdrop-filter:blur(12px)}
.asset-stream-state:hover,.asset-stream-state:focus-visible{color:var(--text);border-color:var(--line-strong);outline:none}
.asset-stream-health-panel{right:12px;bottom:82px;width:min(292px,calc(100% - 24px));padding:13px}
.asset-stream-health-panel dl{grid-template-columns:1fr;margin-bottom:12px}
.asset-stream-health-panel dl div{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:9px 10px}
.asset-stream-health-panel dd{margin:0;font:750 8px var(--mono);text-transform:uppercase}
.asset-stream-health-panel dd[data-health=ok]{color:var(--success)}
.asset-stream-health-panel dd[data-health=error]{color:var(--danger)}
.asset-stream-health-panel dd[data-health=checking]{color:var(--amber)}
@media(max-width:1180px) and (min-width:821px){.asset-workspace{--asset-panel-width:360px}}
@media(max-width:820px){.asset-workspace,.asset-workspace.panel-collapsed{display:block}.asset-panel-toggle{display:none}.asset-workspace.panel-collapsed .asset-panel{overflow:visible;opacity:1;visibility:visible;pointer-events:auto;border-left:1px solid var(--line)}.asset-map-legend{bottom:12px;max-width:calc(100% - 24px)}.asset-stream-state{right:10px;bottom:44px}.asset-stream-health-panel{right:10px;bottom:78px;width:min(292px,calc(100% - 20px))}}

/* The rule dialog has five visible grid rows. Keeping the flexible row on the
   builder prevents the guidance field from expanding into blank space. */
.workflow-dialog .operations-form{grid-template-rows:max-content max-content max-content minmax(360px,1fr) max-content}
.workflow-dialog .operations-form>label textarea{height:48px;min-height:48px;max-height:48px;resize:none}
.workflow-builder{min-height:360px}
@media(max-height:700px){.workflow-dialog .operations-form{overflow-y:auto}.workflow-builder{min-height:360px}}

/* Simple, scalable alert operations -------------------------------------- */
.alert-library-tools{display:grid;grid-template-columns:minmax(220px,1fr) minmax(135px,190px) minmax(170px,240px) auto auto;align-items:end;gap:10px;padding:12px 18px;border-bottom:1px solid var(--line);background:var(--canvas)}
.alert-library-tools label{display:grid;gap:5px}.alert-library-tools label>span{color:var(--muted);font:750 7px var(--mono);letter-spacing:.06em;text-transform:uppercase}
.alert-library-tools input,.alert-library-tools select{width:100%;min-height:36px;padding:7px 9px;color:var(--text);border:1px solid var(--line-strong);background:var(--surface);font-size:9px}
.alert-library-tools>[data-alert-result-count]{align-self:center;min-width:74px;color:var(--muted);font:700 7px var(--mono);text-align:right}
[data-alert-item][hidden]{display:none!important}
.response-group-grid>article footer{display:flex;gap:8px;margin-top:12px;padding-top:9px;border-top:1px solid var(--line)}
.escalation-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.layer-zone-card{cursor:pointer}.layer-zone-card .btn{width:max-content;margin-top:12px}
.zone-source-summary{display:flex;align-items:center;gap:12px;padding:10px 18px;color:var(--muted);border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--cyan),transparent 96%);font-size:8px}.zone-source-summary strong{color:var(--cyan);font:800 7px var(--mono);letter-spacing:.06em;text-transform:uppercase}.zone-source-dialog{width:min(780px,calc(100vw - 28px))}.zone-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.zone-source-grid button{min-height:118px;display:grid;grid-template-columns:42px 1fr;grid-template-rows:auto 1fr;align-content:center;gap:5px 12px;padding:17px;color:var(--text);text-align:left;border:1px solid var(--line-strong);background:var(--canvas);cursor:pointer}.zone-source-grid button>span{grid-row:1/3;width:36px;height:36px;display:grid;place-items:center;color:var(--cyan);border:1px solid color-mix(in srgb,var(--cyan),transparent 55%);font:800 7px var(--mono)}.zone-source-grid button strong{align-self:end;font-size:10px}.zone-source-grid button small{align-self:start;color:var(--muted);font-size:8px;line-height:1.45}.zone-source-grid button:hover,.zone-source-grid button:focus-visible{border-color:var(--cyan);background:color-mix(in srgb,var(--cyan),transparent 95%);outline:none}.zone-source-grid button:last-child:nth-child(odd){grid-column:1/-1}.zone-file-drop{min-height:116px;display:grid!important;place-content:center;gap:8px;padding:18px;text-align:center;border:1px dashed var(--line-strong);background:var(--canvas)}.zone-file-drop input{max-width:440px}.zone-file-drop small{color:var(--muted);font-size:8px;text-transform:none}.zone-create-status{padding:10px;color:var(--cyan);border:1px solid color-mix(in srgb,var(--cyan),transparent 68%);background:color-mix(in srgb,var(--cyan),transparent 95%);font-size:8px}.zone-create-status.error{color:var(--danger);border-color:color-mix(in srgb,var(--danger),transparent 62%);background:color-mix(in srgb,var(--danger),transparent 95%)}.zone-transition-callout{padding:9px 10px;color:var(--cyan);border-left:3px solid var(--cyan);background:color-mix(in srgb,var(--cyan),transparent 94%);font:750 7px var(--mono)}

.workflow-dialog{width:calc(100vw - 16px);height:calc(100vh - 16px);max-width:none;max-height:none}
.workflow-dialog .operations-form{height:100%;grid-template-rows:auto auto auto minmax(360px,1fr) auto;gap:12px;overflow:hidden}
.simple-alert-builder{min-height:360px;overflow:auto;display:grid;align-content:start;border:1px solid var(--line-strong);background:var(--canvas)}
.simple-alert-step{display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;padding:15px 17px;border-bottom:1px solid var(--line)}
.simple-alert-step>span{width:25px;height:25px;display:grid;place-items:center;color:var(--cyan);border:1px solid color-mix(in srgb,var(--cyan),transparent 58%);border-radius:50%;font:750 8px var(--mono)}
.simple-alert-step>label,.simple-alert-step>div{min-width:0}.simple-alert-step strong{color:var(--text);font-size:10px}.simple-alert-step p,.simple-alert-step small{color:var(--muted);font-size:8px;line-height:1.55}.simple-alert-step label{display:grid;gap:7px}
.simple-alert-fields{display:grid;grid-template-columns:minmax(240px,1fr) minmax(160px,.45fr);gap:14px}.simple-alert-fields select[multiple]{min-height:112px}
.simple-alert-inline{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.simple-alert-inline label{grid-template-columns:auto 90px auto;align-items:center;color:var(--soft);font-size:8px}.simple-alert-inline input{min-width:80px}
.simple-alert-number{display:grid;grid-template-columns:minmax(90px,1fr) auto;align-items:center;gap:8px}.simple-alert-number em{color:var(--muted);font-size:8px;font-style:normal}
.simple-alert-result{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px;padding:14px 17px;background:color-mix(in srgb,var(--cyan),transparent 94%)}
.simple-alert-result span{color:var(--cyan);font:800 7px var(--mono);letter-spacing:.08em}.simple-alert-result strong{font-size:9px;font-weight:560}
.simple-alert-legacy{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 17px;border-bottom:1px solid color-mix(in srgb,var(--amber),transparent 58%);background:color-mix(in srgb,var(--amber),transparent 94%)}
.simple-alert-legacy>div{display:grid;gap:4px}.simple-alert-legacy strong{font-size:10px}.simple-alert-legacy span{color:var(--muted);font-size:8px}
.simple-alert-builder.is-legacy>.simple-alert-step,.simple-alert-builder.is-legacy>.simple-alert-result{display:none}
.dialog-footer-spacer{flex:1}

/* Movable alert decision tree. The canvas owns the flexible row so metadata
   fields cannot squeeze it down. */
.workflow-builder-guided{min-height:410px}
.workflow-builder-guided .workflow-toolbar{min-height:64px}
.workflow-builder-guided .workflow-toolbar>div:first-child{max-width:520px}
.workflow-builder-guided .workflow-toolbar>div:first-child span{font-size:8px;line-height:1.45}
.workflow-builder-guided .workflow-template-controls{align-items:center}
.workflow-builder-guided .workflow-template-controls select{min-width:260px}
.workflow-builder-guided .workflow-builder-body{grid-template-columns:220px minmax(0,1fr) 325px}
.workflow-builder-guided .workflow-palette{min-height:0;align-content:start;overflow:auto;padding:12px 10px}
.workflow-builder-guided .workflow-palette>button{min-height:43px;grid-template-columns:35px 1fr;padding:6px 8px;cursor:pointer}
.workflow-builder-guided .workflow-palette>button i{width:34px;height:27px;font-size:6px}
.workflow-builder-guided .workflow-palette>button:disabled{cursor:not-allowed;opacity:.28;filter:saturate(.4)}
.workflow-builder-guided .workflow-palette-help{margin-top:4px}
.workflow-builder-guided .workflow-canvas{cursor:grab;touch-action:none}
.workflow-builder-guided .workflow-canvas.is-panning{cursor:grabbing}
.workflow-builder-guided .workflow-surface,.workflow-builder-guided .workflow-surface>svg,.workflow-builder-guided .workflow-surface>div{width:6000px;height:4000px}
.workflow-builder-guided .workflow-node{cursor:grab;touch-action:none}
.workflow-builder-guided .workflow-node:active,.workflow-builder-guided .workflow-node.is-dragging{cursor:grabbing}
.workflow-builder-guided .workflow-node-if{min-height:105px}
.workflow-builder-guided .workflow-node-outcome{min-height:78px}
.workflow-builder-guided .workflow-outcome-alert,.workflow-builder-guided .workflow-outcome-watch{border-left-color:var(--success)}
.workflow-builder-guided .workflow-outcome-ignore{border-left-color:var(--amber)}
.workflow-builder-guided .if-node-tests{display:none}
.workflow-builder-guided .if-node-branches{margin-top:14px}
.workflow-builder-guided .workflow-port{cursor:crosshair}
.workflow-builder-guided .workflow-port::after{width:9px;height:9px}
.workflow-builder-guided .workflow-inspector{gap:11px}
.workflow-builder-guided .workflow-inspector .inspector-help{margin:0;color:var(--muted);font-size:8px;line-height:1.55}
.workflow-builder-guided .workflow-field-help{color:var(--muted);font-size:7px;line-height:1.45}
.workflow-builder-guided .workflow-inspector select[multiple]{min-height:96px}
.guided-block-actions{display:grid;grid-template-columns:1fr;gap:6px;padding-top:12px;border-top:1px solid var(--line)}
.guided-block-actions .danger{grid-column:1/-1}
.custom-fact-list{display:grid;gap:9px}.custom-fact-row{display:grid;gap:8px;padding:10px;border:1px solid var(--line);background:var(--canvas)}
.custom-fact-row>header{display:flex;align-items:center;justify-content:space-between;gap:8px}.custom-fact-row>header strong{font:750 7px var(--mono);text-transform:uppercase;letter-spacing:.05em}
.custom-fact-row label{gap:4px}.custom-fact-row select[multiple]{min-height:86px}
.inspector-condition-list{display:grid;gap:5px;padding:9px;border:1px solid var(--line);background:var(--canvas)}
.inspector-condition-list small{display:block;color:var(--text);line-height:1.35}
.workflow-template-controls select[data-logic-mode]{min-width:170px;border-color:color-mix(in srgb,#a995ff,transparent 46%)}
.advanced-node-name,.advanced-predicate{display:block;padding:7px 8px;border:1px solid var(--line);background:var(--canvas);font:650 7px/1.45 var(--mono)}

@media(max-width:1120px){.workflow-builder-guided .workflow-builder-body{grid-template-columns:180px minmax(0,1fr) 290px}.workflow-builder-guided .workflow-template-controls select{min-width:210px}.workflow-source-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

@media(max-width:760px){
  .alert-library-tools{grid-template-columns:1fr 1fr}.alert-library-tools>[data-alert-result-count]{text-align:left}
  .zone-source-grid{grid-template-columns:1fr}.zone-source-grid button:last-child:nth-child(odd){grid-column:auto}.zone-source-summary{align-items:flex-start;flex-direction:column}
  .workflow-dialog{width:calc(100vw - 14px);height:calc(100vh - 14px)}.workflow-dialog .operations-form{padding:14px;grid-template-rows:auto auto auto minmax(300px,1fr) auto}
  .simple-alert-fields{grid-template-columns:1fr}.simple-alert-inline{display:grid}.simple-alert-inline label{grid-template-columns:1fr}.simple-alert-step{grid-template-columns:28px 1fr;padding:12px}
  .workflow-builder-guided .workflow-builder-body{display:block}.workflow-builder.awaiting-source .workflow-builder-body{display:none}.workflow-source-grid{grid-template-columns:1fr}.workflow-builder-guided .workflow-palette{grid-template-columns:repeat(2,minmax(0,1fr));max-height:310px}.workflow-builder-guided .workflow-template-controls select{min-width:0;width:100%}.workflow-builder-guided .workflow-toolbar{align-items:flex-start;flex-direction:column}.workflow-builder-guided .workflow-canvas{min-height:500px}
}

/* Alert builder accessibility and multi-source workspace ----------------- */
.workflow-builder-guided{grid-template-rows:auto auto minmax(0,1fr);min-height:560px}
.workflow-dialog .operations-form>label,.workflow-dialog .operations-form>.form-grid-two label{font:700 11px/1.35 var(--mono)}
.workflow-dialog .operations-form>label input,.workflow-dialog .operations-form>label textarea,.workflow-dialog .operations-form>.form-grid-two input,.workflow-dialog .operations-form>.form-grid-two select{min-height:42px;padding:9px 11px;font-size:13px}
.workflow-builder-guided .workflow-toolbar{min-height:76px;padding:12px 16px}
.workflow-builder-guided .workflow-toolbar strong{font-size:14px;line-height:1.3}
.workflow-builder-guided .workflow-toolbar>div:first-child span{font-size:12px;line-height:1.5}
.workflow-builder-guided .workflow-template-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.workflow-builder-guided .workflow-template-controls select{min-width:270px;min-height:40px;padding:8px 10px;font:650 12px var(--mono)}
.workflow-builder-guided .workflow-template-controls .btn{min-height:40px;font-size:12px}
.workflow-zoom-controls{display:inline-grid;grid-template-columns:38px 62px 38px;align-items:center;height:40px;border:1px solid var(--line-strong);background:var(--canvas)}
.workflow-zoom-controls button{height:38px;padding:0;color:var(--text);border:0;border-right:1px solid var(--line);background:transparent;font:750 14px var(--mono);cursor:pointer}
.workflow-zoom-controls button:last-child{border-right:0}.workflow-zoom-controls button:hover,.workflow-zoom-controls button:focus-visible{color:var(--cyan);background:color-mix(in srgb,var(--cyan),transparent 94%);outline:none}
.workflow-source-stage{display:grid;grid-template-columns:260px minmax(0,1fr);align-items:center;gap:18px;min-height:132px;padding:14px 16px;overflow:visible;border-bottom:1px solid var(--line);background:linear-gradient(135deg,color-mix(in srgb,var(--brand),transparent 94%),var(--canvas) 52%)}
.workflow-builder.awaiting-source .workflow-source-stage{display:grid}.workflow-builder.awaiting-source .workflow-builder-body{display:none}
.workflow-source-stage>div:first-child{gap:5px}.workflow-source-stage h3{font-size:16px;line-height:1.25}.workflow-source-stage p{font-size:12px;line-height:1.45}.workflow-source-stage [data-source-count]{color:var(--cyan);font:750 11px var(--mono)}
.workflow-source-grid{display:flex;gap:9px;min-width:0;padding:2px 2px 7px;overflow-x:auto;scrollbar-width:thin}
.workflow-source-grid button{position:relative;flex:0 0 174px;min-height:96px;gap:6px;padding:11px 12px}
.workflow-source-grid button i{font-size:10px}.workflow-source-grid button strong{font-size:13px;line-height:1.25}.workflow-source-grid button small{font-size:11px;line-height:1.4}
.workflow-source-grid button.selected::after{content:"INCLUDED";position:absolute;top:8px;right:8px;color:var(--success);font:800 9px var(--mono);letter-spacing:.05em}
.workflow-source-grid button.active{box-shadow:0 0 0 2px color-mix(in srgb,var(--cyan),transparent 55%);border-color:var(--cyan)}
.workflow-builder-guided .workflow-builder-body{grid-template-columns:270px minmax(0,1fr) 390px}
.workflow-builder-guided .workflow-palette{gap:10px;padding:15px 13px}.workflow-builder-guided .workflow-palette>.eyebrow{font-size:11px}.workflow-builder-guided .workflow-palette>p{font-size:12px;line-height:1.5}
.workflow-builder-guided .workflow-palette>button{min-height:64px;grid-template-columns:43px 1fr;gap:10px;padding:9px 10px}
.workflow-builder-guided .workflow-palette>button i{width:40px;height:36px;font-size:10px}.workflow-builder-guided .workflow-palette>button strong{font-size:13px;line-height:1.25}.workflow-builder-guided .workflow-palette>button small{font-size:11px;line-height:1.35}
.workflow-builder-guided .workflow-palette-help strong{font-size:11px}.workflow-builder-guided .workflow-palette-help span{font-size:11px;line-height:1.5}
.workflow-node{width:250px;min-height:104px;gap:7px;padding:15px 17px}.workflow-node-if{width:300px;min-height:164px;padding:16px 43px 16px 18px}.workflow-node-outcome{width:250px;min-height:108px}
.workflow-node-type{font-size:11px}.workflow-node strong{font-size:15px;line-height:1.35;overflow:visible;text-overflow:clip;white-space:normal}.workflow-node small{font-size:12px;line-height:1.4;overflow:visible;text-overflow:clip;white-space:normal}
.workflow-builder-guided .if-node-tests{display:grid;gap:5px}.if-node-tests span{padding:5px 6px;font-size:10px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.workflow-node-warning{color:var(--amber)!important;font-weight:750}.workflow-node.incompatible{border-color:var(--amber);box-shadow:0 0 0 2px color-mix(in srgb,var(--amber),transparent 78%)}
.if-node-branches{top:42px;right:-39px;gap:48px}.workflow-port{font-size:11px;gap:7px}.workflow-port::after,.workflow-builder-guided .workflow-port::after{width:14px;height:14px}
.workflow-edge{stroke-width:2}.workflow-edge-label{font:800 11px var(--mono);stroke-width:7px}.workflow-edge-hit{stroke-width:20}
.workflow-connect-hint{right:14px;bottom:14px;padding:9px 12px;font:700 12px/1.4 var(--mono)}
.alert-builder-bootstrap-failed{display:grid;place-items:center;min-height:320px;padding:32px;border:2px solid var(--danger);background:color-mix(in srgb,var(--danger),transparent 92%)}
.alert-builder-bootstrap-failed>div{max-width:720px;padding:24px;border:1px solid color-mix(in srgb,var(--danger),transparent 45%);background:var(--surface);font-size:16px;line-height:1.55}
.alert-builder-bootstrap-failed strong{display:block;margin-bottom:8px;color:var(--danger);font-size:20px}
.alert-builder-bootstrap-failed p{margin:0;color:var(--text)}
.workflow-builder-guided .workflow-inspector{gap:14px;padding:19px}.workflow-builder-guided .workflow-inspector>.eyebrow{font-size:11px}.workflow-inspector h3{font-size:17px;line-height:1.3}.workflow-builder-guided .workflow-inspector .inspector-help{font-size:13px;line-height:1.55}
.workflow-inspector label>span{font-size:11px}.workflow-inspector input,.workflow-inspector select{min-height:44px;padding:9px 10px;font-size:13px}.workflow-builder-guided .workflow-field-help{font-size:11px;line-height:1.5}
.inspector-condition-list small{font-size:12px;line-height:1.45}.custom-fact-row>header strong{font-size:11px}.custom-fact-row{gap:11px;padding:13px}.branch-connection-state{font-size:12px}
@media(max-width:1280px){.workflow-builder-guided .workflow-builder-body{grid-template-columns:235px minmax(0,1fr) 340px}.workflow-source-stage{grid-template-columns:220px minmax(0,1fr)}.workflow-source-grid button{flex-basis:160px}}
@media(max-width:900px){.workflow-source-stage{grid-template-columns:1fr}.workflow-builder-guided .workflow-builder-body{display:block}.workflow-builder.awaiting-source .workflow-builder-body{display:none}.workflow-builder-guided .workflow-palette{grid-template-columns:repeat(2,minmax(0,1fr));max-height:360px}.workflow-builder-guided .workflow-canvas{min-height:560px}.workflow-builder-guided .workflow-inspector{max-height:520px}.workflow-toolbar{align-items:flex-start;flex-direction:column}}

/* Rule setup and full-screen builder steps -------------------------------- */
.workflow-dialog .rule-workflow-form{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr);gap:0;padding:0;overflow:hidden}
.rule-step-tabs{min-height:66px;display:flex;align-items:stretch;justify-content:center;gap:14px;padding:9px 58px 9px 18px;border-bottom:1px solid var(--line-strong);background:var(--surface)}
.rule-step-tabs>button{min-width:240px;display:grid;grid-template-columns:36px 1fr;grid-template-rows:auto auto;align-content:center;column-gap:11px;padding:7px 14px;color:var(--muted);border:1px solid transparent;background:transparent;text-align:left;cursor:pointer}
.rule-step-tabs>button>span{grid-row:1/3;width:32px;height:32px;display:grid;place-items:center;align-self:center;color:var(--soft);border:1px solid var(--line-strong);font:800 12px var(--mono)}
.rule-step-tabs>button strong{align-self:end;font-size:13px}.rule-step-tabs>button small{align-self:start;font-size:11px;line-height:1.35}
.rule-step-tabs>button.active{color:var(--text);border-color:color-mix(in srgb,var(--cyan),transparent 50%);background:color-mix(in srgb,var(--cyan),transparent 95%)}
.rule-step-tabs>button.active>span{color:var(--cyan);border-color:var(--cyan)}.rule-step-tabs>button:disabled{cursor:not-allowed;opacity:.45}
.rule-step-tabs>i{align-self:center;color:var(--muted);font:700 16px var(--mono)}
.rule-step-panel{min-height:0}.rule-step-panel[hidden]{display:none!important}
.rule-setup-step{display:grid;place-items:start center;padding:clamp(24px,5vh,64px) 24px;overflow:auto;background:var(--canvas)}
.rule-setup-card{width:min(980px,100%);display:grid;gap:24px;padding:clamp(24px,4vw,46px);border:1px solid var(--line-strong);background:var(--surface);box-shadow:0 20px 70px rgba(0,0,0,.22)}
.rule-setup-card>header{display:grid;gap:7px;padding-bottom:19px;border-bottom:1px solid var(--line)}.rule-setup-card>header h2{margin:0;font-size:27px}.rule-setup-card>header p{max-width:760px;color:var(--muted);font-size:14px;line-height:1.55}
.rule-setup-card .rule-basics{grid-template-columns:2fr 1.15fr .8fr .8fr;gap:14px}.rule-setup-card label{font:750 12px/1.4 var(--mono)}.rule-setup-card .rule-lifecycle-field{grid-column:1/-1}.rule-lifecycle-field small{display:block;margin-top:7px;color:var(--muted);font:500 12px/1.55 var(--sans);text-transform:none;letter-spacing:0}
.rule-setup-card input,.rule-setup-card select,.rule-setup-card textarea{min-height:46px;padding:10px 12px;font-size:14px}.rule-setup-card textarea{min-height:132px;resize:vertical;line-height:1.5}
.rule-guidance-field>small{color:var(--muted);font:500 12px/1.5 Inter,system-ui,sans-serif}
.rule-source-model{display:grid;grid-template-columns:90px 1fr;align-items:start;gap:16px;padding:17px 18px;border:1px solid color-mix(in srgb,var(--cyan),transparent 66%);background:color-mix(in srgb,var(--cyan),transparent 96%)}
.rule-source-model>span{color:var(--cyan);font:800 11px var(--mono);letter-spacing:.06em}.rule-source-model>div{display:grid;gap:5px}.rule-source-model strong{font-size:14px}.rule-source-model p{color:var(--muted);font-size:13px;line-height:1.55}
.rule-setup-card .rule-step-actions{margin-top:2px;padding-top:20px;gap:9px}.rule-step-actions .btn{min-height:44px;font-size:13px}
.rule-builder-step{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:10px;padding:10px 14px 12px;overflow:hidden;background:var(--canvas)}
.rule-builder-step-header{min-height:55px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:4px 4px 5px}.rule-builder-step-header>div{display:grid;gap:2px}.rule-builder-step-header h2{margin:0;font-size:18px}.rule-builder-step-header h2 strong{color:var(--cyan)}
.rule-builder-step-header dl{display:flex;gap:8px;margin:0}.rule-builder-step-header dl>div{min-width:110px;padding:7px 10px;border:1px solid var(--line);background:var(--surface)}.rule-builder-step-header dt{color:var(--muted);font:700 9px var(--mono);text-transform:uppercase}.rule-builder-step-header dd{margin:2px 0 0;color:var(--text);font:750 12px var(--mono)}
.rule-builder-step>.workflow-builder{height:100%;min-height:0}.rule-builder-actions{min-height:54px;display:flex;align-items:center;gap:9px;padding:8px 2px 0;border-top:1px solid var(--line)}.rule-builder-actions .btn{min-height:42px;font-size:12px}
@media(max-width:900px){.rule-step-tabs{justify-content:flex-start;padding-right:50px;overflow-x:auto}.rule-step-tabs>button{min-width:205px}.rule-setup-step{padding:16px}.rule-setup-card{padding:22px}.rule-setup-card .rule-basics{grid-template-columns:1fr 1fr}.rule-builder-step{overflow:auto}.rule-builder-step-header{align-items:flex-start;flex-direction:column}.rule-builder-step-header dl{flex-wrap:wrap}.rule-builder-step>.workflow-builder{min-height:760px}}
@media(max-width:560px){.rule-step-tabs>button{min-width:178px}.rule-step-tabs>button small{display:none}.rule-setup-card .rule-basics{grid-template-columns:1fr}.rule-source-model{grid-template-columns:1fr}.rule-builder-actions{flex-wrap:wrap}.rule-builder-actions .dialog-footer-spacer{display:none}}

/* Canvas-first alert graph and exact connector geometry ------------------ */
.rule-step-tabs{min-height:48px;padding-top:5px;padding-bottom:5px}.rule-step-tabs>button{min-width:200px;grid-template-columns:28px 1fr;column-gap:8px;padding:4px 10px}.rule-step-tabs>button>span{width:26px;height:26px;font-size:10px}.rule-step-tabs>button strong{font-size:11px}.rule-step-tabs>button small{font-size:9px}
.rule-builder-step{grid-template-rows:auto minmax(0,1fr) auto;gap:5px;padding:5px 8px 7px}.rule-builder-step-header{min-height:36px;padding:1px 3px}.rule-builder-step-header>div{display:flex;align-items:baseline;gap:9px}.rule-builder-step-header h2{font-size:14px}.rule-builder-step-header dl>div{min-width:92px;padding:4px 7px}.rule-builder-step-header dt{font-size:7px}.rule-builder-step-header dd{font-size:9px}.rule-builder-actions{min-height:44px;padding-top:5px}.rule-builder-actions .btn{min-height:34px;font-size:10px}
.workflow-builder-guided{--workflow-palette-width:250px;--workflow-inspector-width:350px;grid-template-rows:auto auto minmax(0,1fr);min-height:0}.workflow-builder-guided.palette-collapsed{--workflow-palette-width:76px}.workflow-builder-guided.inspector-collapsed{--workflow-inspector-width:0px}
.workflow-builder-guided .workflow-toolbar{min-height:46px;padding:5px 7px;gap:8px}.workflow-builder-guided .workflow-toolbar>div:first-child{min-width:120px}.workflow-builder-guided .workflow-toolbar>div:first-child strong{font-size:12px}.workflow-builder-guided .workflow-toolbar>div:first-child span{display:none}.workflow-builder-guided .workflow-template-controls{flex-wrap:nowrap;gap:4px;min-width:0}.workflow-builder-guided .workflow-template-controls .btn{min-height:34px;height:34px;padding:0 9px;font-size:10px;white-space:nowrap}.workflow-builder-guided .workflow-template-controls select{min-width:190px;max-width:290px;min-height:34px;height:34px;padding:5px 7px;font-size:10px}.workflow-panel-toggle.active{color:var(--cyan);border-color:var(--cyan);background:color-mix(in srgb,var(--cyan),transparent 92%)}
.workflow-zoom-controls{grid-template-columns:32px 48px 32px;height:34px}.workflow-zoom-controls button{height:32px;font-size:11px}
.workflow-builder-guided.sources-collapsed:not(.awaiting-source) .workflow-source-stage{display:none}.workflow-source-stage{grid-template-columns:220px minmax(0,1fr);gap:12px;min-height:104px;padding:9px 11px}.workflow-source-stage h3{font-size:13px}.workflow-source-stage p{font-size:10px}.workflow-source-grid button{flex-basis:150px;min-height:76px;padding:8px 9px}.workflow-source-grid button strong{font-size:11px}.workflow-source-grid button small{font-size:9px}
.workflow-builder-guided .workflow-builder-body{grid-template-columns:var(--workflow-palette-width) minmax(0,1fr) var(--workflow-inspector-width);min-height:0;transition:grid-template-columns .14s ease}.workflow-builder-guided.inspector-collapsed .workflow-inspector{display:none}.workflow-builder-guided.palette-collapsed .workflow-palette{justify-items:center;gap:6px;padding:8px 7px}.workflow-builder-guided.palette-collapsed .workflow-palette>.eyebrow,.workflow-builder-guided.palette-collapsed .workflow-palette>p,.workflow-builder-guided.palette-collapsed .workflow-palette>button span,.workflow-builder-guided.palette-collapsed .workflow-palette-help{display:none}.workflow-builder-guided.palette-collapsed .workflow-palette>button{width:48px;min-height:44px;display:grid;grid-template-columns:1fr;place-items:center;padding:4px}.workflow-builder-guided.palette-collapsed .workflow-palette>button i{width:36px;height:32px;font-size:8px}
.workflow-surface>[data-graph-nodes]{pointer-events:none}.workflow-surface>[data-graph-nodes]>.workflow-node{pointer-events:auto}.workflow-surface>svg{pointer-events:auto}
.workflow-port::after{content:none!important}.workflow-port{min-height:28px;touch-action:none}.workflow-port-label{display:block;pointer-events:none}.workflow-port-handle{display:block;flex:0 0 18px;width:18px;height:18px;box-sizing:border-box;border:2px solid currentColor;border-radius:50%;background:var(--surface);box-shadow:0 0 0 2px var(--surface);pointer-events:none}.workflow-output-port.connected .workflow-port-handle{background:currentColor}.workflow-output-port.connecting .workflow-port-handle{box-shadow:0 0 0 6px color-mix(in srgb,currentColor,transparent 66%)}
.workflow-input-port{left:-14px;width:28px;height:42px;display:grid;place-items:center;transform:translateY(-50%)}.workflow-input-port .workflow-port-handle{width:18px;height:18px;color:var(--brand-bright);background:var(--canvas)}.workflow-input-port.drop-target .workflow-port-handle,.workflow-builder.is-connecting .workflow-input-port:hover .workflow-port-handle{color:var(--success);background:color-mix(in srgb,var(--success),transparent 75%);box-shadow:0 0 0 7px color-mix(in srgb,var(--success),transparent 78%)}
.if-node-branches{right:-42px}.event-node-output{right:-30px}.workflow-edge,.workflow-edge-label{pointer-events:none}.workflow-edge-hit{stroke-width:24;pointer-events:stroke}.workflow-edge-draft{stroke-width:3;stroke-dasharray:7 5;opacity:.9}.workflow-connect-hint{max-width:62%;font-size:10px}
@media(max-width:1180px){.workflow-builder-guided{--workflow-palette-width:220px;--workflow-inspector-width:310px}.workflow-builder-guided.palette-collapsed{--workflow-palette-width:68px}.workflow-builder-guided .workflow-toolbar>div:first-child{display:none}.workflow-builder-guided .workflow-template-controls select{max-width:220px}.workflow-panel-toggle{padding-right:7px!important;padding-left:7px!important}}
@media(max-width:900px){.rule-step-tabs{min-height:46px}.rule-builder-step{overflow:auto}.rule-builder-step-header{align-items:flex-start;flex-direction:column}.workflow-builder-guided .workflow-toolbar{align-items:flex-start;flex-direction:column}.workflow-builder-guided .workflow-template-controls{flex-wrap:wrap}.workflow-builder-guided .workflow-builder-body{display:block}.workflow-builder-guided .workflow-palette{grid-template-columns:repeat(4,minmax(0,1fr));max-height:300px}.workflow-builder-guided.palette-collapsed .workflow-palette{display:none}.workflow-builder-guided .workflow-canvas{min-height:580px}.workflow-builder-guided .workflow-inspector{max-height:500px}}

/* Explicit analytics axes ------------------------------------------------- */
.analytics-chart{height:330px;padding:12px 14px 8px}
.analytics-chart-grid{stroke:var(--line);stroke-width:1}
.analytics-chart-axis{stroke:var(--line-strong);stroke-width:1.2}
.analytics-chart-tick{fill:var(--muted);font:8px var(--mono)}
.analytics-chart-title{fill:var(--soft);font:650 8px var(--mono);letter-spacing:.02em}
.analytics-bar-axis{display:grid;grid-template-columns:minmax(100px,1fr) 1.6fr 55px;align-items:end;gap:10px;padding-bottom:7px;color:var(--muted);border-bottom:1px solid var(--line);font:650 7px var(--mono);text-transform:uppercase}
.analytics-bar-axis>span,.analytics-bar-axis>b{font:inherit}
.analytics-bar-axis>b{text-align:right}
.analytics-bar-scale{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px}
.analytics-bar-scale:before{grid-column:1/-1;grid-row:1;height:1px;background:var(--line-strong);content:""}
.analytics-bar-scale span,.analytics-bar-scale strong{position:relative;z-index:1;grid-row:1;padding:0 2px;background:var(--panel);font:inherit}
.analytics-bar-scale strong{text-align:center}
.analytics-hour-chart{height:260px;display:block;padding:16px 18px 12px}
.analytics-hour-chart>.analytics-hour-frame{height:100%;display:grid;grid-template-columns:20px 42px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 18px;align-items:stretch}
.analytics-hour-y-title{grid-column:1;grid-row:1;align-self:center;justify-self:center;color:var(--muted);font:650 7px var(--mono);transform:rotate(-90deg);white-space:nowrap}
.analytics-hour-y-ticks{grid-column:2;grid-row:1;display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;padding:0 8px 18px 0;color:var(--muted);font:650 7px var(--mono)}
.analytics-hour-plot{position:relative;grid-column:3;grid-row:1;display:grid;grid-template-columns:repeat(24,1fr);align-items:end;gap:4px;border-left:1px solid var(--line-strong);background:repeating-linear-gradient(to top,transparent 0,transparent calc(50% - 1px),var(--line) 50%,transparent calc(50% + 1px))}
.analytics-hour-plot:after{position:absolute;right:0;bottom:18px;left:0;height:1px;background:var(--line-strong);content:""}
.analytics-hour-plot>div{height:100%;display:grid;grid-template-rows:1fr 18px;align-items:end}
.analytics-hour-plot i{z-index:1;display:block;height:var(--hour-height);min-height:2px;background:linear-gradient(180deg,var(--brand-bright),var(--brand))}
.analytics-hour-plot span{padding-top:5px;color:var(--muted);font:600 7px var(--mono);text-align:center}
.analytics-hour-x-title{grid-column:3;grid-row:2;align-self:end;justify-self:center;color:var(--muted);font:650 7px var(--mono)}
.analytics-report-jobs{margin-top:9px}.analytics-report-jobs>header>span{max-width:360px;text-align:right}.analytics-report-jobs>div{display:grid}.analytics-report-job{display:grid;grid-template-columns:minmax(240px,1fr) 90px minmax(110px,.35fr) 150px 110px;align-items:center;gap:14px;min-height:68px;padding:12px 16px;border-bottom:1px solid var(--line)}.analytics-report-job:last-child{border-bottom:0}.analytics-report-job>div:first-child{display:grid;gap:4px;min-width:0}.analytics-report-job strong{overflow:hidden;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.analytics-report-job small{color:var(--muted);font-size:8px}.analytics-report-job em{color:var(--danger);font-size:8px;font-style:normal}.analytics-report-status{padding:5px 7px;color:var(--muted);border:1px solid var(--line);font:700 7px var(--mono);text-align:center;text-transform:uppercase}.analytics-report-status.status-completed{color:var(--success);border-color:color-mix(in srgb,var(--success) 50%,var(--line))}.analytics-report-status.status-failed{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 50%,var(--line))}.analytics-report-progress{height:5px;overflow:hidden;background:var(--canvas)}.analytics-report-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),var(--brand-bright))}.analytics-report-meta,.analytics-report-wait{color:var(--muted);font-size:8px}.analytics-report-dialog{width:min(720px,calc(100vw - 28px))}.analytics-report-scope{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin:14px 0;background:var(--line)}.analytics-report-scope>span{display:grid;gap:5px;padding:13px;background:var(--panel)}.analytics-report-scope small{color:var(--muted);font:700 7px var(--mono);text-transform:uppercase}.analytics-report-scope strong{font-size:10px}.analytics-report-warning{grid-column:1/-1;margin:0;padding:12px;color:var(--warning);background:var(--panel);font-size:9px;line-height:1.5}.analytics-use-watermark{grid-column:1/-1;justify-self:start;margin:10px}
@media(max-width:820px){.analytics-report-job{grid-template-columns:1fr 80px}.analytics-report-progress,.analytics-report-meta{grid-column:1/-1}.analytics-report-scope{grid-template-columns:1fr}}

/* Customer alert-gate health stays visible on the primary management dashboard. */
.ops-alert-gate{position:relative;min-height:126px;padding:20px 22px;border:1px solid var(--line);border-left:3px solid var(--muted);background:var(--surface);color:var(--text);display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto 6px;align-items:start;gap:14px 24px;text-decoration:none}.ops-alert-gate:hover{border-color:var(--line-strong);border-left-color:var(--cyan)}.ops-alert-gate>div:first-child{display:grid;gap:3px}.ops-alert-gate h2{margin:0;font-size:16px}.ops-alert-gate p{max-width:780px;margin:0;color:var(--muted);font-size:9px;line-height:1.55}.ops-alert-gate-state{display:grid;justify-items:end;gap:3px}.ops-alert-gate-state strong{font:800 9px var(--mono);letter-spacing:.06em;text-transform:uppercase}.ops-alert-gate-state span,.ops-alert-gate-link{color:var(--muted);font-size:8px}.ops-alert-gate-progress{grid-column:1/-1;height:6px;background:var(--canvas);overflow:hidden}.ops-alert-gate-progress i{display:block;height:100%;background:var(--cyan)}.ops-alert-gate-link{position:absolute;right:22px;bottom:19px}.ops-alert-gate.health-healthy{border-left-color:var(--success)}.ops-alert-gate.health-healthy .ops-alert-gate-state strong{color:var(--success)}.ops-alert-gate.health-failed{border-left-color:var(--danger);background:color-mix(in srgb,var(--danger) 5%,var(--surface))}.ops-alert-gate.health-failed .ops-alert-gate-state strong{color:var(--danger)}.ops-alert-gate.health-running,.ops-alert-gate.health-pending{border-left-color:var(--cyan)}.ops-alert-gate.health-running .ops-alert-gate-state strong,.ops-alert-gate.health-pending .ops-alert-gate-state strong{color:var(--cyan)}
@media(max-width:720px){.ops-alert-gate{grid-template-columns:1fr;padding-bottom:42px}.ops-alert-gate-state{justify-items:start}.ops-alert-gate-link{right:auto;left:22px}}

/* Global feedback and support -------------------------------------------- */
.ops-feedback-trigger{min-height:38px;display:inline-flex;align-items:center;gap:8px;padding:5px 10px 5px 6px;color:var(--soft);border:1px solid var(--line);border-radius:3px;background:var(--surface);cursor:pointer;transition:color .14s ease,border-color .14s ease,background .14s ease}
.ops-feedback-trigger>span{min-width:27px;height:25px;display:grid;place-items:center;padding:0 4px;color:var(--cyan);border:1px solid color-mix(in srgb,var(--cyan),transparent 64%);border-radius:2px;background:color-mix(in srgb,var(--cyan),transparent 93%);font:800 7px var(--mono)}
.ops-feedback-trigger>strong{font:700 8px var(--mono);letter-spacing:.02em;white-space:nowrap}
.ops-feedback-trigger:hover,.ops-feedback-trigger:focus-visible{color:var(--text);border-color:color-mix(in srgb,var(--cyan),transparent 45%);background:var(--surface-bright);outline:none}
.support-feedback-dialog{width:min(720px,calc(100vw - 28px));max-height:calc(100vh - 28px);padding:0;overflow:hidden}
.support-feedback-form{display:grid;gap:16px;max-height:calc(100vh - 30px);padding:24px;overflow:auto;background:var(--surface)}
.support-feedback-form>header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:15px;border-bottom:1px solid var(--line)}
.support-feedback-form>header h2{margin:6px 0 4px;font-size:20px}.support-feedback-form>header p{max-width:540px;color:var(--muted);font-size:8px;line-height:1.55}
.support-feedback-form>header button{width:34px;height:34px;flex:0 0 auto;color:var(--soft);border:1px solid var(--line);background:transparent;font-size:18px;cursor:pointer}
.support-feedback-categories{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0;padding:0;border:0}.support-feedback-categories legend{margin-bottom:8px;color:var(--muted);font:700 7px var(--mono);letter-spacing:.05em;text-transform:uppercase}.support-feedback-categories label{position:relative;cursor:pointer}.support-feedback-categories input{position:absolute;opacity:0}.support-feedback-categories label>span{min-height:64px;display:grid;align-content:center;gap:4px;padding:11px 12px;border:1px solid var(--line);background:var(--canvas)}.support-feedback-categories strong{font-size:9px}.support-feedback-categories small{color:var(--muted);font-size:7px}.support-feedback-categories input:checked+span{border-color:color-mix(in srgb,var(--cyan),transparent 40%);background:color-mix(in srgb,var(--cyan),transparent 94%);box-shadow:inset 0 -2px var(--cyan)}
.support-feedback-message{position:relative;display:grid;gap:6px;color:var(--muted);font:700 7px var(--mono);letter-spacing:.04em;text-transform:uppercase}.support-feedback-message textarea{width:100%;min-height:130px;padding:11px 12px;resize:vertical;color:var(--text);border:1px solid var(--line-strong);background:var(--canvas);font:400 10px/1.55 Inter,system-ui,sans-serif;text-transform:none}.support-feedback-message>small{justify-self:end;color:var(--muted);font:600 7px var(--mono);letter-spacing:0}.support-feedback-message>small b{color:var(--soft)}
.support-capture-panel{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:13px;border:1px solid var(--line);background:var(--canvas)}.support-capture-panel>div{display:grid;gap:4px}.support-capture-panel strong{font-size:9px}.support-capture-panel p{max-width:500px;color:var(--muted);font-size:7px;line-height:1.55}.support-capture-panel figure{grid-column:1/-1;margin:0;overflow:hidden;border:1px solid var(--line-strong);background:#080a0b}.support-capture-panel figure[hidden]{display:none}.support-capture-panel img{width:100%;max-height:300px;display:block;object-fit:contain}.support-capture-panel figcaption{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;color:var(--muted);border-top:1px solid var(--line);font:650 7px var(--mono)}.support-capture-panel figcaption button{padding:4px 6px;color:var(--danger);border:0;background:transparent;font:700 7px var(--mono)}
.support-feedback-status{margin:0;padding:10px 12px;color:var(--cyan);border:1px solid color-mix(in srgb,var(--cyan),transparent 58%);background:color-mix(in srgb,var(--cyan),transparent 95%);font-size:8px;line-height:1.5}.support-feedback-status.error{color:var(--danger);border-color:color-mix(in srgb,var(--danger),transparent 58%);background:color-mix(in srgb,var(--danger),transparent 95%)}.support-feedback-status.success{color:var(--success);border-color:color-mix(in srgb,var(--success),transparent 58%);background:color-mix(in srgb,var(--success),transparent 95%)}
.support-direct-contact{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);background:var(--canvas)}.support-direct-contact>span{width:30px;height:30px;display:grid;place-items:center;color:var(--brand-bright);border:1px solid color-mix(in srgb,var(--brand-bright),transparent 58%);font:800 9px var(--mono)}.support-direct-contact p{display:grid;gap:3px}.support-direct-contact strong{font-size:9px}.support-direct-contact small{color:var(--muted);font-size:8px}.support-direct-contact a{color:var(--cyan)}
.support-feedback-form>footer{display:flex;justify-content:flex-end;gap:8px;padding-top:14px;border-top:1px solid var(--line)}
.support-feedback-dialog.capture-in-progress{opacity:0!important;pointer-events:none}.support-feedback-dialog.capture-in-progress::backdrop{background:transparent!important;backdrop-filter:none!important}
@media(max-width:940px){.ops-feedback-trigger>strong{display:none}.ops-feedback-trigger{padding-right:6px}}
@media(max-width:600px){.support-feedback-form{padding:17px}.support-feedback-categories{grid-template-columns:1fr}.support-capture-panel{grid-template-columns:1fr}.support-capture-panel>button{justify-self:start}.support-feedback-form>footer{display:grid;grid-template-columns:1fr 1fr}.support-feedback-form>footer button{width:100%}}
