/* Operations-Setup (SPEC-0142) — gemeinsame Light-DOM-Styles der vier
 * Elemente cw-operations-setup-overlay, cw-area-maintenance-overlay,
 * cw-asset-maintenance-overlay und cw-asset-types-overlay. Alle Selektoren
 * sind unter .operations-setup-overlay gescoped; ausschließlich --core-*/
 * Systemtokens mit Fallback, damit alle vier Themes tragen. */

.operations-setup-overlay {
  display: block;
  min-height: 100%;
  padding: 20px 26px 28px;
  color: var(--text);
  background: var(--surface);
  overflow: auto;
}

.operations-setup-overlay .ops-header {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 14px;
}

.operations-setup-overlay .ops-header h2 {
  margin: 2px 0 4px;
  font-size: 1.15rem;
  font-weight: 800;
}

.operations-setup-overlay .eyebrow {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.operations-setup-overlay .ops-header small,
.operations-setup-overlay .ops-muted {
  color: var(--text-muted);
  font-size: 0.78rem;
}

.operations-setup-overlay .ops-header-actions,
.operations-setup-overlay .ops-scope,
.operations-setup-overlay .ops-tool-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.operations-setup-overlay .ops-persist {
  padding: 3px 10px;
  border: 1px solid var(--border);
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.05em;
}

.operations-setup-overlay .ops-persist.is-dirty {
  border-color: var(--warning, var(--border));
  color: var(--warning, var(--text));
}

.operations-setup-overlay .hud-chip,
.operations-setup-overlay .count-pill {
  padding: 3px 10px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface-elevated);
  font-size: 0.72rem;
  font-weight: 700;
}

.operations-setup-overlay .ops-area-picker,
.operations-setup-overlay .ops-search {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-bottom: 12px;
  min-width: 180px;
}

.operations-setup-overlay .ops-area-picker span,
.operations-setup-overlay .ops-search span {
  color: var(--text-muted);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.operations-setup-overlay input,
.operations-setup-overlay select,
.operations-setup-overlay textarea {
  min-height: 32px;
  padding: 5px 9px;
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text);
  background: var(--surface-elevated);
  font: inherit;
  font-size: 0.82rem;
}

.operations-setup-overlay textarea {
  resize: vertical;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}

.operations-setup-overlay input[readonly],
.operations-setup-overlay textarea[readonly] {
  opacity: 0.72;
}

.operations-setup-overlay .ops-layout {
  display: grid;
  gap: 14px;
}

.operations-setup-overlay .ops-layout--split {
  grid-template-columns: minmax(240px, 320px) minmax(0, 1fr);
  align-items: start;
}

@media (max-width: 900px) {
  .operations-setup-overlay .ops-layout--split {
    grid-template-columns: minmax(0, 1fr);
  }
}

.operations-setup-overlay .ops-card,
.operations-setup-overlay .ops-list-card {
  padding: 14px 16px 16px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--surface-elevated);
  box-shadow: var(--shadow-card, none);
}

.operations-setup-overlay .ops-card h3,
.operations-setup-overlay .ops-list-card h3 {
  margin: 0 0 8px;
  font-size: 0.92rem;
  font-weight: 800;
}

.operations-setup-overlay .ops-card h4 {
  margin: 14px 0 6px;
  font-size: 0.82rem;
  font-weight: 800;
}

.operations-setup-overlay .ops-card-head {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
}

/* Kartenfuss — Bestand VcCard `#footer` (VcCard.vue:97-103): rechtsbuendige
 * Knopfzeile am unteren Rand der Karte. */
.operations-setup-overlay .ops-card-foot {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  justify-content: flex-end;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

.operations-setup-overlay .ops-line-list,
.operations-setup-overlay .ops-assign-list,
.operations-setup-overlay .ops-tree {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 460px;
  overflow: auto;
}

.operations-setup-overlay .ops-line-row,
.operations-setup-overlay .ops-tree-node,
.operations-setup-overlay .ops-tree-leaf {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: baseline;
  width: 100%;
  padding: 6px 8px;
  border: 1px solid transparent;
  border-radius: 10px;
  color: inherit;
  background: transparent;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.operations-setup-overlay .ops-line-row:hover,
.operations-setup-overlay .ops-tree-node:hover,
.operations-setup-overlay .ops-tree-leaf:hover {
  background: var(--surface);
}

.operations-setup-overlay .ops-line-row.is-active,
.operations-setup-overlay .ops-tree-node.is-active,
.operations-setup-overlay .ops-tree-leaf.is-active {
  border-color: var(--accent, var(--border));
  background: var(--surface);
}

/* --- Struktur-Reiter „Area" / „Assets" (SPEC-0442) ------------------------
   Bestand ManageAreaPanel.vue:289-338 (`structure-topbar`): Reiterleiste,
   Kennzahlen-Chips und die Uebernahme-Aktion ueber dem Baum. */
.operations-setup-overlay .ops-structure-tabs {
  display: flex;
  gap: var(--core-space-2, 8px);
}

.operations-setup-overlay .ops-structure-tab {
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: var(--core-space-1, 4px) var(--core-space-3, 12px);
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
}

.operations-setup-overlay .ops-structure-tab.is-active {
  border-color: var(--accent, var(--border));
  background: var(--surface);
}

.operations-setup-overlay .ops-structure-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--core-space-2, 8px);
}

