@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@500;600;700&family=Source+Sans+3:wght@400;500;600;700&display=swap");

/* Theme A (Ops Console). Colors live here only; components use the variables. */
:root,
html[data-theme="dark"] {
  color-scheme: dark;
  --font-sans: "Source Sans 3", "Segoe UI", system-ui, sans-serif;
  /* No typewriter face: data uses the text face with even-width figures. */
  --font-mono: "Source Sans 3", "Segoe UI", system-ui, sans-serif;
  --font-heading: "Poppins", "Source Sans 3", "Segoe UI", sans-serif;
  --radius-control: 8px;
  --radius-inner: 10px;
  --radius-card: 12px;
  --bg: #0b0e13;
  --panel: #11161d;
  --surface: #0f1319;
  --card-raised: #161d26;
  --chip: #161d26;
  --line: #1f2630;
  --border-control: #2a323d;
  --row-divider: #1a2029;
  --row-hover: #131922;
  --text: #e6eaf0;
  --text-secondary: #b4bcc8;
  --text-data: #c5ccd6;
  --muted: #9aa4b2;
  --text-subtle: #7d8796;
  --accent: #d63a4f;
  --on-accent: #ffffff;
  --link: #f2808d;
  --link-hover: #ffb0b9;
  --hover: #1c232d;
  --inset: #0f1319;
  --inset-deep: #0d1117;
  --shadow: rgba(0, 0, 0, 0.5);
  --danger: #ff7a88;
  --danger-bg: #3a1a20;
  --danger-text: #ff7a88;
  --info: #5b9cf6;
  --success: #3dd68c;
  --meter: #2dd4bf;
  --meter-track: #1c232d;
  --voice-out: #3d8bfd;
  --voice-in: #3dd6c6;
  --sms: #b08d57;
  --unmapped: #c45c5c;
  --cdr: #8b93a7;
  --scrollbar-thumb: #2a323d;
  --scrollbar-thumb-hover: #3a4452;
  --scrollbar-track: #0f1319;
}

html[data-theme="light"] {
  color-scheme: light;
  --bg: #f4f6f9;
  --panel: #ffffff;
  --surface: #ffffff;
  --card-raised: #f7f9fb;
  --chip: #f2f5f8;
  --line: #dde2e8;
  --border-control: #d3d9e1;
  --row-divider: #edf0f4;
  --row-hover: #f8fafc;
  --text: #111720;
  --text-secondary: #3f4a5a;
  --text-data: #2b3442;
  --muted: #5d6878;
  --text-subtle: #6a7586;
  --accent: #d63a4f;
  --on-accent: #ffffff;
  --link: #b8283c;
  --link-hover: #8e1b2c;
  --hover: #edf0f4;
  --inset: #f2f5f8;
  --inset-deep: #e7ebf0;
  --shadow: rgba(17, 23, 32, 0.12);
  --danger: #c0283e;
  --danger-bg: #fce8eb;
  --danger-text: #c0283e;
  --info: #2f6fdb;
  --success: #1e9e5a;
  --meter: #0e8f80;
  --meter-track: #e7ebf0;
  --voice-out: #2f6fed;
  --voice-in: #1aa89a;
  --sms: #9a7540;
  --unmapped: #b04545;
  --cdr: #6b7385;
  --scrollbar-thumb: #c3cad4;
  --scrollbar-thumb-hover: #9aa4b2;
  --scrollbar-track: #f4f6f9;
}

/* Thin themed scrollbars (Firefox + Chromium/Edge). */
* {
  scrollbar-width: thin;
  scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
}
*::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
*::-webkit-scrollbar-track {
  background: var(--scrollbar-track);
  border-radius: 8px;
}
*::-webkit-scrollbar-thumb {
  background: var(--scrollbar-thumb);
  border-radius: 8px;
  border: 2px solid var(--scrollbar-track);
  background-clip: padding-box;
}
*::-webkit-scrollbar-thumb:hover {
  background: var(--scrollbar-thumb-hover);
  border: 2px solid var(--scrollbar-track);
  background-clip: padding-box;
}
*::-webkit-scrollbar-corner {
  background: var(--scrollbar-track);
}
*::-webkit-scrollbar-button {
  display: none;
  width: 0;
  height: 0;
}

html[data-theme="light"] img.logo {
  /* Reverse (white) wordmark → dark on light panels; keeps brand red readable. */
  filter: invert(1) hue-rotate(180deg);
}

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; background: var(--bg); color: var(--text); font: 13px/1.4 var(--font-sans); }
body.map-page {
  display: grid;
  grid-template-columns: var(--rail-width, 320px) 14px 1fr;
  grid-template-rows: auto 1fr;
  grid-template-areas:
    "top top top"
    "rail handle main";
}
html.aux-map body.map-page {
  grid-template-rows: 1fr;
  grid-template-areas:
    "rail handle main";
}
html.aux-map body.map-page.rail-hidden {
  grid-template-areas: "main";
}
html.aux-map .top,
html.aux-map #export-reminder,
html.aux-map [data-rail-section="controls"],
html.aux-map [data-rail-section="filter"],
html.aux-map [data-rail-section="map-items"],
html.aux-map [data-rail-section="csl"],
html.aux-map [data-rail-section="files"],
html.aux-map .horizon-aux-map-btn,
html.aux-map .subscriber-panel,
html.aux-map .messages-panel,
html.aux-map .timeline-panel,
html.aux-map .commonality-panel,
html.aux-map .number-search-panel,
html.aux-map .ask-records-panel,
html.aux-map .map-timeline {
  display: none !important;
}
html.aux-map .rail-records {
  flex: 1 1 auto;
  min-height: 0;
}
body.home {
  display: flex;
  flex-direction: column;
}

.top {
  grid-area: top;
  display: flex;
  align-items: center;
  gap: 16px;
  min-height: 64px;
  padding: 8px 20px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  overflow: visible;
}
.header-hover-strip {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 10px;
  z-index: 2400;
}
.header-icon-cluster {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.header-icon-btn,
.header-pin-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--text);
  cursor: pointer;
  flex-shrink: 0;
}
.header-icon-btn:hover,
.header-pin-btn:hover {
  background: var(--inset-deep, #f2f2f2);
}
.header-pin-btn[aria-pressed="false"] {
  color: var(--muted);
  opacity: 0.75;
}
.header-pin-btn[aria-pressed="false"] .header-pin-icon {
  transform: rotate(45deg);
}
.header-pin-icon,
.header-save-icon {
  width: 12px;
  height: 12px;
  display: block;
}
.header-pin-icon {
  width: 9px;
  height: 9px;
  transition: transform 0.15s ease;
}
body.map-page.header-unpinned {
  grid-template-rows: 0 1fr;
}
body.map-page.header-unpinned .top {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 2500;
  transform: translateY(-100%);
  transition: transform 0.2s ease;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.18);
}
body.map-page.header-unpinned.header-revealed .top {
  transform: translateY(0);
}
body.map-page.header-unpinned .header-hover-strip {
  display: block;
}
html.header-unpinned-boot body.map-page {
  grid-template-rows: 0 1fr;
}
html.header-unpinned-boot body.map-page .top {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 2500;
  transform: translateY(-100%);
}
.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-shrink: 0;
}
.header-right {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 16px;
  flex-shrink: 0;
}
/* Map header tracks the window. Search and case status yield first.
   On a laptop the menus move to a second row so Cases and Logout stay in view. */
