/* ============================================================================
   STYLE: Terminal — Finanz-Terminal/Bloomberg-Anmutung, neu aufgelegt auf die
   WEB-DOM (Portal index.html + nve/hub styles.css). Signatur: Monospace überall,
   scharfe Kanten (border-radius:0), winzige Paddings, sichtbare 1px-Gitterlinien,
   maximale Datendichte, Labels klein + UPPERCASE, Akzent als harter Block.
   Farben kommen ausschliesslich aus den Theme-Variablen (11 Themes) — KEINE
   feste Palette. Aktiv bei <html data-style="terminal">.
   JEDE Regel ist auf html[data-style="terminal"] gescoped.
   ============================================================================ */

/* ---- Monospace + scharfe Kanten auf ALLEM ---- */
html[data-style="terminal"],
html[data-style="terminal"] body {
  font-family: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;
  font-size: 14px;
  line-height: 1.35;
}
html[data-style="terminal"] * {
  border-radius: 0 !important;
}

/* ---- Lesbarer Text auf Akzent-Bloecken (KONTRAST-FIX) ----
   Akzent-Bloecke (.btn, .map-metric.active, .dp-seg button.active, menu primary)
   nutzen --accent-fg als Textfarbe. Das Portal setzt --accent-fg fest auf #fff.
   In den dunklen Themes ist die Akzentfarbe (--nve/--hub) aber oft SEHR HELL
   (matrix-grün, tron-cyan, azeroth-gold, dracula-lila, synthwave-pink) -> weisser
   Text darauf ist unlesbar (Kontrast < 1,9). Loesung ohne feste Palette: die
   theme-eigene HINTERGRUNDfarbe (--bg, in dunklen Themes dunkel) als Akzent-Text.
   Das ergibt durchgehend hohen Kontrast (5–15:1) auf statischem UND Hover-Akzent.
   Helle Themes (hell/beige) + horde (dunkelroter Akzent) behalten weiss -> dort
   ist die Akzentfarbe dunkel genug bzw. der Hintergrund hell, weiss bleibt lesbar. */
html[data-style="terminal"] {
  --accent-fg: var(--bg);
  --border: color-mix(in srgb, var(--fg) 22%, var(--bg));
}
html[data-style="terminal"][data-theme="hell"],
html[data-style="terminal"][data-theme="beige"],
html[data-style="terminal"][data-theme="horde"] {
  --accent-fg: #fff;
}
html[data-style="terminal"] h1,
html[data-style="terminal"] h2,
html[data-style="terminal"] h3,
html[data-style="terminal"] button,
html[data-style="terminal"] input,
html[data-style="terminal"] select,
html[data-style="terminal"] textarea,
html[data-style="terminal"] .btn,
html[data-style="terminal"] .brand,
html[data-style="terminal"] .menu-title,
html[data-style="terminal"] .ct,
html[data-style="terminal"] .value,
html[data-style="terminal"] th {
  font-family: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;
}

/* Dezente Scanline-Anmutung (sehr leicht, theme-unabhaengig) */
html[data-style="terminal"] body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 9998;
  pointer-events: none;
  background: repeating-linear-gradient(
    to bottom,
    rgba(127, 127, 127, 0.035) 0,
    rgba(127, 127, 127, 0.035) 1px,
    transparent 1px,
    transparent 3px
  );
}

/* Headlines kompakt + UPPERCASE */
html[data-style="terminal"] h1 {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  margin: 0 0 12px;
}
html[data-style="terminal"] h2 {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  margin: 16px 0 8px;
}

/* ===========================================================================
   PORTAL (index.html) — Variablen: --card --card-h --text --muted --border
                                    --nve --hub --page-bg
   =========================================================================== */

/* Topbar als Terminal-Statusleiste */
html[data-style="terminal"] .topbar {
  padding: 6px 12px;
  border-bottom: 1px solid var(--nve, var(--accent));
}
html[data-style="terminal"] .topbar .brand,
html[data-style="terminal"] .brand {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.8px;
  text-transform: uppercase;
}
html[data-style="terminal"] .brand .dot {
  color: var(--nve);
}
html[data-style="terminal"] .badge {
  font-size: 11px;
  letter-spacing: 0.4px;
  text-transform: uppercase;
}
html[data-style="terminal"] .theme-sel,
html[data-style="terminal"] .fb-btn {
  font-size: 12px;
  padding: 5px 8px;
  border: 1px solid var(--border);
  background: var(--card);
  color: var(--text);
}
html[data-style="terminal"] #adminFlag {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.4px;
}

html[data-style="terminal"] main {
  padding: 18px 12px;
}
html[data-style="terminal"] .sub {
  font-size: 12px;
  letter-spacing: 0.3px;
  margin-bottom: 16px;
}

/* Portal-Auswahlkarten: harte Bloecke statt verschoben/Schatten */
html[data-style="terminal"] .grid {
  gap: 8px;
}
html[data-style="terminal"] .card {
  border: 1px solid var(--border);
  background: var(--card);
  padding: 14px 14px 12px;
  transition: background 0.1s ease, border-color 0.1s ease;
}
html[data-style="terminal"] .card:hover {
  transform: none;
  background: var(--card-h);
}
html[data-style="terminal"] .card.nve:hover { border-color: var(--nve); }
html[data-style="terminal"] .card.hub:hover { border-color: var(--hub); }
html[data-style="terminal"] .card::before { height: 2px; }
html[data-style="terminal"] .card.nve::before { background: var(--nve); }
html[data-style="terminal"] .card.hub::before { background: var(--hub); }
html[data-style="terminal"] .ic {
  width: 38px;
  height: 38px;
  font-size: 20px;
  margin-bottom: 10px;
  border: 1px solid var(--border);
}
html[data-style="terminal"] .ct {
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  margin-bottom: 4px;
}
html[data-style="terminal"] .cs {
  font-size: 12px;
  line-height: 1.4;
}
html[data-style="terminal"] .go {
  margin-top: 12px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
}
html[data-style="terminal"] .foot {
  font-size: 11px;
  margin-top: 18px;
  letter-spacing: 0.3px;
}