.operations-setup-overlay .ops-chip {
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 2px var(--core-space-2, 8px);
  font-size: 0.8rem;
}

.operations-setup-overlay .ops-structure-adopt {
  margin-bottom: var(--core-space-2, 8px);
}

/* Der Assets-Reiter ist nur lesbar — Bestand manageAreaPanel.css:909-916:
   keine Zeigerhand, keine Hover-Hervorhebung. Ohne diese beiden Regeln waere
   `is-readonly` eine Klasse ohne Wirkung. */
.operations-setup-overlay .ops-tree.is-readonly .ops-tree-node,
.operations-setup-overlay .ops-tree.is-readonly .ops-tree-leaf {
  cursor: default;
}

.operations-setup-overlay .ops-tree.is-readonly .ops-tree-node:hover,
.operations-setup-overlay .ops-tree.is-readonly .ops-tree-leaf:hover {
  background: inherit;
}

/* Blattzeile mit Uebernahme-Knopf (Bestand `structure-tree-leaf-row`). */
.operations-setup-overlay .ops-tree-leaf-row {
  display: flex;
  align-items: center;
  gap: var(--core-space-1, 4px);
}

.operations-setup-overlay .ops-tree-leaf-row .ops-tree-leaf {
  flex: 1 1 auto;
  min-width: 0;
}

.operations-setup-overlay .ops-adopt-btn {
  flex: 0 0 auto;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: transparent;
  color: inherit;
  font: inherit;
  line-height: 1;
  padding: var(--core-space-1, 4px) var(--core-space-2, 8px);
  cursor: pointer;
}

.operations-setup-overlay .ops-adopt-btn:hover {
  border-color: var(--accent, var(--border));
  background: var(--surface);
}

.operations-setup-overlay .ops-line-row small,
.operations-setup-overlay .ops-line-row em,
.operations-setup-overlay .ops-tree-leaf em,
.operations-setup-overlay .ops-tree-node em {
  color: var(--text-muted);
  font-size: 0.74rem;
  font-style: normal;
}

.operations-setup-overlay .ops-line-dot {
  width: 10px;
  height: 10px;
  border: 1px solid var(--border);
  border-radius: 999px;
}

.operations-setup-overlay .ops-tree-branch {
  border-left: 2px solid var(--border);
  margin-left: 4px;
  padding-left: 8px;
}

.operations-setup-overlay .ops-tree-children {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-left: 12px;
}

/* --- Auf-/zuklappbarer Baum (Bestand ManageAreaPanel.vue:341-444) ---------
   Der Bestand baut die Zweige aus <details>/<summary> mit einem Chevron, das
   sich beim Aufklappen dreht; der Port zeigte alles dauerhaft offen. Der
   native Marker muss weg, sonst stehen zwei Dreiecke nebeneinander. */
.operations-setup-overlay .ops-tree-branch > summary {
  list-style: none;
}

.operations-setup-overlay .ops-tree-branch > summary::-webkit-details-marker {
  display: none;
}

.operations-setup-overlay .ops-tree-chevron {
  flex: 0 0 auto;
  font-size: 18px;
  color: var(--muted, var(--text));
  transition: transform 120ms ease;
}

.operations-setup-overlay .ops-tree-branch[open] > summary .ops-tree-chevron {
  transform: rotate(90deg);
}

.operations-setup-overlay .ops-tree-icon {
  flex: 0 0 auto;
  font-size: 18px;
  color: var(--muted, var(--text));
}

/* Wurzelzeile „Area" — im Bestand ueber allen Zweigen, selbst auswaehlbar. */
.operations-setup-overlay .ops-tree-root {
  font-weight: 700;
}

.operations-setup-overlay .ops-tree-node,
.operations-setup-overlay .ops-tree-leaf {
  align-items: center;
}

/* Farbwaehler mit Klartext daneben (Bestand `color-input-wrap`). */
.operations-setup-overlay .ops-color-wrap {
  display: inline-flex;
  gap: 8px;
  align-items: center;
}

.operations-setup-overlay .ops-color-wrap code {
  font-size: 0.78rem;
  color: var(--muted, var(--text));
}

/* Verschiebe-Block unter dem Baum (Bestand ManageAreaPanel.vue:460-480). */
.operations-setup-overlay .ops-move-block {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

.operations-setup-overlay .ops-move-block h4 {
  margin: 0 0 6px;
  font-size: 0.86rem;
}

.operations-setup-overlay .ops-move-target {
  margin-bottom: 8px;
}

.operations-setup-overlay .ops-assign-row,
.operations-setup-overlay .ops-attr-row,
.operations-setup-overlay .ops-toggle {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 4px 2px;
  font-size: 0.82rem;
}

.operations-setup-overlay .ops-toggle input,
.operations-setup-overlay .ops-assign-row input,
.operations-setup-overlay .ops-attr-row input {
  min-height: auto;
}

.operations-setup-overlay .ops-attr-row {
  justify-content: space-between;
  border-bottom: 1px solid var(--border);
}

.operations-setup-overlay .ops-move-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: flex-end;
  margin-bottom: 10px;
}