body.map-page .top {
  flex-wrap: wrap;
  row-gap: 8px;
  min-width: 0;
}
body.map-page .header-actions {
  flex: 0 0 auto;
  min-width: 0;
}
body.map-page .header-actions > button.secondary,
body.map-page .header-actions > .header-menu,
body.map-page .header-actions .header-menu-toggle {
  flex: 0 0 auto;
  white-space: nowrap;
}
body.map-page .header-right {
  flex: 0 1 auto;
  min-width: 0;
  max-width: 100%;
}
body.map-page .header-right > .nav-btn,
body.map-page .header-right > button.secondary,
body.map-page .header-right > .header-icon-cluster {
  flex: 0 0 auto;
}
.theme-switch {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
  cursor: pointer;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  user-select: none;
  white-space: nowrap;
  position: relative;
}
.theme-switch input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}
.theme-switch-ui {
  position: relative;
  display: inline-block;
  width: 32px;
  height: 18px;
  flex-shrink: 0;
  border-radius: 999px;
  background: var(--inset);
  border: 1px solid var(--line);
  vertical-align: middle;
}
.theme-switch-ui::after {
  content: "";
  position: absolute;
  top: 1px;
  left: 1px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--text);
  transition: transform 0.15s ease;
}
.theme-switch input:checked + .theme-switch-ui {
  background: color-mix(in srgb, var(--accent) 70%, var(--panel));
  border-color: var(--accent);
}
.theme-switch input:checked + .theme-switch-ui::after {
  transform: translateX(14px);
  background: var(--on-accent);
}
.theme-switch input:focus-visible + .theme-switch-ui {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
.header-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  min-width: 0;
}
.top .header-actions > button.secondary,
.top .header-actions .header-menu-toggle,
.top .header-right .nav-btn,
.top .header-right .header-menu-toggle,
.top .header-right > button.secondary {
  padding: 5px 8px;
  font-size: 12px;
}
#open-upload {
  background: color-mix(in srgb, var(--accent) 28%, var(--panel));
  border-color: var(--accent);
  font-weight: 700;
}
#open-upload:hover {
  background: color-mix(in srgb, var(--accent) 42%, var(--panel));
}
#open-report-issue {
  background: color-mix(in srgb, var(--info) 16%, var(--panel));
  border-color: var(--info);
  color: var(--info);
  font-weight: 650;
}
#open-report-issue:hover {
  background: color-mix(in srgb, var(--info) 28%, var(--panel));
}
.header-location-search {
  display: flex;
  align-items: center;
  margin-left: 6px;
  flex: 0 1 286px;
  width: 286px;
  min-width: 140px;
  max-width: 286px;
}
.header-location-search input {
  width: 100%;
  min-width: 0;
  height: 28px;
  margin: 0;
  padding: 4px 8px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--inset, var(--bg));
  color: var(--text);
  font: 12px/1.2 var(--font-sans);
}
.header-location-search input::placeholder {
  color: var(--muted);
}
.header-location-search input:focus {
  outline: 1px solid var(--accent);
  outline-offset: 1px;
}
.header-location-pin {
  background: transparent;
  border: 0;
  cursor: context-menu;
}
.header-location-pin-dot {
  display: block;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--accent);
  border: 2px solid var(--on-accent);
  box-shadow: 0 0 0 1px var(--accent);
}
.header-menu {
  position: relative;
}
.header-menu-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.header-menu-caret {
  width: 0;
  height: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 5px solid currentColor;
  opacity: 0.75;
}
.header-menu.open .header-menu-caret {
  transform: rotate(180deg);
}
.header-menu-panel {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 1200;
  min-width: 200px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  box-shadow: 0 10px 28px var(--shadow);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.header-menu-panel[hidden] {
  display: none !important;
}
.header-menu-panel button {
  display: block;
  width: 100%;
  text-align: left;
  background: transparent;
  color: var(--text);
  border: 0;
  border-radius: 4px;
  padding: 8px 10px;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}
/* display:block above otherwise overrides [hidden] (e.g. CloudRF when not configured). */
.header-menu-panel button[hidden] {
  display: none !important;
}
.header-menu-panel button:hover,
.header-menu-panel button:focus-visible {
  background: color-mix(in srgb, var(--accent) 16%, var(--bg));
  outline: none;
}
.header-menu-panel button:disabled {
  opacity: 0.45;
  cursor: default;
}
.header-menu-panel button:disabled:hover,
.header-menu-panel button:disabled:focus-visible {
  background: transparent;
}
.header-menu-panel a {
  display: block;
  width: 100%;
  box-sizing: border-box;
  text-align: left;
  background: transparent;
  color: var(--text);
  border: 0;
  border-radius: 4px;
  padding: 8px 10px;
  font: inherit;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
}
.header-menu-panel a:hover,
.header-menu-panel a:focus-visible,
.header-menu-panel a[aria-current="page"] {
  background: color-mix(in srgb, var(--accent) 16%, var(--bg));
  outline: none;
}
.header-right .header-menu-panel {
  left: auto;
  right: 0;
}
.display-defaults-callout {
  position: fixed;
  z-index: 1400;
  display: flex;
  flex-direction: column;
  width: min(360px, calc(100vw - 16px));
  max-height: min(78vh, 760px);
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
  color: var(--text);
  box-shadow: 0 16px 40px var(--shadow);
}
.display-defaults-callout[hidden] {
  display: none !important;
}
.display-defaults-head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  flex: 0 0 auto;
  padding: 14px 14px 8px;
}
.display-defaults-head h2 {
  margin: 0;
  font-size: 16px;
  font-weight: 650;
  letter-spacing: 0;
  text-transform: none;
}
.display-defaults-head p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}
.display-defaults-close {
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
}
.display-defaults-close:hover {
  color: var(--text);
}
.display-defaults-body {
  overflow: auto;
  flex: 1 1 auto;
  padding: 4px 14px 8px;
  min-height: 0;
}
.display-defaults-callout .slider {
  display: block;
  margin: 0 0 14px;
  color: var(--text);
  font-size: 13px;
  font-weight: 500;
}
.display-defaults-callout .slider span {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 400;
}
.display-defaults-callout .slider .control-tune-row {
  display: flex;
  align-items: center;
  gap: 8px;
  width: auto;
  margin-top: 6px;
}
.display-defaults-callout .slider .control-tune-row input[type="number"] {
  width: 96px;
  flex: 0 0 96px;
  margin: 0;
  padding: 6px 8px;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  font-size: 13px;
}
.display-defaults-callout .slider .control-tune-row span {
  display: inline;
  width: auto;
  margin-top: 0;
  color: var(--muted);
  font-size: 13px;
}
.display-defaults-callout .slider .control-tune-row .wedge-angle-reset {
  display: inline;
  margin-top: 0;
}
.display-defaults-callout .wedge-angle-reset:disabled {
  opacity: 0.4;
  cursor: default;
}
.display-defaults-actions {
  flex: 0 0 auto;
  padding: 8px 14px 12px;
  border-top: 1px solid var(--line);
}
.display-defaults-status {
  min-height: 1.2em;
  margin: 0 0 8px;
  color: var(--muted);
  font-size: 12px;
}
.display-defaults-status.is-error {
  color: var(--danger, var(--accent));
}
.display-defaults-buttons {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}
.header-menu-panel .header-menu-footer {
  margin-top: 4px;
  border-top: 1px solid var(--line);
  border-radius: 0 0 4px 4px;
}
.header-menu-group {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.header-menu-group + .header-menu-group {
  margin-top: 4px;
  padding-top: 6px;
  border-top: 1px solid var(--line);
}
.header-menu-label {
  padding: 6px 10px 2px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.header-menu-sub {
  position: relative;
}
.header-menu-sub-toggle {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
}
.header-menu-sub-caret {
  width: 0;
  height: 0;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-left: 5px solid currentColor;
  opacity: 0.7;
  flex: 0 0 auto;
}
.header-menu-sub.open .header-menu-sub-caret {
  transform: rotate(90deg);
}
.header-menu-subpanel {
  margin: 2px 0 4px 10px;
  padding: 2px;
  border-left: 2px solid var(--line);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.header-menu-subpanel[hidden] {
  display: none !important;
}
.header-menu-group button,
.header-menu-group a {
  padding-left: 18px;
}
.header-menu-theme {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  margin: 0;
  padding: 8px 10px 8px 18px;
  border-radius: 4px;
  color: var(--text);
  font-weight: 600;
  cursor: pointer;
  user-select: none;
}
.header-menu-theme:hover,
.header-menu-theme:focus-within {
  background: color-mix(in srgb, var(--accent) 16%, var(--bg));
}
.header-menu-theme .theme-switch {
  color: inherit;
  font-size: inherit;
  letter-spacing: 0;
  text-transform: none;
}
.logo {
  height: 44px;
  width: auto;
  display: block;
  background: transparent;
}
.brand-text h1,
.brand h1 { margin: 0; font-size: 18px; font-weight: 650; letter-spacing: 0.04em; }
.sub { margin: 2px 0 0; color: var(--muted); }
.nav-btn {
  display: inline-block;
  background: transparent;
  color: var(--text);
  border: 1px solid var(--line);
  padding: 6px 12px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  font: inherit;
}
.nav-btn[hidden],
[data-admin-only][hidden] {
  display: none !important;
}
button.nav-btn:disabled {
  opacity: 0.6;
  cursor: wait;
}
.meta {
  color: var(--muted);
  text-align: right;
  font-size: 12px;
  line-height: 1.3;
}
body.map-page .header-right .meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1px;
  min-width: 0;
  max-width: min(42rem, 40vw);
  overflow: hidden;
}
body.map-page .header-right .meta-line {
  display: block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
@media (max-width: 1820px) {
  body.map-page .brand {
    order: 1;
  }
  body.map-page .header-right {
    order: 2;
    margin-left: auto;
  }
  body.map-page .header-actions {
    order: 3;
    flex: 1 1 100%;
    flex-wrap: wrap;
    row-gap: 6px;
  }
  body.map-page .header-location-search {
    flex: 0 1 286px;
    max-width: 286px;
  }
  body.map-page .header-right .meta {
    max-width: min(42rem, 46vw);
  }
}
@media (max-width: 1100px) {
  body.map-page .top {
    gap: 8px;
    padding-left: 12px;
    padding-right: 12px;
  }
  body.map-page .logo {
    height: 36px;
  }
  body.map-page .header-right {
    gap: 8px;
  }
  body.map-page .header-right .meta {
    max-width: min(42rem, 34vw);
  }
}

.rail {
  grid-area: rail;
  border-right: 0;
  padding: 0;
  overflow: hidden;
  background: var(--panel);
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.rail-records {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  padding: 12px 16px 8px;
}
.rail-records > .rail-section-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  position: relative;
}
#record-tree {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}
.rail-records > .rail-section-body > #warnings:empty {
  display: none;
  margin: 0;
}
.record-tree-drop {
  position: absolute;
  inset: 0;
  z-index: 4;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  border-radius: 6px;
  color: var(--accent);
  font-size: 13px;
  letter-spacing: 0.04em;
  pointer-events: none;
  opacity: 0;
  user-select: none;
}
.record-tree-drop.is-file-drop {
  opacity: 1;
  box-shadow: inset 0 0 0 2px var(--accent);
  background: color-mix(in srgb, var(--panel) 88%, var(--accent));
}
.support-request {
  flex: 0 0 auto;
  padding: 10px 12px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--card-raised);
  user-select: text;
}
.support-request-heading {
  margin: 0 0 8px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.support-request-kinds {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
}
.support-request label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.support-request-kinds label {
  flex-direction: row;
  align-items: center;
  gap: 6px;
  margin: 0;
  color: var(--text);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}
.support-request-kinds input {
  width: auto;
  margin: 0;
}
.support-request input[type="text"],
.support-request textarea {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 6px 8px;
  border: 1px solid var(--border-control);
  border-radius: 4px;
  background: var(--inset);
  color: var(--text);
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
}
.support-request textarea {
  resize: vertical;
  min-height: 64px;
}
.support-request [hidden] {
  display: none !important;
}
.support-request-status {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
  letter-spacing: 0;
  text-transform: none;
}
.support-request-status.is-error {
  color: var(--danger-text);
}
.support-request-status.is-ok {
  color: var(--success);
}
#report-issue-modal {
  align-items: flex-start;
  justify-content: center;
  overflow: auto;
  padding: 24px 16px 32px;
}
#report-issue-modal .report-issue-card {
  width: min(480px, calc(100vw - 48px));
  max-height: calc(100vh - 48px);
  min-height: 0;
  min-width: 0;
  margin: 0 auto;
  flex: 0 0 auto;
  overflow: auto;
  gap: 10px;
}
.report-issue-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.report-issue-head h3 {
  margin: 0;
}
.modal-card .support-request {
  padding: 0;
  border: 0;
  background: transparent;
  min-width: 0;
  max-width: 100%;
}
.support-screenshot {
  margin-top: 10px;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
}
.support-screenshot-label {
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.support-screenshot-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 6px;
}
.support-screenshot-note {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 12px;
  letter-spacing: 0;
  text-transform: none;
  font-weight: 400;
}
.support-screenshot-preview {
  display: block;
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  height: 168px;
  margin-top: 8px;
  object-fit: contain;
  object-position: center top;
  background: var(--inset);
  border: 1px solid var(--line);
  border-radius: 4px;
}
.support-request button[type="submit"] {
  width: 100%;
  margin-top: 10px;
}
.support-request button[type="submit"]:disabled {
  opacity: 0.6;
  cursor: default;
}
.rail-records-foot {
  display: flex;
  justify-content: flex-end;
  flex: 0 0 auto;
  padding-top: 6px;
}
.rail-records.collapsed .rail-records-foot {
  display: none;
}
.rail-map-items,
.rail-filter,
.rail-controls {
  flex: 0 1 auto;
  max-height: 48%;
  overflow: auto;
  padding: 12px 16px 12px;
  border-top: 1px solid var(--line);
}
.rail-files {
  flex: 0 1 auto;
  max-height: 32%;
  overflow: auto;
  padding: 12px 16px 16px;
  border-top: 1px solid var(--line);
}
.rail-records.collapsed,
.rail-map-items.collapsed,
.rail-filter.collapsed,
.rail-controls.collapsed,
.rail-csl.collapsed,
.rail-files.collapsed {
  flex: 0 0 auto;
  max-height: none;
  overflow: hidden;
}
.rail-records.collapsed ~ .rail-map-items:not(.collapsed),
.rail-records.collapsed ~ .rail-map-items.collapsed ~ .rail-filter:not(.collapsed),
.rail-records.collapsed ~ .rail-filter:not(.collapsed),
.rail-records.collapsed ~ .rail-map-items.collapsed ~ .rail-filter.collapsed ~ .rail-controls:not(.collapsed),
.rail-records.collapsed ~ .rail-filter.collapsed ~ .rail-controls:not(.collapsed),
.rail-records.collapsed ~ .rail-controls:not(.collapsed) {
  flex: 1 1 auto;
  max-height: none;
}
.rail-records.collapsed ~ .rail-filter.collapsed ~ .rail-controls.collapsed ~ .rail-csl:not(.collapsed),
.rail-records.collapsed ~ .rail-controls.collapsed ~ .rail-csl:not(.collapsed),
.rail-records.collapsed ~ .rail-filter.collapsed ~ .rail-controls.collapsed ~ .rail-csl.collapsed ~ .rail-files:not(.collapsed),
.rail-records.collapsed ~ .rail-controls.collapsed ~ .rail-csl.collapsed ~ .rail-files:not(.collapsed),
.rail-records.collapsed ~ .rail-files:not(.collapsed) {
  flex: 1 1 auto;
  max-height: none;
}
.rail-csl {
  flex: 0 1 auto;
  max-height: 40%;
  overflow: auto;
  padding: 12px 16px 12px;
  border-top: 1px solid var(--line);
}
.rail-csl:not(.collapsed) {
  flex: 1 1 auto;
  max-height: none;
}
.csl-empty,
.records-empty {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  text-transform: none;
  letter-spacing: 0;
}
.csl-toolbar {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 0 0 12px;
}
.csl-search {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 7px 9px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--bg);
  color: var(--text);
  font: inherit;
  font-size: 12px;
}
.csl-search::placeholder {
  color: var(--muted);
}
.csl-sort-label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.csl-sort-caption {
  font-size: 10px;
}
.csl-sort {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--bg);
  color: var(--text);
  font: inherit;
  font-size: 12px;
  text-transform: none;
  letter-spacing: 0;
}
.csl-no-match .tree-label {
  color: var(--muted);
  font-style: italic;
}
.csl-provider {
  margin-bottom: 14px;
}
.csl-provider-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.csl-provider-logo {
  height: 22px;
  width: auto;
  display: block;
  border-radius: 3px;
}
.csl-provider-name {
  color: var(--text);
  font-size: 12px;
  font-weight: 650;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.csl-color-swatch {
  width: 16px;
  height: 16px;
  margin-left: auto;
  border: 1px solid var(--line);
  border-radius: 3px;
  background: var(--csl-color, #E20074);
  cursor: pointer;
  padding: 0;
  flex-shrink: 0;
}
.csl-color-swatch:hover {
  outline: 1px solid var(--text);
  outline-offset: 1px;
}
.csl-panel .tree-children {
  margin-left: 8px;
}
.csl-panel details.tree-branch {
  margin: 2px 0;
}
.csl-panel .tree-label {
  text-transform: none;
  letter-spacing: 0;
  font-size: 12px;
  color: var(--text);
}
.csl-panel .tree-count {
  color: var(--muted);
  font-size: 11px;
}
.rail-section.collapsed .rail-section-body { display: none; }
.rail-section.is-popped {
  flex: 0 0 auto;
  max-height: none;
  overflow: hidden;
}
.rail-section.is-popped .panel-bar { margin-bottom: 0; }
.rail .panel-bar { margin: 0 0 12px; }
.rail-section.collapsed .panel-bar { margin-bottom: 0; }
.rail .rail-section.is-popped .panel-bar { margin-bottom: 0; }
.rail-popout-btn {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  padding: 0;
  background: var(--panel);
  color: var(--text);
  border: 1px solid var(--line);
  cursor: pointer;
}
.rail-popout-btn:hover { border-color: var(--text); }
.rail-popout-btn svg { width: 12px; height: 12px; display: block; }
.section-heading {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  min-width: 0;
}
.section-caret {
  display: inline-block;
  width: 0;
  height: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 6px solid var(--muted);
  transform: rotate(0deg);
  transition: transform 0.12s ease;
}
.rail-section.collapsed .section-caret {
  transform: rotate(-90deg);
}
.rail-resizer {
  grid-area: handle;
  cursor: col-resize;
  background: var(--bg);
  border-left: 1px solid var(--line);
  border-right: 1px solid var(--line);
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
}
.rail-grip {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 12px;
  height: 48px;
  border-radius: 8px;
  background: var(--panel);
  border: 1px solid var(--line);
  color: var(--text);
  font-size: 11px;
  letter-spacing: -2px;
  line-height: 1;
  user-select: none;
  pointer-events: none;
  text-transform: none;
}
.rail-resizer:hover,
body.rail-resizing .rail-resizer {
  background: var(--inset);
}
.rail-resizer:hover .rail-grip,
body.rail-resizing .rail-grip {
  border-color: var(--accent);
  color: var(--accent);
}
body.rail-resizing { cursor: col-resize; user-select: none; }
.rail label.file, .rail fieldset, .rail .slider { display: block; margin-bottom: 14px; }
.rail fieldset[hidden] { display: none !important; }
.usage-type-filters {
  margin: 0 0 14px;
  padding: 8px 10px 10px;
  border: 1px solid var(--line);
}
.usage-type-filters legend {
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0 4px;
}
.usage-type-filters label {
  display: flex;
  gap: 8px;
  align-items: center;
  margin: 4px 0;
  color: var(--text);
  font-size: 13px;
  text-transform: none;
  letter-spacing: 0;
  cursor: pointer;
}
.rail-filter-block .usage-type-filters {
  margin: 0;
}
.identity-check-search {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 8px;
  font-size: 13px;
}
.identity-check-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 28px;
  color: var(--muted);
  font-size: 12px;
}
.identity-check-clear {
  padding: 4px 8px;
  font-size: 12px;
}
.identity-check-list {
  max-height: 240px;
  overflow: auto;
  border: 1px solid var(--line);
  padding: 4px 8px;
  background: var(--bg);
}
.identity-check-group {
  margin: 8px 0 2px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}
.identity-check-row,
.modal-card label.identity-check-row {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  margin: 3px 0;
  color: var(--text);
  font-size: 12px;
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
  cursor: pointer;
}
.identity-check-label {
  font-variant-numeric: tabular-nums;
}
.identity-check-sub {
  display: block;
  color: var(--muted);
  font-size: 11px;
}
.identity-check-empty,
.identity-check-more {
  margin: 8px 0;
  color: var(--muted);
  font-size: 12px;
}
.device-filter-card {
  width: min(440px, calc(100% - 32px));
}
.device-filter-card .identity-check-list {
  max-height: min(360px, 50vh);
}
.sector-site-color {
  display: flex;
  gap: 8px;
  align-items: center;
}
.device-color-swatch {
  display: inline-block;
  box-sizing: border-box;
  width: 28px;
  height: 22px;
  min-width: 28px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 2px;
  background: var(--file-color, #3d8bfd);
  cursor: pointer;
}
.device-color-swatch:hover {
  outline: 1px solid var(--text);
  outline-offset: 1px;
}
.filter-neighbor-lines {
  margin: 2px 0 4px 22px;
}
.filter-neighbor-lines label {
  margin: 2px 0;
}
.rail span, .rail legend { color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; }
input[type="file"] { display: block; width: 100%; margin-top: 6px; color: var(--text); }
input[type="file"][hidden] { display: none !important; }
.actions { display: flex; flex-direction: column; gap: 8px; margin: 12px 0 0; }
button {
  background: var(--accent);
  color: var(--on-accent);
  border: 0;
  padding: 8px 10px;
  font-weight: 600;
  cursor: pointer;
}
button.secondary { background: transparent; color: var(--text); border: 1px solid var(--line); }
button.device-color-swatch {
  background: var(--file-color, #3d8bfd);
  color: transparent;
  font-size: 0;
  line-height: 0;
}
button.section-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  color: var(--muted);
  border: 0;
  padding: 0;
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}
.panel-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin: -4px 0 12px;
}
.panel-bar span {
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.panel-toggle,
.reopen {
  background: var(--panel);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 5px 10px;
  font-weight: 600;
  cursor: pointer;
}
.panel-collapse {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  padding: 0;
  line-height: 0;
}
.panel-collapse svg {
  width: 11px;
  height: 11px;
  display: block;
}
.panel-bar-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
#rail-lower-toggle svg {
  transition: transform 0.12s ease;
}
#rail-lower-toggle[aria-pressed="true"] svg {
  transform: rotate(180deg);
}
.rail.rail-lower-hidden > .rail-section:not(.rail-records) {
  display: none;
}
.table-wrap .panel-bar {
  margin: 0;
  padding: 8px 10px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
}
.records-kind-chips {
  display: flex;
  flex: 1 1 auto;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 0;
}
.records-kind-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin: 0;
  padding: 3px 8px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: transparent;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.2;
  cursor: pointer;
  text-transform: none;
  letter-spacing: 0;
}
.records-kind-chip:hover {
  border-color: var(--text);
  color: var(--text);
}
.records-kind-chip.is-active {
  border-color: var(--accent);
  color: var(--text);
  background: color-mix(in srgb, var(--accent) 16%, var(--panel));
}
.records-kind-count {
  color: var(--muted);
  font-weight: 500;
}
.records-kind-chip.is-active .records-kind-count {
  color: var(--accent);
}
.cloudrf-overlay-chrome {
  position: absolute;
  z-index: 1100;
  left: 52px;
  top: 12px;
  bottom: auto;
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 180px;
  max-width: min(260px, calc(100% - 64px));
  max-height: min(420px, calc(100% - 24px));
  overflow: auto;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: color-mix(in srgb, var(--panel) 96%, transparent);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.28);
  pointer-events: auto;
}
/* Author display:flex otherwise overrides the [hidden] UA rule and the panel stays visible when off. */
.cloudrf-overlay-chrome[hidden] {
  display: none !important;
}
.cloudrf-overlay-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.cloudrf-overlay-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}
.cloudrf-overlay-chrome.is-minimized {
  gap: 0;
  min-width: 0;
  width: max-content;
  max-height: none;
  overflow: hidden;
  padding: 8px 10px;
}
.cloudrf-overlay-chrome.is-minimized > :not(.cloudrf-overlay-head) {
  display: none !important;
}
.cloudrf-overlay-chrome.is-minimized .cloudrf-overlay-title {
  cursor: pointer;
}
.cloudrf-overlay-actions {
  display: flex;
  align-items: center;
  gap: 2px;
  margin: -4px -6px -4px 0;
}
.cloudrf-overlay-actions .cloudrf-chrome-close {
  margin: 0;
}
.cloudrf-chrome-close {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  margin: -4px -6px -4px 0;
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}
.cloudrf-chrome-close:hover,
.cloudrf-chrome-close:focus-visible {
  color: var(--text);
  background: color-mix(in srgb, var(--accent) 16%, var(--bg));
  outline: none;
}
.cloudrf-chrome-hint {
  margin: 0;
  font-size: 11px;
  line-height: 1.35;
  color: var(--muted);
}
#cloudrf-chrome-run {
  width: 100%;
  padding: 6px 10px;
  font-size: 12px;
  font-weight: 600;
}
.cloudrf-run-btn {
  margin-right: 6px;
  padding: 4px 8px !important;
  font-size: 11px !important;
  white-space: nowrap;
}
.sector-popup-gear,
.site-popup-toolbar {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.cloudrf-opacity {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  color: var(--text);
}
.cloudrf-opacity input[type="range"] {
  width: 100%;
}
.cloudrf-legend {
  display: flex;
  flex-direction: column;
  gap: 3px;
  max-height: 120px;
  overflow: auto;
  font-size: 11px;
  color: var(--text);
}
.cloudrf-legend-row {
  display: flex;
  align-items: center;
  gap: 6px;
}
.cloudrf-legend-swatch {
  width: 12px;
  height: 12px;
  border-radius: 2px;
  border: 1px solid var(--line);
  flex: 0 0 auto;
}
.cloudrf-card {
  max-width: 420px;
}
.cloudrf-form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 12px;
  margin: 12px 0;
}
.cloudrf-form label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  color: var(--muted);
  text-transform: none;
  letter-spacing: 0;
}
.cloudrf-form input {
  width: 100%;
  box-sizing: border-box;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 6px 8px;
}
.cloudrf-hint {
  margin: 0 0 8px;
  font-size: 12px;
  color: var(--muted);
}
#toggle-cloudrf.is-active {
  color: var(--accent);
}
#toggle-cloudrf.is-active::before {
  content: "✓ ";
}
.hint { color: var(--muted); font-size: 12px; }
.tree { margin: 0 0 12px; font-size: 12px; }
.tree span {
  text-transform: none;
  letter-spacing: 0;
  font-size: 12px;
  color: inherit;
}
.tree-branch { margin-left: 4px; }
.tree-children { margin-left: 12px; border-left: 1px solid var(--line); padding-left: 8px; }
.tree summary {
  cursor: pointer;
  list-style: none;
  display: block;
  padding: 0;
  color: var(--text);
  text-transform: none;
  letter-spacing: 0;
  font-size: 12px;
}
.tree summary > .tree-summary {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 3px 0;
  min-width: 0;
}
#record-tree summary > .tree-summary,
#record-tree .tree-leaf {
  gap: 3px;
}
#record-tree .tree-branch { margin-left: 2px; }
#record-tree .tree-children { margin-left: 8px; padding-left: 4px; }
#record-tree .tree-warn,
#record-tree .tree-tot-warn,
#record-tree button.record-das-warn,
#record-tree button.record-csl-warn,
#record-tree .tree-file-color,
#record-tree .tree-sub-btn,
#record-tree .tree-identity-icon {
  margin-left: 0;
}
.tree summary::-webkit-details-marker { display: none; }
.tree-leaf {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 3px 0 3px 10px;
  color: var(--text);
}
.tree-leaf.tree-record { cursor: pointer; }
.tree-leaf.selected { background: var(--hover); }
.tree-leaf.wedge-highlight,
.tree summary.wedge-highlight {
  background: rgba(224, 161, 6, 0.28);
}
.tree-leaf.starlink-highlight,
.tree summary.starlink-highlight {
  background: rgba(250, 204, 21, 0.42);
}
.tree [data-tree-id] {
  width: 13px;
  height: 13px;
  margin: 0;
  flex: 0 0 13px;
  accent-color: var(--accent);
}
.tree .twist {
  width: 10px;
  flex: 0 0 10px;
  color: var(--muted);
}
.tree-branch > summary .twist::before { content: "+"; }
.tree-branch[open] > summary .twist::before { content: "-"; }
.tree-identity-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  margin: 0 2px 0 0;
  padding: 0;
  border: none;
  border-radius: 3px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  flex: 0 0 18px;
  vertical-align: middle;
}
.tree-identity-icon:hover {
  color: var(--text);
  background: rgba(255, 255, 255, 0.06);
}
.tree-identity-icon:focus-visible {
  outline: 1px solid var(--accent);
  outline-offset: 1px;
}
.tree-identity-icon svg {
  display: block;
}
.tree-identity-icon[data-icon="ping"] {
  color: #e8425f;
}
.tree-identity-icon[data-icon="ping"][data-ping-active="0"] {
  color: #111111;
}
html[data-theme="light"] .tree-identity-icon[data-icon="ping"][data-ping-active="0"] {
  color: #111111;
}
.identity-icon-menu {
  min-width: 220px;
  padding: 10px;
}
.identity-icon-shapes {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
}
.identity-icon-shapes button {
  display: grid;
  place-items: center;
  width: 100%;
  min-height: 40px;
  padding: 6px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--inset-deep);
  color: var(--text);
}
.identity-icon-shapes button:hover,
.identity-icon-shapes button.is-selected {
  border-color: var(--accent, #c9a227);
  background: var(--panel);
}
.identity-icon-shapes button svg {
  width: 20px;
  height: 20px;
  display: block;
}
.tree .count { color: var(--muted); font-style: italic; font-weight: 400; }
.tree .tree-carrier-icon,
.record-folder-icon-choice .tree-carrier-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
  border-radius: 50%;
  color: #fff;
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  letter-spacing: 0;
}
.tree .tree-carrier-att,
.record-folder-icon-choice .tree-carrier-att { background: #009fdb; }
.tree .tree-carrier-tmobile,
.record-folder-icon-choice .tree-carrier-tmobile { background: #e20074; }
.tree .tree-carrier-verizon,
.record-folder-icon-choice .tree-carrier-verizon { background: #cd040b; }
.tree-drag {
  display: grid;
  grid-template-columns: 2px 2px;
  gap: 1px;
  width: 5px;
  flex: 0 0 5px;
  align-content: center;
  line-height: 0;
  cursor: grab;
  touch-action: none;
}
.tree-drag i {
  width: 2px;
  height: 2px;
  border-radius: 50%;
  background: var(--muted);
  display: block;
}
.tree-drag:active { cursor: grabbing; }
#record-tree .is-tree-dragging { opacity: 0.45; }
#record-tree .tree-branch.tree-drop-before > summary,
#record-tree .tree-leaf.tree-drop-before {
  box-shadow: inset 0 2px 0 var(--accent);
}
#record-tree .tree-branch.tree-drop-after > summary,
#record-tree .tree-leaf.tree-drop-after {
  box-shadow: inset 0 -2px 0 var(--accent);
}
#record-tree > .record-folder.tree-drop-into > summary,
#record-tree details.tree-msisdn.tree-drop-into > summary,
#record-tree details.tree-branch.tree-drop-into > summary {
  box-shadow: inset 0 0 0 2px var(--accent);
}
.record-folder-empty {
  margin: 2px 0 6px;
  color: var(--muted);
  font-size: 11px;
  font-style: italic;
}
.record-folder-empty[hidden] { display: none; }
.tree-folder-glyph {
  display: inline-flex;
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
  color: var(--text);
}
.tree-folder-glyph svg { width: 16px; height: 16px; display: block; }
.record-folder-card { width: min(420px, calc(100vw - 32px)); }
.record-folder-icons {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 8px;
  margin: 8px 0 12px;
}
.record-folder-icon-choice {
  display: grid;
  place-items: center;
  width: 100%;
  min-height: 36px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--inset-deep);
  color: var(--text);
}
.record-folder-icon-choice svg { width: 16px; height: 16px; display: block; }
.record-folder-icon-choice.is-selected {
  border-color: var(--accent, #c9a227);
  background: var(--panel);
}
.tree summary .tree-label,
.tree-leaf .tree-label {
  flex: 1 1 auto;
  min-width: 0;
}
#record-tree summary:has([data-tree-id^="file:"]) .tree-label,
#record-tree summary:has([data-tree-id^="file:"]) .count {
  font-size: 11px;
  white-space: nowrap;
}
#record-tree summary:has([data-tree-id^="file:"]) .tree-label {
  flex: 0 1 auto;
}
.tree summary .tree-carrier-icon + .tree-label {
  flex: 0 0 auto;
  white-space: nowrap;
}
.tree-warn,
.tree-hint {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 16px;
  height: 16px;
  min-width: 16px;
  min-height: 16px;
  flex: 0 0 16px;
  margin-left: 6px;
  padding: 0;
  border: 1px solid var(--accent);
  background: transparent !important;
  color: var(--accent) !important;
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  vertical-align: middle;
  text-transform: none;
  letter-spacing: 0;
  overflow: hidden;
}
.tree-hint {
  cursor: help;
}
.tree-warn:hover,
.tree-hint:hover {
  background: color-mix(in srgb, var(--accent) 18%, transparent) !important;
}
.tree-tot-warn,
button.record-das-warn,
button.record-csl-warn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 14px;
  height: 14px;
  min-width: 14px;
  min-height: 14px;
  flex: 0 0 14px;
  margin-left: 4px;
  padding: 0;
  border: 1px solid #c45c5c;
  background: transparent !important;
  color: var(--danger-text) !important;
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  vertical-align: middle;
  text-transform: none;
  letter-spacing: 0;
  overflow: hidden;
}
.tree-tot-warn {
  width: 16px;
  height: 16px;
  min-width: 16px;
  min-height: 16px;
  flex: 0 0 16px;
  margin-left: 6px;
}
.tree-tot-warn:hover,
button.record-das-warn:hover,
button.record-csl-warn:hover {
  background: rgba(196, 92, 92, 0.18) !important;
}
.tot-report-card {
  max-width: min(720px, 94vw);
}
.tree-file-color {
  display: inline-block;
  box-sizing: border-box;
  width: 12px;
  height: 12px;
  min-width: 12px;
  min-height: 12px;
  flex: 0 0 12px;
  margin-left: 8px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 2px;
  background: var(--file-color, #3d8bfd);
  cursor: pointer;
  vertical-align: middle;
  flex-shrink: 0;
}
#record-tree .tree-file-color {
  margin-right: 12px;
}
.tree-file-color:hover {
  outline: 1px solid var(--text);
  outline-offset: 1px;
}
.tree-sub-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 8px;
  padding: 0 5px;
  height: 16px;
  border: 1px solid var(--info);
  border-radius: 2px;
  background: transparent;
  color: var(--info);
  font: 700 9px/1 var(--font-sans);
  letter-spacing: 0.04em;
  cursor: pointer;
  vertical-align: middle;
  flex-shrink: 0;
}
.tree-sub-btn:hover {
  background: color-mix(in srgb, var(--info) 18%, transparent);
  color: var(--text);
}
.tree-sub-only {
  margin: 6px 0 4px 28px;
  color: var(--muted);
  font-size: 12px;
}
.map-host {
  position: relative;
  min-height: 0;
  height: 100%;
}
body.map-page .map-host > #map-timeline.map-timeline {
  position: absolute;
  top: 10px;
  left: 54px;
  right: 78px;
  bottom: auto;
  z-index: 800;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 4px 10px 6px;
  background: color-mix(in srgb, var(--panel) 92%, transparent);
  border: 1px solid var(--line);
  border-radius: 8px;
  backdrop-filter: blur(8px);
  box-shadow: 0 8px 24px color-mix(in srgb, #000 18%, transparent);
  user-select: none;
  /* Only the bar itself captures clicks — never a full-map shield. */
  pointer-events: auto;
  height: fit-content;
  max-height: none;
  contain: layout style;
}
.map-timeline[hidden] {
  display: none !important;
  pointer-events: none !important;
}
.map-timeline-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  grid-template-areas: "readout opts actions";
  align-items: center;
  gap: 12px;
}
.map-timeline-actions {
  grid-area: actions;
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 8px;
}
.map-timeline-readout {
  grid-area: readout;
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 14px;
  justify-self: start;
}
.map-timeline-readout strong {
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  color: var(--text);
}
.map-timeline-readout span {
  color: var(--muted);
  font-size: 12px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
body.map-timeline-dock-side .map-host > #map-timeline.map-timeline {
  top: 12px;
  right: 12px;
  left: auto;
  bottom: 12px;
  width: min(168px, calc(100% - 24px));
  height: auto;
  overflow: auto;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto auto auto minmax(72px, 1fr) auto;
  grid-template-areas:
    "head"
    "transport"
    "start"
    "track"
    "end";
  align-content: stretch;
  gap: 6px;
  padding: 8px 10px 8px;
}
body.map-timeline-dock-side #map .leaflet-top.leaflet-right,
body.map-timeline-dock-side #map .leaflet-control-zoom {
  display: none !important;
}
body.map-timeline-dock-side .map-timeline-top {
  grid-area: head;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
}
body.map-timeline-dock-side .map-timeline-readout {
  order: 2;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
}
body.map-timeline-dock-side .map-timeline-readout span {
  white-space: normal;
}
body.map-timeline-dock-side .map-timeline-actions {
  order: 1;
  margin-left: 0;
  justify-content: flex-end;
}
body.map-timeline-dock-side .map-timeline-opts {
  order: 3;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
  gap: 6px;
}
body.map-timeline-dock-side .map-timeline-opt {
  flex-direction: column;
  align-items: stretch;
  gap: 2px;
}
body.map-timeline-dock-side .map-timeline-opt select {
  width: 100%;
  min-width: 0;
}
body.map-timeline-dock-side .map-timeline-row,
body.map-timeline-dock-side .map-timeline-axis {
  display: contents;
}
body.map-timeline-dock-side .map-timeline-transport {
  grid-area: transport;
  justify-content: center;
}
body.map-timeline-dock-side .map-timeline-track {
  grid-area: track;
  justify-self: center;
  align-self: stretch;
  width: 18px;
  height: auto;
  min-height: 0;
  min-width: 0;
  cursor: ns-resize;
}
body.map-timeline-dock-side .map-timeline-progress {
  top: 0;
  right: 0;
  bottom: auto;
  left: 0;
  width: 100%;
  height: 100%;
  transform: scaleY(0);
  transform-origin: top center;
}
body.map-timeline-dock-side .map-timeline-thumb {
  left: 50%;
  top: 0;
  will-change: top;
}
body.map-timeline-dock-side #map-timeline-t0 {
  grid-area: start;
  text-align: center;
  white-space: normal;
  line-height: 1.25;
}
body.map-timeline-dock-side #map-timeline-t1 {
  grid-area: end;
  text-align: center;
  white-space: normal;
  line-height: 1.25;
}
.map-timeline-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.map-timeline-transport {
  display: flex;
  align-items: center;
  gap: 2px;
  flex: 0 0 auto;
}
.map-timeline-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  color: var(--text);
  cursor: pointer;
}
.map-timeline-btn svg {
  width: 14px;
  height: 14px;
  fill: currentColor;
  display: block;
}
.map-timeline-btn:hover {
  background: color-mix(in srgb, var(--accent) 16%, var(--panel));
}
.map-timeline-btn:disabled {
  opacity: 0.45;
  cursor: default;
}
.map-timeline-btn.is-active,
#map-timeline-play[aria-pressed="true"],
#map-timeline-reverse[aria-pressed="true"] {
  background: color-mix(in srgb, var(--accent) 22%, var(--panel));
  border-color: var(--accent);
  color: var(--text);
}
.map-timeline-track {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  height: 18px;
  border-radius: 999px;
  background: var(--inset-deep, var(--inset));
  border: 1px solid var(--line);
  cursor: ew-resize;
  touch-action: none;
}
.map-timeline-progress {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 100%;
  transform: scaleX(0);
  transform-origin: left center;
  border-radius: 999px;
  background: color-mix(in srgb, var(--accent) 55%, transparent);
  pointer-events: none;
  will-change: transform;
}
.map-timeline-thumb {
  position: absolute;
  top: 50%;
  left: 0;
  width: 16px;
  height: 16px;
  margin: 0;
  padding: 0;
  border-radius: 50%;
  border: 2px solid var(--bg);
  background: var(--accent);
  box-shadow: 0 0 0 1px var(--line);
  transform: translate3d(-50%, -50%, 0);
  cursor: grab;
  will-change: left;
  pointer-events: none;
}
.map-timeline-thumb:active,
body.map-timeline-dragging .map-timeline-thumb {
  cursor: grabbing;
}
body.map-timeline-dragging #map {
  pointer-events: none;
}
.map-timeline-axis {
  display: flex;
  justify-content: space-between;
  color: var(--muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.map-timeline-opts {
  grid-area: opts;
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: center;
  gap: 14px 18px;
  margin: 0;
  justify-self: center;
}
.map-timeline-opt {
  display: inline-flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 6px;
  margin: 0;
  white-space: nowrap;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}
.map-timeline-opt-label {
  white-space: nowrap;
}
.map-timeline-opt select {
  min-width: 8.5rem;
  padding: 2px 6px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--panel);
  color: var(--text);
  font-size: 11px;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
  white-space: nowrap;
}
.map-timeline-opt-check {
  cursor: pointer;
  user-select: none;
}
.map-timeline-opt-check input {
  width: 13px;
  height: 13px;
  margin: 0;
  accent-color: var(--accent);
  cursor: pointer;
}
.map-timeline-export {
  padding: 4px 10px;
  font-size: 12px;
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
}
.timeline-video-card {
  width: min(560px, calc(100% - 32px));
}
.timeline-video-count,
.timeline-video-estimate,
.timeline-video-progress {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.4;
}
.timeline-video-estimate.is-long {
  color: #c4a15a;
}
.timeline-video-times,
.timeline-video-opts {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 16px;
}
.timeline-video-times label,
.timeline-video-opts label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}
.timeline-video-times input,
.timeline-video-opts select {
  min-width: 11rem;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--bg);
  color: var(--text);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}
.timeline-video-opts label.timeline-video-follow {
  flex-direction: row;
  align-items: center;
  align-self: end;
  gap: 8px;
  min-height: 32px;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--text);
}
.timeline-video-follow input {
  width: 14px;
  height: 14px;
  margin: 0;
  accent-color: var(--accent);
}
body.map-page.subscriber-open .map-timeline,
body.map-page.messages-open .map-timeline,
body.map-page.timeline-open .map-timeline,
body.map-page.commonality-open .map-timeline,
body.map-page.number-search-open .map-timeline,
body.map-page.mcc-lookup-open .map-timeline,
body.map-page.ask-records-open .map-timeline,
body.map-page.activity-open .map-timeline {
  display: none !important;
}
.subscriber-panel {
  position: absolute;
  inset: 0;
  z-index: 500;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border-bottom: 1px solid var(--line);
}
.subscriber-panel[hidden] {
  display: none !important;
}
.subscriber-panel-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  font-weight: 650;
}
.subscriber-body {
  flex: 1;
  overflow: auto;
  padding: 0 18px 28px;
}
.subscriber-body > :first-child {
  margin-top: 16px;
}
.sub-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-bottom: 18px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line);
  color: var(--muted);
  font-size: 12px;
}
.sub-meta .sub-k {
  margin-right: 6px;
  color: var(--muted);
}
.sub-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: -6px 0 16px;
}
.sub-meta .sub-v {
  color: var(--text);
  font-weight: 600;
}
.sub-sections {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px 20px;
  margin-bottom: 22px;
}
.sub-section h4 {
  margin: 0 0 8px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--accent);
}
.sub-section dl {
  margin: 0;
}
.sub-row {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 6px 10px;
  padding: 3px 0;
  border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
}
.sub-row dt {
  margin: 0;
  color: var(--muted);
}
.sub-row dd {
  margin: 0;
  color: var(--text);
  word-break: break-word;
}
.sub-row dd.sub-copy {
  white-space: nowrap;
  word-break: normal;
  user-select: all;
  cursor: text;
}
.sub-devices .sub-table-wrap {
  overflow: auto;
  border: 1px solid var(--line);
  background: var(--panel);
}
.sub-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-size: 12px;
}
.sub-table th,
.sub-table td {
  padding: 7px 9px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}
.sub-table th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--panel);
  color: var(--muted);
  font-weight: 650;
  white-space: nowrap;
  box-shadow: 0 1px 0 var(--line);
}
.sub-push-tokens {
  margin: 0 0 14px;
  padding: 10px 12px 12px;
  border: 1px solid var(--accent);
  background: color-mix(in srgb, var(--accent) 14%, var(--panel));
}
.sub-push-tokens h4 {
  margin: 0 0 6px;
  color: var(--accent);
}
.sub-push-note {
  margin: 0 0 8px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}
