/* Erzeugt von werkzeug/wirt_bauen.py -- nicht von Hand aendern. */

  html, body { background-color: #ffffff; }
  html { color-scheme: light; }
  @media (prefers-color-scheme: dark) {
    html:not([data-up-pagetheme]), html:not([data-up-pagetheme]) body { background-color: #101114; }
    html:not([data-up-pagetheme]) { color-scheme: dark; }
  }
  html[data-up-pagetheme="dark"], html[data-up-pagetheme="dark"] body { background-color: #101114; }
  html[data-up-pagetheme="dark"] { color-scheme: dark; }
  html[data-up-pagetheme="light"], html[data-up-pagetheme="light"] body { background-color: #ffffff; }
  html[data-up-pagetheme="dark"] .bubble-element.Group.loader,
  html[data-up-pagetheme="dark"] .page-loader,
  html[data-up-pagetheme="dark"] #app-loader { background-color: #101114; }


/* ---------------------------------------------------------------------------
   DRAWER — Ebenen, Datenuebergabe, Scroll-Reset, URL-Zustand, Scroll-Lock
   Zeiten: Slide 220ms, Content 180ms.
   --------------------------------------------------------------------------- */
[id^="drawer-"] {
  transform: translateX(110%) !important;
  transition: transform 180ms ease-in !important;
  box-shadow: -12px 0 32px rgba(0,0,0,0.15);
  will-change: transform;
  backface-visibility: hidden;
}
[id^="drawer-"].open {
  transform: translateX(0) !important;
  transition: transform 220ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}
[id^="backdrop-"] {
  opacity: 0 !important;
  pointer-events: none !important;
  transition: opacity 160ms ease !important;
  will-change: opacity;
}
[id^="backdrop-"].open {
  opacity: 1 !important;
  pointer-events: auto !important;
  transition: opacity 200ms ease !important;
  -webkit-backdrop-filter: blur(1.5px);
  backdrop-filter: blur(1.5px);
}
[id^="content-"] {
  opacity: 0 !important;
  transform: translateY(6px) !important;
  visibility: hidden;
  transition: opacity 180ms ease,
              transform 180ms cubic-bezier(0.32, 0.72, 0, 1),
              visibility 0s linear 180ms !important;
}
[id^="content-"].ready {
  opacity: 1 !important;
  transform: translateY(0) !important;
  visibility: visible;
  transition: opacity 180ms ease,
              transform 180ms cubic-bezier(0.32, 0.72, 0, 1),
              visibility 0s linear 0s !important;
}
/* Scroll-Lock: waehrend ein Drawer offen ist, scrollt der Hintergrund nicht mit */
#main.drawer-locked {
  overflow: hidden !important;
}
.dz1 { z-index: 9910 !important; }
.dz2 { z-index: 9920 !important; }
.dz3 { z-index: 9930 !important; }
.bz1 { z-index: 9905 !important; }
.bz2 { z-index: 9915 !important; }
.bz3 { z-index: 9925 !important; }
.selectize-dropdown { z-index: 99991 !important; }
[id^="top-"] { z-index: 99992 !important; }
.greyout { z-index: 99994 !important; }
.bubble-element.Popup { z-index: 99995 !important; }
.bubble-element.GroupFocus { z-index: 99996 !important; }


/* ===========================================================================
   VIEW-SYSTEM v7
   WARUM v6 BEIM WECHSEL SCHEITERTE
   --------------------------------
   v6 hat inaktive Views mit "display: none" versteckt. Damit baut Bubble
   die Elemente darin gar nicht erst auf — das Toolbox-Element
   bubble_fn_view_first_prompts wurde nie registriert, und es holt das auch
   nicht nach, wenn display spaeter wieder normal wird.
   Das erklaert genau deinen Befund:
     Direkt-Aufruf ?view=prompts  -> nie versteckt -> Funktion da
     Start auf Dashboard          -> beim Aufbau versteckt -> Funktion fehlt
   WIE v7 ES MACHT
   ---------------
   Inaktive Views bleiben GERENDERT, werden nur aus dem sichtbaren Bereich
   geschoben und auf nicht-anklickbar gesetzt. Genau das Prinzip, das bei
   den Drawern funktioniert (transform statt ausblenden).
   Damit sieht Bubble sie als vorhanden, baut sie normal auf, registriert
   die Toolbox-Elemente — und das Umschalten bleibt trotzdem sofort, weil
   nur eine Klasse wechselt.
   width: 100% ist wichtig: ohne die Angabe waere eine absolut positionierte
   View nur so breit wie ihr Inhalt, und Komponenten, die ihre Breite messen
   (Tabellen, Charts), wuerden falsch rechnen.
   =========================================================================== */
/* ---------------------------------------------------------------------------
   Inaktive Views: gerendert, aber komplett aus dem Scrollbereich heraus.
   position: fixed statt absolute ist hier der entscheidende Punkt.
   Absolut positionierte Elemente tragen weiterhin zur Scrollhoehe ihres
   Containers bei, wenn sie darueber hinausragen — bei 7-8 uebereinander
   liegenden Views wird der scrollbare Bereich dadurch riesig und die
   Scrollposition springt. Mit fixed sind sie fuer den Scrollbereich gar
   nicht mehr vorhanden.
   height/overflow geben den Komponenten darin trotzdem eine realistische
   Groesse zum Messen (Tabellen, Charts), ohne dass Inhalt ueberlaeuft.
   --------------------------------------------------------------------------- */
[id^="view-"]:not(.view-on) {

  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100vh !important;
  overflow: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
  z-index: -1 !important;
  /* kein display:none und kein visibility:hidden — sonst baut Bubble die
     Elemente darin nicht auf */
}
/* Der Browser korrigiert die Scrollposition selbsttaetig, wenn sich Inhalt
   oberhalb des sichtbaren Bereichs in der Hoehe aendert ("Scroll Anchoring").
   Waehrend die Views ihre Daten laden, passiert das staendig — und fuehrt
   zu genau dem ruckartigen Springen. Hier abgeschaltet. */
#main {
  overflow-anchor: none;
}
[id^="view-"].view-on {
  animation: viewfade-o 200ms ease;
}
[id^="view-"].view-on [id^="viewbody-"] {
  animation: viewfade-t 200ms cubic-bezier(0.32, 0.72, 0, 1);
}
@keyframes viewfade-o { from { opacity: 0; } }
@keyframes viewfade-t { from { transform: translateY(8px); } }


  #up-glass-group {
    position: fixed !important;
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
  }


#page-loader {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  /* Bubble setzt Breite/Hoehe/Rand als Inline-Style direkt am Element.
     Inline schlaegt normale Regeln, deshalb hier erzwingen — sonst bleibt
     der Loader in Bubbles Originalbreite am linken Rand kleben. */
  width: 100vw !important;
  height: 100vh !important;
  min-width: 0 !important;
  max-width: none !important;
  min-height: 0 !important;
  max-height: none !important;
  margin: 0 !important;
  z-index: 2147483000 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: opacity 260ms ease;
}
#page-loader.loader-done {
  opacity: 0 !important;
  pointer-events: none !important;
}
#page-loader.loader-weg {
  display: none !important;
}