.operations-setup-overlay .ops-tool-result {
  margin: 10px 0 0;
  color: var(--success, var(--text));
  font-size: 0.8rem;
  font-weight: 700;
}

.operations-setup-overlay .ops-report-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 10px;
}

.operations-setup-overlay .ops-report-list {
  margin: 0 0 10px;
  padding-left: 18px;
  font-size: 0.8rem;
}

.operations-setup-overlay .ops-report-list--error {
  color: var(--danger, var(--text));
}

.operations-setup-overlay .ops-import-decision {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--border);
}

.operations-setup-overlay .ops-confirm {
  margin: 10px 0;
  padding: 10px 12px;
  border: 1px solid var(--warning, var(--border));
  border-radius: 12px;
  background: var(--surface);
}

.operations-setup-overlay .ops-confirm p {
  margin: 0 0 8px;
  font-size: 0.84rem;
  font-weight: 700;
}

/* Kopier-Panel — im Bestand (AssetTypeMaintenanceOverlay.vue:15-45) eine
 * EIGENE, volle Karte zwischen Kopf und Koerper, kein Einschub der
 * Listenspalte. Traegt deshalb zusaetzlich `.ops-card`. */
.operations-setup-overlay .ops-copy-panel {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 14px;
}

.operations-setup-overlay .ops-copy-panel .ops-muted {
  margin: 0;
}

.operations-setup-overlay .ops-copy-panel .ops-assign-list {
  max-height: 220px;
}

.operations-setup-overlay .ops-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 10px 0 12px;
  border-bottom: 1px solid var(--border);
}

.operations-setup-overlay .ops-tab {
  padding: 6px 12px;
  border: 1px solid transparent;
  border-bottom: none;
  border-radius: 10px 10px 0 0;
  color: var(--text-muted);
  background: transparent;
  font: inherit;
  font-size: 0.8rem;
  font-weight: 700;
  cursor: pointer;
}

.operations-setup-overlay .ops-tab.is-active {
  border-color: var(--border);
  color: var(--text);
  background: var(--surface);
}

.operations-setup-overlay .ops-tab:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.operations-setup-overlay .ops-attr-panel {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.operations-setup-overlay .ops-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.8rem;
}

.operations-setup-overlay .ops-table th,
.operations-setup-overlay .ops-table td {
  padding: 6px 8px;
  border-bottom: 1px solid var(--border);
  text-align: left;
}

/* Layout-Editor-Sektion (SPEC-0148 §4): Draft-Vorschau + Drei-Block-Grid. */
.operations-setup-overlay .ops-editor-canvas {
  width: 100%;
  height: 340px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface-sunken);
  display: block;
}

/* Grund, warum die Live-Vorschau nicht zeichnet (SPEC-0480 §6). Steht UEBER
   dem Canvas, damit der Hinweis nicht unter der schwarzen Flaeche verschwindet. */
.operations-setup-overlay .ops-editor-preview-warning {
  margin: 0 0 8px;
  padding: 6px 10px;
  border: 1px solid var(--warning, var(--border));
  border-radius: 8px;
  color: var(--warning, var(--text));
}

.operations-setup-overlay .ops-editor-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 12px;
}

.operations-setup-overlay .ops-editor-chips {
  display: flex;
  gap: 6px;
}

/* Layout-Leiste der Area-Pflege (Bestand AreasDbOverlay.vue:19-21) und das
   Schliesskreuz der Statuszeile (:117). Beides fehlte im Port. */
.operations-setup-overlay .ops-actions-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--core-space-sm, 0.5rem);
  margin: 0 0 var(--core-space-sm, 0.5rem);
}
.operations-setup-overlay .status-close {
  margin-left: auto;
  padding: 0 0.35rem;
  font-size: 1.05rem;
  line-height: 1;
  color: inherit;
  background: none;
  border: 0;
  cursor: pointer;
  opacity: 0.7;
}
.operations-setup-overlay .status-close:hover { opacity: 1; }

/* „Detail maximieren" (Bestand AssetMaintenanceOverlay.vue:2): die Baumspalte
   verschwindet, das Detail nimmt die ganze Breite. */
.operations-setup-overlay .ops-layout--detail-expanded { grid-template-columns: 1fr; }

/* --- Berichte-Reiter der Asset-Wartung -------------------------------------
 * BEFUND 2026-08-07: der Reiter war vollstaendig UNFORMATIERT. Der Bestand
 * (AssetMaintenanceOverlay.vue:2383-2415, Block „Berichte-Tab") fuehrt neun
 * Regeln fuer .asset-reports-* und eine fuer .asset-tab-panel — im Port gab es
 * davon KEINE EINZIGE, obwohl das Markup alle Klassen traegt. Die Karten
 * standen also als nackte Textbloecke untereinander statt im Raster.
 *
 * Gefunden nicht durch Hinsehen, sondern durch Abgleich: welche Klasse steht
 * im Markup und hat nirgends eine Regel? Genau die Fehlerart wie `btn-tertiary`
 * im Berichte-Katalog. Die drei harten Farbwerte stehen so im Bestand und
 * tragen dort dieselbe Begruendung. */

