/* GyWem Aviation — Theme nach dem Logo: tiefes Marineblau, Silber, Gold-Akzent. */
:root {
  --navy-900: #0b1430;
  --navy-800: #0d1b3e;
  --navy-700: #122150;
  --navy-600: #1a2a5e;
  --silver: #c8d2e8;
  --silver-dim: #8a97b8;
  --gold: #f5b301;
  --gold-dim: #c8930a;
  --gold-ink: #1a1300;   /* Schriftfarbe AUF Gold-Flächen (je Theme hell/dunkel) */
  --text: #e8ecf5;
  --muted: #9aa7c7;
  --border: #243463;
  --danger: #ff6b6b;
  --ok: #5fd29a;
  --radius: 10px;
  --sidebar-w: 240px;
  /* Karten-Bedienelemente (Navaids/Lufträume/Ebenen-Ausklappmenüs): halbtransparentes Panel + Akzentfarbe. */
  --map-ctl-bg: rgba(11,20,48,0.92);
  --map-ctl-accent: #7fd0ff;
  --hero-glow: #16264f;   /* dekorativer Radial-/Login-Schimmer — färbt je Theme mit */
}

/* Heller Modus: am Airline-Vorbild GETÖNTE helle Flächen statt reinem Weiß (Nutzervorgabe 2026-07-23) —
   GyWem Aviation: sanftes, marineblau getöntes Creme-Blau + dunkle Schrift. (GyWem-DARK bleibt unberührt.) */
:root[data-theme="light"] {
  --navy-900: #e7edf8;
  --navy-800: #f3f7fd;
  --navy-700: #dee7f5;
  --navy-600: #cfdbef;
  --silver: #2a3550;
  --silver-dim: #5d6a86;
  --gold: #c8930a;
  --gold-dim: #9a7008;
  /* FALLE: NICHT var(--navy-700) — das ist im Hellmodus selbst hell (#dee7f5) → helle Schrift auf hellem
     Grund. Feste dunkle Marineblau-Schrift (wie die anderen Theme-Light-Blöcke); Lufthansa/'aviation' erbt
     diesen Basis-Block als sein Hellmodus. */
  --text: #16203a;
  --muted: #5d6a86;
  --border: #c2d0e6;
  /* Heller Modus: helles Panel + kräftigeres Blau (auf Hell lesbar) + dunkles Ebenen-Icon. */
  --map-ctl-bg: rgba(255,255,255,0.95);
  --map-ctl-accent: #1c6aa8;
  --hero-glow: #dbe6f5;
}

/* ===== Farb-Themes (data-palette am <html>) — je Theme Dark-Block + Light-Block (2 Attribute → gewinnt
   über den Default-Light-Block). Status-/Datenfarben (--danger/--ok/Charts) bleiben bewusst neutral
   (vom Basis-:root geerbt), damit „Grün=gut/Rot=schlecht" in jedem Theme gleich bleibt. „aviation" braucht
   keinen Block (= Basis-:root). ===== */

/* Cathay Pacific — Dunkelgrün + Jade (Brushwing) */
:root[data-palette="cathaypacific"] {
  --navy-900: #06251f; --navy-800: #0a3128; --navy-700: #0e3d31; --navy-600: #164e40;
  --silver: #c4e6db; --silver-dim: #7fae9f; --gold: #2fbf9e; --gold-dim: #1c8f75;
  --text: #e6f5f0; --muted: #8fb8ac; --border: #14463a;
  --map-ctl-bg: rgba(6,37,31,0.92); --map-ctl-accent: #2fbf9e; --hero-glow: #0f4436;
}
:root[data-palette="cathaypacific"][data-theme="light"] {
  --navy-900: #e1f1eb; --navy-800: #f0f9f5; --navy-700: #d5ebe1; --navy-600: #c3e1d5;
  --silver: #08302a; --silver-dim: #47705f; --gold: #0f766e; --gold-dim: #0b5a54; --gold-ink: #ffffff;
  --text: #08302a; --muted: #47705f; --border: #b6dbce;
  --map-ctl-bg: rgba(255,255,255,0.95); --map-ctl-accent: #0f766e; --hero-glow: #d6ece4;
}

/* Qantas — Anthrazit + Kangaroo-Rot */
:root[data-palette="qantas"] {
  --navy-900: #191113; --navy-800: #22181a; --navy-700: #2c2023; --navy-600: #3a2a2e;
  --silver: #e6d3d5; --silver-dim: #ab9294; --gold: #e40000; --gold-dim: #b00000; --gold-ink: #ffffff;
  --text: #f6e9e9; --muted: #b39a9c; --border: #3a2a2d;
  --map-ctl-bg: rgba(25,17,19,0.92); --map-ctl-accent: #e40000; --hero-glow: #38181c;
}
:root[data-palette="qantas"][data-theme="light"] {
  --navy-900: #f6e7e6; --navy-800: #fdf4f3; --navy-700: #efdad8; --navy-600: #e8cbc9;
  --silver: #2a0f10; --silver-dim: #7a5556; --gold: #c1121f; --gold-dim: #97121b; --gold-ink: #ffffff;
  --text: #2a0f10; --muted: #7a5556; --border: #e5c3c1;
  --map-ctl-bg: rgba(255,255,255,0.95); --map-ctl-accent: #c1121f; --hero-glow: #f5d9d7;
}

/* Qatar Airways — Bordeaux + Silber (Oryx) */
:root[data-palette="qatar"] {
  --navy-900: #29091a; --navy-800: #350f23; --navy-700: #43152d; --navy-600: #571f3c;
  --silver: #e6cfda; --silver-dim: #b593a3; --gold: #c39ba8; --gold-dim: #9a7181;
  --text: #f3e8ee; --muted: #c0a1af; --border: #4a1c37;
  --map-ctl-bg: rgba(41,9,26,0.92); --map-ctl-accent: #c39ba8; --hero-glow: #451934;
}
:root[data-palette="qatar"][data-theme="light"] {
  --navy-900: #f2e5ed; --navy-800: #fbf3f7; --navy-700: #ebd8e4; --navy-600: #e1cad8;
  --silver: #29091a; --silver-dim: #7a556a; --gold: #6b1b3f; --gold-dim: #531431; --gold-ink: #ffffff;
  --text: #29091a; --muted: #7a556a; --border: #dcc1d1;
  --map-ctl-bg: rgba(255,255,255,0.95); --map-ctl-accent: #6b1b3f; --hero-glow: #f2d9e6;
}

/* Singapore Airlines — Mitternachtsblau + Batik-Gold */
:root[data-palette="singaporeairlines"] {
  --navy-900: #0a1526; --navy-800: #0f1e35; --navy-700: #152845; --navy-600: #1e3559;
  --silver: #cdd8ea; --silver-dim: #8496b0; --gold: #d4a537; --gold-dim: #a67f22;
  --text: #eaf0fa; --muted: #93a3bd; --border: #1c3358;
  --map-ctl-bg: rgba(10,21,38,0.92); --map-ctl-accent: #d4a537; --hero-glow: #12294c;
}
:root[data-palette="singaporeairlines"][data-theme="light"] {
  --navy-900: #eaeff8; --navy-800: #f5f8fd; --navy-700: #dfe8f4; --navy-600: #d0ddf0;
  --silver: #0a1526; --silver-dim: #4c5c7a; --gold: #94711d; --gold-dim: #745914; --gold-ink: #ffffff;
  --text: #0a1526; --muted: #4c5c7a; --border: #c5d3ea;
  --map-ctl-bg: rgba(255,255,255,0.95); --map-ctl-accent: #94711d; --hero-glow: #dce6f5;
}

/* Air New Zealand — Schwarz/Anthrazit + Silber (Key bleibt „graphite" für Bestandsnutzer) */
:root[data-palette="graphite"] {
  --navy-900: #16181b; --navy-800: #1d2024; --navy-700: #24282e; --navy-600: #2f353d;
  --silver: #d3dae4; --silver-dim: #98a3b2; --gold: #8fa9c9; --gold-dim: #5a6b82;
  --text: #eef1f5; --muted: #99a3b2; --border: #333a43;
  --map-ctl-bg: rgba(22,24,27,0.92); --map-ctl-accent: #8fa9c9; --hero-glow: #2a2f36;
}
:root[data-palette="graphite"][data-theme="light"] {
  --navy-900: #e8ecf0; --navy-800: #f5f7fa; --navy-700: #e0e5eb; --navy-600: #d3dae2;
  --silver: #1c2430; --silver-dim: #55606f; --gold: #4a5568; --gold-dim: #333a43; --gold-ink: #ffffff;
  --text: #1c2430; --muted: #55606f; --border: #c7cfd9;
  --map-ctl-bg: rgba(255,255,255,0.95); --map-ctl-accent: #4a5568; --hero-glow: #dde3ea;
}

/* ===== Airline-Themes (Look großer Fluggesellschaften) ===== */

/* Lufthansa — tiefes Marineblau + Kranich-Gelb */
/* easyJet — Orange + Anthrazit (ersetzt das alte Lufthansa-Theme; dessen Look lebt unter dem
   umbenannten „Lufthansa"-Theme mit key 'aviation' weiter) */
:root[data-palette="easyjet"] {
  --navy-900: #1b1b1f; --navy-800: #232329; --navy-700: #2c2c34; --navy-600: #383841;
  --silver: #d9dbe1; --silver-dim: #9a9da8; --gold: #ff6600; --gold-dim: #cc5200;
  --text: #f2f2f5; --muted: #a3a6b1; --border: #3c3c46;
  --map-ctl-bg: rgba(27,27,31,0.92); --map-ctl-accent: #ff6600; --hero-glow: #33241a;
}
:root[data-palette="easyjet"][data-theme="light"] {
  --navy-900: #f7efe6; --navy-800: #fdf8f1; --navy-700: #f1e3d3; --navy-600: #ebd8c4;
  --silver: #1d1d22; --silver-dim: #5b5b64; --gold: #e05500; --gold-dim: #b34400; --gold-ink: #ffffff;
  --text: #1d1d22; --muted: #5b5b64; --border: #e6d2bc;
  --map-ctl-bg: rgba(255,255,255,0.95); --map-ctl-accent: #e05500; --hero-glow: #f3e2d3;
}

/* British Airways — Midnight-Navy + Speedmarque-Rot */
:root[data-palette="britishairways"] {
  --navy-900: #041226; --navy-800: #071c38; --navy-700: #0c2648; --navy-600: #12335a;
  --silver: #cfd9ea; --silver-dim: #8593ab; --gold: #ef4b56; --gold-dim: #c62b36; --gold-ink: #ffffff;
  --text: #e9eef7; --muted: #94a2bd; --border: #1a3055;
  --map-ctl-bg: rgba(4,18,38,0.92); --map-ctl-accent: #ef4b56; --hero-glow: #12294a;
}
:root[data-palette="britishairways"][data-theme="light"] {
  --navy-900: #e8eef7; --navy-800: #f4f7fc; --navy-700: #dee7f3; --navy-600: #cedbed;
  --silver: #0a1e3a; --silver-dim: #4d5c76; --gold: #c1121f; --gold-dim: #97121b; --gold-ink: #ffffff;
  --text: #0a1e3a; --muted: #4d5c76; --border: #c3d2e7;
  --map-ctl-bg: rgba(255,255,255,0.95); --map-ctl-accent: #c1121f; --hero-glow: #dde6f3;
}

/* Emirates — Bordeauxrot + Gold */
:root[data-palette="emirates"] {
  --navy-900: #1c0708; --navy-800: #290b0d; --navy-700: #380f12; --navy-600: #4a171b;
  --silver: #ecdac9; --silver-dim: #bfa088; --gold: #d9b25b; --gold-dim: #a9833a;
  --text: #f7ece4; --muted: #cba898; --border: #4d1f22;
  --map-ctl-bg: rgba(28,7,8,0.92); --map-ctl-accent: #d9b25b; --hero-glow: #451418;
}
:root[data-palette="emirates"][data-theme="light"] {
  --navy-900: #f7eae0; --navy-800: #fdf6ef; --navy-700: #f1dcce; --navy-600: #ead0bd;
  --silver: #3a1416; --silver-dim: #7a5a52; --gold: #9c7a2e; --gold-dim: #7d611f; --gold-ink: #ffffff;
  --text: #3a1416; --muted: #7a5a52; --border: #e6cbb6;
  --map-ctl-bg: rgba(255,255,255,0.95); --map-ctl-accent: #9c7a2e; --hero-glow: #f5ddd0;
}

/* KLM — Königsblau + Azur */
:root[data-palette="klm"] {
  --navy-900: #04121f; --navy-800: #071e33; --navy-700: #0b2843; --navy-600: #123557;
  --silver: #c6dcee; --silver-dim: #7ea0bb; --gold: #2fa8e0; --gold-dim: #1785b5;
  --text: #e6f1fa; --muted: #90adc6; --border: #163a5a;
  --map-ctl-bg: rgba(4,18,31,0.92); --map-ctl-accent: #2fa8e0; --hero-glow: #103a5c;
}
:root[data-palette="klm"][data-theme="light"] {
  --navy-900: #e5f0fa; --navy-800: #f2f8fe; --navy-700: #daebf7; --navy-600: #c8dff1;
  --silver: #08263f; --silver-dim: #4a6480; --gold: #0284c7; --gold-dim: #026aa0; --gold-ink: #ffffff;
  --text: #08263f; --muted: #4a6480; --border: #bdd6ec;
  --map-ctl-bg: rgba(255,255,255,0.95); --map-ctl-accent: #0284c7; --hero-glow: #d7e8f5;
}

* { box-sizing: border-box; }

/* Das hidden-Attribut muss zuverlässig ausblenden — sonst überschreibt eine
   explizite display-Regel (z.B. display:grid) die UA-Regel [hidden]{display:none}. */
[hidden] { display: none !important; }

html, body {
  margin: 0;
  height: 100%;
  font-family: "Segoe UI", system-ui, sans-serif;
  color: var(--text);
  background: var(--navy-900);
  overflow: hidden;
}

button { font-family: inherit; cursor: pointer; }
input { font-family: inherit; }
h1, h2, h3 { font-weight: 600; }

/* ===== Login ===== */
.login-screen {
  height: 100vh;
  height: 100dvh;
  overflow-y: auto;
  display: grid;
  place-items: center;
  background: radial-gradient(1200px 600px at 50% -10%, var(--hero-glow) 0%, var(--navy-900) 60%);
}
.login-card {
  width: 360px;
  padding: 32px 28px 28px;
  background: color-mix(in srgb, var(--navy-800) 90%, transparent);
  border: 1px solid var(--border);
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
  text-align: center;
}
.login-logo { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 2px var(--border); }
.login-card h1 { margin: 14px 0 2px; font-size: 22px; }
.subtitle { margin: 0 0 18px; color: var(--muted); font-size: 13px; }
#login-form { display: flex; flex-direction: column; gap: 12px; text-align: left; }
label { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--muted); }
input {
  padding: 10px 12px;
  background: var(--navy-800);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--text);
  font-size: 14px;
}
input:focus { border-color: var(--gold); }
button {
  padding: 11px 14px;
  background: var(--gold);
  color: var(--gold-ink);
  border: none;
  border-radius: 8px;
  font-weight: 600;
  font-size: 14px;
}
button:hover { background: var(--gold-dim); }
button.secondary { background: var(--navy-600); color: var(--text); border: 1px solid var(--border); }
button.secondary:hover { background: var(--navy-700); }
/* Deaktivierte Buttons (z. B. Theorieprüfung mit noch offenen Voraussetzungen) ausgrauen. */
button:disabled, button:disabled:hover { background: var(--navy-600) !important; color: var(--muted) !important; cursor: not-allowed !important; opacity: 0.55; border: 1px solid var(--border); }
.error { color: var(--danger); font-size: 13px; margin: 4px 0 0; }
.ok-text { color: var(--ok); font-size: 13px; }

/* ===== App-Layout ===== */
/* Grid-Zeile auf genau die Fensterhöhe klemmen (minmax(0,1fr)), damit Sidebar und Content ihren
   Inhalt INTERN scrollen (statt die Seite zu überlaufen). 100dvh = sichtbare Höhe auf iPad/Safari
   (sonst wird unten etwas abgeschnitten); 100vh als Fallback. */
.app-screen { display: grid; grid-template-columns: var(--sidebar-w) 1fr; grid-template-rows: minmax(0, 1fr); height: 100vh; height: 100dvh; }

.sidebar {
  background: linear-gradient(180deg, var(--navy-800), var(--navy-900));
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  padding: 16px 12px;
  min-height: 0; /* erlaubt dem inneren Menü, zu scrollen */
}
/* Logo oben ZENTRIERT + größer, „GyWem Aviation" und „Virtual Airline" mittig darunter (Nutzervorgabe 2026-07-22). */
.brand { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 10px 6px 16px; border-bottom: 1px solid var(--border); }
.brand-logo { width: 76px; height: 76px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 1px var(--border); }
.brand-text { display: flex; flex-direction: column; align-items: center; }
.brand-name { font-weight: 700; font-size: 17px; }
.brand-sub { font-size: 11px; color: var(--muted); letter-spacing: 0.5px; }

/* Menü scrollt per Touch, falls es (z. B. im Querformat) nicht ganz passt — ohne sichtbare
   Scrollleiste. min-height:0 ist nötig, damit overflow im Flex-Container greift. */
/* Globale, theme-treue Scrollleisten (App-Fenster/Browser-Body + ALLE scrollbaren Container, die keine
   speziellere Regel haben). Nutzt die Theme-Variablen, passt sich also automatisch dem gewählten Theme an. */
* { scrollbar-width: thin; scrollbar-color: var(--border) transparent; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 6px; border: 2px solid transparent; background-clip: padding-box; }
::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, var(--gold) 45%, var(--border)); background-clip: padding-box; }
::-webkit-scrollbar-corner { background: transparent; }
html, body { scrollbar-color: var(--border) transparent; }

/* Schlanke, dezente Scrollleiste, damit das Menü bei vielen Einträgen sichtbar scrollbar ist. */
.nav { display: flex; flex-direction: column; gap: 2px; margin-top: 12px; flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; scrollbar-width: thin; scrollbar-color: var(--border) transparent; }
.nav::-webkit-scrollbar { width: 6px; }
.nav::-webkit-scrollbar-track { background: transparent; }
.nav::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
.nav:hover::-webkit-scrollbar-thumb { background: var(--navy-600); }
.nav-item {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px;
  background: transparent;
  border: none;
  border-radius: 8px;
  color: var(--silver-dim);
  font-size: 14px;
  text-align: left;
  width: 100%;
}
.nav-item:hover { background: var(--navy-700); color: var(--text); }
.nav-item.active { background: var(--navy-600); color: var(--text); box-shadow: inset 3px 0 0 var(--gold); }
.nav-item .ico { width: 24px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 20px; line-height: 1; }
.nav-item .nav-label { flex: 1 1 auto; min-width: 0; }
.nav-item .nav-caret { flex: 0 0 auto; font-size: 11px; color: var(--muted); transition: color .12s; }
.nav-item:hover .nav-caret, .nav-item.active .nav-caret { color: var(--gold); }

/* Akkordeon in der Smartphone-Schublade: Gruppen klappen ihre Untermenüs direkt im Menü auf
   (buildNav rendert sie nur im Phone-Layout). Pfeil dreht sich beim Aufklappen. */
.nav-group { display: flex; flex-direction: column; }
.nav-group .nav-caret { transition: transform .15s; }
.nav-group.open > .nav-item .nav-caret { transform: rotate(90deg); color: var(--gold); }
.nav-sub { display: none; flex-direction: column; gap: 2px; padding: 2px 0 6px 14px; border-left: 2px solid var(--border); margin-left: 14px; }
.nav-group.open .nav-sub { display: flex; }
.nav-subitem {
  display: flex; align-items: center; gap: 10px;
  padding: 11px 12px; min-height: 44px;
  background: transparent; border: none; border-radius: 8px;
  color: var(--silver-dim); font-size: 14px; text-align: left; width: 100%;
}
.nav-subitem:hover { background: var(--navy-700); color: var(--text); }
.nav-subitem.active { background: var(--navy-600); color: var(--text); box-shadow: inset 3px 0 0 var(--gold); }
.nav-subitem .ico { width: 24px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 18px; line-height: 1; }

/* Flyout-Untermenü neben der Seitenleiste (Hover/Tap) */
.nav-flyout {
  position: fixed; z-index: 1200; display: none;
  min-width: 224px; max-width: 320px; max-height: 80vh; overflow-y: auto;
  padding: 6px; background: var(--navy-800); border: 1px solid var(--border); border-radius: 12px;
  box-shadow: 0 14px 38px rgba(0,0,0,0.55);
}
.nav-flyout.open { display: block; }
.nav-flyout::-webkit-scrollbar { width: 7px; }
.nav-flyout::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }
.flyout-group-head {
  padding: 7px 12px 9px; margin-bottom: 4px; border-bottom: 1px solid var(--border);
  color: var(--gold); font-size: 13px; font-weight: 700; letter-spacing: 0.02em;
}
.flyout-item {
  display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
  padding: 9px 12px; background: transparent; border: none; border-radius: 8px;
  color: var(--silver-dim); font-size: 14px; cursor: pointer;
}
.flyout-item:hover { background: var(--navy-700); color: var(--text); }
.flyout-item.active { background: var(--navy-600); color: var(--text); box-shadow: inset 3px 0 0 var(--gold); }
.flyout-item .ico { width: 24px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 19px; line-height: 1; flex: 0 0 auto; }

/* MSFS-Statusanzeige (über der Linie zum Benutzerbereich) */
.sim-status { display: flex; align-items: center; gap: 8px; padding: 6px 8px; font-size: 12px; color: var(--muted); }
.sim-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--muted); flex: 0 0 auto; }
.sim-dot.green { background: #2ecc71; box-shadow: 0 0 6px #2ecc71; }
.sim-dot.orange { background: #f5a623; box-shadow: 0 0 6px #f5a623; }
.sim-dot.red { background: #e7563f; box-shadow: 0 0 6px #e7563f; }
.user-chip { display: flex; align-items: center; gap: 10px; padding: 10px 8px; border-top: 1px solid var(--border); margin-top: 8px; border-radius: 8px; cursor: pointer; transition: background 0.12s; }
.user-chip:hover { background: var(--navy-600); }
.user-chip.active { background: var(--navy-600); }
.user-chip.active .user-name { color: var(--gold); }
.user-avatar { width: 34px; height: 34px; border-radius: 50%; background: var(--navy-600); border: 1px solid var(--border); display: grid; place-items: center; font-size: 14px; color: var(--gold); }
.user-meta { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.user-name { font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.user-role { font-size: 11px; color: var(--muted); }
/* Hell-/Dunkelmodus-Schalter rechts in der Benutzerkachel. */
.theme-toggle { flex-shrink: 0; display: inline-flex; align-items: center; background: transparent; border: none; padding: 2px; }
.theme-track { position: relative; width: 38px; height: 20px; border-radius: 999px; background: var(--navy-700); border: 1px solid var(--border); transition: background 0.15s; }
.theme-knob { position: absolute; top: 1px; left: 1px; width: 16px; height: 16px; border-radius: 50%; background: var(--gold); transition: transform 0.15s; display: grid; place-items: center; font-size: 10px; }
.theme-knob::after { content: "🌙"; font-size: 10px; }
:root[data-theme="light"] .theme-knob { transform: translateX(18px); }
:root[data-theme="light"] .theme-knob::after { content: "☀️"; }
.logout-btn { width: 100%; margin-top: 10px; padding: 10px; background: var(--navy-600); color: var(--text); border: 1px solid var(--border); border-radius: 8px; font-size: 13px; font-weight: 600; }
.logout-btn:hover { background: #5a1f2a; border-color: var(--danger); color: #ffd7d7; }

/* ===== Content ===== */
/* overflow-anchor: none — Chromes Scroll-Verankerung „korrigiert" die Scrollposition bei DOM-Änderungen
   und ließ die Seite u. a. beim Ziehen im Einrichten-Editor mitwandern. Die App verwaltet ihre
   Scrollpositionen selbst (preserveScroll/furnishKeepScroll); die Automatik stört hier nur. */
.content { padding: 28px 32px; padding-bottom: calc(28px + env(safe-area-inset-bottom)); overflow-y: auto; min-height: 0; -webkit-overflow-scrolling: touch; overflow-anchor: none; }
/* „Greifen & Scrollen": während der Zieh-Geste kein Text markieren + Greif-Cursor. */
.content.drag-scrolling-y { cursor: grabbing; user-select: none; -webkit-user-select: none; }

/* Hamburger + Menü-Backdrop: nur auf Smartphones (siehe Media-Query unten) sichtbar. */
.nav-toggle { display: none; }
.nav-backdrop { display: none; }

/* --- Menüleiste anheften / automatisch ausblenden (Desktop + Browser ≥ 681px, Nutzervorgabe 2026-07-24) ---
   Auto-Hide: die Leiste wird zum Overlay und verschwindet nach links, der Inhalt nutzt die volle Fensterbreite;
   Maus an den linken Rand (oder auf die Leiste) blendet sie ein; ein „Spielraum"-Timer hält sie beim Wechsel
   in die Untermenüs offen. Das Pin-Symbol oben links schaltet dauerhaft-gezeigt <-> Auto-Hide um. */
.sidebar-pin { display: none; position: fixed; top: 8px; left: 8px; z-index: 1300; width: 26px; height: 26px; align-items: center; justify-content: center; border-radius: 7px; border: 1px solid var(--border); background: color-mix(in srgb, var(--navy-800) 84%, transparent); color: var(--text); font-size: 13px; line-height: 1; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,.4); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.sidebar-pin:hover { border-color: var(--gold); }
.sidebar-edge { display: none; position: fixed; left: 0; top: 0; bottom: 0; width: 22px; z-index: 1200; }
@media (min-width: 681px) {
  .sidebar-pin { display: inline-flex; }
  .app-screen.sidebar-autohide { grid-template-columns: 1fr; }
  .app-screen.sidebar-autohide .sidebar { position: fixed; left: 0; top: 0; bottom: 0; width: var(--sidebar-w); transform: translateX(-100%); transition: transform .18s ease; z-index: 1250; box-shadow: 5px 0 26px rgba(0,0,0,.5); }
  .app-screen.sidebar-autohide.sidebar-peek .sidebar { transform: translateX(0); }
  .app-screen.sidebar-autohide .sidebar-edge { display: block; }
  /* Im Auto-Hide etwas Platz oben, damit das Pin-Symbol das Logo nicht überdeckt, wenn die Leiste offen ist. */
  .app-screen.sidebar-autohide .brand { padding-left: 30px; }
}

/* ===== Smartphones (≤ 680 px): Seitenmenü wird zur Schublade, Inhalt nutzt die volle Breite ===== */
/* Auf Tablets (≥ 768 px) bleibt das feste 240-px-Menü — dort ist genug Platz. */
@media (max-width: 680px) {
  .app-screen { grid-template-columns: 1fr; }
  .sidebar {
    position: fixed; top: 0; left: 0; bottom: 0; width: min(86vw, 300px); z-index: 1400;
    transform: translateX(-100%); transition: transform .22s ease; will-change: transform;
    box-shadow: 6px 0 30px rgba(0, 0, 0, .5);
  }
  .app-screen.nav-open .sidebar { transform: translateX(0); }
  .nav-backdrop {
    display: block; position: fixed; inset: 0; background: rgba(4, 8, 20, .55); z-index: 1350;
    opacity: 0; pointer-events: none; transition: opacity .2s;
  }
  .app-screen.nav-open .nav-backdrop { opacity: 1; pointer-events: auto; }
  .nav-toggle {
    display: inline-flex; align-items: center; justify-content: center;
    position: fixed; top: calc(8px + env(safe-area-inset-top)); left: 10px; z-index: 1360;
    width: 44px; height: 44px; border-radius: 10px; font-size: 22px; line-height: 1;
    background: var(--navy-700); color: var(--text); border: 1px solid var(--border);
    box-shadow: 0 2px 10px rgba(0, 0, 0, .4); cursor: pointer;
  }
  /* Inhalt: kompaktere Ränder + Platz oben für den Hamburger; seitliche Safe-Areas (Notch im Querformat). */
  .content { padding: 14px 13px; padding-top: calc(60px + env(safe-area-inset-top)); padding-left: calc(13px + env(safe-area-inset-left)); padding-right: calc(13px + env(safe-area-inset-right)); }
  .page-head { padding: 16px 16px; margin-bottom: 16px; }
  .page-head h2 { font-size: 21px; }
  .card { padding: 15px; }
  .kpis { grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 9px; }
  .kpi { padding: 12px; }
  .kpi .value { font-size: 19px; }
  .map { height: 300px; }
  /* ALLE Tabellen horizontal wischbar machen, statt das Layout zu sprengen (Nutzervorgabe 2026-08-18:
     Spalten bleiben erhalten, seitlich wischen — kein Informationsverlust). */
  .content table, .modal-card table { display: block; overflow-x: auto; white-space: nowrap; -webkit-overflow-scrolling: touch; max-width: 100%; }
  /* Tabellen in einem eigenen Scroll-Wickel (.table-scroll) scrollen ÜBER den Wickel — die Tabelle
     selbst bleibt eine Tabelle, sonst schöbe man zwei ineinanderliegende Scroller. */
  .table-scroll table { display: table; }
  /* Nichts darf die Seitenbreite sprengen: Medien schrumpfen mit (Klassen-Größen gewinnen weiterhin).
     AUSNAHME Leaflet-Karten: Marker-Bilder (Flugzeuge, Pkw, …) und Overlay-Canvas tragen ihre exakte
     Pixelgröße als width/height-Attribut — height:auto/max-width verzerrte sie (Nutzerbefund 2026-08-19). */
  .content img:not(.leaflet-container *):not(.map *), .content canvas:not(.leaflet-container *):not(.map *), .content video { max-width: 100%; height: auto; }
  /* Finger-taugliche Bedienelemente: 16px in Eingabefeldern verhindert außerdem den automatischen
     iOS-Zoom beim Antippen; Knöpfe bekommen eine Mindest-Trefferhöhe. */
  input, select, textarea { font-size: 16px; }
  select { padding: 10px 10px; }
  button { min-height: 42px; }
  .theme-toggle { min-height: 0; }   /* der kleine Tag/Nacht-Schalter bleibt kompakt */
  /* Karten-Bedienung bleibt kompakt: die Chip-Knöpfe über den Karten (Routen/NPC/Pkw/Fokus …) und
     alle Leaflet-eigenen Bedienelemente behalten ihr schlankes Design (Nutzerbefund 2026-08-19). */
  .ap-focus-btn, .leaflet-container button { min-height: 0; }
  /* Formularzeilen: untereinander statt gequetscht nebeneinander. */
  .form-row label { min-width: 100%; }
  .form-row button { flex: 1 1 auto; }
  /* Schubladen-Menü: größere Ziele. */
  .nav-item { padding: 13px 12px; min-height: 46px; font-size: 15px; }
  /* Modals nahezu vollflächig. */
  .modal-overlay { padding: 10px; }
  .modal-card { max-width: 100%; padding: 18px; }
}
.page-head {
  position: relative;
  margin-bottom: 22px;
  padding: 22px 24px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: linear-gradient(120deg, var(--navy-700) 0%, var(--navy-900) 70%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.02);
}
.page-head .eyebrow {
  font-size: 11px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 6px;
  font-weight: 600;
}
.page-head h2 { margin: 0 0 4px; font-size: 30px; overflow-wrap: anywhere; }
.page-head p { margin: 0; color: var(--muted); font-size: 14px; }
/* Umbruch erlauben, damit lange Titel (z. B. „Administrator") und die Kennzahlen-Boxen sich auf
   schmalen Bildschirmen (iPad) nicht überlappen, sondern bei Platzmangel umbrechen. */
.page-head.with-stats { display: flex; align-items: center; justify-content: space-between; gap: 20px 24px; flex-wrap: wrap; }
.page-head-main { min-width: 0; flex: 1 1 auto; }
.page-head-side { display: flex; flex-direction: column; align-items: stretch; gap: 8px; min-width: 0; }
.page-head-stats { display: flex; gap: 18px 28px; justify-content: flex-end; flex-wrap: wrap; }
/* Bei knapper Breite rücken die Kacheln zusammen und ihre Beschriftung bricht nicht mehr um, damit die
   Reihe geschlossen bleibt statt eine zweite aufzumachen. Zusammen mit der Fenster-Mindestbreite (1280,
   siehe desktop/main.js) passt so auch die längste Aufstellung des CEO in eine Zeile. */
@media (max-width: 1500px) {
  .page-head-stats { gap: 12px 16px; }
  .page-head-stats .phs-lbl { letter-spacing: 0.4px; white-space: nowrap; }
}
.page-head-stats .phs { text-align: right; }
.page-head-stats .phs-val { font-size: 24px; font-weight: 700; color: var(--gold); }
.page-head-stats .phs-lbl { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: 1px; }
.page-head-extra { display: flex; flex-direction: column; gap: 2px; }
/* Schmale Bildschirme (iPad-Hochformat, kleine Fenster): Titel oben, Kennzahlen darunter, links
   ausgerichtet und kompakter — so bleibt alles lesbar und nichts überlappt. */
@media (max-width: 820px) {
  .page-head.with-stats { align-items: flex-start; }
  .page-head-main { flex-basis: 100%; }
  .page-head-side { width: 100%; }
  .page-head-stats { justify-content: flex-start; }
  .page-head-stats .phs { text-align: left; }
  .page-head h2 { font-size: 24px; }
  .page-head-stats .phs-val { font-size: 20px; }
}

/* Back-Link sitzt jetzt unter der Kopf-Box */
.link-back { display: inline-block; margin: -8px 0 14px; }

.card {
  background: var(--navy-800);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
  margin-bottom: 16px;
}
.card h3 { margin: 0 0 14px; font-size: 15px; color: var(--silver); }

.placeholder { color: var(--muted); display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 40px; text-align: center; }
.placeholder .big-ico { font-size: 40px; opacity: 0.7; }
.badge { display: inline-block; padding: 2px 8px; border-radius: 999px; background: var(--navy-600); border: 1px solid var(--border); font-size: 11px; color: var(--muted); }

.form-row { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end; }
.form-row label { flex: 1; min-width: 160px; }
.form-row button { flex: 0 0 auto; }
.form-col { display: flex; flex-direction: column; gap: 10px; margin: 10px 0; }
.form-col label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.form-col input { width: 100%; }

table { width: 100%; border-collapse: collapse; font-size: 13px; }
th, td { text-align: left; padding: 9px 10px; border-bottom: 1px solid var(--border); }
th { color: var(--muted); font-weight: 500; font-size: 12px; }
select { padding: 7px 8px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 6px; color: var(--text); }

.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.kpi { background: var(--navy-700); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; }
.kpi .label { font-size: 12px; color: var(--muted); }
.kpi .value { font-size: 22px; font-weight: 700; margin-top: 4px; }
.kpi .value.gold { color: var(--gold); }

/* Live-Karte */
.map { height: 380px; border-radius: var(--radius); border: 1px solid var(--border); overflow: hidden; }
.leaflet-container { background: var(--navy-900); }
/* Kein Fokus-Kasten um angeklickte Strecken/Marker. */
.leaflet-interactive:focus, path.leaflet-interactive:focus, .leaflet-container:focus { outline: none; }
/* Höhen-Leuchten (ADS-B-Farbcode): jedes Flugzeug leuchtet in seiner Flughöhen-Farbe (--alt-glow, live
   gesetzt). Ohne gesetzte Variable = transparent = nur der Basis-Schatten. Umschalter „Höhenfarbe" (Body-
   Klasse alt-glow-off) schaltet Spur + Leuchten gemeinsam. */
.plane-marker { text-align: center; filter: drop-shadow(0 0 2px rgba(0,0,0,0.85)) drop-shadow(0 0 6px var(--alt-glow, transparent)) drop-shadow(0 0 3px var(--alt-glow, transparent)); }
.plane-marker .plane-rot { display: grid; place-items: center; transform-origin: 50% 50%; }
.plane-marker .plane-rot svg { display: block; }
/* Rotierbarer Icon-Kern (Flugzeug/Auto) — der Marker-Animator dreht ihn pro Frame flüssig mit. */
.rot-wrap { transform-origin: 50% 50%; will-change: transform; }
/* Personal-Filterleiste (Verfügbarkeit/Hub/Standort) — kompakt nebeneinander. */
.staff-filterbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; }
.staff-filt { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: var(--muted, #9fb3cc); }
.staff-filt select { font: inherit; }
/* Inline-Textbutton, der wie ein Link aussieht (z. B. „zurückbeordern" im Crew-Profil). */
.linklike { background: none; border: none; padding: 0; color: var(--accent, #7fd0ff); cursor: pointer; font: inherit; text-decoration: underline; }
.linklike:disabled { opacity: 0.5; cursor: default; }
/* Höhen-Farblegende (Kartensteuerung rechts): Skala aus altitudeColor-Swatches. Färbt die geflogene Spur. */
.altlgd-scale { margin-top: 5px; display: flex; flex-direction: column; gap: 3px; }
.altlgd-row { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--text); white-space: nowrap; }
.altlgd-sw { width: 15px; height: 10px; border-radius: 2px; box-shadow: inset 0 0 0 1px rgba(0,0,0,0.45); flex: none; }
.gv-marker { filter: drop-shadow(0 0 2px rgba(0,0,0,0.75)); }
.gv-marker img { pointer-events: none; }
.gv-speed { color: var(--muted); font-size: 11px; }
/* Topdown-Foto-Marker eines Flugmusters (statt gelbem Vektor-Icon). */
.plane-img { filter: drop-shadow(0 0 2px rgba(0,0,0,0.7)) drop-shadow(0 0 6px var(--alt-glow, transparent)) drop-shadow(0 0 3px var(--alt-glow, transparent)); }
.plane-img.plane-own { z-index: 1000 !important; }
.plane-img img { pointer-events: none; }
/* Eigener Flug auf der kombinierten „Aktiver Flug"-Karte: nach vorne holen (Leuchten kommt aus --alt-glow). */
.plane-marker.plane-own { z-index: 1000 !important; }
/* Höhenfarbe AUS: nur Basis-Schatten; eigenes Flugzeug wieder GOLDEN hervorgehoben (Kennzeichnung „du"). */
body.alt-glow-off .plane-marker { filter: drop-shadow(0 0 2px rgba(0,0,0,0.85)); }
body.alt-glow-off .plane-img { filter: drop-shadow(0 0 2px rgba(0,0,0,0.7)); }
body.alt-glow-off .plane-marker.plane-own, body.alt-glow-off .plane-img.plane-own { filter: drop-shadow(0 0 5px rgba(245,179,1,0.95)); }
/* Dunkles Theme für Leaflet-Tooltips/Popups der Live-Karte */
.leaflet-tooltip { background: var(--navy-700); color: var(--text); border: 1px solid var(--border); box-shadow: 0 2px 8px rgba(0,0,0,0.5); font-size: 12px; }
.leaflet-tooltip-left::before { border-left-color: var(--border); }
.leaflet-tooltip-right::before { border-right-color: var(--border); }
.leaflet-popup-content-wrapper, .leaflet-popup-tip { background: var(--navy-700); color: var(--text); border: 1px solid var(--border); }
.leaflet-popup-content { margin: 10px 12px; font-size: 13px; }
.leaflet-popup-content .map-popup strong { color: var(--gold); }
.leaflet-popup-close-button { color: var(--muted) !important; }
/* Ebenen-Umschalter (Standard/Topografisch/Satellit) im Dark-Theme der App. Das Umschalt-Icon kommt als Inline-SVG
   (das Leaflet-Standardbild layers.png liegt nicht im vendor-Ordner → ohne Override bliebe der Knopf leer). */
/* Layer-Menü (oben rechts) im Theme — transluzent + Blur wie die Zoom-Knöpfe, damit es über jeder Karte
   lesbar bleibt; theme-abhängiges Icon (Nutzervorgabe 2026-07-24). */
.leaflet-control-layers { background: rgba(14,20,32,.82); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  color: var(--text); border: 1px solid var(--border) !important; border-radius: 9px; box-shadow: 0 2px 10px rgba(0,0,0,0.45); }
.leaflet-control-layers-toggle {
  background-color: rgba(14,20,32,.82); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  border: 1px solid var(--border); border-radius: 9px; width: 34px; height: 34px;
  background-repeat: no-repeat; background-position: center; background-size: 20px 20px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e6ebf5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='12 2 22 8.5 12 15 2 8.5 12 2'/%3E%3Cpolyline points='2 15.5 12 22 22 15.5'/%3E%3C/svg%3E") !important;
}
.leaflet-control-layers-expanded { padding: 8px 10px; }
.leaflet-control-layers label { font-size: 13px; display: flex; align-items: center; gap: 7px; margin: 3px 0; cursor: pointer; color: var(--text); }
.leaflet-control-layers-selector { accent-color: var(--gold); }
.leaflet-control-layers-separator { border-top: 1px solid var(--border); margin: 6px -2px; }
:root[data-theme="light"] .leaflet-control-layers, :root[data-theme="light"] .leaflet-control-layers-toggle { background: rgba(255,255,255,.88); color: #1a2230; }
:root[data-theme="light"] .leaflet-control-layers-toggle {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231a2230' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='12 2 22 8.5 12 15 2 8.5 12 2'/%3E%3Cpolyline points='2 15.5 12 22 22 15.5'/%3E%3C/svg%3E") !important;
}
/* Karten-Zoom (+/-): ans Theme angepasst, aber TRANSLUZENT mit Blur, damit die Knöpfe über jeder Karte lesbar
   bleiben (Nutzervorgabe 2026-07-24 — GUI-Farbe + dynamische Anpassung an den Kartenhintergrund). */
.leaflet-control-zoom { border: none !important; box-shadow: 0 2px 10px rgba(0,0,0,.45); border-radius: 9px; overflow: hidden; }
.leaflet-control-zoom a {
  background: rgba(14,20,32,.72); -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px);
  color: var(--text); border-color: var(--border) !important;
  width: 30px; height: 30px; line-height: 30px; font-size: 19px; font-weight: 700;
  transition: background .15s, color .15s; }
.leaflet-control-zoom a:hover { background: rgba(14,20,32,.92); color: var(--gold); }
.leaflet-control-zoom a.leaflet-disabled { opacity: .45; }
:root[data-theme="light"] .leaflet-control-zoom a { background: rgba(255,255,255,.8); color: #1a2230; }
:root[data-theme="light"] .leaflet-control-zoom a:hover { background: rgba(255,255,255,.96); color: var(--gold); }
/* Zahlen-Eingabefelder: eigene themenfarbene ▲▼ statt der nicht umfärbbaren nativen Spinner (Nutzervorgabe). */
.num-stepper { display: inline-flex; vertical-align: middle; max-width: 100%; }
.num-stepper > input[type="number"] { -moz-appearance: textfield; appearance: textfield; }
.num-stepper > input[type="number"]::-webkit-inner-spin-button, .num-stepper > input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.num-stepper-btns { display: flex; flex-direction: column; margin-left: -1px; flex: 0 0 auto; }
.num-step { flex: 1 1 0; width: 18px; min-height: 9px; padding: 0; border: 1px solid var(--border); background: var(--navy-700); color: var(--muted);
  font-size: 7px; line-height: 1; cursor: pointer; display: grid; place-items: center; transition: background .12s, color .12s; }
.num-step-up { border-radius: 0 6px 0 0; border-bottom-width: 0; }
.num-step-down { border-radius: 0 0 6px 0; }
.num-step:hover { background: var(--gold); color: #10131a; }
.num-step:active { filter: brightness(.9); }
/* Flughafen-Geometrie-Editor */
.ageo-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 8px; }
.ageo-icao { width: 90px; text-transform: uppercase; letter-spacing: 1px; }
.ageo-sep { flex: 0 0 1px; align-self: stretch; background: var(--border); margin: 0 2px; }
.ageo-tools { display: inline-flex; gap: 4px; flex-wrap: wrap; }
.ageo-tools button { padding: 6px 9px; font-size: 12px; background: var(--navy-700); border: 1px solid var(--border); color: var(--text); border-radius: 7px; }
.ageo-tools button.active { background: var(--gold); color: #1b1400; border-color: var(--gold); font-weight: 700; }
.ageo-size { font-size: 12px; color: var(--muted); display: inline-flex; align-items: center; gap: 5px; }
.ageo-park.sel svg polygon { stroke: #fff; }
.ageo-park.ageo-cargo::after { content: '📦'; position: absolute; top: -8px; right: -10px; font-size: 12px; text-shadow: 0 0 2px #000; pointer-events: none; }
.ageo-park.ageo-gate::before { content: '🛫'; position: absolute; top: -9px; left: -10px; font-size: 12px; text-shadow: 0 0 2px #000; pointer-events: none; }
.ageo-pop { min-width: 160px; display: flex; flex-direction: column; gap: 6px; }
.ageo-pop label { font-size: 12px; display: flex; align-items: center; gap: 6px; }
.ageo-pop .danger { background: var(--danger); color: #fff; border: none; border-radius: 6px; padding: 5px 8px; cursor: pointer; }
.ageo-pop-name { width: 100%; }
.ageo-nato { color: #7fd0ff; font-weight: 600; }
.ageo-rwylbl { color: #ffe08a; font-weight: 800; font-size: 11px; text-shadow: 0 0 3px #000, 0 0 3px #000; white-space: nowrap; pointer-events: none; }
.ageo-legend { margin: 6px 0 10px; font-size: 12px; }
.ageo-legend summary { cursor: pointer; color: var(--gold); font-weight: 600; }
.ageo-legend ul { margin: 6px 0 4px 18px; padding: 0; line-height: 1.5; }
/* Heller Modus: das Ebenen-Ausklapp-Icon (Topografisch/Satellit …) braucht einen dunklen Strich, sonst unsichtbar. */
:root[data-theme="light"] .leaflet-control-layers-toggle {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2316203a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='12 2 22 8.5 12 15 2 8.5 12 2'/%3E%3Cpolyline points='2 15.5 12 22 22 15.5'/%3E%3C/svg%3E") !important;
}

/* Flüge-Menü (zwei Spalten: Auswahl-Karten + Streckenkarte) */
.fluege-grid { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 16px; align-items: start; }
.fluege-col { display: flex; flex-direction: column; }
.fluege-col .card { margin-bottom: 16px; }
.card label { display: block; font-size: 12px; color: var(--muted); }
.card label.mt, .card .mt { margin-top: 10px; }
.card select { width: 100%; margin-top: 6px; }
button.full { width: 100%; }
.muted-note { color: var(--muted); font-size: 13px; }
@media (max-width: 1100px) { .fluege-grid { grid-template-columns: 1fr; } }

/* Flüge: Flugart-Tabs + Hero-Kopf je Tab */
.fluege-tabs { margin-bottom: 12px; }
.fluege-hero { display: flex; align-items: center; gap: 16px; padding: 15px 18px; margin-bottom: 16px;
  border: 1px solid var(--border); border-left: 4px solid var(--fh-accent, var(--gold)); border-radius: var(--radius);
  background: var(--navy-800); position: relative; overflow: hidden; }
.fluege-hero::after { content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(90deg, var(--fh-accent, var(--gold)) 0%, transparent 22%); opacity: 0.08; }
.fluege-hero .fh-icon { flex: 0 0 auto; width: 54px; height: 54px; display: flex; align-items: center; justify-content: center;
  font-size: 28px; border-radius: 14px; background: rgba(255,255,255,0.04); box-shadow: inset 0 0 0 1.5px var(--fh-accent, var(--gold)); }
.fluege-hero .fh-body { flex: 1 1 auto; min-width: 0; }
.fluege-hero .fh-title { font-size: 18px; font-weight: 700; color: var(--text); }
.fluege-hero .fh-desc { margin-top: 3px; font-size: 13px; color: var(--muted); }
.fluege-hero .fh-side { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; gap: 6px; text-align: right; }
.fluege-hero .fh-badge { font-size: 11px; font-weight: 600; color: var(--text); background: var(--navy-600);
  border: 1px solid var(--border); border-radius: 999px; padding: 3px 10px; max-width: 320px; }
.fluege-hero .fh-stat { font-size: 12px; color: var(--muted); }
.hero-pax { --fh-accent: #f5b301; }
.hero-cargo { --fh-accent: #7fd0ff; }
.hero-training { --fh-accent: #5fd29a; }
.hero-check { --fh-accent: #b9c4dc; }
.hero-sonder { --fh-accent: #b98cff; }
.hero-scenic { --fh-accent: #c08af5; }
.hero-charter { --fh-accent: #8a97b8; }
/* Chancen & Risiken (Geschäftschancen-Entscheidungen) */
.chance-card .chance-stats { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 8px 0; font-size: 13px; }
.chance-card .chance-stats > span { color: var(--muted); }
.chance-card .chance-stats strong { color: var(--text); font-variant-numeric: tabular-nums; }
.chance-pos { color: var(--ok); } .chance-pos strong, strong.chance-pos { color: var(--ok); }
.chance-neg { color: #e06c6c; } .chance-neg strong, strong.chance-neg { color: #e06c6c; }
.chance-mods { display: flex; flex-wrap: wrap; gap: 8px; }
.chance-mod { padding: 4px 10px; border-radius: 999px; border: 1px solid var(--ok); background: rgba(95,210,154,0.12); font-size: 12px; }
/* Saison-Tag an Strecken (Profil + aktueller Faktor) */
.season-tag { background: rgba(122,162,255,0.14); border-color: #7aa2ff; color: var(--text); }
/* Rundflug (Sightseeing): Sehenswürdigkeiten-Chips + Info */
.scenic-info { display: flex; flex-direction: column; gap: 4px; }
.scenic-wps { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; font-size: 13px; }
.scenic-wp-list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.scenic-chip { display: inline-flex; align-items: center; gap: 5px; padding: 3px 9px; border-radius: 999px; font-size: 12px; background: rgba(192,138,245,0.14); border: 1px solid #c08af5; color: var(--text); }
.scenic-chip .scwp-del { border: none; background: transparent; color: var(--muted); cursor: pointer; font-size: 12px; line-height: 1; padding: 0; }
.scenic-chip .scwp-del:hover { color: #e06c6c; }
/* Ziehbarer, nummerierter Wegpunkt-Marker auf der Rundflug-Karte (Linksklick ziehen, Rechtsklick entfernt). */
.scenic-wp-marker { background: transparent; border: none; cursor: grab; }
.scenic-wp-marker span { display: flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 50%; background: #c08af5; color: #1a1330; border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,0.45); font-size: 11px; font-weight: 700; }
.scenic-wp-marker:active { cursor: grabbing; }
@media (max-width: 700px) { .fluege-hero { flex-wrap: wrap; } .fluege-hero .fh-side { align-items: flex-start; text-align: left; } }

/* Admin-Kachelmenü */
.tile-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.tile {
  text-align: left;
  background: var(--navy-800);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
  color: var(--text);
  display: flex;
  flex-direction: column;
  gap: 8px;
  transition: border-color 0.15s, transform 0.05s;
}
.tile:hover { border-color: var(--gold); background: var(--navy-700); }
.tile:active { transform: translateY(1px); }
.tile-ico { font-size: 26px; }
.tile-title { font-size: 15px; font-weight: 600; }
.tile-desc { font-size: 12px; color: var(--muted); line-height: 1.4; }
.link-back { background: transparent; color: var(--silver-dim); border: none; padding: 0 0 12px; font-size: 13px; }
.link-back:hover { color: var(--gold); background: transparent; }

/* ===== Benutzerverwaltung (Admin) ===== */
/* Anlegen-Karte */
.user-create .uc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 14px; }
.user-create .uc-grid label { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--muted); }
.user-create .uc-grid input, .user-create .uc-grid select { padding: 9px 10px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; color: var(--text); font-size: 13px; width: 100%; }
.user-create .uc-foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 16px; flex-wrap: wrap; }
.user-create .uc-foot p { margin: 0; flex: 1; min-width: 160px; }
.user-create .uc-foot button { padding: 10px 20px; }

/* Such-/Filterleiste */
.user-toolbar { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; flex-wrap: wrap; }
.user-search { position: relative; flex: 1; min-width: 200px; }
.user-search .us-ico { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); font-size: 13px; opacity: 0.7; pointer-events: none; }
.user-search input { width: 100%; padding: 9px 12px 9px 34px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 999px; color: var(--text); font-size: 13px; }
.user-filter { display: flex; gap: 8px; flex-wrap: wrap; }
.uf-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 999px; color: var(--muted); font-size: 12px; font-weight: 600; }
.uf-chip:hover { background: var(--navy-600); color: var(--text); }
.uf-chip.active { background: var(--navy-600); color: var(--text); border-color: var(--rc, var(--gold)); box-shadow: inset 0 0 0 1px var(--rc, var(--gold)); }
.uf-chip .uf-n { font-size: 11px; padding: 1px 7px; border-radius: 999px; background: var(--navy-900); color: var(--muted); }
.uf-chip.active .uf-n { color: var(--rc, var(--gold)); }

/* Benutzer-Karten (Roster) */
.user-roster { display: flex; flex-direction: column; gap: 10px; }
.ur-card { background: var(--navy-700); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; transition: border-color 0.15s; }
.ur-card[open] { border-color: var(--gold-dim); }
.ur-card:hover { border-color: var(--silver-dim); }
.ur-sum { display: flex; align-items: center; gap: 16px; padding: 12px 16px; cursor: pointer; list-style: none; }
.ur-sum::-webkit-details-marker { display: none; }

.ur-portrait { width: 48px; height: 48px; flex: 0 0 auto; border-radius: 50%; overflow: hidden; background: var(--navy-900); display: grid; place-items: center; box-shadow: 0 0 0 2px var(--rc, var(--border)); }
.ur-portrait .avatar-svg { width: 100%; height: 100%; display: block; }
.ur-initials { font-size: 17px; font-weight: 700; color: var(--rc, var(--gold)); }

.ur-idblock { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1 1 150px; }
.ur-name { font-size: 15px; font-weight: 600; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ur-login { font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ur-tag { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; padding: 2px 7px; border-radius: 999px; }
.ur-tag-main { background: rgba(245,179,1,0.16); color: var(--gold); border: 1px solid rgba(245,179,1,0.4); }
.ur-tag-you { background: var(--navy-600); color: var(--silver-dim); border: 1px solid var(--border); }

.ur-badges { display: flex; gap: 6px; flex-wrap: wrap; flex: 0 1 auto; }
.ur-badge { font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: 999px; white-space: nowrap; border: 1px solid var(--border); background: var(--navy-800); color: var(--muted); }
.ur-role { color: var(--rc, var(--text)); border-color: var(--rc, var(--border)); background: color-mix(in srgb, var(--rc, var(--navy-600)) 14%, var(--navy-800)); }
.ur-lic { color: var(--silver); }
.ur-fi { color: var(--ok); border-color: rgba(95,210,154,0.4); background: rgba(95,210,154,0.12); }

.ur-metrics { display: flex; gap: 20px; margin-left: auto; flex: 0 0 auto; }
.ur-metric { display: flex; flex-direction: column; gap: 3px; align-items: flex-end; min-width: 56px; }
.urm-val { font-size: 13px; font-weight: 700; }
.urm-lbl { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; }
.ur-repcol { align-items: stretch; min-width: 70px; }
.ur-repcol .urm-lbl { text-align: right; }
.urm-bar { height: 6px; border-radius: 999px; background: var(--navy-900); overflow: hidden; border: 1px solid var(--border); }
.urm-bar i { display: block; height: 100%; border-radius: 999px; }

.ur-status { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; }
.ur-status.on { background: var(--ok); box-shadow: 0 0 6px rgba(95,210,154,0.8); }
.ur-status.off { background: var(--silver-dim); opacity: 0.5; }
.ur-chev { color: var(--muted); font-size: 13px; transition: transform 0.15s; flex: 0 0 auto; }
.ur-card[open] .ur-chev { transform: rotate(90deg); color: var(--gold); }

.ur-edit { padding: 4px 16px 18px; border-top: 1px solid var(--border); }
.ur-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px 14px; margin-top: 14px; }
.ur-form label { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--muted); }
.ur-form input, .ur-form select { padding: 8px 9px; background: var(--navy-800); border: 1px solid var(--border); border-radius: 7px; color: var(--text); font-size: 13px; width: 100%; }
.ur-actfield { grid-column: 1 / -1; }
.ur-toggle { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text); padding-top: 2px; }
.ur-toggle input[type="checkbox"] { width: 16px; height: 16px; flex: 0 0 auto; }
.ur-actions { display: flex; gap: 10px; align-items: center; margin-top: 16px; }
.ur-actions button:first-child { padding: 9px 22px; }

/* Gelöschte Benutzer */
.del-summary { cursor: pointer; font-weight: 600; }
.del-list { display: flex; flex-direction: column; gap: 8px; }
.del-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 9px; flex-wrap: wrap; }
.del-info { min-width: 0; }

@media (max-width: 900px) {
  .ur-metrics { width: 100%; order: 5; margin-left: 0; justify-content: flex-start; gap: 24px; }
  .ur-metric { align-items: flex-start; }
  .ur-repcol .urm-lbl { text-align: left; }
}

/* Strecken / Hubs */
button.mini { padding: 4px 9px; font-size: 13px; }
/* Flotte: Zustandsbalken */
.cond-row { display: flex; gap: 8px; }
.cond { display: flex; align-items: center; gap: 4px; }
.cond-lbl { font-size: 10px; color: var(--muted); width: 10px; }
.cond-track { position: relative; width: 44px; height: 7px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 4px; overflow: hidden; }
.cond-fill { height: 100%; }
/* Vorschau: projizierter Gesundheits-Zuwachs (nach der geplanten Arbeit) als gestreiftes grünes Segment. */
.cond-gain { position: absolute; top: 0; bottom: 0; background: repeating-linear-gradient(45deg, rgba(74,222,128,.6) 0 3px, rgba(74,222,128,.22) 3px 6px); border-left: 1px solid var(--ok); }
/* Analytics-Dashboards */
.an-bars { display: flex; flex-direction: column; gap: 12px; }
.an-bar-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 4px; }
.an-bar-label { font-weight: 600; }
.an-bar-val { font-variant-numeric: tabular-nums; font-weight: 700; }
.an-bar-val.pos { color: var(--ok); }
.an-bar-val.neg { color: var(--danger); }
.an-bar-track { height: 9px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 5px; overflow: hidden; }
.an-bar-track span { display: block; height: 100%; border-radius: 5px; }
.an-bar-track span.pos { background: var(--ok); }
.an-bar-track span.neg { background: var(--danger); }
.an-bar-sub { font-size: 12px; color: var(--muted); margin-top: 3px; }
.an-utils { display: flex; flex-direction: column; gap: 7px; margin: 6px 0 4px; }
.an-util { display: flex; align-items: center; gap: 10px; }
.an-util-lbl { flex: 0 0 56px; font-size: 13px; color: var(--muted); }
.an-util-track { flex: 1; height: 9px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 5px; overflow: hidden; }
.an-util-track span { display: block; height: 100%; border-radius: 5px; }
.an-util-val { flex: 0 0 56px; text-align: right; font-variant-numeric: tabular-nums; font-size: 13px; }
.an-rings { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; margin: 10px 0; }
.an-trends { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; margin-top: 8px; }
.an-table { width: 100%; border-collapse: collapse; }
.an-table th, .an-table td { padding: 7px 10px; text-align: left; border-bottom: 1px solid var(--border); font-variant-numeric: tabular-nums; }
.an-table th { color: var(--muted); font-weight: 600; font-size: 13px; }
.an-hubhead { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.an-h4 { margin: 12px 0 4px; font-size: 14px; color: var(--muted); }
.an-satrow { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.an-chip { padding: 4px 10px; border: 1px solid var(--border); border-radius: 999px; font-size: 13px; background: var(--navy-900); }
.ac-thumb { width: 52px; height: 34px; border-radius: 6px; border: 1px solid var(--border); vertical-align: middle; object-fit: cover; }
/* Gebrauchtmarkt: Kopfzeile mit Musterbild + Titel; Detail-Modal mit größerem Musterbild. */
.mkt-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.mkt-head .ac-thumb { width: 72px; height: 46px; flex: 0 0 auto; }
.ac-detail-photo { margin: 8px 0; }
.ac-detail-photo img { width: 100%; max-height: 220px; object-fit: cover; border-radius: 10px; border: 1px solid var(--border); background: var(--navy-900); }
.badge-ok { background: rgba(95,210,154,0.15); color: var(--ok); border-color: rgba(95,210,154,0.4); }
.badge-warn { background: rgba(245,179,1,0.15); color: var(--gold); border-color: rgba(245,179,1,0.4); }
.badge-bad { background: rgba(255,107,107,0.15); color: var(--danger); border-color: rgba(255,107,107,0.45); }
.badge-info { background: rgba(78,161,255,0.15); color: var(--accent, #38bdf8); border-color: rgba(78,161,255,0.4); }
.cf-fin { border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; }
.cf-fin summary { cursor: pointer; font-weight: 600; }
.cf-fin-toggle { display: inline-flex; align-items: center; gap: 6px; }
.cf-fin-body label { display: block; margin-top: 6px; }
.btn-action { background: linear-gradient(135deg, var(--gold), var(--gold-dim)); color: var(--gold-ink); border: none; border-radius: 999px; padding: 7px 14px; font-size: 12px; font-weight: 700; white-space: nowrap; box-shadow: 0 2px 8px rgba(245,179,1,0.25); }
.btn-action:hover { filter: brightness(1.08); }
.ac-photo { width: 100%; max-height: 240px; object-fit: cover; border-radius: 10px; border: 1px solid var(--border); background: var(--navy-900); }
.cond-detail { display: flex; flex-direction: column; gap: 8px; }
.cond-line { display: grid; grid-template-columns: 90px 1fr 44px; align-items: center; gap: 10px; font-size: 13px; }
.cond-line .cond-track { width: 100%; height: 9px; }
.insp-row { display: flex; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
.insp-row > span:first-child { width: 130px; }

/* Kauf & Verkauf */
.acc { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }

/* „Meine Flugzeuge" — immersive Flottenkarte */
.fz-card { background: linear-gradient(180deg, var(--navy-700), var(--navy-800, var(--navy-700))); }
.fz-hero { display: flex; align-items: center; gap: 14px; }
.fz-thumb .ac-thumb { width: 92px; height: 58px; border-radius: 8px; }
.fz-hero-main { flex: 1 1 auto; min-width: 0; }
.fz-reg { font-size: 22px; font-weight: 800; letter-spacing: .5px; }
.fz-type { font-size: 13px; }
.fz-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.fz-badge { font-size: 11px; padding: 2px 8px; border-radius: 999px; background: rgba(255,255,255,.08); border: 1px solid var(--border); white-space: nowrap; }
.fz-badge-ok { color: #5fd29a; border-color: rgba(95,210,154,.4); }
.fz-badge-warn { color: #f5b301; border-color: rgba(245,179,1,.4); }
.fz-badge-bad { color: #e8736b; border-color: rgba(232,115,107,.4); }
.fz-ring { flex: 0 0 auto; width: 72px; height: 72px; border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; }
.fz-ring::before { content: ''; position: absolute; inset: 8px; border-radius: 50%; background: var(--navy-700); }
.fz-ring span { position: relative; font-weight: 800; font-size: 16px; }
.fz-ring small { position: relative; font-size: 9px; color: var(--muted); text-transform: uppercase; letter-spacing: .5px; }
.fz-gauges { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px 16px; margin-top: 14px; }
.fz-gauge-head { display: flex; justify-content: space-between; font-size: 12px; color: var(--muted); gap: 8px; }
.fz-gauge-head span:last-child { color: var(--text, #e8eefc); font-weight: 600; }
.fz-bar { display: block; height: 6px; border-radius: 4px; background: rgba(255,255,255,.08); overflow: hidden; margin-top: 4px; }
.fz-bar-fill { display: block; height: 100%; border-radius: 4px; transition: width .3s; }
.fz-cbars { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 4px 14px; margin-top: 12px; }
.fz-cbar { display: flex; align-items: center; gap: 6px; font-size: 11px; }
.fz-cbar-l { flex: 0 0 auto; color: var(--muted); min-width: 66px; }
.fz-cbar-track { flex: 1 1 auto; height: 5px; border-radius: 3px; background: rgba(255,255,255,.08); overflow: hidden; }
.fz-cbar-fill { display: block; height: 100%; }
.fz-cbar-v { flex: 0 0 auto; font-weight: 600; min-width: 34px; text-align: right; }
.fz-findings { margin-top: 12px; padding: 12px; border-radius: var(--radius); background: rgba(245,179,1,.08); border: 1px solid rgba(245,179,1,.28); }
.fz-finding { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 4px 0; }
.fz-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.fz-fuel-opts { display: flex; flex-direction: column; gap: 6px; margin: 10px 0; }
.fz-fuel-opt { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; cursor: pointer; }
.fz-fuel-opt span:nth-child(2) { flex: 1 1 auto; }
.fz-fuel-locked { opacity: .5; cursor: not-allowed; }

/* Verlinkte Crew unter der Flugkarte + Crew-Kurzprofil-Modal */
.crew-link-group { margin-top: 8px; }
.crew-link-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
.crew-link { display: flex; align-items: center; gap: 8px; padding: 6px 10px 6px 6px; border: 1px solid var(--border); border-radius: 999px; background: var(--navy-700); cursor: pointer; transition: border-color .15s, transform .1s; }
.crew-link:hover { border-color: var(--gold); transform: translateY(-1px); }
.crew-link-av { width: 34px; height: 34px; border-radius: 50%; overflow: hidden; flex: 0 0 auto; display: inline-flex; }
.crew-link-av svg { width: 100%; height: 100%; }
.crew-link-info { display: flex; flex-direction: column; line-height: 1.15; text-align: left; }
.crew-link-name { font-weight: 600; font-size: 13px; }
.crew-modal { display: flex; gap: 16px; align-items: flex-start; margin-bottom: 10px; }
.crew-modal-av { width: 120px; height: 120px; border-radius: 12px; overflow: hidden; flex: 0 0 auto; background: var(--navy-700); border: 1px solid var(--border); }
/* Hochgeladenes Foto randlos zeigen (Nutzervorgabe): kein Rahmen/Hintergrund, sonst wirkt das Bild „eingerahmt".
   Zusätzlich (Nutzerbefund 2026-08-12): Der Kasten war QUADRATISCH (120×120), das Porträt-SVG aber hochkant
   (viewBox 200×330) — links/rechts füllte avExtBg den Letterbox-Rand dunkelblau („blauer Rahmen"). Der
   Foto-Kasten übernimmt deshalb das Seitenverhältnis des Bildes, sodass nur das Bild selbst zu sehen ist. */
.crew-modal-av.is-photo { border: none; background: none; height: auto; aspect-ratio: 200 / 330; }
.crew-modal-av svg { width: 100%; height: 100%; }
.crew-modal-meta { flex: 1 1 auto; min-width: 0; }
.crew-modal-bar { display: flex; align-items: center; gap: 8px; font-size: 12px; margin: 4px 0; }
.crew-modal-bar > span:first-child { min-width: 92px; color: var(--muted); }
.crew-modal-bar .apc-bar { flex: 1 1 auto; }

/* Piloten-Charakterbogen (D&D-Stil) + Talente */
.cs-sheet { background: linear-gradient(180deg, rgba(245,179,1,.05), var(--navy-700)); }
.cs-head { display: flex; gap: 16px; align-items: center; }
.cs-portrait { width: 96px; height: 96px; border-radius: 12px; overflow: hidden; flex: 0 0 auto; background: var(--navy-800, var(--navy-700)); border: 2px solid var(--gold); }
.cs-portrait svg { width: 100%; height: 100%; }
.cs-ident { flex: 1 1 auto; min-width: 0; }
.cs-name { font-size: 24px; font-weight: 800; letter-spacing: .5px; }
.cs-class { color: var(--gold); font-weight: 700; margin: 2px 0; }
.cs-lvl { font-size: 12px; color: var(--muted); }
.cs-xp { margin-top: 6px; max-width: 340px; }
.cs-abilities { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; margin-top: 12px; align-items: start; }
.cs-ability { position: relative; text-align: center; padding: 12px 8px 10px; border: 1px solid var(--border); border-radius: 12px; background: var(--navy-700); }
.cs-ab-label { font-size: 12px; color: var(--muted); }
.cs-ab-score { font-size: 30px; font-weight: 800; line-height: 1.1; }
.cs-ab-max { font-size: 13px; color: var(--muted); font-weight: 600; }
.cs-ab-sub { font-size: 11px; color: var(--muted); overflow-wrap: break-word; hyphens: auto; }
.cs-ab-label { overflow-wrap: break-word; hyphens: auto; }
.cs-ab-plus { position: absolute; top: 6px; right: 6px; }
/* Auf-/zuklappbares Erklärfeld je Attribut (touch-freundlich, nicht nur Hover-Tooltip). */
.cs-ab-info { margin-top: 7px; }
.cs-ab-info summary { cursor: pointer; font-size: 10.5px; color: var(--gold); list-style: none; user-select: none; }
.cs-ab-info summary::-webkit-details-marker { display: none; }
.cs-ab-info summary::before { content: 'ⓘ '; }
.cs-ab-info[open] summary::before { content: '▾ '; }
/* Info-Text im Blocksatz mit automatischer Silbentrennung (lang="de") — lange Wörter brechen um statt
   über den Rand zu ragen (Nutzervorgabe 2026-07-22). */
.cs-ab-info p { text-align: justify; hyphens: auto; overflow-wrap: break-word; font-size: 11px; color: var(--muted); line-height: 1.4; margin: 6px 0 0; }
.feat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; margin-top: 8px; }
.feat-card { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--navy-700); }
.feat-grid-pick .feat-card { cursor: pointer; transition: border-color .15s, transform .1s; }
.feat-grid-pick .feat-card:hover { border-color: var(--gold); transform: translateY(-1px); }
.feat-ico { font-size: 26px; flex: 0 0 auto; line-height: 1; }
.feat-body { flex: 1 1 auto; min-width: 0; }
.feat-name { font-weight: 700; }
.feat-eff { font-size: 11px; color: var(--gold); margin-top: 4px; }
.feat-pick { align-self: center; color: var(--gold); font-weight: 700; font-size: 12px; white-space: nowrap; }
/* Personal-Charakterbogen: Kategorie-Blöcke + Merkmals-Chips */
.cs-charblock { margin-top: 10px; }
.cs-charcat { font-size: 12px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .5px; margin-bottom: 4px; }
/* Gestufte Merkmale (I–III) + Bindungen (Score-Balken) im Charakterbogen */
.cs-pips { font-size: 9px; letter-spacing: 1px; color: #f5b301; vertical-align: middle; }
.cs-bonds { display: flex; flex-direction: column; gap: 8px; }
.cs-bond { border: 1px solid var(--border); border-radius: 10px; padding: 8px 10px; background: rgba(255,255,255,.02); }
.cs-bond-good { border-left: 3px solid #5fd29a; }
.cs-bond-bad { border-left: 3px solid #e8736b; }
.cs-bond-head { font-size: 13px; }
.cs-bond-ico { font-size: 15px; }
.cs-bond-scale { position: relative; height: 6px; margin: 5px 0; border-radius: 4px; background: rgba(255,255,255,.08); overflow: hidden; }
.cs-bond-fill { position: absolute; top: 0; bottom: 0; }
.cs-bond-fill.cs-bond-pos { left: 50%; background: linear-gradient(90deg, #5fd29a, #3bd07a); }
.cs-bond-fill.cs-bond-neg { right: 50%; background: linear-gradient(90deg, #e8736b, #d9463a); }
/* Freund/Feind-Hinweis auf den Crew-Auswahl-Kacheln */
.apc-bond { display: inline-block; margin-top: 3px; font-size: 10px; font-weight: 700; padding: 1px 6px; border-radius: 999px; white-space: nowrap; }
.apc-bond-friend { color: #eafff3; background: rgba(95,210,154,.22); }
.apc-bond-foe { color: #ffecec; background: rgba(232,115,107,.22); }
.apc-tile.apc-friend { border-color: rgba(95,210,154,.55); }
.apc-tile.apc-foe { border-color: rgba(232,115,107,.55); }
.char-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.char-chip { font-size: 11px; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--border); background: rgba(255,255,255,.06); }
.char-chip.char-trait { border-color: rgba(95,210,154,.5); }
.char-chip.char-ideal { border-color: rgba(127,208,255,.5); }
.char-chip.char-bond { border-color: rgba(245,179,1,.5); }
.char-chip.char-flaw { border-color: rgba(232,115,107,.5); }
/* Personal-Detail: Charakterbogen links, Fähigkeiten rechts daneben */
.staff-cs-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
.staff-cs-cols > .card { margin: 0; }
@media (max-width: 900px) { .staff-cs-cols { grid-template-columns: 1fr; } }
/* Mechaniker-Auswahl im Wartungspanel */
.mech-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 8px; margin-top: 8px; }
.mech-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.mech-chips .char-chip { font-size: 10px; padding: 1px 6px; }

/* Wartungsaufträge */
.job-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; margin-top: 12px; }
.job-card { background: var(--navy-700); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; display: flex; flex-direction: column; gap: 8px; }
.job-title { font-weight: 600; }
.job-meta { font-size: 12px; color: var(--muted); }

.pool-row { background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; }
.pool-row > summary { padding: 10px 12px; display: grid; grid-template-columns: 1.4fr 1.4fr 0.8fr; gap: 10px; align-items: center; font-size: 13px; }
.pool-row > summary { cursor: pointer; list-style: none; }
.pool-row > summary::-webkit-details-marker { display: none; }
.pool-label { display: flex; align-items: center; gap: 6px; }
.pool-caret { display: inline-block; width: 10px; flex: none; font-size: 9px; color: var(--muted); transition: transform 0.15s; }
.pool-caret::before { content: '▶'; }
.pool-row[open] > summary .pool-caret { transform: rotate(90deg); }
.pool-row > summary > span:last-child { text-align: right; }
.pool-comp { padding: 4px 12px 10px 28px; display: flex; flex-direction: column; gap: 4px; }
.pool-comp-row { display: flex; justify-content: space-between; font-size: 13px; color: var(--muted); }
.pool-comp-row > span:last-child { color: var(--text); }

/* Prognostizierte P&L je Flugstunde (CEO-Kostenüberblick) */
.pnl-list { display: flex; flex-direction: column; gap: 12px; margin-top: 10px; }
.pnl-group { display: flex; flex-direction: column; gap: 5px; }
.pnl-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-weight: 600; font-size: 13.5px; padding-bottom: 4px; border-bottom: 1px solid var(--border); }
.pnl-group .pool-comp-row, .pnl-group .pool-row { margin-left: 8px; }
.pnl-result { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 11px 14px; border-radius: 8px; border: 1px solid var(--border); font-size: 14px; margin-top: 2px; }
.pnl-result strong { font-size: 17px; }
.pnl-result.pos { background: rgba(95,210,154,0.12); border-color: var(--ok); }
.pnl-result.pos strong { color: var(--ok); }
.pnl-result.neg { background: rgba(255,107,107,0.12); border-color: var(--danger); }
.pnl-result.neg strong { color: var(--danger); }

/* Bestenlisten */
/* Gruppen-Filter (Chips) */
.lb-groupchips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.lb-chip { background: var(--navy-700); border: 1px solid var(--border); color: var(--text); padding: 6px 14px; border-radius: 999px; cursor: pointer; font-size: 13px; }
.lb-chip:hover { border-color: var(--gold); }
.lb-chip.active { background: var(--gold); color: var(--navy-900); border-color: var(--gold); font-weight: 600; }

/* Spotlight-Karte (Podium der gewählten Kategorie) */
.lb-spotlight { border-top: 3px solid var(--lb-accent, var(--gold)); }
.lb-sp-head { display: flex; align-items: center; gap: 10px; }
.lb-sp-head h3 { margin: 0; flex: 1; }
.lb-sp-ico { font-size: 22px; }
.lb-sp-count { color: var(--muted); font-size: 12px; white-space: nowrap; }

/* Podium: 2. links · 1. Mitte · 3. rechts; gestaffelte Sockelhöhe */
.lb-podium { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; align-items: end; margin: 14px 0; }
.lb-pedestal { display: flex; flex-direction: column; align-items: center; gap: 4px; text-align: center; min-width: 0; }
.lb-pedestal.empty { opacity: 0.4; }
.lb-ped-face { width: 60px; height: 60px; border-radius: 50%; overflow: hidden; background: var(--navy-900); border: 3px solid var(--border); }
.lb-pedestal.gold .lb-ped-face { width: 76px; height: 76px; border-color: #f5b301; }
.lb-pedestal.silver .lb-ped-face { border-color: #c9d2dc; }
.lb-pedestal.bronze .lb-ped-face { border-color: #cd7f32; }
.lb-ped-face .avatar-svg { width: 100%; height: 100%; }
.lb-ped-name { font-size: 13px; font-weight: 600; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lb-ped-val { font-size: 13px; font-weight: 700; color: var(--gold); }
.lb-ped-base { width: 100%; border-radius: 8px 8px 0 0; background: var(--navy-700); display: flex; align-items: center; justify-content: center; font-size: 22px; margin-top: 2px; }
.lb-pedestal.gold .lb-ped-base { height: 66px; background: linear-gradient(180deg, rgba(245,179,1,.25), var(--navy-700)); }
.lb-pedestal.silver .lb-ped-base { height: 46px; }
.lb-pedestal.bronze .lb-ped-base { height: 32px; }
.lb-mine-pod .lb-ped-name { color: var(--gold); }

/* Eigene Platzierung (immer sichtbar, auch außerhalb der Top 10) */
.lb-mine { display: grid; grid-template-columns: 28px 1fr auto; align-items: center; gap: 10px; margin-top: 10px; padding: 10px 12px; border-radius: 8px; background: var(--navy-600); outline: 1px solid var(--lb-accent, var(--gold)); font-weight: 600; }
.lb-mine .lb-pos { text-align: center; }
.lb-mine .lb-val { color: var(--gold); font-weight: 700; }
.lb-mine-none { display: block; text-align: center; color: var(--muted); font-weight: 400; }

/* Liste (Ränge 4–10) */
.lb-list { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.lb-row { display: grid; grid-template-columns: 28px 30px 1fr auto; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 8px; background: var(--navy-700); font-size: 14px; }
.lb-row .lb-pos { font-size: 16px; text-align: center; color: var(--muted); }
.lb-face { width: 30px; height: 30px; border-radius: 50%; overflow: hidden; background: var(--navy-900); border: 1px solid var(--border); }
.lb-face .avatar-svg { width: 100%; height: 100%; }
.lb-row .lb-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lb-row .lb-val { font-weight: 700; color: var(--gold); }
.lb-me { outline: 1px solid var(--gold); background: var(--navy-600); }
.lb-me .lb-name { color: var(--gold); }

/* Wettbewerbe */
.wb-section { margin: 22px 0 8px; }
.wb-tag { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 10px; background: var(--navy-600); border: 1px solid var(--border); color: var(--muted); white-space: nowrap; }
.wb-tag.wb-on { background: rgba(95,210,154,0.16); border-color: var(--ok); color: var(--ok); }
.wb-tag.wb-soon { background: rgba(245,179,1,0.16); border-color: var(--gold); color: var(--gold); }
.wb-tag.wb-end { background: var(--navy-600); border-color: var(--border); color: var(--muted); }
.wb-tag.wb-done { background: rgba(122,162,255,0.16); border-color: #7aa2ff; color: #7aa2ff; }
.wb-meta { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0; }
.wb-chip { padding: 3px 10px; border: 1px solid var(--border); border-radius: 999px; font-size: 13px; background: var(--navy-900); }
.wb-list { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.wb-row { display: grid; grid-template-columns: 28px 30px 1fr auto; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 8px; background: var(--navy-700); font-size: 14px; }
.wb-row .wb-pos { font-size: 16px; text-align: center; color: var(--muted); }
.wb-face { width: 30px; height: 30px; border-radius: 50%; overflow: hidden; background: var(--navy-900); border: 1px solid var(--border); }
.wb-face .avatar-svg { width: 100%; height: 100%; }
.wb-row .wb-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wb-row .wb-val { font-weight: 700; color: var(--gold); }
.wb-row.wb-me { outline: 1px solid var(--gold); background: var(--navy-600); }
.wb-row.wb-me .wb-name { color: var(--gold); }
.wb-mine { display: grid; grid-template-columns: 28px 1fr auto; align-items: center; gap: 10px; padding: 8px 10px; margin-top: 6px; border-radius: 8px; background: var(--navy-600); outline: 1px solid var(--gold); font-size: 14px; }
.wb-mine .wb-pos { text-align: center; color: var(--gold); }
.wb-mine .wb-val { font-weight: 700; color: var(--gold); }
.wb-admin { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.wb-check { display: flex; align-items: center; gap: 8px; }
.wb-auto { margin-top: 8px; font-size: 11px; opacity: 0.85; }
/* Gestaffelte Preise je Platz (Admin-Formular) */
.wb-prizes { margin-top: 12px; }
.wb-prizes-h { margin: 0 0 8px 0; font-size: 13px; }
.wb-prize-row { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin: 5px 0; }
.wb-prize-rk { flex: 0 0 96px; font-size: 13px; }
.wb-prize-row label { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; }
.wb-prize-row input { width: 110px; }
/* Wettbewerbs-Sieger (Ergebnisseite) */
.wb-winners-h { margin: 12px 0 6px; font-size: 13px; color: var(--gold); }
.wb-winners { display: flex; flex-direction: column; gap: 6px; margin-bottom: 6px; }
.wb-winner { display: flex; align-items: center; gap: 8px; padding: 6px 8px; background: var(--navy-800); border: 1px solid var(--border); border-radius: 8px; }
.wb-winner.wb-me { border-color: var(--gold); }
.wb-winner .wb-medal { flex: 0 0 auto; font-size: 15px; }
.wb-winner .wb-face { flex: 0 0 24px; width: 24px; height: 24px; }
.wb-winner .wb-face svg { width: 100%; height: 100%; }
.wb-winner .wb-name { flex: 1; font-size: 13px; }
.wb-winner .wb-prize { flex: 0 0 auto; color: var(--gold); font-weight: 700; font-size: 12px; }
.coop-goal { margin: 10px 0 6px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--navy-700); }
.coop-goal.coop-reached { border-color: var(--ok); background: rgba(95,210,154,0.10); }
.coop-bar-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 6px; font-size: 13px; flex-wrap: wrap; }
.coop-status { font-weight: 700; }
.coop-goal.coop-reached .coop-status { color: var(--ok); }
.coop-num { color: var(--muted); font-variant-numeric: tabular-nums; }
.coop-bar { height: 12px; border-radius: 7px; background: var(--navy-900); overflow: hidden; }
.coop-fill { height: 100%; background: linear-gradient(90deg, var(--gold), var(--gold-dim)); transition: width .4s ease; }
.coop-goal.coop-reached .coop-fill { background: linear-gradient(90deg, var(--ok), #3fb98a); }
.coop-contrib { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.coop-contrib-row { display: grid; grid-template-columns: 30px 1fr auto; align-items: center; gap: 10px; padding: 7px 10px; border-radius: 8px; background: var(--navy-700); font-size: 14px; }
.coop-contrib-row .wb-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.coop-contrib-row .wb-val { font-weight: 700; color: var(--gold); }
.coop-contrib-row.wb-me { outline: 1px solid var(--gold); background: var(--navy-600); }
.coop-contrib-row.wb-me .wb-name { color: var(--gold); }
/* Wirtschaftslage / Marktklima-Widget */
.market-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.market-cell { padding: 10px; border: 1px solid var(--border); border-radius: 10px; background: var(--navy-700); text-align: center; }
.market-cell.market-good { border-color: var(--ok); }
.market-cell.market-bad { border-color: #e06c6c; }
.market-ico { font-size: 22px; line-height: 1; }
.market-val { font-size: 18px; font-weight: 700; margin: 4px 0 2px; font-variant-numeric: tabular-nums; }
.market-lbl { font-size: 13px; }
.market-sub { font-size: 11px; }
.market-up, .market-down, .market-flat { color: var(--muted); }
@media (max-width: 560px) { .market-grid { grid-template-columns: 1fr; } }
/* Lehrer-Dashboard */
.ld-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.ld-table th, .ld-table td { padding: 7px 8px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.ld-table th { color: var(--gold); font-size: 12px; white-space: nowrap; }
.ld-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ld-name { display: flex; align-items: center; gap: 8px; min-width: 150px; }
.ld-face { flex: 0 0 28px; width: 28px; height: 28px; }
.ld-face svg { width: 100%; height: 100%; }
.ld-hints { display: flex; flex-wrap: wrap; gap: 4px; min-width: 180px; }
.ld-hint { display: inline-block; background: rgba(245,179,1,0.14); color: var(--gold); border: 1px solid rgba(245,179,1,0.4); border-radius: 10px; padding: 1px 8px; font-size: 11px; }
/* Bis zu drei Favoriten-Spotlights oben — nebeneinander, umbrechend auf schmalen Fenstern. */
.lb-spotlights { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; align-items: start; margin-bottom: 8px; }
/* „Alle Wertungen": auf-/zuklappbar, standard zu. */
.lb-allcard { margin-top: 22px; }
.lb-all-sum { cursor: pointer; font-weight: 700; font-size: 1.05rem; list-style: none; display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.lb-all-sum::-webkit-details-marker { display: none; }
.lb-all-sum::before { content: '▸'; font-size: .8em; opacity: .7; transition: transform .15s; }
.lb-allcard[open] > .lb-all-sum::before { transform: rotate(90deg); }
/* Admin-Feinkalibrierung der Symbolgröße (Rechtsklick auf ein Live-Karten-Symbol) — an GUI + Karte angepasst. */
.icon-scale-popup .leaflet-popup-content-wrapper { background: var(--navy-800, #141c2e); color: var(--text, #e7edf7); border: 1px solid var(--border, #2b3a5a); border-radius: 10px; box-shadow: 0 6px 22px rgba(0,0,0,.45); }
.icon-scale-popup .leaflet-popup-tip { background: var(--navy-800, #141c2e); border: 1px solid var(--border, #2b3a5a); }
.icon-scale-popup .leaflet-popup-content { margin: 10px 12px; }
.icon-scale-popup a.leaflet-popup-close-button { color: var(--muted, #8a97b8); }
.icon-scale-ctl { display: flex; flex-direction: column; gap: 7px; min-width: 150px; text-align: center; }
.icon-scale-ctl .isc-title { font-size: 12px; color: var(--muted, #8a97b8); }
.icon-scale-ctl .isc-key { display: block; color: var(--text, #e7edf7); font-weight: 700; word-break: break-all; }
.icon-scale-ctl .isc-row { display: flex; align-items: center; justify-content: center; gap: 12px; }
.icon-scale-ctl .isc-arrow { width: 34px; height: 34px; border-radius: 8px; border: 1px solid var(--border, #2b3a5a); background: var(--navy-700, #1b2740); color: var(--gold, #f5b301); font-size: 16px; line-height: 1; cursor: pointer; }
.icon-scale-ctl .isc-arrow:hover { background: var(--navy-600, #223052); }
.icon-scale-ctl .isc-val { min-width: 52px; font-weight: 700; font-variant-numeric: tabular-nums; }
.icon-scale-ctl .isc-reset { border: 1px solid var(--border, #2b3a5a); background: transparent; color: var(--text, #e7edf7); border-radius: 8px; padding: 5px 8px; cursor: pointer; font: inherit; }
.icon-scale-ctl .isc-reset:hover { background: var(--navy-700, #1b2740); }
.icon-scale-ctl .isc-hint { font-size: 10.5px; color: var(--muted, #8a97b8); }
.icon-scale-ctl .isc-zoom { display: block; margin-top: 2px; font-size: 10px; font-weight: 700; color: var(--gold, #f5b301); }
/* Admin-Bewertungshistorie: Filter-/Suchleiste + auf-/zuklappbare Kategorien. */
.arh-filter { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.arh-f-lbl { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }
.arh-filter input, .arh-filter select { background: var(--navy-800); border: 1px solid var(--border); border-radius: 8px; color: var(--text); padding: 6px 9px; font: inherit; }
.arh-cat > summary { cursor: pointer; font-weight: 600; list-style: none; }
.arh-cat > summary::-webkit-details-marker { display: none; }
.arh-cat > summary::before { content: '▸'; display: inline-block; margin-right: 6px; opacity: .7; transition: transform .15s; }
.arh-cat[open] > summary::before { transform: rotate(90deg); }
/* Debriefing-Graphen: schwebender Zeit-Tooltip rechts vom Cursor — nur Text, sonst durchsichtig. */
/* Schwebender Debriefing-Tooltip: Zeile 1 = Zeit, darunter der Wert des beruehrten Graphen. Mehrzeilig,
   daher line-height statt eines reinen Einzeilers (Nutzervorgabe 2026-07-27). */
.dbf-hover-time { position: fixed; z-index: 9999; pointer-events: none; display: none; transform: translateY(-50%); color: var(--gold, #f5b301); font-weight: 700; font-size: 12px; line-height: 1.35; font-variant-numeric: tabular-nums; text-shadow: 0 0 3px #000, 0 0 3px #000, 0 0 3px #000; white-space: nowrap; }
/* Zufriedenheits-Tagestrend: schwebender Tooltip (durchsichtig bis auf Text) + sortierbare Dashboard-Spalten. */
.sat-hover-tip { position: fixed; z-index: 9999; pointer-events: none; display: none; transform: translateY(-50%); color: var(--text, #e7edf7); font-size: 12px; font-weight: 600; text-shadow: 0 0 3px #000, 0 0 3px #000, 0 0 3px #000; white-space: nowrap; }
.sat-hover-tip b { color: var(--gold, #f5b301); }
.sat-chart { cursor: crosshair; }
.an-table thead th .sort-ind { color: var(--gold, #f5b301); font-size: 10px; }
/* Lounge-Shop-Effekt-Chips: Hover zeigt die Erklärung (cursor:help signalisiert den Tooltip). */
.lnf-eff-chip { cursor: help; white-space: nowrap; }
.lnf-eff-chip + .lnf-eff-chip { margin-left: 6px; }
.lb-fav { cursor: pointer; font-size: 16px; line-height: 1; color: var(--muted); }
.lb-fav.on { color: var(--gold); }
.lb-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; align-items: stretch; }
/* Gleiche Maße für leere und gefüllte Karten: der Karteninhalt hat immer die Höhe von ~3 Mini-Zeilen. */
.lb-card .lb-mini { min-height: 82px; }
.lb-card .lb-empty { min-height: 82px; margin-top: 10px; padding: 8px; justify-content: center; font-size: 13px; gap: 6px; }
@media (max-width: 1100px) { .lb-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 720px) { .lb-grid { grid-template-columns: 1fr; } }
.lb-card { cursor: pointer; border-left: 3px solid var(--lb-accent, transparent); transition: transform .08s ease, box-shadow .12s ease; }
.lb-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.3); }
.lb-card.lb-active { outline: 2px solid var(--lb-accent, var(--gold)); }
.lb-card.lb-dragging { opacity: 0.5; outline: 2px dashed var(--gold); }
.lb-head { display: flex; align-items: center; gap: 8px; }
.lb-head h3 { margin: 0; flex: 1; font-size: 15px; }
.lb-ico { font-size: 18px; }
.lb-drag { color: var(--muted); cursor: grab; user-select: none; font-size: 14px; letter-spacing: -2px; }
.lb-mechip { background: var(--navy-700); border: 1px solid var(--border); color: var(--muted); font-size: 11px; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.lb-mini { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-direction: column; gap: 3px; }
.lb-mini-row { display: grid; grid-template-columns: 26px 1fr auto; align-items: center; gap: 8px; font-size: 13px; padding: 4px 6px; border-radius: 6px; }
.lb-mini-row.lb-me { background: var(--navy-600); outline: 1px solid var(--gold); }
.lb-mini-pos { text-align: center; color: var(--muted); }
.lb-mini-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lb-mini-val { font-weight: 700; color: var(--gold); }
.lb-mini-row.lb-me .lb-mini-name { color: var(--gold); }

/* Wunschliste */
.wish-note { background: var(--navy-700); border: 1px solid var(--border); border-left: 3px solid var(--gold); border-radius: 8px; padding: 10px 14px; font-size: 13px; color: var(--muted); margin-bottom: 16px; }
.wish-mine { border-left: 3px solid var(--gold); }
.wish-mine-title { font-size: 16px; font-weight: 700; color: var(--gold); margin: 4px 0; }
.wish-list { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
.wish-card { padding: 12px 14px; transition: background 0.2s ease; }
.wish-card.wish-own { outline: 1px solid var(--gold); }
.wish-row { display: flex; align-items: center; gap: 12px; }
.wish-rank { flex: 0 0 auto; min-width: 24px; text-align: center; font-weight: 700; color: var(--muted); font-variant-numeric: tabular-nums; }
.wish-vote { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; background: var(--navy-700); border: 1px solid var(--border); color: var(--text); border-radius: 999px; padding: 6px 12px; cursor: pointer; font-size: 14px; }
.wish-vote:hover:not(:disabled) { border-color: var(--gold); }
.wish-vote.voted { background: var(--gold); color: var(--navy-900); border-color: var(--gold); font-weight: 700; }
.wish-vote:disabled { opacity: 0.45; cursor: not-allowed; }
.wish-votes { font-variant-numeric: tabular-nums; }
.wish-main { flex: 1 1 auto; min-width: 0; }
.wish-title { font-weight: 600; cursor: pointer; }
.wish-title:hover { color: var(--gold); }
.wish-tag, .wish-author { font-size: 12px; color: var(--muted); font-weight: 400; }
.wish-tag { margin-left: 6px; }
.wish-desc { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); }
.wish-fulfilled { margin-top: 18px; }
.wish-fulfilled summary { cursor: pointer; color: var(--muted); }
.wish-fulfilled .wish-card { opacity: 0.7; }

/* ===== Mitgestalten: Reiter, Eingabekarten, Fehlerberichte ===== */
.fb-tabs .bank-tab { display: inline-flex; align-items: center; gap: 6px; }
.fb-tab-ico { font-size: 15px; }

/* Gemeinsame, graphisch aufgewertete Eingabekarte (Wunsch + Fehler) */
.compose-card { border-top: 3px solid var(--gold); }
.bug-compose { border-top-color: #e8743b; }
.compose-head { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.compose-icon { flex: 0 0 auto; width: 46px; height: 46px; border-radius: 12px; display: grid; place-items: center; font-size: 24px; background: var(--navy-700); border: 1px solid var(--border); }
.compose-head h3 { margin: 0; }
.compose-sub { margin: 2px 0 0; color: var(--muted); font-size: 13px; }
.compose-field { margin-bottom: 14px; }
.compose-field > label { display: block; font-size: 13px; font-weight: 600; color: var(--text); margin-bottom: 6px; }
.compose-field .opt { font-weight: 400; color: var(--muted); }
.compose-field input[type="text"], .compose-field textarea { width: 100%; box-sizing: border-box; }
.char-count { text-align: right; font-size: 11px; color: var(--muted); margin-top: 3px; font-variant-numeric: tabular-nums; }
.compose-submit { font-weight: 700; }

/* Bereichs-Auswahl als Icon-Chips */
.bug-area-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.bug-area-chip { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 999px; border: 1px solid var(--border); background: var(--navy-700); color: var(--text); cursor: pointer; font-size: 13px; transition: border-color 0.15s ease, background 0.15s ease; }
.bug-area-chip:hover { border-color: var(--gold); }
.bug-area-chip.active { background: var(--gold); color: var(--navy-900); border-color: var(--gold); font-weight: 700; }
.bac-ico { font-size: 15px; }

/* Schweregrad als segmentierte Auswahl mit Farbpunkt */
.bug-sev { display: flex; flex-wrap: wrap; gap: 8px; }
.bug-sev-opt { display: inline-flex; align-items: center; gap: 7px; padding: 8px 14px; border-radius: 8px; border: 1px solid var(--border); background: var(--navy-700); color: var(--text); cursor: pointer; font-size: 13px; }
.bug-sev-opt:hover { border-color: var(--gold); }
.bug-sev-opt.active { border-color: var(--gold); background: var(--navy-600); font-weight: 700; box-shadow: inset 0 0 0 1px var(--gold); }
.sev-dot { width: 11px; height: 11px; border-radius: 50%; flex: 0 0 auto; }
.bug-sev-desc { margin-top: 8px; font-size: 12px; color: var(--muted); min-height: 16px; }

/* Auto-Kontext-Chips */
.bug-ctx-chips { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 2px 0 4px; }
.ctx-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px; border-radius: 999px; background: var(--navy-700); border: 1px dashed var(--border); color: var(--muted); font-size: 12px; font-variant-numeric: tabular-nums; }
.ctx-note { font-size: 11px; color: var(--muted); }

/* Fehlerliste + Karten */
.bug-list { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
.bug-card { padding: 12px 14px; transition: background 0.2s ease; }
.bug-card.bug-own { outline: 1px solid var(--gold); }
.bug-card.bug-done { opacity: 0.72; }
.bug-row { display: flex; align-items: flex-start; gap: 12px; }
.bug-metoo { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; background: var(--navy-700); border: 1px solid var(--border); color: var(--text); border-radius: 999px; padding: 6px 12px; cursor: pointer; font-size: 14px; }
.bug-metoo:hover:not(:disabled) { border-color: var(--gold); }
.bug-metoo.on { background: var(--gold); color: var(--navy-900); border-color: var(--gold); font-weight: 700; }
.bug-metoo:disabled { opacity: 0.45; cursor: not-allowed; }
.bug-metoo-n { font-variant-numeric: tabular-nums; }
.bug-main { flex: 1 1 auto; min-width: 0; }
.bug-title { font-weight: 600; cursor: pointer; display: flex; align-items: center; gap: 8px; }
.bug-title:hover { color: var(--gold); }
.bug-sev-dot { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; }
.bug-tag { font-size: 12px; color: var(--muted); font-weight: 400; }
.bug-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 5px; }
.bug-area-tag { font-size: 12px; color: var(--muted); }
.bug-reporter { font-size: 12px; color: var(--muted); }
.bug-status { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--border); }
.bug-status.bs-open { color: #e0a32e; border-color: #e0a32e; }
.bug-status.bs-progress { color: #5b8def; border-color: #5b8def; }
.bug-status.bs-resolved { color: #3fbf7f; border-color: #3fbf7f; }
.bug-status.bs-wontfix { color: var(--muted); }
.bug-detail { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); }
.bug-detail-block { margin-bottom: 8px; }
.bug-detail-block .bdl { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted); margin-bottom: 2px; }
.bug-detail-block p { margin: 0; }
.bug-detail-foot { display: flex; flex-direction: column; gap: 2px; margin-top: 6px; }
.bug-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 10px; }
.bug-admin-status { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted); }
.bug-status-sel { padding: 5px 8px; border-radius: 6px; border: 1px solid var(--border); background: var(--navy-700); color: var(--text); font-size: 13px; }

/* Avatar + Shop */
.avatar-layout { display: grid; grid-template-columns: 300px 1fr; gap: 16px; align-items: start; }
@media (max-width: 900px) { .avatar-layout { grid-template-columns: 1fr; } }
.avatar-stage { text-align: center; }
.avatar-stage h3 { margin: 0 0 12px; }

/* ===== Avatar — Bühne, Pilotenkarte, Menü-Kacheln ===== */
/* Breite und Seitenverhaeltnis kommen vom ausgeruesteten Hintergrund (avatarStage setzt --stage-w und
   aspect-ratio inline). Ohne Hintergrund bleibt es beim Hochformat 200x330 der Shop-Bilder. */
.av-stage { position: relative; width: var(--stage-w, 200px); max-width: 100%; margin: 0 auto; aspect-ratio: 200 / 330; border-radius: 18px; overflow: hidden; border: 1px solid var(--border); background: var(--navy-700); }
.av-stage-fig { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
.av-stage-fig .avatar-svg { display: block; width: 100%; height: 100%; }
/* Pilotenkarte (Hero) */
.av-hero { display: grid; grid-template-columns: minmax(140px, max-content) 1fr; gap: 22px; align-items: center; }
@media (max-width: 760px) { .av-hero { grid-template-columns: 1fr; } }
.av-figure { display: flex; flex-direction: column; align-items: center; gap: 10px; }
/* In der Pilotenkarte gelten eine Hoehen- UND eine Breitenschranke (damit die Karte nicht kippt). Beide
   verrechnet `avatarStage` in --stage-w, die Hoehe folgt allein aus aspect-ratio. Wuerde das CSS hier
   zusaetzlich eine feste Hoehe setzen, schnitte die Breitenschranke das Seitenverhaeltnis an und der
   Kasten stuende breiter als das Bild darin (dunkle Raender, Nutzerbefund 2026-07-31). */
.av-hero .av-stage { width: var(--stage-w, 200px); height: auto; }
.av-nameplate { text-align: center; }
.av-nameplate strong { display: block; font-size: 18px; }
.av-nameplate span { font-size: 13px; color: var(--muted); }
.av-info { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.av-info .fit-mini { margin-top: 0; align-self: center; }
.av-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 10px; }
.av-stat { background: var(--navy-700); border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; text-align: center; }
.av-stat-val { font-size: 18px; font-weight: 800; color: var(--gold); }
.av-stat-lbl { font-size: 11px; color: var(--muted); margin-top: 2px; }
.av-sec { margin: 6px 0 2px; font-size: 13px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.04em; }
/* Menü-Kacheln */
.av-tiles { margin-top: 4px; }
.av-tile { align-items: flex-start; }
.av-tile-ico { font-size: 26px; }
.av-tile-status { margin-top: auto; font-size: 12px; font-weight: 600; color: var(--gold); background: rgba(245,179,1,0.12); border-radius: 999px; padding: 3px 10px; align-self: flex-start; }
.av-side { display: flex; flex-direction: column; gap: 16px; margin-top: 16px; }

/* ===== Überblicksseiten der Sammel-Hauptmenüs ===== */
.ov-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.ov-card {
  position: relative; display: flex; flex-direction: column; gap: 7px; text-align: left;
  padding: 18px 18px 16px; min-height: 150px;
  background: linear-gradient(150deg, var(--navy-700) 0%, var(--navy-900) 80%);
  border: 1px solid var(--border); border-left: 3px solid var(--accent, var(--gold)); border-radius: 14px;
  color: var(--text); transition: transform .12s ease, border-color .15s, box-shadow .15s;
}
button.ov-card { cursor: pointer; }
button.ov-card:hover { transform: translateY(-3px); border-color: var(--accent, var(--gold)); box-shadow: 0 10px 26px rgba(0,0,0,.35); }
.ov-card-ico { font-size: 30px; line-height: 1; }
.ov-card-title { font-size: 16px; font-weight: 700; }
.ov-card-desc { font-size: 12.5px; color: var(--muted); line-height: 1.45; }
.ov-card-status { margin-top: auto; align-self: flex-start; font-size: 12px; font-weight: 600; color: var(--accent, var(--gold));
  background: color-mix(in srgb, var(--accent, var(--gold)) 14%, transparent); border-radius: 999px; padding: 4px 11px; }
.ov-card-go { position: absolute; right: 16px; bottom: 14px; font-size: 12px; font-weight: 600; color: var(--accent, var(--gold)); opacity: 0; transform: translateX(-4px); transition: opacity .15s, transform .15s; }
button.ov-card:hover .ov-card-go { opacity: 1; transform: none; }
.ov-card.ov-locked { opacity: .55; border-left-color: var(--border); }
.ov-card.ov-locked .ov-card-lock { margin-top: auto; align-self: flex-start; font-size: 12px; font-weight: 600; color: var(--muted); background: var(--navy-700); border: 1px solid var(--border); border-radius: 999px; padding: 4px 11px; }
.av-side details > summary { cursor: pointer; font-weight: 600; }
.av-ap-group { margin-bottom: 14px; }
.shop-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; margin-top: 8px; }
.shop-card { background: var(--navy-700); border: 1px solid var(--border); border-radius: 10px; padding: 10px; text-align: center; display: flex; flex-direction: column; gap: 6px; align-items: center; }
.shop-card.equipped { border-color: var(--gold); }
.shop-prev { width: 84px; height: 134px; background: var(--navy-900); border-radius: 8px; overflow: hidden; display: grid; place-items: center; }
.shop-prev .avatar-svg { display: block; width: 100%; height: 100%; }
.shop-name { font-size: 13px; font-weight: 600; }
.shop-price { font-size: 13px; color: var(--gold); font-weight: 600; }
.shop-actions { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; }
.mini.danger { background: #5a1f2a; border-color: var(--danger); color: #ffd7d7; }
.user-avatar { overflow: hidden; }
.user-avatar .avatar-svg { width: 100%; height: auto; transform: scale(2.5); transform-origin: 50% 11%; }

/* Cockpit-Dashboard */
.cockpit-top { display: grid; grid-template-columns: 220px 1fr; gap: 16px; align-items: stretch; margin-bottom: 16px; }
@media (max-width: 900px) { .cockpit-top { grid-template-columns: 1fr; } }
.cockpit-avatar { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; }
.cockpit-avatar .avatar-svg { width: 150px; max-width: 100%; height: auto; }
.cockpit-avatar .fit-mini { margin-top: 0; }
/* Cockpit-Nahaufnahme (statt Ganzkörper): Form rund/quadratisch/rechteckig. */
.cp-head { overflow: hidden; background: var(--navy-700); }
.cp-head .avatar-svg { width: 100% !important; height: 100% !important; display: block; }
.cp-head-round { width: 150px; height: 150px; border-radius: 50%; }
.cp-head-square { width: 150px; height: 150px; border-radius: 14px; }
.cp-head-rect { width: 150px; height: 188px; border-radius: 14px; }
/* Crop-Editor-Hintergrund für gezeichnete Avatare (kein Foto). */
.av-crop-avatar { position: absolute; inset: 0; }
.av-crop-avatar .avatar-svg { width: 100%; height: 100%; display: block; }
.av-cockpit-pref { margin-top: 12px; }
.av-shape-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin-top: 6px; }
.av-shape-opt { display: inline-flex; align-items: center; gap: 5px; font-size: 14px; }
.cockpit-kpis { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 700px) { .cockpit-kpis { grid-template-columns: repeat(2, 1fr); } }
.cockpit-mid { display: grid; grid-template-columns: 1fr 320px; gap: 16px; margin-bottom: 16px; align-items: stretch; }
@media (max-width: 900px) { .cockpit-mid { grid-template-columns: 1fr; } }
.cockpit-side { display: flex; flex-direction: column; gap: 16px; }
/* Charter-Freigabe-Schaltfläche im Cockpit (unter den Statistiken): auffälliger, klickbarer Balken. */
.cp-charters { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.cp-charter { display: flex; align-items: center; gap: 14px; cursor: pointer; border-left: 4px solid var(--gold);
  transition: background .12s, border-color .12s, transform .06s; }
.cp-charter:hover { background: color-mix(in srgb, var(--gold) 10%, transparent); }
.cp-charter:active { transform: translateY(1px); }
.cp-charter-ico { font-size: 26px; line-height: 1; }
.cp-charter-txt { flex: 1 1 auto; min-width: 0; }
.cp-charter-cta { flex: 0 0 auto; font-weight: 700; color: var(--gold); white-space: nowrap; }
@media (max-width: 640px) { .cp-charter-cta { display: none; } }
/* Die Live-Karten-Karte füllt ihre (im Grid auf die Seiten-Spalte gestreckte) Höhe: h3 fest, Karte wächst mit,
   damit unter der Karte kein Leerraum bleibt, wenn die „Aktiven Flüge" den Kasten nach unten vergrößern. */
.cockpit-mid > .card:first-child { display: flex; flex-direction: column; }
.cockpit-mid .cockpit-map { flex: 1 1 auto; height: auto; min-height: 320px; }
.cockpit-map { height: 320px; }
.active-flights { display: flex; flex-direction: column; gap: 8px; }
.af-row { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: center; padding: 8px 10px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; }
/* Klickbar: Karte zentriert + verfolgt den Flug; die verfolgte Zeile ist golden markiert. */
.af-row[data-flight] { cursor: pointer; transition: border-color .12s, background .12s; }
.af-row[data-flight]:hover { border-color: rgba(245, 179, 1, 0.55); }
/* Vorgemerkter Sofortstart: beschlossener Flug, aber noch am Boden (Crew reist an) — gestrichelter
   Rahmen und leicht zurückgenommen, damit er sich von wirklich fliegenden Maschinen unterscheidet. */
.af-row.af-pending { border-style: dashed; border-color: color-mix(in srgb, var(--gold) 45%, var(--border)); background: color-mix(in srgb, var(--gold) 7%, var(--navy-700)); cursor: default; }
/* Turnaround: anklickbar wie ein fliegender Flug — der Klick springt an den Flugplatz und zeigt die Crew. */
.af-row.af-turnaround[data-turn-lat] { cursor: pointer; transition: border-color .12s, background .12s; }
.af-row.af-turnaround[data-turn-lat]:hover { border-color: rgba(245, 179, 1, 0.55); }
/* Auto-Überführung nach Umleitung: der Einsatzplan holt eine gestrandete Maschine ab. Eigener Farbton
   (dasselbe Orange wie die Überführungs-Karte im Offlineflug-Angebot), damit die Zeile nicht mit einem
   vorgemerkten Plan-Start verwechselt wird. */
.af-row.af-autoferry { border-color: color-mix(in srgb, #ff8a5c 55%, var(--border)); background: color-mix(in srgb, #ff8a5c 8%, var(--navy-700)); }
.af-row.af-autoferry .af-ferry-ico { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; font-size: 18px; }
.af-row.af-follow { border-color: #f5b301; background: rgba(245, 179, 1, 0.10); box-shadow: 0 0 0 1px rgba(245, 179, 1, 0.35) inset; }
.af-phase { font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 999px; white-space: nowrap; border: 1px solid var(--border); }
.af-phase.ph-boarding { background: rgba(154,167,199,0.18); color: var(--muted); }
.af-phase.ph-preflight { background: rgba(122,162,255,0.18); color: #7aa2ff; border-color: rgba(122,162,255,0.4); }
.af-phase.ph-taxi { background: rgba(245,179,1,0.16); color: var(--gold); border-color: rgba(245,179,1,0.4); }
.af-phase.ph-air { background: rgba(95,210,154,0.18); color: var(--ok); border-color: rgba(95,210,154,0.4); }
.af-phase.ph-landed { background: rgba(200,210,232,0.16); color: var(--silver); }
/* Alle Gesichter einer Zeile in EINEM Rasterfeld (mehrköpfige Einsatzplan-Crew: PIC + SIC/Kabine). Ohne
   diese Klammer rutschte das zweite Gesicht in die Textspalte und der Textblock in eine 30 px schmale
   Zeile darunter (Nutzerbefund 2026-07-31). Leichte Überlappung — wie gestapelte Profilbilder. */
.af-faces { display: flex; align-items: center; }
.af-faces .af-face + .af-face { margin-left: -9px; }
.af-face { flex: 0 0 auto; width: 30px; height: 30px; border-radius: 50%; overflow: hidden; background: var(--navy-900); border: 1px solid var(--border); }
.af-face .avatar-svg { width: 100%; height: auto; transform: scale(2.5); transform-origin: 50% 11%; }
/* Echter Nahaufnahme-Crop (buildAvatarSvg mit {head:true}) ist bereits auf den Kopf zugeschnitten — die
   Legacy-scale(2.5)-Kopfnäherung (für Ganzkörper-Avatare ohne Crop) darf ihn NICHT zusätzlich zoomen,
   sonst wird der obere Rand der Nahaufnahme abgeschnitten. Gilt für Benutzerkachel + Aktive-Flüge-Liste. */
.user-avatar .avatar-svg.avatar-head, .af-face .avatar-svg.avatar-head { transform: none; width: 100%; height: 100%; }
.af-main { display: flex; flex-direction: column; min-width: 0; }
.af-main strong { font-size: 14px; }
.af-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.af-line1 { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.af-line1 strong { font-size: 14px; }
.af-line2 { display: flex; align-items: center; gap: 8px; min-width: 0; }
.af-pilot { font-size: 13px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Zusatz am Zeilenende (Anreise-/Abfertigungs-Restzeit): rechtsbündig und EINZEILIG — als normaler
   Fließtext brach er in der schmalen Cockpit-Spalte über drei Zeilen um. */
.af-line2 .af-sub { margin-left: auto; flex: 0 0 auto; font-size: 12px; color: var(--muted); white-space: nowrap; }
.af-eta { font-size: 13px; text-align: right; white-space: nowrap; line-height: 1.3; }

/* ===== 10-Sterne-Flugbewertung ===== */
.star-rating { position: relative; display: inline-block; font-size: 26px; line-height: 1; letter-spacing: 2px; }
.star-rating .star-bg { color: var(--navy-600); }
.star-rating .star-fg { position: absolute; top: 0; left: 0; overflow: hidden; white-space: nowrap; color: var(--gold); }
.fr-stars { text-align: center; }
.fr-stars .fr-stars-num { font-size: 20px; font-weight: 800; color: var(--gold); margin-top: 6px; }
/* Woraus die Sterne bestehen — direkt unter der Zahl, damit die Note nicht unerklärt dasteht. */
.fr-stars .fr-stars-sub { font-size: 11px; margin-top: 4px; line-height: 1.5; }
.fr-stars .fr-stars-sub strong { color: var(--gold); }
/* Anklickbare Flugzeilen im Cockpit */
.cp-flights .cp-flight-row { cursor: pointer; }
.cp-flights .cp-flight-row:hover { background: var(--navy-700); }
.cp-star { color: var(--gold); }

/* ===== Pilot Logbook ===== */
.lb2-card { padding: 12px; }
.lb2-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.lb2-table { width: 100%; border-collapse: collapse; font-size: 13px; min-width: 760px; }
/* Spalteninhalte stehen MITTIG unter ihrer Überschrift (Nutzervorgabe 2026-07-29) — Ausnahme sind
   nur die querlaufenden Banner-Zeilen (Meilensteine, Wartungsmarken, Übertrag-/Summenlabel). */
.lb2-table th, .lb2-table td { padding: 7px 9px; border-bottom: 1px solid var(--border); text-align: center; white-space: nowrap; vertical-align: middle; }
.lb2-table thead th { position: sticky; top: 0; z-index: 1; }
.lb2-grp th { background: var(--navy-700); color: var(--gold); text-align: center; font-size: 12px; border-bottom: 1px solid var(--border); }
.lb2-sub th { background: var(--navy-700); color: var(--muted); text-align: center; font-size: 11px; font-weight: 600; }
.lb2-cls { min-width: 56px; }
.lb2-row { cursor: pointer; }
.lb2-row:hover { background: var(--navy-700); }
.lb2-date { font-variant-numeric: tabular-nums; }
.lb2-acft { display: flex; flex-direction: column; align-items: center; line-height: 1.15; }
.lb2-acft .lb2-type { font-weight: 700; }
.lb2-acft .lb2-reg { font-size: 11px; color: var(--muted); }
/* „Von/Nach" und „Start/Landung": beide Zeilen gleich groß, gleich formatiert und NICHT fett
   (Nutzervorgabe 2026-07-25) — vorher stand die erste Zeile fett und größer über einer kleinen grauen. */
.lb2-ap { font-weight: 400; letter-spacing: 0; font-variant-numeric: tabular-nums; }
.lb2-block { display: block; font-weight: 400; font-size: inherit; letter-spacing: 0; color: inherit; font-variant-numeric: tabular-nums; margin-top: 2px; }
.lb2-time { text-align: center; font-variant-numeric: tabular-nums; }
.lb2-num { text-align: center; font-variant-numeric: tabular-nums; }
.lb2-pilot { white-space: normal; min-width: 150px; text-align: center; }
.lb2-pilot .lb2-person { display: block; line-height: 1.25; }
.lb2-pilot .lb2-fi { color: var(--muted); font-size: 12px; }
.lb2-act { color: var(--gold); font-size: 10px; font-weight: 800; letter-spacing: .5px; }
.lb2-rmk { white-space: normal; max-width: 220px; }
.lb2-rmk-input { width: 180px; max-width: 100%; font-size: 12px; padding: 4px 6px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 6px; color: var(--text); }
.lb2-rmk-input.error { border-color: var(--danger); }
.lb2-total td { font-weight: 800; background: var(--navy-700); border-top: 2px solid var(--gold); border-bottom: none; }
/* Übertrag der Vorseiten: bewusst kleiner/zurückhaltender als die Summenzeile — er ist Kontext, kein Ergebnis. */
.lb2-carry td { font-size: 11px; font-weight: 600; padding: 4px 9px; color: var(--muted); background: var(--navy-700); border-bottom: 1px solid var(--gold); }
/* Die querlaufenden Label-Zellen (colspan) bleiben linksbündig — sie sind Fließtext, keine Spalte. */
.lb2-carry td:first-child, .lb2-total td:first-child { text-align: left; }
.lb2-carry td:first-child { font-style: italic; }
/* Ausbildung → Praxis: Fortschrittsbalken zu Solo-Freigabe und Checkflug-Zulassung. */
.ausb-prog-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 14px; }
.ausb-prog-block { background: var(--navy-800); border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; }
.ausb-prog-block.done { border-color: var(--ok); }
.ausb-prog-block h4 { margin: 0 0 10px; font-size: 14px; }
.ausb-prog-row { display: grid; grid-template-columns: minmax(120px, 1.4fr) minmax(60px, 1fr) auto; align-items: center; gap: 10px; margin-bottom: 6px; font-size: 12px; }
.ausb-prog-lbl { color: var(--muted); }
.ausb-prog-row.done .ausb-prog-lbl { color: var(--ok); font-weight: 700; }
.ausb-prog-track { height: 7px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 999px; overflow: hidden; }
.ausb-prog-fill { display: block; height: 100%; background: var(--gold); }
.ausb-prog-row.done .ausb-prog-fill { background: var(--ok); }
.ausb-prog-val { font-weight: 700; white-space: nowrap; }
.ausb-prog-note { margin: 0 0 8px; font-size: 11px; }
.ausb-refresh > summary { cursor: pointer; font-weight: 700; }
/* Pilotenlogbuch: Meilenstein-Marken (Solo-Freigabe, bestandener Checkflug) quer über die Tabelle. */
.lb2-mile td { font-size: 12px; padding: 6px 9px; white-space: normal; text-align: left; border-left: 3px solid var(--ok); background: rgba(60, 190, 130, 0.12); }
.lb2-mile-check td { border-left-color: var(--gold); background: rgba(226, 179, 74, 0.14); }
.lb2-mile-tag { font-weight: 800; margin-right: 12px; }
.lb2-mile-sub { color: var(--muted); margin-right: 12px; }
/* Flugzeug-Logbuch: Wartungs-/Inspektionsmarken laufen als abgesetzte Zeile zwischen den Flügen mit. */
.acl-maint td { background: rgba(122, 162, 255, 0.10); border-left: 3px solid #7aa2ff; font-size: 12px; padding: 6px 9px; white-space: normal; text-align: left; }
.acl-maint.acl-insp td { background: rgba(226, 179, 74, 0.12); border-left-color: var(--gold); }
.aclm-tag { font-weight: 800; margin-right: 10px; }
.acl-maint .aclm-when, .acl-maint .aclm-who, .acl-maint .aclm-h, .acl-maint .aclm-next { margin-right: 12px; color: var(--muted); }
.acl-maint .aclm-next { color: var(--gold); font-weight: 700; }
/* Übertrag aus dem Vorbesitzer-Logbuch (gebraucht gekauft) — ältester Eintrag, zurückhaltend. */
.acl-prev td { background: rgba(160, 170, 200, 0.10); border-left: 3px solid var(--muted); border-top: 2px solid var(--border); font-size: 12px; padding: 6px 9px; white-space: normal; text-align: left; font-style: italic; }
.acl-prev .aclm-when, .acl-prev .aclm-who, .acl-prev .aclm-h { margin-right: 12px; color: var(--muted); }
.acl-duebar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; padding: 10px 14px; }
.acl-due-h { font-weight: 800; margin-right: 4px; }
.acl-due { font-size: 12px; color: var(--muted); background: var(--navy-800); border: 1px solid var(--border); border-radius: 999px; padding: 3px 10px; }
.acl-due.warn { border-color: var(--gold); color: var(--gold); }
.acl-due.bad { border-color: var(--danger); color: var(--danger); }
/* Seitenwahl: Zahlen ABSTEIGEND (neueste Seite links), Seite 1 trägt die ältesten Flüge. */
.lb2-pages .lb2-pagenums { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; }
.lb2-pnum { min-width: 26px; padding: 3px 6px; font-size: 12px; }
.lb2-pnum.active { background: var(--gold); color: var(--navy-900); font-weight: 800; }

/* ===== Fluglehrer-Mechanik ===== */
/* Rundes Kopf-Portrait */
.av-portrait { display: inline-grid; place-items: center; border-radius: 50%; overflow: hidden; background: var(--navy-900); border: 1px solid var(--border); flex: 0 0 auto; }
.av-portrait .avatar-head { display: block; }
/* Auswahl-Liste der Fluglehrer */
.instr-list { display: flex; flex-direction: column; gap: 8px; margin: 8px 0 4px; }
.instr-card { display: flex; align-items: center; gap: 12px; text-align: left; padding: 8px 12px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 10px; color: var(--text); cursor: pointer; }
.instr-card:hover { border-color: var(--gold); }
.instr-card.selected { border-color: var(--gold); background: rgba(245,179,1,0.10); box-shadow: inset 0 0 0 1px var(--gold); }
.instr-info { display: flex; flex-direction: column; min-width: 0; }
.instr-info strong { font-size: 14px; }
.instr-meta { font-size: 12px; color: var(--muted); }
.instr-solo-ico { width: 46px; height: 46px; display: grid; place-items: center; font-size: 24px; flex: 0 0 auto; }
.fd-instr-label { display: block; font-weight: 600; margin-top: 8px; }
/* Flugdetails: Typ-Badge, Schritt-Anleitung, Bewertungs-Chips */
.fd-badge-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 2px 0 14px; }
.fd-badge { font-weight: 700; font-size: 13px; padding: 5px 12px; border-radius: 999px; background: var(--navy-700); border: 1px solid var(--border); color: var(--text); }
.fd-badge-training { background: rgba(95, 210, 154, 0.15); border-color: rgba(95, 210, 154, 0.5); color: var(--ok); }
.fd-badge-checkride { background: rgba(245, 179, 1, 0.15); border-color: rgba(245, 179, 1, 0.5); color: var(--gold); }
.fd-badge-commercial { background: rgba(59, 130, 246, 0.15); border-color: rgba(59, 130, 246, 0.5); color: #7fb0ff; }
.fd-badge-sub { font-size: 12px; color: var(--muted); }
.fd-guide ol.fd-steps { margin: 8px 0 0; padding: 0; list-style: none; counter-reset: step; display: flex; flex-direction: column; gap: 10px; }
.fd-steps li { counter-increment: step; display: flex; gap: 12px; align-items: flex-start; font-size: 14px; line-height: 1.45; }
.fd-steps li::before { content: counter(step); flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%; background: var(--gold); color: #1a1206; font-weight: 800; font-size: 13px; display: flex; align-items: center; justify-content: center; }
.fd-crit-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.fd-chip { font-size: 13px; font-weight: 600; padding: 6px 12px; border-radius: 999px; background: var(--navy-700); border: 1px solid var(--border); color: var(--silver); cursor: default; }
/* FAQ-Seite: Suchfeld + Themen-Akkordeons */
.faq-search { width: 100%; max-width: 440px; margin: 0 0 16px; padding: 10px 14px; border-radius: 10px; border: 1px solid var(--border); background: var(--navy-900); color: var(--text); font-size: 14px; }
.faq-search:focus { outline: none; border-color: var(--gold); }
.faq-item { border-top: 1px solid var(--border); }
.faq-item:first-of-type { border-top: none; }
.faq-item > summary { cursor: pointer; list-style: none; display: flex; align-items: flex-start; gap: 10px; padding: 12px 0; font-weight: 600; font-size: 15px; color: var(--text); }
.faq-item > summary::-webkit-details-marker { display: none; }
.faq-item > summary::before { content: '▸'; color: var(--gold); flex: 0 0 auto; transition: transform .15s ease; }
.faq-item[open] > summary::before { transform: rotate(90deg); }
.faq-item[open] > summary { color: var(--gold); }
.faq-a { padding: 0 0 14px 24px; color: var(--muted); font-size: 14px; line-height: 1.6; }
.faq-a b { color: var(--silver); font-weight: 600; }
/* Aufklappbare Themenkategorie (per Default zu) */
.faq-cat { margin-bottom: 12px; }
.faq-cat-sum { cursor: pointer; list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.faq-cat-sum::-webkit-details-marker { display: none; }
.faq-cat-title { font-size: 17px; font-weight: 700; color: var(--text); display: flex; align-items: center; gap: 8px; }
.faq-cat-title::before { content: '▸'; color: var(--gold); transition: transform .15s ease; display: inline-block; }
.faq-cat[open] > .faq-cat-sum .faq-cat-title::before { transform: rotate(90deg); }
.faq-cat-count { flex: 0 0 auto; font-size: 12px; font-weight: 700; color: var(--muted); background: var(--navy-700); border: 1px solid var(--border); border-radius: 999px; padding: 2px 9px; }
.faq-cat-body { margin-top: 6px; }
/* Interaktive Sterne-Eingabe */
.star-input { display: inline-flex; gap: 2px; }
.star-in { background: none; border: none; padding: 0 1px; font-size: 22px; line-height: 1; color: var(--navy-600); cursor: pointer; }
.star-in.on { color: var(--gold); }
.star-in:hover { color: var(--gold); }
/* Bewertungs-/Dossier-Pop-ups */
.dossier-head { display: flex; align-items: center; gap: 12px; margin: 6px 0 10px; }
.dossier-fb { background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; margin-bottom: 6px; font-size: 13px; }
.dossier-rate { display: inline-block; margin-right: 8px; color: var(--gold); font-size: 12px; }
.dossier-avg { display: flex; align-items: baseline; gap: 8px; padding: 6px 0; font-size: 15px; }
.dossier-avg .dossier-rate { font-size: 15px; margin-right: 0; }
.dossier-details > summary { cursor: pointer; color: var(--muted); font-size: 13px; padding: 4px 0; }
.dossier-details[open] > summary { color: var(--gold); margin-bottom: 4px; }
.asp-grid { display: flex; flex-direction: column; gap: 10px; margin: 8px 0; }
.asp-row { display: grid; grid-template-columns: 1fr auto; gap: 4px 10px; align-items: center; }
.asp-row .asp-lbl { font-size: 13px; font-weight: 600; }
.asp-row .asp-comment { grid-column: 1/-1; font-size: 12px; padding: 5px 8px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 6px; color: var(--text); }

/* ---- Selbsteinschätzung (neugestaltet) ---- */
.sa-scale { display: flex; flex-wrap: wrap; gap: 6px 14px; padding: 9px 12px; margin: 6px 0 12px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 9px; font-size: 11.5px; color: var(--muted); }
.sa-scale-item b { color: var(--gold); font-weight: 700; letter-spacing: -1px; }
.sa-grid { display: flex; flex-direction: column; gap: 10px; }
.sa-aspect { padding: 11px 13px; border: 1px solid var(--border); border-radius: 11px; background: linear-gradient(180deg, rgba(127,208,255,.04), rgba(127,208,255,0)); }
.sa-aspect-head { display: flex; align-items: flex-start; gap: 11px; }
.sa-aspect-ico { font-size: 20px; line-height: 1.1; flex: 0 0 auto; }
.sa-aspect-titles { flex: 1 1 auto; min-width: 0; }
.sa-aspect-lbl { font-size: 14px; font-weight: 700; color: var(--text); }
.sa-aspect-desc { font-size: 11.5px; color: var(--muted); margin-top: 2px; line-height: 1.35; }
.sa-aspect-rate { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 9px; }
.sa-aspect-rate .star-input .star-in { font-size: 25px; }
.sa-aspect-rate .sa-note { flex: 1 1 160px; min-width: 120px; font-size: 12px; padding: 6px 9px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 7px; color: var(--text); }
.sa-reflect-wrap { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border); }
.sa-reflect-lbl { display: flex; align-items: center; gap: 7px; font-size: 13.5px; font-weight: 700; color: var(--text); }
.sa-reflect-ta { width: 100%; box-sizing: border-box; margin-top: 5px; font-size: 12.5px; padding: 8px 10px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 8px; color: var(--text); resize: vertical; font-family: inherit; }
.solo-grant { display: flex; gap: 8px; align-items: flex-start; margin: 12px 0; padding: 10px 12px; border: 1px solid var(--gold); background: rgba(245,179,1,0.10); border-radius: 8px; font-size: 13px; }
.lic-chips { display: flex; gap: 10px; flex-wrap: wrap; }
.lic-chip { padding: 7px 16px; border-radius: 20px; background: var(--navy-700); border: 1px solid var(--border); color: var(--muted); font-size: 13px; font-weight: 600; }
.lic-chip.earned { background: rgba(245,179,1,0.16); border-color: var(--gold); color: var(--gold); }
.tx-neg { color: var(--danger); }
.tx-pos { color: var(--ok); }

/* Streckennachfrage */
.demand-bar { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 8px; }
.demand-bar label { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--muted); }
.demand-bar select { min-width: 220px; }
.demand-legend { display: flex; gap: 18px; flex-wrap: wrap; align-items: center; margin-top: 10px; font-size: 12px; color: var(--muted); }
.demand-legend span { display: flex; align-items: center; gap: 6px; }
.dl-line { display: inline-block; width: 22px; height: 0; border-top-width: 3px; border-top-style: solid; }
.dl-line.dl-hub { border-top-color: #f5b301; }
.dl-line.dl-spoke { border-top-color: #7fd0ff; }

/* Verlegung & Transport */
.tf-assign { display: flex; align-items: center; gap: 8px; }
.tf-hub { width: auto !important; min-width: 150px; margin-top: 0 !important; }
.ac-search { position: relative; min-width: 250px; }
.ac-row { display: flex; align-items: center; gap: 8px; }
.transport-input { flex: 1; min-width: 150px; }
/* IN DER TABELLE darf die Bedienspalte SCHRUMPFEN (Nutzerbefund 2026-07-31: „der Text ragt über die
   Kastengröße hinaus" — Eingabefeld „Transport zu Flughafen" und der Knopf standen rechts über der Karte).
   Ursache: `min-width: 250px` bzw. 150px sind MINDESTbreiten; eine Tabellenspalte kann darunter nicht
   schrumpfen, also wurde die ganze Tabelle breiter als die umgebende Karte und lief rechts heraus.
   In der Tabelle bricht die Zeile deshalb um (Knopf rutscht unter das Feld) und das Feld darf schmaler
   werden. KEIN Scroll-Container drumherum: `overflow-x` würde auch vertikal klippen und die absolut
   positionierte Vorschlagsliste (.ac-suggest) abschneiden. */
td .ac-search { min-width: 0; max-width: 100%; }
td .ac-row { flex-wrap: wrap; }
td .ac-row .transport-input { flex: 1 1 130px; min-width: 110px; }   /* schmal genug, aber noch bedienbar */
td .ac-row button { flex: 0 0 auto; }
td .transport-preview { overflow-wrap: anywhere; }
td .tf-assign { flex-wrap: wrap; }
td .tf-hub { min-width: 110px; max-width: 100%; }
.ac-suggest { display: none; position: absolute; top: 100%; left: 0; right: 0; z-index: 60; margin-top: 4px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 8px; max-height: 220px; overflow-y: auto; box-shadow: 0 10px 28px rgba(0,0,0,0.55); }
.ac-suggest.open { display: block; }
.ac-item { padding: 8px 10px; cursor: pointer; font-size: 13px; }
.ac-item:hover { background: var(--navy-600); }
.ac-item strong { color: var(--gold); }
.ac-empty { padding: 8px 10px; font-size: 13px; color: var(--muted); }
.transport-preview { display: block; margin-top: 6px; font-size: 12px; }
.transport-preview.ok { color: var(--text); }
.transport-preview.ok strong { color: var(--gold); }/* Such-Autocomplete in Karten (Hub erstellen / Flugzeugmuster) */

.hub-search { max-width: 460px; margin-bottom: 12px; }
.hub-search .transport-input { width: 100%; }
@keyframes rowflash { from { background: rgba(245,179,1,0.32); } to { background: transparent; } }

/* Modal (Flugergebnis u. a.) */
.modal-overlay { position: fixed; inset: 0; background: rgba(6, 10, 20, 0.72); backdrop-filter: blur(3px); display: grid; place-items: center; z-index: 1000; padding: 20px; }
.modal-card { width: 100%; max-width: 420px; background: linear-gradient(160deg, var(--navy-700) 0%, var(--navy-900) 100%); border: 1px solid var(--border); border-radius: 16px; padding: 22px; box-shadow: 0 20px 60px rgba(0,0,0,0.6); max-height: calc(100vh - 40px); overflow-y: auto; overscroll-behavior: contain; }
/* Unauffaelliger Scrollbalken fuer lange Pop-ups (z. B. Fluglehrer-Dossier). */
.modal-card::-webkit-scrollbar { width: 9px; }
.modal-card::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.16); border-radius: 6px; }
.modal-card::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.28); }
.modal-card::-webkit-scrollbar-track { background: transparent; }
.modal-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.modal-head h3 { margin: 0; font-size: 20px; }
.modal-head .modal-ico { font-size: 30px; line-height: 1; }
.modal-head.ok h3 { color: var(--ok); }
.modal-head.warn h3 { color: var(--gold); }
.fr-list { display: flex; flex-direction: column; gap: 2px; }
.fr-row { display: flex; justify-content: space-between; gap: 12px; padding: 8px 10px; border-radius: 8px; font-size: 14px; }
.fr-row:nth-child(odd) { background: rgba(255,255,255,0.03); }
.fr-row > span:first-child { color: var(--muted); }
.fr-row > span:last-child { text-align: right; }   /* Werte rechtsbündig — auch bei mehrzeiligen (z. B. Präzision) */
.fr-row .fr-pos { color: var(--ok); font-weight: 600; }
.fr-row .fr-neg { color: var(--danger); }
/* Ereignislog (Offlineflug): drei Spalten — Ereignis | Beschreibung | Folgen.
   FALLE (Nutzerbefund 2026-07-29): `1.4fr` heißt in Wahrheit `minmax(auto, 1.4fr)`, und `auto` als
   MINIMUM ist die min-content-Breite. Ein langer Text ohne Umbruchstelle zieht die Spalte deshalb über
   den Container hinaus — im Debriefing-Popup ragte die Folgen-Spalte aus Tabelle UND Fenster heraus.
   Jede Spur bekommt darum ein Minimum von 0 (bzw. eine kleine feste Untergrenze) und darf umbrechen. */
.ev-row { display: grid; grid-template-columns: minmax(110px, 0.9fr) minmax(0, 1.4fr) minmax(90px, 0.8fr); gap: 10px; padding: 8px 10px; border-radius: 8px; font-size: 13.5px; align-items: start; }
.ev-row > span { min-width: 0; overflow-wrap: anywhere; }
.ev-row:nth-child(even) { background: rgba(255,255,255,0.03); }
.ev-head { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; padding-bottom: 2px; }
.ev-name { font-weight: 600; }
.ev-desc { color: var(--muted); }
.ev-cons { text-align: right; color: var(--muted); }
/* Jede Wirkung eine eigene Zeile — genau so war die Folgen-Spalte gedacht (apEventsHtml zerlegt sie dafür
   an Kommas/Mittelpunkten). Ohne diese Regel liefen die Teile inline weiter und machten die Spalte breit. */
.ev-cons > span { display: block; }
/* Schmale Fenster: die drei Spalten untereinander statt gequetscht nebeneinander. */
@media (max-width: 620px) {
  .ev-row { grid-template-columns: 1fr; gap: 2px; }
  .ev-row .ev-cons { text-align: left; }
  .ev-head { display: none; }
}
/* Dasselbe im SCHMALEN Behälter: Das Autopilot-Debriefing ist ein normales Fenster (max. 420 px breit) —
   drei Spalten wären dort auch ohne Überlauf gequetscht. Dort stehen Ereignis, Beschreibung und Folgen
   deshalb untereinander, mit einer feinen Trennlinie zwischen den Einträgen. */
.ev-narrow .ev-row { grid-template-columns: 1fr; gap: 2px; padding: 7px 8px; }
.ev-narrow .ev-cons { text-align: left; }
.ev-narrow .ev-head { display: none; }
.ev-narrow .ev-row + .ev-row { border-top: 1px solid var(--border); border-radius: 0; }
.ev-pos .ev-cons { color: var(--ok); }
.ev-neg .ev-cons { color: var(--danger); }
/* Flug-Debriefing: Inline-SVG-Telemetriekurven (Höhe/Speed/VS/G/Querlage) mit Hover-Fadenkreuz. */
.dbf-card .kpis { margin: 8px 0 4px; }
.dbf-readout { font-variant-numeric: tabular-nums; font-size: 13px; color: var(--text); background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; padding: 8px 11px; margin: 8px 0 6px; min-height: 18px; }
.dbf-charts { display: flex; flex-direction: column; gap: 14px; cursor: crosshair; }
.dbf-chart-head { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text); margin-bottom: 3px; }
.dbf-chart-head .dbf-unit { color: var(--muted); }
.dbf-chart-head .dbf-range { margin-left: auto; color: var(--muted); font-variant-numeric: tabular-nums; }
.dbf-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; flex: 0 0 auto; }
.dbf-svg { width: 100%; height: 120px; display: block; background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; }
.dbf-svg * { vector-effect: non-scaling-stroke; }
.dbf-line { fill: none; stroke-width: 1.6px; }
.dbf-base { stroke: var(--muted); stroke-width: 1px; stroke-dasharray: 3 4; opacity: 0.5; }
.dbf-ground { fill: rgba(138,160,198,0.12); }
.dbf-evt { stroke-width: 1.4px; opacity: 0.85; }
.dbf-to { stroke: var(--ok); }
.dbf-ld { stroke: var(--danger); }
.dbf-cross { stroke: var(--text); stroke-width: 1px; opacity: 0.75; pointer-events: none; }
.dbf-timeaxis { display: flex; justify-content: space-between; font-size: 11px; color: var(--muted); margin-top: 4px; font-variant-numeric: tabular-nums; }
.dbf-legend { display: flex; gap: 16px; flex-wrap: wrap; font-size: 11px; color: var(--muted); margin-top: 8px; }
.dbf-legend i { font-style: normal; display: inline-flex; align-items: center; gap: 6px; }
.dbf-legend .ln { width: 16px; border-top: 2px solid; display: inline-block; }
.dbf-legend .dbf-sw { width: 14px; height: 10px; border-radius: 2px; background: rgba(138,160,198,0.30); display: inline-block; }
.fr-warn { margin: 12px 0 0; padding: 12px 14px; border-radius: 10px; background: rgba(245,179,1,0.10); border: 1px solid rgba(245,179,1,0.4); }
.fr-warn strong { color: var(--gold); }
.fr-warn p { margin: 6px 0 0; }
.modal-actions { display: flex; gap: 10px; margin-top: 18px; }
.modal-accept, .modal-reject { flex: 1; padding: 11px; border-radius: 9px; font-size: 14px; font-weight: 600; border: 1px solid var(--border); cursor: pointer; }
.modal-accept { background: linear-gradient(180deg, #2e9e6b, #23805a); border-color: var(--ok); color: #fff; }
.modal-accept:hover { filter: brightness(1.08); }
.modal-reject { background: var(--navy-600); color: #ffd7d7; border-color: var(--danger); }
.modal-reject:hover { background: #5a1f2a; }
.charter-note { background: rgba(127,208,255,0.1); border: 1px solid rgba(127,208,255,0.4); border-radius: 8px; padding: 10px 12px; margin-top: 12px; }
.charter-btn { margin-top: 14px; background: linear-gradient(180deg, var(--gold), var(--gold-dim)); color: var(--gold-ink); font-weight: 700; border: none; }
.charter-btn:hover { filter: brightness(1.06); }
.lk-go { color: var(--gold); font-weight: 600; }
.row-gap { display: flex; gap: 10px; flex-wrap: wrap; }
.row-between { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
/* Hinweiszeile des Einrichten-Editors: sitzt zwischen Überschrift und Kontostand und darf die beiden
   nicht verdrängen — sie schrumpft und kürzt notfalls mit „…". flashMsg setzt className neu, die
   Gestaltung hängt darum an der ID. */
.fur-head { flex-wrap: wrap; }
#fur-hint { flex: 1 1 160px; min-width: 0; font-size: 12px; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.al-pager { display: flex; align-items: center; gap: 12px; margin-top: 12px; }
.cf-slider { margin: 10px 0; }
.cf-slider label { display: block; margin-bottom: 4px; font-size: 13px; }
.cf-slider input[type="range"] { width: 100%; }
.cf-dot { display: inline-block; width: 12px; height: 12px; border-radius: 3px; border: 1px solid #0b1220; vertical-align: middle; margin-right: 2px; }
.cf-acct, #cf-acct { margin-top: 6px; }
.cf-legend { display: flex; gap: 14px; flex-wrap: wrap; font-size: 12px; color: var(--muted); margin-bottom: 10px; }
.cf-photo { margin: 0 0 12px; }
.cf-photo img { display: block; width: 100%; max-height: 240px; object-fit: cover; border-radius: 10px; border: 1px solid var(--border); background: var(--navy-900); }
.cf-photo figcaption { margin-top: 6px; font-size: 12px; color: var(--muted); text-align: center; }
.cf-plane { display: flex; justify-content: center; background: var(--navy-900); border: 1px solid var(--border); border-radius: 10px; padding: 12px; margin-bottom: 6px; }
.cf-plane svg { width: 100%; max-width: 560px; height: auto; }
/* Optionale Komfort-Ausstattung im Konfigurations-/Umrüstungsmenü */
.eq-root { margin-top: 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--navy-900); padding: 8px 12px; }
.eq-root > summary, .eq-cat > summary { cursor: pointer; font-weight: 600; font-size: 13px; list-style: none; padding: 4px 0; }
.eq-root > summary::-webkit-details-marker, .eq-cat > summary::-webkit-details-marker { display: none; }
.eq-root > summary::before, .eq-cat > summary::before { content: '▸'; display: inline-block; width: 14px; color: var(--muted); transition: transform .15s; }
.eq-root[open] > summary::before, .eq-cat[open] > summary::before { transform: rotate(90deg); }
.eq-cat-count { color: var(--gold); font-weight: 600; font-size: 12px; margin-left: 4px; }
.eq-hint { margin: 4px 0 8px 0; }
.eq-cat { border-top: 1px solid var(--border); padding: 2px 0; }
.eq-cat > summary { font-weight: 500; color: var(--text); }
.eq-cat-body { padding: 4px 0 8px 18px; }
.eq-item { padding: 6px 0; border-bottom: 1px dashed var(--border); }
.eq-item:last-child { border-bottom: none; }
.eq-item-head { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; }
.eq-name { font-size: 13px; font-weight: 600; }
.eq-cost { font-size: 11px; white-space: nowrap; }
.eq-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 5px; }
.eq-chip { font-size: 12px; padding: 3px 10px; border-radius: 14px; border: 1px solid var(--border); background: var(--navy-600); color: var(--muted); cursor: pointer; }
.eq-chip:hover { border-color: var(--gold); }
.eq-chip.on { background: var(--gold); color: #1a1a1a; border-color: var(--gold); font-weight: 600; }
.eq-chip.on::before { content: '✓ '; }
/* Komfort-Balken je Reiseklasse */
.comfort-box { margin-top: 10px; }
.comfort-h { margin: 0 0 6px 0; font-size: 13px; }
.entertainment-h { margin-top: 12px; }
.comfort-row { display: flex; align-items: center; gap: 10px; margin: 5px 0; }
.comfort-lbl { flex: 0 0 130px; font-size: 12px; }
.comfort-track { flex: 1; height: 12px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
.comfort-fill { height: 100%; border-radius: 5px 0 0 5px; transition: width .15s; }
.comfort-val { flex: 0 0 88px; text-align: right; font-size: 12px; font-variant-numeric: tabular-nums; }
.danger-text { color: var(--danger); }
/* Nur Checkbox + Text sind klickbar — NICHT die ganze Zeile (Nutzervorgabe 2026-07-22): das Label
   schrumpft auf seinen Inhalt (fit-content), statt die volle Breite einzunehmen. */
.check-row { display: flex; align-items: center; gap: 8px; font-size: 14px; cursor: pointer; width: fit-content; max-width: 100%; }
.check-row input { width: 16px; height: 16px; }
.invest-list { margin: 6px 0 0 0; padding-left: 18px; line-height: 1.7; }
.section-h { margin: 18px 0 8px 0; }
.bank-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; }
.loan-card .loan-head { font-size: 14px; }
.loan-card.taken { border-left: 4px solid var(--ok); }
/* Bankkonto: Einnahmen/Ausgaben nebeneinander (light & dark über CSS-Variablen) */
.fin-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 640px) { .fin-grid { grid-template-columns: 1fr; } }
.fin-col .fin-total { font-size: 22px; font-weight: 700; margin: 4px 0 10px 0; }
.fin-col > summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.fin-col > summary::-webkit-details-marker { display: none; }
.fin-col > summary::before { content: '▸'; color: var(--muted); transition: transform .15s; }
.fin-col[open] > summary::before { transform: rotate(90deg); }
.fin-col .fin-head { font-weight: 600; font-size: 15px; }
/* Zeitraum-Umschalter über den Einnahmen-/Ausgaben-Kästen — eine schmale Chip-Reihe, die umbricht. */
.fin-range { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin: 0 0 10px; }
.fin-range-lbl { font-size: 12px; color: var(--muted); margin-right: 4px; }
.fin-range-btn { padding: 3px 9px; font-size: 12px; }
.fin-range-btn.active { background: var(--gold); color: var(--navy-900); font-weight: 800; }
.fin-range-tag { font-size: 11px; font-weight: 600; color: var(--muted); background: var(--navy-800); border: 1px solid var(--border); border-radius: 999px; padding: 1px 7px; margin-left: 6px; vertical-align: middle; }
.fin-col .fin-body { margin-top: 8px; }
.bank-tabs.sub { margin-bottom: 10px; }
.stock-card { margin-bottom: 12px; }
.stock-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.stock-price { font-variant-numeric: tabular-nums; font-weight: 600; }
.stock-svg { width: 100%; height: 110px; display: block; background: var(--navy-900); border: 1px solid var(--border); border-radius: 8px; }
.stock-real { margin-top: 2px; }
.stock-tf { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 12px 0; }
.tf-btn { padding: 4px 10px; border-radius: 6px; border: 1px solid var(--border); background: var(--navy-900); color: var(--muted); cursor: pointer; font-size: 12px; }
.tf-btn.active { background: var(--gold); color: #1a1a1a; border-color: var(--gold); font-weight: 600; }
.stock-chart { position: relative; margin-top: 8px; }
.stock-cursor { position: absolute; top: 0; bottom: 0; width: 1px; background: var(--gold); display: none; pointer-events: none; }
.stock-tip { position: absolute; top: 4px; transform: translateX(-50%); background: var(--navy-600); border: 1px solid var(--gold); border-radius: 6px; padding: 4px 8px; font-size: 11px; white-space: nowrap; display: none; pointer-events: none; }
/* Aktienliste (Trade-Republic-Stil) */
.stk-search { width: 100%; box-sizing: border-box; padding: 8px 12px; margin-bottom: 10px; border-radius: 8px; border: 1px solid var(--border); background: var(--navy-900); color: var(--text); }
.stock-list { display: flex; flex-direction: column; gap: 6px; }
.stock-row { display: grid; grid-template-columns: 1fr 120px 130px; align-items: center; gap: 10px; width: 100%; text-align: left; background: var(--navy-600); border: 1px solid var(--border); border-radius: 10px; padding: 8px 12px; cursor: pointer; }
.stock-row:hover { border-color: var(--gold); }
.sr-name { display: flex; align-items: center; gap: 10px; min-width: 0; }
.sr-name-txt { display: flex; flex-direction: column; min-width: 0; }
.sr-name-txt strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sr-name .muted-note { font-size: 11px; display: inline-flex; align-items: center; gap: 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dist-badge { flex: 0 0 auto; display: inline-block; width: auto; font-size: 10px; font-weight: 700; letter-spacing: .3px; padding: 1px 6px; border-radius: 999px; line-height: 1.5; }
.dist-badge.b-acc { background: color-mix(in srgb, var(--ok) 18%, transparent); color: var(--ok); }
.dist-badge.b-dist { background: color-mix(in srgb, var(--gold) 20%, transparent); color: var(--gold); }
.stock-etf-meta { display: flex; flex-direction: column; gap: 3px; margin-top: 6px; }
.stock-etf-meta b { color: var(--text); font-weight: 600; }
.etf-info { margin: 8px 0 12px; padding: 12px 14px; }
.etf-info > summary { cursor: pointer; font-weight: 600; color: var(--text); list-style: none; }
.etf-info > summary::-webkit-details-marker { display: none; }
.etf-info > summary::before { content: '▸ '; color: var(--muted); }
.etf-info[open] > summary::before { content: '▾ '; }
.etf-info p { margin: 8px 0; color: var(--muted); font-size: 13px; line-height: 1.5; }
.etf-info b { color: var(--text); }
.etf-info ul { margin: 6px 0 2px; padding-left: 4px; list-style: none; display: flex; flex-direction: column; gap: 6px; }
.etf-info li { color: var(--muted); font-size: 13px; line-height: 1.4; }
.etf-info .dist-badge { margin-right: 4px; }
/* Sparen & Festgeld */
.sv-acct { margin-bottom: 10px; }
.sv-acct-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.sv-acct-val { font-size: 22px; font-weight: 700; color: var(--gold); margin: 4px 0; }
.sv-actions { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; align-items: center; }
.sv-actions button { flex: 0 0 auto; }
.sv-acct .link-like { background: none; border: none; color: var(--muted); text-decoration: underline; padding: 6px 0 0; font-size: 12px; cursor: pointer; }
.sv-acct-msg:empty { display: none; }
.sv-cond { display: flex; flex-direction: column; gap: 4px; margin: 8px 0; font-size: 14px; }
.sv-proscons { display: flex; gap: 16px; flex-wrap: wrap; margin: 8px 0 4px; }
.sv-pros, .sv-cons { list-style: none; padding: 0; margin: 0; font-size: 13px; display: flex; flex-direction: column; gap: 3px; }
.sv-pros li::before { content: '✔ '; color: var(--ok); }
.sv-cons li::before { content: '✘ '; color: var(--danger); }
.sv-pros li, .sv-cons li { color: var(--muted); }
.sv-kind-toggle { display: flex; gap: 8px; margin: 10px 0; }
.sv-kind { flex: 1; padding: 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--navy-700); color: var(--text); cursor: pointer; }
.sv-kind.active { border-color: var(--gold); color: var(--gold); font-weight: 600; }

/* Airwork-Übungsauswahl im Fluglehrer-Pop-up */
.airwork-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 8px 0; }
.airwork-opt { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; padding: 8px 10px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; font-size: 13px; cursor: pointer; }
.airwork-opt span:first-of-type { flex: 1; }
.airwork-opt input { flex: 0 0 auto; }
.airwork-crit { flex: 1 1 100%; font-size: 11px; color: var(--muted, #8aa0b3); }
/* Instruktor-Briefing: „Worauf achten" / Checkflug-Prüfungspunkte. */
.brief-list { margin: 6px 0 4px; padding-left: 18px; display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.brief-list li { line-height: 1.35; }
/* Checkflug-Syllabus (Schüler-Detail) + Live-Prüfungs-Checkliste (Fluglehrer). */
.syllabus-list { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.syllabus-list li { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; line-height: 1.35; }
.syllabus-list li.done { opacity: 0.85; }
.syllabus-list .syl-mark { flex: 0 0 auto; }
.sv-cr-row { display: flex; gap: 10px; align-items: flex-start; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; margin-bottom: 6px; font-size: 13px; line-height: 1.35; cursor: pointer; }
.sv-cr-row.done { background: rgba(95,210,154,.1); border-color: rgba(95,210,154,.4); }
.sv-cr-row input { flex: 0 0 auto; margin-top: 2px; width: 18px; height: 18px; cursor: pointer; }
@media (max-width: 560px) { .airwork-grid { grid-template-columns: 1fr; } }

/* Cockpit-Kennzahlen anklickbar (Aufschlüsselung öffnen) */
.phs.phs-link { cursor: pointer; border-radius: 8px; transition: background 0.12s; padding: 2px 6px; margin: -2px -6px; }
.phs.phs-link:hover { background: rgba(245,179,1,0.10); }
.phs.phs-link:hover .phs-val { color: var(--gold); }

/* Reputations-/Bewertungs-Aufschlüsselung */
.rep-hero { display: flex; gap: 22px; align-items: center; flex-wrap: wrap; }
.rep-hero-side { flex: 1 1 280px; min-width: 240px; }
.rep-hero-side p { margin: 0 0 8px; }
.rep-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; }
.rep-stack { display: flex; height: 16px; border-radius: 999px; overflow: hidden; background: var(--navy-900); border: 1px solid var(--border); }
.rep-stack span { display: block; height: 100%; }
.rep-stack-legend { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 8px; font-size: 12px; color: var(--muted); }
.rep-stack-legend span { display: inline-flex; align-items: center; gap: 6px; }
.rep-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; }
.rep-comp { margin: 0; }
.rep-comp-top { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.rep-comp-top strong { flex: 1; }
.rep-weight { font-size: 11px; color: var(--muted); background: var(--navy-700); border: 1px solid var(--border); border-radius: 999px; padding: 2px 8px; }
.rep-comp-bar { height: 10px; border-radius: 999px; background: var(--navy-900); border: 1px solid var(--border); overflow: hidden; }
.rep-comp-bar span { display: block; height: 100%; border-radius: 999px; }
.rep-comp-meta { display: flex; justify-content: space-between; gap: 10px; font-size: 12px; margin: 6px 0; flex-wrap: wrap; }
/* Teilsäulen einer Reputations-Komponente (z. B. Betriebsqualität: Pünktlichkeit/Sicherheit/Wartung) */
.rep-sub { margin: 8px 0 4px; display: flex; flex-direction: column; gap: 5px; }
/* Kein starres 3-Spalten-Raster mehr: In der schmalen Ruf-Karte schrumpfte die letzte Spalte gegen 0 und
   `overflow-wrap: anywhere` brach „50 % · 12 Flüge" in EINZELNE BUCHSTABEN je Zeile. Jetzt fließen die drei
   Teile und brechen nur an Leerzeichen — Beschriftung und Prozentwert bleiben je auf einer Zeile. */
.rep-sub-row { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: 12px; }
.rep-sub-lbl { display: flex; align-items: center; gap: 6px; flex: 1 1 140px; min-width: 0; white-space: nowrap; }
.rep-sub-bar { height: 7px; flex: 1 1 70px; min-width: 60px; }
.rep-sub-val { flex: 0 1 auto; margin-left: auto; text-align: right; color: var(--muted); min-width: 0; }
.rep-sub-val strong { white-space: nowrap; }
.rep-sub-row.rep-comp-unproven { opacity: 0.55; }
.rep-flights { display: flex; align-items: flex-end; gap: 6px; height: 130px; padding-top: 6px; overflow-x: auto; }
.rep-flight { display: flex; flex-direction: column; align-items: center; gap: 4px; flex: 1 0 22px; height: 100%; }
.rep-flight-bar { flex: 1; width: 100%; max-width: 30px; display: flex; align-items: flex-end; background: var(--navy-900); border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
.rep-flight-bar span { display: block; width: 100%; border-radius: 5px 5px 0 0; transition: height 0.3s; }
.rep-flight-lbl { font-size: 10px; color: var(--muted); }
.pay-scale { margin: 10px 0; }
.pay-scale-bar { position: relative; height: 8px; border-radius: 999px; background: linear-gradient(90deg, var(--danger), var(--gold), var(--ok)); }
.pay-scale-bar i { position: absolute; top: 50%; width: 14px; height: 14px; border-radius: 50%; background: #fff; border: 2px solid var(--navy-800); transform: translate(-50%, -50%); box-shadow: 0 1px 4px rgba(0,0,0,0.5); }
.pay-scale-ends { display: flex; justify-content: space-between; font-size: 11px; color: var(--muted); margin-top: 4px; }
/* Flugnoten-Aufschlüsselung (Flugdetail) */
.sp-list { display: flex; flex-direction: column; gap: 9px; margin-top: 4px; }
/* Jede sp-Zeile ist ein EIGENES Grid — mit `minmax(120px, …)` und `auto` richteten sich die Spalten
   deshalb nach dem Inhalt der jeweiligen Zeile aus, und die Balken von „Pünktlichkeit"/„Regeltreue"
   begannen sichtbar versetzt zu denen von „Landung"/„Sanftheit". `minmax(0, …)` nimmt der Spalte das
   inhaltsabhängige Minimum, die feste Zahlenspalte den variablen Rand rechts: alle Balken fluchten. */
.sp-row { display: grid; grid-template-columns: minmax(0, 1.2fr) 2fr 52px; align-items: center; gap: 12px; font-size: 13px; }
.sp-row > :first-child { min-width: 0; overflow-wrap: anywhere; }
.sp-row > strong { text-align: right; font-variant-numeric: tabular-nums; }
.sp-bar { height: 9px; border-radius: 999px; background: var(--navy-900); border: 1px solid var(--border); overflow: hidden; }
.sp-bar span { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--gold), var(--ok)); }
@media (max-width: 560px) { .sp-row { grid-template-columns: minmax(0, 1fr) 52px; } .sp-row .sp-bar { grid-column: 1 / -1; } }

/* Detailebene eines Notenfaktors (Landung/Anflug/Konfiguration): das Urteil in Klartext, darunter die
   Kriterien im Ampel-Raster. Bündig unter dem Faktor eingerückt — dieselbe Kante wie sp-landing-detail. */
.sp-detail { margin: -3px 0 8px 8px; padding-left: 10px; border-left: 2px solid var(--border, #2a3550); }
.sp-detail-head { font-size: 12px; margin-bottom: 5px; }
.sp-detail-head b { color: var(--gold); }
.sp-detail .ap-row { grid-template-columns: 12px 132px 1fr 62px auto; }
.ap-notes-list { display: flex; flex-direction: column; gap: 2px; }
.ap-note { font-size: 12px; line-height: 1.5; }
@media (max-width: 720px) { .sp-detail .ap-row { grid-template-columns: 12px 1fr 62px; } }

.rep-explain-card > summary { cursor: pointer; font-weight: 600; }
.rep-explain { margin-top: 10px; line-height: 1.6; }
.rep-explain ul { padding-left: 20px; }
.rep-explain li { margin: 5px 0; }

/* Kerosin-Kurschart (Sachwerte & Spezial) */
.fuel-chart-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 4px 0 6px; flex-wrap: wrap; }
.fuel-price { font-size: 22px; font-weight: 700; color: var(--gold); }
.fuel-chart-foot { display: flex; justify-content: space-between; margin-top: 4px; font-size: 12px; }

/* Pilotenkredite (Airline-Investitionen) */
.pl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 14px; }
.pl-card { margin: 0; }
.pl-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.pl-who { display: flex; align-items: center; gap: 11px; min-width: 0; }
.pl-avatar { flex: 0 0 auto; width: 40px; height: 40px; border-radius: 50%; background: var(--navy-600); border: 1px solid var(--border); display: grid; place-items: center; font-weight: 700; font-size: 14px; color: var(--gold); }
.pl-badge { flex: 0 0 auto; font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: 999px; border: 1px solid var(--border); white-space: nowrap; }
.pl-badge.pl-active { background: rgba(95,210,154,0.14); color: var(--ok); border-color: rgba(95,210,154,0.4); }
.pl-badge.pl-wait { background: rgba(245,179,1,0.14); color: var(--gold); border-color: rgba(245,179,1,0.4); }
.pl-badge.pl-done { background: var(--navy-600); color: var(--silver-dim); }
.pl-figures { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 14px 0; }
.pl-fig { background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; }
.pl-fig-v { font-size: 15px; font-weight: 700; }
.pl-fig-l { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.4px; margin-top: 2px; }
.pl-prog-top { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 6px; }
.pl-bar { height: 9px; border-radius: 999px; background: var(--navy-900); border: 1px solid var(--border); overflow: hidden; margin-bottom: 6px; }
.pl-bar span { display: block; height: 100%; border-radius: 999px; transition: width 0.3s; }
.pl-next { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border); line-height: 1.5; }

/* Aktien-Handelspanel: Modus-Umschalter (€-Betrag / Stückzahl), Schnellwahl, Stück-Verkauf */
/* Handels-Panel: eigene, spezifischere Layout-Regeln (das globale .sv-actions weiter unten macht sonst eine
   volle Spalte → übermäßig breites Eingabefeld). Kompakte Zeile: Eingabefeld gedeckelt + Knopf daneben. */
.trade-panel .sv-actions { flex-direction: row; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.trade-panel .sv-actions input[type="number"] { flex: 0 1 200px; max-width: 220px; min-width: 120px; padding: 9px 12px; border-radius: 9px; font-size: 15px; text-align: right; }
.trade-panel .sv-actions button { flex: 0 0 auto; }
.trade-modes { display: inline-flex; gap: 4px; margin: 6px 0 12px; padding: 3px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 999px; }
.trade-mode { padding: 6px 16px; border: none; border-radius: 999px; background: transparent; color: var(--muted); font-size: 13px; font-weight: 600; }
.trade-mode:hover { background: var(--navy-700); color: var(--text); }
.trade-mode.active { background: var(--gold); color: var(--gold-ink); }
.trade-quick { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-top: 8px; }
.trade-qadd { padding: 4px 11px; font-size: 13px; background: var(--navy-700); color: var(--text); border: 1px solid var(--border); border-radius: 999px; }
.trade-qadd:hover { border-color: var(--gold); color: var(--gold); background: var(--navy-700); }
.trade-sell-box { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border); }
.trade-sell-box .sv-actions input[type="number"] { flex: 1 1 90px; min-width: 80px; }

/* ===== Sparen & Festgeld — Neugestaltung (Konto-Karten) ===== */
.sv2-kpis { margin-bottom: 16px; }
.sv2-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; margin-top: 10px; }
.sv2-acct { display: flex; flex-direction: column; gap: 4px; border-top: 3px solid var(--border); }
.sv2-acct.tg { border-top-color: #5fd29a; }
.sv2-acct.fg { border-top-color: #7aa2ff; }
.sv2-primary { border-top-color: var(--gold); outline: 1px solid rgba(245,179,1,0.35); }
.sv2-acct-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.sv2-badge { font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 999px; background: var(--navy-700); border: 1px solid var(--border); color: var(--muted); }
.sv2-badge.tg { color: #5fd29a; } .sv2-badge.fg { color: #7aa2ff; }
.sv2-badge.primary { color: var(--gold); background: rgba(245,179,1,0.14); border-color: var(--gold); }
.sv2-bank { font-weight: 600; }
.sv2-bal { font-size: 22px; font-weight: 800; }
.sv2-bal.gold { color: var(--gold); }
.sv2-actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 6px; }
.sv2-mat { margin-top: 8px; }
.sv2-matbar { height: 8px; border-radius: 6px; background: var(--navy-700); border: 1px solid var(--border); overflow: hidden; margin-bottom: 4px; }
.sv2-matbar span { display: block; height: 100%; background: #7aa2ff; border-radius: 6px 0 0 6px; }
.sv2-open { margin-top: 10px; }

/* ===== Bankkonto — einheitliche KPI-Bänder & Kategoriebalken ===== */
/* Bankkonto-Kennzahlenreihe: breitere Mindestkacheln, damit die 6 Kacheln bei der Mindestgröße des
   Appfensters in ZWEI Reihen umbrechen (Saldo rutscht in Reihe 2) und bei weitem Fenster in einer Reihe
   stehen (Nutzervorgabe 2026-07-23). */
.bk-kpis { margin-bottom: 16px; grid-template-columns: repeat(auto-fit, minmax(175px, 1fr)); }
/* Bankkonto-Kacheln + Einnahmen/Ausgaben-Kopfzeilen zentriert (Nutzer-Vorgabe 2026-07-23). */
.bk-kpis .kpi { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.bk-kpis .kpi .label { text-align: center; }
.fin-income > summary, .fin-expense > summary { justify-content: center; }
.bk-finrow { padding: 7px 0; }
.bk-finrow-top { display: flex; justify-content: space-between; gap: 8px; font-size: 14px; }
.bk-finbar { height: 6px; border-radius: 4px; background: var(--navy-900); border: 1px solid var(--border); overflow: hidden; margin-top: 4px; }
.bk-finbar span { display: block; height: 100%; border-radius: 4px; }
.bk-finbar .pos { background: var(--ok); }
.bk-finbar .neg { background: var(--danger); }

/* ===== Portfolio — Donut-Kreisdiagramm der Depotaufteilung ===== */
.pf-chart-card { margin-bottom: 16px; }
.pf-chart { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.pf-donut { width: 168px; height: 168px; flex: 0 0 auto; }
.pf-donut circle { transition: stroke-width .15s ease; }
.pf-donut circle:hover { stroke-width: 25; }
.pf-donut-top { fill: var(--gold, #f5b301); font-size: 17px; font-weight: 700; }
.pf-donut-sub { fill: var(--muted, #9fb0c8); font-size: 11px; }
.pf-legend { list-style: none; margin: 0; padding: 0; flex: 1 1 200px; min-width: 200px; display: flex; flex-direction: column; gap: 8px; }
.pf-legend li { display: flex; align-items: center; gap: 10px; font-size: 14px; }
.pf-dot { width: 12px; height: 12px; border-radius: 3px; flex: 0 0 auto; }
.pf-leg-name { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-leg-amt { color: var(--muted); white-space: nowrap; font-size: 13px; }
.pf-leg-pct { font-weight: 600; color: var(--text); min-width: 38px; text-align: right; }
@media (max-width: 420px) { .pf-chart { justify-content: center; } }
/* Wiederkehrende Ausgaben */
.fin-recurring { margin-top: 12px; }
.fin-recurring > summary { cursor: pointer; }
.rec-group { margin-top: 8px; }
.rec-rhythm { font-size: 12px; text-transform: uppercase; letter-spacing: .4px; color: var(--muted); margin: 6px 0 2px; }
/* Erste-Tagesgeld-CTA */
.cta-card { border: 1px solid var(--gold); margin-bottom: 12px; }
.cta-card strong { display: block; margin-bottom: 4px; }
/* Staatsanleihen */
.bond-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--navy-700); margin-bottom: 8px; }
.bond-flag { flex: 0 0 auto; display: inline-flex; }
.flagimg { width: 27px; height: 18px; border-radius: 3px; box-shadow: 0 0 0 1px rgba(0,0,0,.18); display: inline-block; vertical-align: middle; }
.bond-name .flagimg { margin-right: 7px; }
.bond-row .sr-name { display: flex; align-items: center; gap: 10px; min-width: 0; }
.bond-row .sr-price { text-align: right; font-weight: 700; white-space: nowrap; display: flex; flex-direction: column; }
.bond-row .sr-chg { font-weight: 400; }
.bond-terms { flex-wrap: wrap; }
.bond-term { flex: 1 1 auto; min-width: 80px; padding: 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--navy-700); color: var(--text); cursor: pointer; }
.bond-term.active { border-color: var(--gold); color: var(--gold); font-weight: 600; }
.bond-hold { margin-bottom: 8px; }
#bond-country { width: 100%; }
.diff-tile.active { border-color: var(--gold); box-shadow: 0 0 0 1px var(--gold) inset; }
/* Wohnort-Suche */
.home-suggest { display: flex; flex-direction: column; gap: 2px; margin-top: 4px; max-height: 220px; overflow-y: auto; }
.home-sug-item { text-align: left; background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; color: var(--text); cursor: pointer; }
.home-sug-item:hover { border-color: var(--gold); }
/* Karten-Standortwahl (Wohnort-Widget + Zuhause-Markt): kompakte Leaflet-Karte mit klickbarem Marker. */
.loc-pick-map { height: 280px; margin-top: 8px; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; cursor: crosshair; }
.diff-tile .muted-note { margin-top: 6px; }
.stock-ico { flex: 0 0 auto; width: 32px; height: 32px; border-radius: 22%; overflow: hidden; display: inline-flex; }
.stock-ico svg { width: 100%; height: 100%; display: block; }
.stock-head-name { display: flex; align-items: center; gap: 10px; }
/* „Beliebt" — 2 Reihen à 5 */
.market-section-static { margin: 16px 0 8px 0; }
.popular-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-bottom: 8px; }
.popular-card { display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 10px 6px; background: var(--navy-600); border: 1px solid var(--border); border-radius: 10px; cursor: pointer; text-align: center; }
.popular-card:hover { border-color: var(--gold); }
.popular-card .stock-ico { width: 34px; height: 34px; font-size: 13px; }
.pc-name { font-size: 11px; font-weight: 600; line-height: 1.15; }
.pc-chg { font-size: 11px; }
@media (max-width: 640px) { .popular-grid { grid-template-columns: repeat(3, 1fr); } }
.sr-spark .stock-svg { height: 36px; border: none; background: transparent; }
.sr-price { text-align: right; font-variant-numeric: tabular-nums; }
.sr-chg { display: block; font-size: 12px; }
.stock-chart.big .stock-svg { height: 200px; }
.stock-row.compact { grid-template-columns: 1fr 130px; }
@media (max-width: 560px) { .stock-row { grid-template-columns: 1fr 80px; } .sr-spark { display: none; } }
/* Portfolio-Kopf */
.pf-head .pf-value { font-size: 30px; font-weight: 700; margin: 2px 0; }
/* Aktienmarkt: anklickbare Abschnitte + Filter */
.market-section { cursor: pointer; margin: 16px 0 8px 0; }
.market-section:hover { color: var(--gold); }
.filter-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 10px; }
.filter-chip { padding: 6px 12px; border-radius: 16px; border: 1px solid var(--border); background: var(--navy-900); color: var(--text); cursor: pointer; font-size: 13px; }
.filter-chip.active { background: var(--gold); color: #1a1a1a; border-color: var(--gold); font-weight: 600; }
.filter-clear { margin-left: auto; width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--border); background: var(--navy-600); color: var(--text); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: 0; line-height: 1; font-size: 15px; }
/* Filter-Bottom-Sheet (von unten, Hintergrund bleibt sichtbar) */
.sheet-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 1000; }
.filter-sheet { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1001; max-height: 70vh; overflow-y: auto; background: var(--navy-700, var(--navy-600)); border-top: 1px solid var(--border); border-radius: 14px 14px 0 0; padding: 14px 16px 20px; box-shadow: 0 -8px 24px rgba(0,0,0,.4); animation: sheetUp .2s ease-out; }
@keyframes sheetUp { from { transform: translateY(100%); } to { transform: translateY(0); } }
.sheet-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.sheet-close { background: var(--gold); color: #1a1a1a; border: none; border-radius: 8px; padding: 6px 14px; cursor: pointer; font-weight: 600; }
.sheet-opts { display: flex; flex-wrap: wrap; gap: 8px; }
.sheet-opt { padding: 8px 12px; border-radius: 10px; border: 1px solid var(--border); background: var(--navy-900); color: var(--text); cursor: pointer; font-size: 13px; }
.sheet-opt.active { background: var(--gold); color: #1a1a1a; border-color: var(--gold); font-weight: 600; }
.sheet-opt.active::before { content: '✓ '; }
.fin-income { border-top: 3px solid var(--ok); }
.fin-expense { border-top: 3px solid var(--danger); }
.fin-row { display: flex; justify-content: space-between; padding: 5px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
.fin-row:last-child { border-bottom: none; }
.ok-text { color: var(--ok); }
/* Slider-Label + Kredit-Vorschau */
.slider-label { display: block; margin: 12px 0 4px 0; font-size: 13px; }
.slider-label input[type="range"] { width: 100%; margin-top: 6px; }
.loan-quote { font-size: 13px; margin: 6px 0; min-height: 18px; }
/* Banken: Reiter + Angebote */
.bank-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.bank-tab { padding: 8px 16px; border-radius: 8px 8px 0 0; border: 1px solid var(--border); background: var(--navy-900); color: var(--muted); cursor: pointer; font-size: 14px; }
.bank-tab.active { background: var(--navy-600); color: var(--text); border-bottom-color: var(--navy-600); font-weight: 600; }
.bank-tab-head { margin-bottom: 12px; }
.bank-offer .offer-head { display: flex; align-items: baseline; gap: 8px; }
.bank-offer .offer-amt { font-size: 22px; font-weight: 700; }
.danger-btn { background: var(--danger); color: #fff; border: none; }
.danger-btn:hover { filter: brightness(1.1); }
/* Auto-Update-Hinweisleiste (unten rechts) */
.update-bar { position: fixed; right: 16px; bottom: 16px; z-index: 9999; background: var(--navy-600); border: 1px solid var(--gold); color: var(--text); padding: 10px 14px; border-radius: 8px; font-size: 13px; box-shadow: 0 6px 20px rgba(0,0,0,.4); display: flex; align-items: center; gap: 10px; }
.efb-bar { bottom: 70px; border-color: var(--accent, #4ea1ff); }
/* Client-Version: steht seit 2026-07-20 unten rechts IM Kopfkasten des Benutzerkontos statt dauerhaft
   unten links über der Oberfläche. */
/* Überschrift und rechte Randangabe (Client-Version) in EINER Zeile — die Version bekommt so keine
   eigene Zeile mehr und sitzt auf Höhe des Titels statt unten in der Ecke. */
.page-head-titlerow { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; }
/* Kleines Werkzeug oben rechts im Kopfkasten (z. B. die Feierabend-Heimfahrt-Grenze). */
.page-head-tool { position: absolute; right: 22px; top: 18px; display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted); }
.page-head-tool select { font-size: 12px; padding: 3px 6px; border-radius: 7px; border: 1px solid var(--border); background: var(--navy-900); color: var(--text); }
@media (max-width: 700px) { .page-head-tool { position: static; margin-top: 10px; justify-content: flex-start; } }
.page-head-version { flex: 0 0 auto; color: var(--muted); font-size: 11px; font-variant-numeric: tabular-nums; opacity: .7; user-select: text; white-space: nowrap; }
/* Ausstattungs-Zustand & Wartung */
.eqm-list { display: flex; flex-direction: column; gap: 6px; margin-top: 6px; }
.eqm-row { display: flex; align-items: center; gap: 10px; }
.eqm-name { flex: 1 1 auto; font-size: 13px; }
.eqm-row .cond-track { flex: 0 0 120px; }
.eqm-val { flex: 0 0 44px; text-align: right; font-size: 12px; font-variant-numeric: tabular-nums; }
.eq-cond-mini { font-size: 11px; margin-top: 3px; text-align: center; }
.cfg-sum-row { padding: 2px 0; }
.table-scroll { overflow-x: auto; }
.fd-left { display: flex; flex-direction: column; gap: 16px; }
.cf-seat { cursor: pointer; }
.cf-seat:hover { stroke: #ff6b6b; stroke-width: 2; }
rect.seat-hl { stroke: #ff6b6b; stroke-width: 2.6; }
tr.pax-hl { outline: 2px solid var(--gold); background: var(--navy-600); }
.info-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.info-table td { padding: 5px 4px; border-bottom: 1px solid var(--border); }
.info-table td:last-child { text-align: right; font-weight: 600; }
/* Varianten-Auswahl im Kaufmenü: Vergleichstabelle + Hervorhebung der gewählten Baureihe. */
.info-table th { padding: 5px 4px; border-bottom: 1px solid var(--border); text-align: left; font-weight: 600; color: var(--muted); }
.info-table th:last-child { text-align: right; }
.cf-variant-info { border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; }
.cf-variant-info summary { cursor: pointer; font-weight: 600; }
.cf-variant-info tr.cfv-cur td { background: rgba(245, 179, 1, 0.08); }
.cf-variant-info tr.cfv-cur td:first-child { box-shadow: inset 3px 0 0 var(--gold); }
/* Livery-Box rechts neben dem Sitzplan (Kauf/Umrüstung): Dropdown + großes Symbol darunter. */
.cf-plane-row { display: flex; gap: 14px; align-items: stretch; }
.cf-plane-row .cf-plane { flex: 1; min-width: 0; }
.cf-livery-box { width: 176px; flex: none; display: flex; flex-direction: column; gap: 10px; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: 8px; padding: 10px; }
.cf-livery-box label { display: flex; align-items: center; gap: 8px; margin: 0; font-weight: 600; }
.cf-livery-box select { max-width: 118px; }
.cf-livery-box img { width: 132px; height: 132px; object-fit: contain; }
/* Flugplatz-Punkte der Hub-Karte (zoomabhängig): groß = kräftig, klein = dezent. */
.apt-dot { border-radius: 50%; border: 1px solid #0b1220; box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); }
.apt-large { background: #f5b301; }
.apt-medium { background: #6fb0c9; }
.apt-small { background: #7a8699; opacity: 0.85; }
/* Untergruppen-Kopfzeile (ceo/neo bzw. Passagier/Frachter) in der Vergleichstabelle. */
.cf-variant-info tr.cfv-group td { padding-top: 10px; font-weight: 700; color: var(--muted); text-transform: uppercase; font-size: 11px; letter-spacing: 0.06em; border-bottom: 1px solid var(--border); }
/* Strecken-Filtersystem: sauber sortiertes Filterpanel (Suche + Feld-Raster mit beschrifteten Feldern). */
.route-filters { background: var(--navy-900); border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; margin-bottom: 14px; }
.route-filters .rf-row { display: flex; gap: 10px; align-items: center; }
.route-filters .rf-search-row { margin-bottom: 12px; }
.route-filters .rf-input { flex: 1; min-width: 160px; padding: 9px 12px; border-radius: 9px; background: var(--navy-700); border: 1px solid var(--border); color: var(--text); font-size: 14px; }
/* Schmaleres Suchfeld, damit Hersteller/Kategorie/Sortieren in EINE Reihe passen (Nutzervorgabe 2026-07-23). */
.route-filters .rf-input.rf-input-slim { flex: 1 1 180px; min-width: 130px; }
.route-filters .rf-reset { flex: 0 0 auto; }
.route-filters .rf-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; align-items: end; }
.route-filters .rf-field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.route-filters .rf-field > span { font-size: 11px; font-weight: 600; letter-spacing: .02em; text-transform: uppercase; color: var(--muted); }
.route-filters .rf-field select, .route-filters .rf-field input { padding: 8px 10px; border-radius: 8px; background: var(--navy-700); border: 1px solid var(--border); color: var(--text); font-size: 13px; width: 100%; }
.route-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.route-tab { padding: 8px 16px; background: var(--navy-600); border: 1px solid var(--border); border-radius: 999px; color: var(--muted); cursor: pointer; font-size: 13px; font-weight: 600; }
.route-tab:hover { color: var(--text); }
.route-tab.active { background: var(--gold); border-color: var(--gold); color: var(--gold-ink); }
.spare-svg { display: block; }
.spare-emoji { display: inline-block; text-align: center; }
/* Teile-Shop. */
.spare-shop-head { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.spare-sysfilter { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.spare-sysbtn { padding: 6px 13px; border-radius: 999px; border: 1px solid var(--border); background: var(--navy-700); color: var(--muted); font-size: 13px; font-weight: 600; cursor: pointer; }
.spare-sysbtn:hover { color: var(--text); }
.spare-sysbtn.active { background: var(--gold); border-color: var(--gold); color: var(--gold-ink); }
.spare-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; margin-top: 14px; }
.spare-card { display: flex; flex-direction: column; gap: 8px; padding: 14px; border-radius: 14px; background: var(--navy-800); border: 1px solid var(--border); border-top: 4px solid var(--sys, var(--border)); }
.spare-card-img { align-self: center; width: 96px; height: 96px; display: flex; align-items: center; justify-content: center; background: color-mix(in srgb, var(--sys, #888) 12%, transparent); border-radius: 14px; }
.spare-card-name { font-weight: 700; font-size: 14px; text-align: center; }
.spare-card-meta { display: flex; justify-content: space-between; align-items: center; font-size: 12px; }
.spare-badge { background: color-mix(in srgb, var(--sys, #888) 22%, transparent); color: var(--text); border-radius: 999px; padding: 2px 9px; font-weight: 600; }
.spare-card-buy { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-top: auto; padding-top: 6px; border-top: 1px solid var(--border); }
.spare-card-buy > strong { color: var(--gold); }
.spare-buyrow { display: inline-flex; gap: 6px; align-items: center; }
.spare-qty { width: 48px; padding: 6px 6px; border-radius: 7px; background: var(--navy-700); border: 1px solid var(--border); color: var(--text); text-align: center; }
.weight-panel { margin-top: 14px; padding: 12px; background: var(--navy-600); border: 1px solid var(--border); border-radius: 10px; }
.weight-bar { height: 10px; border-radius: 6px; background: rgba(255,255,255,0.08); overflow: hidden; margin: 8px 0 6px; }
.weight-fill { height: 100%; border-radius: 6px; transition: width .2s ease; }
.weight-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.weight-table td { padding: 3px 0; }
.weight-table td:last-child { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.weight-table .weight-sum td { border-top: 1px solid var(--border); padding-top: 6px; font-weight: 700; }
.weight-table .wt-sub { color: var(--muted); padding-left: 14px; font-size: 12px; }
.wt-over { color: var(--danger); font-weight: 700; }
.simbrief-panel { border-color: var(--gold); }
/* Treibstoff-Regelverstoß-Warnung (aktiver Flug + Auswertung) */
.fuel-warn-banner { margin: 0 0 12px; padding: 10px 14px; border-radius: 8px; font-size: 13px; font-weight: 600;
  color: #ffd9d9; background: rgba(255,107,107,0.16); border: 1px solid var(--danger); }
/* Charter-Rückflug: Sim-/Offline-Wahl im Popup. */
.charter-choice { display: flex; flex-direction: column; gap: 8px; margin-top: 6px; }
/* Verschleißteile-Fällig-Karte (Werkstätten). */
.ws-wearcard { margin-top: 14px; }
.ws-wear-ac { padding: 8px 0; border-top: 1px solid var(--border); }
.ws-wear-ac:first-of-type { border-top: 0; }
.ws-wear-reg { font-weight: 600; margin-bottom: 4px; }
.ws-wear-row { display: flex; align-items: center; gap: 10px; padding: 3px 0; flex-wrap: wrap; }
.ws-wear-lbl { flex: 0 0 190px; }
.ws-wear-bar { flex: 1 1 90px; height: 7px; border-radius: 4px; background: var(--navy-900); overflow: hidden; min-width: 80px; }
.ws-wear-bar > span { display: block; height: 100%; background: var(--gold); }
.ws-wear-over .ws-wear-bar > span { background: var(--danger); }
.ws-wear-pct { flex: 0 0 78px; text-align: right; font-variant-numeric: tabular-nums; color: var(--muted); }
.ws-wear-over .ws-wear-pct { color: var(--danger); font-weight: 600; }
/* Aktiver Flug: Treibstoff + Zuladung nebeneinander in EINEM Kästchen (bricht bei schmalem Fenster um). */
.load-cols { display: flex; flex-wrap: wrap; gap: 8px 20px; }
.load-col { flex: 1 1 220px; min-width: 0; }
.load-col h4 { margin: 0 0 6px; font-size: 15px; }
.load-col + .load-col { border-left: 1px solid var(--border); padding-left: 20px; }
@media (max-width: 560px) { .load-col + .load-col { border-left: 0; padding-left: 0; } }
/* Treibstoff-Auswahl (Training/Checkflug): Tank-Füllstand + Slider */
/* Schalter „Treibstoff und Zuladung schreiben" in den Flugdetails — nur bei Narrow-/Wide-body sichtbar. */
.fd-inject { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; background: var(--navy-600);
  border: 1px solid var(--border); border-radius: 10px; cursor: pointer; }
.fd-inject input { margin-top: 3px; flex: 0 0 auto; }
.fd-inject > span { display: block; }
.fd-inject .muted-note { display: block; margin-top: 3px; }
.fd-fuel-sel { margin-top: 14px; padding: 12px 14px; background: var(--navy-600); border: 1px solid var(--border); border-radius: 10px; }
.fd-fuel-sel #fd-fuel-read { font-variant-numeric: tabular-nums; color: var(--gold); font-weight: 600; }
.fuel-gauge { height: 14px; border-radius: 7px; background: rgba(255,255,255,0.08); overflow: hidden; margin: 9px 0 8px; border: 1px solid var(--border); }
.fuel-gauge-fill { height: 100%; background: linear-gradient(90deg, #5fd29a, #f5b301); transition: width 0.05s linear; }
/* Reserve: die Tankuhr wird rot, damit der leere Tank auffaellt, bevor er die Fahrt verlaengert. */
.fuel-gauge-fill.low { background: linear-gradient(90deg, #d9534f, #f0894a); }
.fd-fuel-sel input[type=range] { width: 100%; accent-color: var(--gold); }
.fn-input { display: flex; align-items: stretch; margin-top: 6px; }
.fn-input .fn-prefix { display: flex; align-items: center; padding: 0 10px; background: var(--navy-600); border: 1px solid var(--border); border-right: none; border-radius: 8px 0 0 8px; color: var(--gold); font-weight: 700; }
.fn-input input { border-radius: 0 8px 8px 0; flex: 1; }
.cr-profile { width: 100%; height: 90px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 8px; margin: 4px 0 12px; }
.adminshop-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.adminshop-card { background: var(--navy-700); border: 1px solid var(--border); border-radius: 10px; padding: 10px; text-align: center; display: flex; flex-direction: column; gap: 6px; align-items: center; }
.adminshop-role { display: flex; flex-direction: column; gap: 2px; font-size: 11px; color: var(--muted); width: 100%; }
.adminshop-role select { font-size: 12px; }
.adminshop-name { font-size: 13px; font-weight: 600; }
.adminshop-price { display: flex; align-items: stretch; width: 100%; }
.adminshop-price .fn-prefix { display: flex; align-items: center; padding: 0 8px; background: var(--navy-600); border: 1px solid var(--border); border-right: none; border-radius: 8px 0 0 8px; color: var(--gold); font-weight: 700; }
.adminshop-price input { border-radius: 0 8px 8px 0; flex: 1; min-width: 0; }
.pax-details > summary { cursor: pointer; padding: 6px 0; }
.pax-details[open] > summary { margin-bottom: 8px; }
/* Aufklappbare Theorie-Lizenzabschnitte */
.theory-lic > summary { cursor: pointer; display: flex; align-items: center; gap: 10px; list-style: none; padding: 2px 0; }
.theory-lic > summary::-webkit-details-marker { display: none; }
.theory-lic > summary::before { content: '▸'; color: var(--gold); transition: transform 0.15s; }
.theory-lic[open] > summary::before { transform: rotate(90deg); }
.theory-lic .theory-lic-title { font-weight: 700; font-size: 1.05rem; flex: 1; }
.theory-lic-body { margin-top: 12px; }
/* Admin: aufklappbare Theorie-Themen + Frage-Editor */
.theory-admin-cat { border: 1px solid var(--border); border-radius: 10px; padding: 8px 12px; margin-bottom: 10px; }
.theory-admin-cat > summary { cursor: pointer; font-weight: 600; list-style: none; }
.theory-admin-cat > summary::-webkit-details-marker { display: none; }
.theory-admin-cat > summary::before { content: '▸'; color: var(--gold); margin-right: 8px; }
.theory-admin-cat[open] > summary::before { content: '▾'; }
.theory-admin-cat-body { margin-top: 10px; }
.theory-q-item { border-top: 1px solid var(--border); padding: 6px 0; }
.theory-q-item > summary { cursor: pointer; font-size: 13px; }
.theory-q-edit { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 8px; }
.theory-q-edit label { display: flex; flex-direction: column; font-size: 12px; gap: 3px; }
.theory-q-edit .row-gap { grid-column: 1/-1; display: flex; gap: 8px; }
/* METAR-Wetterbox (Start/Ziel) */
.metar-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 720px) { .metar-grid { grid-template-columns: 1fr; } }
.metar-col { background: var(--navy-600); border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; }
.metar-head { font-weight: 600; margin-bottom: 8px; }
.metar-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.metar-chip { background: var(--navy-700); border: 1px solid var(--border); border-radius: 999px; padding: 3px 9px; font-size: 12px; }
.metar-raw { margin-top: 8px; font-family: ui-monospace, "Cascadia Code", Consolas, monospace; font-size: 11.5px; color: var(--muted); word-break: break-word; }

/* Aufklappbare „Kosten / Flugstunde"-Transaktionszeile */
tr.tx-hourly { cursor: pointer; }
tr.tx-hourly:hover { background: var(--navy-700); }
.tx-caret { display: inline-block; width: 0; height: 0; border-left: 5px solid var(--gold); border-top: 4px solid transparent; border-bottom: 4px solid transparent; margin-right: 7px; vertical-align: middle; transition: transform 0.15s; }
tr.tx-hourly.open .tx-caret { transform: rotate(90deg); }
.tx-detail-box { padding: 4px 10px 8px; display: flex; flex-direction: column; gap: 4px; }
.tx-detail-row { display: grid; grid-template-columns: 1.6fr 1fr 0.6fr; gap: 10px; font-size: 13px; }
.pax-table { width: 100%; }
.pax-table th { font-size: 12px; }
.pax-table td { font-size: 13px; }
.pax-purpose { font-size: 12px; color: var(--muted, #94a3b8); white-space: nowrap; }
.pax-itin { white-space: nowrap; }
.pax-arrow { color: var(--accent, #38bdf8); font-weight: 700; padding: 0 2px; }
.pax-badges { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.pax-badge { font-size: 11px; padding: 1px 6px; border-radius: 999px; background: var(--navy-600, rgba(148,163,184,0.14)); color: var(--muted, #94a3b8); white-space: nowrap; }
.pax-badge.pax-loyal { background: rgba(245,179,1,0.16); color: #f5b301; }
/* Investitionen — „Anlage kaufen" (Sachwerte): Karten-Auswahl + Projektion */
.aia-budget { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:10px; }
.aia-budget strong { font-size:1.15rem; color:var(--gold); }
.aia-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:10px; }
.aia-card { text-align:left; background:var(--panel,#0e1c38); border:1.5px solid rgba(255,255,255,.10); border-radius:12px; padding:10px 11px; cursor:pointer; transition:border-color .15s, transform .1s, box-shadow .15s; color:inherit; }
.aia-card:hover { border-color:rgba(127,208,255,.55); transform:translateY(-1px); }
.aia-card.sel { border-color:var(--gold,#f5b301); box-shadow:0 0 0 1px var(--gold,#f5b301) inset; }
.aia-card-top { display:flex; align-items:center; gap:7px; }
.aia-card-top .aia-ic { font-size:1.25rem; }
.aia-card-top .aia-nm { font-weight:600; flex:1; line-height:1.15; }
.aia-risk { font-size:.68rem; padding:2px 7px; border-radius:999px; color:var(--rc,#8aa0c6); background:color-mix(in srgb, var(--rc,#8aa0c6) 18%, transparent); border:1px solid color-mix(in srgb, var(--rc,#8aa0c6) 45%, transparent); white-space:nowrap; }
.aia-fc { margin:7px 0 5px; }
.aia-metarow { display:flex; justify-content:space-between; align-items:center; font-size:.78rem; gap:8px; }
.aia-volwrap { display:flex; align-items:center; gap:5px; color:var(--muted,#8aa0c6); }
.aia-vol { display:inline-block; width:46px; height:6px; border-radius:3px; background:rgba(255,255,255,.12); overflow:hidden; }
.aia-vol span { display:block; height:100%; }
.aia-blurb { margin-top:6px; font-size:.74rem; line-height:1.25; }
.aia-buybox { margin-top:12px; }
.aia-chips { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0; }
.aia-chip { padding:4px 12px; border-radius:999px; border:1px solid rgba(255,255,255,.16); background:rgba(255,255,255,.05); cursor:pointer; font-size:.8rem; }
.aia-chip:hover { border-color:var(--gold,#f5b301); }
.aia-proj { background:rgba(127,208,255,.06); border:1px solid rgba(127,208,255,.18); border-radius:10px; padding:10px 12px; margin:8px 0; }
.aia-proj-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; }
.aia-proj-l { font-size:.72rem; color:var(--muted,#8aa0c6); }
.aia-proj-v { font-weight:600; font-size:1.02rem; }
tr.pax-noshow { opacity: 0.5; }
tr.pax-removed { opacity: 0.6; text-decoration: line-through; background: rgba(255,107,107,.10); }
tr.pax-removed td:first-child { text-decoration: none; }
.ev-tag.ev-bad { background: rgba(255,107,107,.18); color: #ff6b6b; }
/* Passagierzufriedenheit im Flugbericht */
.fr-pax-pn { display: flex; flex-direction: column; gap: 2px; margin: 4px 0; }
.fr-voices { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
.fr-voice { font-style: italic; font-size: 13px; }
.inbox-item .review-text { font-style: italic; margin: 4px 0; }
/* Passagier-Bewertungs-Feed (Airline) */
.review-list { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.review-item { padding: 8px 10px; border-radius: 8px; background: var(--panel-2, rgba(148,163,184,0.08)); }
.review-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-size: 12px; }
.review-stars { color: #f59e0b; letter-spacing: 1px; }
.review-text { font-size: 13px; margin-top: 3px; }

/* Theorie / Prüfung */
.theory-cats { display: flex; flex-direction: column; gap: 8px; margin: 8px 0; }
.quiz-q { font-size: 16px; font-weight: 600; margin: 0 0 14px; }
.quiz-choices { display: flex; flex-direction: column; gap: 8px; }

/* Bild links neben Frage + Antworten. Die Bildspalte wird durch align-items:stretch auf die Höhe
   des Frageblocks gezogen → das Bild skaliert dynamisch mit dem Platzbedarf von Frage und Antworten. */
.quiz-layout { display: flex; gap: 16px; align-items: stretch; }
.quiz-layout .quiz-body { flex: 1 1 auto; min-width: 0; }
.quiz-figure { flex: 0 0 auto; max-width: 44%; min-height: 130px; display: flex; align-items: flex-start; justify-content: center; }
.quiz-figure img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; border-radius: 10px; border: 1px solid var(--border); background: #fff; cursor: zoom-in; transition: filter 0.12s; }
.quiz-figure img:hover { filter: brightness(1.05); }
@media (max-width: 760px) { .quiz-layout { flex-direction: column; } .quiz-figure { max-width: 100%; min-height: 0; } .quiz-figure img { max-height: 240px; } }

/* Vollbild-Lightbox für vergrößerte Fragebilder. */
.lightbox { position: fixed; inset: 0; z-index: 4000; background: rgba(4,8,20,0.9); display: flex; align-items: center; justify-content: center; padding: 24px; opacity: 0; transition: opacity 0.15s; cursor: zoom-out; }
.lightbox.open { opacity: 1; }
.lightbox-img { max-width: 94vw; max-height: 90vh; object-fit: contain; border-radius: 10px; box-shadow: 0 12px 48px rgba(0,0,0,0.6); background: #fff; }
.lightbox-close { position: fixed; top: 18px; right: 22px; width: 44px; height: 44px; border-radius: 50%; background: rgba(0,0,0,0.55); color: #fff; border: 1px solid rgba(255,255,255,0.3); font-size: 20px; line-height: 1; cursor: pointer; }
.lightbox-close:hover { background: rgba(0,0,0,0.8); }

/* Admin: Bildauswahl (URL/Upload) je Theoriefrage. */
.qimg-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 2px; }
.qimg-preview img { max-height: 70px; max-width: 150px; border-radius: 6px; border: 1px solid var(--border); background: #fff; vertical-align: middle; }
.quiz-choice { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; text-align: left; padding: 11px 14px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; color: var(--text); cursor: pointer; font-size: 14px; }
/* Antwort-Feedback INLINE in der jeweiligen Antwortzeile (statt separater Box) — kompakt, nur die
   gewählte Zeile bekommt es; die übrigen Zeilen bleiben unverändert groß. */
.quiz-fb-inline { flex-basis: 100%; margin-left: 38px; font-size: 12.5px; line-height: 1.3; font-weight: 400; }
.quiz-fb-inline strong { font-weight: 700; margin-right: 4px; }
.quiz-choice:hover:not(:disabled) { border-color: var(--gold); }
.quiz-letter { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 7px; background: var(--navy-600); border: 1px solid var(--border); display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; }
.quiz-text { flex: 1 1 auto; }
.quiz-choice.correct { background: rgba(95,210,154,0.18); border-color: var(--ok); color: var(--ok); }
.quiz-choice.correct .quiz-letter { background: var(--ok); color: #08311d; border-color: var(--ok); }
.quiz-choice.wrong { background: rgba(214,90,90,0.18); border-color: var(--danger); color: #ffd7d7; }
.quiz-choice.wrong .quiz-letter { background: var(--danger); color: #2a0000; border-color: var(--danger); }
/* Trainings-Kopf: Fortschritt + Punktestand */
.quiz-top { display: flex; justify-content: space-between; align-items: center; font-size: 13px; margin-bottom: 8px; }
.quiz-count { color: var(--muted); }
.quiz-score { font-weight: 700; color: var(--gold); }
.quiz-prog { height: 7px; border-radius: 5px; background: var(--navy-900); border: 1px solid var(--border); overflow: hidden; margin-bottom: 14px; }
.quiz-prog > span { display: block; height: 100%; background: var(--gold); border-radius: 5px; transition: width .25s ease; }
.exam-q { padding: 12px 0; border-bottom: 1px solid var(--border); }
.exam-opts { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
.exam-opt { display: flex; gap: 10px; align-items: center; font-size: 14px; cursor: pointer; padding: 9px 12px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; }
.exam-opt:hover { border-color: var(--gold); }
.exam-opt:has(input:checked) { border-color: var(--gold); background: rgba(245,179,1,0.10); }
.exam-bar { margin-bottom: 14px; position: sticky; top: 0; background: var(--navy-800, var(--navy-700)); padding: 8px 0; z-index: 1; }
.exam-bar > span { display: block; font-size: 13px; color: var(--muted); margin-bottom: 6px; }
.exam-result { display: flex; align-items: center; gap: 18px; padding: 18px; border-radius: 10px; margin-bottom: 16px; border: 1px solid var(--border); flex-wrap: wrap; }
.exam-result.pass { background: rgba(95,210,154,0.14); border-color: var(--ok); }
.exam-result.fail { background: rgba(214,90,90,0.14); border-color: var(--danger); }
.exam-result-text { flex: 1 1 200px; }
.exam-result-banner { font-size: 16px; font-weight: 700; margin-bottom: 4px; }
.exam-review { display: flex; flex-direction: column; gap: 8px; }
.exam-rev { padding: 10px 12px; border-radius: 8px; border-left: 3px solid var(--border); background: var(--navy-700); }
.exam-rev.ok { border-left-color: var(--ok); }
.exam-rev.bad { border-left-color: var(--danger); }
.theory-hint { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 10px; margin: 4px 0 14px; border: 1px solid var(--border); background: var(--navy-700); }
.theory-hint.ok { border-color: var(--ok); background: rgba(95,210,154,0.12); }
.theory-hint.todo { border-color: var(--gold); background: rgba(245,179,1,0.10); }
.theory-hint .th-ico { font-size: 22px; line-height: 1; }
.theory-hint .th-text { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.theory-hint .th-text strong { font-size: 14px; }
.theory-hint .th-text span { font-size: 12px; color: var(--muted); }

/* ===== Theorie — neues Visual-System (Ring, Lernpfad, Karten, Verlauf) ===== */
button.ghost { background: transparent; color: var(--text); border: 1px solid var(--border); }
button.ghost:hover { background: var(--navy-700); }
/* Fortschrittsring */
.th-ring-val { fill: var(--text); font-size: 20px; font-weight: 700; }
.th-ring-sub { fill: var(--muted); font-size: 11px; }
/* Lizenz-Skilltree (zweispurig: Tragfläche / Hubschrauber) */
.skt-card { margin-bottom: 16px; }
.skt-root { display: flex; justify-content: center; margin: 6px 0 2px; }
.skt-rootnode { cursor: default; }
.skt-tracks { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 8px; }
@media (max-width: 720px) { .skt-tracks { grid-template-columns: 1fr; } }
.skt-col { display: flex; flex-direction: column; align-items: stretch; gap: 0; }
.skt-col-head { text-align: center; font-weight: 700; font-size: 14px; color: var(--text); padding: 6px 0; margin-bottom: 4px; border-bottom: 1px solid var(--border); }
.skt-node { display: flex; flex-direction: column; gap: 3px; padding: 11px 14px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 12px; color: var(--text); text-align: left; }
.skt-link { align-self: center; width: 2px; height: 14px; background: var(--border); }
.skt-ico { font-weight: 700; }
.skt-name { font-weight: 700; font-size: 14px; }
.skt-meta { font-size: 12px; color: var(--muted); }
.skt-state { font-size: 11px; color: var(--muted); }
.skt-earned { border-color: var(--ok); }
.skt-earned .skt-ico { color: var(--ok); }
.skt-available { border-color: var(--gold); cursor: pointer; }
.skt-available:hover { background: var(--navy-600); }
.skt-available .skt-ico, .skt-available .skt-state { color: var(--gold); }
.skt-locked { opacity: 0.5; }
/* Lizenz-Chips nach Spur gruppiert */
.lic-tracks { display: flex; flex-direction: column; gap: 8px; }
.lic-track { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.lic-track-tag { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--muted); min-width: 78px; }

/* ===== Skills-Menü (XP, Level & Skilltrees) ===== */
/* Tree-Auswahlleiste (9 Bereiche) */
.skl-treebar { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; margin-bottom: 16px; }
.skl-treecard { display: flex; align-items: center; gap: 10px; padding: 9px 12px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 12px; color: var(--text); text-align: left; position: relative; transition: border-color .15s, background .15s; }
.skl-treecard:hover { background: var(--navy-600); }
.skl-treecard.active { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset; }
.skl-tc-ring { flex: 0 0 auto; color: var(--accent); }
.skl-tc-body { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.skl-tc-ico { font-size: 16px; }
.skl-tc-label { font-size: 12.5px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.skl-free { position: absolute; top: 6px; right: 6px; font-size: 10.5px; font-weight: 800; padding: 2px 6px; border-radius: 999px; background: var(--gold); color: var(--gold-ink); }
/* Kopf des gewählten Trees */
.skl-head { display: flex; align-items: center; gap: 18px; margin-bottom: 14px; border-left: 3px solid var(--accent); }
.skl-head-ring { flex: 0 0 auto; color: var(--accent); }
.skl-head-info { flex: 1 1 auto; min-width: 0; }
.skl-head-info h3 { margin: 0 0 2px; }
.skl-head-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.skl-chip { font-size: 12px; padding: 4px 10px; border-radius: 999px; background: var(--navy-700); border: 1px solid var(--border); color: var(--muted); }
.skl-chip strong { color: var(--gold); }
.skl-reset { flex: 0 0 auto; align-self: flex-start; }
/* Verzweigungsgitter */
.skl-treewrap { overflow-x: auto; }
.skl-tree { display: flex; flex-direction: column; align-items: center; position: relative; }
.skl-edges { position: absolute; inset: 0; pointer-events: none; z-index: 0; overflow: visible; }
.skl-tier { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; position: relative; z-index: 1; }
.skl-tier-link { width: 2px; height: 18px; position: relative; z-index: 1; }
.skl-node { width: 168px; display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 12px 12px 11px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 14px; color: var(--text); text-align: center; transition: transform .12s, border-color .15s, background .15s; }
.skl-node-ico { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--navy-900); border: 1px solid var(--border); color: var(--muted); }
.skl-node-ico svg { width: 26px; height: 26px; }
.skl-node-name { font-size: 13px; font-weight: 700; line-height: 1.15; }
.skl-node-eff { font-size: 11.5px; color: var(--muted); }
.skl-node-sub { font-size: 10.5px; color: var(--muted); opacity: .85; }
.skl-pips { display: flex; gap: 3px; }
.skl-pip { width: 8px; height: 8px; border-radius: 50%; border: 1px solid var(--border); background: transparent; }
.skl-pip.on { background: var(--accent); border-color: var(--accent); }
/* Zustände */
.skl-locked { opacity: .5; }
.skl-available { border-color: var(--accent); cursor: pointer; }
.skl-available:hover { transform: translateY(-2px); background: var(--navy-600); }
.skl-available .skl-node-ico { color: var(--accent); border-color: var(--accent); }
.skl-available .skl-node-sub { color: var(--accent); }
.skl-owned { border-color: var(--accent); }
.skl-owned .skl-node-ico { color: var(--accent); border-color: var(--accent); background: color-mix(in srgb, var(--accent) 16%, var(--navy-900)); }
.skl-owned.skl-available:hover { transform: translateY(-2px); }
.skl-maxed { border-color: var(--ok); }
.skl-maxed .skl-node-ico { color: var(--ok); border-color: var(--ok); background: color-mix(in srgb, var(--ok) 18%, var(--navy-900)); }
.skl-maxed .skl-node-sub { color: var(--ok); }
/* Level-Up-Toast */
.skl-toast { position: fixed; right: 18px; bottom: 18px; z-index: 9000; display: flex; flex-direction: column; gap: 8px; }
.skl-toast-item { display: flex; align-items: center; gap: 10px; padding: 11px 15px; background: var(--navy-700); border: 1px solid var(--gold); border-radius: 12px; box-shadow: 0 8px 24px rgba(0,0,0,.4); animation: sklToastIn .3s ease; }
.skl-toast-ico { font-size: 22px; }
.skl-toast-txt strong { color: var(--gold); }
.skl-toast-txt span { display: block; font-size: 12px; color: var(--muted); }
@keyframes sklToastIn { from { transform: translateX(30px); opacity: 0; } to { transform: none; opacity: 1; } }
/* Lizenzkarte: Ring im Summary + Info-Chips */
.theory-lic-sum { align-items: center; }
.th-lic-ring { flex: 0 0 auto; display: inline-flex; }
.th-lic-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 12px; }
.th-chip { font-size: 12px; padding: 4px 10px; border-radius: 999px; background: var(--navy-700); border: 1px solid var(--border); color: var(--muted); }
.th-chip strong { color: var(--text); }
/* Kategorie-Zeile mit Trefferquoten-Balken */
.th-cat { display: flex; align-items: center; gap: 12px; padding: 10px 12px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; }
.th-cat-info { flex: 1 1 auto; min-width: 0; }
.th-catbar { height: 6px; border-radius: 4px; background: var(--navy-900); border: 1px solid var(--border); overflow: hidden; margin: 6px 0 4px; }
.th-catbar > span { display: block; height: 100%; border-radius: 4px; }
.th-cat-meta { font-size: 12px; color: var(--muted); }
.th-exam-cta { width: 100%; margin-top: 6px; }
/* Prüfungsverlauf als Karten */
.th-hist { display: flex; flex-direction: column; gap: 8px; }
.th-hist-item { display: grid; grid-template-columns: 1fr 90px auto; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 8px; border-left: 3px solid var(--border); background: var(--navy-700); }
.th-hist-item.pass { border-left-color: var(--ok); }
.th-hist-item.fail { border-left-color: var(--danger); }
.th-hist-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.th-hist-bar { height: 7px; border-radius: 5px; background: var(--navy-900); border: 1px solid var(--border); overflow: hidden; }
.th-hist-bar > span { display: block; height: 100%; }
.th-hist-item.pass .th-hist-bar > span { background: var(--ok); }
.th-hist-item.fail .th-hist-bar > span { background: var(--danger); }
.th-hist-side { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.th-hist-pct { font-size: 13px; font-weight: 600; }
@media (max-width: 560px) { .th-hist-item { grid-template-columns: 1fr auto; } .th-hist-bar { display: none; } }
/* Abschluss-/Ergebnis-Screen */
.th-finish { text-align: center; }
.th-finish-msg { font-size: 15px; margin: 14px 0 18px; }
.th-finish-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }

.theory-admin-cat { padding: 8px 0; border-bottom: 1px solid var(--border); }
.theory-admin-cat h4 { margin: 0 0 6px; }

/* Events */
.ev-tag { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 10px; background: var(--navy-600); border: 1px solid var(--border); color: var(--muted); white-space: nowrap; }
.ev-tag.ev-on { background: rgba(95,210,154,0.16); border-color: var(--ok); color: var(--ok); }
.ev-tag.ev-soon { background: rgba(245,179,1,0.16); border-color: var(--gold); color: var(--gold); }
.ev-tag.ev-off { background: var(--navy-600); border-color: var(--border); color: var(--muted); }

.route-link { color: var(--gold); text-decoration: none; font-weight: 600; }
.route-link:hover { text-decoration: underline; }
.hub-marker { font-size: 18px; text-align: center; filter: drop-shadow(0 0 2px rgba(0,0,0,0.8)); }
.hub-row { padding: 6px 0; border-bottom: 1px solid var(--border); font-size: 13px; }

/* Strecken-Menü (Karte links, Karten-Liste rechts) */
.strecken-grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 16px; align-items: start; }
.route-cards { display: flex; flex-direction: column; gap: 12px; }
.route-tile { width: 100%; }
@media (max-width: 1100px) { .strecken-grid { grid-template-columns: 1fr; } }

/* Neue Strecke erstellen */
/* Start-/Ziel-Hub mit Tausch-Button (für Rückfluglinien) */
.hub-pair { display: flex; gap: 10px; align-items: flex-end; }
.hub-pair label { flex: 1; min-width: 0; }
.hub-swap {
  flex: 0 0 auto; width: 38px; height: 34px; padding: 0; margin-bottom: 1px;
  display: grid; place-items: center; font-size: 17px; line-height: 1;
  background: var(--navy-600); color: var(--gold); border: 1px solid var(--border); border-radius: 8px;
}
.hub-swap:hover:not(:disabled) { background: var(--navy-700); border-color: var(--gold); }
.hub-swap:active:not(:disabled) { transform: translateY(1px); }
.hub-swap:disabled { opacity: 0.4; }

.create-grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 16px; align-items: start; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.form-grid label { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--muted); }
.form-grid input[type="range"] { margin-top: 6px; }
@media (max-width: 1100px) { .create-grid { grid-template-columns: 1fr; } }

/* Hub-Boxen (anklickbar) */
.hub-box-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; }
.hub-box { text-align: left; background: var(--navy-700); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px; color: var(--text); display: flex; flex-direction: column; gap: 8px; }
.hub-box:hover { border-color: var(--gold); }
.hub-box-head { font-size: 14px; }
.hub-slot-row { display: flex; gap: 14px; }
.hub-slot-row > div { font-size: 14px; font-weight: 600; }
/* Hub-Gesamtbewertung (Pax/Fracht) als Note-Badges */
.hub-ratings { display: flex; gap: 6px; flex-wrap: wrap; }
.hub-rating { font-size: 11px; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--border); background: var(--navy-600, rgba(148,163,184,0.14)); white-space: nowrap; }
.hub-rating b { font-size: 12px; }
.hub-grade-A { color: #5fd29a; border-color: rgba(95,210,154,0.45); }
.hub-grade-B { color: #86efac; }
.hub-grade-C { color: #fcd34d; }
.hub-grade-D { color: #fb923c; }
.hub-grade-E { color: #f87171; }
.hub-rating.hub-grade-na { color: var(--muted); }
/* Hero-Bewertungspanels (Übersicht-Tab) */
.hub-hero { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 4px; }
.hub-hero-card { background: var(--navy-800, var(--navy-700)); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; text-align: center; }
.hub-hero-card.hub-grade-A { border-color: rgba(95,210,154,0.45); }
.hub-hero-card.hub-grade-E { border-color: rgba(248,113,113,0.4); }
.hub-hero-label { font-size: 13px; color: var(--muted); }
.hub-hero-grade { font-size: 42px; font-weight: 800; line-height: 1.15; }
.hub-hero-card.hub-grade-A .hub-hero-grade { color: #5fd29a; }
.hub-hero-card.hub-grade-B .hub-hero-grade { color: #86efac; }
.hub-hero-card.hub-grade-C .hub-hero-grade { color: #fcd34d; }
.hub-hero-card.hub-grade-D .hub-hero-grade { color: #fb923c; }
.hub-hero-card.hub-grade-E .hub-hero-grade { color: #f87171; }
.hub-hero-card.hub-grade-na .hub-hero-grade { color: var(--muted); }
.hub-hero-stars { color: #f5b301; letter-spacing: 2px; font-size: 15px; }
#hub-tabs { margin-bottom: 12px; flex-wrap: wrap; }
@media (max-width: 700px) { .hub-hero { grid-template-columns: 1fr; } }
.fac-btns { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
/* „mini secondary" ist die neutrale Klein-Aktion (🔍 Details, Zurück, …). Die frühere GLOBALE
   Rot-Färbung (var(--danger)) stand versehentlich unscoped in der Facility-Sektion und färbte
   jeden dieser Knöpfe GUI-weit rot (Nutzerbericht 2026-07-22). Destruktives nutzt .mini.danger. */
button.mini.secondary { background: color-mix(in srgb, var(--navy-600) 82%, transparent); color: var(--text); border: 1px solid var(--border); border-radius: 8px; transition: border-color .12s, color .12s, background .12s; }
button.mini.secondary:hover { background: var(--navy-700); border-color: #f5b301; color: #ffd75e; }
/* Hub-Ausbauten-Registry (Ausstattung/Personal/Komfort/Sicherheit) */
.upg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.upg-item { background: var(--navy-700); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px; display: flex; flex-direction: column; gap: 4px; }
.upg-item.upg-owned { border-color: rgba(95, 210, 154, 0.5); background: rgba(95, 210, 154, 0.08); }
.upg-item.fac-disabled { opacity: 0.5; }
.upg-head { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.upg-ico { font-size: 18px; }
/* Hub-Zustandswerte-Dashboard */
.hs-list { display: flex; flex-direction: column; gap: 7px; margin-top: 6px; }
/* Balken (1fr, darf schrumpfen via min-width:0) + rechter Wert (nimmt seine Textbreite, bricht auf schmalen
   Fenstern um) — so ragt der Text (z. B. „≤ 12 t/Flug (…)") nie über den Kasten hinaus. */
.hs-row { display: grid; grid-template-columns: minmax(84px, 130px) minmax(24px, 1fr) minmax(0, max-content); align-items: center; gap: 10px; font-size: 13px; }
.hs-bar { height: 10px; border-radius: 6px; background: var(--navy-600, rgba(148,163,184,0.18)); overflow: hidden; min-width: 0; }
.hs-bar > span { display: block; height: 100%; background: linear-gradient(90deg, #38bdf8, #5fd29a); }
.hs-row > strong { justify-self: end; text-align: right; min-width: 0; overflow-wrap: anywhere; }
.fr-hubevents { margin-top: 8px; padding: 8px 10px; border-radius: 8px; background: var(--navy-700, rgba(148,163,184,0.08)); }
@media (max-width: 900px) { .hs-row { grid-template-columns: minmax(72px, 110px) minmax(20px, 1fr) minmax(0, max-content); } }
.milestone { display: flex; gap: 12px; align-items: flex-start; }
.milestone .ms-icon { font-size: 28px; line-height: 1; }
.milestone.todo { opacity: 0.72; }
.milestone.done { border-color: var(--gold-dim); }
.fr-milestones { margin-top: 10px; padding: 10px 12px; border: 1px solid var(--gold-dim); border-radius: var(--radius); background: rgba(245, 179, 1, 0.08); text-align: center; }
.fr-milestones strong { color: var(--gold); display: block; margin-bottom: 4px; }
.fr-pattern { margin-top: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--navy-700); text-align: left; }
.fr-pattern strong { color: var(--silver); display: block; margin-bottom: 6px; }
.fr-pattern .muted-note { line-height: 1.5; }

/* Fitness-Balken */
.fit-bar { height: 14px; border-radius: 8px; background: var(--navy-700); border: 1px solid var(--border); overflow: hidden; margin: 6px 0 4px; }
.fit-fill { height: 100%; border-radius: 8px 0 0 8px; transition: width 0.3s ease; }
.fit-fill.ok { background: var(--ok); }
.fit-fill.warn { background: var(--gold); }
.fit-fill.bad { background: var(--danger); }

/* ===== Gesundheit & Fitness — Neugestaltung (Ringe + Karten) ===== */
.fit2-hero { display: grid; grid-template-columns: minmax(220px, 0.8fr) 1.2fr; gap: 20px; align-items: center; }
@media (max-width: 760px) { .fit2-hero { grid-template-columns: 1fr; } }
.fit2-leftcol { display: flex; flex-direction: column; align-items: center; gap: 14px; }
.fit2-rings { display: flex; gap: 18px; justify-content: center; flex-wrap: wrap; }
/* Erholungsboden-Aufschlüsselung unter dem Fitnessring. */
.fit2-rest { width: 100%; max-width: 260px; border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; background: color-mix(in srgb, var(--panel, #1a2230) 60%, transparent); }
.fit2-rest-regen { font-size: .92rem; text-align: center; margin-bottom: 8px; padding-bottom: 8px; border-bottom: 1px solid var(--border); }
.fit2-rest-regen.busy { color: var(--muted, #9aa); }
.fit2-rest-break { display: flex; flex-direction: column; gap: 3px; }
.fit2-rest-row { display: flex; justify-content: space-between; gap: 10px; font-size: .86rem; }
.fit2-rest-row span:last-child { font-variant-numeric: tabular-nums; white-space: nowrap; }
.fit2-rest-row.total { margin-top: 5px; padding-top: 5px; border-top: 1px solid var(--border); font-weight: 700; }
.fit2-rest-row.total span:last-child { color: var(--gold); }
.fit2-rest-cap { margin-top: 6px; text-align: center; }
.fit2-ringbox { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.fit2-gauge { width: 130px; height: 130px; }
.fit2-gauge-val { fill: var(--text); font-size: 30px; font-weight: 800; text-anchor: middle; }
.fit2-gauge-sub { fill: var(--muted); font-size: 13px; text-anchor: middle; }
.fit2-status { font-weight: 700; font-size: 13px; }
.fit2-status.ok { color: var(--ok); } .fit2-status.warn { color: var(--gold); } .fit2-status.bad { color: var(--danger); }
.fit2-effect h3 { margin: 0 0 10px; display: flex; align-items: center; gap: 8px; }
.fit2-pulse { display: inline-flex; width: 22px; height: 22px; color: var(--gold); }
.fit2-pulse svg { width: 100%; height: 100%; }
.fit2-eff-tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.fit2-eff-tile { background: var(--navy-700); border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; display: flex; flex-direction: column; gap: 2px; }
.fit2-eff-label { font-size: 12px; color: var(--muted); }
.fit2-eff-val { font-size: 18px; font-weight: 800; }
.fit2-eff-val.up { color: var(--ok); } .fit2-eff-val.down { color: var(--danger); }
.fit2-eff-range { font-size: 11px; color: var(--muted); }
.fit2-curve { width: 100%; height: 96px; margin-top: 10px; }
.fit2-curve .fit2-zero { stroke: var(--border); stroke-dasharray: 3 4; }
.fit2-curve .fit2-line { fill: none; stroke-width: 2.4; }
.fit2-curve .fit2-line.pay { stroke: var(--gold); } .fit2-curve .fit2-line.rep { stroke: #7aa2ff; }
.fit2-curve .fit2-mark { stroke: var(--muted); stroke-dasharray: 2 3; }
.fit2-curve .fit2-pt.pay { fill: var(--gold); } .fit2-curve .fit2-pt.rep { fill: #7aa2ff; }
.fit2-legend { display: flex; gap: 14px; font-size: 12px; margin-top: 2px; }
.fit2-legend .pay { color: var(--gold); } .fit2-legend .rep { color: #7aa2ff; }
.fit2-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; margin-top: 10px; }
/* Fitness-Aktivitätskarten sind <button> und würden sonst die dunkle Button-Schriftfarbe erben →
   im Dark Mode unlesbar. Explizit die Theme-Textfarbe nutzen (in beiden Modi gut lesbar). */
.fit2-card { display: flex; gap: 12px; align-items: stretch; text-align: left; padding: 12px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 12px; color: var(--text); cursor: pointer; transition: transform .08s ease, box-shadow .12s ease, border-color .12s ease; }
.fit2-card:hover:not(.disabled) { background: var(--navy-700); color: var(--text); }
/* Light Mode: grüne/rote/goldene Akzente abdunkeln, damit sie auf hellem Kartenhintergrund lesbar sind. */
:root[data-theme="light"] .fit2-gain, :root[data-theme="light"] .fit2-pill.free { color: #1c7a4f; }
:root[data-theme="light"] .fit2-pill.cost { color: #97700a; }
:root[data-theme="light"] .fit2-reason { color: #b5341f; }
.fit2-card:hover:not(.disabled) { border-color: var(--gold); box-shadow: 0 4px 16px rgba(0,0,0,.3); transform: translateY(-1px); }
.fit2-card.disabled { opacity: 0.5; cursor: not-allowed; }
.fit2-ico { flex: 0 0 auto; width: 44px; height: 44px; color: var(--gold); background: var(--navy-900); border: 1px solid var(--border); border-radius: 10px; display: flex; align-items: center; justify-content: center; }
.fit2-ico svg { width: 30px; height: 30px; }
.fit2-cardmain { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.fit2-cardtop { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.fit2-name { font-weight: 600; }
.fit2-gain { font-weight: 800; color: var(--ok); white-space: nowrap; }
.fit2-meta { display: flex; gap: 6px; flex-wrap: wrap; }
.fit2-pill { font-size: 11px; padding: 2px 8px; border-radius: 999px; background: var(--navy-900); border: 1px solid var(--border); color: var(--muted); }
.fit2-pill.free { color: var(--ok); } .fit2-pill.cost { color: var(--gold); }
.fit2-effrow { display: flex; align-items: center; gap: 8px; }
.fit2-efflabel { font-size: 11px; color: var(--muted); }
.fit2-dots { display: inline-flex; gap: 3px; }
.fit2-dots i { width: 7px; height: 7px; border-radius: 50%; background: var(--navy-900); border: 1px solid var(--border); }
.fit2-dots i.on { background: var(--gold); border-color: var(--gold); }
.fit2-reason { font-size: 11px; color: var(--danger); }
/* Kompakte Fitness-Ringe (Avatar-Hub & Cockpit) — klickbar */
.fit-mini { display: flex; gap: 10px; justify-content: center; width: 100%; margin-top: 12px; background: transparent; border: 1px solid transparent; border-radius: 12px; padding: 6px; cursor: pointer; transition: background .12s ease, border-color .12s ease; }
.fit-mini:hover { background: var(--navy-700); border-color: var(--gold); }
.fit-mini .fit2-gauge { width: 92px; height: 92px; }
.fit-mini-ring { display: flex; }

/* ===== Adminmenü: Dashboard + gruppierter Kachel-Hub ===== */
.admin-dash { margin-bottom: 22px; }
.admin-group { margin-bottom: 18px; }
.admin-group-title {
  margin: 0 0 12px; font-size: 12px; font-weight: 700; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--silver-dim);
  border-bottom: 1px solid var(--border); padding-bottom: 6px;
}
/* Auf-/zuklappbare Admin-Kategorien (details/summary, Standard zu) */
details.admin-group > summary.admin-group-title { cursor: pointer; list-style: none; user-select: none; }
details.admin-group > summary.admin-group-title::before { content: '▸ '; color: var(--silver-dim); }
details.admin-group[open] > summary.admin-group-title::before { content: '▾ '; }
details.admin-group > summary.admin-group-title::-webkit-details-marker { display: none; }
details.admin-group > .tile-grid { margin-top: 4px; }
.tile { position: relative; }
.tile-badge {
  position: absolute; top: 12px; right: 12px; min-width: 20px; height: 20px; padding: 0 6px;
  border-radius: 999px; background: var(--gold); color: #2a1d00; font-size: 12px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center;
}

/* Flugzeug-Katalog (Asset-Editor) + Meilensteine: aufklappbare Zeilen */
.catalog-list, .milestone-list { display: flex; flex-direction: column; gap: 8px; }
.catalog-item, .milestone-item { border: 1px solid var(--border); border-radius: 10px; background: var(--navy-700); }
.catalog-item > summary, .milestone-item > summary {
  cursor: pointer; list-style: none; display: flex; align-items: center; gap: 12px; padding: 10px 12px;
}
.catalog-item > summary::-webkit-details-marker, .milestone-item > summary::-webkit-details-marker { display: none; }
.catalog-item > summary::after, .milestone-item > summary::after { content: '▸'; color: var(--gold); margin-left: auto; }
.catalog-item[open] > summary::after, .milestone-item[open] > summary::after { content: '▾'; }
.catalog-sum-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.catalog-sum-main strong { font-size: 14px; }
.milestone-item .ms-ico { font-size: 22px; line-height: 1; }
.milestone-item.inactive { opacity: 0.55; }
.catalog-edit, .milestone-edit { padding: 4px 14px 14px; }

/* ===== Budgetverwaltung (neu) ===== */
/* Zone 1: Saldo + Einnahmen/Kosten-Balken */
.saldo-box { display: flex; flex-wrap: wrap; gap: 18px; align-items: center; margin-top: 14px; padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--navy-700); }
.saldo-main { min-width: 220px; flex: 0 0 auto; }
.saldo-val { font-size: 30px; font-weight: 800; line-height: 1.1; margin: 2px 0; }
.saldo-val.pos { color: var(--ok); }
.saldo-val.neg { color: var(--danger); }
.profit-bars { flex: 1; min-width: 240px; display: flex; flex-direction: column; gap: 8px; }
.profit-row { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.profit-row .pr-lbl { width: 78px; color: var(--muted); }
.profit-row .pr-val { width: 96px; text-align: right; }
.profit-track { flex: 1; height: 12px; border-radius: 6px; background: var(--navy-600); overflow: hidden; }
.profit-seg { height: 100%; border-radius: 6px; transition: width 0.2s ease; }
.profit-seg.pos { background: var(--ok); }
.profit-seg.neg { background: var(--danger); }

/* Zone 2: gestapelter Aufteilungsbalken + Legende */
.budget-bar { display: flex; width: 100%; height: 22px; border-radius: 8px; overflow: hidden; border: 1px solid var(--border); background: var(--navy-700); margin: 4px 0 10px; }
.bseg { height: 100%; transition: width 0.18s ease; min-width: 0; }
.bseg-free { background: repeating-linear-gradient(45deg, var(--navy-600), var(--navy-600) 6px, var(--navy-700) 6px, var(--navy-700) 12px); }
.budget-legend { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 12px; color: var(--muted); margin-bottom: 16px; }
.budget-legend strong { color: var(--text); }
.bl-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 6px; vertical-align: middle; }
.bl-dot-free { background: var(--navy-600); border: 1px solid var(--border); }

/* Warnung NEBEN „Monatskosten zuweisen" (Nutzervorgabe 2026-08-01): Reicht das Gesamtbudget für den
   nächsten Monat nicht, steht der Grund direkt am Knopf. Als Flex-Item der .row-gap-Zeile mittig zum
   Knopf ausgerichtet; [hidden] gewinnt gegen das Flex-Layout (sonst bliebe ein leerer Platzhalter). */
.bg-months-warn { align-self: center; font-size: 13px; font-weight: 600; }
.bg-months-warn[hidden] { display: none; }

/* Zone 2: Gruppenkarten mit Regler */
.budget-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 14px; }
.budget-card { border: 1px solid var(--border); border-left: 4px solid var(--bg-accent, var(--gold)); border-radius: 10px; background: var(--navy-700); padding: 12px 14px; }
.budget-card .bc-head { display: flex; align-items: center; gap: 8px; }
.bc-ico { font-size: 20px; }
.bc-name { font-weight: 600; }
.bc-amount { margin-left: auto; color: var(--gold); font-size: 16px; }
.salary-card .bc-amount { color: #c084fc; }
.budget-card input[type="range"] { width: 100%; margin: 10px 0 6px; accent-color: var(--bg-accent, var(--gold)); }
.bc-meta { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 12px; color: var(--muted); }
.runway-badge { padding: 2px 8px; border-radius: 999px; background: var(--navy-600); border: 1px solid var(--border); white-space: nowrap; }
.runway-badge.warn { color: var(--gold); border-color: var(--gold-dim); }
.bc-desc { margin-top: 6px; }
.bc-comp { margin-top: 8px; }
.bc-comp > summary { cursor: pointer; font-size: 12px; color: var(--silver-dim); list-style: none; }
.bc-comp > summary::-webkit-details-marker { display: none; }
.bc-comp > summary::before { content: '▸ '; color: var(--gold); }
.bc-comp[open] > summary::before { content: '▾ '; }
.bg-z3-sum { cursor: pointer; font-weight: 600; }
.bg-z3-sum::-webkit-details-marker { display: none; }

/* ===== Fluglehrer-Live-Cockpit (Betreuungsansicht) ===== */
.sv-board { display: flex; gap: 18px; flex-wrap: wrap; align-items: stretch; }
.sv-grid { flex: 1 1 460px; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.sv-tile {
  background: var(--navy-700, #0e1726); border: 1px solid var(--line, #243150);
  border-radius: 12px; padding: 12px 14px; display: flex; flex-direction: column; gap: 2px; min-height: 78px; justify-content: center;
}
.sv-lbl { font-size: 12px; color: var(--muted, #9fb0c8); text-transform: uppercase; letter-spacing: .4px; }
.sv-val { font-size: 30px; font-weight: 800; line-height: 1.05; font-variant-numeric: tabular-nums; color: var(--text, #e7eef5); }
.sv-val.sv-small { font-size: 20px; }
.sv-unit { font-size: 12px; color: var(--muted, #9fb0c8); }
.sv-val.sv-up { color: #5fd29a; }
.sv-val.sv-down { color: #ff9b6b; }
.sv-val.sv-warn { color: #ff6b6b; }
.sv-val.sv-air { color: #7fd0ff; }

.sv-compass-wrap { flex: 0 0 180px; display: flex; flex-direction: column; align-items: center; gap: 8px; justify-content: center; }
.sv-compass-svg { width: 168px; height: 168px; }
.sv-comp-ring { fill: var(--navy-700, #0e1726); stroke: var(--line, #243150); stroke-width: 2; }
.sv-comp-card { fill: var(--text, #e7eef5); font-size: 12px; font-weight: 700; text-anchor: middle; dominant-baseline: central; }
.sv-comp-num { fill: var(--muted, #9fb0c8); font-size: 9px; font-weight: 600; text-anchor: middle; dominant-baseline: central; font-variant-numeric: tabular-nums; }
.sv-comp-hub { fill: var(--gold); }
.sv-needle-hdg { fill: var(--gold); }
.sv-compass-legend { display: flex; gap: 14px; font-size: 13px; color: var(--muted, #9fb0c8); }
.sv-compass-legend b { color: var(--text, #e7eef5); font-variant-numeric: tabular-nums; }
.sv-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 5px; vertical-align: middle; }
.sv-dot-hdg { background: var(--gold); }
@media (max-width: 720px) { .sv-compass-wrap { flex-basis: 100%; } }
.sv-action-btn { padding: 11px 16px; border-radius: 9px; font-size: 14px; font-weight: 700; cursor: pointer; background: linear-gradient(180deg, #b3402f, #8e2f23); border: 1px solid var(--danger, #c0392b); color: #fff; }
.sv-action-btn:hover { filter: brightness(1.08); }
.sv-action-btn:disabled { opacity: .55; cursor: default; }
/* Wiederherstellen-Knopf (grün, vom roten Ausfall-Knopf abgesetzt). */
.sv-action-btn-restore { background: linear-gradient(180deg, #2c8c5f, #1f6f4a); border-color: #2c8c5f; margin-top: 8px; }

/* ---- Instruktor-Aktionen (Klappen + Triebwerk) ---- */
.sv-actions { display: flex; flex-direction: column; gap: 14px; }
.sv-act-group { border: 1px solid var(--border, #2a3645); border-radius: 12px; padding: 14px 16px; background: linear-gradient(180deg, rgba(127,208,255,.05), rgba(127,208,255,.01)); }
.sv-act-group.sv-act-danger { background: linear-gradient(180deg, rgba(255,107,107,.07), rgba(255,107,107,.01)); border-color: rgba(192,57,43,.4); }
.sv-act-head { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.sv-act-ico { font-size: 24px; line-height: 1; flex: 0 0 auto; }
.sv-act-titles { flex: 1 1 auto; min-width: 0; }
.sv-act-title { font-size: 15px; font-weight: 800; color: var(--text, #e7eef5); }
.sv-act-sub { font-size: 12px; color: var(--muted, #8aa0b3); margin-top: 2px; }
.sv-flaps-cur { flex: 0 0 auto; font-weight: 800; font-size: 14px; color: #7fd0ff; padding: 5px 11px; border-radius: 999px; background: rgba(127,208,255,.12); border: 1px solid rgba(127,208,255,.3); white-space: nowrap; }
/* Klappen-Profil (Seitenschnitt) — Form je Flugzeugkategorie, Klappe kippt animiert je Stufe. */
.sv-airfoil-wrap { margin: 4px 0 12px; }
.sv-airfoil { display: block; width: 100%; height: 132px; border: 1px solid var(--border, #2a3645); border-radius: 12px;
  background: radial-gradient(130% 130% at 28% 22%, #14233a, #0b1322); }
.sv-af-chord { stroke: rgba(127,208,255,.18); stroke-width: 1; stroke-dasharray: 4 5; }
.sv-af-pivot { fill: #f5b301; }
.sv-airfoil-body { fill: #cfe0ff; stroke: #7fd0ff; stroke-width: 1.5; stroke-linejoin: round; }
/* Die Klappe rotiert um das Scharnier [--hx,--hy] im viewBox-Koordinatensystem (transform-box: view-box). */
.sv-airfoil-flap { fill: #a9cdf0; stroke: #7fd0ff; stroke-width: 1.5; stroke-linejoin: round;
  transform-box: view-box; transform-origin: var(--hx, 178px) var(--hy, 76px);
  transform: rotate(var(--flap-deg, 0deg)); transition: transform .35s cubic-bezier(.4,0,.2,1); }
.sv-airfoil-slat { fill: #a9cdf0; stroke: #7fd0ff; stroke-width: 1.4; stroke-linejoin: round;
  transform-box: view-box; transform-origin: 30px 75px; transition: transform .35s cubic-bezier(.4,0,.2,1); }
.sv-airfoil-slat.extended { transform: translate(-9px, 5px); }
.sv-flap-scale { display: flex; justify-content: space-between; gap: 4px; margin-top: 8px; }
.sv-flap-tick { flex: 1 1 0; text-align: center; font-size: 11px; font-weight: 700; color: var(--muted, #8aa0b3);
  font-variant-numeric: tabular-nums; padding: 3px 0; border-radius: 6px; border: 1px solid transparent; transition: background .2s ease, color .2s ease; }
.sv-flap-tick.cur { color: #14213d; background: #f5b301; border-color: #f5b301; }
.sv-flaps-ctrl { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.sv-fbtn { padding: 10px 8px; border-radius: 9px; font-size: 13px; font-weight: 700; cursor: pointer; background: linear-gradient(180deg, #243446, #1a2734); border: 1px solid var(--border, #2a3645); color: var(--text, #e7eef5); transition: filter .15s ease, transform .05s ease; }
.sv-fbtn:hover { filter: brightness(1.15); border-color: #7fd0ff; }
.sv-fbtn:active { transform: translateY(1px); }
.sv-act-flash { margin-top: 10px; min-height: 1.1em; font-weight: 600; }
@media (max-width: 560px) { .sv-flaps-ctrl { grid-template-columns: repeat(2, 1fr); } }

/* ===== Wohnen / Zuhause ===== */
.home-portrait, .home-floorplan-wrap { display:flex; justify-content:center; background:var(--navy-900); border:1px solid var(--border,#2a3550); border-radius:10px; padding:10px; }
.home-portrait svg, .home-gal-fac svg, .home-type-fac svg { width:160px; max-width:100%; height:auto; }
.home-floorplan-wrap svg, .home-canvas svg.home-floorplan { width:100%; max-width:520px; height:auto; }
.home-type-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; }
.home-type-card { background:var(--navy-800); border:1px solid var(--border,#2a3550); border-radius:10px; padding:8px; cursor:pointer; text-align:center; color:inherit; }
.home-type-card.selected { border-color:var(--gold,#f5b301); box-shadow:0 0 0 1px var(--gold,#f5b301) inset; }
.home-type-fac svg { width:120px; }
/* Haustyp-Foto (ersetzt die Fassaden-SVG): füllt die Kachelbreite, festes Seitenverhältnis, sauber beschnitten. */
.home-type-photo { display:block; width:100%; aspect-ratio:1/1; object-fit:cover; border-radius:8px; }
.home-type-name { font-weight:600; margin-top:4px; }
.home-tpl-row { display:flex; flex-wrap:wrap; gap:6px; }
/* Wohnflächen-Schieberegler zentriert unter seinem Label. */
.hm-size-field { display:flex; flex-direction:column; align-items:center; gap:6px; }
.hm-size-field input[type="range"] { width:100%; max-width:420px; }
/* Lage + Kosten NEBENEINANDER: links Karte/Parkplatz, rechts zwei Kosten-Spalten (Miete | Kauf). */
.hm-lage-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:start; }
.hm-cost-cols { display:grid; grid-template-columns:1fr 1fr; gap:12px; align-content:start; }
.hm-cost-col { display:flex; flex-direction:column; gap:8px; background:rgba(255,255,255,0.03); border:1px solid var(--border); border-radius:10px; padding:10px; }
.hm-cost-col h4 { margin:0 0 2px; font-size:15px; }
.hm-cost-col .weight-table { margin:0; }
.hm-action-btn { width:100%; padding:9px 12px; border-radius:9px; border:1px solid var(--gold,#f5b301); background:var(--gold,#f5b301); color:var(--navy-900); font-weight:600; cursor:pointer; font-size:14px; }
.hm-action-btn + .hm-action-btn { background:transparent; color:var(--text); }
@media (max-width: 820px) { .hm-lage-grid { grid-template-columns:1fr; } .hm-cost-cols { grid-template-columns:1fr 1fr; } }
.pk-buy { margin-top:12px; border-top:1px solid var(--border,#2a3550); padding-top:10px; }
.pk-buy h4 { margin:0 0 8px; }
.pk-buy-row { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-bottom:8px; }
.pk-buy-row label { display:flex; align-items:center; gap:4px; font-size:0.85rem; color:var(--muted,#9fb0cc); }
.pk-buy-row select { background:var(--navy-800); color:inherit; border:1px solid var(--border,#2a3550); border-radius:6px; padding:3px 6px; }
/* --- Pkw-Menü (Galerie, Hero, Parkplatz) --- */
.pkw-layout { display:grid; grid-template-columns:1fr 320px; gap:14px; align-items:start; }
@media (max-width:900px){ .pkw-layout { grid-template-columns:1fr; } }
.pkw-main, .pkw-side { display:flex; flex-direction:column; gap:14px; }
.pkw-hero { position:relative; display:flex; gap:16px; align-items:flex-start; background:linear-gradient(135deg,#16203400,#1b2740 70%),radial-gradient(120% 90% at 18% 30%,#21314f 0%,var(--navy-800) 70%); }
/* Eingekreistes €-Verkaufssymbol oben rechts im Pkw-Kasten (an Theme angepasst), Hover-Menü linksbündig darunter. */
.sell-explain { margin: 6px 0; }
.sell-explain .fin-row { display: flex; justify-content: space-between; gap: 16px; padding: 4px 0; }
.sell-explain-sep { height: 1px; background: var(--border); margin: 6px 0; }
.pkw-sell-corner { position:absolute; top:12px; right:12px; z-index:6; }
.pkw-sell-euro { width:34px; height:34px; border-radius:50%; border:1px solid var(--border); background:var(--navy-700); color:var(--text); font-size:18px; font-weight:800; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; box-shadow:0 2px 6px rgba(0,0,0,.3); transition:border-color .12s, color .12s, background .12s; }
.pkw-sell-corner:hover .pkw-sell-euro, .pkw-sell-euro:focus-visible { border-color:var(--gold); color:var(--gold-ink); background:var(--gold); outline:none; }
.pkw-sell-corner .pkw-sell-menu { left:auto; right:0; transform:none; }
/* „Autohändler" + „Gebrauchtwagen" nebeneinander über dem Stellplätze-Kasten. */
.pkw-shop-btns { display:flex; gap:10px; margin-bottom:12px; }
.pkw-shop-btns button { flex:1; }
/* Flugzeug-Detailkasten trägt das eingekreiste €-Verkaufssymbol oben rechts. */
.fz-detailcard { position:relative; }
.fz-detailcard .pkw-sell-corner { z-index:7; }
/* Flugzeug-Verkaufs-Pop-up: zwei Optionskarten (anbieten / sofort). */
.ac-sell-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:10px 0; }
@media (max-width:560px){ .ac-sell-grid { grid-template-columns:1fr; } }
.ac-sell-opt { display:flex; gap:10px; align-items:flex-start; background:var(--navy-700); border:1px solid var(--border); border-radius:10px; padding:10px 12px; }
.ac-sell-ic { font-size:22px; line-height:1; flex:0 0 auto; }
.ac-sell-opt strong { display:block; margin-bottom:2px; }
.pkw-hero-img { flex:0 0 46%; max-width:46%; }
.pkw-hero-img svg { width:100%; filter:drop-shadow(0 6px 10px rgba(0,0,0,0.45)); }
/* Echte Pkw-Produktfotos (assets/cars) — ersetzen die generierten SVGs in Hero/Galerie/Konfigurator. */
.pkw-photo { width:100%; display:block; border-radius:8px; box-shadow:0 6px 14px rgba(0,0,0,0.45); }
.pkw-hero-info { flex:1; min-width:0; }
.pkw-hero-info h3 { margin:0 0 8px; }
.pkw-spec-row { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:8px; }
.pkw-spec { font-size:0.82rem; color:var(--muted,#9fb0cc); background:var(--navy-800); border:1px solid var(--border,#2a3550); border-radius:6px; padding:2px 8px; }
.pkw-spec.gold { color:var(--gold,#f5b301); border-color:#6a5410; font-weight:600; }
.fuel-badge { font-size:0.74rem; font-weight:700; letter-spacing:0.02em; border-radius:6px; padding:2px 8px; color:var(--navy-900); }
.fuel-benzin { background:#e0a32a; } .fuel-diesel { background:#9aa3ad; } .fuel-elektro { background:#3fb56b; color:#06210f; }
.pkw-filter { display:flex; gap:4px; }
.pkw-fbtn { background:var(--navy-800); color:var(--muted,#9fb0cc); border:1px solid var(--border,#2a3550); border-radius:6px; padding:1px 10px; cursor:pointer; font-size:0.82rem; line-height:1.5; }
.pkw-fbtn.active { background:var(--gold,#f5b301); color:var(--navy-900); border-color:var(--gold,#f5b301); font-weight:600; }
.pkw-park-cards { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:8px; }
.pkw-park-card { display:flex; flex-direction:column; align-items:center; gap:2px; background:var(--navy-900); border:1px solid var(--border,#2a3550); border-radius:10px; padding:8px 6px; cursor:pointer; color:inherit; }
.pkw-park-card:hover { border-color:#42537a; }
.pkw-park-card.active { border-color:var(--gold,#f5b301); box-shadow:0 0 0 1px var(--gold,#f5b301) inset; }
.pkw-park-ico { font-size:1.4rem; line-height:1; }
.pkw-park-label { font-size:0.8rem; font-weight:600; text-align:center; }
.pkw-park-price { font-size:0.76rem; color:var(--gold,#f5b301); }

/* Autohändler-Filterreihe (2026-07-17): Marken- und Pkw-Art-Dropdowns neben den Antriebs-Buttons. */
.pkw-filter-sel { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }
.pkw-filter-sel select { padding: 6px 10px; border-radius: 8px; background: var(--navy-800); color: var(--text); border: 1px solid var(--border); }
.pkw-filter-search { padding: 6px 10px; border-radius: 8px; background: var(--navy-800); color: var(--text); border: 1px solid var(--border); min-width: 150px; font-size: 13px; }
.pkw-hero-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:6px; }
.pkw-badge-active { font-size:0.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--navy-900); background:var(--gold,#f5b301); border-radius:6px; padding:2px 6px; vertical-align:middle; }
/* Garage: Fahrzeug-Wähler (mehrere Autos) */
.pkw-garage { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; margin-top:8px; }
.pkw-gcard { display:flex; flex-direction:column; gap:4px; background:var(--navy-900); border:1px solid var(--border,#2a3550); border-radius:12px; padding:8px; cursor:pointer; color:inherit; text-align:left; transition:border-color .15s,box-shadow .15s; }
.pkw-gcard:hover { border-color:#42537a; }
.pkw-gcard.sel { border-color:var(--gold,#f5b301); box-shadow:0 0 0 1px var(--gold,#f5b301) inset; }
.pkw-gcard.active { background:linear-gradient(135deg,#16203400,#1b2740 70%); }
.pkw-gcard-img { width:100%; aspect-ratio:16/9; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.pkw-gcard-img img, .pkw-gcard-img svg { width:100%; height:100%; object-fit:contain; }
.pkw-gcard-name { font-weight:600; font-size:0.85rem; }
.pkw-gcard-meta { font-size:0.72rem; color:var(--muted,#9fb0cc); display:flex; gap:6px; align-items:center; flex-wrap:wrap; }
.pkw-gcard-add { align-items:center; justify-content:center; border-style:dashed; color:var(--muted,#9fb0cc); min-height:120px; }
.pkw-gadd-plus { font-size:1.8rem; line-height:1; }
/* Papiere-Schnellzugriffe — untereinander unter dem Vorschaubild des Pkw */
.pkw-hero-left { flex:0 0 46%; max-width:46%; display:flex; flex-direction:column; gap:8px; }
.pkw-hero-left .pkw-hero-img { flex:initial; max-width:100%; }
@media (max-width:900px){ .pkw-hero-left { flex-basis:42%; } }
.pkw-doclinks { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin:10px 0 4px; }
.pkw-doclinks-stack { grid-template-columns:1fr; gap:6px; margin:0; }
.pkw-doc-link { display:flex; flex-direction:column; align-items:center; gap:2px; background:var(--navy-900); border:1px solid var(--border,#2a3550); border-radius:10px; padding:8px 4px; cursor:pointer; color:inherit; }
.pkw-doclinks-stack .pkw-doc-link { flex-direction:row; align-items:center; gap:9px; text-align:left; padding:8px 10px; }
.pkw-doc-link:hover { border-color:#42537a; }
.pkw-doc-ic { font-size:1.2rem; }
.pkw-doc-txt { display:flex; flex-direction:column; line-height:1.2; min-width:0; }
.pkw-doc-lbl { font-size:0.8rem; font-weight:600; }
.pkw-doc-sub { font-size:0.68rem; color:var(--muted,#9fb0cc); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* Stellplatz-Liste */
.pkw-space-list { display:flex; flex-direction:column; gap:6px; margin:6px 0; }
.pkw-space-row { display:flex; align-items:center; gap:8px; background:var(--navy-900); border:1px solid var(--border,#2a3550); border-radius:8px; padding:6px 8px; font-size:0.82rem; }
.pkw-space-row.free { border-style:dashed; }
.pkw-space-lbl { flex:1; min-width:0; }
.pkw-space-state { font-size:0.68rem; text-transform:uppercase; letter-spacing:.03em; color:var(--muted,#9fb0cc); }
.pkw-space-row.occupied .pkw-space-state { color:var(--gold,#f5b301); }
.pkw-space-rm { padding:0 6px; }
/* Fahrzeugpapiere (Dokumentenansicht) + Versicherung */
.pkw-doc-page { max-width:640px; }
.pkw-doc-head { display:flex; align-items:center; gap:12px; border-bottom:1px solid var(--border,#2a3550); padding-bottom:10px; margin-bottom:10px; }
.pkw-doc-emblem { font-size:2rem; }
.pkw-doc-issuer { font-size:0.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted,#9fb0cc); }
.pkw-doc-head h3 { margin:2px 0 0; }
/* Realistische Fahrzeugpapiere (Nutzervorgabe 2026-07-23): echtes Papier-Kolorit — Zulassungsbescheinigung
   Teil I (Fahrzeugschein) blassgrün, Teil II (Fahrzeugbrief) grün mit rosé Sicherheitsdruck, Scheckheft
   manila/creme. Dunkle Tinte, BEWUSST themenunabhängig (ein Dokument bleibt ein Dokument, auch im Dark-Mode). */
.pkw-doc-scheckheft, .pkw-doc-brief, .pkw-doc-schein { color:#20291a; border:1px solid rgba(0,0,0,.18); box-shadow:0 8px 22px rgba(0,0,0,.35); }
.pkw-doc-schein { background:linear-gradient(160deg,#e9f2df,#dbead0); }
.pkw-doc-brief { background:repeating-linear-gradient(45deg,rgba(176,108,120,.06) 0 7px,transparent 7px 15px),linear-gradient(160deg,#eaf0e0,#e6e0d0); }
.pkw-doc-scheckheft { background:linear-gradient(160deg,#f4ecd8,#ebdfc4); }
/* Innenelemente auf Papier lesbar machen (heben die Dark-Surface-Vorgaben auf). */
.pkw-doc-scheckheft .pkw-doc-head, .pkw-doc-brief .pkw-doc-head, .pkw-doc-schein .pkw-doc-head { border-bottom-color:rgba(0,0,0,.22); }
.pkw-doc-schein .pkw-doc-issuer { color:#3c5a24; }
.pkw-doc-brief .pkw-doc-issuer { color:#7a3f49; }

/* --- Pkw-Schadenereignisse: Schadenakte-Brief, Statusbanner, Garagen-Badges ---------------------- */
.pkw-doc-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px 16px; margin:10px 0; }
.pkw-doc-field { display:flex; justify-content:space-between; gap:10px; font-size:0.84rem; border-bottom:1px dashed rgba(0,0,0,.16); padding:4px 0; }
.pkw-doc-field span { color:#5a5140; }
.pkw-doc-brief .pkw-doc-field, .pkw-doc-brief .pkw-doc-desc, .pkw-doc-brief .pkw-doc-costs { color:#20291a; }
.pkw-doc-desc { font-size:0.86rem; font-style:italic; margin:8px 0; }
.pkw-doc-costs { margin:12px 0; font-size:0.86rem; }
.pkw-doc-costs > div { display:flex; justify-content:space-between; gap:10px; padding:3px 0; border-bottom:1px dashed rgba(0,0,0,.14); }
.pkw-doc-costs-total { border-top:2px solid rgba(0,0,0,.3); border-bottom:none !important; margin-top:4px; padding-top:6px !important; font-size:0.96rem; }
.pkw-doc-sep { height:1px; background:rgba(0,0,0,.2); margin:14px 0; }
.pkw-status-banner { border-radius:10px; padding:9px 12px; margin:0 0 10px; font-size:0.88rem; border:1px solid var(--border,#2a3550); }
.pkw-status-banner.loaner { background:color-mix(in srgb, var(--gold,#c8a24a) 14%, transparent); border-color:var(--gold,#c8a24a); }
.pkw-status-banner.warn { background:color-mix(in srgb, #d8a13a 16%, transparent); border-color:#d8a13a; }
.pkw-status-banner.repair { background:color-mix(in srgb, #3a78c8 16%, transparent); border-color:#3a78c8; }
.pkw-status-banner.total { background:color-mix(in srgb, #c8453a 18%, transparent); border-color:#c8453a; }
.pkw-status-link { background:none; border:none; color:var(--gold,#c8a24a); text-decoration:underline; cursor:pointer; font:inherit; padding:0 0 0 4px; }
.pkw-gcard-badge { margin-top:4px; display:inline-block; font-size:0.68rem; padding:1px 7px; border-radius:999px; font-weight:600; }
.pkw-gcard-badge.loaner { background:color-mix(in srgb, var(--gold,#c8a24a) 22%, transparent); color:var(--gold,#c8a24a); }
.pkw-gcard-badge.warn { background:color-mix(in srgb, #d8a13a 22%, transparent); color:#e0b050; }
.pkw-gcard-badge.repair { background:color-mix(in srgb, #3a78c8 22%, transparent); color:#6ea6e0; }
.pkw-gcard-badge.total { background:color-mix(in srgb, #c8453a 24%, transparent); color:#e07a70; }
.pkw-doc-scheckheft .pkw-doc-issuer { color:#7a5a24; }
.pkw-doc-scheckheft .pkw-doc-grid, .pkw-doc-brief .pkw-doc-grid, .pkw-doc-schein .pkw-doc-grid { background:rgba(0,0,0,.14); border-color:rgba(0,0,0,.14); }
.pkw-doc-scheckheft .pkw-doc-field, .pkw-doc-brief .pkw-doc-field, .pkw-doc-schein .pkw-doc-field { background:rgba(255,255,255,.55); }
.pkw-doc-scheckheft .pkw-doc-k, .pkw-doc-brief .pkw-doc-k, .pkw-doc-schein .pkw-doc-k { color:#55603f; }
.pkw-doc-scheckheft .pkw-doc-v, .pkw-doc-brief .pkw-doc-v, .pkw-doc-schein .pkw-doc-v,
.pkw-doc-scheckheft .pkw-doc-sec, .pkw-doc-brief .pkw-doc-sec, .pkw-doc-schein .pkw-doc-sec { color:#20291a; }
.pkw-doc-schein .pkw-doc-sec { border-left-color:#6f9e4a; }
.pkw-doc-brief .pkw-doc-sec { border-left-color:#b06c78; }
.pkw-doc-scheckheft .pkw-doc-sec { border-left-color:#96703a; }
/* Scheckheft-Stempel auf Manila-Papier. */
.pkw-doc-scheckheft .pkw-stamp { background:rgba(255,255,255,.55); border-color:rgba(0,0,0,.14); border-left-color:#4f8a3a; }
.pkw-doc-scheckheft .pkw-stamp.due { border-left-color:#c06a2a; }
.pkw-doc-scheckheft .pkw-stamp-b span { color:#6a5a3a; }
.pkw-doc-scheckheft .pkw-stamp-date { color:#2a2214; }
.pkw-doc-headtxt { flex:1; min-width:0; }
.pkw-plate { display:inline-block; font-weight:700; letter-spacing:.06em; background:#eef3f8; color:var(--navy-900); border:2px solid #23324e; border-radius:4px; padding:1px 8px; font-family:"DIN Alternate","Arial Narrow",system-ui; }
.pkw-plate::before { content:"🇩🇪"; margin-right:5px; font-size:0.7em; }
.pkw-doc-plate { align-self:center; font-size:1.05rem; padding:3px 10px; }
/* Papier-Feldraster (ZB I / II) */
.pkw-doc-grid { display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--border,#2a3550); border:1px solid var(--border,#2a3550); border-radius:8px; overflow:hidden; margin:8px 0; }
@media (max-width:640px){ .pkw-doc-grid { grid-template-columns:1fr; } }
.pkw-doc-field { background:#0f1626; padding:7px 10px; display:flex; flex-direction:column; gap:1px; }
.pkw-doc-k { font-size:0.66rem; text-transform:uppercase; letter-spacing:.03em; color:var(--muted,#9fb0cc); }
.pkw-doc-v { font-size:0.9rem; font-weight:600; }
.pkw-doc-sec { margin:14px 0 6px; font-size:0.9rem; border-left:3px solid var(--gold,#f5b301); padding-left:8px; }
/* Scheckheft-Stempel */
.pkw-stamps { display:flex; flex-direction:column; gap:8px; }
.pkw-stamp { display:flex; align-items:center; gap:10px; background:#0f1626; border:1px solid var(--border,#2a3550); border-left:4px solid #3f9d5a; border-radius:8px; padding:9px 12px; }
.pkw-stamp.due { border-left-color:#d9803a; }
.pkw-stamp-ic { font-size:1.4rem; }
.pkw-stamp-b { flex:1; min-width:0; display:flex; flex-direction:column; }
.pkw-stamp-b span { font-size:0.74rem; color:var(--muted,#9fb0cc); }
.pkw-stamp-date { font-size:0.8rem; font-weight:600; color:#cdd6e2; white-space:nowrap; }
/* Wunschkennzeichen */
.pkw-plate-edit { margin-top:12px; }
.pkw-plate-form { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.pkw-plate-code { font-weight:700; background:#eef3f8; color:var(--navy-900); border:2px solid #23324e; border-radius:4px; padding:3px 8px; }
.pkw-plate-in { width:72px; text-transform:uppercase; text-align:center; font-weight:700; letter-spacing:.08em; }
.pkw-plate-num { width:88px; }
.pkw-plate-preview { margin:8px 0 0; font-weight:600; }
/* Autohändler-Showroom */
.pkw-showroom-hero { position:relative; border-radius:14px; padding:18px 18px 16px; margin-bottom:12px; overflow:hidden;
  background:radial-gradient(120% 140% at 12% 0%,#25406e 0%,#141d30 60%),linear-gradient(120deg,#1a2440,#101828); background-color:#131c2e;
  border:1px solid var(--border,#2a3550); box-shadow:inset 0 -40px 60px -30px rgba(0,0,0,0.6); }
.pkw-showroom-hero::after { content:""; position:absolute; left:0; right:0; bottom:0; height:34%; background:linear-gradient(180deg,transparent,rgba(120,150,200,0.10)); pointer-events:none; }
.pkw-showroom-back { margin-bottom:10px; }
.pkw-showroom-title { display:flex; align-items:center; gap:14px; }
.pkw-showroom-logo { font-size:2.6rem; filter:drop-shadow(0 3px 6px rgba(0,0,0,0.5)); }
.pkw-showroom-title h2 { margin:0; letter-spacing:.01em; }
.pkw-showroom-title p { margin:2px 0 0; color:var(--muted,#9fb0cc); font-size:0.86rem; }
.pkw-showroom-warn { margin-top:12px; background:rgba(217,128,58,0.14); border:1px solid #d9803a55; color:#f0b784; border-radius:8px; padding:8px 12px; font-size:0.84rem; }
.pkw-showroom-bar { display:flex; flex-wrap:wrap; gap:10px; justify-content:space-between; margin-bottom:12px; }
/* Preismarge-Filter: zwei überlagerte Range-Schieber (min/max) über gemeinsamer Schiene + gefülltem Band. */
.pkw-price-filter { background:var(--navy-800); border:1px solid var(--border,#2a3550); border-radius:10px; padding:10px 14px 12px; margin-bottom:12px; }
.pkw-price-empty { display:none; }
.pkw-price-head { display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.pkw-price-lbl { color:var(--muted,#9fb0cc); font-size:0.82rem; font-weight:600; }
.pkw-price-val { color:var(--gold,#f5b301); font-weight:700; font-size:0.95rem; font-variant-numeric:tabular-nums; }
.pkw-price-dash { color:var(--muted,#9fb0cc); font-weight:400; }
.pkw-price-reset { margin-left:auto; background:transparent; border:1px solid var(--border,#2a3550); color:var(--muted,#9fb0cc); border-radius:6px; padding:2px 9px; cursor:pointer; font-size:0.76rem; }
.pkw-price-reset:hover { border-color:#4a6096; color:#cfe; }
.pkw-price-reset.hidden { display:none; }
.pkw-range { position:relative; height:22px; }
.pkw-range-rail { position:absolute; top:50%; left:0; right:0; height:5px; transform:translateY(-50%); background:#2a3550; border-radius:3px; }
.pkw-range-fill { position:absolute; top:50%; height:5px; transform:translateY(-50%); left:var(--lo,0%); right:calc(100% - var(--hi,100%)); background:linear-gradient(90deg,#f5b301,#f7c948); border-radius:3px; }
.pkw-range-in { position:absolute; top:0; left:0; width:100%; height:22px; margin:0; background:none; -webkit-appearance:none; appearance:none; pointer-events:none; }
.pkw-range-in::-webkit-slider-runnable-track { background:none; height:22px; }
.pkw-range-in::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; pointer-events:auto; width:16px; height:16px; border-radius:50%; background:#f5b301; border:2px solid var(--navy-900); box-shadow:0 1px 4px rgba(0,0,0,0.6); cursor:grab; margin-top:3px; }
.pkw-range-in::-webkit-slider-thumb:active { cursor:grabbing; background:#f7c948; }
.pkw-range-min { z-index:4; }
.pkw-range-max { z-index:5; }
.pkw-price-ends { display:flex; justify-content:space-between; margin-top:6px; color:var(--muted,#9fb0cc); font-size:0.76rem; font-variant-numeric:tabular-nums; }
.pkw-price-count { color:#cfe; font-weight:600; }
.pkw-showroom-floor { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:14px; }
.pkw-show-card { display:flex; flex-direction:column; text-align:left; color:inherit; cursor:pointer; border:1px solid var(--border,#2a3550); border-radius:14px; overflow:hidden;
  background:linear-gradient(180deg,var(--navy-700),#0f1626); transition:transform .12s,box-shadow .12s,border-color .12s; }
.pkw-show-card:hover { transform:translateY(-3px); border-color:#4a6096; box-shadow:0 10px 24px -12px rgba(0,0,0,0.7); }
.pkw-show-card[disabled] { opacity:0.55; cursor:not-allowed; }
/* Kasten im Seitenverhältnis der Fotos (640×480 = 4:3) und OHNE Polster: mit object-fit:contain füllt das Bild
   den Kasten dann exakt randlos aus — ohne Dehnen/Zoomen. Vorher war der Kasten 16:10 + Polster, sodass das
   4:3-Foto seitlich eingepasst wurde und deutliche Ränder ließ. */
.pkw-show-img { aspect-ratio:4/3; display:flex; align-items:center; justify-content:center;
  background:radial-gradient(90% 70% at 50% 42%,#223257 0%,#0e1626 75%); border-bottom:1px solid var(--border,#2a3550); }
.pkw-show-img img, .pkw-show-img svg { width:100%; height:100%; object-fit:contain; filter:drop-shadow(0 8px 10px rgba(0,0,0,0.5)); }
.pkw-show-body { padding:10px 12px 4px; flex:1; }
.pkw-show-brand { font-size:0.68rem; text-transform:uppercase; letter-spacing:.08em; color:var(--gold,#f5b301); }
.pkw-show-model { font-size:1.02rem; font-weight:700; line-height:1.15; }
.pkw-show-seg { font-size:0.72rem; color:var(--muted,#9fb0cc); margin-bottom:6px; }
.pkw-show-meta { display:flex; flex-wrap:wrap; gap:6px; font-size:0.72rem; color:#cdd6e2; align-items:center; }
.pkw-show-foot { display:flex; justify-content:space-between; align-items:center; padding:9px 12px; border-top:1px solid var(--border,#2a3550); background:#0d1422; }
.pkw-show-price { font-weight:700; color:var(--gold,#f5b301); }
.pkw-show-cta { font-size:0.76rem; color:#9fb6e0; }
.pkw-show-card:hover .pkw-show-cta { color:#dbe6ff; }
/* „Nach Hause fahren"-Karte (Autopilot-Überblick) */
.pkw-drive-card { display:flex; gap:14px; align-items:center; background:linear-gradient(120deg,var(--navy-700),var(--navy-800)); }
.pkw-drive-card.offer { border-color:var(--map-ctl-accent); box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--map-ctl-accent) 18%, transparent); }
.pkw-drive-card.driving { border-color:color-mix(in srgb, var(--map-ctl-accent) 40%, transparent); }
.pkw-drive-ic { font-size:2.4rem; line-height:1; filter:drop-shadow(0 3px 5px rgba(0,0,0,0.5)); }
.pkw-drive-body { flex:1; min-width:0; }
.pkw-drive-body h3 { margin:0 0 4px; }
.pkw-drive-body .pkw-plate { font-size:0.85em; }
.pkw-drive-body button { margin-top:8px; }
.pkw-ins-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:10px 0; }
@media (max-width:720px){ .pkw-ins-grid { grid-template-columns:1fr; } }
.pkw-ins-card { background:var(--navy-900); border:1px solid var(--border,#2a3550); border-radius:12px; padding:12px; display:flex; flex-direction:column; gap:6px; }
.pkw-ins-card.sel { border-color:var(--gold,#f5b301); box-shadow:0 0 0 1px var(--gold,#f5b301) inset; }
.pkw-ins-head { display:flex; justify-content:space-between; align-items:baseline; gap:8px; }
.pkw-ins-head h4 { margin:0; }
.pkw-ins-price { font-weight:700; color:var(--gold,#f5b301); }
.pkw-ins-price small { font-size:0.66rem; color:var(--muted,#9fb0cc); font-weight:400; }
.pkw-ins-card button { margin-top:auto; }
/* Konfigurator */
.pkw-cfg .row-between { align-items:center; margin-bottom:10px; }
.pkw-cfg .row-between h3 { margin:0; }
.pkw-cfg-grid { display:grid; grid-template-columns:1.1fr 1fr; gap:14px; align-items:start; }
@media (max-width:900px){ .pkw-cfg-grid { grid-template-columns:1fr; } }
.pkw-cfg-left, .pkw-cfg-right { display:flex; flex-direction:column; gap:12px; }
.pkw-cfg-preview { background:radial-gradient(90% 80% at 50% 55%,var(--navy-700) 0%,var(--navy-900) 100%); padding:10px; }
.pkw-cfg-preview svg { width:100%; filter:drop-shadow(0 8px 14px rgba(0,0,0,0.5)); }
.pkw-cfg-stats { display:grid; grid-template-columns:repeat(5,1fr); gap:8px; text-align:center; }
.pkw-cfg-stat { background:var(--navy-900); border:1px solid var(--border,#2a3550); border-radius:10px; padding:8px 4px; display:flex; flex-direction:column; gap:2px; }
.pkw-cfg-stat span { font-weight:700; font-size:0.98rem; }
.pkw-cfg-stat small { font-size:0.66rem; color:var(--muted,#9fb0cc); }
.pkw-cfg-stat.gold span { color:var(--gold,#f5b301); }
.pkw-swatches { display:flex; flex-wrap:wrap; gap:8px; margin-top:6px; }
.pkw-swatch { width:30px; height:30px; border-radius:50%; border:2px solid var(--navy-900); box-shadow:0 0 0 1px var(--border,#2a3550); cursor:pointer; padding:0; }
.pkw-swatch:hover { box-shadow:0 0 0 1px #6a7ba6; }
.pkw-swatch.active { box-shadow:0 0 0 2px var(--gold,#f5b301); border-color:var(--navy-900); }
.pkw-cfg-cat { background:var(--navy-900); border:1px solid var(--border,#2a3550); border-radius:8px; padding:0 10px; margin-bottom:8px; }
.pkw-cfg-cat > summary { cursor:pointer; padding:8px 0; font-size:0.86rem; font-weight:600; color:#cdd6e2; list-style:none; }
.pkw-cfg-cat > summary::-webkit-details-marker { display:none; }
.pkw-opt-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; padding-bottom:10px; }
@media (max-width:520px){ .pkw-opt-grid { grid-template-columns:1fr; } }
.pkw-opt-chip { display:flex; flex-direction:column; gap:2px; text-align:left; background:var(--navy-900); border:1px solid var(--border,#2a3550); border-radius:8px; padding:7px 9px; cursor:pointer; color:inherit; }
.pkw-opt-chip:hover { border-color:#42537a; }
.pkw-opt-chip.active { border-color:var(--gold,#f5b301); box-shadow:0 0 0 1px var(--gold,#f5b301) inset; }
.pkw-opt-name { font-size:0.83rem; font-weight:600; }
.pkw-opt-cost { font-size:0.72rem; color:var(--muted,#9fb0cc); }
.pkw-opt-chip.active .pkw-opt-cost { color:var(--gold,#f5b301); }
.home-editor-grid { display:grid; grid-template-columns:1fr 220px; gap:12px; align-items:start; }
.home-canvas { position:relative; background:var(--navy-900); border:1px solid var(--border,#2a3550); border-radius:10px; padding:8px; display:flex; justify-content:center; }
.home-canvas svg.home-floorplan { touch-action:none; }
/* Im Grundriss wird gezogen, nicht gelesen: sonst markiert ein Zug ueber ein Zimmer dessen Namen und
   die blaue Textmarkierung bleibt stehen. Betrifft alle Beschriftungen im Plan. */
.home-floorplan, .home-floorplan text, .home-floorplan tspan { user-select: none; -webkit-user-select: none; }
.home-item { cursor:grab; }
/* Nummernschild auf dem Stellplatz: im Einrichten-Editor per Drag & Drop verschiebbar. */
.fur-plate { cursor:grab; }
.fur-plate:active { cursor:grabbing; }
/* Auswahl-Markierung folgt dem Theme (--gold) und bleibt auf JEDEM Untergrund sichtbar: der farbige
   Glow zeigt sie auf dunklen Flächen, die dunkle+helle Kontur (drop-shadow) auf hellen bzw. dunklen
   Belägen (Nutzervorgabe 2026-07-22 — vorher fest gelb, auf hellen Böden schlecht sichtbar). */
.home-item.selected { filter: drop-shadow(0 0 1px rgba(0,0,0,0.85)) drop-shadow(0 0 1px rgba(255,255,255,0.5)) drop-shadow(0 0 3px var(--gold)); }
.home-palette { background:var(--navy-800); border:1px solid var(--border,#2a3550); border-radius:10px; padding:8px; max-height:520px; overflow:auto; }
.home-gallery { display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:10px; margin-top:8px; }
.home-gal-card { background:var(--navy-800); border:1px solid var(--border,#2a3550); border-radius:10px; padding:8px; cursor:pointer; text-align:center; color:inherit; }
.home-gal-name { font-weight:600; margin-top:4px; }
.home-gal-stars { color:var(--gold,#f5b301); font-size:13px; margin-top:2px; }
/* Fuhrpark-Galerie + Ausstellungs-Kacheln (Nachbarschaft → „Fuhrparks") */
.fleet-gal-card { display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:96px; }
.fleet-gal-ico { font-size:34px; line-height:1; }
.fleet-showroom { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; margin:8px 0 4px; }
.fleet-tile { background:var(--navy-800); border:1px solid var(--border,#2a3550); border-radius:10px; padding:8px; text-align:center; }
.fleet-tile-img { height:84px; display:flex; align-items:center; justify-content:center; font-size:34px; }
.fleet-tile-img img { max-width:100%; max-height:84px; object-fit:contain; }
.fleet-tile-img .fleet-ac-img { max-height:70px; transform:rotate(-90deg); }
.fleet-tile-name { font-weight:600; font-size:.9rem; margin-top:4px; }
/* Ticketaufpreis-Box (Streckeneditor): auf-/zuklappbare Tabelle Klasse · Faktor · Ticket-Erlös/Sitz */
.nr-markup-box { margin:10px 0 0; border:1px solid var(--border,#2a3550); border-radius:10px; padding:8px 12px; background:rgba(255,255,255,0.02); }
.nr-markup-box > summary { cursor:pointer; font-weight:600; }
.nr-mk-row { display:grid; grid-template-columns:1fr auto auto; gap:14px; padding:3px 0; font-size:.9rem; }
.nr-mk-row > span:nth-child(2) { min-width:64px; text-align:right; color:var(--gold,#f5b301); }
.nr-mk-row > span:nth-child(3) { min-width:96px; text-align:right; }
.nr-mk-head { font-size:.72rem; text-transform:uppercase; letter-spacing:.03em; color:var(--muted,#9fb0cc); border-bottom:1px solid var(--border,#2a3550); margin-bottom:2px; }
.nr-mk-head > span:nth-child(2), .nr-mk-head > span:nth-child(3) { color:var(--muted,#9fb0cc); }
@media (max-width:760px) { .home-editor-grid { grid-template-columns:1fr; } .home-palette { max-height:none; } }

/* Landungsnote-Aufschlüsselung (Sinkrate + Aufsetz-G) im Bewertungsbildschirm */
.sp-landing-detail { margin: -2px 0 8px 8px; padding-left: 8px; border-left: 2px solid var(--border,#2a3550); font-size: 12px; color: var(--muted,#9fb3d8); }
.sp-landing-detail div { line-height: 1.5; }
.sp-landing-detail b { color: inherit; }
.cmd-input { width: 100%; box-sizing: border-box; padding: 16px 18px; background: transparent; border: none; border-bottom: 1px solid var(--border); color: var(--text); font-size: 16px; outline: none; }
.cmd-input::placeholder { color: var(--muted); }
.cmd-results { max-height: 52vh; overflow-y: auto; padding: 6px; }
/* Suchvorschau kompakt (Nutzervorgabe 2026-07-23): deutlich kleinere Schrift in den Treffern. */
.cmd-item { display: flex; align-items: center; gap: 9px; padding: 6px 11px; border-radius: 9px; cursor: pointer; font-size: 12px; }
.cmd-item.active { background: var(--navy-600); }
.cmd-ico { width: 18px; text-align: center; flex: 0 0 18px; font-size: 13px; }
.cmd-label { flex: 1; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 12px; }
.cmd-sub { color: var(--muted); font-size: 10.5px; white-space: nowrap; }
.cmd-empty { padding: 14px; text-align: center; color: var(--muted); font-size: 12px; }
/* Inline-Suche in der Seitenleiste (kein Popup): Ergebnisse erscheinen direkt unter dem Feld. */
.cmd-inline { position: relative; margin: 0 6px 12px; }
.cmd-inline-input { box-sizing: border-box; width: 100%; padding: 6px 9px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 8px; color: var(--text); font-size: 12px; outline: none; }
.cmd-inline-input::placeholder { color: var(--muted); }
.cmd-inline-input:focus { border-color: var(--gold); }
.cmd-inline-results { position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 60; max-height: min(60vh, 460px); overflow-y: auto; padding: 6px; background: var(--navy-800); border: 1px solid var(--border); border-radius: 11px; box-shadow: 0 14px 40px rgba(0,0,0,0.5); }
.cmd-inline-results[hidden] { display: none; }

/* ===== Benachrichtigungszentrum ===== */
.notif-bell { position: relative; display: flex; align-items: center; gap: 6px; width: 100%; margin: 0 0 6px; padding: 5px 9px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 8px; color: var(--muted); font-size: 12px; cursor: pointer; text-align: left; }
.notif-bell:hover { border-color: var(--gold); color: var(--text); }
.notif-bell-label { flex: 1; }
.notif-badge { min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--danger); color: #fff; font-size: 11px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.notif-panel { position: fixed; z-index: 1250; width: min(340px, 88vw); max-height: 60vh; display: flex; flex-direction: column; background: var(--navy-800); border: 1px solid var(--border); border-radius: 12px; box-shadow: 0 16px 44px rgba(0,0,0,0.5); overflow: hidden; }
.notif-panel[hidden] { display: none; }
.notif-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; border-bottom: 1px solid var(--border); font-weight: 600; }
.notif-allread { background: transparent; border: 1px solid var(--border); border-radius: 7px; color: var(--muted); font-size: 12px; padding: 3px 9px; cursor: pointer; }
.notif-allread:hover { color: var(--gold); border-color: var(--gold); }
.notif-list { overflow-y: auto; padding: 6px; }
.notif-item { display: flex; gap: 10px; padding: 9px 10px; border-radius: 9px; cursor: pointer; }
.notif-item:hover { background: var(--navy-700); }
.notif-item.unread { background: rgba(245,179,1,0.08); }
.notif-item.unread .notif-title::before { content: '●'; color: var(--gold); margin-right: 6px; font-size: 9px; vertical-align: middle; }
.notif-ico { flex: 0 0 22px; text-align: center; font-size: 16px; }
.notif-main { flex: 1; min-width: 0; }
.notif-title { color: var(--text); font-size: 13px; font-weight: 600; }
.notif-body { color: var(--muted); font-size: 12px; margin-top: 1px; }
.notif-time { color: var(--silver-dim); font-size: 11px; margin-top: 2px; }
.notif-empty { padding: 20px; text-align: center; color: var(--muted); }
.notif-toast-host { position: fixed; left: 16px; bottom: 16px; z-index: 1400; display: flex; flex-direction: column; gap: 8px; }
.notif-toast { display: flex; gap: 10px; width: 300px; padding: 11px 12px; background: var(--navy-800); border: 1px solid var(--border); border-left: 3px solid var(--gold); border-radius: 10px; box-shadow: 0 10px 28px rgba(0,0,0,0.5); cursor: pointer; animation: notif-in 0.25s ease; }
.notif-toast.out { opacity: 0; transform: translateX(-12px); transition: opacity 0.4s, transform 0.4s; }
@keyframes notif-in { from { opacity: 0; transform: translateX(-12px); } to { opacity: 1; transform: translateX(0); } }

/* ===== Sanfte Seitenübergänge (nur beim Menüwechsel; barrierearm) ===== */
@media (prefers-reduced-motion: no-preference) {
  .content.view-enter > * { animation: viewEnter 0.18s ease-out both; }
}
@keyframes viewEnter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

/* Logbuch-Export-Knöpfe (im Seitenkopf) */
.lb-export { display: flex; gap: 8px; }
.lb-export button { white-space: nowrap; }
/* Anklickbare Kennung im Piloten-Logbuch → Flugzeug-Logbuch */
.lb2-reg-link { background: none; border: none; padding: 0; font: inherit; color: var(--gold); cursor: pointer; text-decoration: underline dotted; text-align: center; }
.lb2-reg-link:hover { color: var(--gold-dim); }
/* Gesamtsumme direkt in der Überschriftenzeile (unter „Flugzeit" / „Ldg.") */
.lb2-sum { display: block; color: var(--gold); font-weight: 700; font-size: 11px; font-variant-numeric: tabular-nums; }
/* Flugzeug-Logbuch: Seitenblätterung */
.lb2-carry td { background: var(--navy-700); border-bottom: 2px solid var(--gold); font-size: 12px; }
.lb2-pager { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 10px; }
.lb2-pager button[disabled] { opacity: 0.4; cursor: default; }

/* Distanzringe-Steuerelement auf den Live-Karten */
.ring-ctl { background: rgba(11, 20, 48, 0.9); border: 1px solid var(--border); border-radius: 8px; padding: 7px 9px; color: var(--text); font-size: 12px; line-height: 1.5; box-shadow: 0 2px 10px rgba(0,0,0,0.5); }
.ring-ctl-title { font-weight: 700; color: var(--gold); margin-bottom: 3px; font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; }
.ring-ctl-row { display: flex; align-items: center; gap: 6px; cursor: pointer; }
.ring-ctl-row input { margin: 0; cursor: pointer; }
.ring-label { color: #ffb14e; font-size: 10px; font-weight: 700; text-shadow: 0 0 3px rgba(0,0,0,0.9); white-space: nowrap; pointer-events: none; }

/* Trainer-Kartenmarkierungen (Werkzeugleiste + Marker) */
.annot-toolbar { background: var(--map-ctl-bg); border: 1px solid var(--border); border-radius: 8px; padding: 7px 8px; color: var(--text); display: flex; flex-direction: column; gap: 5px; box-shadow: 0 2px 10px rgba(0,0,0,0.5); }
.annot-tt-title { font-size: 11px; font-weight: 700; color: #ff8c1a; text-transform: uppercase; letter-spacing: 0.04em; }
.annot-btn { display: block; width: 100%; text-align: left; background: var(--navy-700); border: 1px solid var(--border); border-radius: 6px; color: var(--text); padding: 4px 8px; font-size: 12px; cursor: pointer; }
.annot-btn:hover { border-color: #ff8c1a; }
.annot-btn.active { background: #ff8c1a; color: #1a1300; font-weight: 700; border-color: #ff8c1a; }
.annot-hint { font-size: 10px; color: var(--muted); max-width: 150px; }
.annot-pin { display: flex; align-items: center; gap: 4px; transform: translate(-7px, -7px); }
.annot-dot { width: 14px; height: 14px; border-radius: 50%; border: 2px solid #1a1300; display: inline-block; box-shadow: 0 0 4px rgba(0,0,0,0.7); }
.annot-pin .annot-label { color: #ffd9a8; font-size: 11px; font-weight: 700; text-shadow: 0 0 3px rgba(0,0,0,0.95); white-space: nowrap; }
.leaflet-tooltip.annot-tip { background: rgba(26,19,0,0.9); color: #ffd9a8; border: 1px solid #ff8c1a; font-weight: 600; }
.annot-pop { text-align: center; }

/* Navaid-Overlays (VOR/NDB/DME) */
.navaid-ctl { background: var(--map-ctl-bg); border: 1px solid var(--border); border-radius: 8px; padding: 7px 9px; color: var(--text); font-size: 12px; line-height: 1.5; box-shadow: 0 2px 10px rgba(0,0,0,0.5); }
.navaid-row { display: flex; align-items: center; gap: 6px; cursor: pointer; }
.navaid-row input { margin: 0; cursor: pointer; }
.navaid-hint { color: var(--muted); font-size: 10px; max-width: 140px; margin-top: 2px; }
.airspace-ctl { background: var(--map-ctl-bg); border: 1px solid var(--border); border-radius: 8px; padding: 7px 9px; color: var(--text); font-size: 12px; line-height: 1.5; box-shadow: 0 2px 10px rgba(0,0,0,0.5); max-width: 200px; }
.airspace-row { display: flex; align-items: center; gap: 6px; cursor: pointer; }
.airspace-row input { margin: 0; cursor: pointer; }
.airspace-sw { width: 12px; height: 12px; flex: 0 0 12px; border: 1.5px solid; border-radius: 3px; display: inline-block; }
.airspace-hint { color: var(--muted); font-size: 10px; max-width: 180px; margin-top: 2px; }
.airspace-attr { color: var(--muted); font-size: 9px; margin-top: 4px; opacity: 0.8; }
.airspace-tip { font-size: 11px; }
/* Ein-/ausklappbare Karten-Steuerfelder (Navaids, Lufträume): von rechts einfahrbar, per Klick auf den Reiter; standardmäßig eingefahren. */
.map-ctl-collapsible { display: flex; flex-direction: row; align-items: flex-start; gap: 4px; background: transparent; border: none; box-shadow: none; }
.map-ctl-body { transition: opacity 0.15s ease; }
.map-ctl-collapsible.collapsed .map-ctl-body { display: none; }
.map-ctl-tab { display: flex; align-items: center; gap: 5px; flex: 0 0 auto; background: var(--map-ctl-bg); border: 1px solid var(--border); border-radius: 8px; padding: 6px 9px; color: var(--map-ctl-accent); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,0.28); white-space: nowrap; }
.map-ctl-tab:hover { background: color-mix(in srgb, var(--map-ctl-accent) 16%, var(--map-ctl-bg)); }
.map-ctl-chev { display: inline-block; transition: transform 0.15s ease; font-size: 13px; }
.map-ctl-collapsible:not(.collapsed) .map-ctl-chev { transform: rotate(180deg); }
/* Master-Schalter: alle Layerreiter rechts komplett ein-/ausblenden */
.map-ctl-master { margin: 0 0 4px !important; }
.map-ctl-mbtn { background: var(--map-ctl-bg); border: 1px solid var(--border); border-radius: 8px; padding: 6px 9px; color: var(--map-ctl-accent); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,0.28); white-space: nowrap; }
.map-ctl-mbtn:hover { background: color-mix(in srgb, var(--map-ctl-accent) 16%, var(--map-ctl-bg)); }
.gy-layers-collapsed .map-ctl-collapsible,
.gy-layers-collapsed .leaflet-control-layers { display: none !important; }
.map-ctl-mbtn-icon { font-size: 15px; line-height: 1; padding: 6px 8px; letter-spacing: 0; }
.navaid-icon { display: flex; align-items: center; gap: 3px; transform: translate(-6px, -6px); }
.navaid-sym { width: 12px; height: 12px; display: inline-block; flex: 0 0 12px; }
.navaid-sym.vor { background: #7fd0ff; clip-path: polygon(50% 0, 93% 25%, 93% 75%, 50% 100%, 7% 75%, 7% 25%); }
.navaid-sym.ndb { border: 2px dotted #c08bff; border-radius: 50%; }
.navaid-sym.dme { background: transparent; border: 2px solid #5fd29a; }
.navaid-lbl { color: #cfe7ff; font-size: 10px; font-weight: 700; text-shadow: 0 0 3px rgba(0,0,0,0.95); white-space: nowrap; }
.leaflet-tooltip.navaid-tip { background: rgba(8,16,38,0.92); color: #dcecff; border: 1px solid #7fd0ff; font-size: 11px; }

/* ===== Barrierefreiheit: sichtbarer Tastatur-Fokus, Skip-Link, Screenreader-Helfer ===== */
/* Sichtbarer Fokusring NUR bei Tastaturbedienung (focus-visible); Maus/Touch bleiben unverändert. */
:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
:focus:not(:focus-visible) { outline: none; }
/* Eingabefelder bewusst hoch-spezifisch + am Dateiende, damit frühere „outline:none"-Regeln übersteuert werden. */
input:focus-visible, select:focus-visible, textarea:focus-visible,
.faq-search:focus-visible, .cmd-input:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
/* Nur für Screenreader (visuell verborgen) — z. B. die Live-Status-Region. */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
/* „Zum Inhalt springen" — nur bei Tastaturfokus sichtbar. */
.skip-link { position: fixed; top: -48px; left: 8px; z-index: 2000; background: var(--gold); color: var(--gold-ink); padding: 8px 14px; border-radius: 8px; font-weight: 700; text-decoration: none; transition: top .12s ease; }
.skip-link:focus { top: 8px; }

/* ===== Kontexthilfe: Inline-„ⓘ" + Popover ============================================ */
.info-tip { display: inline-flex; align-items: center; justify-content: center; vertical-align: middle;
  margin-left: 5px; padding: 0; width: 16px; height: 16px; border: 0; background: transparent;
  color: var(--muted); font-size: 12px; line-height: 1; cursor: help; border-radius: 50%; }
.info-tip:hover { color: var(--gold); }
.info-tip:focus-visible { color: var(--gold); outline: 2px solid var(--gold); outline-offset: 2px; }
.help-pop { position: fixed; z-index: 1300; max-width: 280px; padding: 9px 12px; font-size: 12.5px;
  line-height: 1.5; color: var(--text); background: linear-gradient(165deg, var(--navy-700), var(--navy-900));
  border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 12px 34px rgba(0,0,0,0.55);
  pointer-events: none; animation: helpPop .12s ease-out; }
@keyframes helpPop { from { opacity: 0; transform: translateY(-2px); } to { opacity: 1; transform: none; } }
.help-pop::before { content: ""; position: absolute; left: var(--arrow-x, 20px); width: 10px; height: 10px;
  background: var(--navy-700); border: 1px solid var(--border); transform: translateX(-50%) rotate(45deg); }
.help-pop.below::before { top: -6px; border-right: 0; border-bottom: 0; }
.help-pop.above::before { bottom: -6px; border-left: 0; border-top: 0; }

/* ===== Erfolge & Crew (Achievements + soziale Schicht) ============================= */
.seg-tabs { display: inline-flex; gap: 4px; background: var(--navy-800); border: 1px solid var(--border); border-radius: 10px; padding: 4px; margin-bottom: 14px; }
.seg-btn { padding: 8px 14px; border-radius: 8px; border: 0; background: transparent; color: var(--muted); font-size: 14px; font-weight: 600; cursor: pointer; }
.seg-btn.active { background: var(--navy-600); color: var(--text); }
.seg-btn:hover { color: var(--text); }
/* Pilot-Verweise (Bestenlisten/Wettbewerbe/Feed) — anklickbar → Profil. */
.pilot-link { cursor: pointer; }
.pilot-link:hover { text-decoration: underline; filter: brightness(1.1); }
/* Erfolgs-Karten */
.ach-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.ach-card { display: flex; gap: 12px; padding: 13px 14px; border-radius: 12px; background: var(--navy-700); border: 1px solid var(--border); border-left: 4px solid var(--ach-tier, var(--border)); }
.ach-card.locked { opacity: 0.72; }
.ach-card.done { box-shadow: 0 0 0 1px var(--ach-tier, transparent) inset; }
.ach-ico { font-size: 30px; line-height: 1.1; flex: 0 0 auto; }
.ach-main { flex: 1; min-width: 0; }
.ach-head { display: flex; align-items: center; gap: 8px; }
.ach-head strong { font-size: 14px; }
.ach-tier { margin-left: auto; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: var(--ach-tier, var(--muted)); border: 1px solid var(--ach-tier, var(--border)); border-radius: 6px; padding: 1px 6px; }
.ach-bar { height: 7px; border-radius: 5px; background: var(--navy-900); overflow: hidden; margin: 8px 0 3px; }
.ach-bar span { display: block; height: 100%; background: linear-gradient(90deg, var(--gold), var(--gold-dim)); }
.ach-prog { font-size: 11px; color: var(--muted); font-variant-numeric: tabular-nums; }
.ach-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-top: 8px; font-size: 12px; }
.ach-pts { font-weight: 700; color: var(--gold); }
.ach-done { color: var(--ok); }
.ach-rare { color: #ff9bb3; font-weight: 700; }

/* Erfolge 2.0: Rangleiste einer Erfolgs-Kette (Bronze → Saphir) — gefüllte Punkte = erreichte Ränge. */
.ach-ranks { display: flex; align-items: center; gap: 5px; margin-top: 6px; flex-wrap: wrap; }
.ach-rank-dot { width: 11px; height: 11px; border-radius: 50%; border: 2px solid var(--dot, var(--border)); background: transparent; display: inline-block; }
.ach-rank-dot.on { background: var(--dot, var(--gold)); box-shadow: 0 0 5px var(--dot, transparent); }
.ach-ranks-lbl { font-size: 11px; margin-left: 4px; }
/* Crew-Feed */
.feed-list { display: flex; flex-direction: column; }
.feed-row { display: flex; align-items: center; gap: 12px; padding: 11px 4px; border-bottom: 1px solid var(--border); }
.feed-row:last-child { border-bottom: 0; }
.feed-av { width: 42px; height: 42px; flex: 0 0 auto; border-radius: 50%; overflow: hidden; background: var(--navy-700); border: 0; padding: 0; }
.feed-av svg, .pp-avatar svg { width: 100%; height: 100%; display: block; }
.feed-main { flex: 1; min-width: 0; }
.feed-line { font-size: 14px; }
.feed-name { background: 0; border: 0; color: var(--text); font-weight: 700; font-size: 14px; padding: 0; }
.feed-kudos { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 20px; border: 1px solid var(--border); background: var(--navy-700); color: var(--muted); cursor: pointer; font-size: 13px; }
.feed-kudos:hover { color: var(--text); }
.feed-kudos.on { background: rgba(245,179,1,0.14); border-color: var(--gold); color: var(--gold); }
/* Pilotenprofil */
.pp-head { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; }
.pp-avatar { width: 92px; height: 92px; flex: 0 0 auto; border-radius: 50%; overflow: hidden; background: var(--navy-700); border: 2px solid var(--border); }
.pp-meta { flex: 1; min-width: 220px; }
.pp-meta h2 { margin: 0 0 2px; }
.pp-kpis { margin-top: 12px; }
.pp-tier { margin-top: 10px; }
.pp-tier h4 { margin: 0 0 6px; font-size: 13px; }
.pp-badges { display: flex; flex-wrap: wrap; gap: 8px; }
.pp-badge { display: inline-flex; flex-direction: column; align-items: center; gap: 2px; width: 92px; padding: 8px 4px; border-radius: 10px; background: var(--navy-700); border: 1px solid var(--ach-tier, var(--border)); font-size: 22px; }
.pp-badge small { font-size: 10px; color: var(--muted); text-align: center; line-height: 1.1; }

/* ===== Onboarding / „Erste Schritte"-Tour ============================================= */
/* Vollbild-Overlay über der App (unter den Toasts). Fängt Klicks ab; Inhalte liegen darüber. */
.ob-overlay { position: fixed; inset: 0; z-index: 1500; }
.ob-overlay .ob-backdrop { position: absolute; inset: 0; background: rgba(6,10,20,0.74); backdrop-filter: blur(2px); }
/* Slide-Karte (zentriert, illustriert). */
.ob-card { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); width: min(560px, calc(100vw - 32px));
  max-height: calc(100vh - 40px); overflow-y: auto; background: linear-gradient(165deg, var(--navy-700) 0%, var(--navy-900) 100%);
  border: 1px solid var(--border); border-radius: 18px; box-shadow: 0 24px 70px rgba(0,0,0,0.62); animation: obPop .22s ease-out; }
@keyframes obPop { from { opacity: 0; transform: translate(-50%, -46%) scale(.97); } to { opacity: 1; transform: translate(-50%,-50%) scale(1); } }
.ob-card-body { padding: 4px 24px 0; }
.ob-card-head { display: flex; align-items: center; gap: 12px; margin: 14px 0 6px; }
.ob-card-head h2 { margin: 0; font-size: 21px; color: var(--text); }
.ob-card-ico { font-size: 30px; line-height: 1; }
.ob-body { color: var(--text); font-size: 15px; line-height: 1.5; }
.ob-body p { margin: 8px 0; }
.ob-body ul { margin: 8px 0; padding-left: 20px; }
.ob-body li { margin: 5px 0; }
.ob-body strong { color: var(--gold); }
/* Illustrations-Bühne. */
.ob-art { position: relative; height: 150px; border-radius: 18px 18px 0 0; overflow: hidden; background: #0d1b3e; display: flex; align-items: center; justify-content: center; }
.ob-art-bg { position: absolute; inset: 0; width: 100%; height: 100%; }
.ob-art-emoji { position: relative; font-size: 64px; filter: drop-shadow(0 6px 12px rgba(0,0,0,.5)); animation: obFloat 3.4s ease-in-out infinite; }
@keyframes obFloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-7px); } }
.ob-art-lbl { fill: var(--muted); font-size: 9px; font-family: inherit; }
.ob-art-chips, .ob-art-flow { gap: 10px; flex-wrap: wrap; padding: 0 14px; background: linear-gradient(165deg, #14224c, #0d1b3e); }
.ob-chip, .ob-flow-chip { display: flex; flex-direction: column; align-items: center; gap: 4px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; min-width: 78px; }
.ob-chip span, .ob-flow-chip span { font-size: 26px; line-height: 1; }
.ob-chip b, .ob-flow-chip b { font-size: 12px; color: var(--text); }
.ob-flow-arrow { color: var(--gold); font-size: 20px; font-weight: 700; }
/* Spotlight-Box: der riesige box-shadow dunkelt alles außer dem Ziel ab. */
.ob-spot { position: absolute; border-radius: 12px; box-shadow: 0 0 0 9999px rgba(6,10,20,0.74); border: 2px solid var(--gold);
  pointer-events: none; transition: left .25s ease, top .25s ease, width .25s ease, height .25s ease; animation: obPulse 1.8s ease-in-out infinite; }
@keyframes obPulse { 0%,100% { box-shadow: 0 0 0 9999px rgba(6,10,20,0.74), 0 0 0 2px var(--gold); } 50% { box-shadow: 0 0 0 9999px rgba(6,10,20,0.74), 0 0 0 7px rgba(245,179,1,0.35); } }
/* Sprechblase neben dem Spotlight. */
.ob-bubble { position: absolute; width: min(340px, calc(100vw - 24px)); background: linear-gradient(165deg, var(--navy-700) 0%, var(--navy-900) 100%);
  border: 1px solid var(--border); border-radius: 14px; padding: 16px 18px; box-shadow: 0 18px 50px rgba(0,0,0,0.6); animation: obPop2 .2s ease-out; }
@keyframes obPop2 { from { opacity: 0; transform: translateX(-8px); } to { opacity: 1; transform: none; } }
.ob-bubble::before { content: ""; position: absolute; left: -9px; top: var(--ob-arrow-y, 24px); width: 16px; height: 16px;
  background: var(--navy-700); border-left: 1px solid var(--border); border-bottom: 1px solid var(--border); transform: rotate(45deg); }
.ob-bubble.ob-bubble-center { left: 50%; top: 50%; transform: translate(-50%,-50%); }
.ob-bubble.ob-bubble-center::before { display: none; }
.ob-bubble-head { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }
.ob-bubble-head h3 { margin: 0; font-size: 17px; color: var(--text); }
.ob-bubble-ico { font-size: 24px; line-height: 1; }
/* Fußzeile: Fortschritt + Navigation. */
.ob-count { color: var(--muted); font-size: 12px; margin: 12px 18px 0; }
.ob-card .ob-count { margin: 12px 24px 0; }
.ob-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 18px 16px; }
.ob-card .ob-foot { padding: 10px 24px 18px; }
.ob-dots { display: flex; gap: 6px; flex-wrap: wrap; }
.ob-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--border); transition: background .15s, transform .15s; }
.ob-dot.on { background: var(--gold); transform: scale(1.25); }
.ob-nav { display: flex; gap: 8px; }
.ob-btn { padding: 9px 16px; border-radius: 9px; font-size: 14px; font-weight: 600; cursor: pointer; border: 1px solid var(--border); background: var(--navy-600); color: var(--text); }
.ob-btn.primary { background: linear-gradient(180deg, var(--gold), var(--gold-dim)); border-color: var(--gold); color: var(--gold-ink); }
.ob-btn.ghost { background: transparent; }
.ob-btn:hover { filter: brightness(1.08); }
.ob-skip { position: absolute; top: 10px; right: 12px; background: rgba(0,0,0,0.28); border: 1px solid var(--border); color: var(--muted);
  font-size: 12px; padding: 5px 10px; border-radius: 8px; cursor: pointer; z-index: 2; }
.ob-skip:hover { color: var(--text); }
/* „Erste Schritte"-Seite (Menü). */
.ob-home-hero { display: flex; gap: 18px; align-items: center; }
.ob-home-hero-art { font-size: 54px; line-height: 1; animation: obFloat 3.4s ease-in-out infinite; }
.ob-home-hero-txt h3 { margin: 0 0 6px; }
.ob-home-hero-txt p { margin: 0 0 12px; color: var(--muted); }
.ob-home-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.ob-home-card { display: flex; align-items: center; gap: 12px; text-align: left; background: var(--navy-700); border: 1px solid var(--border);
  border-radius: 12px; padding: 12px 14px; cursor: pointer; color: var(--text); transition: transform .12s, border-color .12s; }
.ob-home-card:hover { transform: translateY(-2px); border-color: var(--gold); }
.ob-home-ico { font-size: 26px; line-height: 1; }
.ob-home-txt { display: flex; flex-direction: column; }
.ob-home-txt b { font-size: 14px; }
.ob-home-txt small { color: var(--muted); font-size: 11px; }
/* FAQ-Tour-Hinweis. */
.faq-tour-hint { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  background: rgba(245,179,1,0.10); border: 1px solid rgba(245,179,1,0.4); border-radius: 12px; padding: 12px 16px; margin-bottom: 14px; }
.faq-tour-hint span { color: var(--text); font-size: 14px; }
@media (max-width: 560px) { .ob-art { height: 120px; } .ob-art-emoji { font-size: 50px; } }

/* ===== Angestellte (Flight Operations Manager) ===== */
.staff-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 16px; }
.staff-tab { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; font-size: 13px;
  background: var(--navy-700); color: var(--muted); border: 1px solid var(--border); border-radius: 999px; cursor: pointer; }
.staff-tab .ico { font-size: 14px; }
.staff-tab:hover { color: var(--text); }
.staff-tab.active { background: var(--navy-600); color: var(--text); border-color: var(--gold); box-shadow: inset 0 0 0 1px var(--gold); }

.staff-dash-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-bottom: 14px; }
.staff-kpi { text-align: left; cursor: pointer; }
.staff-kpi-top { display: flex; align-items: center; justify-content: space-between; }
.staff-kpi-ico { font-size: 24px; }
.staff-kpi-n { font-size: 28px; font-weight: 700; color: var(--text); }
.staff-kpi-lbl { font-weight: 600; color: var(--text); margin-top: 4px; }
.staff-kpi-sub { font-size: 12px; color: var(--muted); margin-top: 2px; }
.staff-warn ul { margin: 6px 0 0; padding-left: 18px; line-height: 1.7; }
.staff-warn a, .staff-event a { color: var(--gold); cursor: pointer; text-decoration: underline; }
.staff-warn h3 { color: #f0b86a; }
.staff-ok h3 { color: #5fd29a; }
.staff-warn { font-size: 12px; }
.staff-warn h3 { font-size: 14px; }
.staff-todo { border: 1px solid var(--line, rgba(255,255,255,.1)); border-radius: 8px; margin-top: 8px; padding: 4px 10px; background: rgba(255,255,255,.02); }
.staff-todo > summary { cursor: pointer; font-weight: 600; list-style: none; padding: 4px 0; display: flex; align-items: center; gap: 6px; }
.staff-todo > summary::-webkit-details-marker { display: none; }
.staff-todo > summary::before { content: '▸'; color: var(--gold); font-size: 11px; transition: transform .15s; }
.staff-todo[open] > summary::before { transform: rotate(90deg); }
.staff-todo-n { margin-left: auto; background: rgba(240,184,106,.18); color: #f0b86a; border-radius: 10px; padding: 0 7px; font-size: 11px; font-weight: 600; }
.staff-todo-list { margin: 4px 0 0; padding-left: 16px; line-height: 1.6; }
.staff-todo-list b { color: var(--ink, #e8e8e8); }
.staff-todo-rec { margin: 6px 0 2px; opacity: .82; line-height: 1.5; }

.staff-bar { display: inline-block; vertical-align: middle; width: 86px; height: 8px; border-radius: 5px;
  background: var(--navy-700); border: 1px solid var(--border); overflow: hidden; }
.staff-bar > span { display: block; height: 100%; border-radius: 5px; }
.staff-num { display: inline-block; min-width: 26px; margin-left: 6px; font-size: 12px; color: var(--muted); vertical-align: middle; }
/* Haussymbol hinter der Fitness: NPC nach Hause schicken. */
.staff-home-btn { border: none; background: transparent; cursor: pointer; font-size: 14px; line-height: 1; padding: 1px 3px; border-radius: 6px; vertical-align: middle; opacity: .75; }
.staff-home-btn:hover { opacity: 1; background: color-mix(in srgb, var(--gold) 22%, transparent); }
.staff-home-btn:disabled { opacity: .4; cursor: default; }
.staff-home-wait { font-size: 12px; vertical-align: middle; opacity: .8; }
/* Fitness-Balken mit eingeblendetem Regenerations-Cooldown (Restzeit bis 100 % / „im Einsatz" / „erholt"). */
.staff-fitbar { position: relative; width: 122px; height: 15px; }
.staff-fit-cd { position: absolute; right: 5px; top: 50%; transform: translateY(-50%); font-size: 9px; font-weight: 700; line-height: 1; color: #fff; letter-spacing: .2px; text-shadow: 0 0 3px rgba(0,0,0,.95), 0 1px 1px rgba(0,0,0,.9); pointer-events: none; white-space: nowrap; }
.staff-chip { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 11px; color: #fff;
  background: var(--c, #3a5a86); white-space: nowrap; }
.staff-usertag { display: inline-block; padding: 1px 7px; border-radius: 999px; font-size: 10px; background: var(--navy-600); color: var(--muted); border: 1px solid var(--border); }
.staff-alert { color: #f0b86a; }

.staff-grouphead { display: flex; align-items: center; justify-content: space-between; margin: 4px 0 8px; }
.staff-grouphead h3 { margin: 0; color: var(--silver); }
.staff-tablewrap { overflow-x: auto; }
.staff-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.staff-table thead th { text-align: left; padding: 8px 10px; color: var(--muted); font-weight: 600;
  border-bottom: 1px solid var(--border); white-space: nowrap; }
.staff-th { cursor: pointer; user-select: none; }
.staff-th:hover { color: var(--text); }
.staff-table tbody td { padding: 8px 10px; border-bottom: 1px solid var(--border); }
.staff-row { cursor: pointer; }
.staff-row:hover td { background: var(--navy-700); }
/* Flugstunden-Spalte der Flight Crews: rechtsbündig mit Tabellenziffern — Stundenstände vergleicht man
   über die Stellenzahl, und ein „9 000 h" darf nicht schmaler wirken als ein „450 h". */
.staff-table td.staff-hours { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }

.staff-form-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin: 6px 0; }
.staff-form-row label { min-width: 180px; }
.staff-form-row select { width: 100%; }

.staff-detail-head { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }
.staff-detail-head h2 { margin: 0; }
.staff-detail-meta { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; color: var(--muted); font-size: 13px; margin-bottom: 12px; }
/* Kopfzeile im Wohlbefinden-Kasten: Avatar-Nahaufnahme (feste Höhe) + Name/Job-Spalte + Fakten-Spalte
   (Verfügbarkeit/Einstellung/Gehalt), je eigene Zeile (Nutzervorgabe 2026-07-22). */
.staff-wb-id { display: flex; align-items: center; gap: 16px; margin-bottom: 14px; flex-wrap: wrap;
  padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.staff-wb-av { flex: 0 0 auto; width: 108px; height: 108px; border-radius: 12px; overflow: hidden;
  background: var(--navy-700); display: flex; align-items: center; justify-content: center; }
/* Mit hochgeladenem Bild zeigt die Akte das GANZE Bild (Nutzervorgabe 2026-07-31) — der Kasten bekommt
   dafür das Seitenverhältnis des Avatar-Bildraums (200:330), sonst bliebe oben/unten ein leerer Rand. */
.staff-wb-av.has-photo { height: 178px; }
.staff-wb-av .staff-portrait-full { display: block; width: 100%; height: 100%; }
.staff-wb-av .staff-portrait-full .avatar-svg { width: 100%; height: 100%; display: block; }
.staff-wb-av .staff-portrait { width: 100%; height: 100%; }
.staff-wb-av .staff-portrait span, .staff-wb-av svg, .staff-wb-av img { width: 100%; height: 100%; border-radius: 0; display: block; }
/* ADMIN: Profilbild auf den Angestellten ziehen (Nutzervorgabe 2026-07-31). Das Porträt selbst ist die
   Ablagefläche; die Hinweiszeile liegt als Streifen darüber und erscheint erst beim Überfahren, damit die
   Personalakte im Normalfall unverändert aussieht. */
.staff-wb-av.staff-photo-drop { position: relative; cursor: pointer; }
.staff-photo-tools { position: absolute; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column;
  align-items: center; gap: 3px; padding: 4px 3px 5px; text-align: center; font-size: 10px; line-height: 1.15;
  background: linear-gradient(to top, rgba(3,8,18,.9), rgba(3,8,18,0)); opacity: 0; transition: opacity .12s; }
.staff-wb-av:hover .staff-photo-tools, .staff-wb-av.hot .staff-photo-tools { opacity: 1; }
.staff-photo-tools .mini { padding: 2px 6px; font-size: 10px; }
.staff-photo-drop.hot { outline: 2px dashed var(--gold); outline-offset: -2px; }
.staff-photo-drop.busy, .staff-photo-zone.busy { opacity: .55; pointer-events: none; }
.staff-photo-zone { border: 2px dashed var(--border); border-radius: 12px; padding: 22px 14px; text-align: center;
  color: var(--muted); cursor: pointer; transition: border-color .12s, color .12s; }
.staff-photo-zone:hover { border-color: var(--gold); }
/* Ausschnitt-Dialog für nicht-quadratische Bilder: Bild als Hintergrund, quadratischer Rahmen darüber. */
.staff-crop-card { max-width: min(92vw, 480px); }
.staff-crop-wrap { position: relative; margin: 8px auto; border-radius: 8px; overflow: hidden; cursor: move;
  background-size: 100% 100%; background-repeat: no-repeat; background-color: var(--navy-900);
  user-select: none; touch-action: none; max-width: 100%; }
.staff-crop-box { position: absolute; box-sizing: border-box; border: 2px solid var(--gold, #f5b301);
  border-radius: 4px; box-shadow: 0 0 0 9999px rgba(8,12,22,.6); pointer-events: none; }
.staff-crop-size { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--muted); }
.staff-crop-size input { flex: 1; }
.staff-photo-zone.hot { border-color: var(--gold); color: var(--text); background: rgba(245,179,1,.08); }
.staff-wb-idcol { display: flex; flex-direction: column; gap: 6px; min-width: 0; flex: 1 1 0; overflow-wrap: anywhere; }
.staff-wb-name { font-size: 1.15rem; font-weight: 700; line-height: 1.2; }
.staff-wb-job { color: var(--muted); font-weight: 600; }
/* Fakten-Spalte direkt neben der Identität (kein Auto-Abstand mehr — der riss früher eine große Lücke);
   die Kennzahlen-Spalte sitzt rechts. */
.staff-wb-facts { display: flex; flex-direction: column; gap: 8px; margin-left: 24px; }
.staff-wb-metrics { margin-left: auto; }
.staff-wb-facts > div { display: flex; flex-direction: column; line-height: 1.25; }
.staff-wb-facts .muted-note { font-size: 11px; }
/* Dritte Kopfzeilen-Spalte: Zufriedenheit/Ermüdung/Erfahrung + Verlauf — gleiche Reihenlogik wie die
   Fakten-Spalte (Label über Wert), mit kompakten Balken. */
.staff-wb-metrics { display: flex; flex-direction: column; gap: 8px; flex: 0 0 230px; min-width: 0; }
.staff-wb-metrics > div { display: flex; flex-direction: column; line-height: 1.25; }
.staff-wb-metrics .muted-note { font-size: 11px; }
.staff-wb-metrics .staff-num { font-size: 12px; }
.staff-wb-metrics .staff-bar { margin: 2px 0; }
.staff-wb-metrics svg { max-width: 100%; }
@media (max-width: 700px) { .staff-wb-metrics { flex: 1 1 100%; } }
@media (max-width: 560px) { .staff-wb-facts { margin-left: 0; } }
.staff-spark { width: 100%; height: 46px; }
.staff-spark-empty { font-style: italic; opacity: .8; padding: 6px 0; }
.staff-detail-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin-top: 14px; }

.staff-stats-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.staff-stats-table td { padding: 6px 8px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.staff-stat-name { color: var(--text); white-space: nowrap; }
.staff-stat-bar { width: 100px; }
.staff-hint { color: var(--muted); font-size: 12px; }
.staff-band { display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 999px; font-size: 10px; }
.staff-band-0 { background: #4a2730; color: #ffc7c7; }
.staff-band-1 { background: #4a3a27; color: #ffe1b0; }
.staff-band-2 { background: #2f3a4a; color: #bcd4ff; }
.staff-band-3 { background: #27432f; color: #b6f0c2; }
.staff-typexp { display: flex; align-items: center; gap: 10px; padding: 5px 0; border-bottom: 1px solid var(--border); }
.staff-typexp span:first-child { min-width: 160px; }

.staff-event { padding: 8px 0; border-bottom: 1px solid var(--border); }
.staff-event-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.staff-event-ico { font-size: 16px; }
.staff-event-body { margin: 4px 0 6px; color: var(--muted); font-size: 13px; }
.staff-event-opts { display: flex; flex-wrap: wrap; gap: 8px; }
.staff-past-search { margin: 6px 0 4px; }
.staff-past-search input { width: 100%; box-sizing: border-box; padding: 7px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--panel); color: var(--text); }
.staff-past-pager { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 8px; flex-wrap: wrap; }
.staff-lounge-click { position: relative; padding: 10px 12px; margin: 6px 0; border: 1px solid var(--border); border-radius: 8px; cursor: pointer; transition: background .12s, border-color .12s; }
.staff-lounge-click:hover, .staff-lounge-click:focus-visible { background: var(--surface-2, rgba(103,232,249,.08)); border-color: #67e8f9; outline: none; }
.lng-listhead { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
/* Kompakte Lounge-Kacheln (Bestehende Lounges): Raster statt kastenbreiter Zeilen; ICAO prominent,
   Größe nur als dezenter Badge. */
.lng-list-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; }
.lng-list-tile { margin: 0; padding: 12px 14px; background: linear-gradient(160deg, color-mix(in srgb, var(--navy-700) 88%, #67e8f9 4%), var(--navy-700)); border-radius: 12px; display: flex; flex-direction: column; gap: 4px; }
.lng-list-tile:hover, .lng-list-tile:focus-visible { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(0,0,0,.35); }
.lng-list-ico { font-size: 20px; }
.lng-list-icao { font-size: 17px; letter-spacing: .04em; }
.lng-size-badge-soft { font-weight: 600; font-size: 10px; letter-spacing: .05em; padding: 1px 7px; opacity: 0.75; margin-left: auto; }
/* Größenklasse deutlich unterscheiden (Item 7): Farbe + Größe je small/medium/large. */
.lng-size-badge { font-weight: 800; letter-spacing: .06em; border-radius: 6px; padding: 2px 8px; color: #0b1220; }
.lng-size-small { background: #7dd3fc; font-size: 11px; }
.lng-size-medium { background: #38bdf8; font-size: 13px; padding: 3px 10px; }
.lng-size-large { background: #f5b301; font-size: 15px; padding: 4px 12px; box-shadow: 0 0 0 2px rgba(245,179,1,.3); }
.lng-eff-chips { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
.lng-eff-chip { font-size: 12px; background: rgba(103,232,249,.12); border: 1px solid rgba(103,232,249,.35); border-radius: 999px; padding: 2px 9px; color: var(--text); }

/* ===== Crew-Lounge-Grundriss-Editor ===== */
.ageo-lspot { text-align: center; }
.lng-tool { padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px; background: var(--panel); color: var(--text); cursor: pointer; font-size: 13px; }
.lng-tool.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.lng-room-btn { display: flex; align-items: center; gap: 6px; padding: 5px 8px; border: 1px solid var(--border); border-radius: 6px; background: var(--panel); color: var(--text); cursor: pointer; font-size: 12.5px; text-align: left; }
.lng-room-btn.active { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset; }
.lng-sw { width: 12px; height: 12px; border-radius: 3px; display: inline-block; flex: 0 0 auto; }
.lng-equip-group { margin-bottom: 8px; }
.lng-equip-head { font-weight: 600; font-size: 12px; color: var(--muted); margin: 6px 0 3px; text-transform: uppercase; letter-spacing: .02em; cursor: pointer; list-style: none; }
details.lng-equip-group > summary.lng-equip-head::before { content: '▸ '; }
details.lng-equip-group[open] > summary.lng-equip-head::before { content: '▾ '; }
.lng-cost-row { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; padding: 2px 0; }
.lng-cost-total { border-top: 1px solid var(--border); margin-top: 4px; padding-top: 5px; }
.lng-cost-details { margin: 3px 0; }
.lng-cost-details > summary { cursor: pointer; font-size: 13px; display: flex; justify-content: space-between; }
.lng-cost-details .lng-cost-row { padding-left: 10px; color: var(--muted); }
.lng-gridwrap { overflow: auto; max-height: 68vh; }
.lng-buyvert, .lng-buymid { touch-action: none; }
.lng-eff-chip { display: inline-block; padding: 2px 7px; margin: 2px; border-radius: 10px; font-size: 12px; background: color-mix(in srgb, var(--c, #4a6a9a) 24%, transparent); border: 1px solid var(--c, #4a6a9a); }
/* v2-Grundriss (SVG, Meter): WC-Geschlecht, platzierbare Ausstattung, Paletten-Icons */
.lng-gender { display: inline-flex; align-items: center; gap: 4px; padding: 4px 8px; margin: 2px 4px 2px 0; border: 1px solid var(--border); border-radius: 6px; background: var(--panel); color: var(--text); cursor: pointer; font-size: 12.5px; }
.lng-gender.active { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset; }
.lng-item { cursor: grab; }
.lng-item.selected rect:last-child { stroke: var(--accent); stroke-width: 2.4; }
#lng-svgwrap { line-height: 0; }
/* ── Design-Studio (ganzseitiger Grundriss-Editor) ── */
#lng-studio-view { max-width: 1440px; margin: 0 auto; }
.lng-studio-card { padding: 16px; }
.lng-studio-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding-bottom: 12px; margin-bottom: 14px; border-bottom: 1px solid var(--border); }
.lng-back { padding: 6px 12px; border: 1px solid var(--border); border-radius: 8px; background: var(--panel); color: var(--text); cursor: pointer; font-size: 13px; }
.lng-back:hover { border-color: var(--accent); }
.lng-title { font-size: 15px; }
.lng-stepper { display: inline-flex; margin-left: auto; border: 1px solid var(--border); border-radius: 999px; overflow: hidden; }
.lng-step { padding: 6px 16px; border: 0; background: var(--panel); color: var(--muted); cursor: pointer; font-size: 13px; }
.lng-step.active { background: var(--accent); color: #fff; }
.lng-step:disabled { opacity: .45; cursor: not-allowed; }
.lng-studio { display: grid; grid-template-columns: 78px 1fr 344px; gap: 14px; align-items: start; }
.lng-rail { display: flex; flex-direction: column; gap: 6px; position: sticky; top: 8px; }
.lng-railbtn { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 9px 4px; border: 1px solid var(--border); border-radius: 10px; background: var(--panel); color: var(--text); cursor: pointer; }
.lng-railbtn:hover { border-color: var(--accent); }
.lng-railbtn.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.lng-railico { font-size: 20px; line-height: 1; }
.lng-raillbl { font-size: 10.5px; }
.lng-rail-sep { height: 1px; background: var(--border); margin: 4px 2px; }
.lng-canvas { position: relative; border: 1px solid var(--border); border-radius: 12px; overflow: hidden; background: var(--panel); }
.lng-canvas-tools { position: absolute; top: 8px; right: 8px; z-index: 5; display: flex; gap: 4px; }
.lng-canvas .lng-gridwrap { overflow: auto; max-height: 74vh; background-color: #0b1220; background-image: linear-gradient(rgba(120,140,170,.10) 1px, transparent 1px), linear-gradient(90deg, rgba(120,140,170,.10) 1px, transparent 1px); background-size: 22px 22px; }
.lng-canvas-foot { position: absolute; left: 8px; bottom: 8px; z-index: 5; display: flex; align-items: center; gap: 10px; pointer-events: none; }
.lng-scalebar { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: #cfe0f5; background: rgba(11,18,32,.72); padding: 3px 8px; border-radius: 6px; }
.lng-scalebar-bar { display: inline-block; height: 4px; background: #cfe0f5; border-radius: 2px; }
.lng-warn { margin-top: 8px; font-size: 12px; padding: 6px 10px; border-radius: 8px; font-weight: 600; }
.lng-warn.ok { background: color-mix(in srgb, #22c55e 18%, transparent); color: #86efac; border: 1px solid #22c55e; }
.lng-warn.bad { background: color-mix(in srgb, #ef4444 16%, transparent); color: #fca5a5; border: 1px solid #ef4444; }
.lng-inspector { display: flex; flex-direction: column; gap: 12px; max-height: 78vh; overflow-y: auto; }
.lng-card { border: 1px solid var(--border); border-radius: 12px; background: var(--panel); padding: 12px; }
.lng-card-h { font-weight: 700; font-size: 13px; margin-bottom: 8px; }
.lng-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.lng-tilewrap { display: grid; grid-template-columns: repeat(auto-fill, minmax(86px, 1fr)); gap: 6px; }
.lng-tile { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 8px 4px; border: 1px solid var(--border); border-radius: 10px; background: var(--panel); color: var(--text); cursor: pointer; text-align: center; }
.lng-tile:hover { border-color: var(--accent); }
.lng-tile.active { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent) inset; }
.lng-tile svg { background: rgba(255,255,255,0.05); border-radius: 6px; }
.lng-tile-lbl { font-size: 11px; line-height: 1.15; }
.lng-tile-cost { font-size: 9.5px; color: var(--muted); }
.lng-cta { width: 100%; margin-top: 10px; padding: 9px; font-weight: 600; }
.lng-rotbtns { display: flex; flex-wrap: wrap; gap: 4px; }
.lng-sel { border-color: var(--accent); }
.lng-toast { margin-top: 10px; min-height: 1em; }
@media (max-width: 1000px) {
  .lng-studio { grid-template-columns: 1fr; }
  .lng-rail { flex-direction: row; flex-wrap: wrap; position: static; }
  .lng-inspector { max-height: none; overflow: visible; }
}
/* Fahrzeug-Bilder-Übersicht (Airline-Menü) */
.veh-gallery { display: flex; flex-wrap: wrap; gap: 12px; padding: 8px 2px; }
.veh-thumb { margin: 0; text-align: center; width: 56px; }
.veh-thumb img { width: 46px; height: 46px; object-fit: contain; background: rgba(255,255,255,0.06); border: 1px solid var(--border); border-radius: 8px; padding: 3px; }
.veh-thumb figcaption { font-size: 11px; color: var(--muted); margin-top: 3px; }
.veh-del { border: none; background: none; color: var(--danger); cursor: pointer; font-size: 12px; padding: 0 2px; }
.veh-add { margin-top: 6px; }
.veh-addbtn { cursor: pointer; display: inline-block; }

/* ===== Hangars: Auslastung + aufklappbare Flugzeugliste ===== */
.hub-hangar { padding: 8px 0; border-bottom: 1px solid var(--border); }
.hub-hangar > summary { cursor: pointer; list-style: revert; }
.hub-hangar > summary > .muted-note { margin-left: 8px; }
.hub-hangar table { margin: 8px 0 4px; }

/* ===== Personal: Bewerber, Porträts, Effekte ===== */
.staff-portrait { display: inline-flex; vertical-align: middle; }
.staff-portrait .av-portrait, .staff-portrait span { border-radius: 50%; overflow: hidden; }
.staff-pcell { width: 42px; }
.staff-table td.staff-pcell { padding: 4px 6px; }
.staff-applicants { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; margin: 6px 0 12px; }
/* Feinausrichtung des Avatars im Hintergrund-Editor (Pfeile + „mittig"/„auf den Boden"). */
.pose-nudge { display: flex; flex-wrap: wrap; gap: 6px; }
/* Hinweis auf die noch nicht freigeschalteten Bewerber desselben Jahrgangs (Ruf holt sie an den Tisch). */
.staff-app-waiting { margin: -4px 0 12px; padding: 8px 12px; border-left: 3px solid var(--gold); background: var(--navy-800); border-radius: 0 8px 8px 0; }
/* Admin-Zeile darunter: die beiden Ruf-Schwellen (nächster Bewerber / erster Rückzug). */
.staff-app-admin { margin: -8px 0 12px; padding: 8px 12px; border-left: 3px solid var(--muted); background: var(--navy-800); border-radius: 0 8px 8px 0; }
.staff-applicant { display: flex; align-items: center; gap: 10px; text-align: left; padding: 10px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 12px; cursor: pointer; }
.staff-applicant:hover { border-color: var(--gold); }
.staff-app-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.staff-app-info strong { color: var(--text); }
.staff-app-sal { color: var(--gold); font-size: 12px; }
.staff-app-detail { display: flex; gap: 18px; flex-wrap: wrap; align-items: flex-start; }
.staff-app-portrait { flex: 0 0 160px; display: flex; flex-direction: column; gap: 10px; align-items: stretch; }
.staff-app-portrait svg { width: 160px; height: 160px; border-radius: 14px; background: var(--navy-700); box-shadow: 0 0 0 1px var(--border); }
.staff-app-hire { display: flex; flex-direction: column; gap: 6px; }
.staff-app-hire .staff-hire-hub-l { flex-direction: column; align-items: stretch; gap: 3px; }
.staff-app-hire .staff-hire-app { width: 100%; }
.staff-app-side { flex: 1; min-width: 240px; }
/* Bewerber-Fähigkeiten: qualitative Einstufung (keine exakten Zahlen vor der Einstellung). */
.app-grade { display: inline-block; padding: 1px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; border: 1px solid var(--border); background: var(--navy-700); }
.app-grade-0 { color: #d09a9a; } .app-grade-1 { color: #d0b477; } .app-grade-2 { color: #c2d07a; }
.app-grade-3 { color: #85d295; } .app-grade-4 { color: #62d2c2; } .app-grade-5 { color: #86b3ff; }
.staff-app-side h3 { margin: 10px 0 6px; }
.staff-cv { margin: 8px 0 0; padding-left: 0; list-style: none; }
.staff-cv li { padding: 4px 0; border-bottom: 1px solid var(--border); }
.staff-cv-when { display: inline-block; min-width: 92px; color: var(--muted); font-variant-numeric: tabular-nums; }
.staff-fx-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.staff-fx { display: flex; gap: 10px; align-items: flex-start; }
.staff-fx-ico { font-size: 22px; line-height: 1; }
.staff-detail-head .staff-portrait { margin-right: 4px; }

/* ===== Autopilot / Offlineflüge ===== */
.hero-autopilot { background: linear-gradient(135deg, #2a3a6b, #1d2747); }
.ap-prog { position: relative; height: 24px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; margin: 10px 0; }
.ap-prog-fill { height: 100%; background: linear-gradient(90deg, #3b82f6, #5fd29a); transition: width .6s ease; }
.ap-prog-label { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.5); }
/* Verzögerungs-Grund statt Countdown (Rollhalt/Rollverkehr/Durchstart). Dezent gelb, sanft pulsierend. */
.ap-wait { color: #ffd23f; font-weight: 700; }
.ap-prog-label .ap-wait { color: #ffe27a; }
.ap-wait-note { margin: 4px 0 2px; padding: 5px 10px; border-radius: 8px; background: rgba(245,179,1,.12); border: 1px solid rgba(245,179,1,.35); display: inline-block; animation: apWaitPulse 1.8s ease-in-out infinite; }
@keyframes apWaitPulse { 0%,100% { opacity: 1; } 50% { opacity: .72; } }
.ap-map-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
/* Karten-Kopfbuttons (Strecke ein-/ausblenden, Fokus): vollständig theme-adaptiv — die aktive Kennzeichnung
   färbt Text/Rahmen in der Akzentfarbe (kontrastiert in Light UND Dark), statt hart dunkler Schrift auf der
   Akzentfläche (die im Light Mode kippte). Nutzervorgabe 2026-07-23. */
.ap-focus-btn { font-size: 12px; font-weight: 600; padding: 3px 10px; border-radius: 999px; background: transparent; border: 1px solid var(--border); color: var(--muted); cursor: pointer; transition: background .15s, color .15s, border-color .15s; }
.ap-focus-btn:hover { color: var(--text); border-color: var(--map-ctl-accent); background: color-mix(in srgb, var(--map-ctl-accent) 12%, transparent); }
.ap-focus-btn.active { color: var(--map-ctl-accent); border-color: var(--map-ctl-accent); background: color-mix(in srgb, var(--map-ctl-accent) 16%, transparent); font-weight: 700; }
.staff-hire-hub-l { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }
.staff-hub-sel { padding: 4px 8px; border-radius: 8px; background: var(--navy-700); border: 1px solid var(--border); color: var(--text); font-size: 13px; }
.ap-chips { display: flex; flex-wrap: wrap; gap: 6px; }
/* Zehn Phasen-Chips brauchen bei 12 px und 9 px Innenabstand rund 890 px — bei der Fenster-Mindestbreite
   (1280, siehe desktop/main.js) bleiben davon knapp 940 px Inhalt, und der aktive Chip mit seiner
   Restzeit-Anzeige kippte „Paperwork" damit regelmäßig in eine zweite Zeile. Unterhalb von 1500 px rücken
   sie deshalb zusammen; auf Mobilgeräten (< 760 px) ist der Umbruch weiterhin richtig und bleibt. */
@media (min-width: 761px) and (max-width: 1500px) {
  .ap-chips { gap: 4px; }
  .ap-chip { font-size: 11px; padding: 2px 7px; white-space: nowrap; }
}
.ap-chip { font-size: 12px; padding: 3px 9px; border-radius: 999px; background: var(--navy-700); border: 1px solid var(--border); color: var(--muted); }
.ap-chip.done { color: #5fd29a; border-color: #2c8c5f; }
.ap-chip.active { color: #fff; background: #3b82f6; border-color: #3b82f6; font-weight: 700; }
.ap-transit-note { color: #f5b301; margin: 8px 0; font-size: 14px; }
/* ---- Crew-Auswahl im Offline-Detail (Cabin/Ground) ---- */
.apc-card { }
.apc-dept { margin-top: 12px; }
.apc-dept:first-of-type { margin-top: 4px; }
.apc-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 8px; }
.apc-head strong { font-size: 15px; }
.apc-count { font-size: 12px; color: var(--muted); padding: 2px 9px; border-radius: 999px; background: var(--navy-700); border: 1px solid var(--border); }
.apc-count.warn { color: #ff9b6b; border-color: #b5562f; }
.apc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 8px; }
.apc-tile { display: flex; align-items: center; gap: 9px; text-align: left; padding: 8px 10px; border-radius: 10px;
  background: var(--navy-700); border: 1px solid var(--border); cursor: pointer; transition: border-color .15s, background .15s, transform .1s; }
.apc-tile:hover { border-color: #3b82f6; transform: translateY(-1px); }
.apc-tile.sel { border-color: #5fd29a; background: rgba(95,210,154,.12); box-shadow: inset 0 0 0 1px #5fd29a; }
.apc-av { width: 44px; height: 44px; flex: 0 0 44px; border-radius: 50%; overflow: hidden; background: var(--navy-900); }
.apc-av svg, .apc-av .av-portrait { width: 44px; height: 44px; display: block; }
.apc-info { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.apc-name { font-weight: 700; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.apc-hub { font-size: 11px; }
.apc-sub { font-size: 11px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.apc-bar { height: 5px; border-radius: 3px; background: var(--navy-900); overflow: hidden; margin-top: 2px; }
.apc-bar-fill { display: block; height: 100%; border-radius: 3px; }
.apc-bar-fill.q-hi { background: #5fd29a; } .apc-bar-fill.q-mid { background: #f5b301; } .apc-bar-fill.q-lo { background: #ff6b6b; }
.apc-bar-fill.f-hi { background: #3b8c5f; } .apc-bar-fill.f-mid { background: #f5b301; } .apc-bar-fill.f-lo { background: #ff6b6b; }
/* Beschriftete Messbalken der Crew-Kachel: Symbol · Balken · Wert in EINER Zeile (Nutzervorgabe 2026-07-30 —
   vorher zwei Balken ohne Beschriftung). Die Legende über den Kacheln erklärt die Symbole. */
.apc-meter { display: flex; align-items: center; gap: 5px; margin-top: 2px; }
.apc-meter-ico { flex: 0 0 14px; font-size: 11px; line-height: 1; text-align: center; }
.apc-meter .apc-bar { flex: 1 1 auto; margin-top: 0; }
.apc-meter-val { flex: 0 0 22px; text-align: right; font-size: 10.5px; color: var(--muted); font-variant-numeric: tabular-nums; }
.apc-lvl { font-size: 10px; font-weight: 700; color: #cfe0ff; background: rgba(59,130,246,.22); border: 1px solid rgba(59,130,246,.45);
  border-radius: 5px; padding: 0 4px; vertical-align: 1px; }
.apc-legend { margin: 0 0 10px; font-size: 12px; line-height: 1.5; }
/* ℹ öffnet die Details, ohne die Auswahl zu verändern. */
.apc-info-btn { flex: 0 0 20px; width: 20px; height: 20px; line-height: 18px; text-align: center; border-radius: 50%;
  border: 1px solid var(--border); background: var(--navy-900); color: #9fb0c3; font-size: 12px; font-weight: 700; cursor: help; }
.apc-info-btn:hover { color: #cfe0ff; border-color: #3b82f6; background: rgba(59,130,246,.18); }
/* Fähigkeiten im Detail-Popup: Name · Balken · Wert; die für die Eignung zählenden sind hervorgehoben. */
.apc-meters { display: flex; flex-direction: column; gap: 3px; margin: 8px 0 10px; max-width: 320px; }
.apc-skills { display: flex; flex-direction: column; gap: 4px; }
.apc-skill { display: grid; grid-template-columns: 150px 1fr auto; align-items: center; gap: 8px; font-size: 12.5px; }
.apc-skill .apc-bar { margin-top: 0; }
.apc-skill-lbl { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.apc-skill-key .apc-skill-lbl { color: var(--text); font-weight: 600; }
.apc-skill-val { font-variant-numeric: tabular-nums; min-width: 34px; text-align: right; }
.apc-grp { margin: 12px 0 4px; font-weight: 600; }
@media (max-width: 560px) { .apc-skill { grid-template-columns: 110px 1fr auto; } }
.apc-check { flex: 0 0 18px; width: 18px; text-align: center; font-weight: 800; color: #5fd29a; font-size: 15px; }
.apc-warn { color: #ff9b6b; font-size: 12.5px; margin: 6px 0 0; }
.apc-est { font-size: 13px; margin: 8px 0 0; color: var(--text); }
.apc-tolink { color: #7fb4ff; }
.ap-live-ico { font-size: 19px; line-height: 24px; text-align: center; background: none; border: none; filter: drop-shadow(0 1px 2px rgba(0,0,0,.6)); }
.ap-types { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 10px; }
.ap-type { background: var(--navy-700); border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; }
.ap-type-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.ap-type-name { font-weight: 700; font-size: 15px; }
.ap-type-bar { margin: 6px 0; }
.ap-type-desc { font-size: 12px; text-align: justify; hyphens: auto; overflow-wrap: break-word; }
/* Admin-Prognose hinter den Merkmal-Pips: verstärkt (▲) / abschwächt (▼) / verschwindet (✕) beim nächsten Flug */
.char-odds { display: inline-flex; flex-wrap: wrap; gap: 6px; margin-left: 8px; font-size: 10.5px; font-weight: 600; vertical-align: middle; }
.char-odds .cod-up { color: #5fd29a; }
.char-odds .cod-mid { color: #f5b301; }
.char-odds .cod-down { color: #e8736b; }
.ap-plus { background: linear-gradient(180deg, #2c8c5f, #1f6f4a); border-color: #2c8c5f; padding: 0 10px; }
.ap-flight.ap-locked { opacity: .6; }
/* Offlineflug-Status sitzt IN der Statistik-Karte, unter der KPI-Reihe. Er passt sich der Fensterbreite
   an: nebeneinander, solange Platz ist; darunter bricht die Kopfzeile um und die Ankunft rutscht in eine
   eigene Zeile (s. .ap-arr). */
.ap-cockpit { cursor: pointer; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); }
/* Gleiche Schriftgröße wie die inhaltlich identische Zeile in Fliegen → Autopilot → Übersicht. Dort ist es
   die Überschrift einer Karte (.card h3, 15px); die vorherige Clamp-Regel ließ sie hier je nach
   Fensterbreite kleiner ausfallen, sodass dieselbe Angabe an zwei Stellen unterschiedlich groß stand. */
.ap-cockpit .ap-cockpit-head { font-size: 15px; }
.ap-cockpit .ap-cockpit-head .muted-note { font-size: inherit; }
/* Zweite Zeile: Sollzeit/ETA links, aktuelle Phase rechts. Bewusst eine eigene Zeile — zusammen mit der
   Kennung wurde es eine sehr lange Zeile, die je nach Fensterbreite an unvorhersehbarer Stelle umbrach. */
.ap-cockpit .ap-cockpit-sub { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  font-size: 15px; font-weight: 600; margin-bottom: 4px; }
.ap-cockpit .ap-cockpit-sub .muted-note { font-size: inherit; }
@media (max-width: 760px) { .ap-cockpit .ap-cockpit-head { flex-direction: column; gap: 2px; } }
.ap-cockpit-head { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-weight: 600; margin-bottom: 4px; }

/* ===== Autopilot — Menü-Politur (Dossier, Balken, Timeline, Detailseite) ===== */
.ap-dossier-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; align-items: end; }
.ap-dossier-loc { font-size: 1.05rem; font-weight: 700; }
/* Beschriftung und Zahl in EINER Zeile (die übrigen Zellen tragen ihren Wert unter dem Label — hier ist
   der Wert kurz genug, und getrennt sah es nach zwei Angaben aus). */
.ap-dossier-ptsrow { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.ap-dossier-pts { font-size: 1.4rem; font-weight: 800; color: var(--muted); }
.ap-dossier-pts.has { color: #f5b301; }
.ap-bar { position: relative; height: 20px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
.ap-bar-fill { height: 100%; background: #5fd29a; transition: width .5s ease; }
.ap-bar-fill.ap-bar-xp { background: linear-gradient(90deg, #c08bff, #7fd0ff); }
.ap-bar span { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.5); }
.ap-flight { cursor: default; }
.ap-flight[data-route] { cursor: pointer; transition: transform .1s ease, border-color .1s ease; }
.ap-flight[data-route]:hover { transform: translateY(-2px); border-color: #3b82f6; }
.ap-flight-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.ap-flight-head h3 { margin: 0; }
.ap-hist-row { cursor: pointer; }
.ap-hist-row:hover { background: rgba(59,130,246,.08); }
.ap-tl { display: flex; gap: 3px; align-items: stretch; }
.ap-tl-seg { min-width: 0; background: var(--navy-700); border: 1px solid var(--border); border-radius: 6px; padding: 6px 4px; text-align: center; overflow: hidden; }
.ap-tl-seg:nth-child(6) { background: rgba(59,130,246,.18); border-color: #3b82f6; } /* Flugphase hervorheben */
.ap-tl-lbl { display: block; font-size: 10px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ap-tl-dur { display: block; font-size: 12px; font-weight: 700; }
.fd-badge-offline { background: linear-gradient(135deg, #3b82f6, #2a3a6b); color: #fff; }

/* === Finanzbuchhaltung (Geschäftsführung → Finanzbuchhaltung) === */
.acct-hero { background: linear-gradient(160deg, var(--navy-700), var(--navy-800)); }
.acct-chart-wrap { margin-top: 6px; }
.acct-chart { display: block; max-height: 230px; }
.acct-chart .acct-base { stroke: var(--border); stroke-width: 1; }
.acct-chart .acct-bar-in { fill: var(--ok); }
.acct-chart .acct-bar-ex { fill: var(--danger); }
.acct-chart .acct-x { fill: var(--muted); font-size: 11px; }
.acct-chart .acct-net-pos { fill: var(--ok); font-size: 11px; font-weight: 700; }
.acct-chart .acct-net-neg { fill: var(--danger); font-size: 11px; font-weight: 700; }
.acct-chart .acct-v { font-size: 9px; font-weight: 600; }
.acct-chart .acct-v-in { fill: var(--ok); }
.acct-chart .acct-v-ex { fill: var(--danger); }
.inbox-tabs { display: flex; gap: 6px; margin-bottom: 10px; }
.inbox-tab { padding: 6px 12px; background: var(--navy-700); border: 1px solid var(--border); color: var(--text); border-radius: 8px; cursor: pointer; }
.inbox-tab.active { background: var(--gold); color: #1b1400; border-color: var(--gold); font-weight: 700; }
.inbox-meta { margin: 2px 0 6px; }
.inbox-flight { color: var(--gold); cursor: pointer; text-decoration: underline; }
.inbox-flight:hover { filter: brightness(1.15); }
.inbox-badge { background: var(--navy-600); border: 1px solid var(--border); border-radius: 999px; padding: 2px 9px; font-size: 11px; font-weight: 700; white-space: nowrap; }
.inbox-done { opacity: 0.92; }
.acct-legend { display: flex; gap: 16px; flex-wrap: wrap; align-items: center; margin-top: 4px; font-size: 12px; color: var(--text); }
.acct-legend .acct-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 5px; vertical-align: middle; }
.acct-legend .acct-dot.in { background: var(--ok); }
.acct-legend .acct-dot.ex { background: var(--danger); }
.acct-guv { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 6px; }
@media (max-width: 720px) { .acct-guv { grid-template-columns: 1fr; } }
.acct-col { background: var(--navy-700); border: 1px solid var(--border); border-radius: var(--radius); padding: 10px 12px; }
.acct-col-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; padding-bottom: 8px; margin-bottom: 6px; border-bottom: 1px solid var(--border); font-weight: 700; }
.acct-col-head strong { font-size: 16px; }
.acct-row { display: grid; grid-template-columns: 20px 1fr 90px auto; gap: 8px; align-items: center; padding: 5px 0; }
.acct-ico { text-align: center; }
.acct-lbl { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.acct-track { height: 8px; border-radius: 5px; background: rgba(148,163,184,.18); overflow: hidden; }
.acct-fill { height: 100%; border-radius: 5px; }
.acct-fill.in { background: var(--ok); }
.acct-fill.ex { background: var(--danger); }
.acct-amt { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.acct-result { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-top: 12px; padding: 12px 14px; border-radius: 8px; border: 1px solid var(--border); }
.acct-result strong { font-size: 18px; }
.acct-result.pos { background: rgba(95,210,154,.12); border-color: var(--ok); }
.acct-result.pos strong { color: var(--ok); }
.acct-result.neg { background: rgba(255,107,107,.12); border-color: var(--danger); }
.acct-result.neg strong { color: var(--danger); }

/* === Transaktionsverlauf: Suche + Seitensteuerung === */
.tx-toolbar { margin-bottom: 10px; }
.tx-search { width: 100%; padding: 9px 12px; border: 1px solid var(--border); border-radius: 8px; background: var(--navy-700); color: var(--text); font-size: 14px; }
.tx-search::placeholder { color: var(--muted); }
.tx-search:focus { outline: none; border-color: var(--gold); }
.tx-pager { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 12px; flex-wrap: wrap; }
.tx-pager button[disabled] { opacity: .45; cursor: default; }
/* Aufklappbare Dashboard-Kategorien */
.an-cat-sum { cursor: pointer; font-weight: 700; font-size: 15px; padding: 4px 0; list-style: none; }
.an-cat-sum::-webkit-details-marker { display: none; }
.an-cat-sum::before { content: '▸'; display: inline-block; margin-right: 8px; color: var(--gold); transition: transform .15s; }
details[open] > .an-cat-sum::before { transform: rotate(90deg); }

/* Airline-Reputation-Detail: Zielwert/Trend + „unbewiesene" Komponenten */
.rep-target { margin: 8px 0; font-size: 14px; }
.rep-comp-unproven { opacity: .78; }
.rep-unproven-note { margin: 4px 0 0; font-size: 12px; color: var(--muted); font-style: italic; }

/* Staatliche Gründungssubvention — narratives CEO-Willkommens-Pop-up */
.subsidy-letter { line-height: 1.5; }
.subsidy-letter p { margin: 8px 0; }
.subsidy-amount { text-align: center; font-size: 30px; font-weight: 800; color: var(--ok); margin: 14px 0; letter-spacing: .5px; }
.subsidy-sign { text-align: right; font-style: italic; color: var(--muted); margin-top: 12px; }
.ws-selbar { background: var(--navy-700); border: 1px solid var(--gold); border-radius: 8px; padding: 8px 12px; margin: 6px 0 10px; display: flex; align-items: center; gap: 10px; }
.ws-wrap { display: flex; flex-direction: column; gap: 12px; position: relative; }
.ws-hub { border: 1px solid var(--border); border-radius: var(--radius); background: var(--navy-800); overflow: hidden; }
.ws-hub-head { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; background: var(--navy-700); border: 0; color: var(--text); cursor: pointer; font-size: 15px; text-align: left; }
.ws-hub-head:hover { background: var(--navy-600); }
.ws-hub-title b { font-size: 16px; }
.ws-hub-meta { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 13px; white-space: nowrap; }
.ws-cap { color: var(--text); font-weight: 600; }
.ws-capbar { display: inline-block; width: 70px; height: 7px; border-radius: 4px; background: var(--navy-900); overflow: hidden; vertical-align: middle; }
.ws-capfill { display: block; height: 100%; background: var(--ok); }
.ws-capfill.full { background: var(--danger); }
.ws-hub-body { padding: 14px; display: grid; grid-template-columns: 1fr 300px; grid-template-areas: "stage rail" "apron rail"; gap: 14px; }
@media (max-width: 900px) { .ws-hub-body { grid-template-columns: 1fr; grid-template-areas: "stage" "apron" "rail"; } }

/* Werkstatt-Bühne */
/* Mehrere Werkstätten an einem Hub: jede ein eigener Grundriss untereinander (NICHT zusammengefasst). */
.ws-halls { grid-area: stage; display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.ws-hall { min-width: 0; }
.ws-hall-head { font-size: 13px; font-weight: 600; margin: 0 2px 6px; color: var(--text); opacity: .92; }
/* Werkstatt-Bühne als Hangar-Grundriss: Wände ringsum + Hangartore an der Front. */
.ws-stage { position: relative; border-radius: 10px 10px 5px 5px; padding: 22px 14px 30px; min-height: 160px;
  background:
    repeating-linear-gradient(90deg, transparent 0 47px, rgba(127,160,224,.06) 47px 48px),
    linear-gradient(180deg, rgba(255,255,255,.04), rgba(10,18,44,.28));
  border: 6px solid #566aa0; border-top-width: 9px;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.35), inset 0 10px 22px rgba(0,0,0,.25);
  transition: filter .4s ease; }
.ws-stage.ws-night { filter: brightness(.82) saturate(.9); }
.ws-stage.ws-day { filter: none; }
.ws-hangar-roof { position: absolute; top: -3px; left: 8%; right: 8%; height: 6px; border-radius: 0 0 7px 7px; background: linear-gradient(90deg, #6b7bad, #55639a, #6b7bad); opacity: .9; }
.ws-hangar-doors { position: absolute; left: -6px; right: -6px; bottom: -1px; height: 15px; border-radius: 0 0 5px 5px;
  background: repeating-linear-gradient(90deg, #4a5680 0 13px, #38426a 13px 17px);
  border-top: 3px solid #6b7bad; }
.ws-bays { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(auto-fill, var(--ws-slot-w, 96px)); grid-auto-rows: minmax(120px, auto); gap: 10px; align-content: flex-start; overflow-x: auto; padding-bottom: 4px; }
.ws-bay { border-radius: 10px; padding: 6px; }
.ws-bay-occ { display: flex; }
.ws-bay-occ > .ws-ac { width: 100%; justify-content: center; }
.ws-bay-empty { position: relative; border: 2px dashed rgba(127,160,224,.4); background: rgba(255,255,255,.03); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; color: var(--muted); min-height: 118px; transition: border-color .15s, background .15s; }
.ws-preview-ok { border-color: var(--ok) !important; background: rgba(95,210,154,.16) !important; }
.ws-preview-bad { border-color: var(--danger) !important; background: rgba(255,107,107,.16) !important; }
.ws-preview-label { position: absolute; top: 4px; left: 50%; transform: translateX(-50%); font-size: 10px; font-weight: 700; color: var(--text); background: var(--navy-900); border: 1px solid var(--gold); border-radius: 6px; padding: 1px 5px; white-space: nowrap; z-index: 3; }
.ws-bay-empty .ws-bay-plus { font-size: 26px; opacity: .5; }
.ws-bay-occ { background: rgba(12,22,52,.82); border: 1px solid var(--border); animation: ws-rollin .35s ease; }
@keyframes ws-rollin { from { transform: translateY(8px) scale(.96); opacity: 0; } to { transform: none; opacity: 1; } }

/* Flugzeug-Karten (Bucht + Vorfeld) */
.ws-ac { display: flex; flex-direction: column; align-items: center; gap: 4px; text-align: center; border-radius: 8px; }
.ws-ac-apron { background: var(--navy-700); border: 1px solid var(--border); padding: 8px; min-width: 150px; max-width: 180px; cursor: grab; transition: transform .12s, box-shadow .12s; }
.ws-ac-apron:hover { transform: translateY(-2px); box-shadow: 0 4px 14px rgba(0,0,0,.3); }
.ws-ac-top { position: relative; display: flex; align-items: center; justify-content: center; min-height: 52px; }
.ws-ac-top-ring { width: 76px; height: 76px; }
.ws-ring-wrap { position: absolute; inset: 0; }
.ws-ac-img { object-fit: contain; filter: drop-shadow(0 2px 3px rgba(0,0,0,.5)); pointer-events: none; position: relative; z-index: 1; }
.ws-ac-reg { font-weight: 700; font-size: 14px; display: flex; align-items: center; gap: 6px; justify-content: center; }
.ws-ac-slots { font-size: 11px; font-weight: 700; color: var(--gold); background: var(--navy-900); border: 1px solid var(--gold); border-radius: 6px; padding: 0 5px; white-space: nowrap; }
.ws-ac-bars { display: flex; flex-direction: column; gap: 3px; width: 100%; }
.ws-ac-bars .cond { display: flex; align-items: center; gap: 5px; width: 100%; }
.ws-ac-bars .cond-track { flex: 1; }
.ws-ac-insp { font-size: 12px; }
.ws-ac-state { font-size: 12px; }
.ws-ac-tasks { display: flex; flex-direction: column; gap: 2px; font-size: 11px; color: var(--muted); width: 100%; }
.ws-task { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.ws-ac-mechs { display: flex; gap: 4px; justify-content: flex-start; min-height: 30px; align-items: center; flex-wrap: wrap; }
/* Zugewiesener Mechaniker am Flugzeug: Bild LINKS, rechts daneben der Name. */
.ws-mech-badge { position: relative; display: inline-flex; flex-direction: row; align-items: center; gap: 5px; padding: 2px 9px 2px 2px; border-radius: 16px; overflow: visible; border: 2px solid var(--gold); background: var(--navy-900); animation: ws-bob 2.4s ease-in-out infinite; max-width: 100%; }
.ws-mech-badge-av { width: 26px; height: 26px; flex: 0 0 26px; border-radius: 50%; overflow: hidden; }
.ws-mech-badge-av svg { width: 100%; height: 100%; border-radius: 50%; }
.ws-mech-badge-name { font-size: 11px; line-height: 1.1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 96px; }
.ws-mech-rm { cursor: pointer; }
.ws-mech-x { position: absolute; top: -5px; right: -5px; width: 15px; height: 15px; border-radius: 50%; background: var(--danger); color: #fff; font-size: 11px; line-height: 14px; text-align: center; display: none; z-index: 2; }
.ws-mech-rm:hover { border-color: var(--danger); }
.ws-mech-rm:hover .ws-mech-x { display: block; }
@keyframes ws-bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
.ws-hint { font-size: 11px; color: var(--muted); }
.ws-stage-btn { margin-top: 4px; }
.ws-mech-badge[draggable="true"] { cursor: grab; }
/* Geplante Arbeit + „Arbeit beginnen" */
.ws-plan { margin-top: 6px; width: 100%; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 6px; border-radius: 8px; background: rgba(245,179,1,.08); border: 1px solid rgba(245,179,1,.35); }
.ws-plan-chips { display: flex; gap: 4px; flex-wrap: wrap; justify-content: center; }
.ws-plan-chip { font-size: 10px; padding: 2px 6px; border-radius: 999px; background: var(--navy-900); border: 1px solid var(--border); color: var(--text); }
.ws-plan-btns { display: flex; gap: 4px; }
.ws-start { background: var(--ok); color: #06251a; font-weight: 700; }
/* Umplatzierungs-Countdown */
.ws-repo { margin-top: 4px; font-size: 11px; font-weight: 600; color: var(--gold); background: rgba(245,179,1,.1); border-radius: 6px; padding: 2px 6px; animation: ws-pulse 1.8s ease-in-out infinite; }
@keyframes ws-pulse { 0%,100% { opacity: 1; } 50% { opacity: .55; } }
.ws-mechs.ws-drophover { outline: 2px dashed var(--danger); outline-offset: 2px; border-radius: 8px; }

/* Vorfeld */
.ws-apron { grid-area: apron; }
.ws-zone-h { font-weight: 700; font-size: 13px; color: var(--muted); margin-bottom: 8px; text-transform: uppercase; letter-spacing: .4px; }
.ws-apron-row { display: flex; gap: 10px; flex-wrap: wrap; }

/* Rechte Leiste: Mechaniker + Lager */
.ws-rail { grid-area: rail; display: flex; flex-direction: column; gap: 14px; }
.ws-mech-row, .ws-store-row { display: flex; gap: 8px; flex-wrap: wrap; }
/* Mechaniker-Kachel: Bild LINKS, rechts daneben Name/Untertitel/Eignungsbalken (untereinander gestapelt). */
.ws-mech { flex: 1 1 100%; display: flex; flex-direction: row; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 8px; background: var(--navy-700); border: 1px solid var(--border); cursor: grab; text-align: left; }
.ws-mech:hover { border-color: var(--gold); }
.ws-mech .apc-av { width: 38px; height: 38px; flex: 0 0 38px; border-radius: 50%; overflow: hidden; background: var(--navy-900); }
.ws-mech .apc-av svg { width: 100%; height: 100%; }
.ws-mech-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.ws-mech-info .apc-bar { width: 100%; }
/* ===== Privates → Flugzeuge: „Neu kaufen" 2.0 (Showroom-Galerie + Kauf-Detailseite) ===== */
.fz-hero { display: flex; align-items: center; gap: 18px; justify-content: space-between;
  background: linear-gradient(135deg, rgba(245,179,1,.08), var(--navy-700)); }
.fz-hero-txt h3 { margin: 0 0 4px; }
.fz-filters .fz-sort, .fz-filters .fz-brand { flex: 0 0 170px; }
.fz-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.fz-chip { border: 1px solid var(--border); background: var(--navy-800); color: var(--text);
  border-radius: 999px; padding: 4px 12px; font-size: 12px; cursor: pointer; }
.fz-chip small { color: var(--muted); font-weight: 400; }
.fz-chip.active { border-color: var(--gold); color: var(--gold); background: rgba(245,179,1,.08); }
.fz-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr)); gap: 14px; margin-top: 12px; }
.fz-card { display: flex; flex-direction: column; text-align: left; padding: 0; overflow: hidden; cursor: pointer;
  background: var(--navy-700); border: 1px solid var(--border); border-radius: 12px; color: var(--text);
  transition: transform .12s ease, border-color .12s ease, box-shadow .12s ease; }
.fz-card:hover { transform: translateY(-3px); border-color: var(--gold); box-shadow: 0 8px 22px rgba(0,0,0,.35); }
.fz-card-img { display: block; width: 100%; aspect-ratio: 16 / 9; overflow: hidden; background: var(--navy-900); }
.fz-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fz-card-body { display: flex; flex-direction: column; gap: 4px; padding: 10px 12px 12px; }
.fz-card-title { font-weight: 700; font-size: 14px; }
.fz-card-title small { color: var(--muted); font-weight: 500; }
.fz-card-sub { display: flex; align-items: center; gap: 8px; font-size: 11.5px; color: var(--muted); }
.fz-card-stats { font-size: 12px; color: var(--text); }
.fz-card-price { font-size: 16px; font-weight: 700; color: var(--gold); display: flex; align-items: baseline; gap: 8px; }
.fz-price-note { font-size: 10.5px; font-weight: 500; color: var(--muted); }
.fz-price-note.fz-price-no { color: #e0736b; }
.fz-dim { opacity: .55; }
.fz-detail-photo { border-radius: 10px; overflow: hidden; background: var(--navy-900); aspect-ratio: 16 / 9; }
.fz-detail-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fz-detail-title { margin: 10px 0 2px; }
.fz-icon-panel { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 12px;
  border: 1px dashed var(--border); border-radius: 10px; padding: 10px 12px; }
.fz-icon-panel img { width: 96px; height: 96px; object-fit: contain; flex: 0 0 96px; image-rendering: -webkit-optimize-contrast; }

/* Betitelte Balken der Mechaniker-Kachel (Eignung/Ermüdung): kleiner Titel links, Balken füllt den Rest. */
.ws-bar-row { display: flex; align-items: center; gap: 6px; width: 100%; min-width: 0; }
.ws-bar-lbl { font-size: 10px; color: var(--muted); flex: 0 0 52px; white-space: nowrap; }
.ws-bar-row .apc-bar { flex: 1 1 auto; margin-top: 0; }
.ws-mech-name { font-size: 12px; line-height: 1.15; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ws-mech-sub { font-size: 10px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ws-mech-sub.away { color: var(--gold); }
.ws-mech-away-sec { flex: 1 1 100%; margin-top: 6px; }
.ws-mech-away-sec > summary { cursor: pointer; font-size: 12px; color: var(--muted); padding: 4px 2px; list-style: none; }
.ws-mech-away-sec > summary:hover { color: var(--text); }
.ws-mech-away-tile { border-style: dashed; }
/* Reisekosten-Popup */
.ws-cost-tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.ws-cost-tbl th, .ws-cost-tbl td { padding: 6px 8px; border-bottom: 1px solid var(--border); text-align: left; }
.ws-cost-tbl .ws-cost-r, .ws-cost-r { text-align: right; }
.ws-cost-tbl tfoot td { border-top: 2px solid var(--border); border-bottom: none; }
/* Reparaturteil-Symbol neben dem Zustandsbalken */
.ws-bar-line { display: flex; align-items: center; gap: 4px; }
.ws-bar-line .cond { flex: 1; width: auto; }
.ws-bar-part { flex: 0 0 auto; display: inline-flex; width: 18px; height: 18px; }
.ws-bar-part svg, .ws-bar-part img { width: 18px; height: 18px; }
/* Warnhinweis am Gesundheitsbalken bei offener Kleinteil-Beanstandung */
.ws-bar-defect { flex: 0 0 auto; font-size: 13px; line-height: 1; cursor: help; }
/* Kompakter „Arbeit beginnen"-Button */
.ws-start-sm { padding: 3px 10px; font-size: 12px; }
.ws-part { display: flex; flex-direction: column; align-items: center; gap: 2px; width: 80px; padding: 6px 4px; border-radius: 8px; background: var(--navy-700); border: 1px solid var(--border); border-left: 3px solid var(--sys, var(--muted)); cursor: grab; text-align: center; }
.ws-part:hover { border-color: var(--gold); }
.ws-part-lbl { font-size: 10px; line-height: 1.1; color: var(--muted); }
.ws-part b { font-size: 12px; }
.ws-insp-row { display: flex; gap: 8px; flex-wrap: wrap; }
.ws-insp-token { display: flex; flex-direction: column; align-items: center; gap: 2px; width: 80px; padding: 8px 5px; border-radius: 8px; background: var(--navy-700); border: 1px solid var(--border); border-left: 3px solid var(--gold); cursor: grab; text-align: center; }
.ws-insp-token:hover { border-color: var(--gold); }
.ws-insp-ico { font-size: 18px; }
.ws-insp-lbl { font-size: 10px; line-height: 1.1; color: var(--muted); }

/* Interaktions-Zustände */
.ws-sel { outline: 2px solid var(--gold); outline-offset: 1px; }
.ws-dragging { opacity: .45; }
.ws-drophover { border-color: var(--gold) !important; background: rgba(245,179,1,.12) !important; }

/* Fortschrittsring */
.ws-ring { display: block; width: 100%; height: 100%; }
.ws-ring-bg { fill: none; stroke: rgba(0,0,0,.4); stroke-width: 4; }
.ws-ring-fg { fill: none; stroke: var(--ok); stroke-width: 4; stroke-linecap: round; transition: stroke-dashoffset .9s linear; filter: drop-shadow(0 0 2px rgba(95,210,154,.6)); }
.ws-ring-ind .ws-ring-fg { stroke: var(--gold); animation: ws-spin 1.6s linear infinite; transform-origin: 38px 38px; }
.ws-ring-txt { paint-order: stroke; stroke: var(--navy-900); stroke-width: 3; }
@keyframes ws-spin { to { transform: rotate(360deg); } }
.ws-ring-txt { fill: var(--text); font-size: 12px; font-weight: 800; }
.ws-note { border-left: 3px solid var(--gold); }

/* Erfolgs-Konfetti */
.ws-confetti { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 30; }
.ws-confetti i { position: absolute; top: -12px; width: 8px; height: 12px; border-radius: 2px; opacity: .9; animation: ws-fall 1.2s ease-in forwards; }
@keyframes ws-fall { to { transform: translateY(120vh) rotate(540deg); opacity: 0; } }

/* Breites Modal (Teile-Kauf) */
.modal-wide .modal-card { max-width: 860px; width: 92vw; }
.modal-mid .modal-card { max-width: 560px; width: 92vw; }
/* Admin: Pkw-Modell-/Lackierungs-Editor */
.cme-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.cme-head h3 { flex: 1; margin: 0; text-align: center; }
.cme-model { display: flex; gap: 12px; margin-bottom: 8px; }
.cme-model label { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: var(--muted); flex: 1; }
.cme-model input { background: var(--navy-800); border: 1px solid var(--border); border-radius: 8px; color: var(--text); padding: 6px 9px; font: inherit; }
.cme-hint { margin: 0 0 10px; }
.cme-paints { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.cme-paint { border: 1px solid var(--border); border-radius: 10px; padding: 8px; display: flex; flex-direction: column; gap: 6px; background: var(--navy-800); }
.cme-slot { position: relative; height: 76px; border: 1px dashed var(--border); border-radius: 8px; display: flex; align-items: center; justify-content: center; cursor: pointer; overflow: hidden; background: var(--navy-900); }
.cme-slot.cme-slot-pv { height: 90px; }
.cme-slot img { max-width: 100%; max-height: 100%; object-fit: contain; }
.cme-slot .cme-ph { font-size: 11px; color: var(--muted); }
.cme-slot.cme-over { border-color: var(--gold); box-shadow: inset 0 0 0 2px var(--gold); }
.cme-slot.cme-busy::after { content: '…'; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.4); font-size: 20px; }
.cme-fields { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.cme-name { flex: 1 1 100px; min-width: 0; background: var(--navy-900); border: 1px solid var(--border); border-radius: 7px; color: var(--text); padding: 5px 8px; font: inherit; }
.cme-finish { background: var(--navy-900); border: 1px solid var(--border); border-radius: 7px; color: var(--text); padding: 5px; font: inherit; }
.cme-badge { font-size: 10px; background: var(--gold); color: #1c1f25; border-radius: 5px; padding: 1px 5px; font-weight: 700; }
.cme-add { min-height: 120px; border: 2px dashed var(--border); border-radius: 10px; background: transparent; color: var(--gold); font-size: 34px; cursor: pointer; }
.cme-add:hover { border-color: var(--gold); background: var(--navy-800); }
.ws-shop-grid { max-height: 62vh; overflow-y: auto; }

/* Event-Flug-Banner (Flugdetails Vorschau + Nachbesprechung): golden hervorgehoben. */
.event-flight-banner { border-left: 4px solid var(--gold); background: color-mix(in srgb, var(--gold) 8%, transparent); }
.event-flight-banner h3 { color: var(--gold); margin-top: 0; }
/* Kopfzeilen-Knöpfe der „Live-Position & Route"-Karte gruppieren (Route-Toggle + Fokus).
   Seit dem Pkw-Toggle (2026-08-01) stehen hier bis zu vier Knöpfe: Die Schrift ist deshalb kleiner
   und die Zeile darf umbrechen — sonst schob die Gruppe den Kartentitel aus der Kopfzeile. */
.ap-map-h-btns { display: inline-flex; gap: 6px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.ap-map-h-btns .ap-focus-btn { font-size: 10.5px; padding: 2px 8px; letter-spacing: -0.1px; }
/* Einklappbare Karten-Werkzeuge: der ⚙-Knopf links blendet die Gruppe [Strecke][NPC][Pkw] ein/aus. */
.ap-map-tools { display: inline-flex; gap: 6px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.ap-map-tools.tools-collapsed { display: none; }
.ap-tools-toggle { padding: 2px 7px; }

/* Geschwindigkeits-Graph (Debriefing): IAS/TAS/GS-Umschalter + Fahrzeug-Beladungszeile im Tooltip. */
.dbf-spd-toggles { display: inline-flex; gap: 10px; margin-left: 10px; vertical-align: middle; }
.dbf-spd-toggle { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; cursor: pointer; color: var(--muted); }
.dbf-spd-toggle input { margin: 0; cursor: pointer; }
.gv-load { font-weight: 600; }

/* Event-Editor: Abschnittsüberschriften + Muster-Mehrfachauswahl (Flugzeugmuster-Vorgabe). */
.ev-section { margin: 18px 0 8px; padding-bottom: 4px; border-bottom: 1px solid var(--border); font-size: 13px; letter-spacing: .02em; text-transform: uppercase; color: var(--muted); }
.ev-section:first-of-type { margin-top: 6px; }
.ev-muster-label { display: block; margin-top: 10px; font-weight: 600; }
select.ev-muster { display: block; width: 100%; margin-top: 6px; padding: 4px; font-size: 13px; }
select.ev-muster optgroup { font-weight: 700; }
select.ev-muster option { padding: 2px 4px; }
.ev-muster-actions { display: flex; align-items: center; gap: 10px; margin-top: 6px; }

/* Überführungsflug (nach Notlandung/Umleitung): hebt sich von den Linienflügen ab — es geht darum, eine
   gestrandete Maschine samt Gästen zu retten, nicht um Alltagsbetrieb. */
.ap-flight.ap-ferry { border-color: #ff8a5c; background: linear-gradient(100deg, rgba(255, 138, 92, 0.12) 0%, var(--navy-800, #101a2c) 55%); }
.ap-ferry-note { border-left: 3px solid #ff8a5c; padding-left: 9px; margin: 8px 0; }
/* Zweite Zeile der Überführungs-Karte: „Der Einsatzplan holt sie selbst ab" — grün statt orange, weil es
   eine Entwarnung ist und keine offene Aufgabe. */
.ap-ferry-note.ap-ferry-npc { border-left-color: #3fbf7f; }

/* ===== Karriere → Ausbildung (Flugschule) =================================================
   Übersicht: der Weg zur nächsten Lizenz als drei nummerierte Stationen (Theorie → Praxis →
   Checkflug) mit Fortschrittsring; Praxis: Übungsflüge als klickbare Karten + Lizenzflug-Karte. */
/* „Nächstes Ziel"-Wähler in der KPI-Kachel: kompaktes, betontes Dropdown (Lizenzziel selbst wählen). */
.ausb-goal-kpi .value { font-size: 1rem; }
/* Admin: eigenes Avatarbild hochladen (Chroma-Key). */
.av-photo-upload { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border); text-align: left; }
.av-photo-upload input[type="file"] { max-width: 100%; font-size: 12px; }
.av-crop-wrap { position: relative; width: 150px; height: 247.5px; border-radius: 10px; overflow: hidden; background: var(--navy-700); cursor: crosshair; user-select: none; touch-action: none; }
.av-crop-wrap img { width: 100%; height: 100%; object-fit: cover; display: block; pointer-events: none; -webkit-user-drag: none; user-drag: none; }
.av-crop-box { position: absolute; display: none; border: 2px solid var(--gold, #f5b301); box-shadow: 0 0 0 9999px rgba(8, 12, 22, 0.55); border-radius: 4px; pointer-events: none; box-sizing: border-box; }
.ausb-goal-select { max-width: 100%; padding: 5px 8px; border: 1px solid var(--gold, #f5b301); border-radius: 8px;
  background: var(--panel, #101a2c); color: var(--text); font-weight: 700; cursor: pointer; }
.ausb-nogoal { border-left: 4px solid var(--gold, #f5b301); }
.ausb-path { display: flex; flex-direction: column; gap: 10px; margin-bottom: 14px; }
.ausb-step { display: flex; align-items: center; gap: 14px; padding: 12px 14px; background: var(--navy-800, #101a2c);
  border: 1px solid var(--border, #2a3550); border-radius: 12px; position: relative; }
/* Verbindungslinie zwischen den Stationen — der Weg wird als Kette lesbar. */
.ausb-step + .ausb-step::before { content: ''; position: absolute; left: 31px; top: -11px; width: 2px; height: 11px; background: var(--border, #2a3550); }
.ausb-step.done { border-color: rgba(95, 210, 154, 0.5); }
.ausb-step-no { flex: 0 0 34px; width: 34px; height: 34px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-weight: 700; background: var(--navy-700); border: 1px solid var(--border, #2a3550); color: var(--muted, #9fb0cc); }
.ausb-step.done .ausb-step-no { background: rgba(95, 210, 154, 0.16); border-color: #5fd29a; color: #5fd29a; }
.ausb-step-ring { flex: 0 0 auto; }
.ausb-step-body { flex: 1 1 auto; min-width: 0; }
.ausb-step-body h3 { margin: 0 0 4px; font-size: 1rem; }
.ausb-step-body p { margin: 4px 0 0; }
.ausb-bar-lbl { font-size: 0.72rem; color: var(--muted, #9fb0cc); margin: 3px 0 8px; }
.ausb-step .fuel-gauge { margin-top: 6px; }
/* Übungsflug-Karte: Symbol · Titel/Strecke · Dauer+Preis. Ohne freies Flugzeug ausgegraut. */
.ausb-tr { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; padding: 10px 12px; cursor: pointer;
  color: inherit; font: inherit; }
.ausb-tr:hover:not(:disabled) { border-color: var(--gold, #f5b301); background: var(--navy-600, var(--navy-700)); }
.ausb-tr.na, .ausb-tr:disabled { opacity: 0.5; cursor: not-allowed; }
.ausb-tr-ico { font-size: 22px; line-height: 1; flex: 0 0 auto; }
.ausb-tr-main { flex: 1 1 auto; min-width: 0; }
.ausb-tr-title { font-weight: 700; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ausb-tr-desc { margin-top: 2px; }
.ausb-tr-side { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; text-align: right; }
.th-chip.gold { color: var(--gold, #f5b301); border-color: rgba(245, 179, 1, 0.45); }
/* Lizenzflug: die Belohnung am Ende der Ausbildung — golden hervorgehoben, gesperrt dezent. */
.ausb-check { display: flex; align-items: center; gap: 16px; width: 100%; text-align: left; cursor: pointer; color: inherit; font: inherit;
  border-color: var(--gold, #f5b301); background: linear-gradient(100deg, rgba(245, 179, 1, 0.14) 0%, var(--navy-800, #101a2c) 60%); }
.ausb-check:hover:not(:disabled) { box-shadow: 0 0 0 1px var(--gold, #f5b301); }
.ausb-check.locked, .ausb-check:disabled, .ausb-check.na { cursor: default; border-color: var(--border, #2a3550); background: var(--navy-800, #101a2c); }
.ausb-check.locked { opacity: 0.75; }
.ausb-check-ico { font-size: 34px; line-height: 1; flex: 0 0 auto; }
.ausb-check-body { flex: 1 1 auto; min-width: 0; }
.ausb-check-body h3 { margin: 2px 0 4px; }
.ausb-check-kicker { font-size: 0.68rem; text-transform: uppercase; letter-spacing: .08em; color: var(--gold, #f5b301); }
.ausb-check-cta { flex: 0 0 auto; color: var(--gold, #f5b301); font-weight: 700; }
@media (max-width: 680px) {
  .ausb-step, .ausb-check, .ausb-tr { flex-wrap: wrap; }
  .ausb-tr-side { align-items: flex-start; text-align: left; flex-direction: row; flex-wrap: wrap; }
}

/* Fehlerliste: Filterleiste (Bereich/Status/Behobene ausblenden) — 2026-07-17 */
.bug-filter-bar { display: flex; flex-direction: column; gap: 6px; margin: 0 0 10px; }
.bug-filter-row { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.bug-filter-chip { border: 1px solid var(--border); background: transparent; color: var(--muted); border-radius: 999px; padding: 3px 10px; font-size: .82rem; cursor: pointer; }
.bug-filter-chip:hover { color: var(--text, inherit); border-color: var(--gold); }
.bug-filter-chip.active { background: var(--gold); color: #1c2536; border-color: var(--gold); font-weight: 600; }
.bug-filter-chip .bfc-n { opacity: .75; font-size: .75rem; margin-left: 2px; }
.bug-hide-done { display: inline-flex; align-items: center; gap: 5px; font-size: .82rem; color: var(--muted); margin-left: auto; cursor: pointer; }
.bug-hide-done.off { opacity: .45; }

/* ===== Events-/Wettbewerbe-Redesign (2026-07-17): Karten, Zeitachsen-Balken, Wizard ===== */
.wbc { border-left: 4px solid var(--border); }
.wbc-running { border-left-color: var(--gold); }
.wbc-upcoming { border-left-color: #5b8def; }
.wbc-awarded { border-left-color: var(--ok, #3ecf76); }
.wbc-ended { border-left-color: var(--border); opacity: .88; }
.wbc-head { display: flex; align-items: flex-start; gap: 10px; }
.wbc-head h3 { margin: 0; }
.wbc-ico { width: 40px; height: 40px; flex: 0 0 40px; border-radius: 12px; display: grid; place-items: center; font-size: 21px; background: color-mix(in srgb, var(--gold) 16%, transparent); border: 1px solid color-mix(in srgb, var(--gold) 35%, transparent); }
.wbc-upcoming .wbc-ico { background: rgba(91, 141, 239, .14); border-color: rgba(91, 141, 239, .4); }
.wbc-ended .wbc-ico, .wbc-awarded .wbc-ico { filter: saturate(.6); }
.wbc-title { flex: 1 1 auto; min-width: 0; }
.wbc-sub { font-size: .82rem; color: var(--muted); margin-top: 2px; }
.wbc-head .wb-tag, .wbc-head .ev-tag { flex: 0 0 auto; }
.evt-timebar { margin: 10px 0 8px; }
.evt-timebar-track { height: 7px; border-radius: 999px; background: color-mix(in srgb, var(--border) 55%, transparent); overflow: hidden; }
.evt-timebar-fill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, color-mix(in srgb, var(--gold) 65%, transparent), var(--gold)); transition: width .4s ease; }
.evt-upcoming .evt-timebar-fill { background: #5b8def; }
.evt-ended .evt-timebar-fill { background: var(--muted); opacity: .5; }
.evt-timebar-txt { display: flex; justify-content: space-between; gap: 8px; font-size: .74rem; color: var(--muted); margin-top: 3px; }
.evt-timebar-cd { font-weight: 700; color: var(--gold); }
.evt-upcoming .evt-timebar-cd { color: #5b8def; }
.evt-ended .evt-timebar-cd { color: var(--muted); font-weight: 500; }
.wb-chip-prize { border-color: color-mix(in srgb, var(--gold) 50%, transparent); }
.wb-fold { margin-top: 8px; border-top: 1px dashed var(--border); padding-top: 6px; }
.wb-fold summary { cursor: pointer; font-weight: 600; font-size: .88rem; color: var(--muted); list-style: none; }
.wb-fold summary::before { content: '▸ '; }
.wb-fold[open] summary::before { content: '▾ '; }
.wb-fold summary::-webkit-details-marker { display: none; }
/* Wizard */
.wiz { margin-top: 10px; }
.wiz-steps { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: 12px; }
.wiz-step { border: 1px solid var(--border); background: transparent; color: var(--muted); border-radius: 999px; padding: 5px 12px; font-size: .85rem; cursor: pointer; }
.wiz-step.active { background: var(--gold); color: #1c2536; border-color: var(--gold); font-weight: 700; }
.wiz-step.done { border-color: var(--ok, #3ecf76); color: var(--ok, #3ecf76); }
.wiz-step.done::after { content: ' ✓'; }
.wiz-step-sep { color: var(--muted); opacity: .5; }
.wiz-body { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 16px; align-items: start; }
@media (max-width: 980px) { .wiz-body { grid-template-columns: 1fr; } .wiz-preview { position: static; } }
.wiz-preview { position: sticky; top: 8px; }
.wiz-preview-h { font-size: .8rem; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; margin-bottom: 6px; }
.wiz-preview .wb-card { pointer-events: none; }
.wiz-nav { display: flex; align-items: center; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.wiz-nav-spacer { flex: 1 1 auto; }
.wiz-msg:empty { display: none; }

/* Flotte Kauf & Verkauf: integrierte Gebraucht-Sektion (2026-07-17) */
.fz-used-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(430px, 100%), 1fr)); gap: 14px; align-items: start; }
.fz-used-card .mkt-head { display: flex; gap: 12px; align-items: center; }

/* Crew-Feed 2.0: Seiten-Knoepfe */
.feed-pager { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin-top: 10px; }

/* Avatar-Aussehen: Slider-Reihen + sticky Buehne (2026-07-17) */
.av-slider-row { display: flex; align-items: center; gap: 8px; margin: 7px 0; }
.av-slider-lbl { flex: 0 0 120px; font-size: .86rem; color: var(--muted); }
.av-range { flex: 1 1 auto; min-width: 60px; accent-color: var(--gold); }
.av-slider-pos { flex: 0 0 44px; text-align: right; font-size: .8rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.av-swatches { display: flex; flex-wrap: wrap; gap: 6px; }
.av-swatch { width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--border); cursor: pointer; }
.av-swatch.active { border-color: var(--gold); box-shadow: 0 0 0 2px color-mix(in srgb, var(--gold) 45%, transparent); }
.av-stage-sticky { position: sticky; top: 8px; align-self: start; }
.gear-grid .shop-prev svg { width: 60px; height: 60px; }
.gear-icon-actions { display: flex; gap: 6px; justify-content: center; }

/* Passagier-Rezensionen im Google-Stil (2026-07-17) */
.rev-summary { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.rev-avg { font-size: 1.8rem; font-weight: 800; color: var(--gold); }
.review-mine { border-left: 3px solid var(--gold); padding-left: 8px; }

/* Fluglehrer-Bewerbung + Trainingsprofil + Bewerbungs-Panel (2026-07-17) */
.fi-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(420px, 100%), 1fr)); gap: 14px; align-items: start; }
.fi-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
/* Auf-/zuklappbare Karten (Kabine & Sitzplan, Wetter) bei aktiven/Offlineflügen: Summary sieht aus wie ein h3. */
.fr-collapse > summary { cursor: pointer; font-weight: 700; font-size: 1.05rem; list-style: none; margin: 0; padding: 2px 0; }
.fr-collapse > summary::-webkit-details-marker { display: none; }
.fr-collapse > summary::before { content: '▸'; display: inline-block; width: 1em; color: var(--muted); transition: transform .15s; }
.fr-collapse[open] > summary::before { transform: rotate(90deg); }
/* Verwaltung → Fluglehrer (Admin) */
.fla-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.fla-card { text-align: left; cursor: pointer; display: flex; flex-direction: column; gap: 8px; }
.fla-card-head { display: flex; align-items: center; gap: 10px; }
.fla-card-head .ld-face { width: 40px; height: 40px; border-radius: 50%; overflow: hidden; flex: 0 0 auto; background: var(--navy-700); }
.fla-card-head .ld-face svg { width: 100%; height: 100%; }
.fla-ratings { display: flex; flex-wrap: wrap; gap: 5px; }
.fla-kpis { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 13px; color: var(--muted); }
.fla-kpis strong { color: var(--text); }
.fla-detail-head { display: flex; align-items: center; gap: 14px; }
.ld-face-lg { width: 64px; height: 64px; border-radius: 50%; overflow: hidden; flex: 0 0 auto; background: var(--navy-700); }
.ld-face-lg svg { width: 100%; height: 100%; }
.fla-ratings-mgmt { display: flex; flex-direction: column; gap: 6px; }
.fla-rating-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 5px 0; border-bottom: 1px solid var(--border); }
.fla-students { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 12px; }
.fla-aspect { margin-top: 6px; display: flex; flex-wrap: wrap; align-items: center; gap: 5px; font-size: 13px; }
.fla-flts { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 5px; }
.wb-chip.ok { border-color: var(--ok); color: var(--ok); }
.wb-chip.bad { border-color: var(--danger); color: var(--danger); }
.fi-reqs { list-style: none; padding: 0; margin: 8px 0; }
.fi-theory { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); }
.fi-theory-h { margin: 0 0 4px; font-size: 1rem; }
.fi-req { padding: 3px 0; font-size: .9rem; }
.fi-req.no { opacity: .8; }
/* Flugstunden-Vorgabe als sich füllender Balken: fester Farbverlauf rot→orange→grün über die volle Breite,
   der ungefüllte Teil rechts wird abgedunkelt (fi-hbar-dim, left = Fortschritt%). */
.fi-req-bar { padding: 5px 0 7px; }
.fi-req-bar .fi-req-lbl { margin-bottom: 4px; }
.fi-hbar { position: relative; height: 22px; border-radius: 11px; overflow: hidden;
  background: linear-gradient(90deg, #e0444e 0%, #f5b301 52%, #3ecf76 100%);
  box-shadow: inset 0 0 0 1px var(--border); }
.fi-hbar-dim { position: absolute; top: 0; bottom: 0; right: 0; background: var(--panel, #12141c); opacity: .74; }
.fi-hbar-txt { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 12px; color: #fff; text-shadow: 0 0 3px rgba(0,0,0,.85), 0 1px 2px rgba(0,0,0,.7); }
.fi-form textarea { width: 100%; }
.ld-row:hover, .tp-fl-row:hover { background: color-mix(in srgb, var(--gold) 8%, transparent); }
.ld-app { display: flex; gap: 12px; align-items: flex-start; padding: 8px 0; border-top: 1px solid var(--border); }
.ld-app-done { opacity: .6; }
.ld-app .ld-face { width: 42px; height: 42px; flex: 0 0 42px; }
.ld-app-main { flex: 1 1 auto; min-width: 0; }
.ld-app-act { display: flex; gap: 6px; flex: 0 0 auto; }
.tp-head { display: flex; gap: 14px; align-items: center; }
.tp-face { width: 60px; height: 60px; flex: 0 0 60px; }
.tp-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(360px, 100%), 1fr)); gap: 14px; align-items: start; }
.tp-aspect { display: flex; align-items: center; gap: 8px; margin: 5px 0; }
.tp-aspect-lbl { flex: 1 1 auto; font-size: .88rem; }
.tp-aspect-bar { flex: 0 0 90px; height: 7px; border-radius: 999px; background: color-mix(in srgb, var(--border) 55%, transparent); overflow: hidden; }
.tp-aspect-bar span { display: block; height: 100%; border-radius: 999px; }
.tp-aspect-val { flex: 0 0 auto; font-size: .82rem; }
.tp-notes { margin: 4px 0 0; padding-left: 18px; font-size: .88rem; }

/* Kontostand-Liniendiagramm (Finanzbuchhaltung, 2026-07-17) */
.bchart-wrap { position: relative; margin-top: 6px; }
.bchart-svg { width: 100%; height: 200px; display: block; }
.bchart-dot { cursor: pointer; }
.bchart-tip { position: absolute; top: 4px; background: var(--navy-800, #16233b); border: 1px solid var(--border); border-radius: 8px; padding: 5px 9px; font-size: .8rem; pointer-events: none; white-space: nowrap; box-shadow: 0 4px 14px rgba(0,0,0,.35); z-index: 3; }
.bchart-axis { display: flex; justify-content: space-between; font-size: .74rem; color: var(--muted); margin-top: 2px; }
.fb-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.fb-card { border: 1px solid var(--border); border-radius: 10px; padding: 8px; background: var(--navy-800, rgba(255,255,255,.03)); display: flex; flex-direction: column; gap: 4px; }
.fb-card.fb-off { opacity: .5; }
.fb-card-thumb { height: 92px; display: flex; align-items: center; justify-content: center; background: repeating-conic-gradient(#0002 0% 25%, transparent 0% 50%) 50%/16px 16px; border-radius: 8px; overflow: hidden; }
.fb-card-thumb img { max-width: 100%; max-height: 92px; object-fit: contain; }
.fb-noimg { font-size: 1.6rem; opacity: .5; }
.fb-sw-row { display: flex; flex-wrap: wrap; gap: 3px; min-height: 14px; }
.fb-sw { width: 14px; height: 14px; border-radius: 50%; border: 1px solid var(--border); display: inline-block; }
.fb-card-actions { display: flex; gap: 6px; margin-top: auto; }
.fb-card-actions .mini { flex: 1; }
/* Editor-Modal */
.fb-edit { display: flex; flex-direction: column; gap: 10px; max-height: 66vh; overflow-y: auto; }
.fb-edit label { display: flex; flex-direction: column; gap: 3px; font-size: .82rem; color: var(--muted); }
.fb-edit label input, .fb-edit label select { font-size: .92rem; }
.fb-size-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
.fb-var-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 8px; }
.fb-var { border: 1px solid var(--border); border-radius: 8px; padding: 6px; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.fb-var img { width: 100%; height: 70px; object-fit: contain; background: repeating-conic-gradient(#0002 0% 25%, transparent 0% 50%) 50%/14px 14px; border-radius: 6px; }
.fb-var-name { width: 100%; font-size: .78rem; text-align: center; }
.fb-var-add { display: inline-flex; align-items: center; gap: 8px; border: 1px dashed var(--border); border-radius: 8px; padding: 8px; cursor: pointer; font-size: .85rem; }
.fb-var-add input[type=file] { max-width: 190px; }

/* Einrichten — Editor-Palette */
/* Lager NICHT intern scrollen, sondern nach UNTEN wachsen (die Seite scrollt) — überschreibt .home-palette. */
.home-palette.fur-palette { display: flex; flex-direction: column; gap: 12px; max-height: none; overflow: visible; }
.fur-pal-sec h4 { margin: 0 0 4px; }
.fur-pal-var { position: relative; width: 54px; height: 54px; padding: 0; border: 1px solid var(--border); border-radius: 8px; background: repeating-conic-gradient(#0002 0% 25%, transparent 0% 50%) 50%/12px 12px; cursor: pointer; overflow: hidden; }
.fur-pal-var img { width: 100%; height: 100%; object-fit: contain; }
.fur-pal-var.sel { border-color: #f5b301; box-shadow: 0 0 0 2px #f5b30155; }
.fur-pal-var .fur-sw { position: absolute; right: 2px; bottom: 2px; width: 12px; height: 12px; border-radius: 50%; border: 1px solid #fff8; }

/* Möbel — Auto-Import */
.fb-auto { display: flex; flex-direction: column; gap: 10px; max-height: 68vh; overflow-y: auto; }
.fb-auto-mode { font-size: .84rem; display: block; }
.fb-auto-review h4 { margin: 6px 0 4px; }
.fb-auto-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 8px; }
.fb-auto-model { border: 1px solid var(--border); border-radius: 8px; padding: 6px; display: flex; flex-direction: column; gap: 4px; align-items: stretch; }
.fb-auto-model img { width: 100%; height: 72px; object-fit: contain; background: repeating-conic-gradient(#0002 0% 25%, transparent 0% 50%) 50%/12px 12px; border-radius: 6px; }
.fb-auto-model input, .fb-auto-model select { font-size: .8rem; width: 100%; min-width: 0; box-sizing: border-box; }
/* Die Kacheln sind schmal (min. 130 px). Zahlenfelder bringen zusätzlich die ▲▼-Schaltflächen mit —
   ohne diese Begrenzung ragten sie rechts aus der Kachel heraus (gemeldet 2026-07-28). Beschriftung
   über das Feld setzen und Feld + Pfeile gemeinsam auf die Kachelbreite zwingen. */
.fb-am-price { display: flex; flex-direction: column; gap: 2px; min-width: 0; font-size: .78rem; color: var(--muted); }
.fb-auto-model .num-stepper { display: flex; width: 100%; min-width: 0; }
.fb-auto-model .num-stepper > input[type="number"] { flex: 1 1 auto; min-width: 0; }

/* Einrichten — Lager/Shop/Trash/Drag */
.fur-lager-grid { display: flex; flex-wrap: wrap; gap: 6px; }
.fur-pal-left { position: absolute; left: 2px; bottom: 2px; font-size: .68rem; background: rgba(4,18,43,.8); border-radius: 5px; padding: 0 3px; }
.fur-lager { cursor: grab; }
.fur-trash { position: absolute; right: 8px; bottom: 8px; width: 50px; height: 50px; display: flex; align-items: center; justify-content: center; font-size: 24px; border: 2px dashed rgba(255,255,255,.35); border-radius: 10px; background: rgba(20,26,40,.65); user-select: none; pointer-events: none; transition: transform .12s, border-color .12s, background .12s; }
.fur-trash.hot { transform: scale(1.15); border-color: #ff6b6b; background: rgba(120,20,20,.6); }
/* 📏-Knopf (Wandmaße ein-/ausblenden) — sitzt über dem Mülleimer im Beta-Grundriss. */
.lnf-dims-btn { position: absolute; right: 8px; bottom: 66px; width: 50px; height: 34px; display: flex; align-items: center; justify-content: center; font-size: 17px; border: 1px solid rgba(255,255,255,.28); border-radius: 10px; background: rgba(20,26,40,.65); cursor: pointer; padding: 0; }
.lnf-dims-btn:hover { border-color: rgba(255,255,255,.5); }
.lnf-dims-btn.off { opacity: 0.45; }
/* Topdown-Flugzeugsymbol über der Muster-Auswahl im Offlineflug-KPI-Kasten. Um 90° gegen den
   Uhrzeigersinn gedreht (Nutzervorgabe 2026-07-22 — Nase nach links, wie die Livery-Vorschau). */
.ap-ac-ico { width: 48px; height: 48px; object-fit: contain; display: block; margin: 0 auto 4px; transform: rotate(-90deg); }
/* Offlineflug-Kasten: die vier Kennzahlen (Gehalt, Airline-Gewinn, Flugzeit, Pax/Cargo) mittig
   zentriert — vertikal und horizontal — je Kachel (Nutzervorgabe 2026-07-22). */
.ap-kpis-dyn .kpi { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
/* „Für X € nochmal kaufen"-Popup (einzelner Rechtsklick auf einen Gegenstand — Beta + Einrichten) */
.fur-again-pop { position: fixed; z-index: 1300; background: var(--navy-700); border: 1px solid var(--border); border-radius: 10px; padding: 6px; box-shadow: 0 10px 26px rgba(0,0,0,.5); }
.fur-drag-ghost { position: fixed; z-index: 9999; width: 60px; height: 60px; margin: -30px 0 0 -30px; pointer-events: none; opacity: .85; }
.fur-drag-ghost img { width: 100%; height: 100%; object-fit: contain; }
.home-rot-handle { cursor: grab; fill: var(--gold); }
.fur-shop-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 8px; }
.fur-shop-name { font-size: .82rem; font-weight: 600; }

/* Einrichten — Zoom + Shop-Kategorien/Popup */
.fur-zoom { position: absolute; left: 8px; top: 8px; display: flex; flex-direction: column; gap: 4px; }
.fur-zoom .mini { width: 30px; height: 30px; font-size: 16px; padding: 0; }
.fur-floordrag { cursor: grab; }
.fur-shop-model { border: 1px solid var(--border); border-radius: 8px; padding: 6px; background: var(--navy-800, rgba(255,255,255,.03)); cursor: pointer; display: flex; flex-direction: column; gap: 3px; text-align: center; }
.fur-shop-model img { width: 100%; height: 78px; object-fit: contain; background: repeating-conic-gradient(#0002 0% 25%, transparent 0% 50%) 50%/12px 12px; border-radius: 6px; }
.fur-shop-model:hover { border-color: var(--accent, #5aa0ff); }
.fur-shop-vargrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 8px; max-height: 56vh; overflow-y: auto; }
.fur-shop-var { border: 1px solid var(--border); border-radius: 8px; padding: 6px; display: flex; flex-direction: column; gap: 4px; align-items: center; }
.fur-shop-var img { width: 100%; height: 64px; object-fit: contain; background: repeating-conic-gradient(#0002 0% 25%, transparent 0% 50%) 50%/12px 12px; border-radius: 6px; }
.fur-shop-varname { font-size: .78rem; display: flex; align-items: center; gap: 4px; }

/* Cockpit — Wartungsliste der Flotte */
/* Auf-/zuklappbare Cockpit-Kästen (Aktive Flüge / Status der Flotte) — standard zugeklappt. */
.cp-fold > .cp-fold-sum { cursor: pointer; font-weight: 700; font-size: 1.05rem; list-style: none; display: flex; align-items: center; gap: 8px; }
.cp-fold > .cp-fold-sum::-webkit-details-marker { display: none; }
.cp-fold > .cp-fold-sum::before { content: '▸'; font-size: .8em; opacity: .7; transition: transform .15s; }
.cp-fold[open] > .cp-fold-sum::before { transform: rotate(90deg); }
.cp-fold[open] > .cp-fold-sum { margin-bottom: 8px; }
/* „Off."-Zusatz an der besten Landung (Offlineflug) — kleiner als der Kennzahlwert. */
.kpi .value .kpi-suffix { font-size: 0.5em; font-weight: 600; opacity: 0.7; margin-left: 3px; vertical-align: middle; }
.cp-maint { margin: 0; padding-left: 18px; font-size: .78rem; }
/* Kleinere Schrift im „Status der Flotte"-Kasten (Nutzervorgabe 2026-07-24). */
.cp-fold[open] > p { font-size: .8rem; }
.cp-maint li { margin: 2px 0; }
.cp-maint-link { cursor: pointer; }
.cp-maint-hit { border-radius: 5px; padding: 1px 5px; box-decoration-break: clone; -webkit-box-decoration-break: clone; }
.cp-maint-link:hover .cp-maint-hit { background: color-mix(in srgb, var(--gold) 14%, transparent); text-decoration: underline; }
.cp-maint-soon { opacity: .95; }
/* Wartung vorgemerkt ODER in Arbeit: eingekreister BLAUER Haken (theme-angepasste Akzentfarbe). Haken UND
   Kasten (Kreis) blau; passt sich hell/dunkel und dem gewählten Theme an. */
.cp-sched-ok { display: inline-flex; align-items: center; justify-content: center; width: 15px; height: 15px; border-radius: 50%; border: 1px solid var(--map-ctl-accent); color: var(--map-ctl-accent); background: color-mix(in srgb, var(--map-ctl-accent) 18%, transparent); font-size: 10px; font-weight: 700; line-height: 1; vertical-align: middle; }
/* Grüner Haken: Wartung wird gerade DURCHGEFÜHRT (blau bleibt = nur vorgemerkt). */
.cp-sched-ok.cp-work-live { border-color: var(--ok, #37b24d); color: var(--ok, #37b24d); background: color-mix(in srgb, var(--ok, #37b24d) 18%, transparent); }

/* Einrichten — Grundriss-Viewport klar abgegrenzt (Wände „verschwinden" nicht beim Zoomen) */
/* overscroll-behavior: das Ziehen im Grundriss darf NIE auf die Seite durchschlagen (das Menü scrollte
   beim Verschieben der Ansicht mit auf und ab). */
/* FESTE Kastengröße (Nutzervorgabe 2026-07-22): unabhängig von den Maßen des Grundrisses darin. So bleibt
   das Menü ohne Scrollen nutzbar und die absolut positionierten Bedienelemente (Zoom +/-, Mülleimer,
   Terrasse/Beet) sitzen IMMER im sichtbaren Kasten. Werkstatt-Raster wie im Innenausbau Beta: die
   Randflächen um den Grundriss sind als Arbeitsfläche lesbar (der SVG-Hintergrund ist im Editor
   transparent, s. buildFloorplanSvg). */
#fur-editor .home-canvas { overscroll-behavior: contain; border: 2px solid var(--border); border-radius: 12px;
  height: min(62vh, 640px); min-height: 420px;
  background-color: #0b1220;
  background-image: linear-gradient(rgba(120,140,170,.08) 1px, transparent 1px), linear-gradient(90deg, rgba(120,140,170,.08) 1px, transparent 1px);
  background-size: 22px 22px;
  overflow: hidden; box-shadow: inset 0 0 0 1px rgba(255,255,255,.05), inset 0 0 24px rgba(0,0,0,.5); }
/* Der Grundriss FÜLLT den festen Kasten (width+height 100%); preserveAspectRatio="meet" passt ihn
   zentriert ein, die Randflächen zeigen das Raster. */
#fur-editor .home-canvas svg.home-floorplan { display: block; max-width: none; width: 100%; height: 100%; }/* Einrichten — Theme-treue Textfarben (Buttons erben color nicht automatisch) */

.fur-shop-model, .fur-shop-var, .fur-shop-name, .fur-shop-varname, .fb-card, .fb-card strong { color: var(--text); }
.fur-shop-model .muted-note, .fur-shop-var .muted-note { color: var(--muted); }

/* Einrichten — Bodenbelag-Lagerkachel mit Dreh-Knopf */
.fur-floor-lageritem { display: inline-flex; flex-direction: column; align-items: center; gap: 3px; }
.fur-floor-lageritem .fur-pal-var img { transition: transform .15s; }
.fur-floor-rotbtn { font-size: .7rem; padding: 2px 6px; }

/* Einrichten — Lager nach Kategorie → Unterkategorie (einklappbar, zu) */
details.fur-lager-cat { border: 1px solid var(--border); border-radius: 8px; padding: 4px 8px; margin-bottom: 6px; }
details.fur-lager-cat > summary { cursor: pointer; font-weight: 600; font-size: .9rem; padding: 3px 0; list-style: none; color: var(--text); }
details.fur-lager-cat > summary::-webkit-details-marker { display: none; }
details.fur-lager-cat > summary::before { content: '▸'; display: inline-block; margin-right: 5px; transition: transform .15s; }
details.fur-lager-cat[open] > summary::before { transform: rotate(90deg); }
.fur-lager-sub { margin: 4px 0 8px; }
.fur-lager-sub h5 { margin: 3px 0; font-size: .74rem; color: var(--muted); text-transform: uppercase; letter-spacing: .03em; }

/* Einrichten — Garten-Markierwerkzeuge + Zonen */
.fur-garden-tools { position: absolute; left: 8px; bottom: 8px; display: flex; gap: 6px; background: rgba(20,26,40,.82); padding: 5px; border-radius: 8px; border: 1px solid var(--border); flex-wrap: wrap; max-width: 70%; }
.fur-garden-tools .mini.active { background: #f5b301; color: #1a1a1a; border-color: #f5b301; }
.fur-zone { cursor: pointer; }
.fur-zone.selected rect { outline: none; }
.fur-zone.selected > rect:first-of-type { stroke: var(--gold); stroke-width: 2; filter: drop-shadow(0 0 1px rgba(0,0,0,0.95)) drop-shadow(0 0 1px rgba(255,255,255,0.6)); }
/* ── Auswahl-Markierung (Einrichten + Innenausbau Beta): folgt dem Theme (--gold) und bleibt auf jedem
   Untergrund sichtbar. Die farbige Linie/Füllung trägt die Theme-Farbe; die dunkle+helle Kontur
   (drop-shadow, Bildschirm-px) garantiert Kontrast auf hellen wie dunklen Belägen. Die gefüllten Griffe
   haben ohnehin eine dunkle Außenkante. (Nutzervorgabe 2026-07-22.) ── */
.home-selrect, .lnf-selrect { stroke: var(--gold); filter: drop-shadow(0 0 1px rgba(0,0,0,0.95)) drop-shadow(0 0 1px rgba(255,255,255,0.6)); }
.home-rsz, .fur-zh, .lnf-rsz { fill: var(--gold); }
.fur-sel-line { stroke: var(--gold); }
/* „Ernennen" steht neben zwei Auswahlfeldern — als volle Schaltfläche sprengte er die Zeile. Kompakt und
   unten an den Feldern ausgerichtet fügt er sich ein. */
.fla-grant-btn { align-self: flex-end; padding: 6px 14px; font-size: .88rem; height: 34px; }/* Läden (Möbelhaus/Gartencenter/Elektronikfachhandel): KEIN Transparenz-Schachbrett hinter den Produkt-
   bildern. Das Karo gehört in den Admin-Bereich, wo man die Freistellung prüft — im Laden wirkt es wie ein
   Darstellungsfehler. Stattdessen eine ruhige, themepassende Fläche und eine klare Hover-Markierung. */

.fur-shop-model img, .fur-shop-var img, .fur-dept-thumb {
  background: color-mix(in srgb, var(--text, #ffffff) 6%, transparent);
}
.fur-shop-model, .fur-dept { transition: background-color .12s, border-color .12s, transform .12s; }
.fur-shop-model:hover, .fur-dept:hover {
  background: color-mix(in srgb, var(--accent, #5aa0ff) 14%, transparent);
  border-color: var(--accent, #5aa0ff);
}
.fur-shop-model:hover img, .fur-dept:hover .fur-dept-thumb {
  background: color-mix(in srgb, var(--accent, #5aa0ff) 10%, transparent);
}
/* Ein gezogenes Möbel über der Lager-Palette: sie hebt sich hervor wie der Mülleimer — Loslassen legt
   das Stück zurück ins Lager. */
.fur-palette.hot { outline: 2px dashed var(--accent, #5aa0ff); outline-offset: -4px; border-radius: 10px;
  background: color-mix(in srgb, var(--accent, #5aa0ff) 10%, transparent); }
/* Bildausschnitt im Admin-Möbelmenü: Rahmen über dem Bild, mit acht Anfassern. */
.fb-crop-wrap { position: relative; display: inline-block; max-width: 100%; touch-action: none; user-select: none; }
.fb-crop-wrap img { display: block; max-width: 100%; max-height: 60vh; width: auto;
  background: repeating-conic-gradient(#0002 0% 25%, transparent 0% 50%) 50%/16px 16px; }
.fb-crop-box { position: absolute; border: 2px dashed #f5b301; box-shadow: 0 0 0 9999px rgba(0,0,0,.45); cursor: move; }
.fb-crop-h { position: absolute; width: 12px; height: 12px; background: #f5b301; border: 1px solid #1b1b1b; border-radius: 2px; }
.fb-crop-h[data-h="nw"] { left: -7px; top: -7px; cursor: nwse-resize; }
.fb-crop-h[data-h="n"]  { left: calc(50% - 6px); top: -7px; cursor: ns-resize; }
.fb-crop-h[data-h="ne"] { right: -7px; top: -7px; cursor: nesw-resize; }
.fb-crop-h[data-h="w"]  { left: -7px; top: calc(50% - 6px); cursor: ew-resize; }
.fb-crop-h[data-h="e"]  { right: -7px; top: calc(50% - 6px); cursor: ew-resize; }
.fb-crop-h[data-h="sw"] { left: -7px; bottom: -7px; cursor: nesw-resize; }
.fb-crop-h[data-h="s"]  { left: calc(50% - 6px); bottom: -7px; cursor: ns-resize; }
.fb-crop-h[data-h="se"] { right: -7px; bottom: -7px; cursor: nwse-resize; }
/* Anfasser zum Vergrößern/Verkleinern der ausgewählten Terrasse/Beet-Zone */
.fur-zh { cursor: pointer; }
.fur-zh[data-zh="n"], .fur-zh[data-zh="s"] { cursor: ns-resize; }
.fur-zh[data-zh="e"], .fur-zh[data-zh="w"] { cursor: ew-resize; }
.fur-zh[data-zh="nw"], .fur-zh[data-zh="se"] { cursor: nwse-resize; }
.fur-zh[data-zh="ne"], .fur-zh[data-zh="sw"] { cursor: nesw-resize; }

/* Einrichten — Möbelhaus / Gartencenter */
/* ===== Einsatzplan (Personal → NPC-Crews auf Strecken ziehen) ===== */
.ep-wrap { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 14px; align-items: start; }
.ep-map-card { padding: 8px; }
#ep-map { height: 540px; border-radius: 10px; }
.ep-roster h3 { margin-top: 0; }
/* „Verfügbare Angestellte" auf-/zuklappbar (Std. zu): eingeklappt schrumpft die Spalte auf den Titel, die
   Karte bekommt den Platz; ausgeklappt feste 340 px. */
.ep-roster { width: 340px; }
.ep-roster.ep-roster-collapsed { width: auto; }
.ep-roster-toggle { display: flex; align-items: center; gap: 8px; width: 100%; background: none; border: none;
  color: var(--text); font-size: 16px; font-weight: 600; cursor: pointer; padding: 2px 0; text-align: left; white-space: nowrap; }
.ep-roster-caret { display: inline-block; transition: transform .18s; color: var(--muted); }
.ep-roster:not(.ep-roster-collapsed) .ep-roster-caret { transform: rotate(90deg); }
.ep-roster-body { margin-top: 8px; }
.ep-roster.ep-roster-collapsed .ep-roster-body { display: none; }
/* Karten-„+" (Neuer Einsatzplan) — eingekreist, im Theme wie die Zoom-Knöpfe (transluzent, über der Karte lesbar). */
.ep-map-add { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; cursor: pointer; box-sizing: border-box; padding: 0;
  background: rgba(14,20,32,.72); -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px);
  color: var(--gold); border: 1px solid var(--border) !important; font-size: 22px; font-weight: 700; line-height: 0;
  box-shadow: 0 2px 10px rgba(0,0,0,.45); transition: background .15s, color .15s; }
.ep-map-add::before { content: "+"; display: block; line-height: 1; }
.ep-map-add:hover { background: rgba(14,20,32,.92); color: var(--gold); }
:root[data-theme="light"] .ep-map-add { background: rgba(255,255,255,.85); }
/* Einsatzplan-Karte: auf-/zuklappbare Bereiche „Aktive Flüge" / „Mitarbeiter" (#96, live). */
.ep-sec { margin-top: 8px; }
.ep-sec > summary { cursor: pointer; font-weight: 600; font-size: 13px; color: var(--text); list-style: none; padding: 4px 0; user-select: none; }
.ep-sec > summary::-webkit-details-marker { display: none; }
.ep-sec > summary::before { content: "▸"; display: inline-block; margin-right: 6px; color: var(--muted); transition: transform .15s; }
.ep-sec[open] > summary::before { transform: rotate(90deg); }
/* Aktive Flüge eines Einsatzplans: Die Kästen sind nur so breit wie ihr Inhalt und stehen nebeneinander;
   erst wenn die Zeile voll ist, rutscht der nächste in eine neue (Nutzervorgabe 2026-07-25). Vorher war je
   Flug eine eigene, über die volle Breite gezogene Zeile. */
.ep-active { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 5px 8px; margin-top: 4px; }
.ep-af { display: inline-flex; align-items: center; gap: 8px; padding: 5px 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--navy-700); width: auto; max-width: 100%; flex: 0 1 auto; }
.ep-af-ico { width: 26px; height: 26px; object-fit: contain; flex: 0 0 auto; }
.ep-af-reg { font-weight: 700; }
.ep-af-meta { font-size: 12px; }
.ep-af-empty { padding: 3px 2px; }
.ep-group { margin-bottom: 12px; }
.ep-group-h { font-weight: 700; margin-bottom: 6px; }
.ep-group-list { display: flex; flex-direction: column; gap: 6px; max-height: 180px; overflow-y: auto; }
.ep-tile { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border: 1px solid var(--border); border-radius: 10px; background: var(--navy-700); cursor: grab; }
.ep-tile[draggable="true"]:hover { border-color: var(--gold); }
.ep-tile:active { cursor: grabbing; }
.ep-tile-txt { min-width: 0; }
.ep-tile-name { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Plan-Karte ist aufklappbar (standard zu): der Kopf ist die Zusammenfassung, alles Weitere klappt auf. */
.ep-pair > summary.ep-pair-h { cursor: pointer; list-style: none; }
.ep-pair > summary.ep-pair-h::-webkit-details-marker { display: none; }
.ep-pair > summary.ep-pair-h::before { content: "▸"; color: var(--muted); margin-right: 2px; transition: transform .15s; display: inline-block; }
.ep-pair[open] > summary.ep-pair-h::before { transform: rotate(90deg); }
.ep-pair-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
/* Statuszeile: Plan-Zustand + die Zustände der einzelnen Maschinen nebeneinander, mit weichem Umbruch. */
.ep-ready { display: block; line-height: 1.7; }
.ep-ready-sep { color: var(--muted); opacity: .6; margin: 0 2px; }
.ep-rot { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; }
.ep-rot input { width: 64px; padding: 6px 8px; }
/* Eingekreiztes × zum Löschen einer ganzen Einsatzplan-Route (theme-treu, kein Tooltip). */
.ep-del-x { flex: 0 0 auto; width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--border); background: var(--navy-700); color: var(--muted); font-size: 16px; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: 0; transition: border-color .12s, color .12s, background .12s; }
.ep-del-x:hover { border-color: var(--danger); color: #fff; background: var(--danger); }
/* Pause/Fortsetzen-Schalter links vom Löschen-× (eingekreist, gleiche Grundform). */
.ep-pause-x { flex: 0 0 auto; width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--border); background: var(--navy-700); color: var(--muted); font-size: 12px; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: 0; transition: border-color .12s, color .12s, background .12s; }
.ep-pause-x:hover { border-color: var(--gold); color: var(--gold); }
.ep-pause-x.on { border-color: var(--gold); color: #1a1200; background: var(--gold); }
.ep-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 6px; }
.ep-chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 8px; border: 1px solid var(--border); border-radius: 999px; background: var(--navy-700); cursor: grab; }
/* Einsatzplan-Crew-Chip MIT Fitnessbalken (Nutzervorgabe 2026-07-24): Name/Portrait oben, darunter der
   Fitnessbalken + Regenerations-Countdown je zugewiesenem Angestellten. */
.ep-chip-col { flex-direction: column; align-items: stretch; gap: 3px; border-radius: 12px; }
.ep-chip-col .ep-chip-name { display: inline-flex; align-items: center; gap: 6px; }
/* Beruf/Arbeitsfeld unter dem Namen, über der Fitnessleiste (Nutzervorgabe 2026-07-24). */
.ep-chip-col .ep-chip-job { display: block; font-size: 11px; color: var(--muted); margin: 1px 0 2px 28px; }
.ep-chip-col .ep-chip-fit { display: inline-flex; align-items: center; gap: 4px; }
.ep-chip-col .ep-chip-fit .staff-num { min-width: 20px; font-size: 11px; }
.ep-chip-x { padding: 0 6px; background: transparent; color: var(--muted); border: none; font-size: 12px; cursor: pointer; }
.ep-chip-x:hover { color: var(--danger); background: transparent; }
.ep-chip-pause { padding: 0 4px; background: transparent; color: var(--muted); border: none; font-size: 11px; cursor: pointer; }
.ep-chip-pause:hover { color: var(--gold); }
.ep-chip-paused { opacity: .55; }
.ep-chip-paused .ep-chip-name { text-decoration: line-through; text-decoration-color: color-mix(in srgb, var(--muted) 60%, transparent); }
/* ZUSTANDS-TÖNUNG der Mitarbeiter-Kästen im Einsatzplan (Nutzervorgabe 2026-07-27): Jeder Kasten zeigt
   seinen Zustand ZU DIESEM PLAN als dezent getönten Hintergrund (~12 %) plus passenden Rahmen. Alle Farben
   kommen aus den Theme-Variablen bzw. werden per color-mix daraus gemischt — damit folgt die Tönung
   automatisch dem gewählten Nutzer-Theme und bleibt in hell wie dunkel lesbar. */
/* FALLE (behoben 2026-07-27): Diese Regel setzte selbst `--ep-st` auf die Rahmenfarbe. Sie ist mit zwei
   Selektorteilen SPEZIFISCHER als die Zustandsregeln darunter (eine Klasse) und hat deren Farbe damit bei
   JEDEM Kasten wieder überschrieben — alle Kästen sahen gleich aus. Jetzt setzt sie `--ep-st` nicht mehr,
   sondern nutzt nur einen Rückfallwert; die Zustandsregeln tragen zur Sicherheit `.ep-chip` mit. */
/* Tönung + KANTE: Der farbige Balken links macht den Zustand auf einen Blick unterscheidbar, auch wenn
   zwei Töne ähnlich sind (Nutzervorgabe 2026-07-28: „ruht", „heimgeschickt" und „im Einsatz für diesen
   Plan" waren kaum auseinanderzuhalten). Alle Farben kommen weiter aus Theme-Variablen bzw. werden per
   color-mix daraus gemischt und folgen damit dem gewählten Theme. */
.ep-chip[class*="ep-st-"] { background: color-mix(in srgb, var(--ep-st, var(--border)) 18%, var(--navy-700)); border-color: color-mix(in srgb, var(--ep-st, var(--border)) 65%, var(--border)); border-left: 4px solid var(--ep-st, var(--border)); }
.ep-chip-state { font-size: 11px; line-height: 1; opacity: .9; }
/* EIGENER TON JE ZUSTAND — bewusst über den Farbkreis verteilt, damit benachbarte Zustände nicht
   ineinanderlaufen. Der Theme-Akzent (--gold) gehört dem Zustand, um den es hier geht: dem eigenen Plan. */
.ep-chip.ep-st-flying_plan, .ep-legend-item.ep-st-flying_plan { --ep-st: var(--gold); }           /* Gold: unser Plan */
.ep-chip.ep-st-flying_other, .ep-legend-item.ep-st-flying_other { --ep-st: #f97316; }             /* kräftiges Orange, klar neben Gold */
.ep-chip.ep-st-working, .ep-legend-item.ep-st-working { --ep-st: #a855f7; }                       /* Violett: Wartung */
.ep-chip.ep-st-sick, .ep-legend-item.ep-st-sick { --ep-st: var(--danger); }                       /* Rot */
.ep-chip.ep-st-training, .ep-legend-item.ep-st-training { --ep-st: #14b8a6; }                     /* Türkis statt zweitem Violett */
.ep-chip.ep-st-sent_home, .ep-legend-item.ep-st-sent_home { --ep-st: #c2823a; }                   /* warmes Braun: Feierabend */
.ep-chip.ep-st-unqualified, .ep-legend-item.ep-st-unqualified { --ep-st: #e11d48; }               /* Karminrot, dazu dickerer Rahmen */
.ep-chip.ep-st-traveling, .ep-legend-item.ep-st-traveling { --ep-st: #38bdf8; }                   /* Hellblau: unterwegs */
.ep-chip.ep-st-offsite, .ep-legend-item.ep-st-offsite { --ep-st: #3b5bdb; }                       /* Dunkelblau: woanders */
.ep-chip.ep-st-resting, .ep-legend-item.ep-st-resting { --ep-st: #8b95a7; }                       /* kühles Grau-Blau: Ruhe */
.ep-chip.ep-st-ready, .ep-legend-item.ep-st-ready { --ep-st: var(--ok, #5fd29a); }                /* Grün: bereit */
.ep-chip.ep-st-paused, .ep-legend-item.ep-st-paused { --ep-st: var(--muted); }                    /* neutral */
/* ZUSÄTZLICH ZUR FARBE eine Rahmenform — sie trägt auch dort, wo Farben schwer zu unterscheiden sind
   (Farbsehschwäche, helle Themes, kleiner Bildschirm): ruhend gestrichelt, heimgeschickt gepunktet. */
.ep-chip.ep-st-resting, .ep-legend-item.ep-st-resting { border-style: dashed; }
.ep-chip.ep-st-sent_home, .ep-legend-item.ep-st-sent_home { border-style: dotted; }
.ep-chip.ep-st-resting, .ep-chip.ep-st-sent_home { border-left-style: solid; }
/* „Nicht qualifiziert" ist ein echter Fehler und bekommt zusätzlich einen kräftigeren Rahmen. */
.ep-st-unqualified.ep-chip { border-width: 2px; border-left-width: 4px; }
/* Der eigene Plan bekommt zusätzlich Gewicht — er ist der Zustand, den man beim Prüfen sucht. */
.ep-chip.ep-st-flying_plan .ep-chip-name { font-weight: 600; }
/* Farblegende über der Plan-Liste (aufklappbar, damit sie im Alltag nicht stört). */
.ep-legend { margin: 6px 0 4px; }
.ep-legend summary { cursor: pointer; }
.ep-legend-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.ep-legend-item { font-size: 11px; padding: 2px 8px; border-radius: 999px; border: 1px solid color-mix(in srgb, var(--ep-st) 60%, var(--border)); border-left: 4px solid var(--ep-st); background: color-mix(in srgb, var(--ep-st) 18%, var(--navy-700)); color: var(--text); }
/* Farbiger Kreis (Kartenfarbe der Strecke) links vom Pause-Symbol + Farbwähler-Popup. */
.ep-color-dot { width: 15px; height: 15px; border-radius: 50%; border: 2px solid rgba(255,255,255,.5); padding: 0; cursor: pointer; box-shadow: 0 1px 3px rgba(0,0,0,.4); vertical-align: middle; flex: 0 0 auto; }
.ep-color-dot:hover { border-color: #fff; }
.ep-color-menu { padding: 8px 10px; }
.ep-color-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; margin: 4px 0 8px; }
.ep-color-sw { width: 22px; height: 22px; border-radius: 50%; border: 2px solid transparent; cursor: pointer; padding: 0; box-shadow: 0 1px 3px rgba(0,0,0,.4); }
.ep-color-sw:hover { border-color: #fff; }
.ep-color-auto { display: block; width: 100%; text-align: left; white-space: nowrap; }
@media (max-width: 900px) { .ep-wrap { grid-template-columns: 1fr; } #ep-map { height: 380px; } }
/* Einsatzplan-Nummern (Liste + Karte): eingekreiste Reihenfolge-Zahl. */
.ep-num { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; background: var(--gold); color: var(--gold-ink); font-weight: 800; font-size: 13px; flex: 0 0 auto; }
.ep-num-map { width: 26px; height: 26px; border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.5); cursor: pointer; }
/* Eingekreiste Einsatzplan-Nummer hinter Namen in den Personal-Listen (Nutzervorgabe 2026-07-23). */
.ep-num-inline { width: 18px; height: 18px; font-size: 11px; vertical-align: middle; margin-left: 4px; }
/* Fahrplan-Vorschau (Einsatzplan 4.0): erste Rotation dep→arr je Leg. */
.ep-sched { margin-top: 8px; }
.ep-arr-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 4px; }
.ep-arr-strict { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }
#epw-arr-note { margin-top: 6px; line-height: 1.4; }
.ep-sched-h { margin-bottom: 4px; }
.ep-sched-row { display: flex; justify-content: space-between; gap: 12px; padding: 3px 0; border-bottom: 1px dashed var(--border); font-size: 13px; }
.ep-sched-leg { font-weight: 600; }
.ep-sched-t { text-align: right; }
/* Ketten-Builder (Streckennetz A→B→C→D). */
.ep-chain-box { margin-top: 10px; }
.ep-legs { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.ep-leg-chip { background: var(--navy-700); border: 1px solid var(--border); border-radius: 999px; padding: 4px 10px; font-size: 13px; font-weight: 600; white-space: nowrap; }
.ep-leg-x { background: transparent; border: none; color: var(--danger); cursor: pointer; font-weight: 700; margin-left: 2px; padding: 0 2px; }
.ep-leg-add { align-items: center; gap: 8px; margin-top: 6px; }
.ep-leg-add select { flex: 1; min-width: 0; }
.ep-overlap-warn { border-color: var(--danger); }
.ep-overlap-list { margin: 6px 0 0 18px; }
/* Sitz-Eignung je Musterzulassung: PIC (Kommandant) / SIC (Co-Pilot) — Nutzervorgabe 2026-07-23. */
.seat-tag { font-size: 10px; font-weight: 700; padding: 1px 5px; border-radius: 999px; letter-spacing: .04em; }
.seat-tag.seat-pic { background: color-mix(in srgb, var(--gold) 30%, transparent); color: var(--text); }
.seat-tag.seat-sic { background: color-mix(in srgb, var(--map-ctl-accent) 24%, transparent); color: var(--text); }
.ep-num-marker, .ep-plane-marker, .ep-hub-marker, .ep-dir-arrow { background: transparent; border: none; }
/* Flugrichtungs-Pfeile auf der Einsatzlinie: ▲ (zeigt bei 0° nach Norden) wird per rotate() auf die
   Kurspeilung gedreht; Gold mit dunklem Schimmer, damit er auf hellem wie dunklem Kartenmaterial trägt. */
.ep-dir-arrow > div { color: var(--gold); font-size: 15px; font-weight: 900; line-height: 15px; text-align: center; text-shadow: 0 0 3px rgba(0,0,0,0.95), 0 0 2px rgba(0,0,0,0.9); }
/* Hub-Symbol auf der Einsatzplan-Karte: Gebäude-Emoji + ICAO-Fähnchen. */
.ep-hub { display: flex; flex-direction: column; align-items: center; line-height: 1; filter: drop-shadow(0 1px 3px rgba(0,0,0,.6)); }
.ep-hub > :first-child { font-size: 18px; }
/* ICAO-Beschriftung der Hubs/Flugplätze klein halten (Nutzervorgabe 2026-07-24, weiter verkleinert). */
/* Flugplatz-Kürzel am Hub deutlich kleiner (Nutzervorgabe 2026-07-24) — via scale zusätzlich min-font-size-fest. */
.ep-hub-icao { margin-top: 0; font-size: 7px; transform: scale(.5); transform-origin: center top; font-weight: 700; color: #fff; background: rgba(20,28,46,.78); border-radius: 2px; padding: 0 1px; white-space: nowrap; line-height: 1.2; letter-spacing: .1px; }
/* Wizard: Avatar-Kacheln (Linksklick wählt, Gold-Rahmen; Rechtsklick öffnet das Info-Popover). */
.ep-wiz-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; margin-bottom: 10px; max-height: 280px; overflow-y: auto; }
/* Bodenpersonal zweispaltig: Start-/Zielflugplatz (Nutzervorgabe 2026-07-23). */
.epw-gcols { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.epw-gcol { min-width: 0; }
.epw-gcol-h { font-size: 12px; color: var(--muted); margin-bottom: 6px; border-bottom: 1px solid var(--border); padding-bottom: 4px; }
.epw-gcol-h b { color: var(--text); font-size: 15px; letter-spacing: .5px; }
.epw-gother { margin-top: 6px; }
@media (max-width: 560px) { .epw-gcols { grid-template-columns: 1fr; } }
.ep-wiz-av { border: 2px solid var(--border); border-radius: 10px; padding: 8px 4px 6px; text-align: center; cursor: pointer; background: var(--navy-700); min-width: 0; user-select: none; }
.ep-wiz-av:hover { border-color: var(--gold-dim); }
.ep-wiz-av.sel { border-color: var(--gold); box-shadow: 0 0 0 2px color-mix(in srgb, var(--gold) 35%, transparent); }
.ep-wiz-av .staff-portrait { display: inline-block; }
.ep-wiz-av-name { font-weight: 600; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ep-wiz-av-sub { font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* „Flugzeuge & Takt": Auswahl-Pills statt Checkboxen — Antippen schaltet um, Gold = aktiv. */
.ep-pill-group { margin-bottom: 12px; }
.ep-pill-label { display: block; font-size: .8rem; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 6px; }
.ep-pill-row { display: flex; flex-wrap: wrap; gap: 6px; }
.ep-pill { border: 1px solid var(--border); background: var(--navy-700); color: var(--text); border-radius: 999px; padding: 6px 14px; font-size: .88rem; font-weight: 600; cursor: pointer; }
.ep-pill:hover { border-color: var(--gold-dim); background: var(--navy-600); }
.ep-pill.on { background: var(--gold); border-color: var(--gold); color: var(--gold-ink); }
.ep-pill.on::before { content: '✓ '; }
.ep-pill-wide { border-radius: 12px; }
/* Einsatzplan-Vorschau (Nutzervorgabe 2026-07-23): zentrierter Start→Ziel-Kopf, klar getrennte Abschnitte,
   auf-/zuklappbare Auslastung. Theme-basiert (var(--border)/--muted). */
/* Vorschaukasten kompakter (Nutzervorgabe 2026-07-24): kleinere Schrift durchgehend. */
.ep-rot-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 4px; }
/* Überschrift steht in der Zeile NEBEN dem Eingabefeld (Nutzervorgabe 2026-07-25). */
.ep-rot-h { margin: 0; }
/* Abflugfolge in der Statuszeile: die einzelnen Takt-Zeitpunkte bleiben als Gruppe zusammen. */
.ep-dep { white-space: nowrap; }
/* „Jetzt starten" am Ende der Abflugfolge (Nutzervorgabe 2026-07-30): kleine Pille in der Akzentfarbe des
   Themes (--gold), gefüllt erst beim Überfahren — sie soll in der Statuszeile auffallen, ohne sie zu
   dominieren. Schrift AUF der gefüllten Fläche kommt aus --gold-ink, sonst wäre sie in hellen Themes weiß
   auf Gelb. Nach dem Start färbt sich der Knopf kurz grün (.ok), bis der 15-s-Abruf die Zeile neu schreibt. */
.ep-go { display: inline-flex; align-items: center; gap: 4px; margin-left: 4px; padding: 1px 9px; font-size: 12px; line-height: 1.5;
  border: 1px solid color-mix(in srgb, var(--gold) 55%, var(--border)); border-radius: 999px;
  background: color-mix(in srgb, var(--gold) 14%, transparent); color: var(--gold); cursor: pointer;
  white-space: nowrap; vertical-align: baseline; transition: background .12s, border-color .12s, color .12s; }
.ep-go:hover:not(:disabled) { background: var(--gold); border-color: var(--gold); color: var(--gold-ink); }
.ep-go:disabled { opacity: .7; cursor: default; }
.ep-go.ok { border-color: var(--ok); color: var(--ok); background: color-mix(in srgb, var(--ok) 14%, transparent); opacity: 1; }
.ep-go-eta { opacity: .8; font-size: 11px; }
/* Vorgemerkter Sofortstart: kein Knopf mehr, sondern ein Zustand — dieselbe Pillenform, aber ohne Klickreiz. */
.ep-go-pending { display: inline-flex; align-items: center; gap: 4px; padding: 1px 9px; font-size: 12px; line-height: 1.5;
  border: 1px solid color-mix(in srgb, var(--gold) 45%, var(--border)); border-radius: 999px;
  background: color-mix(in srgb, var(--gold) 10%, transparent); color: var(--gold); white-space: nowrap; }
.ep-rot-row select { margin-left: 4px; }
.ep-prev { padding: 10px 12px; font-size: 12px; }
.ep-prev-head { text-align: center; font-weight: 700; font-size: 13px; letter-spacing: .3px; }
.ep-prev-crew { margin: 9px 0; line-height: 1.5; }
.ep-prev-rev { margin: 9px 0 6px; border-top: 1px solid var(--border); padding-top: 8px; }
.ep-prev-leg { margin: 5px 0; }
.ep-prev-load { margin: 2px 0 2px 2px; }
.ep-prev-load > summary { cursor: pointer; color: var(--muted); font-size: 11px; list-style: none; }
.ep-prev-load > summary::-webkit-details-marker { display: none; }
.ep-prev-load > summary::before { content: '▸ '; }
.ep-prev-load[open] > summary::before { content: '▾ '; }
.ep-prev-load > div { margin: 3px 0 3px 14px; }
.ep-prev-day { margin-top: 10px; font-size: 12px; }
.ep-prev-cap { margin-top: 10px; line-height: 1.45; font-size: 11.5px; }
/* Bearbeiten-Modus: „← Zurück" ausblenden (Auto-Speicherung); !important schlägt die Inline-Anzeige von wizWire. */
.wiz.ep-noback #epw-wiz-back { display: none !important; }
.ep-wiz-pop { position: absolute; z-index: 60; width: 230px; padding: 10px 12px; box-shadow: 0 10px 30px rgba(0,0,0,.5); }
.ep-wiz-pop-h { display: flex; gap: 8px; align-items: center; margin-bottom: 6px; }
.modal-wide .modal-card { position: relative; }
/* Wizard im MODAL („Neuer Einsatzplan"): die Vorschau wird eine eigene, ruhige Karte OHNE Sticky —
   im scrollenden Modal ragte sie sonst in Schritte/Texte hinein; Spalten stapeln auf schmalen Fenstern. */
.modal-card .wiz { margin-top: 4px; }
.modal-card .wiz-body { grid-template-columns: minmax(0, 1fr) 260px; }
.modal-card .wiz-preview { position: static; background: var(--navy-800); border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; min-width: 0; }
.modal-card .wiz-preview .card { background: transparent; border: none; padding: 0; }
.modal-card .wiz-pane h4:first-child { margin-top: 0; }
@media (max-width: 1100px) { .modal-card .wiz-body { grid-template-columns: 1fr; } }
/* Fuhrpark-Galerie: gewähltes Vorschaubild (Pkw-Foto/Flugzeug-Icon) + Autofan-Daten im Popup. */
.fleet-gal-img { max-width: 100%; max-height: 64px; object-fit: contain; display: block; margin: 0 auto; }
.fleet-showcase-row { margin-bottom: 10px; }
.fleet-showcase-row select { max-width: 100%; }
.fleet-tile-specs { line-height: 1.5; margin-top: 4px; text-align: left; }

.fur-store-btns { display: flex; gap: 8px; margin-bottom: 12px; }
/* Shop-Buttons (Einrichten + Crew-Lounge: Möbelhaus, Gartencenter, Elektronik, Sim & Schulung, Ops &
   Briefing, …) folgen dem AKTIVEN GUI-Theme (Panel-Verlauf + Akzent-Unterkante) statt fester Markenfarben —
   die Markenidentität trägt der Laden-BANNER im geöffneten Shop. So sitzen die Buttons in jedem der
   Farb-Themes (Hell + Dunkel) sauber im Gesamtbild. */
.fur-store-btn {
  flex: 1; padding: 12px 10px; border-radius: 10px; border: 1px solid var(--border);
  font-weight: 700; font-size: .95rem; cursor: pointer;
  background: linear-gradient(180deg, var(--navy-600), var(--navy-700));
  color: var(--text);
  box-shadow: inset 0 -3px 0 var(--gold-dim);
}
.fur-store-btn:hover { border-color: var(--gold); box-shadow: inset 0 -3px 0 var(--gold); background: linear-gradient(180deg, var(--navy-600), var(--navy-600)); }
.fur-store-banner { display: flex; align-items: center; gap: 12px; padding: 16px 18px; border-radius: 12px 12px 0 0; margin: -4px -4px 14px; color: #fff; }
.fur-store-banner h3 { margin: 0; font-size: 1.3rem; }
.fur-store-banner .muted-note { margin-left: auto; color: rgba(255,255,255,.85); }
.fur-store-ico { font-size: 2rem; }
.fur-store-moebel .fur-store-banner { background: linear-gradient(135deg, #6d4a2b, #b07d44); }
.fur-store-garten .fur-store-banner { background: linear-gradient(135deg, #2b6236, #57a860); }
.fur-dept-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.fur-dept { border: 1px solid var(--border); border-radius: 12px; padding: 10px; background: var(--navy-800, rgba(255,255,255,.03)); cursor: pointer; display: flex; flex-direction: column; gap: 6px; align-items: center; text-align: center; color: var(--text); transition: border-color .12s, transform .12s; }
.fur-dept:hover { border-color: var(--accent, #5aa0ff); transform: translateY(-2px); }
.fur-dept-thumb { width: 100%; height: 96px; display: flex; align-items: center; justify-content: center; background: repeating-conic-gradient(#0002 0% 25%, transparent 0% 50%) 50%/16px 16px; border-radius: 8px; overflow: hidden; }
.fur-dept-thumb img { max-width: 100%; max-height: 96px; object-fit: contain; }
.fur-dept-emoji { font-size: 2.4rem; }
.fur-dept-name { font-weight: 700; }
.fur-store-crumb { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
/* Suchfeld im Banner: sitzt auf dem farbigen Verlauf, darum helle Schrift auf halbtransparentem Grund. */
.fur-store-search { flex: 0 1 260px; }
.fur-store-search input { width: 100%; padding: 7px 11px; border-radius: 999px; font-size: .95rem;
  border: 1px solid rgba(255,255,255,.45); background: rgba(255,255,255,.16); color: #fff; }
.fur-store-search input::placeholder { color: rgba(255,255,255,.8); }
.fur-store-search input:focus { outline: none; border-color: #fff; background: rgba(255,255,255,.26); }
.fur-store-search input::-webkit-search-cancel-button { filter: invert(1); opacity: .8; cursor: pointer; }
@media (max-width: 620px) {
  .fur-store-banner { flex-wrap: wrap; }
  .fur-store-banner .muted-note { margin-left: 0; }
  .fur-store-search { flex: 1 1 100%; }
}

/* Möbel Admin — Kategorien/Unterkategorien auf-/zuklappbar */
details.fb-adm-cat { margin-bottom: 10px; }
details.fb-adm-cat > summary { cursor: pointer; font-size: 1.02rem; padding: 4px 0; list-style: none; color: var(--text); }
details.fb-adm-cat > summary::-webkit-details-marker { display: none; }
details.fb-adm-cat > summary::before { content: '▸'; display: inline-block; margin-right: 7px; transition: transform .15s; }
details.fb-adm-cat[open] > summary::before { transform: rotate(90deg); }
details.fb-adm-sub { border: 1px solid var(--border); border-radius: 8px; padding: 4px 10px; margin: 6px 0; }
details.fb-adm-sub > summary { cursor: pointer; font-weight: 600; font-size: .88rem; padding: 3px 0; list-style: none; color: var(--text); }
details.fb-adm-sub > summary::-webkit-details-marker { display: none; }
details.fb-adm-sub > summary::before { content: '▸'; display: inline-block; margin-right: 6px; transition: transform .15s; }
details.fb-adm-sub[open] > summary::before { transform: rotate(90deg); }
details.fb-adm-sub .fb-grid { margin: 8px 0; }

/* Einrichten — Store-Buttons gestapelt (brechen die Lager-Breite nicht) + Elektronik + Zoom/Trash-Farben */
.fur-store-btns { flex-direction: column; }
.fur-store-btn { width: 100%; }
/* … ABER als eigene Zeile ÜBER dem Editor (Grundriss + Lager) liegen die Shop-Buttons nebeneinander,
   volle Breite (Nutzervorgabe 2026-07-22). */
.fur-store-btns-top { flex-direction: row; flex-wrap: wrap; margin-bottom: 12px; }
.fur-store-btns-top .fur-store-btn { width: auto; flex: 1 1 0; min-width: 140px; }
.fur-store-elektronik .fur-store-banner { background: linear-gradient(135deg, #24506e, #3f86b0); }
/* Zoom-Spalte (+/-) und Mülleimer je eine theme-passende Akzent-/Warnfarbe, klar vom Grundriss abgesetzt */
.fur-zoom { background: color-mix(in srgb, var(--accent, #5aa0ff) 20%, transparent); border: 1px solid color-mix(in srgb, var(--accent, #5aa0ff) 50%, transparent); border-radius: 9px; padding: 4px; }
.fur-zoom .mini { background: color-mix(in srgb, var(--accent, #5aa0ff) 30%, transparent); border-color: color-mix(in srgb, var(--accent, #5aa0ff) 55%, transparent); color: var(--text); }
.fur-trash { background: color-mix(in srgb, var(--danger, #d9534f) 20%, transparent); border-color: color-mix(in srgb, var(--danger, #d9534f) 55%, transparent); }
.fur-trash.hot { background: color-mix(in srgb, var(--danger, #d9534f) 45%, transparent); border-color: var(--danger, #d9534f); }

/* Einrichten — Wandbelag-Drag */
.fur-walldrag { cursor: grab; }
/* Auslastungs-Leiste der Schulden-Grenze (Banken) — mit Beschriftung statt nackter Balken. */
.bank-usebar { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 8px; margin: 6px 0 10px; }
.bank-usebar-lbl, .bank-usebar-val { font-size: 12px; color: var(--muted); white-space: nowrap; }
.bank-usebar-val { font-weight: 700; }

/* Herleitung der erlaubten Monatsrate (Banken, 2026-08-02): Rechenweg als Beleg — Beschriftung links,
   Betrag rechtsbündig auf gleicher Kante, damit sich die Zahlen untereinander lesen lassen. */
.bank-calc { border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; background: rgba(255,255,255,.03); }
.bank-calc h4 { margin: 0 0 10px; }
.bank-calc-step { margin: 14px 0 6px; font-weight: 600; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.bank-calc-step:first-of-type { margin-top: 4px; }
.bank-calc-no { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px;
  border-radius: 50%; background: var(--gold, #f5b301); color: #10151f; font-size: 12px; font-weight: 700; flex: 0 0 auto; }
.bank-calc-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
  padding: 3px 0; font-size: 14px; border-bottom: 1px dotted rgba(255,255,255,.08); }
.bank-calc-row.sum { border-bottom: none; border-top: 1px solid rgba(255,255,255,.22); margin-top: 2px; padding-top: 5px; }
.bank-calc-val { font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; }
.bank-calc p.muted-note { margin: 6px 0 0; }

/* Admin-Abzeichen im Spaltenkopf „Nachfrage" (Streckenliste): Countdown bis zum nächsten
   Nachfrage-Tagesreset. Grün = der letzte Reset liegt keine 24 h zurück, Rot = überfällig. */
.demand-reset { display: inline-flex; align-items: center; gap: 4px; margin-left: 6px; padding: 1px 7px;
  border-radius: 999px; font-size: 11px; font-weight: 700; font-variant-numeric: tabular-nums;
  white-space: nowrap; border: 1px solid transparent; cursor: help; }
.demand-reset.ok { color: #35c47a; border-color: color-mix(in srgb, #35c47a 55%, transparent); background: color-mix(in srgb, #35c47a 16%, transparent); }
.demand-reset.bad { color: #ff6b6b; border-color: color-mix(in srgb, #ff6b6b 55%, transparent); background: color-mix(in srgb, #ff6b6b 16%, transparent); }

/* Reisedialog (Heimreise planen): Möglichkeiten als anklickbare Karten mit Abschnitts-Zeitleiste.
   Farben/Radien wie die übrigen Auswahlkarten; die empfohlene Möglichkeit ist golden hervorgehoben. */
.jrn-opts { display: grid; gap: 10px; margin: 10px 0 4px; }
.jrn-opt { display: block; width: 100%; text-align: left; cursor: pointer; color: var(--text);
  background: var(--card, rgba(255,255,255,.03)); border: 1px solid var(--border); border-radius: 12px;
  padding: 10px 12px; transition: border-color .15s, transform .08s, background .15s; }
.jrn-opt:hover:not(:disabled) { border-color: var(--gold); background: rgba(245,179,1,.06); }
.jrn-opt:active:not(:disabled) { transform: translateY(1px); }
.jrn-opt.jrn-best { border-color: var(--gold); box-shadow: inset 0 0 0 1px rgba(245,179,1,.25); }
.jrn-opt.jrn-off { opacity: .55; cursor: not-allowed; }
.jrn-opt-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.jrn-opt-title { font-weight: 600; font-size: 1.02rem; }
.jrn-badge { font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; color: #04122b;
  background: var(--gold); border-radius: 999px; padding: 2px 8px; }
.jrn-opt-kpi { display: flex; gap: 14px; flex-wrap: wrap; font-size: .88rem; color: var(--muted); margin-bottom: 8px; }
.jrn-opt-kpi strong { color: var(--text); }
.jrn-legs { display: grid; gap: 4px; border-top: 1px dashed var(--border); padding-top: 8px; }
.jrn-leg { display: grid; grid-template-columns: 22px 1fr auto; align-items: baseline; gap: 8px; font-size: .88rem; }
.jrn-leg-ic { font-size: 1rem; line-height: 1; }
.jrn-leg-main { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.jrn-leg-main strong { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jrn-leg-main .muted-note { font-size: .78rem; }
.jrn-leg-cost { font-variant-numeric: tabular-nums; color: var(--muted); }
.jrn-ac { font-size: .72rem; color: var(--muted); border: 1px solid var(--border); border-radius: 4px; padding: 0 4px; margin-left: 4px; }
.jrn-warn { margin-top: 8px; font-size: .82rem; color: #e0444e; }
@media (max-width: 680px) { .jrn-opt-kpi { gap: 10px; font-size: .82rem; } }
.jrn-leg.jrn-wait { opacity: .82; }
.jrn-note { margin-top: 8px; font-size: .8rem; color: var(--muted); }
.jrn-fine { font-size: .78rem; line-height: 1.45; }

/* Wartungsplanung („bei nächster Gelegenheit") — Auswahl der Arbeiten + Ort. */
tr.ac-defect > td { background: rgba(224,68,78,.10); }
tr.ac-defect > td:first-child { box-shadow: inset 3px 0 0 #e0444e; }
.ms-place { display: flex; gap: 16px; flex-wrap: wrap; margin: 6px 0 10px; font-size: .9rem; }
.ms-place label { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.ms-list { display: grid; gap: 8px; }
.ms-item { border: 1px solid var(--border); border-radius: 10px; padding: 8px 10px; background: var(--card, rgba(255,255,255,.03)); }
.ms-item.ms-on { border-color: #5fd29a; box-shadow: inset 0 0 0 1px rgba(95,210,154,.25); }
.ms-item-head { display: grid; grid-template-columns: 22px 1fr auto; gap: 8px; align-items: baseline; }
.ms-ic { font-size: 1rem; }
.ms-title { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.ms-cost { font-variant-numeric: tabular-nums; font-weight: 600; }
.ms-part { margin: 6px 0 0 30px; font-size: .82rem; color: var(--muted); }
.ms-actions { margin-top: 8px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.cond-defect { display: flex; flex-direction: column; gap: 2px; margin-top: 4px; font-size: .78rem; color: #e0444e; cursor: pointer; }
.cond-defect:hover { text-decoration: underline; }

/* Autopilot-Übersicht: planmäßige Ankunft + ETA neben dem Ziel; Verspätung hervorgehoben. */
/* Die Ankunftszeile steht in derselben Zeile wie Kennung und Strecke — und jetzt auch in derselben
   Schriftgröße (vorher 0,78 rem, was die Zeile optisch zerriss). */
/* Die Ankunftszeile steht in derselben Zeile wie Kennung und Strecke — und in derselben Schrift: gleiche
   Größe UND gleiches Gewicht (vorher 0,78 rem in Normalschrift, was die Zeile optisch zerriss). Gilt für
   die Autopilot-Übersicht wie für den Cockpit-Kasten, beide nutzen dieselbe Klasse. */
.ap-arr { font-size: inherit; font-weight: inherit; color: var(--muted); white-space: nowrap; margin-left: 10px; }
.ap-arr strong { color: var(--text); font-variant-numeric: tabular-nums; }
.ap-arr-delay { color: #e0444e; font-weight: 600; }
.ap-arr-early { color: var(--ok); font-weight: 600; }
.ap-arr-ontime { color: var(--muted); font-weight: 600; }
@media (max-width: 680px) { .ap-arr { display: block; margin: 4px 0 0; white-space: normal; } }

/* Anklickbare Wartungs-Hinweise (Zustandsbericht + Flugzeug-Detailseite): Der Zeiger muss zeigen, dass
   dahinter die Wartungsplanung steckt — sonst sieht es nach einem reinen Statusabzeichen aus. */
.ac-sched-open { cursor: pointer; }
.ac-sched-open:hover { filter: brightness(1.15); text-decoration: underline; }

/* ===== KONTOAUSZÜGE (Bankkonto unten + Popup je Anlagekonto) ======================================== */
.stmt-card { margin-top: 18px; }
/* Aufklapp-Pfeil wie bei „Wiederkehrende Ausgaben": der native Marker des Browsers, kein eigener. */
.stmt-card > summary { cursor: pointer; font-weight: 600; }
.stmt-card > summary .muted-note { font-weight: 400; font-size: 12px; margin-left: 10px; }
.stmt-box { margin-top: 12px; }
.stmt-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 10px; }
.stmt-bar .fin-range { flex: 0 0 auto; }
.stmt-q { flex: 1 1 200px; min-width: 140px; padding: 6px 10px; border-radius: 8px; border: 1px solid var(--border); background: var(--navy-900); color: var(--text); font-size: 13px; }
.stmt-cat { padding: 6px 8px; border-radius: 8px; border: 1px solid var(--border); background: var(--navy-900); color: var(--text); font-size: 13px; }
.stmt-list { border-top: 1px solid var(--border); }
/* Vier Spalten: Datum · Buchung · Betrag · Stand danach. Die Buchungsspalte trägt den Umbruch. */
.stmt-head-row, .stmt-row { display: grid; grid-template-columns: 76px minmax(0, 1fr) 110px 110px; gap: 8px; align-items: baseline; padding: 6px 2px; }
.stmt-head-row { font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: var(--muted); border-bottom: 1px solid var(--border); }
.stmt-head-row span:nth-child(3), .stmt-head-row span:nth-child(4) { text-align: right; }
.stmt-row { border-bottom: 1px solid rgba(255,255,255,0.04); font-size: 13px; }
.stmt-row:hover { background: rgba(255,255,255,0.03); }
.stmt-date { color: var(--muted); font-variant-numeric: tabular-nums; }
.stmt-desc { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.stmt-desc span { color: var(--muted); font-size: 12px; overflow-wrap: anywhere; }
.stmt-amt, .stmt-bal { text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; }
.stmt-bal { color: var(--muted); font-weight: 400; }
.stmt-month { margin-top: 10px; }
.stmt-month-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; align-items: baseline;
  padding: 6px 8px; border-radius: 8px; background: var(--navy-700); font-weight: 600; font-size: 13px; }
.stmt-month-sums { font-size: 12px; font-weight: 400; display: flex; gap: 8px; }
.stmt-total { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; margin-top: 12px; padding-top: 8px;
  border-top: 1px solid var(--border); font-size: 13px; color: var(--muted); }
.stmt-empty { padding: 14px 0; }
@media (max-width: 640px) {
  .stmt-head-row, .stmt-row { grid-template-columns: 60px minmax(0, 1fr) 92px; }
  .stmt-head-row span:nth-child(4), .stmt-bal { display: none; }   /* auf schmalen Geräten zählt der Betrag */
}

/* ===== IBAN + ÜBERWEISUNG / ÜBERTRAG ================================================================ */
.sv2-iban { font-size: 11px; letter-spacing: .5px; color: var(--muted); font-variant-numeric: tabular-nums; margin-top: 2px; }
/* Der Dialog ist so breit, wie sein Inhalt es braucht — Namen und IBANs bestimmen die Breite, nicht das
   Modal. Die Obergrenze verhindert, dass ein sehr langer Name die Karte über den Bildschirm zieht. */
.trf { display: flex; flex-direction: column; gap: 10px; width: fit-content; min-width: 320px; max-width: min(440px, 88vw); }
.trf-lbl { font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: var(--muted); margin-bottom: 4px; }
.trf-from, .trf-to, .trf-fields { background: var(--navy-900); border: 1px solid var(--border); border-radius: 12px; padding: 12px; }
.trf-from select, .trf-fields input { width: 100%; padding: 8px 10px; border-radius: 8px; border: 1px solid var(--border);
  background: var(--navy-700); color: var(--text); font-size: 14px; }
.trf-iban { font-size: 11px; letter-spacing: .5px; color: var(--muted); font-variant-numeric: tabular-nums; margin-top: 6px; }
.trf-arrow { text-align: center; color: var(--gold); font-size: 20px; line-height: 1; }
.trf-modes { display: flex; gap: 6px; margin-bottom: 10px; flex-wrap: wrap; }
.trf-mode { padding: 6px 12px; border-radius: 999px; border: 1px solid var(--border); background: var(--navy-700);
  color: var(--muted); font-size: 13px; cursor: pointer; }
.trf-mode.active { background: var(--gold); border-color: var(--gold); color: #1b1b1b; font-weight: 600; }
.trf-list { display: flex; flex-direction: column; gap: 6px; max-height: 240px; overflow-y: auto; }
/* Der native Radio-Punkt entfällt (er saß als weißer Punkt über dem Namen); ausgewählt wird sichtbar
   über Rahmen und Hinterlegung. Für Tastatur und Screenreader bleibt das Eingabefeld erhalten. */
.trf-opt { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 10px;
  border: 1px solid var(--border); background: var(--navy-700); cursor: pointer; }
.trf-opt input[type="radio"] { position: absolute; opacity: 0; width: 0; height: 0; }
.trf-opt:has(input:focus-visible) { outline: 2px solid var(--gold); outline-offset: 2px; }
.trf-opt-avatar { width: 40px; height: 40px; flex: 0 0 40px; border-radius: 50%; overflow: hidden;
  background: var(--navy-900); display: flex; align-items: center; justify-content: center; font-size: 20px; }
.trf-opt-avatar svg { width: 100%; height: 100%; display: block; }
.trf-opt-ico { flex: 0 0 auto; font-size: 18px; }
.trf-opt:hover { border-color: var(--gold); }
.trf-opt:has(input:checked) { border-color: var(--gold); background: rgba(245,179,1,0.10); }
.trf-opt-main { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.trf-opt-main strong { font-size: 14px; overflow-wrap: anywhere; }
.trf-opt-bal { font-variant-numeric: tabular-nums; color: var(--muted); font-size: 13px; white-space: nowrap; }
.trf-amt-row { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.trf-amt-row input { font-size: 20px; font-weight: 700; font-variant-numeric: tabular-nums; }
.trf-amt-row span { font-size: 18px; color: var(--muted); }

/* Stellplatz: das Topdown-Bild IST der Griff zum Umparken (kein Text daneben). */
.pkw-space-car img { height: 34px; width: auto; max-width: 92px; object-fit: contain; display: block; pointer-events: none; }
.pkw-space-car { display: inline-flex; align-items: center; cursor: grab; touch-action: none; }
.pkw-space-car:active { cursor: grabbing; }

/* Der Grundriss-Editor: Ein Druck NEBEN das SVG (in den Rand des Rahmens) landete auf dem Container und
   startete dort die native Textauswahl — beim Ziehen scrollte dadurch die ganze Seite mit. Der Container
   nimmt deshalb weder Auswahl noch Zeigergesten entgegen. */
.home-canvas { user-select: none; -webkit-user-select: none; touch-action: none; }
.home-canvas img, .home-canvas svg { -webkit-user-drag: none; }

/* Auf-/zuklappbare Kästen (Meine Fahrzeuge/Flugzeuge, Stellplätze, Abstellplätze) — Pfeil und
   Beschriftung wie bei „Wiederkehrende Ausgaben". */
.fold-card > summary { cursor: pointer; font-weight: 600; }
/* Flugdetails: verschachtelte Karten in einem Klapp-Kasten flach zeichnen (kein Karte-in-Karte). */
.fold-card > .card, .fold-card > .create-grid > .card { border: none; box-shadow: none; margin: 0; padding: 0; background: transparent; }
.fold-card > .create-grid { margin: 0; }
.fold-card > .card:only-of-type > h3:first-child { display: none; }
.fold-card > summary > .fin-head { font-size: 15px; }

/* Gebrauchtwagenmarkt: Karten wie im Autohaus, plus Gebotsliste beim eigenen Angebot. */
.pkw-mkt-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.pkw-mkt-card h4 { margin: 6px 0 2px; font-size: 16px; }
.pkw-mkt-top { height: 96px; display: flex; align-items: center; justify-content: center; background: var(--navy-900); border-radius: 10px; }
.pkw-mkt-top img { max-height: 88px; max-width: 100%; object-fit: contain; }
.pkw-mkt-ico { font-size: 40px; }
.pkw-mkt-price { font-size: 20px; margin-top: 6px; }
.mkt-vs { display: block; font-size: 12px; }
.pkw-mkt-offers { margin-top: 8px; border-top: 1px solid var(--border); padding-top: 8px; }
.mkt-offer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding: 4px 0; font-size: 13px; }
.mkt-bid, .mkt-newprice { width: 130px; padding: 5px 8px; border-radius: 8px; border: 1px solid var(--border); background: var(--navy-900); color: var(--text); }

/* Anreisekosten unter der Streckenwahl. */
.anreise-note { margin: 6px 0 0; font-size: 13px; padding: 6px 10px; border-radius: 8px;
  background: var(--navy-900); border: 1px solid var(--border); }

/* Folgen eines Ereignisses: jede Wirkung auf einer eigenen Zeile. */
.ev-cons { display: flex; flex-direction: column; gap: 2px; }

/* „So entstand die Flugnote": Alle Zeilen tragen dieselbe Schriftgröße; die Crew-Momente fügen sich als
   Unterabschnitt ein, statt mit eigener Farbe und Größe aus dem Kasten zu fallen. */
.sp-crew { border-top: 1px solid var(--border); padding-top: 8px; }
.sp-crew-h { font-size: 13px; font-weight: 600; color: var(--muted); margin-bottom: 4px; }
.sp-crew-line { display: flex; gap: 8px; align-items: baseline; font-size: 13px; padding: 3px 0; color: var(--text); }
.sp-crew-line strong { font-weight: 600; }
.sp-crew-good strong { color: var(--ok); }
.sp-crew-bad strong { color: var(--danger); }
.sp-crew-neu strong { color: var(--text); }
.sp-landing-detail, .sp-list { font-size: 13px; }

/* Admin-Testknöpfe (Sim-Injektion, Treibstoff, Zuladung). */
.admin-inject-in { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted); }
.admin-inject-in input { width: 90px; padding: 5px 8px; border-radius: 8px; border: 1px solid var(--border); background: var(--navy-900); color: var(--text); }

/* Sichtbare Fehlernotiz auf der Aktiver-Flug-Karte — macht den bislang unsichtbaren Aufbaufehler meldbar. */
.ap-map-err { position: absolute; left: 8px; bottom: 8px; z-index: 800; max-width: 75%;
  background: rgba(120, 30, 30, .88); color: #ffd9d9; border: 1px solid #a55;
  border-radius: 8px; padding: 4px 8px; font-size: 11px; pointer-events: none; }

/* ===== Werkstatt-Logbuch-Popup: liniertes Protokoll im Nutzer-Theme ================================ */
/* Die Farben kommen aus den Theme-Variablen — die frühere feste Papier-Palette ignorierte die zehn
   GUI-Themes und stach in dunklen wie hellen Varianten gleichermaßen heraus. Die „Papier-Anmutung"
   entsteht jetzt über Linien und Struktur, nicht über eine eingebrannte Farbe. */
.wlog-tools { display: flex; gap: 8px; margin: 10px 0; }
.wlog-tools input[type="search"] { flex: 1; }
.wlog-book { background: var(--navy-700); color: var(--text); border-radius: 8px; border: 1px solid var(--border);
  box-shadow: inset 0 0 18px rgba(0, 0, 0, .18); padding: 10px 14px; max-height: 52vh; overflow-y: auto; }
.wlog-row { display: flex; gap: 12px; padding: 8px 2px;
  border-bottom: 1px dashed var(--border); }                       /* die „Linien" des Logbuchs */
.wlog-row:last-child { border-bottom: none; }
.wlog-when { flex: 0 0 92px; font-variant-numeric: tabular-nums; font-size: 12px; color: var(--muted); }
.wlog-when .wlog-icao { display: block; font-size: 11px; color: var(--muted); opacity: .8; }
.wlog-body { flex: 1; min-width: 0; }
.wlog-title { font-weight: 600; font-size: 13px; }
.wlog-detail { font-size: 12px; color: var(--silver); margin-top: 1px; }
.wlog-meta { font-size: 11px; margin-top: 2px; color: var(--muted); }
.wlog-empty { color: var(--muted) !important; }
.wlog-pager { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; }

/* Wartung & Umrüstung: Zustand und Logbuch nebeneinander (bricht auf schmalen Fenstern untereinander). */
.mx-toprow { display: grid; grid-template-columns: minmax(0, 2fr) minmax(240px, 1fr); gap: 16px; align-items: start; }
@media (max-width: 1100px) { .mx-toprow { grid-template-columns: 1fr; } }
.mx-toprow .card { margin-bottom: 0; }

/* Avatar-Nahaufnahme als Menüsymbol „Privates": klein, transparent, sauber vertikal zentriert. */
.nav-item .ico.ico-avatar svg { width: 23px; height: 23px; display: block; margin: 0 auto; border-radius: 4px; }

/* ===== Menüsymbole (Admin-ersetzbare GUI-Symbole, 2026-07-21) ===== */
/* Eigenes Symbolbild überall dort, wo sonst das Emoji stünde: exakt in Schriftgröße, sauber ausgerichtet. */
.ui-cico { width: 1.1em; height: 1.1em; object-fit: contain; display: inline-block; vertical-align: -0.15em; }
/* Individuelle Admin-Bilder duerfen groesser wirken als Emojis: die 20-px-Icon-Box bleibt (Zeilenabstand unveraendert), das Bild ragt zentriert darueber hinaus. */
.nav-item .ico .ui-cico, .flyout-item .ico .ui-cico { width: 33px; height: 33px; vertical-align: middle; }
.notif-bell-ico .ui-cico { width: 18px; height: 18px; vertical-align: middle; }
.ov-card-ico .ui-cico { width: 1em; height: 1em; }

/* Editor-Seite: Symbolkacheln mit Drop-Zone, rotem ✕ und Verwendungs-Aufklapper. */
.mico-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; margin-top: 8px; }
.mico { display: flex; flex-direction: column; align-items: center; text-align: center; }
.mico-img { position: relative; width: 68px; height: 68px; display: flex; align-items: center; justify-content: center;
  font-size: 36px; line-height: 1; border: 1px dashed var(--border); border-radius: 12px; cursor: pointer;
  background: rgba(127, 127, 127, 0.08); user-select: none; }
.mico-img img { width: 54px; height: 54px; object-fit: contain; pointer-events: none; }
.mico-img.drag { border-color: var(--gold); box-shadow: 0 0 0 2px var(--gold); }
.mico-img .mico-fb svg { width: 40px; height: 40px; }
.mico-x { position: absolute; right: -7px; bottom: -7px; width: 20px; height: 20px; border-radius: 50%;
  background: #c0392b; color: #fff; border: none; font-size: 11px; line-height: 1; cursor: pointer; padding: 0; }
.mico-x:hover { background: #e74c3c; }
.mico-lbl { font-size: 12px; margin-top: 6px; word-break: break-word; }
.mico-uses { font-size: 11px; margin-top: 2px; }
.mico-uses summary { cursor: pointer; color: var(--muted); }
.mico-uses ul { margin: 4px 0 0; padding-left: 16px; text-align: left; max-height: 140px; overflow: auto; }

/* Adminseite „Bilder splitten": Dropzone + Ergebnisraster (freigestellte Einzelobjekte). */
.split-drop { border: 2px dashed var(--border, #2a3550); border-radius: 12px; padding: 26px 16px; text-align: center;
  cursor: pointer; transition: border-color .15s, background .15s; background: rgba(255, 255, 255, 0.02); }
.split-drop:hover { border-color: var(--gold, #f5b301); }
.split-drop.drag { border-color: var(--gold, #f5b301); background: rgba(245, 179, 1, 0.08); }
.split-drop.busy { cursor: progress; opacity: 0.8; }
.split-drop p { margin: 4px 0; }
.split-drop-ico { font-size: 34px; line-height: 1; margin-bottom: 6px; }
.split-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; margin-top: 12px; }
.split-item { display: flex; flex-direction: column; align-items: center; gap: 6px;
  background: var(--navy-800); border: 1px solid var(--border, #2a3550); border-radius: 10px; padding: 8px; }
/* Schachbrett hinter dem Thumbnail macht die Freistellung (Transparenz) sichtbar. */
.split-thumb { width: 100%; height: 96px; display: flex; align-items: center; justify-content: center; border-radius: 8px;
  background-color: var(--navy-900);
  background-image: linear-gradient(45deg, #1b2740 25%, transparent 25%), linear-gradient(-45deg, #1b2740 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, #1b2740 75%), linear-gradient(-45deg, transparent 75%, #1b2740 75%);
  background-size: 14px 14px; background-position: 0 0, 0 7px, 7px -7px, -7px 0; }
.split-thumb img { max-width: 100%; max-height: 88px; object-fit: contain; }
.split-meta { font-size: 11px; color: var(--muted, #9fb0cc); }
.split-dl { text-decoration: none; }

/* Zuschnitt-Editor (Doppelklick): Overlay mit verschieb-/ziehbarem Rechteck. */
.icrop-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.55); z-index: 4000;
  display: flex; align-items: center; justify-content: center; }
.icrop-box { max-width: 520px; width: auto; }
.icrop-stage { position: relative; overflow: hidden; margin: 8px auto 0; background:
  repeating-conic-gradient(rgba(127,127,127,0.25) 0% 25%, transparent 0% 50%) 0 0 / 16px 16px; border-radius: 6px; }
.icrop-stage img { display: block; user-select: none; -webkit-user-drag: none; }
.icrop-rect { position: absolute; border: 2px solid var(--gold); box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.45); cursor: move; }
.icrop-h { position: absolute; width: 12px; height: 12px; background: var(--gold); border-radius: 50%; }
.icrop-nw { left: -7px; top: -7px; cursor: nwse-resize; }
.icrop-ne { right: -7px; top: -7px; cursor: nesw-resize; }
.icrop-sw { left: -7px; bottom: -7px; cursor: nesw-resize; }
.icrop-se { right: -7px; bottom: -7px; cursor: nwse-resize; }

/* Menüsymbole: Kategorien als zuklappbare Abschnitte + Aktien-Identicons in der Vorschau. */
.mico-sec > summary { cursor: pointer; font-weight: 600; font-size: 15px; padding: 2px 0; }
.mico-sec > summary::marker { color: var(--muted); }
.mico-sec[open] > summary { margin-bottom: 6px; }
.mico-fb .stock-ico, .mico-fb .stock-ico svg { width: 44px; height: 44px; display: block; }
.stock-ico img.ui-cico { width: 100%; height: 100%; object-fit: contain; border-radius: 20%; }
.lnf-item.selected { filter: drop-shadow(0 0 1px rgba(0,0,0,0.85)) drop-shadow(0 0 1px rgba(255,255,255,0.5)) drop-shadow(0 0 3px var(--gold)); }
.lnf-virtual { border-color: #8b5cf6; }
.lnf-virtual .lng-card-h { color: #b79bff; }

/* Menüsymbole größer (2026-07-21): auch Inline-SVG-Symbole (z. B. Cockpit-Instrumente) wachsen mit —
   die Icon-Box bleibt 20 px hoch, die Zeilenabstände der Menüpunkte ändern sich nicht. */
.nav-item .ico:not(.ico-avatar) svg, .flyout-item .ico svg { width: 22px; height: 22px; }

/* Überweisung: Empfänger-Suchfeld (statt „Anderer Pilot"-Knopf) + zweizeilige Empfänger-Optionen. */
.trf-search { flex: 1 1 160px; min-width: 150px; padding: 6px 12px; border-radius: 999px;
  border: 1px solid var(--border); background: var(--navy-700); color: var(--text); font-size: 13px; }
.trf-search::placeholder { color: var(--muted); }
.trf-search.active, .trf-search:focus { border-color: var(--gold); outline: none; }
.trf-opt-main { display: flex; flex-direction: column; min-width: 0; }
.trf-opt-main .trf-iban { font-size: 12px; }

/* Innenausbau Beta im Einrichten-Look (2026-07-22): Shops + Lager-Paletten, Drag-Geist, Grundriss-Canvas. */
.lnf-grid .home-canvas { min-height: 420px; }
/* Voller Arbeitsflächen-Kasten (Nutzerklärung 2026-07-22): Der Grundriss pannt FREI über die ganze
   Fläche — auch unter Mülleimer/Lineal — und wird dort nicht mehr abgeschnitten (die frühere schmale
   Seitenverhältnis-Box clippte ihn am Rand). Die Randbereiche zeigen ein dezentes Werkstatt-Raster,
   damit sie als Arbeitsfläche lesbar sind statt als „Loch". */
/* width:100% ist PFLICHT: .home-canvas ist ein Flex-Container, sein Kind bekäme sonst eine
   inhaltsbasierte (shrink-to-fit) Breite. Die viewBox-SVG (width/height 100%, height definit)
   fiele dann auf ihr INTRINSISCHES Seitenverhältnis zurück → jeder viewBox-Schreib des
   ResizeObservers (applyView) änderte die Box-Breite → neuer Resize → Rückkopplung: der Kasten
   kollabierte zum schmalen Streifen und „zoomte von selbst heraus" (gemeldet 2026-07-22). Mit
   fixer Breite (die .home-canvas aus der 1fr-Grid-Spalte hat) ist die SVG-Größe layout-bestimmt
   und die Schleife bricht. */
.lnf-grid .lng-gridwrap { width: 100%; height: min(62vh, 640px); min-height: 420px; background-color: #0b1220;
  background-image: linear-gradient(rgba(120,140,170,.08) 1px, transparent 1px), linear-gradient(90deg, rgba(120,140,170,.08) 1px, transparent 1px);
  background-size: 22px 22px; border-radius: 8px; }
.lnf-drag-ghost { position: fixed; width: 40px; height: 40px; object-fit: contain; pointer-events: none;
  z-index: 5000; opacity: 0.85; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.5)); }
.lnf-virtual h4 { color: #b79bff; }
.lnf-ph-thumb { font-size: 34px; display: flex; align-items: center; justify-content: center; height: 64px; }

/* Innenausbau Beta: Grundriss ohne Scrollbalken — Zoom/Pan laufen über die viewBox (2026-07-22). */
.lnf-grid .lng-gridwrap { overflow: hidden; }
.lnf-grid #lng-svgwrap { width: 100%; height: 100%; }
.lnf-grid #lng-svgwrap svg { width: 100%; height: 100%; }

/* Platzhalter-Chips (Lounge-Lager) ohne Bild. */
.lnf-chip-ph { font-size: 26px; line-height: 1; display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; }

/* Menüsymbole: etwas mehr Luft zwischen Symbol und Text (Icon-Box + zusätzlicher Rechtsabstand). */
.nav-item .ico { margin-right: 6px; }
.flyout-item .ico { margin-right: 6px; }

/* Übersichtskarten (Privates/Fliegen/Karriere/Airline/Hilfe/Verwaltung): SEHR großes Symbol und
   Untermenü-Name in EINER Zeile; Beschreibung darunter (2026-07-22). */
.ov-card-head { display: flex; align-items: center; gap: 16px; min-width: 0; }
.ov-card-head .ov-card-ico { font-size: 52px; line-height: 1; flex: 0 0 auto; }
.ov-card-head .ov-card-ico .ui-cico { width: 60px; height: 60px; vertical-align: middle; }
.ov-card-head .ov-card-ico svg { width: 56px; height: 56px; }
.ov-card-head .ov-card-title { font-size: 17px; }

/* Admin-Kontextmenü (Rechtsklick auf NPC-Angestellte) + editierbare Personalakte (2026-07-22) */
.staff-ctx { position: fixed; z-index: 4000; background: var(--navy-800); border: 1px solid var(--border); border-radius: 8px; box-shadow: 0 10px 30px rgba(0,0,0,.5); padding: 4px; }
.staff-ctx-item { display: block; width: 100%; text-align: left; background: none; border: 0; color: var(--text); padding: 8px 12px; border-radius: 6px; cursor: pointer; font: inherit; white-space: nowrap; }
.staff-ctx-item:hover { background: var(--gold); color: #1a1a1a; }
/* Spalten-Sortierung (Zustandsberichte + Flotten-Dashboard): klickbarer Kopf mit Sortierpfeil. */
.th-sort { cursor: pointer; user-select: none; white-space: nowrap; }
.th-sort-arrow { opacity: .38; margin-left: 2px; font-size: .82em; }
.th-sort:hover .th-sort-arrow { opacity: .9; }
.th-sort-arrow.active { opacity: 1; color: var(--gold); }
.th-filterable { cursor: pointer; }
/* Sortier-Indikator der Dashboard-Tabellen (makeSortable): neutral schon vor dem ersten Klick sichtbar. */
.sort-ind { font-size: .82em; opacity: .9; white-space: nowrap; }
.sort-ind-idle { opacity: .38; }
.an-table th:hover .sort-ind { opacity: .95; }
/* Drag-Scroll: gedrückt gehaltene linke Maustaste schiebt die Tabelle horizontal. */
/* Der Greif-Zeiger nur, WENN wirklich seitlich etwas zu schieben ist — sonst signalisiert er
   „hier kann man nicht markieren", obwohl man es kann. user-select bleibt erlaubt; gesperrt wird
   es erst waehrend eines tatsaechlichen Ziehens (.drag-scrolling). */
.table-scroll.drag-enabled { cursor: auto; }
.table-scroll.drag-scrolling { cursor: grabbing; user-select: none; }
/* Muster-Filter-Popup (baut auf .staff-ctx auf): Checkbox-Liste der vorkommenden Muster. */
.muster-filter-menu { min-width: 190px; max-height: 62vh; overflow-y: auto; }
.mfm-head { padding: 6px 12px 4px; font-size: .72rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--muted, #98a2b3); }
.mfm-sep { height: 1px; background: var(--border); margin: 4px 6px; }
.mfm-list { max-height: 44vh; overflow-y: auto; }
.mfm-item { display: flex; align-items: center; gap: 8px; }
.mfm-item input { margin: 0; flex: none; }
.mfm-item span { flex: 1; }
/* Aktionszeile der Filter-Popups (Alle/Keine/Übernehmen) + Trichter-Marker am gefilterten Spaltenkopf. */
.mfm-actions { display: flex; align-items: center; gap: 10px; padding: 6px 12px 8px; }
.mfm-actions .mini { margin-left: auto; }
.staff-th-filt { color: var(--gold); font-size: 11px; }
.staff-filter-menu .mfm-item { padding: 3px 12px; cursor: pointer; }
.staff-filter-menu .mfm-item:hover { background: color-mix(in srgb, var(--gold) 12%, transparent); }
.staff-edit-avgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px 14px; }
.staff-edit-avdim { display: flex; flex-direction: column; gap: 2px; font-size: .85em; }
.staff-edit-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 6px 14px; }
.staff-edit-stats label { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.staff-edit-stats input { width: 76px; }
.staff-edit-cvrow { display: grid; grid-template-columns: 90px 90px 1fr 1fr auto; gap: 6px; margin: 4px 0; }
.staff-wb-idcol label, .staff-wb-facts label { display: flex; flex-direction: column; gap: 2px; font-size: .85em; margin: 2px 0; }

/* Flotten-Dashboard: Einsatzplan-Freigabe-Checkbox (theme-basiert via accent-color) */
.ep-rel-cell { text-align: center; }
.ep-rel-check input[type="checkbox"] { width: 17px; height: 17px; accent-color: var(--gold); cursor: pointer; }
.ep-rel-check input[type="checkbox"]:disabled { cursor: default; opacity: .55; }

/* Pkw-Spitzname (auto-speicherndes Textfeld über dem Fahrzeugbild) + Fuhrpark-Überschrift */
/* Spitzname-Feld ZENTRIERT über dem Vorschaubild: bewusst block + text-align:center statt Flex — das ist
   robust gegen jede Flex-Eigenheit der Elternspalte (Nutzer-Reklamation: Feld war linksbündig). */
.pkw-nickname { display: block; text-align: center; margin: 0 auto 8px; width: 100%; }
.pkw-nickname input { display: inline-block; vertical-align: middle; width: 220px; max-width: 100%; margin: 0 auto; background: var(--navy-800); border: 1px solid var(--border); border-radius: 8px; color: var(--text); padding: 7px 10px; font: inherit; font-weight: 600; text-align: center; }
.pkw-nickname input:focus { outline: none; border-color: var(--gold); }
.pkw-nickname input:disabled { opacity: .8; cursor: not-allowed; }
.pkw-nickname input::placeholder { font-weight: 400; opacity: .6; }
.pkw-nick-lock { font-size: 14px; opacity: .7; vertical-align: middle; margin-left: 6px; }
.pkw-sell-menu { position: absolute; top: 100%; left: 50%; transform: translateX(-50%); padding-top: 8px; display: none; align-items: center; gap: 10px; white-space: nowrap; z-index: 60; }/* Die Optionen erscheinen NUR nach Klick auf das €-Symbol (nicht mehr beim Hover) — Nutzervorgabe 2026-07-24. */

.pkw-sell-corner.open .pkw-sell-menu { display: flex; }
/* Leicht durchsichtiger Hintergrund je Option, damit sie sich intelligent vom Untergrund abhebt. */
.pkw-sell-opt { background: color-mix(in srgb, var(--navy-900) 72%, transparent); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); border: 1px solid var(--border); color: var(--text); font: inherit; font-weight: 600; cursor: pointer; padding: 5px 11px; border-radius: 8px; box-shadow: 0 2px 9px rgba(0,0,0,.45); }
.pkw-sell-opt:hover { color: var(--gold-ink); background: var(--gold); border-color: var(--gold); }
.pkw-sell-sep { width: 1px; align-self: stretch; min-height: 16px; background: var(--border); opacity: .5; }
.fleet-tile-nick { font-weight: 700; color: var(--gold); text-align: center; margin-bottom: 2px; }

/* Globale Suche unten in der Seitenleiste (unter den Benachrichtigungen): Ergebnisse klappen nach OBEN. */
.cmd-inline-bottom { margin: 6px 6px 8px; }
.cmd-inline-bottom .cmd-inline-results { top: auto; bottom: calc(100% + 4px); }

/* Einsatzplan-Karte: laufende NPC-Flüge live — Flugzeugsymbol mit angehängter Plan-Nummer */
.ep-live-marker { background: none; border: none; }
.ep-live-fl { position: relative; width: 36px; height: 36px; }
.ep-live-fl img { width: 36px; height: 36px; object-fit: contain; filter: drop-shadow(0 1px 3px rgba(0,0,0,.55)); }
.ep-num-live { position: absolute; top: -10px; right: -12px; width: 20px; height: 20px; font-size: 11px; box-shadow: 0 1px 4px rgba(0,0,0,.5); }
/* Crew-Avatar-Marker (#86): Crew noch nicht an Bord → runder Avatar-Kopf statt Flugzeug. */
.ep-live-crew { position: relative; width: 36px; height: 36px; display: grid; place-items: center; }
.ep-live-crew-face { width: 30px; height: 30px; border-radius: 50%; overflow: hidden; border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.55); background: #0c2743; }

/* Spritztour: Zielwahl-Karte im Modal + Start-Knopf IM Kartenbereich (unten rechts, theme-basiert) */
.trip-map-wrap { position: relative; }
.trip-map-wrap #trip-map { height: 440px; border-radius: 10px; }
.trip-start-btn { position: absolute; right: 14px; bottom: 14px; z-index: 900; padding: 10px 16px;
  background: var(--gold); color: var(--gold-ink); border: none; border-radius: 999px; font-weight: 700;
  box-shadow: 0 4px 16px rgba(0,0,0,.45); }
.trip-start-btn:hover { background: var(--gold-dim); }
.trip-start-btn:disabled { opacity: .6; }
/* Gas-/Bremspedal-Tempowahl (unten rechts, über „Spritztour starten"). */
.trip-speed { position: absolute; right: 14px; bottom: 68px; z-index: 900; background: var(--map-ctl-bg); border: 1px solid var(--border); border-radius: 12px; padding: 7px 10px 9px; text-align: center; box-shadow: 0 4px 14px rgba(0,0,0,.4); }
.trip-speed-head { font-size: 12px; color: var(--text); margin-bottom: 5px; }
.trip-speed-head b { font-size: 17px; color: var(--gold); }
.trip-pedals { display: flex; gap: 8px; justify-content: center; }
.trip-pedal { width: 40px; height: 60px; background: transparent no-repeat center / contain; border: none; cursor: pointer; padding: 0; touch-action: none; transition: transform .08s; filter: drop-shadow(0 2px 3px rgba(0,0,0,.5)); }
.trip-pedal:active, .trip-pedal.pressed { transform: scale(0.9); }
/* Pedale sind reine Bild-Buttons: der globale Button-Hover/Fokus (blauer Kasten/Outline) darf sie nicht ueberdecken. */
.trip-pedal:hover, .trip-pedal:focus, .trip-pedal:focus-visible, .trip-pedal:active { background-color: transparent !important; outline: none !important; box-shadow: none !important; border: none !important; }
.trip-info { margin-top: 4px; }
/* Routen-Modi (oben rechts, halbtransparent, ins Karten-UI passend). */
.trip-modes { position: absolute; top: 12px; right: 12px; z-index: 900; display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; max-width: calc(100% - 24px); }
.trip-mode { background: var(--map-ctl-bg); border: 1px solid var(--border); border-radius: 999px; color: var(--text); font-size: 12px; font-weight: 600; padding: 6px 11px; cursor: pointer; opacity: 0.82; }
.trip-mode:hover { opacity: 1; border-color: var(--gold); }
.trip-mode.on { background: var(--gold); color: var(--gold-ink); border-color: var(--gold); opacity: 1; }
/* Durchsichtiger Route-Hover-Tooltip — nur Text (mit Schatten), kein Hintergrund. */
.trip-hovertip { position: fixed; z-index: 4000; pointer-events: none; background: transparent; color: #fff; font-size: 12px; line-height: 1.35; font-weight: 600; text-shadow: 0 1px 3px rgba(0,0,0,.95), 0 0 2px rgba(0,0,0,.9); display: none; }
/* Zwischenziel-Marker (Rechtsklick). */
.trip-via-icon { background: transparent; border: none; }
.trip-via-dot { width: 22px; height: 22px; border-radius: 50%; background: var(--gold); color: var(--gold-ink); border: 2px solid #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 12px; box-shadow: 0 1px 4px rgba(0,0,0,.5); cursor: pointer; }
/* Kopf des Spritztour-Dialogs: kleines Pkw-Vorschaubild statt Sonnensymbol (fügt sich ins Popup ein) */
.trip-head { align-items: center; }

/* ===== Bildbasiertes Spritztour-Cockpit (übernommen aus dem Referenz-Sportwagen-Dashboard v13) =====
   Fotorealistisches Instrumentengehäuse als gestapelte PNG-Ebenen (shadow → cockpit → Digital-Layer →
   mask → glass → light); Nadeln/Ticks per JS gebaut, Skalen exakt aufs Artwork kalibriert. Gespeist aus
   dem LIVE-Zustand der Spritztour (tatsächliches Abschnittstempo, Getriebe, Live-Tank). */
.gtc-stage { flex: 1 1 auto; min-width: 0; max-width: 760px; }
/* Das Dashboard-Artwork ist IMMER dunkel — daher feste helle Standard-Textfarbe, unabhaengig vom Light/Dark-
   Theme (sonst wurde die erbende Beschriftung im Light-Mode dunkel und unlesbar; Nutzervorgabe 2026-07-24). */
.gtc { position: relative; width: 100%; aspect-ratio: 3/2; overflow: hidden; background: #050607; border-radius: 12px; color: #e9eef3; }
.gtc-layer { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; pointer-events: none; }
.gtc-shadow { z-index: 1; opacity: .28; mix-blend-mode: multiply; }
.gtc-housing { z-index: 2; }
.gtc-mask { z-index: 7; opacity: .28; mix-blend-mode: multiply; }
/* Glas-Ebene etwas tiefer legen, damit sie formrichtig auf dem Instrumentengehäuse sitzt (Nutzervorgabe
   2026-07-24 — Betrag ggf. nachjustieren). */
.gtc-glass { z-index: 8; opacity: .18; mix-blend-mode: screen; transform: translateY(1.4%); }
.gtc-light { z-index: 9; opacity: .06; mix-blend-mode: screen; }
.gtc-dial { position: absolute; z-index: 4; width: 21.8%; aspect-ratio: 1; border-radius: 50%; top: 31.7%; overflow: hidden; }
.gtc-speed-dial { left: 11.55%; } .gtc-rpm-dial { right: 11.55%; }
.gtc-ticks { position: absolute; inset: 0; border-radius: 50%; overflow: hidden; }
.gtc-tick-ray { position: absolute; inset: 0; transform-origin: 50% 50%; }
.gtc-tick-mark { position: absolute; left: 49.55%; top: 8.5%; width: .9%; height: 4.5%; border-radius: 99px; background: #697580; }
.gtc-tick-ray.major .gtc-tick-mark { top: 8%; height: 6.5%; width: 1.25%; background: #f5f8fb; }
.gtc-tick-ray.danger .gtc-tick-mark { background: #ff493e; box-shadow: 0 0 4px rgba(255,73,62,.6); }
.gtc-tick-label { position: absolute; transform: translate(-50%,-50%); font-size: clamp(7px,.78vw,11px); line-height: 1; font-weight: 700; color: #e9eef3; }
.gtc-tick-label.danger { color: #ff493e; }
.gtc-needle { position: absolute; z-index: 3; left: 49.25%; top: 19%; width: 1.5%; height: 32.5%; background: linear-gradient(#ff766d,#be150c); border-radius: 999px; transform-origin: 50% 95%; filter: drop-shadow(0 0 4px rgba(255,73,62,.8)); }
.gtc-hub { position: absolute; z-index: 4; left: 44.5%; top: 44.5%; width: 11%; aspect-ratio: 1; border-radius: 50%; background: #080a0d; border: 2px solid #56616c; }
.gtc-digital { position: absolute; z-index: 2; left: 19%; right: 19%; top: 61%; text-align: center; }
.gtc-digital strong { display: block; font-size: clamp(13px,1.5vw,22px); line-height: .9; color: #f5f7fa; }
.gtc-digital span { font-size: clamp(6px,.6vw,9px); color: #b5bec8; }
.gtc-center { position: absolute; z-index: 4; left: 34.05%; top: 29.4%; width: 31.9%; height: 36.2%; padding: 1.4%; display: grid; grid-template-rows: 1.95fr .62fr auto; gap: 1.2%; overflow: hidden; }
.gtc-nav-area { position: relative; min-height: 0; }
.gtc-nav-map { position: absolute; inset: 0; overflow: hidden; border: 1px solid rgba(63,120,165,.3); border-radius: 6px; background: #02070b; box-shadow: inset 0 0 18px rgba(0,0,0,.78), inset 0 0 3px rgba(79,162,225,.2); }
.gtc-nav-map canvas { display: block; width: 100%; height: 100%; background: transparent; }
.gtc-nav-clock { position: absolute; right: 3%; top: 2.8%; z-index: 6; color: rgba(226,239,247,.88); font-family: "Arial Narrow", Arial, sans-serif; font-size: clamp(9px,.92vw,14px); font-weight: 600; letter-spacing: .08em; text-shadow: 0 0 5px rgba(82,167,227,.26); }
/* Navi-HUD (Turn-by-turn-Kasten + Tempolimit-Schild, oben links im Navi-Display; Nutzervorgabe 2026-07-24).
   pointer-events:auto, weil der Dashboard-Overlay selbst pointer-events:none hat — sonst waeren Kasten/Schild
   nicht klickbar. Der GANZE Kasten (und das Schild) klappt per Klick nach links ein/aus. Etwas kleiner gehalten. */
.gtc-nav-hud { position: absolute; top: 5%; left: 4%; z-index: 7; display: flex; flex-direction: column; gap: 4px; align-items: flex-start; max-width: 66%; pointer-events: auto; }
.gtc-nav-box { display: flex; align-items: center; gap: 4px; background: rgba(8,16,26,.82); border: 1px solid rgba(120,150,180,.38); border-radius: 7px; padding: 3px 6px 3px 3px; -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); max-width: 100%; cursor: pointer; }
.gtc-nav-box.collapsed { padding: 2px 3px; }
.nav-box-arrow { color: #7fd0ff; font-size: clamp(13px,1.35vw,19px); line-height: 1; }
.nav-box-body { min-width: 0; }
.nav-box-head { font-size: clamp(5px,.52vw,8px); letter-spacing: .06em; color: #8fa6bd; }
.nav-box-dist { font-size: clamp(9px,1.02vw,14px); font-weight: 800; color: #eaf3ff; line-height: 1.05; }
.nav-box-instr { font-size: clamp(6px,.62vw,10px); color: #cfe0f2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 22ch; }
/* Verkehrsschilder: rundes Tempolimit (weiß, roter Rand) bzw. „Ende aller Streckenverbote" (graue Diagonalen). */
.gtc-nav-sign { cursor: pointer; }
.tsign { width: clamp(22px,2.5vw,36px); aspect-ratio: 1; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 1px 5px rgba(0,0,0,.55); }
.tsign-limit { background: #fff; border: clamp(2px,.32vw,5px) solid #d1182b; }
.tsign-limit span { color: #111; font-weight: 800; font-size: clamp(9px,1.1vw,16px); font-family: Arial, "Helvetica Neue", sans-serif; }
.tsign-end { background: repeating-linear-gradient(135deg, #3c4048 0 2px, #e8ebef 2px 8px); border: 2px solid #b9c0c9; }
/* Spritztour-Ende-Popup: kompakte Zusammenfassung + Kostenliste (themed über showModal). */
.trip-sum-facts { display: flex; gap: 18px; flex-wrap: wrap; color: var(--muted); font-size: 14px; margin-top: 2px; }
.trip-sum-facts b { color: var(--text); }
.trip-sum-list { display: flex; flex-direction: column; gap: 2px; margin-top: 4px; }
.trip-sum-row { display: flex; justify-content: space-between; gap: 12px; font-size: 13px; padding: 2px 0; border-bottom: 1px solid color-mix(in srgb, var(--border) 60%, transparent); }
.trip-sum-row span:last-child { white-space: nowrap; color: var(--tx-neg, #e0736b); font-variant-numeric: tabular-nums; }
.trip-sum-total { font-weight: 700; border-bottom: none; border-top: 2px solid var(--border); margin-top: 3px; padding-top: 5px; }
.trip-sum-total span:last-child { color: var(--text); }
/* Einsatzplan-Karte: Crew-Avatare durchsichtiger, damit Strecken/Karte darunter sichtbar bleiben (Nutzervorgabe
   2026-07-24). Beim Hover volle Deckkraft. */
#ep-map .ap-live-avatar { opacity: .68; transition: opacity .12s; }
#ep-map .ap-live-avatar:hover { opacity: 1; }
/* Reservemodus-Warnung im Spritztour-Dashboard (Nutzervorgabe 2026-07-24): „Tankstelle suchen" blinkt ~5× in
   den ersten Sekunden, dann ~1 min ruhig sichtbar, dann wieder — 65-s-Zyklus; die Tank-Anzeige pulst rot mit. */
/* Unten zentriert IM Navi-Display (Nutzervorgabe 2026-07-24). Liegt im .gtc-nav-map (position:absolute inset:0). */
.gtc-fuelwarn { position: absolute; left: 50%; bottom: 4%; transform: translateX(-50%); z-index: 8; color: #ff5b4a;
  font-weight: 800; font-size: clamp(7px, .8vw, 12px); letter-spacing: .04em; white-space: nowrap;
  background: rgba(8,16,26,.7); border-radius: 6px; padding: 1px 7px;
  text-shadow: 0 0 6px rgba(255,60,40,.6), 0 1px 2px rgba(0,0,0,.9); animation: gtcWarnCycle 65s infinite; pointer-events: none; }
.gtc-widget.reserve-blink .gtc-sym { animation: gtcSymCycle 65s infinite; }
/* Motor Start-Stop — Knopf sitzt auf der Blende unten rechts NEBEN dem Drehzahlmesser (das Instrumenten-
   Artwork füllt nur das mittlere ~2:1-Band der 3:2-Box; die Blende liegt daher bei ~74 % Boxhöhe, nicht am
   Boxrand). */
.gtc-engine-btn { position: absolute; right: 11.5%; top: 67%; z-index: 12; width: clamp(20px, 2.3vw, 32px); height: clamp(20px, 2.3vw, 32px);
  border-radius: 50%; border: 2px solid rgba(120,200,150,.55); background: radial-gradient(circle at 50% 38%, #16351f, #060c08);
  color: #7fe6a0; font-size: clamp(11px, 1.2vw, 16px); cursor: pointer; pointer-events: auto;
  /* Symbol exakt im Kreis zentrieren (das ⏻-Glyph hat unsymmetrische Metrik → Grid statt line-height). */
  display: grid; place-items: center; line-height: 0; padding: 0;
  box-shadow: 0 0 8px rgba(60,220,120,.35), inset 0 1px 2px rgba(255,255,255,.12); transition: color .2s, border-color .2s, box-shadow .2s; }
.gtc-engine-btn::before { content: "⏻"; display: block; line-height: 1; }
/* Dashboard-Beleuchtung (#84): Knopf links symmetrisch zum Motor-Knopf; Nacht = Gehäuse dunkler, Instrumente
   leuchten (Ziffern/Zeiger/Skalen heller + warmer/kalter Schein). Auto nach Uhrzeit oder Nutzer-Override. */
.gtc-light-btn { position: absolute; left: 11.5%; top: 67%; z-index: 12; width: clamp(20px, 2.3vw, 32px); height: clamp(20px, 2.3vw, 32px);
  border-radius: 50%; border: 2px solid rgba(185,195,120,.5); background: radial-gradient(circle at 50% 38%, #2a2a12, #0a0a06);
  color: #e6d98a; font-size: clamp(10px, 1.1vw, 15px); cursor: pointer; pointer-events: auto; display: grid; place-items: center; line-height: 0; padding: 0;
  box-shadow: 0 0 8px rgba(200,180,60,.25), inset 0 1px 2px rgba(255,255,255,.1); transition: box-shadow .2s, color .2s; }
.gtc-light-btn:hover { box-shadow: 0 0 12px rgba(200,180,60,.5); }
.gtc-housing, .gtc-mask { transition: filter .6s, opacity .6s; }
.gtc.dash-night .gtc-housing { filter: brightness(.55) saturate(.92); }
.gtc.dash-night .gtc-mask { opacity: .42; }
.gtc.dash-night .gtc-digital strong { color: #fff; text-shadow: 0 0 6px rgba(255,228,175,.55); }
.gtc.dash-night .gtc-tick-label { color: #f2f6fa; text-shadow: 0 0 3px rgba(255,232,185,.5); }
.gtc.dash-night .gtc-needle { filter: brightness(1.25) drop-shadow(0 0 5px rgba(255,90,70,.9)); }
.gtc.dash-night .gtc-widget-title strong, .gtc.dash-night .gtc-bottom strong { color: #eaf2ff; text-shadow: 0 0 5px rgba(150,200,255,.4); }
.gtc.dash-night .gtc-nav-map { filter: brightness(1.12) contrast(1.05); }
.gtc-engine-btn:hover { box-shadow: 0 0 12px rgba(60,220,120,.6), inset 0 1px 2px rgba(255,255,255,.15); }
.gtc-engine-btn.is-off { border-color: rgba(230,90,70,.6); color: #ff8a72; box-shadow: 0 0 8px rgba(230,70,50,.35), inset 0 1px 2px rgba(255,255,255,.1); }
/* km-Stand (Motor aus): klein, mittig auf der Blende unter dem LCD (roter Kasten der Nutzervorgabe ~74 % Höhe). */
.gtc-odo { position: absolute; left: 50%; top: 73.5%; transform: translate(-50%,-50%); z-index: 11; color: #b9d3c2;
  font-weight: 700; font-size: clamp(9px, 1.05vw, 14px); letter-spacing: .06em; white-space: nowrap;
  font-variant-numeric: tabular-nums; text-shadow: 0 0 6px rgba(90,180,120,.35), 0 1px 2px rgba(0,0,0,.9); }
/* Motor aus: Instrumente gedimmt, LCD-Inhalt aus (nur die Uhr bleibt), Ziffernanzeigen dunkel. */
.gtc.engine-off .gtc-dial { opacity: .34; filter: saturate(.4) brightness(.7); transition: opacity .5s, filter .5s; }
.gtc.engine-off .gtc-digital strong { color: #6b7a82; }
.gtc.engine-off .gtc-nav-area, .gtc.engine-off .gtc-status, .gtc.engine-off .gtc-bottom { visibility: hidden; }
.gtc.engine-off .gtc-nav-clock { visibility: visible; opacity: .85; }
.gtc.engine-off .gtc-nav-map { background: #04070a; }
@keyframes gtcWarnCycle { 0%{opacity:1} 1%{opacity:.1} 2%{opacity:1} 3%{opacity:.1} 4%{opacity:1} 5%{opacity:.1} 6%{opacity:1} 7%{opacity:.1} 8%{opacity:1} 100%{opacity:1} }
@keyframes gtcSymCycle { 0%,8%,100%{color:inherit;text-shadow:none} 1%,3%,5%,7%{color:#ff5b4a;text-shadow:0 0 7px rgba(255,60,40,.8)} 2%,4%,6%{color:inherit} }
.gtc-status { display: grid; grid-template-columns: 1fr 1fr; gap: 4%; align-self: stretch; }
.gtc-widget { min-width: 0; border-top: 1px solid rgba(135,151,165,.25); border-bottom: 1px solid rgba(135,151,165,.18); padding: 4% 3%; display: grid; align-content: center; gap: 7%; }
.gtc-widget-title { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 5%; min-width: 0; }
.gtc-widget-title small { display: block; color: #8694a1; font-size: clamp(6px,.61vw,9px); letter-spacing: .06em; }
.gtc-widget-title strong { font-size: clamp(7px,.74vw,11px); white-space: nowrap; }
.gtc-sym { font-size: clamp(10px,1.05vw,16px); color: #dbe3ea; }
.gtc-fuel-seg { display: grid; grid-template-columns: repeat(10,1fr); gap: 2.8%; }
.gtc-fuel-seg i { display: block; height: clamp(5px,.58vw,9px); transform: skewX(-17deg); background: #27313a; border: 1px solid #3d4852; }
.gtc-fuel-seg i.on { background: #38dd7e; border-color: transparent; }
.gtc-fuel-seg i.reserve { background: #ff493e; }
.gtc-scale { display: flex; justify-content: space-between; color: #83909c; font-size: clamp(6px,.55vw,8px); }
.gtc-temp-bar { position: relative; height: clamp(6px,.63vw,10px); border-radius: 999px; background: linear-gradient(90deg,#2d657c 0 22%,#29333c 22% 72%,#55261f 72%); overflow: hidden; }
.gtc-temp-bar > div { height: 100%; width: 0; background: linear-gradient(90deg,#55c7ff 0 18%,#e5edf2 42% 72%,#ff9f32 86%,#ff493e 100%); border-radius: inherit; }
.gtc-bottom { display: grid; grid-template-columns: 1fr 1.2fr .9fr .8fr; gap: 2%; align-items: end; margin-top: -1.5%; }
.gtc-bottom div { text-align: center; background: rgba(0,0,0,.32); border-radius: 4px; padding: 2.5% 2%; }
.gtc-bottom small { display: block; color: #8694a1; font-size: clamp(5px,.48vw,8px); letter-spacing: .06em; }
.gtc-bottom strong { display: block; font-size: clamp(7px,.72vw,11px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gtc-tach-gear { position: absolute; z-index: 18; left: 24.7%; top: 45%; width: 7.5%; transform: translate(-50%,-50%); text-align: center; pointer-events: none; }
.gtc-tach-gear .gm { color: #9fd5ff; font-size: clamp(5px,.5vw,8px); letter-spacing: .13em; line-height: 1; }
.gtc-tach-gear strong { display: block; font-size: clamp(12px,1.4vw,20px); line-height: .9; color: #f1f7fb; text-shadow: 0 0 8px rgba(80,171,236,.36); }
/* Pedale (Referenz-PNGs, 3D-getiltet per transform) neben dem Cockpit */
.gtc-pedals { flex: 0 0 auto; align-self: stretch; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; }
.gtc-pedal-stage { position: relative; width: 150px; aspect-ratio: 3/2; perspective: 1300px; }
.gtc-pedal-wrap { position: absolute; inset-block: 0; transform-style: preserve-3d; }
/* Pedale weiter auseinander (Nutzervorgabe 2026-07-24): klare Lücke zwischen Bremse (links) und Gas (rechts). */
.gtc-brake-wrap { left: 0; width: 42%; } .gtc-gas-wrap { left: 58%; width: 42%; }
.gtc-pedal { width: 100%; height: 100%; object-fit: contain; pointer-events: none; will-change: transform; }
.gtc-brake { transform-origin: 50% 4%; } .gtc-gas { transform-origin: 50% 3%; }
.gtc-pedal-hit { position: absolute; border: 0; background: transparent; cursor: pointer; }
/* Kein Hover-/Fokus-Kasten über den Pedalen (Nutzervorgabe 2026-07-24) — die Trefferfläche bleibt unsichtbar. */
.gtc-pedal-hit:hover, .gtc-pedal-hit:focus, .gtc-pedal-hit:active, .gtc-pedal-hit:focus-visible { background: transparent !important; box-shadow: none !important; outline: none !important; border: 0 !important; }
/* Jede Trefferfläche deckt ihr GANZES Pedalbild ab (Nutzervorgabe 2026-07-24) — kein Vertippen mehr auf den
   Rand; da die Bilderkästen (wraps) sich nicht überlappen, überlappen auch die Hitboxen nicht. */
.gtc-brake-hit, .gtc-gas-hit { inset: 0; width: 100%; height: 100%; }

/* ===== Cockpit-„Fahrersitz" (Spritztour aktiv, Nutzervorgabe 2026-07-24) =====
   Bei laufender Spritztour ersetzt diese Ansicht das gesamte Cockpit: die Live-Karte ist der Windschutz,
   das (transparente) Dashboard sitzt am unteren Kartenrand, darunter die großen Pedale. Aufbau wie das
   gelobte Admin-Pkw-Dashboard (.cdt-*), aber über die volle verfügbare Breite. */
.cp-drive { display: flex; flex-direction: column; align-items: center; }
.cp-drive-head { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; flex-wrap: wrap; }
.cp-drive-title { font-weight: 600; font-size: 16px; }
.cp-drive-title b { color: var(--gold); }
.cp-drive-head-btns { display: flex; gap: 8px; align-items: center; }
.cp-drive-flash { width: 100%; min-height: 1em; margin: 0 0 4px; }
/* Karte + Dashboard als EIN zentriertes „Windschutz"-Paket (Nutzervorgabe 2026-07-24): die Kartenbreite ist
   auf ein cockpitgerechtes Maß begrenzt und zentriert — so wirkt das Dashboard NICHT winzig in einer riesigen
   Karte, sondern beide sind aufeinander abgestimmt. */
.cpd-mapstage { position: relative; width: 100%; max-width: 1120px; margin: 0 auto; }
/* Kartenbox = Windschutzscheibe; feste Höhe (skaliert mit dem Fenster). */
.cpd-mapclip { position: relative; height: 60vh; min-height: 340px; border-radius: 12px; overflow: hidden; border: 1px solid var(--border); background: #0a0e14; }
/* 3D-Windschutz (Spritztour, #85): der Leaflet-Container wird per JS perspektivisch gekippt + fahrtrichtungs-
   oben gedreht (echte Kacheln). Hier nur die Rahmenbedingungen: GPU-Hint + Dunst-Verlauf zur „Ferne" oben. */
/* Kartenelement 8× so groß wie der Kasten (mittig) → die perspektivische Kippung wird aus ECHTEN Kacheln
   gefüllt (scharf), nicht durch Hochskalieren eines kastengroßen Bildes (das würde unscharf + ließe oben/an
   den Ecken schwarze Bereiche). Der Kasten (overflow:hidden) schneidet zu. */
.cpd-mapclip.windshield #map { will-change: transform; width: 800%; height: 800%; left: -350%; top: -350%; right: auto; bottom: auto; }
/* Zoom-/Attribution-Steuerung im Windschutz ausblenden — sie läge sonst mitgekippt/gedreht im Bild. */
.cpd-mapclip.windshield .leaflet-control-container { display: none; }
/* Blaue Route/Streckenlinien im Windschutz ausblenden (Nutzervorgabe 2026-07-24) — nur die echte Straße
   auf der Karte zählt. Der overlay-pane trägt die SVG-Polylinien; Marker (Wagen) bleiben im marker-pane. */
.cpd-mapclip.windshield .leaflet-overlay-pane { display: none; }
.cpd-mapclip.windshield::before { content: ""; position: absolute; inset: 0 0 42% 0; z-index: 500; pointer-events: none;
  background: linear-gradient(to bottom, rgba(9,14,22,.9) 0%, rgba(9,14,22,.45) 45%, rgba(9,14,22,0) 100%); }
.cpd-mapstage #map { position: absolute; inset: 0; height: 100%; margin: 0; }
/* Dashboard straddelt den unteren Kartenrand (obere Hälfte in der Karte, untere darunter), OHNE eigenen
   Hintergrund — nur das Dashboard-Artwork ist sichtbar (transparent, Nutzervorgabe). */
.cpd-cockpit-overlay { position: absolute; left: 0; right: 0; bottom: 0; width: 100%; transform: translateY(50%); z-index: 600; pointer-events: none; filter: drop-shadow(0 -8px 22px rgba(0,0,0,.55)); }
/* Dashboard-Größe nach der KARTENHÖHE begrenzen (Nutzervorgabe 2026-07-24): das Dashboard (3:2) darf höchstens
   ~40 % der Kartenhöhe hoch werden ⇒ Breite ≤ 0,6 × Kartenhöhe. So bleibt darüber immer ~60 % Karte (Straße
   voraus) sichtbar und das Dashboard blockiert die Karte NIE — auch im Vollbild. Auf schmalen Fenstern deckelt
   zusätzlich die Fensterbreite (min mit 82 %). --dash-w wird von Dashboard, Platzhalter UND Pedalen geteilt. */
/* Dashboard-Breite = fester Bruchteil der (begrenzten, zentrierten) Kartenbreite → stabile, cockpitgerechte
   Größe auf jedem Bildschirm; ~78 % der Karte, max. 780 px. */
.cp-drive { --dash-w: min(88%, 920px); }
.cpd-cockpit-overlay .gtc-stage { max-width: var(--dash-w); margin: 0 auto; }
.cpd-cockpit-overlay .gtc { background: transparent; border-radius: 0; }
/* Das Dashboard-Artwork füllt nur den OBEREN Teil seiner 3:2-Bildbox — der sichtbare Überhang unter dem
   Kartenrand ist daher viel kleiner als Breite/3. Deshalb nur eine schmale Fläche (an die Dashboard-Breite
   gekoppelt) reservieren und die Pedale per negativem Zug direkt an die sichtbare Dashboard-Unterkante holen;
   das Dashboard (z 600, pointer-events:none) überlappt dabei die Pedalarme (natürlicher Übergang). */
/* Reserviert die volle überhängende Dashboard-Hälfte (translateY 50 % eines 3:2-Dashboards ⇒ Höhe = Breite/3),
   damit die Pedale IMMER unter dem Dashboard liegen und nicht dahinter verschwinden (Nutzervorgabe 2026-07-24
   — im Vollbild/breiten Dashboard waren sie verdeckt). aspect 3.1/1 snuggt die Pedale knapp unter das Artwork. */
/* Platzhalter für die überhängende Dashboard-Hälfte — zwischen „zu klein (Pedale verdeckt)" und „zu groß
   (große Lücke)": reserviert die sichtbare Überhang-Höhe, sodass die Pedale direkt unter dem Dashboard sitzen
   (Nutzervorgabe 2026-07-24, Screenshot). Kleiner negativer Zug snuggt die Pedalarme ans Dashboard. */
.cpd-dash-spacer { width: var(--dash-w); margin: 0 auto; aspect-ratio: 4.4 / 1; pointer-events: none; }
.cpd-pedals { margin-top: -4%; position: relative; z-index: 500; }
/* Pedale skalieren mit der Dashboard-Breite (etwas schmaler als das Dashboard). */
.cp-drive .gtc-pedal-stage { width: calc(var(--dash-w) * 0.62); min-width: 240px; }

/* Admin → Inhalte → Pkw Dashboards: Live-Test (Katalog-Pkw, Karte, Dashboard, Pedale, Test-Werte) */
.cdt-row { display: flex; flex-wrap: wrap; gap: 14px; align-items: flex-end; }
.cdt-row label { color: var(--muted); font-size: 13px; }
.cdt-row select, .cdt-row input[type="number"] { min-width: 150px; }
.cdt-check { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; }
#cdt-specs { margin-top: 10px; }
.cdt-stage { display: flex; flex-direction: column; align-items: center; gap: 12px; margin: 14px 0; }
/* „Windschutzscheibe": Karte füllt die Bühne, das Dashboard sitzt UNTEN IN der Karte (Blick über das
   Dashboard in die Karte). Overlays (Suche, Kompass) bleiben fest über der (drehbaren) Karte. */
.cdt-mapstage { position: relative; width: 100%; max-width: 900px; overflow: visible; }
/* Die KARTENBOX bleibt gerade (rechteckig); nur der Karteninhalt (#cdt-map) wird im „Fahrt"-Modus gedreht
   und von der Box zugeschnitten — so kippt nicht mehr die ganze Box, sondern nur die geografische Ausrichtung. */
.cdt-mapclip { position: relative; height: 460px; border-radius: 12px; overflow: hidden; border: 1px solid var(--border); background: #0a0e14; }
.cdt-mapstage #cdt-map { position: absolute; inset: 0; height: 100%; }
/* Dashboard füllt die Kartenbreite und straddelt den unteren Kartenrand: obere Hälfte IN der Karte, untere
   darunter (translateY 50%). Ohne eigenen Hintergrund — nur das Dashboard-Artwork ist sichtbar. */
/* Dashboard tiefer: nur ~1/3 ragt noch über die Karte, 2/3 hängen darunter (Nutzervorgabe 2026-07-24). */
.cdt-cockpit-overlay { position: absolute; left: 0; right: 0; bottom: 0; width: 100%; max-width: none; transform: translateY(66%); z-index: 600; pointer-events: none; filter: drop-shadow(0 -8px 22px rgba(0,0,0,.55)); }
.cdt-cockpit-overlay .gtc { background: transparent; border-radius: 0; }
/* Reserviert die Fläche der unteren Dashboard-Hälfte (Dashboard-Seitenverhältnis 3:2 → halbe Höhe = Breite/3). */
.cdt-dash-spacer { width: 100%; max-width: 900px; aspect-ratio: 3 / 1.5; pointer-events: none; }
.cdt-mapstage .cdt-search { position: absolute; top: 8px; left: 52px; right: 8px; max-width: 300px; z-index: 500; }
.cdt-focus { position: absolute; top: 60px; left: 8px; z-index: 550; height: 26px; display: inline-flex; align-items: center; gap: 3px; padding: 0 8px; border-radius: 8px; border: 1px solid var(--border); background: var(--navy-700); color: var(--text); cursor: pointer; font-size: 12px; font-weight: 600; box-shadow: 0 1px 5px rgba(0,0,0,.4); }
.cdt-focus:hover { border-color: var(--gold); }
/* Pedale im Dashboard-Test doppelt so groß (Nutzervorgabe 2026-07-24). */
.cdt-stage .gtc-pedal-stage { width: 600px; }
.cdt-compass { position: absolute; top: 8px; left: 8px; z-index: 550; width: 36px; height: 48px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; border-radius: 8px; border: 1px solid var(--border); background: var(--navy-700); color: var(--text); cursor: pointer; padding: 0; box-shadow: 0 1px 5px rgba(0,0,0,.4); }
.cdt-compass.on { border-color: var(--gold); }
.cdt-compass-dial { position: relative; width: 24px; height: 24px; transition: transform .12s; }
.cdt-compass-n { position: absolute; top: -2px; left: 50%; transform: translateX(-50%); font-size: 8px; font-weight: 800; color: #ff6b6b; }
.cdt-compass-arrow { position: absolute; top: 4px; left: 50%; transform: translateX(-50%); font-size: 13px; line-height: 1; color: #ff6b6b; }
.cdt-compass-mode { font-size: 8px; color: var(--muted); }
.cdt-stage .gtc-pedals { align-self: center; }
.cdt-fuelbox { margin-top: 4px; }
.cdt-ft-wrap { display: flex; flex-direction: column; gap: 4px; }
.cdt-ft-h { color: var(--muted); font-size: 13px; }
.cdt-switch { display: inline-flex; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; width: fit-content; }
.cdt-ft { background: var(--navy-700); color: var(--muted); border: none; border-right: 1px solid var(--border); padding: 8px 14px; cursor: pointer; font-weight: 600; transition: background .12s, color .12s; }
.cdt-ft:last-child { border-right: none; }
.cdt-ft:hover { color: var(--text); }
.cdt-ft.on { background: var(--gold); color: #1a1200; }
.trip-head-img { width: 92px; flex: 0 0 92px; display: block; border-radius: 8px; overflow: hidden; }
.trip-head-img img, .trip-head-img svg { width: 100%; height: auto; display: block; box-shadow: none; border-radius: 8px; }
/* Suchfeld auf der Karte (theme-basiert, halbtransparentes Kartenpanel), oben links über den Kacheln */
.trip-search { position: absolute; top: 12px; left: 12px; z-index: 900; width: min(340px, calc(100% - 90px)); }
.trip-search-input { width: 100%; padding: 9px 12px; border-radius: 999px; border: 1px solid var(--border);
  background: var(--map-ctl-bg); color: var(--text); font-size: 13px; box-shadow: 0 4px 14px rgba(0,0,0,.35);
  backdrop-filter: blur(6px); }
.trip-search-input::placeholder { color: var(--muted); }
.trip-search-input:focus { outline: none; border-color: var(--gold); }
.trip-suggest { display: flex; flex-direction: column; gap: 2px; margin-top: 4px; max-height: 260px; overflow-y: auto;
  background: var(--map-ctl-bg); border: 1px solid var(--border); border-radius: 10px; padding: 4px;
  box-shadow: 0 6px 18px rgba(0,0,0,.4); backdrop-filter: blur(6px); }
.trip-suggest:empty { display: none; }
.trip-sug-item { text-align: left; padding: 7px 10px; border: none; background: transparent; color: var(--text);
  border-radius: 7px; font-size: 13px; cursor: pointer; }
.trip-sug-item:hover { background: color-mix(in srgb, var(--gold) 22%, transparent); }
/* Wagen-/Stopp-Marker auf der Spritztour-Karte */
.trip-car-icon { filter: drop-shadow(0 0 5px color-mix(in srgb, var(--gold) 75%, transparent)); }
.trip-car-emoji { font-size: 22px; line-height: 26px; text-align: center; text-shadow: 0 0 3px #000; }
.trip-stop-emoji { font-size: 15px; line-height: 20px; text-align: center; text-shadow: 0 0 3px #000; }
/* Dezenter Halo um den eigenen Wagen auf Spritztour — in der Lackfarbe des Pkw (--trip-halo, sonst Gold). */
.car-trip-halo { filter: drop-shadow(0 0 6px color-mix(in srgb, var(--trip-halo, var(--gold)) 75%, transparent)); }

/* ===== Anflug-, Lande- und Konfigurationswertung (Nutzervorgabe 2026-07-27) =========================
   Ampel je Kriterium + Balken; alle Farben aus den Theme-Variablen, damit die Darstellung dem
   gewählten Nutzer-Theme folgt (hell wie dunkel). Auch im EFB-Panel wiederverwendet. */
/* Ampel-Raster der Anflug-/Lande-/Konfigurationskriterien. Seit die drei Wertungen in die Flugnote
   eingehen, wird es NUR noch innerhalb der Notenaufschlüsselung (.sp-detail) verwendet — der frühere
   eigene Kasten daneben ist entfallen, er zeigte dieselben Zahlen ohne Bezug zur Note. */
.ap-rows { display: flex; flex-direction: column; gap: 4px; }
.ap-row { display: grid; grid-template-columns: 12px 130px 1fr 90px auto; align-items: center; gap: 8px; font-size: 12px; }
.ap-k { color: var(--text); }
.ap-v { font-variant-numeric: tabular-nums; text-align: right; }
.ap-d { font-size: 11px; }
.ap-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--muted); display: inline-block; }
.ap-meter { position: relative; height: 6px; border-radius: 999px; background: color-mix(in srgb, var(--muted) 25%, transparent); overflow: hidden; }
.ap-meter > span { position: absolute; inset: 0 auto 0 0; border-radius: 999px; background: var(--muted); }
.ap-green .ap-meter > span, .ap-meter.ap-green > span { background: var(--ok, #5fd29a); }
.ap-amber .ap-meter > span, .ap-meter.ap-amber > span { background: var(--gold, #f5b301); }
.ap-red   .ap-meter > span, .ap-meter.ap-red   > span { background: var(--danger, #ff6b6b); }
.ap-dot.ap-green { background: var(--ok, #5fd29a); }
.ap-dot.ap-amber { background: var(--gold, #f5b301); }
.ap-dot.ap-red   { background: var(--danger, #ff6b6b); }
.ap-dot.ap-na    { background: color-mix(in srgb, var(--muted) 45%, transparent); }
.ap-note-ok   { color: var(--ok, #5fd29a); }
.ap-note-warn { color: var(--gold, #f5b301); }
.ap-note-bad  { color: var(--danger, #ff6b6b); }
@media (max-width: 720px) { .ap-row { grid-template-columns: 12px 1fr 70px; } .ap-row .ap-meter, .ap-row .ap-d { display: none; } }

/* ===== Mein Profil → Statistiken: Rekord-Tabellen + Verlaufskurve (Nutzervorgabe 2026-07-27) ======== */
/* Bestwerte-Tabellen: Spalteninhalte MITTIG unter ihrer Ueberschrift (Nutzervorgabe 2026-07-31) — vorher
   standen Kopf und Text links, die Zahlen rechts, und nichts fluchtete miteinander.
   AUSNAHME: die erste Spalte („Eintrag": Kennzeichen bzw. Klasse) bleibt LINKSBUENDIG, damit die Namen
   untereinander an einer Kante beginnen und unterschiedlich lange Eintraege nicht auseinanderlaufen. */
.st-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.st-table th { text-align: center; font-weight: 600; color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .03em; padding: 4px 8px; border-bottom: 1px solid var(--border); }
.st-table td { text-align: center; padding: 5px 8px; border-bottom: 1px solid color-mix(in srgb, var(--border) 55%, transparent); }
.st-table tbody tr:hover { background: color-mix(in srgb, var(--gold) 8%, transparent); }
.st-table th:first-child, .st-table td:first-child { text-align: left; }
.st-num { text-align: center; font-variant-numeric: tabular-nums; white-space: nowrap; }
.st-trend { width: 100%; height: 120px; display: block; }
.st-trend-line { fill: none; stroke: var(--gold, #f5b301); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.st-trend-dot { fill: var(--gold, #f5b301); }
.st-trend-avg { stroke: color-mix(in srgb, var(--muted) 60%, transparent); stroke-width: 1; stroke-dasharray: 4 4; }
.st-trend-legend { margin-top: 4px; }
.warn-text { color: var(--gold, #f5b301); }

/* ===== Fluglehrer-Aufgabenkarten (Nutzervorgabe 2026-07-27) ========================================= */
.it-box { display: none; margin-top: 14px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--navy-700); }
.it-head { font-weight: 600; margin-bottom: 8px; }
.it-editor { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 8px; }
.it-task { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 10px; margin-bottom: 4px; border: 1px solid var(--border); }
.it-task.it-open { border-color: color-mix(in srgb, var(--gold) 60%, var(--border)); background: color-mix(in srgb, var(--gold) 10%, transparent); }
.it-task.it-done { border-color: color-mix(in srgb, var(--ok) 50%, var(--border)); background: color-mix(in srgb, var(--ok) 8%, transparent); opacity: .85; }
.it-txt { flex: 1; }
.it-res { font-size: 11px; }
.it-done-list { margin-top: 8px; }/* Greif-Cursor auch fuer die generische Zieh-Geste in seitlich scrollbaren Bereichen (Nutzervorgabe
   2026-07-27): Der Zeiger zeigt an, dass sich der Bereich schieben laesst. */

/* KEIN pauschaler Greif-Zeiger mehr: Ueber Text soll der normale Textcursor stehen, damit man sieht,
   dass sich der Inhalt markieren laesst (Nutzer-Meldung 2026-07-28). Geschoben wird weiterhin — nur
   zeigt der Zeiger es erst, WAEHREND wirklich gezogen wird. */
.table-scroll.drag-scrolling, .staff-tablewrap.drag-scrolling, .lb2-scroll.drag-scrolling,
.skl-treewrap.drag-scrolling, .ws-bays.drag-scrolling, .lng-gridwrap.drag-scrolling { cursor: grabbing; }
/* Innerhalb dieser Bereiche behalten Bedienelemente ihren eigenen Zeiger. */
.table-scroll a, .table-scroll button, .table-scroll input, .table-scroll select,
.staff-tablewrap a, .staff-tablewrap button, .staff-tablewrap input, .staff-tablewrap select,
.lb2-scroll a, .lb2-scroll button, .skl-treewrap button, .ws-bays button, .lng-gridwrap button { cursor: pointer; }

/* ===== Admin → Inhalte → Pkw: Katalogpflege (2026-07-27) ===== */
.carcat-brands, .carcat-models { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
.carcat-brand, .carcat-model { text-align: left; cursor: pointer; }
.carcat-brand:hover, .carcat-model:hover { border-color: var(--accent, #f5b301); }
.carcat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 8px 12px; margin: 8px 0; }
.carcat-fld { display: flex; flex-direction: column; gap: 3px; font-size: 13px; color: var(--muted, #9aa3b2); }
.carcat-fld input, .carcat-fld select { padding: 6px 8px; }
.carcat-active { display: inline-flex; align-items: center; gap: 6px; }
.carcat-paints { display: flex; flex-direction: column; gap: 4px; margin: 8px 0; }
.carcat-paint { display: flex; align-items: center; gap: 8px; }
.carcat-swatch { width: 18px; height: 18px; border-radius: 50%; border: 1px solid rgba(255,255,255,.35); display: inline-block; flex: 0 0 auto; }
.carcat-optcat summary { cursor: pointer; font-weight: 600; padding: 4px 0; }
.carcat-optgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 4px 14px; padding: 4px 0 8px; }
.carcat-opt { display: flex; align-items: center; gap: 6px; font-size: 13px; }
.carcat-drop { border: 2px dashed rgba(255,255,255,.3); border-radius: 10px; padding: 22px 14px; text-align: center; cursor: pointer; margin-bottom: 8px; }

/* „Eigenes Avatarbild": Ablagefläche um das Dateifeld — ein Bild lässt sich hierher ziehen und wird
   sofort freigestellt, hochgeladen und verwendet (Nutzervorgabe 2026-07-28). */
.av-photo-drop { border: 2px dashed rgba(255,255,255,.28); border-radius: 10px; padding: 12px; margin: 6px 0;
  display: flex; flex-direction: column; gap: 8px; align-items: center; text-align: center; transition: border-color .12s, background .12s; }
.av-photo-drop .av-photo-drop-hint { font-size: .82rem; color: var(--muted); }
.av-photo-drop input[type="file"] { max-width: 100%; }
.av-photo-drop.over { border-color: var(--gold, #f5b301); background: rgba(245,179,1,.10); }
.av-photo-drop.busy { opacity: .6; pointer-events: none; }
.carcat-drop.over { border-color: var(--accent, #f5b301); background: rgba(245,179,1,.08); }
.carcat-drop.busy { opacity: .6; pointer-events: none; }
.carcat-wizrow { display: grid; grid-template-columns: 130px 1fr 110px 32px; gap: 10px; align-items: center; padding: 8px 0; border-top: 1px solid rgba(255,255,255,.08); }
.carcat-wizimg { width: 130px; max-height: 80px; object-fit: contain; background: rgba(255,255,255,.04); border-radius: 6px; }
.carcat-wizmeta { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; font-size: 13px; }
.carcat-wizmeta input, .carcat-wizmeta select { padding: 4px 6px; }
.carcat-wizmeta input[type="number"] { width: 90px; }
.carcat-wiztop { width: 110px; height: 80px; border: 1.5px dashed rgba(255,255,255,.3); border-radius: 6px; display: flex; align-items: center; justify-content: center; font-size: 11px; color: var(--muted, #9aa3b2); text-align: center; cursor: pointer; overflow: hidden; }
.carcat-wiztop.ok { border-style: solid; border-color: #5fd29a; }
.carcat-wiztop img { max-width: 100%; max-height: 100%; object-fit: contain; }

/* Admin → Inhalte → Flugzeuge & Liveries (2026-08-02): Hersteller-/Musterkacheln und das Livery-Raster.
   Die Livery-Kachel IST die Ablagefläche — ein Bild darauf zu ziehen ersetzt das Symbol. Dunkler
   Karo-Grund, damit man am freigestellten PNG sofort sieht, was transparent ist. */
.accat-brands, .accat-types { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 10px; }
.accat-brand, .accat-type { text-align: left; cursor: pointer; }
.accat-brand:hover, .accat-type:hover { border-color: var(--accent, #f5b301); }
.accat-type { display: grid; grid-template-columns: 46px 1fr; grid-template-areas: "ico head" "ico l1" "ico l2"; gap: 2px 10px; align-items: start; }
.accat-ico { grid-area: ico; width: 46px; height: 46px; object-fit: contain; align-self: center; }
.accat-type h3 { grid-area: head; margin: 0; }
.accat-type p:nth-of-type(1) { grid-area: l1; margin: 0; }
.accat-type p:nth-of-type(2) { grid-area: l2; margin: 0; }
.aclv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px; margin: 10px 0; }
.aclv-tile { border: 1px solid var(--border); border-radius: 10px; padding: 8px; background: var(--navy-800, rgba(255,255,255,.03)); }
.aclv-img { position: relative; height: 120px; border: 2px dashed rgba(255,255,255,.28); border-radius: 8px; display: flex;
  align-items: center; justify-content: center; cursor: pointer; overflow: hidden; transition: border-color .12s, background .12s;
  background-color: rgba(0,0,0,.25);
  background-image: linear-gradient(45deg, rgba(255,255,255,.05) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.05) 75%),
                    linear-gradient(45deg, rgba(255,255,255,.05) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.05) 75%);
  background-size: 14px 14px; background-position: 0 0, 7px 7px; }
.aclv-img img { max-width: 86%; max-height: 86%; object-fit: contain; }
.aclv-img.over { border-color: var(--gold, #f5b301); background-color: rgba(245,179,1,.12); }
.aclv-hint { position: absolute; bottom: 4px; left: 0; right: 0; text-align: center; font-size: 11px; color: var(--muted, #9aa3b2); opacity: 0; transition: opacity .12s; }
.aclv-img:hover .aclv-hint { opacity: 1; }
.aclv-empty { font-size: 12px; color: var(--muted, #9aa3b2); }
.aclv-plus { font-size: 34px; color: var(--muted, #9aa3b2); }
.aclv-name { font-weight: 600; margin-top: 6px; }
.aclv-meta { font-size: 12px; }
.aclv-actions { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 6px; }
.aclv-actions code { font-size: 11px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 5px; padding: 1px 5px; }

/* Tankinhalt im Flug-Tooltip: unter einer halben Stunde Restflugzeit ist die Endreserve angebrochen. */
.fuel-low { color: var(--danger, #ff6b6b); font-weight: 600; }

/* Admin-Flugzeugkatalog: die vom Simulator gemeldeten Modelltitel (scrollbare Liste, damit die Karte
   bei mehreren hundert installierten Mustern nicht ins Endlose waechst). */
.ct-title-list { max-height: 320px; overflow: auto; display: flex; flex-wrap: wrap; gap: 6px; padding: 8px; background: var(--navy-900); border: 1px solid var(--border); border-radius: 8px; }
.ct-title-list code { font-size: 12px; background: var(--navy-700); border: 1px solid var(--border); border-radius: 6px; padding: 2px 6px; user-select: all; }