.push-token-value,
.push-token-mark {
  font-family: var(--font-mono);
  word-break: break-all;
}
.push-token-mark {
  background: color-mix(in srgb, var(--accent) 42%, transparent);
  border-radius: 2px;
  box-decoration-break: clone;
}
.wa-media-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(128px, 1fr));
  gap: 10px;
  margin-top: 8px;
}
.wa-media-card {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.wa-media-card img,
.wa-media-card video {
  width: 100%;
  height: 120px;
  object-fit: cover;
  border-radius: 6px;
  background: var(--inset);
  border: 1px solid var(--line);
}
.wa-media-card span {
  color: var(--muted);
  font-size: 11px;
  word-break: break-all;
}
body.map-page.subscriber-open #map,
body.map-page.messages-open #map,
body.map-page.timeline-open #map,
body.map-page.commonality-open #map,
body.map-page.number-search-open #map,
body.map-page.mcc-lookup-open #map,
body.map-page.ask-records-open #map,
body.map-page.activity-open #map {
  visibility: hidden;
}
body.map-page.subscriber-open .messages-panel,
body.map-page.timeline-open .messages-panel,
body.map-page.commonality-open .messages-panel,
body.map-page.number-search-open .messages-panel,
body.map-page.mcc-lookup-open .messages-panel,
body.map-page.ask-records-open .messages-panel,
body.map-page.activity-open .messages-panel {
  display: none !important;
}
body.map-page.subscriber-open .timeline-panel,
body.map-page.messages-open .timeline-panel,
body.map-page.commonality-open .timeline-panel,
body.map-page.number-search-open .timeline-panel,
body.map-page.mcc-lookup-open .timeline-panel,
body.map-page.ask-records-open .timeline-panel,
body.map-page.activity-open .timeline-panel {
  display: none !important;
}
body.map-page.subscriber-open .commonality-panel,
body.map-page.messages-open .commonality-panel,
body.map-page.timeline-open .commonality-panel,
body.map-page.number-search-open .commonality-panel,
body.map-page.mcc-lookup-open .commonality-panel,
body.map-page.ask-records-open .commonality-panel,
body.map-page.activity-open .commonality-panel {
  display: none !important;
}
body.map-page.subscriber-open .activity-panel,
body.map-page.messages-open .activity-panel,
body.map-page.timeline-open .activity-panel,
body.map-page.commonality-open .activity-panel,
body.map-page.number-search-open .activity-panel,
body.map-page.mcc-lookup-open .activity-panel,
body.map-page.ask-records-open .activity-panel {
  display: none !important;
}
body.map-page.subscriber-open .number-search-panel,
body.map-page.messages-open .number-search-panel,
body.map-page.timeline-open .number-search-panel,
body.map-page.commonality-open .number-search-panel,
body.map-page.ask-records-open .number-search-panel,
body.map-page.activity-open .number-search-panel,
body.map-page.activity-open .mcc-lookup-panel,
body.map-page.number-search-open .mcc-lookup-panel,
body.map-page.mcc-lookup-open #number-search-panel {
  display: none !important;
}
body.map-page.subscriber-open .ask-records-panel,
body.map-page.messages-open .ask-records-panel,
body.map-page.timeline-open .ask-records-panel,
body.map-page.commonality-open .ask-records-panel,
body.map-page.number-search-open .ask-records-panel,
body.map-page.mcc-lookup-open .ask-records-panel,
body.map-page.activity-open .ask-records-panel {
  display: none !important;
}
.messages-panel {
  position: absolute;
  inset: 0;
  z-index: 490;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border-bottom: 1px solid var(--line);
}
.messages-panel[hidden] {
  display: none !important;
}
.messages-panel-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  font-weight: 650;
}
.messages-body {
  flex: 1;
  overflow: auto;
  padding: 18px 16px 28px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.messages-empty {
  margin: auto;
  color: var(--muted);
  text-align: center;
  max-width: 28rem;
  line-height: 1.45;
}
.timeline-panel {
  position: absolute;
  inset: 0;
  z-index: 490;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border-bottom: 1px solid var(--line);
}
.timeline-panel[hidden] {
  display: none !important;
}
.activity-panel {
  position: absolute;
  inset: 0;
  z-index: 490;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border-bottom: 1px solid var(--line);
}
.activity-panel[hidden] {
  display: none !important;
}
.activity-panel-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  font-weight: 650;
}
.activity-tools {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
  margin-left: auto;
  min-width: 0;
  font-weight: 600;
}
.activity-tools select,
.activity-range input {
  font: inherit;
  font-weight: 600;
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 4px 8px;
}
.activity-tools select {
  display: inline-block;
  width: auto;
  margin-top: 0;
}
.activity-step {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: none;
}
.activity-tools button:disabled {
  opacity: 0.45;
  color: var(--muted);
  cursor: default;
}
.activity-step button:disabled:hover,
.activity-step button:disabled:focus-visible {
  background: var(--panel);
  color: var(--muted);
}
.activity-range {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0;
}
.activity-range[hidden] {
  display: none !important;
}
.activity-range-label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0;
  white-space: nowrap;
}
.activity-body {
  flex: 1;
  overflow: auto;
  padding: 16px 18px 28px;
  display: flex;
  flex-direction: column;
}
.activity-empty {
  margin: auto;
  color: var(--muted);
  text-align: center;
  max-width: 28rem;
  line-height: 1.45;
}
.activity-chart {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 640px;
}
.activity-row {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
}
.activity-device {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  font-weight: 650;
}
.activity-swatch {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex: none;
}
.activity-device-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.activity-plot {
  min-width: 0;
  border-bottom: 1px solid var(--line);
}
.activity-svg {
  display: block;
  width: 100%;
  height: 88px;
}
.activity-axis {
  position: relative;
  height: 22px;
  margin-top: 4px;
}
.activity-tick {
  position: absolute;
  top: 0;
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
  white-space: nowrap;
  transform: translateX(-50%);
}
.activity-tick-start {
  transform: none;
}
.activity-tick-end {
  transform: translateX(-100%);
}
.timeline-panel-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  font-weight: 650;
}
.timeline-body {
  flex: 1;
  overflow: auto;
  padding: 16px 18px 24px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.timeline-empty {
  margin: auto;
  color: var(--muted);
  text-align: center;
  max-width: 28rem;
  line-height: 1.45;
}
.timeline-axis {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  padding: 0 4px 0 148px;
  color: var(--muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.timeline-axis span {
  white-space: nowrap;
}
.timeline-strip {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 12px;
  align-items: stretch;
  min-height: 72px;
}
.timeline-strip-meta {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  padding: 4px 0;
}
.timeline-strip-phone {
  font-weight: 650;
  line-height: 1.25;
}
.timeline-strip-count {
  color: var(--muted);
  font-size: 12px;
}
.timeline-strip-chart {
  position: relative;
  min-height: 72px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.03), transparent 40%),
    var(--inset-deep);
  overflow: hidden;
}
.timeline-strip-chart svg {
  display: block;
  width: 100%;
  height: 72px;
}
.timeline-strip-chart title {
  pointer-events: none;
}
.commonality-panel {
  position: absolute;
  inset: 0;
  z-index: 490;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border-bottom: 1px solid var(--line);
}
.commonality-panel[hidden] {
  display: none !important;
}
.commonality-panel-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-shrink: 0;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  font-weight: 650;
}
.commonality-tools {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  min-width: 0;
}
.commonality-key[hidden],
.commonality-min[hidden] {
  display: none !important;
}
.commonality-min {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
}
.commonality-min input[type="range"] {
  width: 120px;
  margin: 0;
}
.commonality-key {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
}
.commonality-key.is-reminder {
  color: var(--danger-text);
}
.commonality-empty .commonality-match-reminder {
  margin: 10px 0 0;
  color: var(--danger-text);
  font-weight: 650;
}
.commonality-empty p {
  margin: 0;
}
.commonality-export {
  position: relative;
}
.commonality-export[hidden] {
  display: none !important;
}
.commonality-export-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 6;
  min-width: 11.5rem;
  display: flex;
  flex-direction: column;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  box-shadow: 0 8px 24px var(--shadow);
}
.commonality-export-menu[hidden] {
  display: none !important;
}
.commonality-export-menu button {
  background: transparent;
  color: var(--text);
  border: 0;
  border-radius: 4px;
  padding: 7px 10px;
  text-align: left;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
.commonality-export-menu button:hover,
.commonality-export-menu button:focus-visible {
  background: color-mix(in srgb, var(--accent) 16%, var(--panel));
}
.commonality-key select {
  display: block;
  width: auto;
  min-width: 9.5rem;
  margin: 0;
  padding: 4px 8px;
}
.commonality-table th.commonality-key-col,
.commonality-table td.commonality-key-col {
  font-weight: 700;
  color: var(--text);
}
.commonality-min-value,
#commonality-min-value {
  min-width: 1.25rem;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.commonality-summary {
  flex-shrink: 0;
  padding: 6px 14px 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.35;
  text-transform: none;
  letter-spacing: 0;
}
.commonality-body {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 0;
}
.commonality-body > .commonality-empty {
  padding: 12px 14px 28px;
}
.commonality-split {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.commonality-table-wrap {
  flex: 1 1 0;
  min-height: 72px;
  overflow: auto;
  padding: 0 14px 16px;
}
.commonality-table-wrap > :first-child {
  margin-top: 4px;
}
.commonality-stats,
.commonality-disclaimer {
  margin: 0;
  max-width: none;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.35;
  text-transform: none;
  letter-spacing: 0;
}
.commonality-disclaimer {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.commonality-table-wrap > .commonality-table {
  margin-top: 4px;
}
.commonality-splitter {
  flex: 0 0 12px;
  position: relative;
  z-index: 2;
  margin: 0;
  border: 0;
  padding: 0;
  cursor: ns-resize;
  background: var(--line);
  touch-action: none;
}
.commonality-splitter::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 42px;
  height: 4px;
  transform: translate(-50%, -50%);
  border-radius: 999px;
  background: var(--muted);
  opacity: 0.8;
}
.commonality-splitter:hover::before,
.commonality-splitter:focus-visible::before,
.commonality-splitter.is-dragging::before {
  background: var(--accent);
  opacity: 1;
}
.commonality-splitter:focus-visible {
  outline: none;
}
body.commonality-split-drag,
body.commonality-split-drag * {
  cursor: ns-resize !important;
  user-select: none !important;
}
.commonality-web {
  flex: 1 1 0;
  min-height: 140px;
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--inset);
}
.commonality-web-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 14px 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 650;
  letter-spacing: 0;
  text-transform: none;
}
.commonality-web-switch {
  display: flex;
  gap: 6px;
}
.commonality-web-switch .panel-toggle {
  padding: 3px 8px;
  font-size: 12px;
}
.commonality-web-switch .panel-toggle[aria-pressed="true"] {
  border-color: var(--accent);
  color: var(--text);
  background: color-mix(in srgb, var(--accent) 16%, var(--panel));
}
.commonality-web-stage {
  position: relative;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}
.commonality-web-stage svg {
  display: block;
  width: 100%;
  height: 100%;
}
.commonality-web-note {
  margin: 0;
  padding: 0 14px 10px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
  letter-spacing: 0;
  text-transform: none;
}
.commonality-web-empty {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 16px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
  text-align: center;
}
.commonality-web-tip {
  position: absolute;
  z-index: 3;
  max-width: min(320px, calc(100% - 16px));
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
  color: var(--text);
  font-size: 12px;
  line-height: 1.45;
  letter-spacing: 0;
  text-transform: none;
  box-shadow: 0 8px 24px var(--shadow);
  pointer-events: none;
}
.commonality-web-tip strong {
  display: block;
  font-weight: 650;
}
.commonality-web-tip-sub {
  margin-bottom: 4px;
  color: var(--muted);
}
.commonality-web-svg text {
  font-family: inherit;
}
.commonality-web-svg {
  user-select: none;
}
.commonality-web-line {
  stroke-width: 1.5;
  opacity: 0.45;
  pointer-events: none;
}
.commonality-web-svg.is-dim .commonality-web-line {
  opacity: 0.1;
}
.commonality-web-svg.is-dim .commonality-web-line.is-hot {
  opacity: 1;
  stroke-width: 2.4;
}
.commonality-web-svg.is-dim .commonality-web-inner {
  opacity: 0.38;
}
.commonality-web-svg.is-dim .commonality-web-inner.is-hot {
  opacity: 1;
}
.commonality-web-inner {
  cursor: pointer;
}
.commonality-web-inner:focus {
  outline: none;
}
.commonality-web-inner-bg {
  fill: var(--panel);
  stroke: var(--line);
}
.commonality-web-inner.is-hot .commonality-web-inner-bg,
.commonality-web-inner:focus .commonality-web-inner-bg {
  stroke: var(--accent);
  stroke-width: 1.75;
}
.commonality-web-inner-label {
  fill: var(--text);
  font-size: 12px;
  font-weight: 650;
  pointer-events: none;
}
.commonality-web-count {
  color: var(--text);
  pointer-events: none;
}
.commonality-web-svg.is-dim .commonality-web-count.is-hot {
  opacity: 1;
}
.commonality-web-count-bg {
  fill: var(--panel);
  stroke: var(--line);
}
.commonality-web-count-num {
  fill: var(--text);
  font-size: 12px;
  font-weight: 650;
  font-variant-numeric: tabular-nums;
}
.commonality-web-count-icon {
  color: var(--text);
}
.commonality-web-outer-label,
.commonality-web-outer-sub {
  paint-order: stroke fill;
  stroke: var(--inset);
  stroke-width: 4px;
  stroke-linejoin: round;
}
.commonality-web-outer-label {
  fill: var(--text);
  font-size: 12px;
  font-weight: 650;
}
.commonality-web-outer-sub {
  fill: var(--muted);
  font-size: 10px;
}
.commonality-empty {
  color: var(--muted);
  font-size: 14px;
  line-height: 1.5;
  max-width: 52rem;
  text-transform: none;
  letter-spacing: 0;
}
.commonality-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  text-transform: none;
  letter-spacing: 0;
}
.commonality-table th,
.commonality-table td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}
.commonality-table th {
  color: var(--muted);
  font-weight: 600;
  position: sticky;
  top: 0;
  background: var(--bg);
}
.commonality-table th.num,
.commonality-table td.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.commonality-phone {
  font-weight: 650;
  cursor: context-menu;
}
.commonality-phone-sub {
  display: block;
  margin-top: 2px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 400;
}
.number-search-panel {
  position: absolute;
  inset: 0;
  z-index: 490;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border-bottom: 1px solid var(--line);
}
.number-search-panel[hidden] {
  display: none !important;
}
.number-search-panel-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  font-weight: 650;
}
.number-search-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 12px 16px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
}
.number-search-controls label {
  display: grid;
  gap: 4px;
  font-size: 12px;
  color: var(--muted);
  text-transform: none;
  letter-spacing: 0;
  min-width: 220px;
  flex: 1 1 260px;
}
.number-search-controls input {
  width: 100%;
  min-height: 34px;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--inset-deep);
  color: var(--text);
  font: inherit;
}
.number-search-controls #number-search-run {
  min-height: 34px;
  padding: 6px 14px;
}
.number-search-opts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  padding-bottom: 2px;
}
.number-search-opt {
  display: inline-flex !important;
  align-items: center;
  gap: 6px;
  min-width: 0 !important;
  flex: 0 0 auto !important;
  margin: 0;
  font-size: 12px;
  color: var(--text);
  text-transform: none;
  letter-spacing: 0;
  cursor: pointer;
  user-select: none;
}
.number-search-opt input {
  width: auto;
  min-height: 0;
  margin: 0;
  padding: 0;
  accent-color: var(--accent, #3d8bfd);
}
.number-search-opt-disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.number-search-summary {
  padding: 10px 14px 0;
  color: var(--muted);
  font-size: 13px;
  text-transform: none;
  letter-spacing: 0;
}
.number-search-body {
  flex: 1;
  overflow: auto;
  padding: 12px 14px 28px;
}
.number-search-section {
  margin: 0 0 18px;
}
.number-search-section h4 {
  margin: 0 0 6px;
  font-size: 13px;
  font-weight: 650;
  letter-spacing: 0.02em;
}
.number-search-subsection {
  margin: 0 0 12px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--inset-deep, transparent);
}
.number-search-subsection h5 {
  margin: 0 0 6px;
  font-size: 12px;
  font-weight: 650;
  letter-spacing: 0.02em;
  color: var(--muted);
}
.number-search-note {
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
  text-transform: none;
  letter-spacing: 0;
}
.number-search-ident-group {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 12px;
  margin: 0 0 8px;
}
.number-search-ident-label {
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  min-width: 4.5rem;
}
.number-search-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.number-search-chip {
  display: inline-block;
  padding: 3px 8px;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--accent);
  text-decoration: none;
  font-size: 12px;
}
a.number-search-chip {
  cursor: pointer;
}
.number-search-chip:hover {
  border-color: var(--accent);
}
.number-search-kv th {
  width: 11rem;
  color: var(--muted);
  font-weight: 500;
  text-align: left;
}
.number-search-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  text-transform: none;
  letter-spacing: 0;
}
.number-search-table th,
.number-search-table td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}
.number-search-table th {
  color: var(--muted);
  font-weight: 600;
  position: sticky;
  top: 0;
  background: var(--bg);
}
.number-search-table td.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.number-search-table a {
  color: var(--accent);
  font-weight: 650;
}
.number-search-report-card {
  width: min(1100px, calc(100vw - 32px));
  max-height: calc(100vh - 48px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.number-search-report-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.number-search-report-head h3 {
  margin: 0;
}
.number-search-report-summary {
  margin: 8px 0 12px;
  color: var(--muted);
  font-size: 13px;
  text-transform: none;
  letter-spacing: 0;
}
.number-search-report-body {
  overflow: auto;
  flex: 1;
}
#header-phone-search-modal .number-search-report-summary:empty {
  display: none;
}
.modal-card.methodology-report-card {
  width: min(860px, calc(100vw - 32px));
  max-height: calc(100vh - 48px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.methodology-report-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.methodology-report-head h3 {
  margin: 0;
}
.methodology-report-head .modal-actions {
  margin-top: 0;
  flex-shrink: 0;
}
.methodology-report-summary {
  margin: 8px 0 12px;
  color: var(--muted);
  font-size: 13px;
}
.methodology-report-body {
  overflow: auto;
  flex: 1;
  min-height: 0;
}
.methodology-report-body h3 {
  margin: 16px 0 8px;
  font-size: 13px;
}
.methodology-report-body h3:first-child {
  margin-top: 0;
}
.methodology-report-body table {
  width: 100%;
  border-collapse: collapse;
  margin: 0 0 8px;
}
.methodology-report-body th,
.methodology-report-body td {
  position: static;
  padding: 6px 8px;
  text-align: left;
  border-bottom: 1px solid var(--line);
  background: transparent;
  color: var(--text);
  font-size: 12px;
  font-weight: 450;
  letter-spacing: 0;
  text-transform: none;
  vertical-align: top;
}
.methodology-report-body th {
  width: 34%;
  color: var(--muted);
  font-weight: 600;
}
.methodology-report-body p {
  margin: 0 0 8px;
  font-size: 13px;
}
.methodology-report-body .methodology-list-label {
  margin: 10px 0 4px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 650;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.methodology-report-body .methodology-list-label:first-child {
  margin-top: 0;
}
.methodology-report-body .methodology-list {
  margin: 0 0 12px;
  padding-left: 1.25em;
}
.methodology-report-body .methodology-list li {
  margin: 3px 0;
  font-size: 13px;
}
.modal-card.data-mapping-card {
  width: min(1100px, calc(100vw - 32px));
  max-height: calc(100vh - 48px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.data-mapping-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}
.data-mapping-head .modal-actions {
  flex-shrink: 0;
  flex-wrap: nowrap;
  margin-top: 0;
}
.data-mapping-head h3 {
  margin: 0;
}
.data-mapping-summary {
  margin: 8px 0 12px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}
.data-mapping-body {
  overflow: auto;
  flex: 1;
  padding-bottom: 4px;
}
.data-mapping-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin: 0 0 12px;
  font-size: 12px;
  color: var(--muted);
}
.data-mapping-pill {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: var(--bg);
  color: var(--text);
  font-weight: 650;
}
.data-mapping-pill.map {
  border-color: color-mix(in srgb, var(--voice-out) 45%, var(--line));
}
.data-mapping-pill.identity {
  border-color: color-mix(in srgb, var(--accent) 45%, var(--line));
}
.data-mapping-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  margin-bottom: 14px;
}
.data-mapping-table th,
.data-mapping-table td {
  padding: 7px 9px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}
.data-mapping-table th {
  color: var(--muted);
  font-weight: 650;
}
.data-mapping-notes {
  margin: 0;
  padding-left: 1.2rem;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}
.data-mapping-notes li {
  margin: 0 0 6px;
}
.modal-card.original-data-card {
  width: min(1100px, calc(100vw - 32px));
  max-height: calc(100vh - 48px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.original-data-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.original-data-line {
  margin: 0;
  padding: 10px 12px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 6px;
  font-family: var(--font-mono);
  font-size: 12px;
  line-height: 1.5;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  word-break: break-word;
  overflow: visible;
  flex: 0 0 auto;
}
.original-data-row-label {
  margin: 10px 0 4px;
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.original-data-row-label:first-child {
  margin-top: 0;
}
.original-data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.original-data-table th,
.original-data-table td {
  padding: 7px 9px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}
.original-data-table th {
  width: 34%;
  color: var(--muted);
  font-weight: 650;
  white-space: nowrap;
}
.original-data-empty {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}
.ask-records-panel {
  position: absolute;
  inset: 0;
  z-index: 490;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border-bottom: 1px solid var(--line);
}
.ask-records-panel[hidden] {
  display: none !important;
}
.ask-records-panel-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  font-weight: 650;
}
.ask-records-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-end;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
}
.ask-records-controls label {
  flex: 1 1 280px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  color: var(--muted);
}
.ask-records-controls textarea {
  width: 100%;
  min-height: 58px;
  resize: vertical;
  font: inherit;
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 8px 10px;
}
.ask-records-controls #ask-records-run,
.ask-records-clarify #ask-records-clarify-submit {
  flex: 0 0 auto;
}
.ask-records-clarify {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-end;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--accent) 8%, var(--panel));
}
.ask-records-clarify[hidden] {
  display: none !important;
}
.ask-records-clarify-prompt {
  flex: 1 1 100%;
  margin: 0;
  font-size: 13px;
  line-height: 1.4;
}
.ask-records-clarify label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  color: var(--muted);
}
.ask-records-clarify input[type="date"] {
  font: inherit;
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 6px 8px;
}
.ask-records-summary {
  padding: 10px 14px 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.4;
}
.ask-records-body {
  flex: 1;
  overflow: auto;
  padding: 12px 14px 24px;
}
.live-pings-help {
  margin: 0 0 14px;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.45;
  text-transform: none;
  letter-spacing: normal;
}
.modal-card.live-pings-card {
  width: min(640px, 96vw);
  max-height: min(88vh, 760px);
  overflow: auto;
  position: relative;
}
.live-pings-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  position: sticky;
  top: 0;
  z-index: 2;
  margin: -4px 0 4px;
  padding: 2px 0 10px;
  background: var(--panel);
  border-bottom: 1px solid var(--line);
}
.live-pings-head h3 {
  margin: 0;
  color: var(--text);
}
.modal-corner-close {
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  margin: 0;
  padding: 0;
  border: 1px solid var(--border-control);
  border-radius: var(--radius-control);
  background: var(--inset);
  color: var(--text);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
.modal-corner-close:hover,
.modal-corner-close:focus-visible {
  border-color: var(--text);
  color: var(--text);
}
.live-pings-delivery {
  margin: 0 0 14px;
  padding: 12px 14px;
  border: 1px solid var(--danger);
  border-radius: var(--radius-inner);
  background: var(--danger-bg);
  color: var(--danger-text);
  font-size: 14px;
  font-weight: 650;
  line-height: 1.4;
  text-transform: none;
  letter-spacing: normal;
  word-break: normal;
  overflow-wrap: break-word;
}
.live-pings-delivery-label {
  font-size: 12px;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 8px;
  color: var(--danger-text);
}
.live-pings-delivery-addr {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.live-pings-delivery-code,
.live-pings-delivery code.live-pings-delivery-code {
  display: block;
  flex: 1 1 auto;
  font-family: var(--font-mono);
  font-size: 16px;
  font-weight: 500;
  line-height: 1.3;
  color: var(--text);
  word-break: break-all;
  background: var(--inset);
  border: 1px solid var(--border-control);
  border-radius: var(--radius-control);
  padding: 10px 12px;
}
.live-pings-delivery .live-pings-copy {
  flex: 0 0 auto;
  background: transparent;
  border-color: var(--danger-text);
  color: var(--danger-text);
  font-weight: 650;
}
.live-pings-delivery .live-pings-copy:hover,
.live-pings-delivery .live-pings-copy:focus-visible {
  background: color-mix(in srgb, var(--danger-text) 14%, transparent);
  border-color: var(--danger-text);
  color: var(--danger-text);
}
.live-pings-delivery-note {
  display: block;
  margin-top: 4px;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.4;
  color: var(--danger-text);
}
.live-pings-delivery-note code {
  font-size: 12px;
  font-weight: 700;
  word-break: break-all;
}
.live-pings-delivery[hidden] {
  display: none !important;
}
.live-pings-controls {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 12px;
  align-items: end;
  margin: 0 0 10px;
  position: relative;
  z-index: 0;
  clear: both;
}
.live-pings-controls label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  justify-content: flex-end;
  min-width: 0;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
}
.live-pings-controls label[hidden] {
  display: none !important;
}
.live-pings-field-label {
  display: block;
  line-height: 1.25;
  min-height: 0;
}
.modal-card.live-pings-card .live-pings-controls input[type="text"],
.modal-card.live-pings-card .live-pings-controls select {
  font: inherit;
  text-transform: none;
  letter-spacing: normal;
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--border-control);
  border-radius: var(--radius-control);
  padding: 8px 10px;
  width: 100%;
  height: 38px;
  box-sizing: border-box;
  margin: 0;
}
.live-pings-notifications {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 12px;
  padding: 10px 12px;
  border: 1px solid var(--border-control);
  border-radius: var(--radius-inner);
  background: var(--card-raised);
}
.live-pings-section-label {
  font-size: 12px;
  font-weight: 650;
  color: var(--text);
  text-transform: none;
  letter-spacing: normal;
}
.live-pings-notify-row {
  display: flex;
  gap: 16px;
  align-items: center;
  margin-bottom: 10px;
}
.live-pings-check {
  display: flex !important;
  flex-direction: row !important;
  align-items: center;
  gap: 6px !important;
  color: var(--text) !important;
  font-size: 13px !important;
  text-transform: none !important;
  letter-spacing: normal !important;
  min-width: auto !important;
}
.live-pings-check input[type="checkbox"],
.live-pings-check input[type="radio"] {
  appearance: none;
  -webkit-appearance: none;
  width: 16px;
  height: 16px;
  margin: 0;
  flex: 0 0 16px;
  border: 1px solid var(--border-control);
  background: var(--inset);
  display: inline-grid;
  place-content: center;
  cursor: pointer;
  accent-color: var(--accent);
}
.live-pings-check input[type="checkbox"] {
  border-radius: 3px;
}
.live-pings-check input[type="radio"] {
  border-radius: 50%;
}
.live-pings-check input[type="checkbox"]:checked,
.live-pings-check input[type="radio"]:checked {
  background: var(--accent);
  border-color: var(--accent);
}
.live-pings-check input[type="checkbox"]:checked::before {
  content: "";
  width: 4px;
  height: 8px;
  border: solid var(--on-accent);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg) translate(-1px, -1px);
}
.live-pings-check input[type="radio"]:checked::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--on-accent);
}
.live-pings-check input:focus-visible {
  outline: 1px solid var(--text);
  outline-offset: 2px;
}
.live-pings-check-disabled {
  color: var(--muted) !important;
  cursor: not-allowed;
}
.live-pings-check-disabled input {
  cursor: not-allowed;
  background: var(--inset);
  border-color: var(--border-control);
}
.live-pings-email-options {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 2px 0 4px 22px;
}
.live-pings-email-options[hidden] {
  display: none !important;
}
.live-pings-email-to-wrap {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  margin: 0;
}
.live-pings-email-to-wrap[hidden] {
  display: none !important;
}
.live-pings-email-to-wrap input {
  font: inherit;
  text-transform: none;
  letter-spacing: normal;
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 8px 10px;
  width: 100%;
  box-sizing: border-box;
}
.live-pings-email-modes {
  margin: 0;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.live-pings-email-modes legend {
  padding: 0 4px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
}
.live-pings-email-mode-hint {
  margin: 2px 0 0;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.4;
  text-transform: none;
  letter-spacing: normal;
}
.live-pings-shape-picker {
  margin-top: 6px;
  padding-top: 8px;
  border-top: 1px solid var(--line);
}
.live-pings-shape-picker[hidden] {
  display: none !important;
}
.live-pings-shape-picker-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  margin-bottom: 6px;
}
.live-pings-shape-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 140px;
  overflow: auto;
}
.live-pings-shape-list .live-pings-check {
  margin: 0;
}
.live-pings-shape-swatch {
  width: 10px;
  height: 10px;
  border-radius: 2px;
  flex: 0 0 auto;
  border: 1px solid var(--border-control);
}
.live-pings-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
}
.live-pings-action-help {
  margin: 0 0 12px;
  padding-left: 18px;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.45;
  text-transform: none;
  letter-spacing: normal;
}
.live-pings-action-help li {
  margin-bottom: 4px;
}
.live-pings-action-help strong {
  color: var(--text);
  font-weight: 650;
}
.live-pings-summary {
  font-size: 12px;
  color: var(--muted);
  margin: 0 0 8px;
}
.live-pings-body {
  min-height: 0;
  max-height: none;
  overflow: visible;
  margin: 0;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line);
}
.live-pings-body .ask-records-empty {
  margin: 2px 0 0;
  max-width: none;
  color: var(--muted);
  text-align: left;
  line-height: 1.4;
}
.live-pings-section {
  margin: 12px 0 6px;
  font-size: 13px;
  color: var(--text);
  text-transform: none;
  letter-spacing: normal;
}
.live-pings-watch {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px 14px;
  margin-bottom: 10px;
  background: var(--panel);
  overflow: hidden;
  position: relative;
  z-index: 1;
}
.live-pings-watch-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-top: 4px;
  position: relative;
  z-index: 2;
}
.live-pings-setup-label {
  margin: 4px 0 10px;
  font-size: 12px;
  font-weight: 650;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}