.operations-setup-overlay .asset-tab-panel {
  flex: 1;
  min-height: 0;
  overflow: auto;
  display: grid;
  gap: 12px;
  align-content: start;
}

.operations-setup-overlay .asset-reports-toolbar {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 12px;
}

.operations-setup-overlay .asset-reports-error {
  color: #f87171; /* @allow-hardcoded-color: error feedback (Bestand Z. 2388) */
  font-size: 0.8rem;
}

.operations-setup-overlay .asset-reports-list {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}

.operations-setup-overlay .asset-reports-card {
  background: rgba(255, 255, 255, 0.04); /* @allow-hardcoded-color: card wash (Bestand Z. 2396) */
  border: 1px solid rgba(255, 255, 255, 0.1); /* @allow-hardcoded-color: card border (Bestand Z. 2397) */
  border-radius: 8px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.operations-setup-overlay .asset-reports-card header {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.operations-setup-overlay .asset-reports-uid {
  font-size: 0.7rem;
  opacity: 0.55;
}

.operations-setup-overlay .asset-reports-desc {
  font-size: 0.82rem;
  opacity: 0.78;
  margin: 0;
}

.operations-setup-overlay .asset-reports-actions {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
  margin-top: 6px;
}

.operations-setup-overlay .asset-reports-open {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 12px;
  font-size: 0.8rem;
  text-decoration: none;
}

.operations-setup-overlay .asset-reports-chip {
  display: inline-block;
  padding: 2px 8px;
  background: rgba(56, 189, 248, 0.12); /* @allow-hardcoded-color: chip background (Bestand Z. 2414) */
  border-radius: 10px;
  font-size: 0.72rem;
}

/* Werkzeugknoepfe ueber dem Assetbaum („alle aufklappen"/„alle zuklappen").
 * Bestand AssetMaintenanceOverlay.vue:2057-2077 — im Port trugen beide Knoepfe
 * die Klasse, es gab dafuer aber keine Regel: sie standen als System-Knoepfe
 * da statt als 34x34-Quadrate im Flaechenstil. Gleiche Fehlerart wie
 * .asset-reports-* darueber. */

.operations-setup-overlay .tree-toolbar-btn {
  width: 34px;
  height: 34px;
  border: 1px solid var(--border-strong);
  border-radius: 10px;
  background: var(--surface);
  color: var(--text);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

.operations-setup-overlay .tree-toolbar-btn:disabled {
  opacity: 0.45;
  cursor: default;
}

.operations-setup-overlay .tree-toolbar-btn .material-icons {
  font-size: 20px;
}

/* --- Asset-Konfig-Dialog und 3D-Waehler ------------------------------------
 * BEFUND 2026-08-07 (measure:class-coverage): zwoelf Klassen des Bestands
 * standen im Port-Markup ohne jede Regel. Der Asset-Konfig-Dialog und der
 * 3D-Waehler hatten damit KEIN Dialoggeruest: kein Hintergrund, kein Rahmen,
 * keine Zeilenaufteilung, kein Overlay-Hintergrund — beide fielen als
 * unformatierter Textfluss in die Seite.
 * Quelle: core-frontend/components/manage-area/manageAreaPanel.css
 * (Z. 188-198 block-title, sowie die Dialog-/Waehlerregeln). */

.operations-setup-overlay .block-title {
  font-weight: 700;
  margin-bottom: 10px;
  font-size: 0.98rem;
}

.operations-setup-overlay .block-title--sm {
  font-size: 0.9rem;
  margin-bottom: 8px;
}

.operations-setup-overlay .asset3d-select-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 38px;
  gap: 8px;
  align-items: center;
}

/* Das gewaehlte Baukasten-Objekt steht als ANZEIGE, nicht als Auswahlliste
   (Nutzerentscheid 2026-08-10): gewaehlt wird ueber den Knopf daneben. Die
   Flaeche traegt trotzdem die Feldoptik, damit die Zeile neben den echten
   Eingabefeldern nicht aus dem Raster faellt. Ein langer Name kuerzt statt
   die Spalte zu sprengen — der volle Text steht im title. */
.operations-setup-overlay .asset3d-selected {
  min-height: 34px;
  display: flex;
  align-items: center;
  padding: 4px 10px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--surface-sunken);
  color: var(--text);
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

/* Ohne Zuweisung ist der Text ein Hinweis, kein Wert. */
.operations-setup-overlay .asset3d-selected:not([data-model-id]),
.operations-setup-overlay .asset3d-selected[data-model-id=""] {
  color: var(--text-muted);
}

.operations-setup-overlay .asset3d-picker-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1100;
  background: var(--surface-overlay);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

.operations-setup-overlay .asset3d-picker {
  width: min(1040px, 96vw);
  max-height: min(760px, 92vh);
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-elevated);
  color: var(--text);
  box-shadow: var(--shadow-overlay);
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  overflow: hidden;
}

.operations-setup-overlay .asset3d-picker-header,
.operations-setup-overlay .asset3d-picker-tools {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
}

.operations-setup-overlay .asset3d-picker-header h2,
.operations-setup-overlay .asset3d-picker-header p {
  margin: 0;
}

.operations-setup-overlay .asset3d-picker-header p {
  margin-top: 4px;
  font-size: 12px;
  opacity: 0.78;
}

.operations-setup-overlay .asset3d-picker-tools {
  justify-content: flex-start;
}

.operations-setup-overlay .asset3d-picker-tools .field {
  flex: 1;
}

.operations-setup-overlay .asset-config-dialog {
  width: min(820px, 96vw);
  max-height: min(820px, 92vh);
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-elevated);
  color: var(--text);
  box-shadow: var(--shadow-overlay);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  overflow: hidden;
}