/* Feedback-Modal */
html[data-style="terminal"] .fb-modal {
  border: 1px solid var(--border);
  box-shadow: none;
  padding: 16px;
}
html[data-style="terminal"] .fb-modal h2 { font-size: 14px; text-transform: uppercase; letter-spacing: 0.4px; }
html[data-style="terminal"] .fb-modal .fb-sub { font-size: 12px; }
html[data-style="terminal"] .fb-modal label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.6px;
}
html[data-style="terminal"] .fb-modal input,
html[data-style="terminal"] .fb-modal textarea {
  padding: 8px 10px;
  font-size: 13px;
  border: 1px solid var(--border);
}
html[data-style="terminal"] .fb-row button { padding: 9px; font-size: 12px; text-transform: uppercase; letter-spacing: 0.4px; }

/* Login-Gate */
html[data-style="terminal"] .gate-box {
  border: 1px solid var(--border);
  box-shadow: none;
  padding: 20px 18px;
}
html[data-style="terminal"] .gate-logo { font-size: 24px; }
html[data-style="terminal"] .gate-box h2 { font-size: 14px; text-transform: uppercase; letter-spacing: 0.5px; }
html[data-style="terminal"] .gate-sub { font-size: 12px; }
html[data-style="terminal"] .gate-box input {
  padding: 9px 11px;
  font-size: 14px;
  border: 1px solid var(--border);
}
html[data-style="terminal"] .gate-box button {
  padding: 9px;
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
html[data-style="terminal"] .gate-msg { font-size: 11px; }

/* ===========================================================================
   NVE / HUB (nve/styles.css) — Variablen: --bg --bg-card --bg-card-hover --fg
     --fg-muted --accent --accent-hover --accent-fg --success --warning --error
     --border --radius --shadow
   =========================================================================== */

/* Topbar (nve/hub) */
html[data-style="terminal"] .topbar .back {
  font-size: 18px;
  padding: 2px 6px;
}
html[data-style="terminal"] .topbar .home {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  padding: 4px 8px;
  border: 1px solid var(--border);
}
html[data-style="terminal"] .topbar .home:hover { border-color: var(--accent); }
html[data-style="terminal"] .status {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.4px;
}

/* Container: dichter, breiter nutzbar. HUB setzt .container{max-width:1200px}
   in einem spaeteren inline <style> -> mit !important auf Terminal-Breite zwingen. */
html[data-style="terminal"] .container {
  max-width: 1100px !important;
  padding: 12px 12px 60px;
}

/* Karten als harte Panels mit Kopf-Gitterlinie */
html[data-style="terminal"] .card {
  border: 1px solid var(--border);
  background: var(--bg-card);
  box-shadow: none;
  padding: 10px 12px;
  margin-bottom: 8px;
}

/* Stat-Grid: dichte KPI-Kacheln */
html[data-style="terminal"] .stat-grid {
  gap: 6px;
  margin-bottom: 10px;
}
html[data-style="terminal"] .stat-card {
  border: 1px solid var(--border);
  background: var(--bg-card);
  padding: 7px 9px;
}
html[data-style="terminal"] .stat-card {
  min-width: 0;
}
html[data-style="terminal"] .stat-card .label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.6px;
  color: var(--fg-muted);
  overflow-wrap: anywhere;
}
html[data-style="terminal"] .stat-card .value {
  font-size: 22px;
  font-weight: 700;
  margin-top: 2px;
  font-variant-numeric: tabular-nums;
  min-width: 0;
  overflow-wrap: anywhere;
}
html[data-style="terminal"] .stat-card .sub {
  font-size: 11px;
  margin-top: 1px;
}

/* Menue-Grid: harte Bloecke, kompakt */
html[data-style="terminal"] .menu-grid {
  gap: 8px;
}
html[data-style="terminal"] .menu-card {
  border: 1px solid var(--border);
  background: var(--bg-card);
  padding: 14px 12px;
  min-height: 96px;
  gap: 6px;
  transition: background 0.1s ease;
}
html[data-style="terminal"] .menu-card:hover { background: var(--bg-card-hover); }
html[data-style="terminal"] .menu-card.primary {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--accent-fg);
}
html[data-style="terminal"] .menu-card.primary:hover { background: var(--accent-hover); }
html[data-style="terminal"] .menu-card.primary .menu-title,
html[data-style="terminal"] .menu-card.primary .menu-icon { color: var(--accent-fg); }
html[data-style="terminal"] .menu-icon { font-size: 26px; }
html[data-style="terminal"] .menu-title {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
}
html[data-style="terminal"] .menu-sub { font-size: 11px; }