.live-pings-addr {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-bottom: 6px;
}
.live-pings-addr code {
  font-size: 13px;
  word-break: break-all;
}
.live-pings-meta {
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 8px;
  text-transform: none;
  letter-spacing: normal;
}
.live-pings-pending {
  margin: 0;
  padding-left: 18px;
  font-size: 13px;
  color: var(--muted);
}
.ask-records-empty {
  margin: 24px auto;
  max-width: 32rem;
  color: var(--muted);
  text-align: center;
  line-height: 1.45;
}
.ask-records-plan {
  margin: 0 0 12px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  font-size: 12px;
  color: var(--muted);
  line-height: 1.45;
}
.ask-records-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.ask-records-table th,
.ask-records-table td {
  padding: 7px 9px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}
.ask-records-table th {
  color: var(--muted);
  font-weight: 650;
  white-space: nowrap;
}
.ask-records-table td.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.ask-records-table a {
  color: var(--accent);
}
.ask-records-note {
  margin-top: 2px;
  font-size: 12px;
  color: var(--muted);
}
.msg-row {
  display: flex;
  width: 100%;
}
.msg-row.out {
  justify-content: flex-end;
}
.msg-row.in {
  justify-content: flex-start;
}
.msg-bubble {
  max-width: min(72%, 36rem);
  padding: 10px 12px 8px;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: var(--panel);
  box-shadow: none;
}
.msg-row.out .msg-bubble {
  background: color-mix(in srgb, var(--accent) 18%, var(--panel));
  border-color: color-mix(in srgb, var(--accent) 35%, var(--line));
  border-bottom-right-radius: 4px;
}
.msg-row.in .msg-bubble {
  background: color-mix(in srgb, var(--panel) 88%, #fff);
  border-bottom-left-radius: 4px;
}
.msg-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  margin-bottom: 6px;
  font-size: 11px;
  color: var(--muted);
}
.msg-meta .msg-party {
  color: var(--text);
  font-weight: 650;
}
.msg-text {
  white-space: pre-wrap;
  word-break: break-word;
  color: var(--text);
  font-size: 14px;
  line-height: 1.4;
}
.msg-time {
  margin-top: 6px;
  font-size: 11px;
  color: var(--muted);
  text-align: right;
}
.msg-row.in .msg-time {
  text-align: left;
}
.record-das-warn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 14px;
  height: 14px;
  min-width: 14px;
  min-height: 14px;
  flex: 0 0 14px;
  margin-left: 4px;
  border: 1px solid #c45c5c;
  color: var(--danger-text);
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  vertical-align: middle;
  cursor: help;
  text-transform: none;
  letter-spacing: 0;
  overflow: hidden;
}
.record-csl-warn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  margin-left: 4px;
  border: 1px solid #c45c5c;
  color: var(--danger-text);
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  vertical-align: middle;
  cursor: help;
  text-transform: none;
  letter-spacing: 0;
}
.csl-miss-dot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 14px;
  height: 14px;
  min-width: 14px;
  min-height: 14px;
  flex: 0 0 14px;
  margin-left: 4px;
  border-radius: 50%;
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
  vertical-align: middle;
  cursor: help;
}
.csl-miss-dot-sector {
  background: #e6b325;
  color: #1a1d24;
}
.csl-miss-dot-site {
  background: #c45c5c;
  color: #fff;
}
.csl-miss-banner {
  display: flex;
  gap: 6px;
  align-items: flex-start;
  margin: 0 0 8px;
  color: var(--danger-text);
  font-size: 12px;
  line-height: 1.35;
}
.csl-miss-banner .record-csl-warn {
  margin-left: 0;
  flex-shrink: 0;
  margin-top: 1px;
}
body.hide-record-warnings .record-das-warn,
body.hide-record-warnings .record-csl-warn,
body.hide-record-warnings .tree-tot-warn,
body.hide-record-warnings .tree-warn,
body.hide-record-warnings .record-warning-line,
body.hide-record-warnings .csl-miss-banner,
.is-warn-hidden {
  display: none !important;
}
.das-caution-row td:nth-child(2),
.csl-mismatch-row td:nth-child(2) {
  white-space: nowrap;
}
.unmatched-list {
  max-height: min(360px, 50vh);
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: 6px;
  border: 1px solid var(--line);
  background: var(--bg);
  padding: 8px;
}
.unmatched-row {
  display: grid;
  grid-template-columns: 48px 1.2fr 0.9fr 1fr 1fr;
  gap: 8px;
  font-size: 12px;
  color: var(--text);
  text-transform: none;
  letter-spacing: 0;
  cursor: pointer;
  border-radius: 4px;
  padding: 4px 6px;
  outline: none;
}
.unmatched-row:hover,
.unmatched-row:focus-visible {
  background: color-mix(in srgb, var(--accent) 12%, transparent);
}
.unmatched-seq { color: var(--accent); font-weight: 600; }
.unmatched-when,
.unmatched-type,
.unmatched-site,
.unmatched-cell { color: var(--muted); }
.unmatched-extra {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}
.unmatched-source {
  color: var(--accent);
  font-weight: 600;
}
.unmatched-card {
  width: min(720px, calc(100% - 32px));
}
.unmatched-card p,
.unmatched-list,
.unmatched-node-head,
.unmatched-sector-head,
.unmatched-row {
  user-select: text;
  -webkit-user-select: text;
}
.unmatched-node-label,
.unmatched-sector-label,
.unmatched-node-meta,
.unmatched-sector-meta,
.unmatched-site,
.unmatched-cell,
.unmatched-seq {
  cursor: text;
}
.unmatched-view {
  display: flex;
  gap: 8px;
}
.unmatched-view button.is-active {
  background: var(--accent);
  color: var(--on-accent);
  border-color: var(--accent);
}
.unmatched-node {
  border: 1px solid var(--line);
  border-radius: 4px;
  background: color-mix(in srgb, var(--text) 4%, transparent);
}
.unmatched-node-head,
.unmatched-sector-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  margin: 0;
  padding: 7px 8px;
  background: transparent;
  color: var(--text);
  border: 0;
  border-radius: 0;
  font-size: 12px;
  font-weight: 600;
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
  cursor: pointer;
}
.unmatched-node-head::before,
.unmatched-sector-head::before {
  content: "▸";
  flex: 0 0 auto;
  margin-right: 6px;
  color: var(--muted);
  font-weight: 600;
}
.unmatched-node-head[aria-expanded="true"]::before,
.unmatched-sector-head[aria-expanded="true"]::before {
  content: "▾";
}
.unmatched-node-head:hover,
.unmatched-sector-head:hover,
.unmatched-node-head:focus-visible,
.unmatched-sector-head:focus-visible {
  background: color-mix(in srgb, var(--accent) 12%, transparent);
}
.unmatched-node-label,
.unmatched-sector-label {
  flex: 1 1 auto;
  min-width: 0;
}
.unmatched-node-meta,
.unmatched-sector-meta {
  flex: 0 0 auto;
  color: var(--muted);
  font-weight: 500;
}
.unmatched-sectors,
.unmatched-sector-records {
  display: flex;
  flex-direction: column;
}
.unmatched-sectors[hidden],
.unmatched-sector-records[hidden] {
  display: none !important;
}
.unmatched-sector {
  border-top: 1px solid var(--line);
}
.unmatched-sector-head {
  padding-left: 22px;
  font-weight: 500;
}
.unmatched-sector-records {
  gap: 2px;
  padding: 0 4px 6px 28px;
}
.warn { color: var(--accent); font-size: 12px; margin-bottom: 12px; }
fieldset { border: 1px solid var(--line); padding: 8px 10px; }
fieldset label { display: flex; gap: 8px; align-items: center; margin: 4px 0; color: var(--text); text-transform: none; letter-spacing: 0; font-size: 13px; }
select {
  display: block;
  width: 100%;
  margin-top: 6px;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 6px 8px;
}
label.slider.is-locked {
  color: var(--text-subtle);
}
label.slider.is-locked select {
  color: var(--text-subtle);
  cursor: not-allowed;
  opacity: 0.72;
}
.device-list { display: flex; flex-direction: column; gap: 6px; margin: 0 0 14px; }
.master-display-heading {
  margin: 2px 0 12px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.3;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.rail-controls h3.master-display-heading + .slider + h3.master-display-heading {
  margin-top: 18px;
}
.file-mgmt-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.file-mgmt-empty {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
}
.file-mgmt-row {
  display: grid;
  grid-template-columns: 36px 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--bg);
}
.file-mgmt-logo {
  width: 36px;
  height: 22px;
  object-fit: contain;
  object-position: left center;
  flex-shrink: 0;
  border-radius: 3px;
  display: block;
  box-sizing: border-box;
}
.file-mgmt-logo-empty {
  display: block;
  width: 36px;
  height: 22px;
  background: transparent;
  padding: 0;
}
.file-mgmt-meta { min-width: 0; }
.file-mgmt-name {
  display: block;
  font-size: 12px;
  color: var(--text);
  word-break: break-word;
}
.file-mgmt-sub {
  display: block;
  margin-top: 2px;
  font-size: 11px;
  color: var(--muted);
}
.file-mgmt-row button {
  margin: 0;
  padding: 4px 8px;
  font-size: 11px;
}
.file-mgmt-reset {
  display: block;
  width: 100%;
  margin: 12px 0 0;
  box-sizing: border-box;
}
.device-row {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 8px;
  align-items: center;
}
.device-row .device-id {
  color: var(--text);
  font-size: 12px;
  text-transform: none;
  letter-spacing: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.swatch {
  display: inline-block;
  width: 10px;
  height: 10px;
  vertical-align: middle;
}
.slider input { width: 100%; }
.rail .control-tune-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 6px;
}
.rail .control-tune-row input[type="number"] {
  width: 96px;
  flex: 0 0 auto;
  margin: 0;
  padding: 6px 8px;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  font-size: 13px;
}
.rail .control-tune-unit {
  color: var(--muted);
  font-size: 13px;
}
.rail .control-check {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: -8px 0 12px;
  color: var(--text);
  font-size: 13px;
}
.rail .control-check input {
  width: auto;
  flex: 0 0 auto;
  margin: 0;
}
.rail .control-tune-note {
  margin: -6px 0 14px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}
.wedge-angle-reset {
  border: 0;
  background: none;
  padding: 0;
  color: var(--accent);
  font: inherit;
  font-size: 12px;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.wedge-angle-reset:hover {
  color: var(--text);
}

body.map-page main {
  grid-area: main;
  display: grid;
  grid-template-rows: 1fr 14px var(--table-height, 240px);
  min-width: 0;
  position: relative;
}
body.map-page.rail-hidden {
  grid-template-columns: 1fr;
  grid-template-areas:
    "top"
    "main";
}
body.map-page.rail-hidden .rail,
body.map-page.rail-hidden .rail-resizer { display: none; }
body.map-page.rail-hidden .reopen-rail { display: inline-flex; }
body.map-page.table-hidden main { grid-template-rows: 1fr; }
body.map-page.table-hidden .table-wrap,
body.map-page.table-hidden .table-resizer { display: none; }
body.map-page.table-hidden .reopen-table { display: inline-flex; }
body.map-page.map-timeline-open .reopen-table,
body.map-page.commonality-open .reopen-table { display: none !important; }
.table-resizer {
  cursor: row-resize;
  background: var(--bg);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
}
.table-grip {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 12px;
  border-radius: 8px;
  background: var(--panel);
  border: 1px solid var(--line);
  color: var(--text);
  font-size: 11px;
  letter-spacing: 0;
  line-height: 1;
  user-select: none;
  pointer-events: none;
  text-transform: none;
}
.table-grip span {
  display: inline-block;
  transform: rotate(90deg);
  letter-spacing: -2px;
}
.table-resizer:hover,
body.table-resizing .table-resizer {
  background: var(--inset);
}
.table-resizer:hover .table-grip,
body.table-resizing .table-grip {
  border-color: var(--accent);
  color: var(--accent);
}
body.table-resizing { cursor: row-resize; user-select: none; }
body.map-page.commonality-open .table-resizer {
  pointer-events: none;
  cursor: default;
}
body.map-page.commonality-open .table-grip {
  visibility: hidden;
}
.reopen {
  display: none;
  position: absolute;
  z-index: 1000;
  border: 1px solid rgba(26, 29, 36, 0.2);
  border-radius: 4px;
  background: rgba(255, 255, 255, 0.55);
  color: #1a1d24;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: none;
  appearance: none;
  -webkit-appearance: none;
}
.reopen:hover,
.reopen:focus-visible {
  background: rgba(255, 255, 255, 0.72);
  color: #1a1d24;
}
.reopen.panel-collapse {
  width: 24px;
  height: 24px;
}
.reopen-rail { top: 84px; left: 12px; }
.reopen-table { bottom: 12px; left: 50%; transform: translateX(-50%); }
#map { height: 100%; background: #d9d5d0; }
.map-host { min-height: 0; }
.table-wrap { overflow: hidden; display: flex; flex-direction: column; min-height: 0; }
.table-scroll { overflow: auto; flex: 1; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 6px 10px; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
th { color: var(--muted); font-weight: 600; position: sticky; top: 0; background: var(--bg); }
tr.active { background: var(--hover); }
tr.wedge-highlight { background: rgba(224, 161, 6, 0.28); }
tr.wedge-highlight.active { background: rgba(224, 161, 6, 0.4); }
tr.starlink-highlight { background: rgba(250, 204, 21, 0.42); }
tr.starlink-highlight.active,
tr.starlink-highlight.record-selected { background: rgba(250, 204, 21, 0.55); }
#events-body tr.record-selected,
#events-body tr.record-selected.active,
#events-body tr.wedge-highlight.record-selected,
#events-body tr.das-caution-row.record-selected,
#events-body tr.csl-mismatch-row.record-selected,
#events-body tr.tot-extrapolated-row.record-selected {
  background: color-mix(in srgb, #b15a56 22%, var(--bg));
  box-shadow: inset 4px 0 0 #b15a56;
}
/* AT&T multi-tower data: towers after the first (Time on Tower departure estimate) */
#events-body tr.tot-extrapolated-row td {
  color: #f0a878;
}
html[data-theme="light"] #events-body tr.tot-extrapolated-row td {
  color: #c46a3a;
}
.record-popup-item.tot-extrapolated-text {
  color: #f0a878;
}
html[data-theme="light"] .record-popup-item.tot-extrapolated-text {
  color: #c46a3a;
}
/* Same Time on Tower handoff color in the Records tree. */
.tree-leaf.tot-extrapolated-text .tree-label {
  color: #f0a878;
}
html[data-theme="light"] .tree-leaf.tot-extrapolated-text .tree-label {
  color: #c46a3a;
}
.tot-depart-tip {
  position: fixed;
  z-index: 10050;
  max-width: min(340px, calc(100vw - 24px));
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  color: var(--text);
  font-size: 12px;
  line-height: 1.45;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
  pointer-events: none;
}
.src-site_list { color: var(--accent); }
.src-cdr_embedded { color: var(--cdr); }
.src-unmapped { color: var(--unmapped); }

.leaflet-gl-layer,
.leaflet-gl-layer .maplibregl-map {
  z-index: 0;
}
.maplibregl-ctrl-bottom-left,
.maplibregl-ctrl-bottom-right,
.maplibregl-ctrl-top-left,
.maplibregl-ctrl-top-right,
.maplibregl-ctrl-logo {
  display: none !important;
}
.leaflet-control-layers {
  border: 1px solid rgba(26, 29, 36, 0.2) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  background: rgba(255, 255, 255, 0.55) !important;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.leaflet-control-layers-toggle {
  width: 36px !important;
  height: 36px !important;
  background-color: transparent !important;
}
#map .leaflet-control-zoom,
#map .leaflet-bar.leaflet-control:not(.horizon-ping-refresh) {
  border: 1px solid rgba(26, 29, 36, 0.2) !important;
  background: rgba(255, 255, 255, 0.55) !important;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: none !important;
}
#map .leaflet-control-zoom a {
  width: 22px !important;
  height: 22px !important;
  line-height: 22px !important;
  font-size: 14px !important;
  background-color: transparent !important;
}
#map .leaflet-control-zoom a:hover {
  background-color: rgba(255, 255, 255, 0.72) !important;
}
.horizon-drop-pin {
  margin-top: 0 !important;
  border: 1px solid rgba(26, 29, 36, 0.2) !important;
  border-radius: 0 !important;
  overflow: visible;
  position: relative;
  background: rgba(255, 255, 255, 0.55) !important;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.horizon-drop-pin button.horizon-ruler-clear {
  position: absolute;
  right: calc(100% + 8px);
  bottom: 0;
  height: 36px;
  margin: 0;
  padding: 0 12px;
  border: 1px solid rgba(26, 29, 36, 0.2);
  background: rgba(255, 255, 255, 0.92);
  color: #1a1d24;
  font: 600 12px/36px var(--font-sans);
  white-space: nowrap;
  cursor: pointer;
}
.horizon-drop-pin button.horizon-ruler-clear:hover {
  background: #fff;
}
.horizon-drop-pin button.horizon-ruler-clear[hidden] {
  display: none !important;
}
.horizon-drop-pin a.horizon-drop-pin-btn {
  width: 36px;
  height: 36px;
  display: flex !important;
  align-items: center;
  justify-content: center;
  background: transparent;
  border-bottom: 0;
  line-height: 0;
  text-align: center;
  padding: 0;
}
.horizon-drop-pin a.horizon-drop-pin-btn:hover {
  background: rgba(255, 255, 255, 0.72);
}
.horizon-drop-pin a.horizon-drop-pin-btn.active {
  background: rgba(26, 29, 36, 0.88);
}
.horizon-drop-pin a.horizon-drop-pin-btn.active .horizon-draw-icon {
  color: #e0a106;
}
.horizon-drop-pin a.horizon-draw-btn {
  width: 36px;
  height: 36px;
  display: flex !important;
  align-items: center;
  justify-content: center;
  background: transparent;
  border-bottom: 0;
  line-height: 0;
  text-align: center;
  padding: 0;
}
.horizon-drop-pin a.horizon-draw-btn:hover {
  background: rgba(255, 255, 255, 0.72);
}
.horizon-drop-pin a.horizon-draw-btn.active {
  background: rgba(26, 29, 36, 0.88);
}
.horizon-draw-icon {
  display: block;
  width: 18px;
  height: 18px;
  margin: 0 auto;
  color: #1a1d24;
}
.horizon-drop-pin a.horizon-draw-btn.active .horizon-draw-icon {
  color: #e0a106;
}
.horizon-drop-pin a.horizon-snapshot-btn.just-captured,
.horizon-drop-pin a.horizon-video-snapshot-btn.just-captured {
  background: #1a1d24;
}
.horizon-drop-pin a.horizon-snapshot-btn.just-captured .horizon-draw-icon,
.horizon-drop-pin a.horizon-video-snapshot-btn.just-captured .horizon-draw-icon {
  color: #e0a106;
}
#map.horizon-snapshotting .leaflet-control-zoom,
#map.horizon-snapshotting .leaflet-control-layers,
#map.horizon-snapshotting .horizon-ping-refresh,
#map.horizon-snapshotting .horizon-drop-pin {
  visibility: hidden !important;
}