.operations-setup-overlay .asset-config-dialog-body {
  min-height: 0;
  overflow: auto;
  padding: 14px;
  display: grid;
  gap: 12px;
}

.operations-setup-overlay .asset-config-section {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  padding: 12px;
  display: grid;
  gap: 12px;
}

.operations-setup-overlay .asset-config-actions,
.operations-setup-overlay .asset-config-dialog-footer {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}

.operations-setup-overlay .asset-config-dialog-footer {
  padding: 14px 16px;
  border-top: 1px solid var(--border);
}

/* --- „Pflege Area" (SPEC-0142) -------------------------------------------
   Bestandsvorlage AreasDbOverlay.vue:36-51 / :74-103 / :114-123. Die
   Listenzeile ist dort DREIZEILIG (Titel + Kennzeichen, Id einzeilig
   mono, Beschreibung), das Detail traegt den Block „Layout-Parameter",
   eine Metazeile mit den Zeitstempeln und aufklappbare technische
   Angaben an der Statuszeile. */
.operations-setup-overlay .ops-line-row.area-row {
  flex-direction: column;
  align-items: stretch;
  gap: 2px;
}

.operations-setup-overlay .area-row-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.operations-setup-overlay .area-row-title {
  min-width: 0;
  flex: 1 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.operations-setup-overlay .area-row-sub {
  display: block;
  margin-top: 4px;
  font-size: 12px;
  opacity: 0.86;
}

.operations-setup-overlay .area-row-sub--mono {
  font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Bestand AreasDbOverlay.vue:1005 — die Beschreibung wird auf ZWEI Zeilen
   geklemmt, nicht einzeilig abgeschnitten. */
.operations-setup-overlay .area-row-sub--desc {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}

.operations-setup-overlay .ops-grid-full {
  grid-column: 1 / -1;
}

.operations-setup-overlay .ops-field-note {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-top: 4px;
}

.operations-setup-overlay .field-hint,
.operations-setup-overlay .field-path {
  color: var(--text-muted);
  font-size: 0.72rem;
}

.operations-setup-overlay .field-path {
  font-family: var(--font-mono, ui-monospace, monospace);
}

.operations-setup-overlay .ops-json-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.operations-setup-overlay .ops-json-field textarea {
  width: 100%;
  resize: vertical;
}

.operations-setup-overlay .meta-line {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  color: var(--text-muted);
  font-size: 0.74rem;
}

.operations-setup-overlay .detail-actions {
  justify-content: flex-start;
}

.operations-setup-overlay .status-line__top {
  display: flex;
  gap: 8px;
  align-items: baseline;
  justify-content: space-between;
  width: 100%;
}

.operations-setup-overlay .status-details {
  width: 100%;
  margin-top: 4px;
  font-size: 0.74rem;
}

.operations-setup-overlay .status-details summary {
  cursor: pointer;
}

.operations-setup-overlay .status-details pre {
  margin: 4px 0 0;
  max-height: 180px;
  overflow: auto;
  white-space: pre-wrap;
  word-break: break-word;
}

/* --- „3D-Baukasten-Objekt auswählen" (Bestand ManageAreaPanel.vue:1155-1197,
   manageAreaPanel.css:445-528) -------------------------------------------
   Zwei Spalten: links die Liste mit Kennzahlen je Zeile, rechts die
   Vorschau des Gewaehlten. Der Port hatte ein flaches Kachelraster, dessen
   Klassen (asset3d-picker-grid/-card) noch dazu ganz ohne Regel waren. */
.operations-setup-overlay .asset3d-picker-tools vc-field {
  flex: 1;
}

.operations-setup-overlay .asset3d-picker-body {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(340px, 1.05fr) minmax(280px, 0.95fr);
}

.operations-setup-overlay .asset3d-picker-list {
  min-height: 0;
  overflow: auto;
  padding: 12px;
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.operations-setup-overlay .asset3d-picker-row {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-elevated);
  color: inherit;
  display: grid;
  grid-template-columns: calc(var(--tree-level, 0) * 16px) 58px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  padding: 8px;
  text-align: left;
  font: inherit;
  cursor: pointer;
}

/* Ordner des 3D-Baukastens im Auswahldialog. Gliederung UND Klappknopf
   (SPEC-0468 §6) — auswaehlbar bleiben allein die Objekte darunter.
   Einrueckung ueber dieselbe `--tree-level`-Konvention wie im Area-Builder
   (area-builder.css:217). Spalten: Einrueckung, Klapppfeil, Ordnersymbol,
   Beschriftung. */
.operations-setup-overlay .asset3d-picker-folder {
  display: grid;
  grid-template-columns: calc(var(--tree-level, 0) * 16px) 20px 22px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  width: 100%;
  padding: 6px 8px 2px;
  border: 0;
  background: none;
  font: inherit;
  text-align: left;
  cursor: pointer;
  color: var(--text-muted);
}

.operations-setup-overlay .asset3d-picker-folder strong {
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.operations-setup-overlay .asset3d-picker-folder small,
.operations-setup-overlay .asset3d-picker-folder strong {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.operations-setup-overlay .asset3d-picker-folder small {
  font-size: 11px;
  opacity: 0.76;
}

.operations-setup-overlay .asset3d-picker-indent {
  display: block;
}

.operations-setup-overlay .asset3d-picker-row.is-selected {
  border-color: var(--accent, var(--border));
  background: var(--surface);
}

/* Nicht freigegebene oder noch nicht konvertierte Objekte bleiben SICHTBAR,
   damit der Baum vollstaendig ist (SPEC-0468 §1/§3) — waehlbar sind sie
   nicht, und das muss man ihnen ansehen. */
.operations-setup-overlay .asset3d-picker-row.is-disabled {
  cursor: not-allowed;
  opacity: 0.55;
}

.operations-setup-overlay .asset3d-picker-row.is-assigned {
  border-color: var(--accent, var(--border));
}

.operations-setup-overlay .asset3d-picker-row.is-assigned [data-testid='ops-picker-assigned'] {
  color: var(--accent, var(--text-muted));
  opacity: 1;
}

.operations-setup-overlay .asset3d-picker-row img,
.operations-setup-overlay .asset3d-picker-preview img {
  width: 100%;
  aspect-ratio: 1.2;
  object-fit: cover;
  border-radius: 6px;
  background: var(--surface-elevated);
}

/* Vorschaubild mit Platzhalter DAHINTER: faellt das Bild aus (der Seed-Katalog
   hat keine Thumbnails, die Route antwortet 404), traegt es `is-missing` und
   gibt den Blick auf das Sinnbild frei — statt das kaputte Bildsymbol des
   Browsers zu zeigen. Der Platzhalter kostet keinen zweiten Netzaufruf. */
.operations-setup-overlay .asset3d-thumb {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 1.2;
  border-radius: 6px;
  overflow: hidden;
  background: var(--surface-elevated);
}

.operations-setup-overlay .asset3d-thumb img {
  position: absolute;
  inset: 0;
  height: 100%;
}

.operations-setup-overlay .asset3d-thumb img.is-missing {
  display: none;
}

.operations-setup-overlay .asset3d-thumb__fallback {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
  /* Das Sinnbild skaliert mit der Kachel: in der Liste klein, in der
     Vorschauspalte gross. */
  font-size: clamp(18px, 42%, 64px);
}

.operations-setup-overlay .asset3d-picker-row strong,
.operations-setup-overlay .asset3d-picker-row small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.operations-setup-overlay .asset3d-picker-row small {
  margin-top: 4px;
  font-size: 11px;
  opacity: 0.76;
}

.operations-setup-overlay .asset3d-picker-preview {
  min-height: 0;
  overflow: auto;
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.operations-setup-overlay .asset3d-picker-preview h3 {
  margin: 0;
}

.operations-setup-overlay .asset3d-picker-preview dl {
  margin: 0;
  display: grid;
  gap: 8px;
}

.operations-setup-overlay .asset3d-picker-preview dl div {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 6px;
}

.operations-setup-overlay .asset3d-picker-preview dt {
  opacity: 0.72;
}

.operations-setup-overlay .asset3d-picker-preview dd {
  margin: 0;
  font-weight: 700;
}

.operations-setup-overlay .asset3d-picker-actions {
  display: flex;
  gap: 10px;
  margin-top: auto;
}

/* Sektions-Untertitel (Bestand de.ts manageAreaPanel.<sektion>.subtitle) —
   sitzt zwischen Ueberschrift und Bereichsangabe. */
.operations-setup-overlay .ops-section-subtitle {
  margin: 0 0 4px;
  color: var(--text-muted);
  font-size: 0.78rem;
}

/* ===========================================================================
 * „Pflege Assets" — PORT der Stilregeln aus
 * core-frontend/components/AssetMaintenanceOverlay.vue:1836-2300.
 *
 * BEFUND 2026-08-08: der Port trug hier eine SELBST ERFUNDENE Baumdarstellung
 * mit eigenen Klassennamen (`asset-tree-row`, `asset-tree-label`, …). Sie war
 * weder der Bestandsbaum noch trug sie dessen Regeln — Zeilen von ~47 px,
 * Code gross und fett, Name klein darunter, Typ-Badge und Zahl am rechten
 * Rand. Fuer eine Anlage mit hunderten Assets unbrauchbar.
 *
 * Diese Fassung uebernimmt die Klassen UND ihre Regeln aus dem Bestand.
 * Traegerin der Dichte ist `--asset-maintenance-dialog-font-size` (12 px,
 * Bestand :1837) — sie war im Port nie angekommen, deshalb lief der ganze
 * Dialog auf Standardgroesse.
 *
 * Die Regeln haengen am Elementnamen: die drei Geschwisterblaetter dieser
 * Datei bleiben unberuehrt.
 * ======================================================================== */

cw-asset-maintenance-overlay.operations-setup-overlay {
  --asset-maintenance-dialog-font-size: var(--app-masterdata-dialog-font-size, 12px);
  /* Bestand :1838-1851 — die Maske fuellt ihren Host und scrollt NICHT
     selbst; gescrollt wird in den beiden Spalten. */
  width: 100%;
  height: 100%;
  min-height: 0;
  margin: 0;
  padding: 14px 16px 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  overflow: hidden;
  box-sizing: border-box;
}

/* Bestand :1853-1871 — die Dialogschrift. OHNE diese Regel bleibt jede
   Baumzeile auf Standardgroesse und es passen nur eine Handvoll Knoten ins
   Bild. */
cw-asset-maintenance-overlay.operations-setup-overlay button,
cw-asset-maintenance-overlay.operations-setup-overlay input,
cw-asset-maintenance-overlay.operations-setup-overlay select,
cw-asset-maintenance-overlay.operations-setup-overlay textarea,
cw-asset-maintenance-overlay.operations-setup-overlay label,
cw-asset-maintenance-overlay.operations-setup-overlay small,
cw-asset-maintenance-overlay.operations-setup-overlay td,
cw-asset-maintenance-overlay.operations-setup-overlay th,
cw-asset-maintenance-overlay.operations-setup-overlay .ops-header small,
cw-asset-maintenance-overlay.operations-setup-overlay .ops-context,
cw-asset-maintenance-overlay.operations-setup-overlay .ops-muted,
cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-meta,
cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-empty {
  font-size: var(--asset-maintenance-dialog-font-size);
}

cw-asset-maintenance-overlay.operations-setup-overlay .ops-header {
  margin-bottom: 0;
}

/* Bestand :1895-1901 (`asset-maintenance-context`). */
cw-asset-maintenance-overlay.operations-setup-overlay .ops-context {
  display: flex;
  gap: 16px;
  align-items: center;
  flex-wrap: wrap;
  color: var(--text-muted);
}

cw-asset-maintenance-overlay.operations-setup-overlay .ops-context strong {
  color: var(--text);
}

/* Bestand :1928-1943 (`area-selector`). */
cw-asset-maintenance-overlay.operations-setup-overlay .ops-context-field {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

cw-asset-maintenance-overlay.operations-setup-overlay .ops-context-field select {
  min-width: 160px;
}

/* Bestand :1950-1956 (`asset-maintenance-body`) — die Arbeitsflaeche nimmt
   den Rest der Hoehe, die Baumspalte einen ANTEIL statt einer festen Breite. */
cw-asset-maintenance-overlay.operations-setup-overlay .asset-maintenance-body {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(280px, 32%) 1fr;
  gap: 12px;
  align-items: stretch;
}

/* Bestand :1977-1979. */
cw-asset-maintenance-overlay.operations-setup-overlay .ops-layout--detail-expanded {
  grid-template-columns: minmax(0, 1fr);
}

/* Bestand :1985-1995 — beide Spalten sind Karten, beide schrumpfbar. */
cw-asset-maintenance-overlay.operations-setup-overlay .asset-tree-pane,
cw-asset-maintenance-overlay.operations-setup-overlay .asset-detail-pane {
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface-elevated);
  min-height: 0;
  display: flex;
  flex-direction: column;
  padding: 10px;
  gap: 10px;
  overflow: hidden;
}

/* Bestand :2039-2048 — die Liste nimmt den Rest der Spalte und scrollt selbst. */
cw-asset-maintenance-overlay.operations-setup-overlay .asset-tree-list {
  flex: 1;
  min-height: 0;
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 10px;
  display: grid;
  gap: 10px;
  align-content: start;
}

/* Bestand :2272-2276 (`asset-tree-actions`/`detail-actions`). */
cw-asset-maintenance-overlay.operations-setup-overlay .asset-tree-actions,
cw-asset-maintenance-overlay.operations-setup-overlay .ops-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

/* Bestand :2300 (`asset-tab-panel`) — der Reiterinhalt scrollt in der Spalte. */
cw-asset-maintenance-overlay.operations-setup-overlay .asset-tab-body {
  flex: 1;
  min-height: 0;
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* Bestand :2050-2055. */
cw-asset-maintenance-overlay.operations-setup-overlay .tree-bulk-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
}

cw-asset-maintenance-overlay.operations-setup-overlay .tree-bulk-actions .count-pill {
  margin-left: auto;
}

/* Bestand :2057-2077. */
cw-asset-maintenance-overlay.operations-setup-overlay .tree-toolbar-btn {
  width: 34px;
  height: 34px;
  border: 1px solid var(--border-strong, var(--border));
  border-radius: 10px;
  background: var(--surface);
  color: var(--text);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

cw-asset-maintenance-overlay.operations-setup-overlay .tree-toolbar-btn:disabled {
  opacity: 0.45;
  cursor: default;
}

/* Eingeschalteter Umschalter „Inaktive einblenden" — dieselbe Zustandsklasse
   und dieselben Tokens wie `.ops-structure-tab.is-active` (:242), damit der
   Zustand in allen vier Themes gleich gelesen wird. */
cw-asset-maintenance-overlay.operations-setup-overlay .tree-toolbar-btn.is-active {
  border-color: var(--accent, var(--border-strong, var(--border)));
  color: var(--accent, var(--text));
}

cw-asset-maintenance-overlay.operations-setup-overlay .tree-toolbar-btn .material-icons {
  font-size: 20px;
}

/* Bestand :2079-2106 — die Wurzelzeile. */
cw-asset-maintenance-overlay.operations-setup-overlay .asset-tree-root {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-radius: 8px;
  background: var(--surface-elevated);
  border: 1px solid var(--border);
  padding: 10px 12px;
  gap: 10px;
}

cw-asset-maintenance-overlay.operations-setup-overlay .asset-tree-root-main,
cw-asset-maintenance-overlay.operations-setup-overlay .asset-tree-root-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

cw-asset-maintenance-overlay.operations-setup-overlay .asset-tree-root-icon {
  font-size: 20px;
  color: var(--text);
}

cw-asset-maintenance-overlay.operations-setup-overlay .asset-tree-root-label {
  color: var(--text);
  font-weight: 600;
  font-size: 0.96rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Bestand :2108-2123 — Schacht und Leitlinie je Ebene. */
cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-shell {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-height: 0;
  padding: 2px 4px 10px;
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-children {
  margin-left: 12px;
  padding-left: 12px;
  border-left: 2px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 4px;
}

/* Bestand :2125-2148 — `<details>` ohne eigenes Dreieck. */
cw-asset-maintenance-overlay.operations-setup-overlay .structure-details {
  margin: 0;
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-details--branch {
  border: 0;
  border-radius: 0;
  background: transparent;
  overflow: visible;
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-details--unassigned {
  margin-top: 4px;
  padding-top: 6px;
  border-top: 1px dashed var(--border-strong, var(--border));
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-details--branch > summary {
  list-style: none;
}

cw-asset-maintenance-overlay.operations-setup-overlay
  .structure-details--branch > summary::-webkit-details-marker {
  display: none;
}

/* Bestand :2150-2182 — Zweigzeile. */
cw-asset-maintenance-overlay.operations-setup-overlay .structure-summary {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--surface);
  padding: 8px 10px;
  user-select: none;
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-summary--area {
  border-color: var(--info, var(--border));
  background: var(--surface-elevated);
  cursor: pointer;
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-summary--branch {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 7px 8px;
  background: var(--surface);
  cursor: pointer;
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-summary:hover {
  background: var(--primary-soft, var(--surface-elevated));
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-summary.is-selected {
  border-color: var(--info, var(--accent, var(--border)));
  box-shadow: 0 0 0 3px var(--info-soft, transparent);
}

/* Bestand :2184-2214 — Blattliste und Blatt. */
cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-leaf-list {
  margin: 2px 2px 6px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-left: 12px;
  border-left: 1px solid var(--border);
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-leaf-btn {
  border: 1px solid var(--border);
  background: var(--surface);
  border-radius: 8px;
  color: inherit;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  cursor: pointer;
  text-align: left;
  min-width: 0;
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-leaf-btn:hover {
  background: var(--primary-soft, var(--surface-elevated));
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-leaf-btn.is-selected {
  border-color: var(--info, var(--accent, var(--border)));
  box-shadow: 0 0 0 3px var(--info-soft, transparent);
  background: var(--info-soft, var(--surface-elevated));
}

/* Bestand :2216-2229 — Symbole und der Pfeil, der sich beim Aufklappen dreht. */
cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-icon {
  font-size: 18px;
  color: var(--text-muted);
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-chevron {
  font-size: 18px;
  color: var(--text-muted);
  transition: transform 0.15s ease;
}

cw-asset-maintenance-overlay.operations-setup-overlay
  .structure-details[open] > .structure-summary .structure-tree-chevron {
  transform: rotate(90deg);
}

/* Bestand :2231-2270. */
cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-name {
  min-width: 0;
  flex: 1;
  font-weight: 700;
  line-height: 1.25;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-meta {
  color: var(--text-muted);
  flex: 0 0 auto;
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-leaf-icon {
  font-size: 17px;
  color: var(--info, var(--text-muted));
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-leaf-label {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-leaf-label strong,
cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-leaf-label span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--asset-maintenance-dialog-font-size);
}

cw-asset-maintenance-overlay.operations-setup-overlay .structure-tree-empty {
  margin: 0 8px 8px;
  color: var(--text-muted);
}

/* Auf schmalen Schirmen faellt die Spaltung zurueck. */
@media (max-width: 900px) {
  cw-asset-maintenance-overlay.operations-setup-overlay {
    height: auto;
    overflow: auto;
  }

  cw-asset-maintenance-overlay.operations-setup-overlay .asset-maintenance-body {
    grid-template-columns: minmax(0, 1fr);
  }

  cw-asset-maintenance-overlay.operations-setup-overlay .asset-tree-list {
    max-height: 60vh;
  }
}