/* Formulare: scharfe, dichte Felder */
html[data-style="terminal"] .field { margin-bottom: 9px; }
html[data-style="terminal"] label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.7px;
  margin-bottom: 3px;
  color: var(--fg-muted);
}
html[data-style="terminal"] input,
html[data-style="terminal"] select,
html[data-style="terminal"] textarea {
  background: var(--bg-card);
  color: var(--fg);
  border: 1px solid var(--border);
  padding: 7px 9px;
  font-size: 14px;
}
html[data-style="terminal"] input:focus,
html[data-style="terminal"] select:focus,
html[data-style="terminal"] textarea:focus {
  border-color: var(--accent);
  outline: 1px solid var(--accent);
  outline-offset: -2px;
}

/* Buttons: harter Akzent-Block, UPPERCASE */
html[data-style="terminal"] .btn {
  background: var(--accent);
  color: var(--accent-fg, #fff);
  border: 1px solid var(--accent);
  padding: 8px 14px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.5px;
  text-transform: uppercase;
}
html[data-style="terminal"] .btn:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
html[data-style="terminal"] .btn-secondary {
  background: var(--bg-card);
  color: var(--fg);
  border: 1px solid var(--border);
}
html[data-style="terminal"] .btn-secondary:hover { background: var(--bg-card-hover); }
html[data-style="terminal"] .btn-danger {
  background: var(--error);
  border-color: var(--error);
  color: #fff;
}
html[data-style="terminal"] .btn-group { gap: 5px; }

/* Tabellen: volle Zell-Borders, dichte Zeilen, tabular nums */
html[data-style="terminal"] .table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--border);
}
html[data-style="terminal"] table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
html[data-style="terminal"] th,
html[data-style="terminal"] td {
  padding: 3px 8px;
  border: 1px solid var(--border);
  text-align: left;
}
html[data-style="terminal"] th {
  background: var(--bg-card);
  color: var(--fg-muted);
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
html[data-style="terminal"] tr:hover td { background: var(--bg-card-hover); }
html[data-style="terminal"] td.mono { font-family: inherit; }
html[data-style="terminal"] td .row-actions { gap: 4px; }
html[data-style="terminal"] td .row-actions button {
  background: var(--bg-card-hover);
  color: var(--fg);
  border: 1px solid var(--border);
  padding: 4px 8px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
html[data-style="terminal"] td .row-actions button.danger {
  background: var(--error);
  color: #fff;
  border-color: var(--error);
}

/* Toolbar / Zeilen */
html[data-style="terminal"] .toolbar {
  gap: 6px;
  margin-bottom: 10px;
}
html[data-style="terminal"] .toolbar > * { min-width: 120px; }
html[data-style="terminal"] .row { gap: 6px; }

/* tb-filters / tb-actions (HUB-Toolbar-Substruktur): scharfe, dichte Zellen */
html[data-style="terminal"] .tb-filters { gap: 0 !important; }
html[data-style="terminal"] .tb-filters > div { padding: 5px 9px; border-left: 1px solid var(--border); }
html[data-style="terminal"] .tb-filters > div:first-child { border-left: 0; }
html[data-style="terminal"] .tb-actions { gap: 5px !important; flex-wrap: wrap; }
html[data-style="terminal"] .tb-actions .btn {
  flex: 1 1 130px !important;
  padding: 6px 10px !important;
  font-size: 11px !important;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  white-space: nowrap;
}

/* Chips: scharfe Tags */
html[data-style="terminal"] .chip {
  background: var(--bg-card-hover);
  color: var(--fg);
  border: 1px solid var(--border);
  padding: 2px 8px;
  font-size: 11px;
  letter-spacing: 0.4px;
  margin-right: 4px;
  /* KEIN text-transform: Chips tragen Datenwerte (Standort-/Tour-Namen) ->
     Original-Case bewahren (Tour-Codes sind ohnehin schon GROSS). */
}
html[data-style="terminal"] .chip.standort {
  background: transparent;
  border-color: var(--accent);
  color: var(--accent);
}
/* Inline-gefaerbte Chips (nve/tracking, map-rank) auf scharfe Mono-Tags zwingen;
   Eigenfarbe bleibt lesbar, nur Form/Schrift terminalisiert */
html[data-style="terminal"] .chip {
  border-radius: 0 !important;
  font-family: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace !important;
  font-weight: 600;
}

/* Alerts: harte Rahmen, kein Verlauf */
html[data-style="terminal"] .alert {
  border: 1px solid var(--error);
  background: var(--bg-card);
  color: var(--error);
  padding: 8px 10px;
  margin-bottom: 8px;
  font-size: 12px;
}
html[data-style="terminal"] .alert.success { border-color: var(--success); color: var(--success); }
html[data-style="terminal"] .alert.info { border-color: var(--accent); color: var(--accent); }

/* table.tight (HUB): inline padding 8px 10px ueberschreiben -> dicht */
html[data-style="terminal"] table.tight th,
html[data-style="terminal"] table.tight td { padding: 3px 8px !important; }
/* sticky thead (HUB scroll-360): Kopf bleibt, aber als Mono-Gridline-Block */
html[data-style="terminal"] thead th {
  background: var(--bg-card) !important;
  font-family: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace !important;
}
/* rechtsbuendige Zahlen-Spalten (HUB th.r/td.r) tabellarisch */
html[data-style="terminal"] th.r,
html[data-style="terminal"] td.r { text-align: right !important; font-variant-numeric: tabular-nums; }
/* pos/neg-Werte: harte Akzent-Farben statt fett-grau */
html[data-style="terminal"] .pos { color: var(--success) !important; font-weight: 700; }
html[data-style="terminal"] .neg { color: var(--error) !important; font-weight: 700; }
/* leere Tabellen-Zelle (colspan) als gedaempfter Mono-Block */
html[data-style="terminal"] td.empty-state {
  padding: 14px 10px !important;
  color: var(--fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  font-size: 11px;
}

/* ===========================================================================
   HUB-SPEZIALKOMPONENTEN — alle inline im <style> von hub/dashboard.html
   gesetzt (border-radius via var(--radius)/feste px, font-family:inherit,
   grosse Paddings). Hier mit `!important` auf scharfe Kanten, Monospace,
   1px-Gridlines, winzige Paddings zwingen. Farben nur ueber Theme-Variablen.
   =========================================================================== */

/* --- generischer Mono-Zwang fuer HUB-Spezialfelder (inline font-family:inherit) --- */
html[data-style="terminal"] .num-input,
html[data-style="terminal"] .oel-input,
html[data-style="terminal"] .colli-input,
html[data-style="terminal"] .date-input,
html[data-style="terminal"] .map-metric,
html[data-style="terminal"] .dp-seg button,
html[data-style="terminal"] .dp-title,
html[data-style="terminal"] .dp-close,
html[data-style="terminal"] .fin-banner,
html[data-style="terminal"] .mini,
html[data-style="terminal"] .ins-hl,
html[data-style="terminal"] .dp-kpis,
html[data-style="terminal"] .depot-panel {
  font-family: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace !important;
  border-radius: 0 !important;
}

/* --- Zahlen-/Datums-Inputs in der Ladelisten-Tabelle --- */
html[data-style="terminal"] .num-input,
html[data-style="terminal"] .oel-input,
html[data-style="terminal"] .colli-input {
  width: 64px !important;
  padding: 3px 5px !important;
  font-size: 12px !important;
  text-align: right;
  background: var(--bg) !important;
  color: var(--fg) !important;
  border: 1px solid var(--border) !important;
}
html[data-style="terminal"] .date-input {
  padding: 3px 5px !important;
  font-size: 12px !important;
  background: var(--bg) !important;
  color: var(--fg) !important;
  border: 1px solid var(--border) !important;
}
html[data-style="terminal"] .date-input:hover { border-color: var(--accent) !important; }
html[data-style="terminal"] .num-input:focus,
html[data-style="terminal"] .oel-input:focus,
html[data-style="terminal"] .colli-input:focus,
html[data-style="terminal"] .date-input:focus {
  border-color: var(--accent) !important;
  outline: 1px solid var(--accent); outline-offset: -2px;
}

/* --- .mini: gedaempfte Mono-Mikrozeile --- */
html[data-style="terminal"] .mini {
  font-size: 11px !important;
  color: var(--fg-muted) !important;
  letter-spacing: 0.2px;
}

/* --- Map-Toggle: harte Segment-Buttons, Akzent-Block bei .active --- */
html[data-style="terminal"] .map-toggle { gap: 0 !important; border: 1px solid var(--border); }
html[data-style="terminal"] .map-metric {
  background: var(--bg) !important;
  color: var(--fg-muted) !important;
  border: 0 !important;
  border-left: 1px solid var(--border) !important;
  padding: 4px 10px !important;
  font-size: 10px !important;
  text-transform: uppercase;
  letter-spacing: 0.6px;
}
html[data-style="terminal"] .map-toggle .map-metric:first-child { border-left: 0 !important; }
html[data-style="terminal"] .map-metric.active {
  background: var(--accent) !important;
  color: var(--accent-fg) !important;
  border-color: var(--accent) !important;
}
html[data-style="terminal"] #map { border-radius: 0 !important; border: 1px solid var(--border); }
html[data-style="terminal"] .legend-dot {
  border-radius: 0 !important;
  width: 8px !important; height: 8px !important;
}

/* --- Finanz-Banner: harter Rahmen-Block, kein Verlauf --- */
html[data-style="terminal"] .fin-banner {
  font-size: 13px !important;
  font-weight: 700;
  padding: 9px 11px !important;
  margin-bottom: 10px !important;
  border-radius: 0 !important;
  letter-spacing: 0.3px;
}
html[data-style="terminal"] .fin-banner.good {
  background: color-mix(in srgb, var(--success) 12%, var(--bg-card)) !important;
  border: 1px solid var(--success) !important;
  color: var(--success) !important;
}
html[data-style="terminal"] .fin-banner.bad {
  background: color-mix(in srgb, var(--error) 12%, var(--bg-card)) !important;
  border: 1px solid var(--error) !important;
  color: var(--error) !important;
}

/* --- Insights: harte Hervorhebungs-Bloecke, scharfe Spalten --- */
html[data-style="terminal"] .ins-grid { gap: 6px !important; margin-bottom: 10px !important; }
html[data-style="terminal"] .ins-cols { gap: 10px !important; }
html[data-style="terminal"] .ins-hl {
  gap: 9px !important;
  background: var(--bg) !important;
  border: 1px solid var(--border) !important;
  border-radius: 0 !important;
  border-left: 2px solid var(--accent) !important;
  padding: 8px 10px !important;
}
html[data-style="terminal"] .ins-hl .ico { font-size: 16px !important; opacity: 0.85; }
html[data-style="terminal"] .ins-hl .lbl {
  font-size: 9px !important;
  color: var(--fg-muted) !important;
  text-transform: uppercase;
  letter-spacing: 0.7px;
}
html[data-style="terminal"] .ins-hl .val { font-size: 12px !important; font-weight: 700; margin-top: 1px !important; overflow-wrap: anywhere; min-width: 0; }
html[data-style="terminal"] .ins-cols h3 {
  font-size: 10px !important;
  color: var(--fg-muted) !important;
  text-transform: uppercase;
  letter-spacing: 0.7px;
  margin: 0 0 3px !important;
}
html[data-style="terminal"] .ins-comment { margin: 0 0 10px !important; }

/* --- Depot-Drilldown-Panel (rechts einfahrendes Overlay) --- */
html[data-style="terminal"] .depot-ov { background: rgba(0, 0, 0, 0.62) !important; }
html[data-style="terminal"] .depot-link { cursor: pointer; }
html[data-style="terminal"] .depot-link:hover td { color: var(--accent) !important; }
html[data-style="terminal"] .dp-go { opacity: 0.5; font-size: 10px !important; }
html[data-style="terminal"] .depot-panel {
  border-left: 2px solid var(--accent) !important;
  background: var(--bg-card) !important;
  padding: 16px !important;
  box-shadow: -2px 0 0 0 var(--border) !important;
}
html[data-style="terminal"] .dp-head { margin-bottom: 12px !important; }
html[data-style="terminal"] .dp-title {
  font-size: 16px !important;
  font-weight: 700;
  letter-spacing: 0.5px;
  color: var(--fg) !important;
  /* KEIN text-transform: Titel = Depot-/Ortsname (Datenwert) -> Original-Case.
     Terminal-Identitaet bleibt ueber Mono, Bold + "> "-Prompt-Marker. */
}
html[data-style="terminal"] .dp-title::before { content: "> "; color: var(--accent); }
html[data-style="terminal"] .dp-share {
  font-size: 10px !important;
  color: var(--fg-muted) !important;
  text-transform: uppercase;
  letter-spacing: 0.4px;
}
html[data-style="terminal"] .dp-close {
  background: var(--bg) !important;
  border: 1px solid var(--border) !important;
  color: var(--fg-muted) !important;
  font-size: 14px !important;
  padding: 2px 8px !important;
  border-radius: 0 !important;
}
html[data-style="terminal"] .dp-close:hover { border-color: var(--error) !important; color: var(--error) !important; }
html[data-style="terminal"] .dp-kpis { gap: 0 !important; margin-bottom: 12px !important; border: 1px solid var(--border); }
html[data-style="terminal"] .dp-kpis > div {
  background: var(--bg) !important;
  border: 0 !important;
  border-top: 1px solid var(--border) !important;
  border-left: 1px solid var(--border) !important;
  border-radius: 0 !important;
  padding: 6px 9px !important;
  font-size: 9px !important;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--fg-muted) !important;
}
html[data-style="terminal"] .dp-kpis > div:nth-child(-n+2) { border-top: 0 !important; }
html[data-style="terminal"] .dp-kpis > div:nth-child(odd) { border-left: 0 !important; }
html[data-style="terminal"] .dp-kpis b { font-size: 14px !important; margin-top: 2px !important; font-variant-numeric: tabular-nums; }
html[data-style="terminal"] .dp-controls { gap: 12px !important; margin-bottom: 8px !important; }
html[data-style="terminal"] .dp-seg { gap: 0 !important; }
html[data-style="terminal"] .dp-seg .lbl {
  font-size: 9px !important;
  color: var(--fg-muted) !important;
  text-transform: uppercase;
  letter-spacing: 0.6px;
  margin-right: 5px !important;
}
html[data-style="terminal"] .dp-seg button {
  background: var(--bg) !important;
  color: var(--fg-muted) !important;
  border: 1px solid var(--border) !important;
  border-left: 0 !important;
  border-radius: 0 !important;
  padding: 3px 9px !important;
  font-size: 11px !important;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
html[data-style="terminal"] .dp-seg button:first-of-type { border-left: 1px solid var(--border) !important; }
html[data-style="terminal"] .dp-seg button.active {
  background: var(--accent) !important;
  color: var(--accent-fg) !important;
  border-color: var(--accent) !important;
}
html[data-style="terminal"] .dp-chart {
  background: var(--bg) !important;
  border: 1px solid var(--border) !important;
  border-radius: 0 !important;
  padding: 10px 10px 6px !important;
  margin-bottom: 12px !important;
}
html[data-style="terminal"] .dp-legend {
  gap: 12px !important;
  margin-top: 6px !important;
  font-size: 10px !important;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  color: var(--fg-muted) !important;
}
html[data-style="terminal"] .dp-legend i { border-radius: 0 !important; width: 9px !important; height: 9px !important; }
html[data-style="terminal"] .dp-section h4 {
  font-size: 10px !important;
  color: var(--fg-muted) !important;
  text-transform: uppercase;
  letter-spacing: 0.6px;
  margin: 0 0 5px !important;
}

/* --- scroll-360: dichter Scroll-Container mit Gridline-Rahmen --- */
html[data-style="terminal"] .scroll-360 { max-height: 440px; }


/* Recent-Scans Liste */
html[data-style="terminal"] .recent-scans { margin-top: 12px; }
html[data-style="terminal"] .scan-item {
  background: var(--bg-card);
  border: 1px solid var(--border);
  padding: 6px 9px;
  margin-bottom: 4px;
  font-size: 12px;
}
html[data-style="terminal"] .scan-item .scan-nve { font-weight: 700; }
html[data-style="terminal"] .scan-item .scan-meta { font-size: 11px; }

/* Timeline: scharfe Knoten + dichte Eintraege */
html[data-style="terminal"] .timeline { padding-left: 20px; }
html[data-style="terminal"] .timeline::before { left: 6px; width: 1px; background: var(--border); }
html[data-style="terminal"] .timeline-item {
  background: var(--bg-card);
  border: 1px solid var(--border);
  padding: 8px 10px;
  margin-bottom: 6px;
}
html[data-style="terminal"] .timeline-item::before {
  left: -18px;
  top: 12px;
  width: 9px;
  height: 9px;
  background: var(--accent);
  border: 2px solid var(--bg);
}
html[data-style="terminal"] .timeline-item .ts {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  margin-bottom: 2px;
}
html[data-style="terminal"] .timeline-item .standort { font-size: 14px; font-weight: 700; margin-bottom: 2px; }
html[data-style="terminal"] .timeline-item .fahrer { font-size: 12px; }

/* Scan-Result Block */
html[data-style="terminal"] .scan-result {
  border: 1px solid var(--border);
  background: var(--bg-card);
  padding: 10px;
  font-size: 13px;
  min-height: 40px;
}
html[data-style="terminal"] .scan-result.success { border-color: var(--success); }
html[data-style="terminal"] .scan-result.error { border-color: var(--error); }

/* Loader / Toast / Empty */
html[data-style="terminal"] .empty-state { padding: 24px 12px; font-size: 12px; }
html[data-style="terminal"] .footnote { margin-top: 20px; font-size: 11px; letter-spacing: 0.3px; }
html[data-style="terminal"] .toast-overlay {
  border: 1px solid var(--border);
  box-shadow: none;
  padding: 16px 22px;
  font-size: 15px;
}

/* ===========================================================================
   RESPONSIVE — mobile-first; <=640px sauber, Tabellen scrollen im .table-wrap
   =========================================================================== */
@media (max-width: 640px) {
  html[data-style="terminal"],
  html[data-style="terminal"] body { font-size: 13px; }
  html[data-style="terminal"] .container { padding: 10px 8px 56px; }
  html[data-style="terminal"] main { padding: 14px 8px; }
  html[data-style="terminal"] .topbar { padding: 6px 8px; }
  html[data-style="terminal"] .stat-grid { grid-template-columns: repeat(2, 1fr); }
  html[data-style="terminal"] .stat-card .value { font-size: 19px; }
  html[data-style="terminal"] .toolbar > * { min-width: 0; }
  html[data-style="terminal"] .grid { grid-template-columns: 1fr; }
  /* HUB-Toolbar-Substruktur auf Mobile: Filter gestapelt, Aktionen voll breit */
  html[data-style="terminal"] .tb-filters { flex-direction: column; }
  html[data-style="terminal"] .tb-filters > div { border-left: 0; border-top: 1px solid var(--border); padding: 5px 0; }
  html[data-style="terminal"] .tb-filters > div:first-child { border-top: 0; }
  html[data-style="terminal"] .tb-actions .btn { flex: 1 1 100% !important; }
  html[data-style="terminal"] .num-input,
  html[data-style="terminal"] .oel-input,
  html[data-style="terminal"] .colli-input { width: 54px !important; }
  html[data-style="terminal"] .container { max-width: 100% !important; }
}

/* ===== STRUKTUR: Command-Bar + Toolbar-Strip =====
   Markante Kopf-Architektur OBEN (kein Sidebar): die `.topbar` wird zur
   sticky Command/Status-Bar mit Akzent-Top-Border und Prompt-Brand, die
   in-content `.toolbar` zum dichten Command-Strip mit 1px-Gridlines.
   Sichtbar anders als die Sidebar-Styles, bleibt aber oben. Farben nur
   ueber Theme-Variablen. Scope: html[data-style="terminal"].
   ============================================================================ */

/* ---- .topbar als sticky Command/Status-Bar ---- */
html[data-style="terminal"] .topbar {
  position: sticky;
  top: 0;
  z-index: 40;
  min-height: 38px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 6px 14px;
  padding: 4px 12px;
  border-radius: 0;
  border-top: 2px solid var(--accent, var(--nve, #fff));
  border-bottom: 1px solid var(--border);
  background: var(--bg-card, var(--card, var(--bg)));
  font-family: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;
  font-size: 11px;
  line-height: 1.3;
  letter-spacing: 0.3px;
  box-shadow: 0 1px 0 0 color-mix(in srgb, var(--accent, #888) 30%, transparent);
}
/* Innere Bloecke der Bar dicht ausrichten */
html[data-style="terminal"] .topbar > div {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px 10px;
  min-width: 0;
}

/* ---- .brand als Prompt: "> BRAND" ---- */
html[data-style="terminal"] .topbar .brand,
html[data-style="terminal"] .brand {
  display: inline-flex;
  align-items: center;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
}
html[data-style="terminal"] .topbar .brand::before,
html[data-style="terminal"] .brand::before {
  content: "> ";
  color: var(--accent, var(--nve, #fff));
  font-weight: 700;
  margin-right: 2px;
  white-space: pre;
}

/* ---- Status / Buttons als scharfe Mono-Felder in der Bar ---- */
html[data-style="terminal"] .topbar .status {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.6px;
  padding: 3px 8px;
  border: 1px solid var(--border);
  background: var(--bg, var(--page-bg, transparent));
  color: var(--fg-muted, var(--muted, inherit));
}
html[data-style="terminal"] .topbar .status.online { color: var(--success, var(--accent)); border-color: color-mix(in srgb, var(--success, var(--accent)) 55%, var(--border)); }
html[data-style="terminal"] .topbar .status.offline { color: var(--error, var(--accent)); border-color: color-mix(in srgb, var(--error, var(--accent)) 55%, var(--border)); }
/* Bar-Buttons/Links scharf, kompakt */
html[data-style="terminal"] .topbar .home,
html[data-style="terminal"] .topbar .back,
html[data-style="terminal"] .topbar .badge,
html[data-style="terminal"] .topbar .theme-sel,
html[data-style="terminal"] .topbar .fb-btn,
html[data-style="terminal"] .topbar #styleSel,
html[data-style="terminal"] .topbar #themeSel {
  font-size: 10px;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  padding: 3px 8px;
  border: 1px solid var(--border);
  border-radius: 0;
  background: var(--bg, var(--page-bg, transparent));
  color: var(--fg, var(--text, inherit));
  line-height: 1.3;
}
html[data-style="terminal"] .topbar .back { padding: 2px 7px; font-size: 13px; }
/* HUB-Topbar-Buttons (Protokoll/Abmelden) sind inline gestylt -> erzwingen */
html[data-style="terminal"] .topbar button {
  font-family: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace !important;
  font-size: 10px !important;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 4px 8px !important;
  border: 1px solid var(--border) !important;
  border-radius: 0 !important;
  background: var(--bg, var(--page-bg, transparent)) !important;
  color: var(--fg, var(--text, inherit)) !important;
  line-height: 1.3;
}
html[data-style="terminal"] .topbar button:hover { border-color: var(--accent) !important; color: var(--accent) !important; }
html[data-style="terminal"] .topbar .home:hover,
html[data-style="terminal"] .topbar .back:hover,
html[data-style="terminal"] .topbar .fb-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
}

/* ---- .toolbar als dichter Command-Strip ---- */
html[data-style="terminal"] .toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 0;
  margin-bottom: 10px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 0;
  background: var(--bg-card, var(--card, transparent));
  font-family: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;
}
/* 1px-Spalten-Trenner zwischen den Strip-Zellen */
html[data-style="terminal"] .toolbar > * {
  min-width: 0;
  margin: 0;
  padding: 5px 9px;
  border-left: 1px solid var(--border);
}
html[data-style="terminal"] .toolbar > *:first-child { border-left: 0; }
/* Felder im Strip ohne Doppel-Rahmen, winzige Labels */
html[data-style="terminal"] .toolbar .field { margin: 0; }
html[data-style="terminal"] .toolbar label {
  font-size: 9px;
  letter-spacing: 0.7px;
  margin-bottom: 2px;
}
html[data-style="terminal"] .toolbar input,
html[data-style="terminal"] .toolbar select,
html[data-style="terminal"] .toolbar textarea {
  padding: 4px 7px;
  font-size: 12px;
  border: 1px solid var(--border);
}
/* Strip-Buttons: scharf, Hover invertiert auf Akzent */
html[data-style="terminal"] .toolbar .btn {
  padding: 5px 12px;
  font-size: 11px;
  border-radius: 0;
  border: 1px solid var(--border);
  background: var(--bg, var(--page-bg, transparent));
  color: var(--fg, var(--text, inherit));
}
html[data-style="terminal"] .toolbar .btn:hover {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--accent-fg, #fff);
}

/* ---- MOBILE: Bar + Strip duerfen sauber umbrechen ---- */
@media (max-width: 640px) {
  html[data-style="terminal"] .topbar {
    min-height: 0;
    padding: 5px 8px;
    gap: 5px 8px;
  }
  html[data-style="terminal"] .topbar > div { gap: 5px 7px; }
  html[data-style="terminal"] .toolbar { flex-direction: column; }
  html[data-style="terminal"] .toolbar > * {
    border-left: 0;
    border-top: 1px solid var(--border);
  }
  html[data-style="terminal"] .toolbar > *:first-child { border-top: 0; }
}

/* ===== LAYOUT-IDENTITÄT =====
   Eigene Anordnung/Breite/Dichte fuer "terminal": eine TUI/Terminal-Anwendung.
   Full-width edge-to-edge Arbeitsflaeche, Read-out-Statuszeilen, gestapelte
   Mono-Listen statt Kacheln, dichte einspaltige Sektionen mit duennen
   Gridlines. Daten/Tabellen dominieren. Command/Status-Bar bleibt oben,
   keine Sidebar. Farben nur ueber Theme-Variablen, feste Maße. SVG/#map/
   .dp-chart bleiben volle Breite, einspaltig. Scope: html[data-style="terminal"].
   ============================================================================ */

/* ---- Full-width Arbeitsflaeche: edge-to-edge Terminal-Feeling ---- */
html[data-style="terminal"] .container {
  max-width: 1280px !important;
  width: 100%;
  margin: 0 auto;
  padding: 14px 16px 60px;
}
html[data-style="terminal"] main {
  padding: 14px 16px;
}

/* ---- .stat-grid: kompakte Mono-"Read-out"-Reihe (Statuszeilen) ----
   Auto-fit minmax(~150px), scharfe 1px-Trenner zwischen den Zellen, keine
   Gaps -> wirkt wie eine durchgehende Status-/Read-out-Leiste. */
html[data-style="terminal"] .stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
  gap: 0 !important;
  margin-bottom: 12px;
  border: 1px solid var(--border);
}
html[data-style="terminal"] .stat-grid .stat-card {
  border: 0;
  border-left: 1px solid var(--border);
  border-top: 1px solid var(--border);
  background: var(--bg-card);
  padding: 6px 10px;
  margin: 0;
}
/* obere Reihe ohne Top-Trenner (Rahmen uebernimmt der Container) */
html[data-style="terminal"] .stat-grid .stat-card:first-child { border-left: 0; }
html[data-style="terminal"] .stat-grid .stat-card .value {
  font-size: 20px;
  line-height: 1.1;
}

/* ---- .menu-grid: gestapelte Liste von Eintraegen (Zeilen statt Kacheln) ----
   Einspaltig, jede Karte als dichte Mono-Zeile (Icon links, Titel + Sub
   daneben), 1px-Trennlinien zwischen den Zeilen. */
html[data-style="terminal"] .menu-grid {
  display: flex !important;
  flex-direction: column;
  gap: 0 !important;
  border: 1px solid var(--border);
}
html[data-style="terminal"] .menu-grid .menu-card {
  flex-direction: row !important;
  align-items: center;
  justify-content: flex-start !important;
  text-align: left !important;
  min-height: 0 !important;
  gap: 12px !important;
  padding: 10px 14px !important;
  border: 0 !important;
  border-top: 1px solid var(--border) !important;
}
html[data-style="terminal"] .menu-grid .menu-card:first-child { border-top: 0 !important; }
html[data-style="terminal"] .menu-grid .menu-card .menu-icon {
  font-size: 20px !important;
  flex: 0 0 auto;
  width: 28px;
  text-align: center;
}
html[data-style="terminal"] .menu-grid .menu-card .menu-title { margin: 0; }
html[data-style="terminal"] .menu-grid .menu-card .menu-sub { margin: 0; }
/* primary-Eintrag: Akzent als linker Block-Marker statt voller Flaeche-Wechsel.
   .menu-card.primary setzt oben background:var(--accent)/color:var(--accent-fg);
   das wird hier ueberschrieben -> normale Karte mit Akzent-Marker links, damit
   der weisse/dunkle accent-fg-Text nicht auf normalem bg unlesbar wird. */
html[data-style="terminal"] .menu-grid .menu-card.primary {
  background: var(--bg-card) !important;
  color: var(--fg) !important;
  border-left: 3px solid var(--accent) !important;
}
html[data-style="terminal"] .menu-grid .menu-card.primary .menu-title,
html[data-style="terminal"] .menu-grid .menu-card.primary .menu-icon {
  color: var(--fg) !important;
}

/* ---- Portal .grid: kompakte Mono-Eintraege als gestapelte Zeilen ---- */
html[data-style="terminal"] main .grid {
  grid-template-columns: 1fr !important;
  gap: 0 !important;
  max-width: 760px;
  border: 1px solid var(--border);
}
html[data-style="terminal"] main .grid .card {
  border: 0;
  border-top: 1px solid var(--border);
  padding: 14px 16px;
}
html[data-style="terminal"] main .grid .card:first-child { border-top: 0; }
/* Portal-Karte als Zeile: Icon-Block kompakt, Inhalt fliesst daneben */
html[data-style="terminal"] main .grid .card .ic {
  width: 32px;
  height: 32px;
  font-size: 18px;
  margin-bottom: 8px;
}

/* ---- Sektionen: dichte einspaltige Stapelung, duenne Trennlinien ----
   .card-Panels rueckseitig flach an die volle Breite, klar getrennt; die
   Top-Akzentlinie der Karte ersetzt grosszuegige Abstaende. Daten dominieren. */
html[data-style="terminal"] .container > .card {
  border: 1px solid var(--border);
  margin-bottom: 10px;
  padding: 10px 14px 12px;
}
html[data-style="terminal"] .container > .card > h2:first-child {
  margin-top: 0;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--border);
}

/* ---- SICHER: voll-breite, einspaltige Daten-Flaechen (nie mehrspaltig) ---- */
html[data-style="terminal"] #map,
html[data-style="terminal"] .dp-chart,
html[data-style="terminal"] .table-wrap,
html[data-style="terminal"] svg {
  width: 100% !important;
  max-width: 100% !important;
}
/* AUSNAHME: das Leaflet-Karten-SVG NICHT auf 100% zwingen — sonst verschwinden die Routen-Linien
   (Leaflet steuert Größe/Position des Overlay-SVG selbst). Höhere Spezifität (#map svg) → gewinnt. */
html[data-style="terminal"] #map svg { width: auto !important; max-width: none !important; }
html[data-style="terminal"] .ins-cols { grid-template-columns: 1fr 1fr; }

/* ---- MOBILE (<=640px): einspaltig, dicht, Tabellen scrollen im .table-wrap ---- */
@media (max-width: 640px) {
  html[data-style="terminal"] .container { max-width: 100% !important; padding: 10px 8px 56px; }
  html[data-style="terminal"] main { padding: 12px 8px; }
  html[data-style="terminal"] main .grid { max-width: 100%; }
  html[data-style="terminal"] .ins-cols { grid-template-columns: 1fr; }
  /* Read-out-Reihe: 2 Spalten, Trenner bleiben sauber */
  html[data-style="terminal"] .stat-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  html[data-style="terminal"] .stat-grid .stat-card:nth-child(odd) { border-left: 0; }
}