/* Ping refresh sits under +/- zoom */
.horizon-ping-refresh {
  display: none;
  clear: both;
  margin-top: 6px;
}
.horizon-ping-refresh.is-visible {
  display: block;
}
.horizon-ping-refresh a.horizon-ping-refresh-btn {
  width: 30px;
  height: 30px;
  line-height: 30px;
  font-size: 16px;
  font-weight: 700;
  text-align: center;
  color: #7f1d1d;
  background: #fecaca;
}
.horizon-ping-refresh a.horizon-ping-refresh-btn:hover {
  background: #fca5a5;
  color: #7f1d1d;
}
.horizon-ping-refresh a.horizon-ping-refresh-btn.is-busy {
  opacity: 0.55;
  pointer-events: none;
}
#map.horizon-snapshot-flash::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1200;
  pointer-events: none;
  background: #fff;
  animation: horizon-snapshot-flash 240ms ease-out;
}
@keyframes horizon-snapshot-flash {
  from { opacity: 0.55; }
  to { opacity: 0; }
}
.horizon-map-overlay {
  position: fixed;
  z-index: 4000;
  min-width: 148px;
  margin: 0;
  padding: 6px;
  background: #fff;
  color: #333;
  border: 1px solid #111;
  border-radius: 0;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
  font: 13px/1.4 "Helvetica Neue", Arial, Helvetica, sans-serif;
  text-transform: none;
  letter-spacing: 0;
}
.horizon-map-overlay[hidden] {
  display: none !important;
}
.horizon-map-overlay-option {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  margin: 0;
  padding: 7px 8px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: #333;
  font: inherit;
  font-weight: 400;
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
  cursor: pointer;
}
.horizon-map-overlay-option:hover,
.horizon-map-overlay-option.is-selected {
  background: #f0f0f0;
}
.horizon-map-overlay-option span {
  user-select: none;
}
.draw-tool-glyph {
  flex: 0 0 auto;
  width: 22px;
  height: 16px;
  display: block;
  position: relative;
  color: #1a1d24;
}
.draw-tool-glyph-arrow {
  background: currentColor;
  clip-path: polygon(0 40%, 58% 40%, 58% 18%, 100% 50%, 58% 82%, 58% 60%, 0 60%);
}
.draw-tool-glyph-line {
  background: linear-gradient(
    to top right,
    transparent calc(50% - 1.25px),
    currentColor calc(50% - 1.25px),
    currentColor calc(50% + 1.25px),
    transparent calc(50% + 1.25px)
  );
}
.draw-tool-glyph-circle {
  width: 16px;
  height: 16px;
  margin-left: 3px;
  border: 2px solid currentColor;
  border-radius: 50%;
  box-sizing: border-box;
}
.draw-tool-glyph-rect {
  width: 18px;
  height: 13px;
  margin-left: 2px;
  margin-top: 1.5px;
  border: 2px solid currentColor;
  box-sizing: border-box;
}
.draw-tool-glyph-square {
  width: 14px;
  height: 14px;
  margin-left: 4px;
  margin-top: 1px;
  border: 2px solid currentColor;
  box-sizing: border-box;
}
.draw-tool-glyph-polygon {
  width: 16px;
  height: 14px;
  margin-left: 3px;
  margin-top: 1px;
  background: currentColor;
  clip-path: polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%);
  opacity: 0.92;
}
.modal-hint {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}
.location-filter-card {
  width: min(560px, 94vw);
  max-height: min(80vh, 640px);
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.location-filter-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border-radius: 6px;
  background: #1e3a5f;
  color: #f4f7fb;
}
.location-filter-select-all {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 650;
  cursor: pointer;
}
.location-filter-select-all input {
  accent-color: #c9a227;
}
.location-filter-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  overflow: auto;
  max-height: min(48vh, 420px);
  padding-right: 2px;
}
.location-filter-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
}
.location-filter-enable {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  cursor: pointer;
}
.location-filter-swatch {
  width: 14px;
  height: 14px;
  border-radius: 2px;
  border: 1px solid rgba(0, 0, 0, 0.25);
  flex: 0 0 auto;
}
.location-filter-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 600;
}
.location-filter-io {
  display: inline-flex;
  flex-wrap: wrap;
  border: 1px solid var(--line);
  border-radius: 999px;
  overflow: hidden;
  background: var(--panel);
}
.location-filter-io-btn {
  border: 0;
  background: transparent;
  color: var(--text);
  padding: 4px 8px;
  font: inherit;
  font-size: 11px;
  font-weight: 650;
  cursor: pointer;
  white-space: nowrap;
}
.location-filter-io-btn.is-active {
  background: color-mix(in srgb, var(--accent) 22%, var(--inset));
  color: var(--text);
}
html[data-theme="light"] .location-filter-io-btn.is-active {
  background: #2a2f38;
  color: #fff;
}
.location-filter-io-btn.is-disabled,
.location-filter-io-btn:disabled {
  opacity: 0.45;
  cursor: default;
}
.location-filter-empty {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}
.location-filter-draw-btn {
  display: block;
  margin-top: 10px;
  width: 100%;
}
.records-filter-badge {
  position: absolute;
  top: 12px;
  right: 54px;
  z-index: 650;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
}
.records-filter-badge[hidden] {
  display: none !important;
}
.map-host:has(#records-filter-badge:not([hidden])) .analytical-marker-badge {
  top: 50px;
}
.records-filter-badge-btn {
  appearance: none;
  border: 1px solid color-mix(in srgb, #fff 55%, var(--line));
  background: color-mix(in srgb, #fff 78%, transparent);
  color: #d32f2f;
  font: inherit;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  cursor: pointer;
  padding: 6px 10px;
  border-radius: 6px;
  backdrop-filter: blur(6px);
  box-shadow: 0 2px 10px color-mix(in srgb, #000 18%, transparent);
}
.records-filter-badge-btn:hover,
.records-filter-badge-btn:focus-visible {
  text-decoration: underline;
  background: color-mix(in srgb, #fff 90%, transparent);
}
.records-filter-badge-menu {
  min-width: 150px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  box-shadow: 0 8px 22px var(--shadow);
}
.records-filter-badge-menu[hidden] {
  display: none !important;
}
.records-filter-badge-menu button {
  display: block;
  width: 100%;
  text-align: left;
  border: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 12px;
  font-weight: 650;
  padding: 8px 10px;
  border-radius: 4px;
  cursor: pointer;
}
.records-filter-badge-menu button:hover,
.records-filter-badge-menu button:focus-visible {
  background: color-mix(in srgb, var(--text) 8%, transparent);
}
.streetview-panel {
  position: absolute;
  right: 12px;
  bottom: 28px;
  z-index: 750;
  width: 420px;
  height: 340px;
  min-width: 280px;
  min-height: 200px;
  max-width: min(640px, calc(100% - 24px));
  max-height: min(520px, calc(100% - 48px));
  display: flex;
  flex-direction: column;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: 0 8px 24px var(--shadow);
  overflow: hidden;
  resize: both;
}
.streetview-panel[hidden] {
  display: none !important;
}
.streetview-panel-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 8px 6px 12px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  flex: 0 0 auto;
}
.streetview-panel-title {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.streetview-panel-title strong {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
}
.streetview-panel-title span {
  color: var(--muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  text-transform: none;
  letter-spacing: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.streetview-panel-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
}
.streetview-panel-actions .secondary,
.streetview-panel-actions .panel-toggle {
  padding: 4px 8px;
  font-size: 12px;
}
.streetview-frame {
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  border: 0;
  background: #111;
}
.streetview-peg {
  background: transparent;
  border: 0;
}
.streetview-peg-dot {
  display: block;
  width: 14px;
  height: 14px;
  margin: 2px;
  border-radius: 50%;
  border: 2px solid #1a1d24;
  background: #e0a106;
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.85), 0 2px 6px rgba(0, 0, 0, 0.4);
}
.rail-filter-body {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding-bottom: 8px;
}
.rail-filter-block {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.rail-filter-block + .rail-filter-block {
  padding-top: 12px;
  border-top: 1px solid var(--line);
}
.rail-filter-heading {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}
.rail-filter-enable {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
.rail-filter-datetime-fields {
  display: grid;
  gap: 8px;
}
.rail-filter-datetime-fields label {
  display: grid;
  gap: 4px;
  font-size: 12px;
  color: var(--muted);
}
.rail-filter-datetime-fields input[type="datetime-local"] {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
.rail-filter-clear-btn {
  align-self: start;
  font-size: 12px;
}
.rail-location-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: nowrap;
}
.rail-location-actions .rail-filter-clear-btn {
  align-self: center;
  padding: 6px 8px;
  white-space: nowrap;
}
.location-results-card {
  width: min(960px, calc(100% - 32px));
  max-height: calc(100dvh - 48px);
}
.location-results-list {
  max-height: min(420px, 55vh);
  overflow: auto;
  border: 1px solid var(--line);
  background: var(--bg);
}
.location-results-list table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
.location-results-list th,
.location-results-list td {
  text-align: left;
  padding: 6px 8px;
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
  text-transform: none;
  letter-spacing: 0;
  font-weight: 500;
}
.location-results-list th {
  position: sticky;
  top: 0;
  background: var(--panel);
  font-size: 11px;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--muted);
}
.location-results-list tbody tr {
  cursor: pointer;
}
.location-results-list tbody tr:hover {
  background: color-mix(in srgb, var(--accent) 12%, transparent);
}
.location-results-note {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
  text-transform: none;
  letter-spacing: 0;
}
.rail-location-list-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 11px;
  font-weight: 650;
  color: var(--muted);
}
.rail-filter-body .location-filter-list {
  max-height: none;
}
.rail-filter-body .location-filter-row {
  grid-template-columns: 1fr;
  gap: 8px;
}
.rail-filter-body .location-filter-io {
  justify-self: start;
}
.map-items-actions {
  display: flex;
  align-items: stretch;
  gap: 8px;
  margin: 0 0 8px;
}
.map-items-actions button {
  flex: 1 1 0;
  width: auto;
  min-width: 0;
  margin: 0;
  padding: 6px 8px;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  line-height: 1.2;
  font-size: 12px;
  font-weight: 650;
}
.map-items-actions button.active {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 16%, transparent);
}
.map-items-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.map-items-row {
  display: grid;
  grid-template-columns: auto auto 1fr;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 4px 2px;
  font-size: 12px;
  color: var(--text);
  text-transform: none;
  letter-spacing: 0;
  cursor: context-menu;
  border-radius: 4px;
}
.map-items-row:hover {
  background: color-mix(in srgb, var(--accent) 10%, transparent);
}
.map-items-kind {
  color: var(--muted);
  font-size: 11px;
  font-weight: 650;
  min-width: 3.5em;
}
.map-items-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.map-items-empty {
  margin: 4px 0 0;
  font-size: 12px;
  color: var(--muted);
}
.rail-cal {
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 8px;
  background: var(--panel);
}
.rail-cal-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  margin-bottom: 8px;
}
.rail-cal-month {
  font-size: 12px;
  font-weight: 650;
  text-align: center;
  flex: 1;
}
.rail-cal-nav {
  min-width: 28px;
  padding: 2px 8px;
}
.rail-cal-dow,
.rail-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}
.rail-cal-dow span {
  text-align: center;
  font-size: 10px;
  font-weight: 700;
  color: var(--muted);
  padding: 2px 0;
}
.rail-cal-cell {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 11px;
  font-weight: 600;
  min-height: 28px;
  border-radius: 4px;
  cursor: pointer;
  padding: 0;
}
.rail-cal-cell.is-empty {
  pointer-events: none;
}
.rail-cal-cell.is-today {
  box-shadow: inset 0 0 0 1px var(--line);
}
.rail-cal-cell.is-in-range {
  background: color-mix(in srgb, #1e3a5f 22%, transparent);
}
.rail-cal-cell.is-range-start,
.rail-cal-cell.is-range-end,
.rail-cal-cell.is-anchor {
  background: #1e3a5f;
  color: #f4f7fb;
}
.rail-cal-cell:hover:not(.is-empty) {
  background: color-mix(in srgb, #1e3a5f 35%, transparent);
}
.rail-dow-days {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px 4px;
}
.rail-dow-days label {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  text-transform: none;
  letter-spacing: 0;
}
.rail-filter-note {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.35;
}
.rail-accuracy-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.rail-accuracy-row input[type="number"] {
  flex: 1 1 4.5rem;
  width: auto;
  min-width: 0;
  margin: 0;
}
.rail-accuracy-row select {
  flex: 0 0 auto;
  width: auto;
  min-width: 5.6rem;
  margin: 0;
}
.draw-style-menu {
  min-width: 200px;
  padding: 10px;
}
.draw-style-menu .poi-icon-section-label {
  margin-top: 8px;
}
.draw-style-menu .poi-icon-section-label:first-child {
  margin-top: 2px;
}
.draw-weight-options {
  display: grid;
  gap: 4px;
  margin-bottom: 8px;
}
.draw-weight-option {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  text-align: left;
}
.draw-weight-option.is-selected {
  background: var(--hover);
  color: #e0a106;
}
.draw-weight-preview {
  display: block;
  width: 36px;
  border-radius: 2px;
  background: #e0a106;
  flex: 0 0 auto;
}
#map.draw-mode,
#map.draw-mode .leaflet-container,
#map.draw-move-mode,
#map.draw-move-mode .leaflet-container,
#map.ruler-mode,
#map.ruler-mode .leaflet-container {
  cursor: crosshair !important;
}
#map.draw-mode .leaflet-interactive,
#map.draw-move-mode .leaflet-interactive,
#map.ruler-mode .leaflet-interactive {
  cursor: crosshair !important;
}
#map.drop-pin-mode,
#map.drop-pin-mode .leaflet-container,
#map.add-event-mode,
#map.add-event-mode .leaflet-container {
  cursor: crosshair !important;
}
#map.drop-pin-mode .leaflet-interactive,
#map.add-event-mode .leaflet-interactive {
  cursor: crosshair !important;
}
/* Placement owns the press. Record and cell-site vectors must not open a callout
   or swallow the click that drops a pin or starts a shape. */
#map.draw-mode .leaflet-overlay-pane,
#map.draw-mode .leaflet-overlay-pane *,
#map.drop-pin-mode .leaflet-overlay-pane,
#map.drop-pin-mode .leaflet-overlay-pane *,
#map.add-event-mode .leaflet-overlay-pane,
#map.add-event-mode .leaflet-overlay-pane *,
#map.add-event-mode .leaflet-marker-pane,
#map.add-event-mode .leaflet-marker-pane *,
#map.draw-mode .leaflet-rfps-neighbor-pane,
#map.draw-mode .leaflet-rfps-neighbor-pane *,
#map.drop-pin-mode .leaflet-rfps-neighbor-pane,
#map.drop-pin-mode .leaflet-rfps-neighbor-pane *,
#map.add-event-mode .leaflet-rfps-neighbor-pane,
#map.add-event-mode .leaflet-rfps-neighbor-pane *,
#map.draw-mode .leaflet-rfps-neighbor-high-pane,
#map.draw-mode .leaflet-rfps-neighbor-high-pane *,
#map.drop-pin-mode .leaflet-rfps-neighbor-high-pane,
#map.drop-pin-mode .leaflet-rfps-neighbor-high-pane *,
#map.add-event-mode .leaflet-rfps-neighbor-high-pane,
#map.add-event-mode .leaflet-rfps-neighbor-high-pane *,
#map.ruler-mode .leaflet-overlay-pane,
#map.ruler-mode .leaflet-overlay-pane *,
#map.ruler-mode .leaflet-marker-pane,
#map.ruler-mode .leaflet-marker-pane *,
#map.ruler-mode .leaflet-rfps-neighbor-pane,
#map.ruler-mode .leaflet-rfps-neighbor-pane *,
#map.ruler-mode .leaflet-rfps-neighbor-high-pane,
#map.ruler-mode .leaflet-rfps-neighbor-high-pane * {
  pointer-events: none !important;
}
#map.move-pin-mode,
#map.move-pin-mode .leaflet-container {
  cursor: crosshair !important;
}
#map.move-pin-mode .leaflet-marker-draggable {
  cursor: grab !important;
}
#map.move-pin-mode .leaflet-marker-draggable:active,
#map.move-pin-mode .leaflet-dragging .leaflet-marker-draggable {
  cursor: grabbing !important;
}
.poi-marker.poi-moving .poi-pin,
.poi-moving .poi-pin,
.poi-marker.poi-moving .poi-dot,
.poi-moving .poi-dot {
  outline: 2px solid #e0a106;
  outline-offset: 2px;
}
.legend {
  background: var(--panel);
  color: var(--text);
  padding: 8px 10px;
  border: 1px solid var(--line);
  line-height: 1.6;
  /* Own layer so MapLibre WebGL does not soft-composite nearby text. */
  transform: translateZ(0);
  -webkit-font-smoothing: auto;
  -moz-osx-font-smoothing: auto;
}
.legend:empty { display: none !important; }
.legend i { display: inline-block; width: 10px; height: 10px; margin-right: 6px; }
.legend-title {
  font-size: 11px;
  font-weight: 650;
  letter-spacing: 0.04em;
  margin-bottom: 2px;
}
.legend-carrier { margin: 0 0 6px; }
.legend-carrier img {
  display: block;
  width: calc(22px * 280 / 48);
  height: 22px;
  max-width: 100%;
  object-fit: fill;
}
.legend-rsrp + div { margin-top: 8px; }
.legend i.legend-dot { border-radius: 50%; vertical-align: -1px; }

.leaflet-bottom,
.leaflet-control-scale {
  background: transparent !important;
}
/* Isolate bottom-left chrome from the GL basemap compositor (blurry 11px text on Windows). */
.leaflet-bottom.leaflet-left {
  transform: translateZ(0);
  isolation: isolate;
}
.leaflet-control-scale {
  margin-bottom: 8px !important;
  transform: translateZ(0);
}
.leaflet-control-scale-line {
  background: rgba(255, 255, 255, 0.55) !important;
  border: 2px solid rgba(26, 29, 36, 0.55) !important;
  border-top: none !important;
  color: #1a1d24 !important;
  opacity: 1 !important;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.25;
  padding: 2px 7px 1px;
  box-shadow: none;
  text-shadow: none;
  -webkit-font-smoothing: auto;
  -moz-osx-font-smoothing: auto;
}
/* Dark / Fiord basemaps only — keep light maps on the normal scale chrome. */
body.map-basemap-dark .leaflet-control-scale-line {
  background: rgba(27, 30, 36, 0.55) !important;
  border: 2px solid rgba(240, 242, 244, 0.7) !important;
  border-top: none !important;
  color: #f0f2f4 !important;
  opacity: 1 !important;
  font-weight: 700;
  padding: 2px 7px 1px;
  box-shadow: none;
  text-shadow: none;
  -webkit-font-smoothing: auto;
  -moz-osx-font-smoothing: auto;
}
body.map-basemap-dark .leaflet-control-scale-line + .leaflet-control-scale-line {
  margin-top: 3px;
  border-top: none !important;
}

.home-main { flex: 1; overflow: auto; padding: 24px 32px; }
.home-main h2 { margin: 0 0 16px; font-size: 16px; font-weight: 650; }
.storage-help {
  margin: 0 0 12px;
  max-width: 72rem;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}
.home-status-row {
  display: grid;
  grid-template-columns: minmax(0, max-content) minmax(320px, 1fr);
  grid-template-areas: "side announcements";
  gap: 12px;
  align-items: start;
  margin: 0 0 12px;
}
.home-status-side {
  grid-area: side;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 12px;
  min-width: 0;
  width: max-content;
  max-width: 100%;
}
.home-request {
  width: 100%;
  margin: 0;
  box-sizing: border-box;
}
.home-status-row .storage-status {
  margin: 0;
  width: max-content;
  max-width: 100%;
  min-width: 0;
}
.announcements-panel {
  grid-area: announcements;
  min-width: 0;
  margin: 0;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  font-size: 12px;
}
.announcements-panel h2 {
  margin: 0 0 8px;
  font-size: 13px;
  font-weight: 650;
}
.announcement .announcement-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 2px 10px;
  margin: 0 0 6px;
  color: var(--muted);
  font-size: 11px;
}
.announcement h3 {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  margin: 0 0 4px;
  font-size: 12px;
  font-weight: 650;
}
.announcement-pin {
  display: inline-flex;
  flex-shrink: 0;
  margin-top: 1px;
  color: var(--muted);
}
.announcements-pinned + .announcement,
.announcements-pinned + .announcements-see-all {
  margin-top: 10px;
}
.announcements-pinned + .announcement {
  padding-top: 10px;
  border-top: 1px solid var(--line);
}
.announcements-all-list .announcements-pinned {
  margin: 0;
  padding: 0 0 8px;
}
.announcement-pin svg {
  width: 14px;
  height: 14px;
  display: block;
}
.announcement p {
  margin: 0;
  color: var(--text);
  line-height: 1.45;
  white-space: pre-line;
}
.announcement p.announcement-body.is-clamped {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 5;
  line-clamp: 5;
  overflow: hidden;
}
button.announcement-read-more {
  display: inline-block;
  width: auto;
  margin: 6px 0 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--link);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.4;
  cursor: pointer;
  text-align: left;
}
button.announcement-read-more:hover,
button.announcement-read-more:focus-visible {
  color: var(--link-hover);
  outline: none;
}
.announcement + .announcement {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
}
.announcements-more {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
}
button.announcements-expand {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  margin: 8px 0 0;
  padding: 6px 0 2px;
  border: 0;
  border-top: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
}
button.announcements-expand svg {
  width: 16px;
  height: 16px;
  display: block;
  transition: transform 0.12s ease;
}
button.announcements-expand[aria-expanded="true"] svg {
  transform: rotate(180deg);
}
button.announcements-expand:hover,
button.announcements-expand:focus-visible {
  color: var(--text);
  outline: none;
}
button.announcements-see-all {
  display: block;
  width: 100%;
  margin: 8px 0 0;
  padding: 6px 0 2px;
  border: 0;
  border-top: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
button.announcements-see-all:hover,
button.announcements-see-all:focus-visible {
  color: var(--text);
  outline: none;
}
.announcement.is-urgent {
  background: rgba(196, 48, 48, 0.16);
  border-radius: 4px;
  margin-left: -8px;
  margin-right: -8px;
  padding: 8px;
}
.modal-card.announcements-all-card {
  width: min(640px, calc(100% - 32px));
  max-height: min(92vh, 760px);
}
.announcements-all-list {
  overflow-x: hidden;
  overflow-y: auto;
  min-height: 0;
  overflow-wrap: break-word;
}
.announcement-popup-actions {
  margin-top: 8px;
}
.announcement-popup-actions button {
  font-size: 12px;
  padding: 6px 8px;
}
.announcement-flags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 16px;
}
.admin-add-form .announcement-flags label.announcement-flag,
#edit-announcement-form .announcement-flags label.announcement-flag,
.admin-add-form .announcement-popup-days,
#edit-announcement-form .announcement-popup-days {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  width: auto;
  margin: 0;
  color: var(--text);
  font-size: 12px;
  letter-spacing: 0;
  text-transform: none;
}
.admin-add-form .announcement-flags label.announcement-flag input,
#edit-announcement-form .announcement-flags label.announcement-flag input,
.admin-add-form .announcement-popup-days select,
#edit-announcement-form .announcement-popup-days select {
  width: auto;
  margin: 0;
  padding: 4px 6px;
}
.announcement-popup-days[hidden] {
  display: none !important;
}
.announcement-popup-until {
  color: var(--muted);
  font-size: 12px;
}
.announcement-posted-item.is-urgent {
  background: rgba(196, 48, 48, 0.16);
  border-radius: 4px;
  padding: 8px;
}
.announcement-posted {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 4px;
}
.announcement-posted-item {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding-top: 8px;
  border-top: 1px solid var(--line);
  font-size: 12px;
}
.announcement-posted-copy {
  min-width: 0;
}
.announcement-posted-actions {
  display: flex;
  flex-shrink: 0;
  gap: 8px;
}
.announcement-posted-item p {
  margin: 4px 0 0;
  color: var(--muted);
}
.storage-status {
  margin: 0 0 12px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  font-size: 12px;
}
@media (max-width: 820px) {
  .home-status-row {
    grid-template-columns: 1fr;
    grid-template-areas:
      "side"
      "announcements";
  }
  .home-status-side,
  .home-status-row .storage-status,
  .home-request {
    width: auto;
    min-width: 0;
  }
}
.storage-status-main {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  color: var(--text);
}
.storage-status-main span { color: var(--muted); }
.storage-status-dirs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin-top: 8px;
}
.storage-status-dirs span { color: var(--muted); }
.storage-dir-line {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
}
button.storage-help-tip {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  margin: 0;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: transparent;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  cursor: help;
}
button.storage-help-tip:hover,
button.storage-help-tip:focus-visible {
  color: var(--text);
  border-color: var(--muted);
  outline: none;
}
.storage-status .storage-help-pop {
  display: none;
  position: fixed;
  z-index: 80;
  width: min(36rem, calc(100vw - 32px));
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  color: var(--text);
  font-size: 12px;
  font-weight: 400;
  line-height: 1.45;
  text-align: left;
  white-space: normal;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
  cursor: default;
}
button.storage-help-tip.is-open .storage-help-pop {
  display: block;
}
.storage-status .storage-help-pop strong {
  color: var(--text);
  font-weight: 650;
}
.storage-status-warn {
  margin-top: 8px;
  color: #b45309;
  font-weight: 600;
}
.storage-status-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}
.storage-status-actions button:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.storage-status-actions #restore-from-backup {
  background: var(--accent);
  color: var(--on-accent);
  border: 0;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 55%, var(--on-accent));
}
.case-export-pill {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  border-radius: 999px;
  background: color-mix(in srgb, #b45309 18%, transparent);
  color: #b45309;
  font-size: 10px;
  font-weight: 650;
  vertical-align: middle;
}
.cases-table tr.case-needs-export td:first-child {
  font-weight: 600;
}
.backup-restore-card { min-width: min(420px, 92vw); }
.backup-restore-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 280px;
  overflow: auto;
  margin: 12px 0;
}
button.backup-restore-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  width: 100%;
  text-align: left;
  background: var(--panel);
  color: var(--text);
  border: 1px solid var(--line);
  font-weight: 600;
}
button.backup-restore-item:hover,
button.backup-restore-item:focus-visible {
  background: color-mix(in srgb, var(--accent) 16%, var(--panel));
  border-color: var(--accent);
}
.backup-restore-saved,
.backup-restore-badge {
  font-weight: 500;
  font-size: 12px;
  color: var(--muted);
}
.backup-restore-badge {
  color: var(--accent);
  font-weight: 650;
}
.backup-restore-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.backup-restore-older {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-left: 28px;
}
.backup-restore-older button.backup-restore-item {
  padding: 6px 8px;
  font-size: 12px;
  font-weight: 500;
}
.backup-restore-older .backup-restore-name {
  font-size: 13px;
}
.backup-restore-older .backup-restore-saved,
.backup-restore-older .backup-restore-badge {
  font-size: 11px;
}
.export-reminder {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 12px;
  padding: 8px 14px;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, #b45309 12%, var(--panel));
  color: var(--text);
  font-size: 12px;
}
.export-reminder[hidden] { display: none !important; }
.rail > .export-reminder {
  flex: 0 0 auto;
  border-bottom: 0;
  border-top: 1px solid var(--line);
}
.rail > .export-reminder span {
  color: var(--text);
  font-size: 12px;
  text-transform: none;
  letter-spacing: normal;
}
.protect-case-actions {
  flex-wrap: wrap;
}
.cases-wrap { border: 1px solid var(--line); background: var(--panel); overflow: auto; }
.cases-table { width: 100%; border-collapse: separate; border-spacing: 0; }
.cases-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--inset);
  border-bottom: 1px solid var(--line);
}
.cases-table thead th:last-child {
  width: 140px;
  min-width: 140px;
}
.cases-table tbody tr { cursor: pointer; }
.cases-table tbody tr:hover { background: var(--hover); }
.cases-table .empty { color: var(--muted); cursor: default; padding: 24px 12px; }
.case-actions { width: 180px; min-width: 180px; text-align: right; white-space: nowrap; }
.share-inbox {
  margin: 0 0 20px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
}
.share-inbox.share-inbox-received,
.share-inbox-received-group {
  background: color-mix(in srgb, #c45c5c 16%, var(--panel));
  border-color: color-mix(in srgb, #c45c5c 48%, var(--line));
}
.share-inbox-received-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
  border: 1px solid color-mix(in srgb, #c45c5c 48%, var(--line));
  border-radius: 6px;
  padding: 10px;
}
.share-inbox.share-inbox-received .share-inbox-item,
.share-inbox-received-group .share-inbox-item {
  background: color-mix(in srgb, #c45c5c 10%, var(--panel));
  border-color: color-mix(in srgb, #c45c5c 32%, var(--line));
}
.share-inbox h2 {
  margin: 0 0 6px;
  font-size: 16px;
  font-weight: 650;
}
.share-inbox-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 10px;
}
.share-inbox-item {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: color-mix(in srgb, var(--panel) 80%, var(--hover));
}
.share-inbox-item.outgoing {
  opacity: 0.92;
}
.share-inbox-meta {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.share-inbox-meta strong {
  font-size: 13px;
}
.share-inbox-sub {
  color: var(--muted);
  font-size: 12px;
}
.share-inbox-actions {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
}
.share-outgoing-label {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
#share-case-https-note {
  color: #b45309;
}
.storage-status-desc {
  margin-top: 6px;
  color: var(--muted);
  line-height: 1.4;
}
.vault-case-row {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  justify-content: space-between;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
}
.vault-case-meta {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  font-size: 12px;
}
.vault-case-when { color: var(--muted); }
.vault-case-actions {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex-shrink: 0;
}
.icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  margin-left: 4px;
  background: transparent;
  color: var(--muted);
  border: 1px solid var(--line);
}
.icon-btn:hover { color: var(--text); border-color: var(--text); }
.icon-btn svg { width: 14px; height: 14px; display: block; }
.home .top { flex-shrink: 0; }
.modal {
  position: fixed;
  inset: 0;
  background: color-mix(in srgb, #000 55%, transparent);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2000;
}
#horizon-dialog {
  z-index: 3200;
}
/* Confirmations opened from the File Management popout must sit above that window. */
#reset-case-modal,
#file-delete-modal {
  z-index: 3400;
}
.horizon-dialog-card {
  width: min(480px, calc(100% - 32px));
}
#area-search-pin-modal {
  z-index: 20000;
  pointer-events: auto;
}
#area-search-pin-modal .modal-actions {
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  pointer-events: auto;
}
#area-search-pin-ok,
#area-search-pin-cancel {
  position: relative;
  z-index: 3;
  pointer-events: auto;
}
.area-search-pin-card {
  width: min(520px, calc(100% - 32px));
  max-height: min(86vh, 720px);
}
.area-search-pin-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-height: min(52vh, 420px);
  overflow: auto;
  padding-right: 4px;
}
.modal-card label.area-search-pin-row {
  margin: 0;
  color: var(--text);
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
}
.area-search-pin-place {
  display: block;
  margin-bottom: 4px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}
.area-search-pin-row input::placeholder {
  color: var(--text-subtle);
}
#horizon-dialog-message {
  margin: 0;
  color: var(--text);
  font-size: 14px;
  line-height: 1.45;
  text-transform: none;
  letter-spacing: 0;
}
#horizon-dialog-link-wrap {
  margin: 0;
}
#horizon-dialog-link-wrap[hidden] {
  display: none !important;
}
#horizon-dialog-link {
  appearance: none;
  background: none;
  border: 0;
  padding: 0;
  color: var(--link);
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.45;
  text-decoration: underline;
  text-transform: none;
  letter-spacing: 0;
  cursor: pointer;
}
#horizon-dialog-link:hover {
  color: var(--link-hover);
}
.modal[hidden] { display: none; }
.rail-popout-card {
  width: min(420px, calc(100% - 32px));
  max-height: min(92vh, 860px);
  padding: 20px 22px;
  border: 1px solid var(--line);
  background: var(--panel);
  display: flex;
  flex-direction: column;
  gap: 14px;
  box-shadow: 0 16px 48px var(--shadow);
  min-height: 0;
}
.rail-popout-card h3 {
  margin: 0;
  font-size: 15px;
  font-weight: 650;
}
.rail.rail-popout-host {
  grid-area: auto;
  display: block;
  overflow: auto;
  background: transparent;
  min-height: 0;
  flex: 1 1 auto;
  padding: 0 4px 0 0;
}
.loading-modal {
  z-index: 3000;
  pointer-events: all;
}
/* Records-tree draws leave the map visible. Clicks stay on this layer so the draw is not interrupted. */
.loading-modal.is-map-draw {
  background: transparent;
}
.loading-card {
  width: min(420px, calc(100% - 32px));
  align-items: stretch;
  text-align: left;
  gap: 12px;
}
.loading-card h3 {
  margin: 0;
  text-align: center;
}
.loading-card p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
  text-align: center;
}
.loading-actions {
  justify-content: center;
  margin-top: 4px;
}
.loading-actions[hidden] {
  display: none !important;
}
.loading-progress {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 4px;
}
.loading-progress-track {
  height: 10px;
  border-radius: 999px;
  background: var(--bg);
  border: 1px solid var(--line);
  overflow: hidden;
}
.loading-progress-bar {
  height: 100%;
  width: 0%;
  border-radius: inherit;
  background: var(--accent);
  transition: width 0.2s ease;
}
.loading-progress-bar.is-indeterminate {
  width: 40%;
  animation: loading-indeterminate 1.1s ease-in-out infinite;
}
@keyframes loading-indeterminate {
  0% { transform: translateX(-120%); }
  100% { transform: translateX(320%); }
}
.loading-progress-meta {
  display: flex;
  justify-content: flex-end;
  color: var(--muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.modal-card {
  width: min(480px, calc(100% - 32px));
  padding: 20px 22px;
  border: 1px solid var(--line);
  background: var(--panel);
  display: flex;
  flex-direction: column;
  gap: 14px;
  box-shadow: 0 16px 48px var(--shadow);
}
#header-phone-search-modal .modal-card.number-search-report-card {
  width: min(987px, calc((100vw - 40px) * 2 / 3));
  max-width: min(987px, calc((100vw - 40px) * 2 / 3));
  min-width: 0;
  overflow: hidden;
}
#header-phone-search-modal .number-search-report-head,
#header-phone-search-modal .number-search-report-body,
#header-phone-search-modal .modal-actions {
  min-width: 0;
}
#header-phone-search-modal .number-search-report-body {
  flex: 1 1 auto;
  min-height: 12rem;
  max-height: calc(100vh - 180px);
  overflow-x: clip;
  overflow-y: auto;
}
#header-phone-search-modal .number-search-table {
  width: 100%;
  max-width: 100%;
}
#header-phone-search-modal .number-search-table:not(.number-search-kv) {
  table-layout: fixed;
}
#header-phone-search-modal .number-search-table th,
#header-phone-search-modal .number-search-table td {
  white-space: normal;
  overflow-wrap: anywhere;
}
#header-phone-search-modal .number-search-table:not(.commonality-table):not(.number-search-kv) th:nth-child(3),
#header-phone-search-modal .number-search-table:not(.commonality-table):not(.number-search-kv) td:nth-child(3) {
  width: 6.5rem;
}
#header-phone-search-modal .number-search-table:not(.commonality-table):not(.number-search-kv) th:nth-child(4),
#header-phone-search-modal .number-search-table:not(.commonality-table):not(.number-search-kv) td:nth-child(4) {
  width: 7rem;
  white-space: nowrap;
}
.upload-card {
  width: min(760px, calc(100% - 32px));
  max-height: calc(100dvh - 48px);
  min-height: 0;
  overflow: hidden;
}
.upload-card.is-setup {
  width: calc(100vw - 48px);
  max-width: calc(100vw - 48px);
  height: calc(100dvh - 48px);
  max-height: calc(100dvh - 48px);
}
.upload-card.is-setup form {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  height: 100%;
  gap: 14px;
}
.upload-card.is-setup .upload-drop {
  min-height: 0;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 14px;
  padding: 10px 16px;
}
#upload-inline-setup {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  gap: 10px;
}
#upload-inline-setup[hidden],
#upload-setup-actions[hidden],
#upload-process-actions[hidden],
.upload-detected[hidden],
.upload-drop[hidden] {
  display: none !important;
}
.modal-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  margin-top: 4px;
}
.modal-actions button[hidden] {
  display: none !important;
}
.modal-actions button:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.csl-source-actions,
.csl-source-choices {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: stretch;
}
.csl-source-actions {
  flex-wrap: nowrap;
  align-items: stretch;
  margin: 8px 0 4px;
}
.csl-source-actions > button,
.csl-source-choices > button {
  margin: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  box-sizing: border-box;
  line-height: 1.25;
}
.csl-source-actions > button {
  flex: 1 1 0;
  align-self: stretch;
  min-width: 0;
  min-height: 40px;
  padding: 8px 10px;
  white-space: normal;
}
.csl-source-choices[hidden] {
  display: none !important;
}
.csl-folder-card {
  width: min(640px, 94vw);
  max-height: calc(100vh - 48px);
  overflow: auto;
}
.csl-folder-card .modal-note {
  margin: 0 0 10px;
}
#csl-folder-filter {
  width: 100%;
}
.csl-folder-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 360px;
  overflow: auto;
  margin: 10px 0;
}
.csl-folder-row {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 8px 10px;
  border: 1px solid var(--line);
  background: color-mix(in srgb, var(--bg) 55%, var(--panel));
}
.csl-folder-row strong,
.csl-folder-meta,
.csl-folder-path {
  display: block;
}
.csl-folder-meta,
.csl-folder-path {
  color: var(--muted);
  font-size: 12px;
}
.csl-folder-depth-current {
  margin: 0 0 8px;
  font-weight: 650;
}
.csl-folder-dir {
  display: block;
  width: 100%;
  text-align: left;
  padding: 8px 10px;
  border: 1px solid var(--line);
  background: color-mix(in srgb, var(--bg) 55%, var(--panel));
  color: var(--text);
  cursor: pointer;
}
.csl-folder-dir:hover {
  border-color: var(--text);
}
.csl-relationship-files {
  margin: 8px 0 0;
  padding-left: 1.2em;
  color: var(--muted);
  font-size: 12px;
  text-transform: none;
  letter-spacing: 0;
  line-height: 1.45;
  max-height: 160px;
  overflow: auto;
}
.csl-relationship-date {
  color: var(--text);
  opacity: 0.85;
  white-space: nowrap;
}
.csl-relationship-picker {
  margin-top: 12px;
}
.csl-relationship-choices {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 220px;
  overflow: auto;
  margin-top: 8px;
}
.csl-relationship-choice {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  font-size: 13px;
  line-height: 1.35;
  text-transform: none;
  letter-spacing: 0;
}
.csl-relationship-choice input {
  margin-top: 2px;
  flex: 0 0 auto;
}
.csl-conflict-card {
  width: min(720px, calc(100% - 32px));
}
.csl-conflict-body {
  display: flex;
  flex-direction: column;
  gap: 14px;
  max-height: min(420px, 50vh);
  overflow: auto;
  margin-top: 12px;
}
.csl-conflict-tower {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 12px;
}
.csl-conflict-tower h4 {
  margin: 0 0 8px;
  font-size: 14px;
}
.csl-conflict-option {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  margin: 6px 0 0;
  font-size: 13px;
  line-height: 1.35;
  text-transform: none;
  letter-spacing: 0;
}
.csl-conflict-option input {
  margin-top: 2px;
  flex: 0 0 auto;
}
.csl-conflict-diff {
  color: var(--danger-text);
  font-weight: 600;
}
.pol-card {
  width: min(860px, calc(100% - 32px));
  max-height: calc(100vh - 48px);
  overflow: auto;
}
.pol-intro {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}
.record-bind-current {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin: 0;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--accent);
  background: color-mix(in srgb, var(--accent) 16%, var(--inset));
}
#csl-relationship-modal .modal-card {
  width: min(760px, calc(100% - 32px));
}
#csl-relationship-modal .record-bind-current {
  margin: 12px 0;
}
.record-bind-card {
  width: min(760px, calc(100% - 32px));
}
.record-bind-card .modal-actions {
  flex-wrap: nowrap;
}
.record-bind-card .modal-actions button {
  flex: 0 0 auto;
  white-space: nowrap;
}
.record-bind-current[data-binding="unmapped"] {
  border-left-color: #e10600;
  background: color-mix(in srgb, #e10600 24%, var(--inset));
}
.record-bind-current[data-binding="sector"] {
  border-left-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 34%, var(--inset));
}
.record-bind-current[data-binding="matched"] {
  border-left-color: #3d9a5a;
  background: color-mix(in srgb, #3d9a5a 34%, var(--inset));
}
.record-bind-current[data-binding="embedded"] {
  border-left-color: var(--voice-out);
  background: color-mix(in srgb, var(--voice-out) 16%, var(--inset));
}
.record-bind-current[data-binding="site_list"] {
  border-left-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 34%, var(--inset));
}
.record-bind-current-kicker {
  font-size: 11px;
  font-weight: 650;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}
.record-bind-current-value {
  font-size: 20px;
  line-height: 1.25;
  font-weight: 700;
  color: var(--text);
  overflow-wrap: anywhere;
}
.record-bind-current-detail {
  margin-top: 4px;
  font-size: 13px;
  line-height: 1.45;
  color: var(--text);
}
.record-bind-current-detail:empty {
  display: none;
}
.tdr-carryover-option {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 4px 0 0;
  padding: 10px 12px;
  border: 1px solid var(--line);
  background: var(--bg);
  color: var(--text);
  font-size: 13px;
  line-height: 1.45;
  cursor: pointer;
}
.tdr-carryover-option[hidden] {
  display: none;
}
.tdr-carryover-option input {
  margin-top: 3px;
  flex-shrink: 0;
}
.tdr-carryover-option strong {
  color: var(--accent);
}
.pol-body {
  min-height: 72px;
  max-height: 160px;
  overflow: auto;
  padding: 12px;
  border: 1px solid var(--line);
  background: var(--bg);
}
.pol-placeholder {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}
.pol-file-list {
  margin: 0;
  padding: 0;
  border: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.pol-file-list legend {
  padding: 0 0 8px;
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.pol-file-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  color: var(--text);
  text-transform: none;
  letter-spacing: 0;
  font-size: 13px;
}
.pol-file-row span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pol-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.pol-group + .pol-group {
  margin-top: 16px;
}
.pol-group[hidden] {
  display: none !important;
}
.pol-group-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  margin: 0;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  color: var(--text);
  cursor: pointer;
  text-align: left;
  font: inherit;
}
.pol-group-toggle:hover {
  border-color: color-mix(in srgb, var(--accent) 45%, var(--line));
}
.pol-group-toggle:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 1px;
}
.pol-group-toggle .section-caret {
  transform: rotate(-90deg);
  flex: 0 0 auto;
}
.pol-group:not(.collapsed) .pol-group-toggle .section-caret {
  transform: rotate(0deg);
}
.pol-group-title {
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.pol-group.collapsed .pol-actions {
  display: none !important;
}
.pol-availability-hint {
  margin: 0 0 12px;
  color: var(--muted);
  font-size: 12px;
}
.pol-actions {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 0;
  border: 1px solid var(--line);
  background: var(--bg);
  overflow: hidden;
}
.pol-feature-btn[hidden] {
  display: none !important;
}
.pol-feature-btn {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 6px;
  min-height: 88px;
  padding: 16px 18px;
  text-align: left;
  border: 0;
  border-radius: 0;
  box-shadow: inset -1px 0 0 var(--line), inset 0 -1px 0 var(--line);
  background: transparent;
  color: var(--text);
  cursor: pointer;
  transition: background 0.15s ease, box-shadow 0.15s ease;
}
.pol-feature-btn:hover {
  background: color-mix(in srgb, var(--accent) 10%, transparent);
  box-shadow: inset 0 0 0 1px var(--accent);
}
.pol-feature-btn:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: -2px;
  z-index: 1;
}
.pol-feature-title {
  font-size: 15px;
  font-weight: 650;
  letter-spacing: 0.02em;
  line-height: 1.2;
}
.pol-feature-desc {
  color: var(--muted);
  font-size: 12px;
  font-weight: 400;
  line-height: 1.35;
  text-transform: none;
  letter-spacing: 0;
}
.pol-results-body {
  border: 1px solid var(--line);
  background: var(--bg);
  overflow: auto;
  max-height: min(420px, calc(100vh - 260px));
  padding: 12px 16px;
}
.pol-results-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
.pol-results-table th,
.pol-results-table td {
  padding: 10px 12px;
  text-align: left;
  border-bottom: 1px solid var(--line);
  vertical-align: top;
}
.pol-results-table th {
  color: var(--muted);
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  background: var(--panel);
  position: sticky;
  top: 0;
  z-index: 1;
}
.pol-rel-higher { color: #1b7f4e; font-weight: 600; }
.pol-rel-moderate { color: #8a6a12; font-weight: 600; }
.pol-rel-limited { color: #a15c12; font-weight: 600; }
.pol-rel-low { color: #a33b32; font-weight: 600; }
.pol-results-table td.num {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.pol-drive-table {
  font-size: 11px;
}
.pol-drive-table th,
.pol-drive-table td {
  padding: 8px 8px;
}
.pol-results-table .pol-scan-site {
  font-weight: 600;
  letter-spacing: 0.02em;
}
.pol-results-table .pol-phone {
  font-weight: 600;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.pol-show-map-row {
  display: inline-block;
  margin-top: 6px;
  padding: 4px 8px;
  font-size: 11px;
}
.pol-map-pin {
  background: none !important;
  border: 0 !important;
  overflow: visible !important;
}
.pol-map-pin-dot {
  display: block;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--accent);
  border: 2px solid var(--on-accent);
  box-shadow: 0 0 0 1px var(--accent);
}
.pol-map-pin-label {
  position: absolute;
  left: 50%;
  bottom: 18px;
  transform: translateX(-50%);
  white-space: nowrap;
  pointer-events: none;
  background: var(--panel);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 2px 6px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.3;
}
.pol-map-pin-end .pol-map-pin-dot {
  background: #d46a6a;
  box-shadow: 0 0 0 1px #d46a6a;
}
.pol-move-arrow {
  background: none !important;
  border: 0 !important;
  overflow: visible !important;
}
.pol-move-arrow span {
  display: block;
  width: 14px;
  height: 14px;
  color: #1a1408;
  font-size: 12px;
  line-height: 14px;
  text-align: center;
  text-shadow: 0 0 2px #fff, 0 0 2px #fff;
}
.pol-flag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.pol-flag {
  display: inline-block;
  padding: 2px 7px;
  border: 1px solid var(--line);
  background: color-mix(in srgb, var(--accent) 12%, transparent);
  color: var(--accent);
  font-size: 11px;
  line-height: 1.35;
  white-space: nowrap;
}
.pol-flag.warn {
  border-color: #6a3f3f;
  background: rgba(196, 92, 92, 0.14);
  color: var(--danger-text);
}
.pol-empty {
  margin: 0;
  padding: 16px;
  color: var(--muted);
  font-size: 13px;
}
.pol-gap-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 12px;
}
.pol-gap-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.03);
  font-size: 12px;
  color: var(--text);
}
.pol-gap-chip strong {
  font-weight: 600;
  color: var(--text);
}
.pol-gap-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: currentColor;
  flex: 0 0 auto;
}
.pol-gap-badge {
  display: inline-block;
  padding: 2px 8px;
  border: 1px solid currentColor;
  font-size: 11px;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.pol-gap-note {
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 12px;
}
.pol-gap-actions {
  margin: 0 0 10px;
}
.pol-gap-show {
  padding: 4px 10px;
  font-size: 12px;
}
.pol-gap-show:disabled {
  opacity: 0.45;
  cursor: default;
}
.pol-gap-marker td {
  background: rgba(212, 176, 106, 0.16);
  font-weight: 600;
}
.pol-gaps-table tbody tr.pol-gap-edge td {
  background: #f5e27a;
  color: #1a1408;
}
.pol-gap-file {
  margin: 16px 0 6px;
  font-size: 13px;
  font-weight: 600;
}
.pol-gaps-table tr.gap-l1 td:first-child,
.pol-gaps-table tr.gap-l2 td:first-child,
.pol-gaps-table tr.gap-l3 td:first-child,
.pol-gaps-table tr.gap-l4 td:first-child,
.pol-gaps-table tr.gap-l5 td:first-child {
  box-shadow: inset 3px 0 0 currentColor;
}
.gap-l1 { color: #7eb8d4; }
.gap-l2 { color: #6dbf8a; }
.gap-l3 { color: #d4b06a; }
.gap-l4 { color: #d4885a; }
.gap-l5 { color: #d46a6a; }
.pol-gap-chip.gap-l1,
.pol-gap-badge.gap-l1,
.pol-gaps-table tr.gap-l1 { color: #7eb8d4; }
.pol-gap-chip.gap-l2,
.pol-gap-badge.gap-l2,
.pol-gaps-table tr.gap-l2 { color: #6dbf8a; }
.pol-gap-chip.gap-l3,
.pol-gap-badge.gap-l3,
.pol-gaps-table tr.gap-l3 { color: #d4b06a; }
.pol-gap-chip.gap-l4,
.pol-gap-badge.gap-l4,
.pol-gaps-table tr.gap-l4 { color: #d4885a; }
.pol-gap-chip.gap-l5,
.pol-gap-badge.gap-l5,
.pol-gaps-table tr.gap-l5 { color: #d46a6a; }
.pol-gaps-table tbody td {
  color: var(--text);
}
.pol-gaps-table tbody tr.gap-l1 td:nth-child(2),
.pol-gaps-table tbody tr.gap-l2 td:nth-child(2),
.pol-gaps-table tbody tr.gap-l3 td:nth-child(2),
.pol-gaps-table tbody tr.gap-l4 td:nth-child(2),
.pol-gaps-table tbody tr.gap-l5 td:nth-child(2) {
  color: inherit;
}
.pol-toi-form {
  display: grid;
  gap: 14px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  background: var(--bg);
}
.pol-toi-field {
  display: grid;
  gap: 6px;
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.pol-toi-field input[type="datetime-local"] {
  width: 100%;
  margin: 0;
  padding: 10px 12px;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--text);
  font-size: 14px;
  text-transform: none;
  letter-spacing: 0;
  color-scheme: dark;
}
.pol-toi-actions {
  display: flex;
  justify-content: flex-end;
}
.modal-card select {
  display: block;
  width: 100%;
  margin-top: 6px;
  margin-bottom: 12px;
  background: var(--panel);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 8px 10px;
  font: inherit;
}
.modal-card h3 {
  margin: 0 0 8px;
  font-size: 15px;
  font-weight: 650;
}
.modal-card .file-delete-note {
  margin-top: 10px;
  color: var(--muted);
  font-size: 12px;
}
.case-form-error {
  margin: 8px 0 12px;
  color: var(--danger);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
}
.case-form-error[hidden] {
  display: none !important;
}
.timezone-original {
  margin: 8px 0 0;
  color: var(--danger-text);
  font-size: 14px;
  font-weight: 650;
}
.modal-card.timezone-batch-card {
  width: min(560px, calc(100% - 32px));
  max-height: calc(100dvh - 48px);
}
.timezone-batch-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-height: min(420px, 50vh);
  overflow: auto;
}
.timezone-batch-list[hidden] {
  display: none;
}
#timezone-source-wrap[hidden],
#timezone-target-wrap[hidden] {
  display: none;
}
.timezone-batch-row {
  border: 1px solid var(--line);
  padding: 8px 10px;
}
.timezone-batch-name {
  font-weight: 650;
  font-size: 13px;
  word-break: break-word;
}
.timezone-batch-zone {
  margin: 4px 0 0;
  color: var(--danger-text);
  font-size: 13px;
  font-weight: 650;
}
.timezone-batch-row .file-delete-note {
  margin-top: 4px;
}
.modal-card .timezone-batch-row label {
  text-transform: none;
  letter-spacing: 0;
  font-size: 12px;
  margin-top: 8px;
}
.modal-card.upload-setup-card {
  width: calc(100vw - 48px);
  max-width: calc(100vw - 48px);
  height: calc(100dvh - 48px);
  max-height: calc(100dvh - 48px);
  min-height: 0;
  overflow: hidden;
}
.upload-batch-progress {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px 10px;
  align-items: center;
  flex-shrink: 0;
}
.upload-batch-progress[hidden] {
  display: none !important;
}
.upload-batch-progress-detail {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
}
.upload-batch-progress .loading-progress-track {
  height: 12px;
}
.upload-batch-progress-pct {
  color: var(--muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.upload-setup-list {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.upload-setup-head,
.upload-setup-row {
  display: grid;
  grid-template-columns: minmax(200px, 1.15fr) minmax(150px, 0.7fr) minmax(260px, 0.95fr) minmax(220px, 0.9fr) minmax(220px, 0.95fr) 28px;
  gap: 16px;
  align-items: start;
  min-width: 1310px;
}
.upload-setup-head {
  padding: 0 12px 8px;
  background: var(--panel);
  color: var(--muted);
  font-size: 11px;
  font-weight: 650;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.upload-setup-row {
  padding: 12px;
  border: 1px solid var(--line);
}
.upload-setup-remove {
  grid-column: 6;
  grid-row: 1;
  justify-self: end;
  align-self: start;
  width: 22px;
  height: 22px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  display: grid;
  place-items: center;
}
.upload-setup-remove:hover,
.upload-setup-remove:focus-visible {
  color: var(--danger-text);
  background: var(--danger-bg);
}
.upload-setup-row.is-loading .upload-row-progress {
  grid-column: 1 / 4;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px 10px;
  align-items: center;
}
.upload-row-progress-detail {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
}
.upload-row-progress .loading-progress-track {
  grid-column: 1;
}
.upload-row-progress-pct {
  color: var(--muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.upload-setup-filename {
  font-weight: 650;
  font-size: 14px;
  word-break: break-word;
}
.upload-file-bar .upload-setup-phone {
  grid-area: phone;
  margin: 0 0 4px;
  color: var(--text);
  font-size: 14px;
  font-weight: 650;
}
.upload-setup-tz .timezone-original,
.upload-setup-tz .file-delete-note {
  margin: 0 0 6px;
}
.upload-setup-tz select {
  width: 100%;
}
.modal-card select.needs-choice,
.modal-card .upload-setup-tz select.needs-choice {
  border: 2px solid var(--danger);
  background: var(--danger-bg);
  color: var(--text);
  font-weight: 650;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--danger) 32%, transparent);
}
.modal-card label:has(> select.needs-choice) {
  color: var(--danger-text);
}
.modal-card .upload-setup-field {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
}
.modal-card .upload-setup-field input,
.modal-card .upload-setup-tz select,
.modal-card .upload-setup-csl select {
  margin-bottom: 0;
}
.upload-setup-csl-picks {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.upload-setup-csl-label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
}
.modal-card label.upload-setup-csl-pick {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 0;
  color: var(--text);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
}
.upload-setup-csl-pick input {
  margin: 2px 0 0;
  flex: 0 0 auto;
}
.upload-setup-csl-pick span {
  min-width: 0;
  word-break: break-word;
}
.upload-setup-csl-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.upload-setup-csl-actions button {
  padding: 6px 8px;
  font-size: 12px;
}
.modal-card label.upload-setup-tdr {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-top: 8px;
  color: var(--text);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
}
.upload-setup-tdr input {
  margin: 2px 0 0;
  flex: 0 0 auto;
}
.upload-setup-icons {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: 6px;
}
.upload-setup-icon {
  display: grid;
  place-items: center;
  min-height: 34px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--inset-deep, var(--bg));
  color: var(--text);
  font-weight: 500;
}
.upload-setup-icon svg {
  width: 16px;
  height: 16px;
  display: block;
}
.upload-setup-icon:hover,
.upload-setup-icon.is-selected {
  border-color: var(--accent, #c9a227);
  background: var(--panel);
}
.upload-setup-icon[data-icon-id="ping"] {
  color: #e8425f;
}
.upload-setup-no-icon {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}
.upload-setup-error {
  margin: 0;
  color: var(--danger, #c44536);
  font-size: 13px;
  font-weight: 650;
}
.upload-setup-error[hidden] {
  display: none !important;
}
.modal-card .subscriber-upload-hint {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}
.apple-zip-password-label {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 12px 0 4px;
  font-size: 12px;
  color: var(--muted);
}
.apple-zip-password-label input {
  font: inherit;
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 8px 10px;
}
.generic-loc-modal {
  z-index: 2100;
}
.generic-loc-card {
  width: min(840px, calc(100% - 32px));
}
.generic-loc-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px 18px;
  max-height: min(70vh, 560px);
  overflow: auto;
  padding-right: 4px;
}
.generic-loc-fields label {
  margin: 0;
}
.generic-loc-fields select {
  margin-bottom: 6px;
}
.generic-loc-tz-note {
  grid-column: 1 / -1;
  margin: -2px 0 8px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
  text-transform: none;
  letter-spacing: 0;
}
.csl-map-provider-label {
  display: block;
  margin-bottom: 10px;
}
.csl-map-provider-label select {
  display: block;
  width: 100%;
  margin-top: 6px;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 8px;
  font: inherit;
}
.manual-setup-type-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 12px 0 4px;
}
.manual-setup-type-actions .pol-feature-btn {
  text-align: left;
  width: 100%;
}
.modal-card label { display: block; color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; }
.modal-card label.theme-switch {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.modal-card input[type="text"],
.modal-card input[type="email"],
.modal-card input[type="datetime-local"],
.modal-card textarea {
  display: block;
  width: 100%;
  margin-top: 6px;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 8px;
}
#horizon-dialog-field-wrap[hidden],
#horizon-dialog-field-wrap[aria-hidden="true"] {
  display: none !important;
}
#upload-modal form {
  display: flex;
  flex-direction: column;
  gap: 12px;
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}
#upload-modal .upload-header,
#upload-modal .upload-drop,
#upload-modal .modal-actions {
  flex-shrink: 0;
}
#upload-modal .modal-actions {
  margin-top: 0;
  padding-top: 4px;
}
#upload-modal {
  padding: 24px;
  box-sizing: border-box;
}
#upload-modal.is-record-loading {
  z-index: 2600;
}
#duplicate-upload-modal,
#unsupported-upload-modal {
  z-index: 2800;
}
.upload-drop {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 112px;
  padding: 18px 16px;
  border: 1px dashed var(--line);
  background: var(--bg);
  cursor: pointer;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  font-size: 11px;
  transition: border-color 0.12s ease, background 0.12s ease, color 0.12s ease;
}
.upload-drop:hover,
.upload-drop:focus-within {
  border-color: var(--accent);
  color: var(--text);
}
.upload-drop.is-dragover {
  border-color: var(--accent);
  border-style: solid;
  background: color-mix(in srgb, var(--accent) 12%, transparent);
}
.upload-drop-title {
  font-size: 14px;
  font-weight: 650;
  letter-spacing: 0.02em;
}
#upload-modal .upload-drop input[type="file"] {
  position: absolute;
  inset: 0;
  z-index: 2;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  opacity: 0;
  cursor: pointer;
  font-size: 0;
}
.upload-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.upload-header h3 {
  margin: 0;
  font-size: 15px;
  font-weight: 650;
  letter-spacing: 0.02em;
}
.carrier-logo {
  height: 28px;
  width: auto;
  display: block;
}
.carrier-logo[hidden] { display: none; }
.upload-detected {
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  padding-right: 4px;
}
.upload-setup-banner {
  padding: 10px 12px;
  border: 1px solid color-mix(in srgb, var(--accent) 45%, var(--line));
  background: color-mix(in srgb, var(--accent) 10%, var(--bg));
  color: var(--text);
  font-size: 13px;
  line-height: 1.45;
}
.upload-setup-banner strong {
  color: var(--accent);
  font-weight: 700;
}
.upload-setup-banner em {
  font-style: normal;
  font-weight: 600;
  color: var(--accent);
}
.upload-item {
  display: grid;
  grid-template-columns: 12rem minmax(0, 1fr) max-content 24px;
  align-items: center;
  column-gap: 10px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  background: var(--bg);
}
.upload-item-needs-setup {
  border-color: color-mix(in srgb, var(--accent) 40%, var(--line));
  background: color-mix(in srgb, var(--accent) 6%, var(--bg));
}
.upload-item .upload-kind {
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  min-width: 0;
  white-space: nowrap;
}
.upload-item-needs-setup .upload-kind {
  color: var(--accent);
  font-weight: 700;
}
.upload-item .upload-name {
  color: var(--text);
  font-size: 13px;
  min-width: 0;
  overflow-wrap: anywhere;
}
.upload-item .upload-label {
  color: var(--accent);
  font-size: 12px;
  white-space: nowrap;
}
.upload-item .upload-setup-btn {
  appearance: none;
  margin: 0;
  padding: 4px 10px;
  border: 1px solid var(--accent);
  border-radius: 4px;
  background: color-mix(in srgb, var(--accent) 14%, transparent);
  color: var(--accent);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
  cursor: pointer;
}
.upload-item .upload-setup-btn:hover {
  background: color-mix(in srgb, var(--accent) 24%, transparent);
}
.upload-item .upload-remove {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  padding: 0;
  border: 1px solid var(--line);
  background: transparent !important;
  color: var(--muted);
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  font-weight: 400;
}
.upload-item .upload-remove:hover {
  color: var(--text);
  border-color: var(--text);
  background: var(--hover);
}
.upload-file-bar {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-areas:
    "kind label"
    "name name";
  gap: 2px 10px;
  margin-bottom: 8px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  background: var(--bg);
}
.upload-file-bar.has-phone {
  grid-template-areas:
    "phone phone"
    "kind label"
    "name name";
}
.upload-file-bar .upload-kind {
  grid-area: kind;
  color: var(--muted);
  font-size: 11px;
  font-weight: 650;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.upload-file-bar .upload-label {
  grid-area: label;
  justify-self: end;
  color: var(--accent);
  font-size: 12px;
  text-align: right;
}
.upload-file-bar .upload-name {
  grid-area: name;
  color: var(--text);
  font-size: 13px;
  font-weight: 650;
  overflow-wrap: anywhere;
}
.upload-workspace-files {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.upload-workspace-empty {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}
.modal-card fieldset {
  margin: 0;
  border: 1px solid var(--line);
  padding: 8px 12px 10px;
}
.modal-card legend {
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0 6px;
}
#filter-modal label {
  display: flex;
  gap: 8px;
  align-items: center;
  margin: 4px 0;
  color: var(--text);
  text-transform: none;
  letter-spacing: 0;
  font-size: 13px;
}
#filter-modal .filter-datetime-fields {
  display: grid;
  gap: 8px;
  margin-top: 8px;
  padding-left: 2px;
}
#filter-modal .filter-datetime-fields[hidden] {
  display: none;
}
#filter-modal .filter-datetime-row {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
  margin: 0;
}
#filter-modal .filter-datetime-row span {
  color: var(--muted);
  font-size: 12px;
}
#filter-modal .filter-datetime-row input[type="datetime-local"] {
  width: 100%;
  min-width: 0;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--inset-deep);
  color: var(--text);
  font: inherit;
}
#filter-modal .filter-modal-card {
  max-height: min(90vh, 720px);
  overflow: auto;
}
#filter-modal .filter-scope-note {
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}
#filter-modal .filter-evidence-fields {
  display: grid;
  gap: 8px;
  margin-top: 8px;
}
#filter-modal .filter-evidence-fields[hidden] {
  display: none;
}
#filter-modal .filter-evidence-column-row {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
  margin: 0;
}
#filter-modal .filter-evidence-column-row span {
  color: var(--muted);
  font-size: 12px;
}
#filter-modal #filter-evidence-column,
#filter-modal #filter-evidence-search {
  width: 100%;
  min-width: 0;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--inset-deep);
  color: var(--text);
  font: inherit;
}
#filter-modal .filter-evidence-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
#filter-modal .filter-evidence-actions button {
  padding: 4px 10px;
  font-size: 12px;
}
#filter-modal .filter-evidence-values {
  max-height: 180px;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 4px;
  padding: 6px 8px;
  background: var(--inset-deep);
}
#filter-modal .filter-evidence-values label {
  margin: 2px 0;
  font-size: 12px;
}
#filter-modal .filter-evidence-empty {
  color: var(--muted);
  font-size: 12px;
  padding: 4px 0;
}
#popup-fields-modal label,
#record-popup-fields-modal label {
  display: flex;
  gap: 8px;
  align-items: center;
  margin: 4px 0;
  color: var(--text);
  text-transform: none;
  letter-spacing: 0;
  font-size: 13px;
}
#popup-fields-modal fieldset[hidden],
#record-popup-fields-modal fieldset[hidden] {
  display: none;
}
#popup-fields-modal .wedge-angle-row,
#record-popup-fields-modal .wedge-angle-row {
  justify-content: space-between;
}
#popup-fields-modal .wedge-angle-row input[type="number"],
#record-popup-fields-modal .wedge-angle-row input[type="number"] {
  width: 96px;
  margin: 0;
  padding: 6px 8px;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  font-size: 13px;
}
#popup-fields-modal .wedge-angle-input,
#record-popup-fields-modal .wedge-angle-input {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
#popup-fields-modal .wedge-angle-unit,
#record-popup-fields-modal .wedge-angle-unit {
  color: var(--muted);
  font-size: 13px;
  text-transform: none;
  letter-spacing: 0;
}
#popup-fields-modal .wedge-angle-note,
#record-popup-fields-modal .wedge-angle-note {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 11px;
  text-transform: none;
  letter-spacing: 0;
  line-height: 1.35;
}
.numerology-modal-card {
  max-width: 34rem;
}
.numerology-disclaimer {
  margin: 0 0 10px;
  padding: 8px 10px;
  border: 1px solid color-mix(in srgb, #b45309 35%, var(--line));
  border-radius: 6px;
  background: color-mix(in srgb, #b45309 10%, var(--panel));
  color: var(--text);
  font-size: 12px;
  line-height: 1.45;
  text-transform: none;
  letter-spacing: 0;
}
.numerology-disclaimer strong {
  color: #8a4b0f;
}
html[data-theme="dark"] .numerology-disclaimer strong {
  color: #e0a106;
}
.numerology-explain {
  margin: 0 0 12px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
  text-transform: none;
  letter-spacing: 0;
}
.numerology-choices {
  margin: 0 0 4px;
  padding: 8px 10px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
}
.numerology-choices legend {
  padding: 0 4px;
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.numerology-choice {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 2px 10px;
  align-items: start;
  margin: 0;
  padding: 8px 6px;
  border-radius: 6px;
  cursor: pointer;
  text-transform: none;
  letter-spacing: 0;
  color: var(--text);
  font-size: 13px;
}
.numerology-choice + .numerology-choice {
  border-top: 1px solid var(--line);
}
.numerology-choice:hover {
  background: var(--hover);
}
.numerology-choice input {
  margin-top: 3px;
}
.numerology-choice-title {
  font-weight: 650;
}
.numerology-choice-meta {
  grid-column: 2;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.4;
}
#record-popup-fields-modal label[hidden] {
  display: none;
}
.site-popup {
  position: relative;
  min-width: 180px;
  padding-right: 22px;
}
.loc-popup {
  position: relative;
  min-width: 220px;
}
.loc-popup-head {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  /* Clear Leaflet’s top-right close control so the gear stays clickable. */
  margin: -2px 20px 4px 0;
  min-height: 22px;
}
.loc-popup-head .site-popup-fields-btn {
  position: relative;
  z-index: 2;
}
.site-popup-toolbar {
  position: absolute;
  top: -2px;
  right: -2px;
}
.sector-popup {
  min-width: 220px;
  max-width: 320px;
}
.sector-popup-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
  padding-right: 4px;
}
.sector-popup-tabs {
  display: flex;
  gap: 4px;
}
.sector-popup-tab {
  border: 1px solid var(--line);
  background: var(--inset);
  color: var(--muted);
  font-size: 11px;
  line-height: 1;
  padding: 5px 8px;
  cursor: pointer;
}
.sector-popup-tab.is-active {
  background: var(--panel);
  border-color: var(--muted);
  color: var(--text);
  font-weight: 600;
}
.sector-popup-gear {
  position: static;
  flex-shrink: 0;
}
.leaflet-popup-content-wrapper {
  cursor: grab;
  background: var(--panel);
  color: var(--text);
  box-shadow: 0 3px 14px var(--shadow);
}
.leaflet-popup-tip {
  background: var(--panel);
  box-shadow: none;
}
.leaflet-popup.horizon-popup-dragging,
.leaflet-popup.horizon-popup-dragging .leaflet-popup-content-wrapper {
  cursor: grabbing;
}
.leaflet-popup.horizon-popup-detached {
  position: fixed !important;
  transform: none !important;
  margin: 0 !important;
  z-index: 2800;
}
.leaflet-popup.horizon-popup-detached .leaflet-popup-tip-container,
.leaflet-popup.horizon-popup-shifted .leaflet-popup-tip-container {
  display: none;
}
.leaflet-popup-close-button,
.sector-popup-tab,
.site-popup-fields-btn {
  cursor: pointer;
}
/* Leaflet only positions the X while the popup is inside the map.
   Dragging moves the popup to the page, so keep the same corner placement. */
.leaflet-popup > a.leaflet-popup-close-button {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  box-sizing: border-box;
  width: 24px;
  height: 24px;
  border: none;
  padding: 0;
  text-align: center;
  font: 16px/24px Tahoma, Verdana, sans-serif;
  color: var(--muted);
  text-decoration: none;
  background: transparent;
}
.leaflet-popup > a.leaflet-popup-close-button:hover,
.leaflet-popup > a.leaflet-popup-close-button:focus {
  color: var(--text);
}
.sector-popup-panel {
  line-height: 1.45;
  max-height: 260px;
  overflow: auto;
  cursor: auto;
  scrollbar-width: thin;
  scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
}
.record-popup-item {
  cursor: pointer;
  border-radius: 4px;
  padding: 6px 8px 6px 10px;
  margin: 0 -4px;
}
.record-popup-item:hover {
  background: color-mix(in srgb, #b15a56 12%, var(--panel));
}
.leaflet-popup-content .record-popup-item.is-selected {
  background: color-mix(in srgb, #b15a56 22%, var(--panel));
  box-shadow: inset 4px 0 0 #b15a56;
}
.record-popup-item + .record-popup-item {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
}
.site-popup-fields-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
}
.site-popup-fields-btn:hover {
  color: var(--text);
}
.site-popup-fields-btn svg {
  width: 14px;
  height: 14px;
  display: block;
}
.site-popup-body {
  line-height: 1.45;
}
.site-popup-coords {
  user-select: all;
  -webkit-user-select: all;
  cursor: text;
  font-variant-numeric: tabular-nums;
}
.site-popup-body .muted {
  color: var(--muted);
  margin-right: 4px;
}
#identify-modal label {
  display: block;
  margin: 4px 0;
}
.ctx-menu {
  position: fixed;
  z-index: 4000;
  min-width: 160px;
  background: var(--panel);
  border: 1px solid var(--line);
  padding: 4px;
  box-shadow: 0 8px 24px var(--shadow);
}
.ctx-menu[hidden] { display: none; }
.ctx-menu-note {
  padding: 6px 10px 2px;
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 0;
  text-transform: none;
}
#poi-menu-stack[hidden] { display: none; }
.ctx-menu button {
  display: block;
  width: 100%;
  text-align: left;
  background: transparent;
  color: var(--text);
  border: 0;
  padding: 8px 10px;
  font-size: 13px;
  text-transform: none;
  letter-spacing: 0;
  cursor: pointer;
}
/* Author display:block must not override the HTML hidden attribute. */
.ctx-menu button[hidden] { display: none !important; }
.ctx-menu button:disabled {
  opacity: 0.45;
  cursor: default;
  color: var(--muted);
}
.ctx-menu button:hover { background: var(--hover); }
.ctx-menu button:disabled:hover { background: transparent; }
.commonality-id,
.commonality-web-inner { cursor: context-menu; }
.ctx-submenu { position: relative; }
.ctx-submenu > button::after {
  content: "›";
  float: right;
  color: var(--muted);
}
.ctx-submenu-panel {
  display: none;
  position: absolute;
  left: calc(100% - 2px);
  top: -4px;
  min-width: 132px;
  background: var(--panel);
  border: 1px solid var(--line);
  padding: 4px;
  box-shadow: 0 8px 24px var(--shadow);
  z-index: 1;
}
.ctx-submenu:hover > .ctx-submenu-panel,
.ctx-submenu.is-open > .ctx-submenu-panel,
.ctx-submenu:focus-within > .ctx-submenu-panel { display: block; }
.ctx-submenu.flip > .ctx-submenu-panel {
  left: auto;
  right: calc(100% - 2px);
}
#commonality-number-menu { max-width: 280px; }
#commonality-number-menu .ctx-menu-note { word-break: break-word; }
.poi-error {
  margin: 8px 0 0;
  color: var(--danger-text);
  font-size: 12px;
  text-transform: none;
  letter-spacing: 0;
}
.map-event-card form {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.map-event-coords {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
}
.map-event-choice {
  display: flex !important;
  align-items: center;
  gap: 8px;
  margin: 6px 0 0;
  color: var(--text);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}
.map-event-choice input {
  margin: 0;
}
#map-event-end-wrap[hidden],
#map-event-start-label[hidden],
#map-event-message-wrap[hidden],
#map-event-coords[hidden] {
  display: none !important;
}
.map-event-callouts {
  position: absolute;
  left: 50%;
  bottom: 28px;
  transform: translateX(-50%);
  z-index: 700;
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: min(420px, calc(100% - 48px));
  pointer-events: none;
}
.map-event-callouts[hidden] {
  display: none !important;
}
.map-event-callout {
  pointer-events: auto;
  background: var(--panel);
  color: var(--text);
  border: 1px solid var(--line);
  border-left: 4px solid #d96c3d;
  border-radius: 6px;
  padding: 10px 12px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.28);
}
.map-event-callout-name {
  font-weight: 700;
  font-size: 14px;
}
.map-event-callout-time {
  margin-top: 2px;
  font-size: 11px;
  color: var(--muted);
}
.map-event-callout-message {
  margin-top: 6px;
  font-size: 13px;
  line-height: 1.4;
  white-space: pre-wrap;
}
.map-event-marker-wrap {
  background: none;
  border: 0;
}
.map-event-marker {
  position: relative;
  width: 18px;
  height: 18px;
}
.map-event-diamond {
  position: absolute;
  left: 2px;
  top: 2px;
  width: 14px;
  height: 14px;
  background: #d96c3d;
  border: 2px solid #1a1d24;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.45);
  transform: rotate(45deg);
}
.map-event-label {
  position: absolute;
  left: 9px;
  top: 20px;
  transform: translateX(-50%);
  max-width: 180px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
  font-weight: 650;
  line-height: 1.3;
  color: #1a1d24;
  background: rgba(255, 245, 157, 0.94);
  padding: 1px 5px;
  border-radius: 2px;
}
.map-event-popup strong {
  display: block;
  margin-bottom: 4px;
}
.poi-marker {
  background: transparent;
  border: 0;
}
.poi-pin {
  width: 22px;
  height: 22px;
  margin: 0 auto;
  border-radius: 50% 50% 50% 0;
  border: 2px solid #1a1d24;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.45);
  transform: rotate(-45deg);
  position: relative;
  background: var(--poi-color, #c9a227);
}
.poi-pin::after {
  content: "";
  position: absolute;
  inset: 5px;
  border-radius: 50%;
  background: #1a1d24;
}
.poi-dot {
  width: 12px;
  height: 12px;
  margin: 1px auto 0;
  border-radius: 50%;
  border: 2px solid #1a1d24;
  background: var(--poi-color, #c9a227);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
}
.poi-none {
  width: 64px;
  height: 64px;
  margin: 0 auto;
  border-radius: 50%;
  background: transparent;
}
.poi-tooltip.poi-tooltip-hit {
  pointer-events: auto;
  cursor: pointer;
}
.poi-marker.poi-moving .poi-none,
.poi-moving .poi-none {
  border: 1.5px dashed #c9a227;
  background: rgba(201, 162, 39, 0.18);
}
.poi-glyph {
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.45));
}
.poi-glyph svg {
  width: 24px;
  height: 24px;
  display: block;
}
.poi-icon-menu {
  min-width: 248px;
  padding: 10px;
}
.poi-icon-section-label {
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 2px 0 8px;
}
.poi-icon-shapes {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
  margin-bottom: 12px;
}
.poi-icon-shapes button {
  display: grid;
  place-items: center;
  width: 100%;
  min-height: 40px;
  padding: 6px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--inset-deep);
  color: var(--text);
}
.poi-icon-shapes button:hover,
.poi-icon-shapes button.is-selected {
  border-color: var(--accent, #c9a227);
  background: var(--panel);
}
.poi-icon-shapes button svg {
  width: 22px;
  height: 22px;
}
.poi-icon-menu .color-swatches {
  margin-bottom: 10px;
}
.poi-tooltip {
  background: var(--panel);
  border: 1px solid var(--line);
  color: var(--text);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4);
  font-size: 12px;
  padding: 4px 8px;
  /* Size to label text — avoid Leaflet shrinking the bubble to ~1ch. */
  white-space: nowrap;
  width: max-content;
  max-width: min(42vw, 480px);
}
.poi-tooltip::before {
  border-top-color: var(--line);
}
.ruler-tooltip {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  line-height: 1.35;
  border-color: #e0a106;
  pointer-events: none;
}
.ruler-tooltip.ruler-tooltip-menu {
  pointer-events: auto;
  cursor: context-menu;
}
#map .leaflet-pane > svg path.horizon-ruler-hit {
  pointer-events: stroke !important;
  cursor: context-menu;
}
.ruler-tooltip.leaflet-tooltip-top::before {
  border-top-color: #e0a106;
}
.poi-label-text {
  display: inline;
  line-height: 1.25;
  border-radius: 2px;
  white-space: nowrap;
  word-break: normal;
  overflow-wrap: normal;
}
.poi-label-text.has-highlight {
  padding: 1px 4px;
}
.poi-name-card {
  min-width: min(400px, 92vw);
}
.poi-label-style {
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.poi-geo-extras {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.poi-coords-row,
.poi-radius-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.poi-coords-row input {
  flex: 1;
  min-width: 0;
  font-family: var(--font-mono);
  font-size: 12px;
}
.poi-coords-row button {
  flex: 0 0 auto;
  white-space: nowrap;
}
.poi-radius-row input[type="number"] {
  flex: 0 0 8.5rem;
  width: 8.5rem;
  min-width: 8.5rem;
}
.poi-radius-row select {
  flex: 1 1 auto;
  width: auto;
  min-width: 8rem;
  margin: 0;
}
.attach-location-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 280px;
  overflow: auto;
  margin: 10px 0 4px;
}
.attach-location-list button {
  text-align: left;
}
.attach-location-list button.is-selected {
  border-color: var(--accent);
  color: var(--text);
}
#poi-pin-color-custom,
#poi-radius-color-custom {
  width: 36px;
  height: 28px;
  padding: 0;
  border: 1px solid var(--line);
  background: var(--bg);
  cursor: pointer;
}
.poi-geo-extras .color-swatches {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.poi-label-style-row {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.poi-label-style-row-inline {
  flex-direction: row;
  flex-wrap: wrap;
  gap: 12px 18px;
}
.poi-label-style-row-inline label {
  flex: 1 1 140px;
  margin: 0;
}
.poi-label-style-title {
  font-size: 12px;
  color: var(--muted);
  text-transform: none;
  letter-spacing: 0;
}
.poi-label-style .color-swatches {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.poi-label-style .color-swatch.is-none {
  background:
    linear-gradient(to top right, transparent calc(50% - 1px), #c45c5c 50%, transparent calc(50% + 1px)),
    var(--bg);
}
.poi-label-opacity-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 6px;
}
.poi-label-opacity-wrap input[type="range"] {
  flex: 1;
  min-width: 100px;
}
#poi-label-opacity-val {
  font-size: 12px;
  color: var(--muted);
  min-width: 3.2em;
  text-align: right;
}
#poi-label-color-custom,
#poi-label-highlight-custom {
  width: 36px;
  height: 28px;
  padding: 0;
  border: 1px solid var(--line);
  background: var(--bg);
  cursor: pointer;
}
.color-menu {
  min-width: 196px;
  padding: 10px;
}
.color-menu-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  margin: 0 0 10px;
}
.color-menu .color-menu-tab {
  display: block;
  width: auto;
  padding: 6px 8px;
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 4px;
}
.color-menu .color-menu-tab:hover {
  background: var(--hover);
  color: var(--text);
}
.color-menu .color-menu-tab.is-active {
  color: var(--text);
  background: var(--hover);
  outline: 1px solid var(--text);
}
.color-swatches {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}
.color-menu .color-swatch {
  display: block;
  width: 28px;
  height: 28px;
  border: 1px solid var(--line);
  padding: 0;
  cursor: pointer;
  background: var(--swatch, #888) !important;
}
.color-menu .color-swatch:hover,
.color-menu .color-swatch.is-selected {
  background: var(--swatch, #888) !important;
  outline: 2px solid var(--text);
  outline-offset: 1px;
}
.color-custom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 0;
  color: var(--text);
  font-size: 13px;
  text-transform: none;
  letter-spacing: 0;
}
.color-custom input[type="color"] {
  width: 36px;
  height: 28px;
  padding: 0;
  border: 1px solid var(--line);
  background: transparent;
  cursor: pointer;
}
.color-menu-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 10px;
}
.color-menu-actions button {
  width: auto;
  padding: 6px 10px;
  font-size: 12px;
}
.color-menu-actions button.secondary {
  background: transparent;
  color: var(--text);
  border: 1px solid var(--line);
}
.color-menu-actions button.secondary:hover {
  background: var(--hover);
}
body.login {
  display: flex;
  align-items: center;
  justify-content: center;
}
.login-card {
  width: min(400px, calc(100% - 32px));
  background: var(--panel);
  border: 1px solid var(--line);
  padding: 28px 24px;
  text-align: center;
}
.login-logo {
  height: auto;
  width: min(300px, 100%);
  max-height: 96px;
  margin: 0 auto 10px;
  background: transparent;
}
.login-card .sub {
  margin: 0;
  font-size: 13px;
  line-height: 1.35;
  letter-spacing: 0.02em;
}
.login-card .motto {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 12px;
  font-style: italic;
  letter-spacing: 0.03em;
}
.login-card h1 { margin: 0; font-size: 18px; letter-spacing: 0.04em; }
.login-card form { margin-top: 20px; text-align: left; display: flex; flex-direction: column; gap: 12px; }
.login-card label { color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; }
.login-card input {
  display: block;
  width: 100%;
  margin-top: 6px;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 8px;
}
.login-error { color: var(--unmapped); font-size: 12px; margin: 0; }
.login-mfa-help {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.4;
  text-transform: none;
  letter-spacing: 0;
}
.login-forgot-wrap {
  margin: 10px 0 0;
  text-align: right;
}
.login-forgot {
  color: var(--muted);
  font-size: 12px;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.login-forgot:hover {
  color: var(--text);
}
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.admin-panel-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 4px 0 16px;
}
.admin-panel-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.admin-panel-nav #open-email-all[hidden] {
  display: none !important;
}
button.admin-panel-tab {
  padding: 8px 14px;
  border-radius: 4px;
  font-size: 13px;
  border: 1px solid var(--accent);
}
button.admin-panel-tab:not(.is-active) {
  background: var(--panel);
  color: var(--text);
  border-color: var(--line);
}
button.admin-panel-tab.is-active {
  background: var(--accent);
  color: var(--on-accent);
}
.admin-panel[hidden] {
  display: none !important;
}
.admin-fold {
  margin: 0 0 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
}
.admin-fold-summary {
  cursor: pointer;
  list-style: none;
  padding: 12px 14px;
  font-weight: 600;
  font-size: 15px;
}
.admin-fold-summary::-webkit-details-marker {
  display: none;
}
.admin-fold-summary::before {
  content: "▸";
  display: inline-block;
  margin-right: 8px;
  color: var(--muted);
  transition: transform 0.15s ease;
}
.admin-fold[open] > .admin-fold-summary::before {
  transform: rotate(90deg);
}
.admin-fold-body,
.admin-fold .admin-card.admin-fold-body {
  border: 0;
  border-top: 1px solid var(--line);
  border-radius: 0 0 8px 8px;
  margin: 0;
}
.admin-log-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.admin-log-toolbar h3 {
  margin: 0;
  font-size: 14px;
}
.admin-log-search {
  display: flex;
  align-items: center;
  margin-left: auto;
  flex: 1 1 220px;
  max-width: 420px;
  min-width: 180px;
}
.admin-log-search input {
  width: 100%;
  height: 36px;
  margin: 0;
  box-sizing: border-box;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  border-radius: var(--radius-control);
  padding: 8px 10px;
  font: inherit;
  font-size: 13px;
}
.admin-log-search input::placeholder {
  color: var(--text-subtle);
}
.admin-log-search input:focus {
  outline: 1px solid var(--accent);
  outline-offset: 1px;
}
.admin-auth-log-table td {
  font-size: 12px;
}
.admin-log-pager {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 12px;
}
.admin-log-pager[hidden] {
  display: none !important;
}
.admin-log-pager-label {
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.admin-log-pager button:disabled {
  opacity: 0.45;
  cursor: default;
}
.version-change-form {
  margin-bottom: 14px;
}
.version-change-form textarea {
  width: 100%;
  margin-top: 6px;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  border-radius: 4px;
  padding: 8px;
  font: inherit;
  resize: vertical;
  min-height: 72px;
}
.admin-version-table td {
  font-size: 12px;
  vertical-align: top;
}
.admin-version-summary {
  white-space: pre-wrap;
  max-width: 36rem;
  line-height: 1.4;
}
.admin-version-actions {
  display: flex;
  flex-direction: column;
  gap: 6px;
  white-space: nowrap;
}
.admin-version-table tr.is-editing td {
  vertical-align: top;
}
.admin-version-input {
  width: 100%;
  box-sizing: border-box;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  border-radius: 4px;
  padding: 6px 8px;
  font: inherit;
}
.admin-version-summary-input {
  min-height: 88px;
  resize: vertical;
  line-height: 1.4;
}
.login-mfa-qr {
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0 0 10px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}
.login-mfa-qr img,
.login-mfa-qr svg {
  display: block;
  width: 220px;
  height: 220px;
  max-width: 100%;
}
#login-mfa-secret-wrap input {
  font-family: var(--font-mono);
  font-size: 12px;
}
.login-actions {
  display: grid;
  grid-template-columns: 1fr;
  align-items: stretch;
  gap: 10px;
}
.login-actions:has(#mfa-back:not([hidden])) {
  grid-template-columns: 2fr 1fr;
}
.login-actions #login-submit,
.login-actions #mfa-back {
  min-width: 0;
  width: 100%;
}
.login-actions #mfa-back[hidden] {
  display: none !important;
}
.forgot-actions {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 10px;
  align-items: stretch;
}
.forgot-actions #forgot-submit,
.forgot-actions .forgot-back {
  min-width: 0;
  width: 100%;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  text-decoration: none;
}
.profile-card {
  max-width: 720px;
}
.profile-fields {
  display: grid;
  gap: 10px 24px;
  margin: 0;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.profile-fields > div {
  display: grid;
  gap: 4px;
}
.profile-fields dt {
  margin: 0;
  color: var(--muted);
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.profile-fields dd {
  margin: 0;
  font-size: 14px;
  word-break: break-word;
}
.profile-password-form {
  margin-top: 4px;
}
@media (max-width: 720px) {
  .profile-fields {
    grid-template-columns: 1fr;
  }
}
body.admin-page .home-main {
  max-width: none;
  width: 100%;
  box-sizing: border-box;
  padding: 24px 28px 32px;
}
body.admin-page .storage-help {
  max-width: none;
}
.admin-banner {
  margin: 0 0 12px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  color: var(--muted);
  font-size: 12px;
}
.admin-email-status {
  margin: 0 0 12px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  color: var(--muted);
  font-size: 12px;
}
.admin-email-status.is-ready {
  border-color: color-mix(in srgb, var(--ok, #2f6b3a) 45%, var(--line));
  color: var(--ok, #2f6b3a);
}
html[data-theme="dark"] #edit-saved.admin-email-status.is-ready {
  border-color: color-mix(in srgb, #8dcea0 45%, var(--line));
  color: #8dcea0;
}
.admin-email-status.is-warn {
  border-color: color-mix(in srgb, var(--danger-text, #a33) 40%, var(--line));
  color: var(--danger-text, #a33);
}
.admin-status {
  margin: 0 0 12px;
  color: var(--text);
  font-size: 13px;
  font-weight: 600;
}
.admin-status.is-error {
  color: var(--danger-text);
}
.admin-card {
  margin: 0 0 20px;
  padding: 16px 16px 12px;
  border: 1px solid var(--line);
  background: var(--panel);
}
.admin-card h3 {
  margin: 0 0 12px;
  font-size: 14px;
  font-weight: 650;
}
.admin-add-form {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.admin-add-row {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px 10px;
  align-items: end;
}
.admin-add-row-profile {
  grid-template-columns: repeat(3, minmax(0, 1fr)) auto;
}
.admin-add-row-identity {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}
.admin-add-form label,
.admin-mfa-card label,
#password-form label,
#edit-user-form label {
  display: block;
  color: var(--muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
#new-agency-custom-wrap[hidden],
#edit-agency-custom-wrap[hidden] {
  display: none !important;
}
.admin-add-form input,
.admin-add-form select,
.admin-mfa-card input,
#password-form input,
#edit-user-form input,
#edit-user-form select {
  display: block;
  width: 100%;
  margin-top: 6px;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 8px;
  font: inherit;
}
.admin-add-actions {
  display: flex;
  align-items: end;
}
.settings-cloudrf-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 10px 12px;
  width: 100%;
}
.settings-cloudrf-row label {
  flex: 1 1 220px;
  min-width: 0;
  margin: 0;
}
.settings-cloudrf-row input {
  display: block;
  width: 100%;
  height: 36px;
  box-sizing: border-box;
  -webkit-text-security: disc;
  text-security: disc;
}
.settings-cloudrf-actions {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 8px;
}
.settings-cloudrf-actions button {
  height: 36px;
  margin: 0;
  padding: 0 14px;
  border-radius: 4px;
  white-space: nowrap;
  box-sizing: border-box;
  font-size: 13px;
  line-height: 1;
  flex: 0 0 auto;
}
.settings-cloudrf-actions button.secondary {
  background: var(--bg);
}
.admin-hint {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 12px;
}
.admin-optional {
  font-weight: 400;
  color: var(--muted);
  font-size: 12px;
}
.admin-users-block {
  margin-bottom: 32px;
}
.admin-table-wrap {
  margin-bottom: 0;
}
.admin-table-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 10px;
  flex-wrap: wrap;
}
.admin-search-label {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 11px;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  white-space: nowrap;
}
.admin-users-table {
  table-layout: fixed;
  width: 100%;
}
.admin-users-table thead th,
.admin-users-table tbody td {
  padding: 6px 8px;
  font-size: 12px;
  letter-spacing: 0;
  overflow-wrap: break-word;
}
.admin-users-table thead th {
  font-size: 10.5px;
  letter-spacing: 0.04em;
}
.admin-users-table th:nth-child(1) { width: 14%; }
.admin-users-table th:nth-child(2) { width: 7%; }
.admin-users-table th:nth-child(3),
.admin-users-table th:nth-child(4) { width: 7%; }
.admin-users-table th:nth-child(5),
.admin-users-table td:nth-child(5) {
  width: 16%;
  white-space: normal;
  overflow-wrap: break-word;
}
.admin-users-table th:nth-child(6) { width: 8%; }
.admin-users-table th:nth-child(7) { width: 5%; }
.admin-users-table th:nth-child(8) { width: 7%; }
.admin-users-table th:nth-child(9),
.admin-users-table th:nth-child(10) { width: 10%; }
.admin-users-table select.admin-function-select {
  display: block;
  width: 100%;
  min-width: 0;
  max-width: none;
  height: 28px;
  margin: 0;
  box-sizing: border-box;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 2px 4px;
  font: inherit;
  font-size: 12px;
  text-transform: none;
  letter-spacing: 0;
  vertical-align: middle;
}
.admin-table-toolbar #user-group-by {
  flex: 0 0 auto;
  width: auto;
  min-width: 168px;
  margin: 0;
  height: 36px;
  box-sizing: border-box;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 4px 8px;
  font: inherit;
  text-transform: none;
  letter-spacing: 0;
}
.admin-table-toolbar #user-search {
  flex: 1 1 auto;
  min-width: 200px;
  max-width: 420px;
  height: 36px;
  box-sizing: border-box;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 8px 10px;
  font: inherit;
}
.admin-users-table tr.admin-agency-group td {
  padding: 0;
  background: color-mix(in srgb, var(--inset) 70%, var(--panel));
}
.admin-agency-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  margin: 0;
  padding: 8px 16px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-weight: 650;
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
  cursor: pointer;
}
.admin-agency-toggle:hover {
  background: var(--row-hover);
}
.admin-agency-toggle .section-caret {
  flex: 0 0 auto;
  transform: rotate(0deg);
}
.admin-agency-toggle.is-collapsed .section-caret {
  transform: rotate(-90deg);
}
.admin-agency-count {
  color: var(--muted);
  font-weight: 500;
  font-size: 12px;
}
.admin-agency-row {
  display: flex;
  align-items: center;
  min-width: 0;
}
.admin-agency-row .admin-agency-toggle {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
}
.admin-agency-edit {
  flex: 0 0 auto;
  margin: 4px 10px 4px 0;
  padding: 4px 10px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  line-height: 1.2;
}
.admin-search-count {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 12px;
  white-space: nowrap;
}
.admin-users-table tbody tr {
  cursor: default;
}
.admin-users-table thead th:last-child,
.admin-users-table .case-actions {
  width: 9%;
  min-width: 0;
  text-align: left;
}
.admin-you {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--accent) 22%, transparent);
  color: var(--accent);
  font-size: 10px;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  vertical-align: middle;
}
.admin-user-disabled td {
  color: var(--muted);
}
.admin-role,
.admin-inline {
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--line);
  padding: 6px 8px;
  font: inherit;
  width: 100%;
  min-width: 0;
}
.admin-inline {
  max-width: 160px;
}
.admin-switch {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  color: var(--text);
  font-size: 12px;
  text-transform: none;
  letter-spacing: 0;
  cursor: pointer;
}
.admin-switch input {
  width: 16px;
  height: 16px;
  margin: 0;
  accent-color: var(--accent);
}
.admin-danger-btn {
  color: var(--danger-text);
}
.admin-edit-card {
  min-width: min(380px, 92vw);
  max-height: calc(100dvh - 48px);
  overflow: auto;
}
.admin-licenses {
  margin: 16px 0 4px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}
.admin-licenses h4 {
  margin: 0 0 10px;
  font-size: 11px;
  font-weight: 650;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-subtle);
}
.admin-license-block {
  margin: 0 0 10px;
  padding: 10px 12px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.admin-license-block-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
  font-weight: 650;
}
.admin-license-expiry {
  color: var(--text-secondary);
  font-size: 12px;
  font-weight: 450;
  text-align: right;
}
.admin-license-block .admin-hint {
  margin: 8px 0 0;
}
.admin-add-user-card {
  width: min(920px, calc(100% - 32px));
  max-height: calc(100dvh - 48px);
  overflow: auto;
}
.email-all-card {
  width: min(720px, calc(100% - 32px));
  max-height: calc(100dvh - 48px);
  overflow: auto;
}
.email-all-format {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 14px 0 8px;
}
.email-all-format-tab {
  padding: 6px 12px;
  border-radius: 4px;
  font-size: 13px;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--text);
}
.email-all-format-tab.is-active {
  background: var(--accent);
  color: var(--on-accent);
  border-color: var(--accent);
}
.email-all-preview-btn {
  margin-left: auto;
}
.email-all-card label[hidden],
.email-all-preview[hidden],
.email-all-preview-btn[hidden],
#email-all-compose[hidden],
#email-all-confirm[hidden] {
  display: none !important;
}
.email-all-confirm-subject {
  margin: 8px 0 12px;
  color: var(--text);
  font-size: 16px;
  line-height: 1.4;
}
.email-all-card textarea {
  width: 100%;
  min-height: 160px;
  box-sizing: border-box;
  margin-top: 6px;
  font: inherit;
  padding: 8px 10px;
}
.email-all-card textarea#email-all-html {
  font-family: Consolas, "Courier New", monospace;
  font-size: 13px;
}
.email-all-preview {
  margin-top: 6px;
  border: 1px solid var(--line);
  background: #ffffff;
  min-height: 180px;
}
.email-all-preview iframe {
  display: block;
  width: 100%;
  height: 240px;
  border: 0;
  background: #ffffff;
}
.admin-add-user-card select {
  margin-bottom: 0;
}
.admin-table-toolbar > button {
  flex: 0 0 auto;
  box-sizing: border-box;
  height: auto;
  padding: 8px 10px;
  line-height: 1.2;
  white-space: nowrap;
}
.admin-user-log-card {
  width: min(760px, calc(100% - 32px));
  max-height: calc(100dvh - 48px);
}
.admin-user-log-wrap {
  overflow: auto;
  max-height: min(420px, calc(100dvh - 180px));
}
.admin-features-card .admin-edit-mfa {
  margin-top: 8px;
}
.admin-features-card .admin-cloudrf-key {
  display: block;
  margin: 8px 0 0 24px;
}
.admin-features-card .admin-cloudrf-key input {
  display: block;
  width: 100%;
  margin-top: 6px;
  box-sizing: border-box;
}
.admin-features-card .admin-cloudrf-follow {
  margin-left: 24px;
}
.admin-features-result {
  margin: 4px 0 0;
  font-size: 13px;
  font-weight: 650;
}
.admin-features-result.is-ok {
  color: #1f7a3a;
}
html[data-theme="dark"] .admin-features-result.is-ok {
  color: #8dcea0;
}
.admin-features-result.is-error {
  color: var(--danger-text);
}
.settings-feature-disabled,
.settings-feature-locked {
  opacity: 0.72;
}
.settings-feature-disabled input,
.settings-feature-disabled button,
.settings-feature-locked input,
.settings-feature-locked button {
  cursor: not-allowed;
}
.settings-theme-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 4px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: color-mix(in srgb, var(--bg) 55%, var(--panel));
}
.settings-theme-row .theme-switch {
  flex: 0 0 auto;
}
.settings-theme-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}
.settings-workspace-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}
.settings-security-fields {
  margin: 10px 0 6px;
}
.case-settings-card {
  width: min(560px, 94vw);
  max-height: calc(100vh - 48px);
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.case-settings-card .storage-help {
  margin: 0 0 10px;
}
.case-settings-card .admin-card {
  margin-bottom: 12px;
}
.case-settings-card .modal-actions {
  position: sticky;
  bottom: 0;
  background: var(--panel);
  padding-top: 10px;
  margin-top: 4px;
}
button.nav-btn {
  appearance: none;
  -webkit-appearance: none;
  font: inherit;
  cursor: pointer;
}
.header-menu-panel button.is-feature-disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.admin-edit-mfa {
  display: flex !important;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
  color: var(--text) !important;
  font-size: 13px !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  cursor: pointer;
}
.admin-license-apply {
  margin: 10px 0 0;
  padding: 10px 12px;
  border: 1px solid var(--line, #d1d5db);
  border-radius: 6px;
}
.admin-license-apply legend {
  padding: 0 4px;
  font-size: 12px;
  font-weight: 650;
}
.admin-license-apply-option {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 6px 0 0;
  font-size: 13px;
  line-height: 1.35;
  text-transform: none;
  letter-spacing: normal;
  cursor: pointer;
}
.admin-group-license-fields {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 8px 0 0 24px;
}
.admin-license-card {
  max-width: 440px;
}
.admin-edit-mfa input {
  width: 16px !important;
  height: 16px !important;
  margin: 0 !important;
  accent-color: var(--accent);
}
.admin-mfa-card {
  min-width: min(420px, 92vw);
}
.admin-mfa-qr {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 260px;
  margin: 8px 0 12px;
  padding: 16px;
  background: #fff;
  border: 1px solid var(--line);
}
.admin-mfa-qr img,
.admin-mfa-qr svg {
  width: 240px;
  height: 240px;
  display: block;
  image-rendering: pixelated;
}
@media (max-width: 900px) {
  .admin-add-row,
  .admin-add-row-profile,
  .admin-add-row-identity {
    grid-template-columns: 1fr 1fr;
  }
}

#horizon-print-root {
  display: none !important;
}
@media print {
  html, body {
    background: #fff !important;
    color: #1a1d24 !important;
    height: auto !important;
    overflow: visible !important;
  }
  body.map-page {
    display: block !important;
    grid-template-columns: none !important;
    grid-template-rows: none !important;
  }
  body.map-page > *:not(#horizon-print-root) {
    display: none !important;
  }
  #horizon-print-root,
  #horizon-print-root[hidden] {
    display: block !important;
    position: static !important;
    inset: auto !important;
    width: auto !important;
    max-width: none !important;
    padding: 0 !important;
    margin: 0 !important;
    color: #1a1d24 !important;
    background: #fff !important;
    overflow: visible !important;
  }
  #horizon-print-root .doc-header {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: flex-start;
    padding-bottom: 14px;
    border-bottom: 2px solid #1a1d24;
    margin-bottom: 16px;
  }
  #horizon-print-root .brand {
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #5c6570;
  }
  #horizon-print-root h1 {
    margin: 4px 0 0;
    font-size: 22px;
    font-weight: 650;
    color: #1a1d24;
  }
  #horizon-print-root .meta {
    text-align: right;
    color: #5c6570;
    font-size: 11px;
    line-height: 1.5;
  }
  #horizon-print-root .summary {
    margin: 0 0 16px;
    color: #3a424e;
    font-size: 12px;
  }
  #horizon-print-root table {
    width: 100%;
    border-collapse: collapse;
    font-size: 11px;
    color: #1a1d24;
  }
  #horizon-print-root th,
  #horizon-print-root td {
    padding: 6px 8px;
    text-align: left;
    border-bottom: 1px solid #d5dae2;
    vertical-align: top;
    color: #1a1d24;
  }
  #horizon-print-root td.source-file {
    word-break: break-word;
  }
  #horizon-print-root th {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #5c6570;
    border-bottom: 1px solid #1a1d24;
  }
  #horizon-print-root .footer {
    margin-top: 22px;
    padding-top: 10px;
    border-top: 1px solid #d5dae2;
    color: #5c6570;
    font-size: 10px;
  }
  #horizon-print-root .pol-scan-site {
    font-weight: 600;
  }
  #horizon-print-root .pol-feature-desc {
    color: #5c6570;
    font-size: 11px;
    margin-top: 2px;
  }
  #horizon-print-root .pol-drive-table {
    font-size: 9px;
  }
  body.activity-printing.map-page > main:not(#horizon-print-root) {
    display: block !important;
    height: auto !important;
    overflow: visible !important;
  }
  body.activity-printing #horizon-print-root,
  body.activity-printing #horizon-print-root[hidden] {
    display: none !important;
  }
  body.activity-printing .map-host {
    position: static !important;
    height: auto !important;
    overflow: visible !important;
  }
  body.activity-printing .map-host > *:not(#activity-panel) {
    display: none !important;
  }
  body.activity-printing #activity-panel,
  body.activity-printing #activity-panel[hidden] {
    display: flex !important;
    position: static !important;
    inset: auto !important;
    width: auto !important;
    height: auto !important;
    overflow: visible !important;
    visibility: visible !important;
    background: #fff !important;
    color: #1a1d24 !important;
    border: 0 !important;
  }
  body.activity-printing .activity-panel-bar,
  body.activity-printing .activity-body,
  body.activity-printing .activity-device-name,
  body.activity-printing .activity-range-label,
  body.activity-printing .activity-tick {
    background: #fff !important;
    color: #1a1d24 !important;
  }
  body.activity-printing .activity-range-label,
  body.activity-printing .activity-tick {
    color: #5c6570 !important;
  }
  body.activity-printing .activity-body,
  body.activity-printing .activity-panel {
    overflow: visible !important;
  }
  body.activity-printing .activity-print-hide {
    display: none !important;
  }
  body.activity-printing .activity-svg,
  body.activity-printing .activity-swatch {
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }
}

/* Selected-record wedge. The canvas covers the map; clicks must pass through it. */
.leaflet-recordHighlight-pane,
.leaflet-recordHighlight-pane canvas,
.leaflet-recordHighlight-pane svg,
.leaflet-recordHighlight-pane * {
  pointer-events: none !important;
}

/* =====================================================================
   Theme A (Ops Console): shared controls, header and Cases page.
   Styling only. Colors come from the variables at the top of this file.
   ===================================================================== */
button,
input,
select,
textarea {
  font-family: inherit;
}
:where(body:not(.map-page)) button {
  border-radius: var(--radius-control);
}
:where(body:not(.map-page)) .modal-card {
  border-radius: var(--radius-card);
}

/* Header bar (Cases, Settings, Profile, Administrator) */
.top {
  background: var(--surface);
  border-bottom-color: var(--line);
}
body:not(.map-page) .top {
  flex-wrap: wrap;
  row-gap: 10px;
  padding: 10px 32px;
}
body:not(.map-page) .top .header-right {
  flex-wrap: wrap;
  flex-shrink: 1;
  justify-content: flex-end;
  gap: 8px;
}
body:not(.map-page) .top .header-right > button,
body:not(.map-page) .top .header-right .nav-btn,
body:not(.map-page) .top .header-right .header-menu-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 38px;
  padding: 0 14px;
  border-radius: var(--radius-control);
  font-size: 13px;
  font-weight: 500;
  line-height: 1;
}
body:not(.map-page) .top .header-right > button:not(.secondary) {
  font-weight: 600;
}
body:not(.map-page) .top .header-right > button.secondary,
body:not(.map-page) .top .header-right .nav-btn,
body:not(.map-page) .top .header-right .header-menu-toggle {
  background: transparent;
  color: var(--text);
  border: 1px solid var(--border-control);
}
body:not(.map-page) .top .header-right > button.secondary:hover,
body:not(.map-page) .top .header-right .nav-btn:hover,
body:not(.map-page) .top .header-right .header-menu-toggle:hover {
  background: var(--hover);
}
body:not(.map-page) .top .header-right > button:not(.secondary):hover {
  background: color-mix(in srgb, var(--accent) 88%, #000);
}
body .top .header-right a.nav-btn[href="/cases"] {
  font-weight: 700;
}
#logout {
  font-weight: 400;
}
.header-menu-panel {
  border-radius: var(--radius-inner);
}

/* Header theme switch becomes a sun/moon icon button */
.top .header-right > .theme-switch {
  margin-left: 4px;
  padding-left: 12px;
  border-left: 1px solid var(--border-control);
}
.top .header-right > .theme-switch .theme-switch-text {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.top .header-right > .theme-switch .theme-switch-ui,
.top .header-right > .theme-switch input:checked + .theme-switch-ui {
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: var(--radius-control);
  background: transparent;
}
.top .header-right > .theme-switch .theme-switch-ui::after,
.top .header-right > .theme-switch input:checked + .theme-switch-ui::after {
  top: 11px;
  left: 11px;
  width: 18px;
  height: 18px;
  border-radius: 0;
  transform: none;
  transition: none;
  background: var(--muted);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5z'/%3E%3C/svg%3E") center / 18px 18px no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5z'/%3E%3C/svg%3E") center / 18px 18px no-repeat;
}
.top .header-right > .theme-switch input:checked + .theme-switch-ui::after {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4'/%3E%3C/svg%3E");
}
.top .header-right > .theme-switch:hover .theme-switch-ui {
  background: var(--hover);
}
.top .header-right > .theme-switch:hover .theme-switch-ui::after {
  background: var(--text);
}

/* Cases page layout */
body.home .home-main {
  padding: 28px 32px 56px;
  font-size: 14px;
}
body.home .home-status-row {
  gap: 20px;
  margin: 0 0 28px;
  align-items: start;
}
@media (min-width: 821px) {
  /* Workspace card sizes to its content so each group stays on one line. */
  body.home .home-status-row {
    grid-template-columns: max-content minmax(320px, 1fr);
  }
  body.home .home-status-row .storage-status {
    width: max-content;
  }
  body.home .storage-status-main,
  body.home .storage-status-dirs,
  body.home .storage-status-actions {
    flex-wrap: nowrap;
    white-space: nowrap;
  }
}
body.home .storage-status,
body.home .announcements-panel,
body.home .share-inbox,
body.home .support-request {
  padding: 20px 22px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--panel);
  font-size: 13px;
}
body.home .support-request {
  padding: 0;
}
body.home .support-request > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0;
  padding: 14px 18px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  line-height: 1.3;
  text-transform: uppercase;
  cursor: pointer;
  list-style: none;
}
body.home .support-request > summary::-webkit-details-marker {
  display: none;
}
body.home .support-request > summary::after {
  content: "";
  flex: 0 0 auto;
  width: 7px;
  height: 7px;
  margin-top: -3px;
  border-right: 1.7px solid currentColor;
  border-bottom: 1.7px solid currentColor;
  transform: rotate(45deg);
}
body.home .support-request[open] > summary::after {
  margin-top: 3px;
  transform: rotate(-135deg);
}
body.home .support-request > form {
  padding: 0 18px 16px;
}

/* Workspace (storage) card */
body.home .storage-status-main {
  gap: 8px;
}
body.home .storage-status-main span {
  display: inline-flex;
  align-items: center;
  padding: 4px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--chip);
  color: var(--text-secondary);
  font-size: 12px;
}
body.home .storage-status-dirs {
  gap: 8px 28px;
  margin-top: 16px;
  padding: 12px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
body.home .storage-dir-line {
  color: var(--text-secondary);
  font-size: 13px;
}
body.home .storage-status-actions {
  gap: 8px;
  margin-top: 16px;
}
body.home .storage-status-actions button {
  height: 34px;
  padding: 0 12px;
  border-radius: var(--radius-control);
  font-size: 13px;
  font-weight: 500;
}
body.home .storage-status-actions button.secondary,
body.home .storage-status-actions #restore-from-backup {
  background: transparent;
  color: var(--text);
  border: 1px solid var(--border-control);
  box-shadow: none;
}
body.home .storage-status-actions button.secondary:not(:disabled):hover,
body.home .storage-status-actions #restore-from-backup:hover {
  background: var(--hover);
}

/* Announcements card */
body.home .announcements-panel h2 {
  margin: 0 0 14px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.announcement .announcement-meta {
  color: var(--text-subtle);
  font-family: var(--font-mono);
  font-size: 11.5px;
}
body.home .announcement h3 {
  font-size: 14px;
  font-weight: 600;
}
body.home .announcement p {
  color: var(--text-secondary);
  font-size: 13px;
}
.announcement.is-urgent {
  margin-left: 0;
  margin-right: 0;
  padding: 12px 14px;
  border: 1px solid color-mix(in srgb, var(--accent) 35%, var(--line));
  border-radius: var(--radius-inner);
  background: var(--card-raised);
}
.announcement.is-urgent .announcement-pin,
.announcements-pinned .announcement-pin {
  color: var(--link);
}
button.announcements-see-all {
  color: var(--link);
}
button.announcements-see-all:hover,
button.announcements-see-all:focus-visible {
  color: var(--link-hover);
}

/* Active cases table */
body.home .cases-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 0 0 14px;
}
body.home .cases-heading h2 {
  margin: 0;
  font-size: 20px;
  font-weight: 600;
}
body.home .cases-search {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  flex: 0 1 320px;
  min-width: 180px;
}
body.home .cases-search input {
  width: 100%;
  min-width: 0;
  height: 36px;
  margin: 0;
  padding: 0 12px;
  box-sizing: border-box;
  border: 1px solid var(--border-control);
  border-radius: var(--radius-control);
  background: var(--panel);
  color: var(--text);
  font-size: 13px;
}
body.home .cases-search input::placeholder {
  color: var(--text-subtle);
}
body.home .cases-search input:focus {
  outline: 1px solid var(--accent);
  outline-offset: 1px;
}
body.home .cases-search-count {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 12px;
  white-space: nowrap;
}
body.home .cases-search-count[hidden] {
  display: none;
}
body.home .cases-table tbody tr.cases-empty-row,
body.home .cases-table tbody tr.cases-empty-row:hover {
  background: transparent;
  cursor: default;
}
@media (max-width: 640px) {
  body.home .cases-heading {
    flex-wrap: wrap;
    align-items: stretch;
  }
  body.home .cases-search {
    flex: 1 1 100%;
  }
}
body.home .cases-wrap {
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--panel);
}
body.home .cases-table thead th {
  padding: 12px 16px;
  background: var(--panel);
  border-bottom: 1px solid var(--line);
  color: var(--muted);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
body.home .cases-table tbody td {
  padding: 8px 16px;
  border-bottom: 1px solid var(--row-divider);
  color: var(--text-secondary);
  font-size: 14px;
}
body.home .cases-table tbody tr:last-child td {
  border-bottom: 0;
}
body.home .cases-table tbody tr:hover {
  background: var(--row-hover);
}
body.home .cases-table tbody td:first-child {
  color: var(--text);
  font-weight: 600;
}
body.home .cases-table tbody td:nth-child(2) {
  color: var(--text-subtle);
}
body.home .cases-table tbody td:nth-child(3),
body.home .cases-table tbody td:nth-child(4) {
  color: var(--text-data);
  font-family: var(--font-mono);
  font-size: 12.5px;
}
body.home .cases-table .empty {
  color: var(--muted);
}
body.admin-page .admin-users-table thead th,
body.admin-page .admin-users-table tbody td {
  padding: 6px 8px;
  font-size: 12px;
  letter-spacing: 0.02em;
  overflow-wrap: break-word;
}
body.admin-page .admin-users-table thead th {
  font-size: 10.5px;
  letter-spacing: 0.04em;
}
body.admin-page .admin-users-table tbody td:nth-child(2),
body.admin-page .admin-users-table tbody td:nth-child(3),
body.admin-page .admin-users-table tbody td:nth-child(4),
body.admin-page .admin-users-table tbody td:nth-child(5) {
  font-family: inherit;
  font-size: 12px;
}
body.home .case-actions .icon-btn {
  width: 36px;
  height: 36px;
  margin-left: 2px;
  border: 0;
  border-radius: var(--radius-control);
  background: transparent;
  color: var(--text-subtle);
}
body.home .case-actions .icon-btn svg {
  width: 17px;
  height: 17px;
}
body.home .case-actions .icon-btn:hover,
body.home .case-actions .icon-btn:focus-visible {
  background: var(--hover);
  color: var(--text);
}
body.home .case-actions .icon-btn[data-action="delete"]:hover,
body.home .case-actions .icon-btn[data-action="delete"]:focus-visible {
  background: var(--danger-bg);
  color: var(--danger);
}
.recall-state-card {
  width: min(520px, calc(100% - 32px));
}
.recall-state-list {
  display: flex;
  flex-direction: column;
  max-height: min(360px, 50vh);
  overflow: auto;
}
.recall-state-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 8px;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid var(--line);
}
.recall-state-row:last-child {
  border-bottom: 0;
}
.recall-state-label {
  min-width: 0;
}
.recall-state-name {
  font-size: 14px;
  font-weight: 650;
  text-transform: none;
  letter-spacing: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.recall-state-when {
  color: var(--muted);
  font-size: 12px;
  text-transform: none;
  letter-spacing: 0;
}

/* Type: Poppins for page headings, Source Sans 3 everywhere else.
   Even-width figures keep times, counts and IDs lined up. */
html,
body {
  font-variant-numeric: tabular-nums;
}
h1,
h2 {
  font-family: var(--font-heading);
}
