/* ============================================================
   @vw/ui — Design-Tokens (Single Source of Truth).
   Werte 1:1 aus der Design-Wahrheit: Design-Export „AI Workspace"
   Theme v2 „Kit Look" (claude.ai/design, 2026-06-11) — Indigo-Brand
   #5F57FF, helle Flächen, feine Borders, Candy-Gradients, lebendige
   Motion. Schriften Schibsted Grotesk / Instrument Serif / Geist Mono.
   Tailwind liest diese Variablen (preset.ts), Komponenten lesen sie —
   nie umgekehrt, nie hartkodiert.

   Tweak-Hooks auf <html> (siehe VwTweaksPanel / Export theme.css):
   data-motion (calm|lively|max|off), data-surface (shadow),
   data-density (compact|roomy), data-font (schibsted|hanken|geist),
   data-accent (brand), --brand, --rf (Radius-Faktor), --mo (Motion-
   Multiplikator).
   ============================================================ */

/* Schriften — self-hosted (DSGVO; ersetzt den Google-Fonts-@import). */

/* ============================================================
   @vw/ui — Self-hosted Schriften (DSGVO: KEINE Google-Fonts-
   Laufzeitabhängigkeit; ersetzt den früheren fonts.googleapis.com-
   @import in tokens.css).

   Quelle der woff2-Dateien: npm-Pakete @fontsource-variable/* bzw.
   @fontsource/instrument-serif (devDependencies dieses Pakets,
   Lizenz SIL OFL 1.1) — beim Versions-Update Dateien neu nach
   ./fonts/ kopieren.

   Familien (Theme v2 „Kit Look", Design-Export 2026-06-11):
   - Schibsted Grotesk (variable 400–900) — UI-Hauptschrift
   - Geist (variable 100–900)             — Fallback + data-font="geist"
   - Hanken Grotesk (variable 100–900)    — data-font="hanken"
   - Geist Mono (variable 100–900)        — Mono
   - Instrument Serif (400 + italic)      — Display-/Serif-Akzente
   ============================================================ */

@font-face {
  font-family: 'Schibsted Grotesk';
  font-style: normal;
  font-display: swap;
  font-weight: 400 900;
  src: url('/assets/schibsted-grotesk-latin-wght-normal-Bb8VGrTG.woff2') format('woff2-variations');
}

@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url('/assets/geist-latin-wght-normal-BgDaEnEv.woff2') format('woff2-variations');
}

@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url('/assets/hanken-grotesk-latin-wght-normal-CaVRRdDk.woff2') format('woff2-variations');
}

@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url('/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2') format('woff2-variations');
}

@font-face {
  font-family: 'Instrument Serif';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url('/assets/instrument-serif-latin-400-normal-DnYpCC2O.woff2') format('woff2');
}

@font-face {
  font-family: 'Instrument Serif';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url('/assets/instrument-serif-latin-400-italic-DKMiL14s.woff2') format('woff2');
}

/* Motion-Foundation (Pflicht, Design-Language §7) + Theme-v2-Motion-Layer:
   --theme-motion-*-Tokens, mo-*-Keyframes/Utilities, View-Transitions,
   Motion-Level-Hooks und der prefers-reduced-motion-Override. */

/* ============================================================
   @vw/ui — Motion-Foundation (Pflicht-Foundation, NICHT Kuer).
   Spec: docs/archive/2026-08-07-cleanup/legacy-doc-tree/design/2026-06-11-vw-design-language.md §7 (Motion-System).

   Warum diese Datei (Lars 2026-06-11): Das heutige UI wirkt „langweilig,
   statisch, unfertig". Motion ist Foundation — JEDE Komponente bekommt per
   Default lebendiges Feedback (Hover/Press/Fokus/Auftauchen/Zustand).
   „Statisch" ist ein Bug, kein Default.

   Diese Datei liefert:
   (1) die --theme-motion-*-Token-Ebene (Website-/Theme-Render), die die
       bestehenden @vw/ui-Tokens (--motion-* und --ease-*) 1:1 spiegelt;
   (2) wiederverwendbare CSS-Utility-Klassen fuer die Pflicht-Interaktionen
       (Hover-Lift, Press-Scale, Hover-Elevation) und die Keyframes der
       Transition-Primitives (Fade/SlideIn/Collapse/StaggerList/Shimmer);
   (3) den prefers-reduced-motion-Override (Dauern → 0ms, Loops aus).

   Regeln (Spec §7.6): NUR transform/opacity animieren (Compositor, kein
   Layout/Paint). Nie Roh-Werte (200ms, cubic-bezier(...)) in Komponenten —
   immer ueber Token. Editor-Chrome liest @vw/ui --motion-* und --ease-*,
   Website-/Theme-Render liest --theme-motion-*.
   ============================================================ */

:root {
  /* === MOTION-DAUERN (additiv, --theme-*-Ebene; spiegelt @vw/ui 1:1) === */
  --theme-motion-duration-fast: 120ms; /* = @vw/ui --motion-fast: Hover-Tint, Press, Fokus, Tab-Indicator */
  --theme-motion-duration-base: 200ms; /* = @vw/ui --motion-base (180–200ms-Band): Elevation, Slide, Toast */
  --theme-motion-duration-slow: 320ms; /* = @vw/ui --motion-slow: Dialog/Drawer, Stagger-Gesamt */

  /* === EASING-KURVEN === */
  --theme-motion-ease-standard: cubic-bezier(0.2, 0.8, 0.3, 1); /* Default (≈ @vw/ui --ease-spring) */
  --theme-motion-ease-enter: cubic-bezier(0.16, 1, 0.3, 1); /* Auftauchen (= @vw/ui --ease-out) */
  --theme-motion-ease-exit: cubic-bezier(0.4, 0, 1, 1); /* Verschwinden/Schliessen */

  /* === ABGELEITETE BEWEGUNGS-DISTANZEN (klein, Produkt-Tempo) === */
  --theme-motion-lift: -1px; /* Button hover-lift translateY */
  --theme-motion-elevate: -2px; /* Card hover-elevation translateY */
  --theme-motion-press: 0.97; /* Press-Scale */
  --theme-motion-slide: 8px; /* Slide-Strecke (Dialog/Toast/Stagger-Items) */
  --theme-motion-drawer-slide: 16px; /* Drawer-Slide von der Kante */
  --theme-motion-stagger-step: 35ms; /* Versatz je Stagger-Item (Spec §7.4: ~30–40ms) */
}

/* ------------------------------------------------------------
   CSS-UTILITY-KLASSEN — Pflicht-Interaktionen (Spec §7.4).
   Komponenten haengen sie additiv an; nur transform/opacity/box-shadow.
   ------------------------------------------------------------ */

/* WICHTIG: Diese Klassen deklarieren KEINE `transition`-Kurzform — sie setzen
   nur transform im :hover/:active-Zustand. Die `transition`-Eigenschaft besitzt
   die Komponente selbst (z. B. Tailwind `transition-[…,transform] duration-fast
   ease-spring`), damit es keinen Kaskaden-Konflikt zweier transition-Shorthands
   gibt. So bleibt transform/opacity-only (§7.6) und 60fps in Listen-Hotpaths. */

/* Button: hover-lift (translateY −1px) + press-scale. */

.vw-motion-lift:hover:not(:disabled):not([aria-disabled='true']) {
  transform: translateY(var(--theme-motion-lift));
}

.vw-motion-lift:active:not(:disabled):not([aria-disabled='true']) {
  transform: scale(var(--theme-motion-press));
}

/* Press-Scale ohne Lift (Icon-Button, kompakte Controls). */

.vw-motion-press:active:not(:disabled):not([aria-disabled='true']) {
  transform: scale(var(--theme-motion-press));
}

/* Card/Kachel: hover-elevation (translateY −2px; Schatten setzt die Komponente). */

.vw-motion-elevate:hover {
  transform: translateY(var(--theme-motion-elevate));
}

/* ------------------------------------------------------------
   KEYFRAMES + LOOP-KLASSEN.
   Loops tragen data-motion-loop, damit der reduced-motion-Block
   (animation:none) sie sicher stoppt (0ms-Dauer stoppt keinen Loop).
   ------------------------------------------------------------ */

@keyframes vw-shimmer {
  from {
    transform: translateX(-100%);
  }
  to {
    transform: translateX(100%);
  }
}

/* Skeleton-Shimmer: gleichfoermiges Lauflicht (Spec §7.4: ~1.2–1.5s linear).
   transform-basiert (Spec §7.6 erlaubt nur transform/opacity) — die Klasse
   gehoert auf ein Overlay-Element ueber der Skeleton-Flaeche. */

.vw-skeleton-shimmer {
  position: relative;
  overflow: hidden;
}

.vw-skeleton-shimmer::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.55) 50%,
    transparent 100%
  );
  transform: translateX(-100%);
  animation: vw-shimmer 1.4s linear infinite;
}

.vw-skeleton-shimmer[data-motion-loop]::after {
  animation: vw-shimmer 1.4s linear infinite;
}

/* ------------------------------------------------------------
   TRANSITION-PRIMITIVE — <Transition>-Klassen.
   Vue-Transition-Komponenten (VwFade/VwSlideIn/VwCollapse/VwStaggerList)
   geben diese Klassen-Praefixe als `name` durch. transform/opacity only.
   ------------------------------------------------------------ */

/* VwFade — reines Auf-/Abblenden. */

.vw-fade-enter-active {
  transition: opacity var(--theme-motion-duration-base) var(--theme-motion-ease-enter);
}

.vw-fade-leave-active {
  transition: opacity var(--theme-motion-duration-base) var(--theme-motion-ease-exit);
}

.vw-fade-enter-from,
.vw-fade-leave-to {
  opacity: 0;
}

/* VwSlideIn — fade + slide aus einer Richtung (Dialog/Toast/Drawer/Popover).
   Richtung steuert die Komponente per --vw-slide-x/--vw-slide-y (CSS-Var),
   sodass ein Klassen-Satz alle vier Richtungen bedient. */

.vw-slide-enter-active {
  transition:
    opacity var(--theme-motion-duration-slow) var(--theme-motion-ease-enter),
    transform var(--theme-motion-duration-slow) var(--theme-motion-ease-enter);
}

.vw-slide-leave-active {
  transition:
    opacity var(--theme-motion-duration-base) var(--theme-motion-ease-exit),
    transform var(--theme-motion-duration-base) var(--theme-motion-ease-exit);
}

.vw-slide-enter-from,
.vw-slide-leave-to {
  opacity: 0;
  transform: translate(var(--vw-slide-x, 0), var(--vw-slide-y, var(--theme-motion-slide)));
}

/* VwCollapse — Accordion/Collapse via grid-template-rows (Spec §7.6:
   height-Ausnahme ueber grid-rows-Technik statt animiertem height). */

.vw-collapse-enter-active,
.vw-collapse-leave-active {
  transition:
    grid-template-rows var(--theme-motion-duration-base) var(--theme-motion-ease-standard),
    opacity var(--theme-motion-duration-base) var(--theme-motion-ease-standard);
}

.vw-collapse-enter-from,
.vw-collapse-leave-to {
  grid-template-rows: 0fr;
  opacity: 0;
}

.vw-collapse-enter-to,
.vw-collapse-leave-from {
  grid-template-rows: 1fr;
  opacity: 1;
}

/* VwStaggerList — Items erscheinen versetzt (fade + slide-up).
   Der Versatz wird per inline --vw-stagger-index gesetzt (Komponente). */

.vw-stagger-enter-active {
  transition:
    opacity var(--theme-motion-duration-base) var(--theme-motion-ease-enter),
    transform var(--theme-motion-duration-base) var(--theme-motion-ease-enter);
  transition-delay: calc(var(--vw-stagger-index, 0) * var(--theme-motion-stagger-step));
}

.vw-stagger-leave-active {
  transition:
    opacity var(--theme-motion-duration-fast) var(--theme-motion-ease-exit),
    transform var(--theme-motion-duration-fast) var(--theme-motion-ease-exit);
  position: absolute;
}

.vw-stagger-enter-from,
.vw-stagger-leave-to {
  opacity: 0;
  transform: translateY(var(--theme-motion-slide));
}

/* FLIP: verschobene Items gleiten an ihre neue Position. */

.vw-stagger-move {
  transition: transform var(--theme-motion-duration-base) var(--theme-motion-ease-standard);
}

/* ------------------------------------------------------------
   prefers-reduced-motion (Pflicht-Regel, Spec §7.5).
   ALLE Motion aus: Dauern → 0ms (Zustaende wechseln instant), Loops
   zusaetzlich per animation:none (0ms-Dauer stoppt keinen Endlos-Loop).
   Funktionalitaet bleibt IMMER erhalten — reduzierte Motion heisst „kein
   Augen-Reiz", nicht „weniger Bedienbarkeit".
   ------------------------------------------------------------ */

@media (prefers-reduced-motion: reduce) {
  :root {
    --theme-motion-duration-fast: 0ms;
    --theme-motion-duration-base: 0ms;
    --theme-motion-duration-slow: 0ms;
    --theme-motion-stagger-step: 0ms;
  }
  /* Loops separat killen (0ms-Dauer stoppt keine Endlos-Animation). */
  .vw-skeleton-shimmer::after,
  .vw-spinner,
  [data-motion-loop] {
    animation: none !important;
  }
  /* Lift/Press/Elevate-Transforms neutralisieren (kein Augen-Reiz, aber
     Hover/Active bleiben funktional erkennbar ueber andere Stile). */
  .vw-motion-lift:hover,
  .vw-motion-lift:active,
  .vw-motion-press:active,
  .vw-motion-elevate:hover {
    transform: none;
  }
}

/* ============================================================
   THEME v2 „KIT LOOK" — MOTION-LAYER (Design-Export „AI Workspace",
   claude.ai/design 2026-06-11, theme.css §MOTION LAYER — verbindliches
   Soll). Additiv zur bestehenden Motion-Foundation oben; nutzt die
   neuen Tokens aus tokens.css: --mo (Multiplikator), --t-fast/--t-med/
   --t-slow, --ease-out / --ease-spring (Spring mit Overshoot).
   JS-Gegenstücke: packages/ui/src/motion/ (moStagger, moCountUp,
   v-ripple, moEnabled).
   ============================================================ */

/* Sanfte Zustandswechsel auf allen Buttons (Hover-Styles gleiten gratis). */

button {
  transition:
    background-color var(--t-fast, 130ms) var(--ease-out),
    color var(--t-fast, 130ms) var(--ease-out),
    box-shadow var(--t-fast, 130ms) var(--ease-out),
    border-color var(--t-fast, 130ms) var(--ease-out),
    opacity var(--t-fast, 130ms) var(--ease-out),
    scale calc(90ms * var(--mo, 1)) var(--ease-out);
}

button:active { scale: 0.97; }

button:disabled { cursor: default; }

/* Fokus-Ringe — nur Tastatur. */

:focus-visible {
  outline: 2px solid color-mix(in oklab, var(--brand, var(--c-brand)) 65%, white);
  outline-offset: 1px;
  border-radius: 4px;
}

input:focus-visible, textarea:focus-visible { outline-offset: 0; }

/* Keyframes (nur transform/translate/scale/opacity/filter — §7.6). */

@keyframes mo-rise { from { opacity: 0; translate: 0 7px; } to { opacity: 1; translate: 0 0; } }

@keyframes mo-fade { from { opacity: 0; } to { opacity: 1; } }

@keyframes mo-pop { from { opacity: 0; scale: 0.965; translate: 0 6px; } to { opacity: 1; scale: 1; translate: 0 0; } }

@keyframes mo-slide-r { from { opacity: 0; translate: 18px 0; } to { opacity: 1; translate: 0 0; } }

@keyframes mo-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }

@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }

.pulse { animation: pulse 2s ease-in-out infinite; }

/* Utility-Einblendungen. */

.mo-rise { animation: mo-rise var(--t-med, 220ms) var(--ease-out) both; }

.mo-pop { animation: mo-pop var(--t-med, 220ms) var(--ease-spring) both; }

.mo-fade { animation: mo-fade var(--t-med, 220ms) var(--ease-out) both; }

.mo-stagger > * { animation: mo-rise var(--t-med, 220ms) var(--ease-out) both; animation-delay: calc(var(--i, 0) * 26ms * var(--mo, 1)); }

/* Popup-Spring — Dialoge, Panels, Menüs (Overshoot via ease-spring). */

.mo-popup { animation: mo-popup calc(430ms * var(--mo, 1)) var(--ease-spring) both; }

@keyframes mo-popup {
  from { opacity: 0; scale: 0.84; translate: 0 16px; filter: blur(2px); }
  40% { opacity: 1; filter: blur(0); }
  to { opacity: 1; scale: 1; translate: 0 0; filter: blur(0); }
}

.mo-popup-out { animation: mo-popup-out calc(180ms * var(--mo, 1)) var(--ease-out) both; }

@keyframes mo-popup-out {
  to { opacity: 0; scale: 0.92; translate: 0 10px; }
}

/* FAB-Juice. */

.vw-fab { transition: scale var(--t-fast, 130ms) var(--ease-spring), box-shadow var(--t-fast, 130ms) var(--ease-out), filter var(--t-fast, 130ms) var(--ease-out); }

.vw-fab:hover { scale: 1.08; filter: brightness(1.06); }

.vw-fab:active { scale: 0.92; }

/* Skeleton-Shimmer (Kit-Look: neutraler Inset-Gradient). */

.skeleton {
  background: linear-gradient(100deg, var(--bg-inset) 40%, #fff 50%, var(--bg-inset) 60%);
  background-size: 200% 100%;
  animation: mo-shimmer calc(1400ms * var(--mo, 1)) linear infinite;
  border-radius: var(--radius-sm);
  color: transparent !important;
}

/* Ripple (injiziert von v-ripple, packages/ui/src/motion/). */

.mo-ripple-host {
  position: absolute; inset: 0; border-radius: inherit;
  overflow: hidden; pointer-events: none;
}

.mo-ripple {
  position: absolute; border-radius: 50%;
  background: currentColor; opacity: 0.16;
  transform: scale(0);
  animation: mo-ripple calc(560ms * var(--mo, 1)) var(--ease-out) forwards;
}

@keyframes mo-ripple {
  to { transform: scale(2.6); opacity: 0; }
}

/* ---------- View-Transitions (App-Wechsel) ---------- */

@media (prefers-reduced-motion: no-preference) {
  ::view-transition-old(root) { animation: mo-fade-out 140ms ease both; }
  ::view-transition-new(root) { animation: mo-fade 200ms ease both; }
  ::view-transition-old(app-canvas) { animation: mo-canvas-out calc(170ms * var(--mo, 1)) var(--ease-out) both; }
  ::view-transition-new(app-canvas) { animation: mo-canvas-in calc(330ms * var(--mo, 1)) var(--ease-out) both; }
  ::view-transition-group(nav-pill) { animation-duration: calc(300ms * var(--mo, 1)); animation-timing-function: var(--ease-spring); }
}

@keyframes mo-fade-out { to { opacity: 0; } }

@keyframes mo-canvas-out { to { opacity: 0; translate: 0 -8px; scale: 0.992; } }

@keyframes mo-canvas-in { from { opacity: 0; translate: 0 12px; scale: 0.992; } }

/* ---------- Motion-Level (Tweak-Hook data-motion auf <html>) ---------- */

html[data-motion="calm"] { --mo: 0.6; }

html[data-motion="lively"] { --mo: 1; }

html[data-motion="max"] { --mo: 1.18; }

html[data-motion="off"] { --mo: 0; }

html[data-motion="off"] *, html[data-motion="off"] *::before, html[data-motion="off"] *::after {
  animation-duration: 0s !important;
  animation-delay: 0s !important;
  transition-duration: 0s !important;
}

html[data-motion="off"] button:active { scale: 1; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* Toast in/out (Spring rein, Ease raus; genutzt von VwToastViewport). */

.vw-toast { animation: mo-toast-in calc(380ms * var(--mo, 1)) var(--ease-spring) both; }

.vw-toast.out { animation: mo-toast-out calc(220ms * var(--mo, 1)) var(--ease-out) both; }

@keyframes mo-toast-in { from { opacity: 0; translate: 0 16px; scale: 0.9; } }

@keyframes mo-toast-out { to { opacity: 0; translate: 0 10px; scale: 0.95; } }

/* ============================================================
   THEME v2 — KOMPONENTEN-LEVEL-HELFER (theme.css §COMPONENT-LEVEL)
   ============================================================ */

/* Karten-Hover-Lift — für klickbare Karten. */

.card-hover {
  transition:
    box-shadow var(--t-fast, 130ms) var(--ease-out),
    transform var(--t-fast, 130ms) var(--ease-out),
    border-color var(--t-fast, 130ms) var(--ease-out);
  cursor: pointer;
}

.card-hover:hover {
  box-shadow: var(--shadow);
  transform: translateY(-1.5px);
  border-color: var(--border-strong);
}

.card-hover:active { transform: translateY(0); }

/* Akzent-Zone — farbiges Top-Band auf Karten (--az-c = App-Farbe). */

.accent-zone {
  background:
    linear-gradient(180deg,
      color-mix(in oklab, var(--az-c, var(--brand, var(--c-brand))) 7%, var(--bg-panel)) 0%,
      var(--bg-panel) 100%);
}

/* Segment-Control — Kit-Stil (auch als Klassen-Hook für Fremd-Markup). */

.seg-ctrl {
  display: inline-flex;
  background: var(--bg-inset);
  border-radius: var(--radius-sm);
  padding: 2px;
  gap: 1px;
}

.seg-ctrl button {
  padding: 4px 12px;
  border: none;
  background: transparent;
  border-radius: calc(var(--radius-sm) - 2px);
  font-size: 12px;
  font-weight: 500;
  color: var(--text-2);
  transition: background var(--t-fast, 130ms) var(--ease-out), color var(--t-fast, 130ms) var(--ease-out),
    box-shadow var(--t-fast, 130ms) var(--ease-out);
}

.seg-ctrl button[data-active="true"] {
  background: var(--bg-panel);
  color: var(--text);
  box-shadow: var(--shadow-sm);
}

/* Häkchen-Spring. */

@keyframes mo-check-pop {
  0%   { transform: scale(0) rotate(-12deg); opacity: 0; }
  60%  { transform: scale(1.3) rotate(4deg); opacity: 1; }
  100% { transform: scale(1) rotate(0deg); opacity: 1; }
}

.mo-check-anim { animation: mo-check-pop calc(340ms * var(--mo, 1)) var(--ease-spring) both; }

/* Progress-Bar mit Gradient-Fill (--pc = Akzent). */

.prog-bar {
  height: 4px;
  background: var(--bg-inset);
  border-radius: 99px;
  overflow: hidden;
}

.prog-bar-fill {
  height: 100%;
  border-radius: 99px;
  background: linear-gradient(90deg, color-mix(in oklab, var(--pc, var(--brand, var(--c-brand))) 70%, white), var(--pc, var(--brand, var(--c-brand))));
  transition: width calc(600ms * var(--mo, 1)) var(--ease-out);
}

/* Feature-Card-Header-Gradient (--fc-c = Akzent). */

.feat-card-head {
  position: relative;
  overflow: hidden;
}

.feat-card-head::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg,
    color-mix(in oklab, var(--fc-c, var(--brand, var(--c-brand))) 12%, white) 0%,
    color-mix(in oklab, var(--fc-c, var(--brand, var(--c-brand))) 4%, white) 50%,
    transparent 100%);
  pointer-events: none;
  border-radius: inherit;
}

/* Thread-Listen-Zeile. */

.thread-row {
  transition: background var(--t-fast, 130ms) var(--ease-out);
  border-left: 2px solid transparent;
}

.thread-row[data-active="true"] {
  border-left-color: var(--c-mail);
  background: color-mix(in oklab, var(--c-mail) 7%, white);
}

.thread-row:hover:not([data-active="true"]) {
  background: var(--bg-hover);
}

/* Hover-Actions-Pill — schwebt bei Hover über Listenzeilen. */

.hover-actions {
  position: absolute; right: 8px; top: 50%;
  transform: translateY(-50%) translateX(6px);
  opacity: 0;
  transition: opacity var(--t-fast, 130ms) var(--ease-out), transform var(--t-fast, 130ms) var(--ease-spring);
  pointer-events: none;
}

.thread-row:hover .hover-actions {
  opacity: 1;
  transform: translateY(-50%) translateX(0);
  pointer-events: auto;
}

/* Kalender-Event-Block (--ev-c = Akzent). */

.cal-event {
  position: absolute;
  left: 4px; right: 4px;
  border-radius: 6px;
  padding: 4px 7px;
  font-size: 11.5px;
  font-weight: 500;
  overflow: hidden;
  cursor: pointer;
  border-left: 3px solid var(--ev-c, var(--brand, var(--c-brand)));
  background: linear-gradient(160deg,
    color-mix(in oklab, var(--ev-c, var(--brand, var(--c-brand))) 16%, white) 0%,
    color-mix(in oklab, var(--ev-c, var(--brand, var(--c-brand))) 10%, white) 100%);
  transition: transform var(--t-fast, 130ms) var(--ease-spring), box-shadow var(--t-fast, 130ms) var(--ease-out);
}

.cal-event:hover {
  transform: scale(1.015) translateX(-1px);
  box-shadow: 0 4px 14px color-mix(in oklab, var(--ev-c, var(--brand, var(--c-brand))) 22%, transparent);
  z-index: 2;
}

/* Reminder-Zeile. */

.rem-row {
  display: flex;
  gap: 12px;
  padding: 11px 0;
  border-bottom: 1px solid var(--border);
  align-items: flex-start;
  transition: background var(--t-fast, 130ms) var(--ease-out);
  border-radius: var(--radius-sm);
}

.rem-row:hover { background: var(--bg-hover); padding-left: 8px; padding-right: 8px; }

/* ---------- Tab-Pane Fade+Slide ---------- */

@keyframes mo-tab-in  { from { opacity: 0; translate: 0 8px; } to { opacity: 1; translate: 0 0; } }

@keyframes mo-tab-out { to   { opacity: 0; translate: 0 -6px; } }

.mo-tab-pane { animation: mo-tab-in calc(200ms * var(--mo, 1)) var(--ease-out) both; }

/* Animierte Tab-Bar-Underline (--tl/--tw/--ta von der Komponente gesetzt). */

.tab-bar { position: relative; display: flex; gap: 2px; }

.tab-bar::after {
  content: ""; position: absolute; bottom: -1px; left: var(--tl, 0); width: var(--tw, 0);
  height: 2px; background: var(--ta, var(--brand, var(--c-brand)));
  border-radius: 2px 2px 0 0;
  transition: left calc(240ms * var(--mo, 1)) var(--ease-spring),
              width calc(200ms * var(--mo, 1)) var(--ease-out);
}

/* Modal-Overlay / Sheet / Drawer. */

.mo-overlay {
  position: fixed; inset: 0; background: rgba(36, 36, 48, 0.28);
  backdrop-filter: blur(3px); z-index: 80;
  display: flex; align-items: center; justify-content: center;
  animation: mo-fade calc(160ms * var(--mo, 1)) var(--ease-out) both;
}

.mo-sheet {
  position: fixed; inset: 0; background: rgba(36, 36, 48, 0.22);
  backdrop-filter: blur(2px);
  animation: mo-fade calc(120ms * var(--mo, 1)) var(--ease-out) both;
}

.mo-drawer {
  position: absolute; right: 0; top: 0; bottom: 0;
  animation: mo-drawer-in calc(300ms * var(--mo, 1)) var(--ease-out) both;
}

@keyframes mo-drawer-in  { from { translate: 100% 0; } }

@keyframes mo-drawer-out { to   { translate: 100% 0; opacity: 0; } }

/* Empty-State. */

.empty-state {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 60px 40px; text-align: center; color: var(--text-3); gap: 10px;
}

.empty-state svg { color: var(--text-4); }

/* ---------- Kit-Stil-Helfer ---------- */

.card {
  background: var(--grad-panel);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
}

.vw-search {
  background: var(--bg-panel);
  box-shadow: inset 0 0 0 1px var(--border);
  transition: box-shadow var(--t-fast, 130ms) var(--ease-out);
}

.vw-search:focus-within {
  box-shadow: inset 0 0 0 1.5px var(--brand, var(--c-brand)), 0 0 0 3px var(--brand-softer);
  color: var(--text-2);
}

.chip {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 2px 9px; border-radius: 999px;
  font-size: 11px; font-weight: 600; line-height: 1.6;
  background: var(--bg-inset); color: var(--text-2);
  white-space: nowrap;
}

/* ---------- Wiki-/Notion-Editor + CMS-Core (Export-Klassen .wk-* / .co-*) ---------- */

.wk-editable:empty::before {
  content: attr(data-ph);
  color: var(--text-4);
  pointer-events: none;
}

.wk-editable:not(:focus):empty::before { content: ""; }

.wk-editable[data-ph="To-do"]:empty::before,
.wk-editable[data-ph="Toggle"]:empty::before { content: attr(data-ph); }

.wk-dbrow:hover .wk-dbrow-del { opacity: 1 !important; }

.wk-cover:hover .wk-cover-tools { opacity: 1 !important; }

.co-sec:hover .co-sec-edit { opacity: 1 !important; }

.co-sec[data-clickable="true"] { cursor: pointer; }

.co-sec[data-clickable="true"]:hover { outline: 2px solid color-mix(in oklab, var(--c-core) 55%, transparent); outline-offset: -2px; }

.co-addzone > button { opacity: 0; transition: opacity 130ms ease; }

.co-addzone:hover > button { opacity: 1; }

.co-sec-tools { opacity: 0; transition: opacity 130ms ease; }

.co-sec:hover .co-sec-tools { opacity: 1; }

/*
 * Suite DNA v4 token contract.
 *
 * These aliases deliberately consume the existing neutral foundation. They
 * define the semantic vocabulary and density/motion boundaries before U01
 * selects one of the three brand directions; no direction-specific palette is
 * silently promoted to production here.
 */

:root {
  /* Brand primitives / semantic product surfaces. */
  --suite-color-brand-primary: var(--brand);
  --suite-color-brand-ink: var(--brand-ink);
  --suite-color-surface-canvas: var(--bg);
  --suite-color-surface-panel: var(--bg-panel);
  --suite-color-surface-elevated: var(--bg-elev);
  --suite-color-border-default: var(--border);
  --suite-color-border-strong: var(--border-strong);
  --suite-color-text-primary: var(--text);
  --suite-color-text-secondary: var(--text-2);
  --suite-color-text-muted: var(--text-3);
  --suite-color-on-brand: var(--c-app-accent-on, #ffffff);
  --suite-color-overlay-scrim: rgb(18 20 28 / 34%);
  --suite-color-workbench-scrim: rgb(0 0 0 / 32%);

  /* Registered state tokens. */
  --suite-state-info: var(--c-info);
  --suite-state-success: var(--c-success);
  --suite-state-warning: var(--c-warning);
  --suite-state-danger: var(--c-danger);
  --suite-state-focus: var(--c-focus);

  /* Density, type, elevation and motion contracts. */
  --suite-density-control-height: 34px;
  --suite-density-control-height-compact: 30px;
  --suite-density-space-unit: 4px;
  --suite-type-body: var(--font);
  --suite-type-display: var(--font-display, var(--font));
  --suite-type-mono: var(--font-mono);
  --suite-elevation-panel: var(--shadow-sm);
  --suite-elevation-overlay: var(--shadow-lg);
  --suite-elevation-launcher: 0 26px 74px rgb(16 18 26 / 30%);
  --suite-elevation-brand-mark: inset 0 1px 0 rgb(255 255 255 / 18%), 0 1px 2px rgb(0 0 0 / 10%);
  --suite-motion-fast: var(--motion-fast, 120ms);
  --suite-motion-base: var(--motion-base, 200ms);
  --suite-motion-slow: var(--motion-slow, 320ms);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --suite-motion-fast: 0ms;
    --suite-motion-base: 0ms;
    --suite-motion-slow: 0ms;
  }
}

/* Basis-Theme-Ebene (Design-Language §4): macht die --theme-*-Tokens inkl.
   Gradients GLOBAL verfuegbar (Shell-Hero, Stat-Karten, Akzentbalken-Konsumenten
   mit var(--theme-primary)). Der ThemeProvider ueberschreibt sie pro Teilbaum
   (Kunde/Mandant) fuer den Website-Render — das Editor-Chrome liest weiterhin
   die --c-*-Werte unten. */

/* ============================================================
   @vw/ui — Theme-Token-Architektur (Website-CSS-Ebene `--theme-*`).
   WP CUI-WB-13 (CMS-UI-UBG-Konvergenz, Welle B).

   Das ist die WEBSITE-CSS-Ebene des CMS (3-Ebenen-Vererbung
   Base -> Kunden-Theme -> Mandanten-Variante; ThemeProvider.vue / WB-14
   injiziert die aufgeloeste Kaskade). Sie ist STRIKT getrennt von der
   Editor-Chrome-Ebene (`--bg`/`--text`/`--c-*` in tokens.css): Editor-CSS
   und Website-CSS mischen sich NIE (Konvergenz-Plan §1, Design-Language §0/§10).

   Namenswahrheit: Die Token-Namen folgen der echten UBG-THEME-ARCHITEKTUR.md
   (kebab-case: --theme-primary, --theme-primary-hover, --theme-on-primary,
   --theme-surface, --theme-surface-alt, --theme-text, --theme-text-muted,
   --theme-border, --theme-accent, --theme-font-headline/-body/-ui,
   --theme-button-radius, --theme-card-radius). Bei Konflikt gewinnt die echte
   UBG-Datei gegen den Plan.

   Werte: Theme v2 „Kit Look" (Design-Export „AI Workspace", claude.ai/design,
   Stand 2026-06-11 — verbindliches Soll, supersedet die Figma-Werte des
   Erststands): Primaer Indigo #5F57FF (vorher Lila #6D40E6), Schibsted
   Grotesk als UI-Schrift (vorher Geist).

   Diese Datei ist ADDITIV: sie aendert KEINE bestehenden Tokens in tokens.css
   und bricht damit keinen der ~58 Remotes. Konsumierende Editor-Shells koennen
   den Alias-Bridge-Scope (`.vw-theme-bridge`, unten) OPT-IN setzen, um die
   `@vw/ui`-`--c-*`-Editor-Tokens auf die Konvergenz-Werte zu heben.

   Dark Mode (UX-07): Light bleibt der Default. Alle Farben laufen ueber Tokens
   (kein Hardcode); der Dark-Wertesatz wird rein additiv ueber
   [data-theme="dark"] aktiviert, ohne Komponenten anzufassen.
   ============================================================ */

:root {
  /* === FARBE === (kebab-case, gemaess echter THEME-ARCHITEKTUR.md) ===
     Marken-Primaer Indigo #5F57FF (Theme v2 Design-Export, 2026-06-11). */
  --theme-primary:        #5F57FF;   /* Buttons, Active-Nav, Links, Slider, Progress-Fill */
  --theme-primary-hover:  #4B44D6;   /* Hover / gedrueckter Zustand (echt: --theme-primary-hover) */
  --theme-on-primary:     #FFFFFF;   /* Text/Icon auf Primary-Flaechen (echt: --theme-on-primary) */
  --theme-primary-tint:   #EFEEFF;   /* Active-/Hover-Background, ausgewaehlte Zeile (additiv) */
  --theme-primary-wash:   #F7F7FF;   /* sehr leichte Sektions-Hinterlegung (additiv) */
  --theme-accent:         #2C72FF;   /* Sekundaerakzent (Links, Info) */
  --theme-on-accent:      #FFFFFF;   /* Text/Icon auf Accent-Flaechen (additiv) */

  /* Flaechen / Text / Border (Design-Language §2.4). */
  --theme-surface:        #FFFFFF;   /* Karten/Panels (echt: --theme-surface) */
  --theme-surface-alt:    #F7F8FA;   /* Seite/Background (echt: --theme-surface-alt — der Background-Ton) */
  --theme-surface-sunken: #F0F1F3;   /* Icon-Rail / Tab-Container (additiv) */
  --theme-border:         #E5E7EE;   /* Default-Border (echt: --theme-border) */
  --theme-border-strong:  #D5D8E2;   /* Inputs, getrennte Tabellenzellen (additiv) */
  --theme-text:           #1A1B2E;   /* Primaertext, leicht violett unterlegt (echt: --theme-text) */
  --theme-text-muted:     #5C6275;   /* Nav-inaktiv, Subtexte (echt: --theme-text-muted) */
  --theme-text-subtle:    #9095A3;   /* Placeholder, Meta, Section-Labels (additive 3. Stufe) */

  /* === SEMANTIK === (Design-Language §2.3) === */
  --theme-success:        #37C390;
  --theme-warning:        #FBC025;
  --theme-danger:         #F65428;
  --theme-info:           #2C72FF;
  /* Text-Varianten der Semantik (AA auf neutralem Grund — als TEXTfarbe nutzen). */
  --theme-success-text:   #15803D;
  --theme-warning-text:   #A35A00;
  --theme-danger-text:    #D70015;
  --theme-info-text:      #1D5FD6;

  /* === TYPOGRAFIE === (echte Token-Namen: headline/body/ui; Theme v2:
     Schibsted Grotesk mit Geist-Fallback, self-hosted via fonts.css) === */
  --theme-font-headline:  "Schibsted Grotesk", "Geist", system-ui, -apple-system, sans-serif;             /* echt: --theme-font-headline */
  --theme-font-body:      "Schibsted Grotesk", "Geist", system-ui, -apple-system, "Segoe UI", sans-serif; /* echt: --theme-font-body */
  --theme-font-ui:        "Schibsted Grotesk", "Geist", system-ui, -apple-system, sans-serif;             /* echt: --theme-font-ui */
  --theme-font-mono:      "Geist Mono", ui-monospace, monospace;                     /* additiv (Codes/IDs) */
  --theme-font-scale:     1;          /* Mandanten-Skalierfaktor 0.9–1.15 (additiv) */

  /* === FORM === (echte Token-Namen: button-radius/card-radius; Kit-Konsens §6) === */
  --theme-card-radius:    12px;       /* Karten/Panels/Dialoge (echt: --theme-card-radius) */
  --theme-button-radius:  8px;        /* Buttons/Inputs/aktive Nav-Items (echt: --theme-button-radius) */
  --theme-radius-pill:    999px;      /* Badges/Avatare/Progress (additiv) */
  --theme-radius-chip:    6px;        /* Inline-Tags, Logo-Tile, Icon-Wrapper (additiv) */
  --theme-radius-section: 16px;       /* grosse Container/Stat-Container/Upsell-Karte (additiv) */
  --theme-shadow:         0 1px 2px rgba(9, 25, 72, 0.06); /* Standard-Mikro-Schatten (= shadow-sm) */

  /* ========================================================
     ADDITIVE GRADIENTS (Design-Language §3 — max. 5 kanonische Verlaeufe,
     dekorativ/punktuell: Logo-Tiles, Stat-Badges, CTA, Upsell-Karte).
     Alle kebab-case, namespaced `--theme-gradient-*`.
     ======================================================== */
  --theme-gradient-brand:      linear-gradient(180deg, #8C86FF 0%, #5F57FF 100%);                 /* G1 Logo-Tiles/Icon-Badges */
  --theme-gradient-cta:        linear-gradient(115deg, #5F57FF 0%, #4B44D6 45%, #2C72FF 115%);    /* G2 Hero-CTA/Trial-Badge */
  --theme-gradient-dark:       linear-gradient(160deg, #4C4C4D 0%, #2D2F30 50%, #1A1B2E 100%);    /* G4 Dark Upsell/Hero */
  --theme-gradient-gloss:      linear-gradient(180deg, rgba(255,255,255,0.16) 0%, rgba(255,255,255,0) 100%); /* G5 Glanz-Overlay */
  --theme-gradient-stat-blue:  linear-gradient(151deg, #A5C7FE 18%, #5F57FF 89%);                 /* G3 Stat-Badge je Kategorie */
  --theme-gradient-stat-green: linear-gradient(137deg, #86B9ED 18%, #3FC4A9 80%);
  --theme-gradient-stat-pink:  linear-gradient(121deg, #FF4AA1 20%, #FBC025 81%);
  --theme-gradient-stat-cyan:  linear-gradient(142deg, #2C72FF 22%, #35CFFF 72%);

  /* ========================================================
     ADDITIVE SCHATTEN-STUFEN (Design-Language §4/§6 — Mikro-Schatten-System;
     keine schweren Drop-Shadows). Alle kebab-case `--theme-shadow-*`.
     ======================================================== */
  --theme-shadow-xs:   0 1px 1px rgba(9, 25, 72, 0.06);                                  /* Search/Input in Sidebar */
  --theme-shadow-sm:   0 1px 2px rgba(9, 25, 72, 0.06);                                  /* Karten, Buttons (= --theme-shadow) */
  --theme-shadow-md:   0 6px 10px rgba(27, 28, 29, 0.06), 0 2px 4px rgba(27, 28, 29, 0.02); /* aktiver Tab, Popover */
  --theme-shadow-lg:   0 5px 20px rgba(95, 87, 255, 0.12);                               /* Modal, Floating (Marken-getoent) */
  --theme-ring-active: 0 0 0 1px #FFFFFF, 0 1px 2px rgba(0, 0, 0, 0.08);                  /* Active-Nav Weiss-Ring (Sonderfall) */

  /* Elevation-Tints (Stat-Chip-Backgrounds, je Kategorie; Design-Language §4). */
  --theme-elevation-blue:  #EFEEFF;
  --theme-elevation-green: #E8FDFB;
  --theme-elevation-pink:  #FBE6F8;
  --theme-elevation-amber: #FCECE6;

  /* ========================================================
     ADDITIVE MOTION (Design-Language §7.3 — spiegelt @vw/ui 1:1, aliased auf
     die Editor-Motion-Tokens aus tokens.css). Damit fahren Editor-Chrome und
     Website-Render dasselbe Tempo. Alle kebab-case `--theme-motion-*`.
     Regel: Komponenten nutzen NIE Roh-Werte (200ms / cubic-bezier(...)),
     immer den Token. Website-/Theme-Render liest --theme-motion-*,
     Editor-Chrome liest --motion-* und --ease-* (gleiche Trennung wie Farb-Tokens).

     Fallback-Werte (rechts vom var()) greifen, falls tokens.css nicht geladen
     ist; sind identisch zu den @vw/ui-Werten und werden von der
     reduced-motion-Mechanik unten korrekt auf 0ms gezogen. */
  --theme-motion-duration-fast:  var(--motion-fast, 120ms);   /* Hover-Tints, Press-Scale, Fokus-Ring, Icon-Color, Tab-Indicator */
  --theme-motion-duration-base:  var(--motion-base, 200ms);   /* Elevation, Background, Toast-In, kurze Slides */
  --theme-motion-duration-slow:  var(--motion-slow, 320ms);   /* Dialog/Drawer-Auftritt, Listen-Stagger-Gesamtdauer */
  --theme-motion-ease-standard:  var(--ease-spring, cubic-bezier(0.2, 0.8, 0.3, 1));  /* Default (≈ --ease-spring) */
  --theme-motion-ease-enter:     var(--ease-out, cubic-bezier(0.16, 1, 0.3, 1));      /* Auftauchen (= --ease-out) */
  --theme-motion-ease-exit:      cubic-bezier(0.4, 0, 1, 1);                          /* Verschwinden/Schliessen */
}

/* ========================================================
   WEBSITE-DARK-WERTE (UX-07)

   Additiv: Light bleibt der :root-Default. Der Umschalter setzt
   `html[data-theme="dark"]`; ein ThemeProvider mit `theme="dark"` kann den
   Wert lokal aktivieren. Der dritte Selektor überträgt den globalen Dark-Modus
   auch auf den defaultmäßig als `data-theme="light"` markierten Provider,
   damit bestehende Provider ohne Prop-Änderung mit der Shell synchron bleiben.
   ======================================================== */

:root[data-theme="dark"],
.vw-theme-provider[data-theme="dark"],
:root[data-theme="dark"] .vw-theme-provider[data-theme="light"] {
  --theme-primary:        #8B85FF;
  --theme-primary-hover:  #A49FFF;
  --theme-on-primary:     #171522;
  --theme-primary-tint:   #312C57;
  --theme-primary-wash:   #24213E;
  --theme-accent:         #6EA8FF;
  --theme-on-accent:      #101928;

  --theme-surface:        #202127;
  --theme-surface-alt:    #15161B;
  --theme-surface-sunken: #0F1014;
  --theme-border:         #3A3B46;
  --theme-border-strong:  #535563;
  --theme-text:           #F4F4F6;
  --theme-text-muted:     #C4C5CD;
  --theme-text-subtle:    #A1A3AD;

  --theme-success:        #54D6AA;
  --theme-warning:        #FFD166;
  --theme-danger:         #FF866B;
  --theme-info:           #6EA8FF;
  --theme-success-text:   #54D6AA;
  --theme-warning-text:   #FFD166;
  --theme-danger-text:    #FF866B;
  --theme-info-text:      #6EA8FF;

  --theme-shadow:         0 1px 2px rgba(0, 0, 0, 0.34);
  --theme-gradient-brand: linear-gradient(180deg, #ADA9FF 0%, #8B85FF 100%);
  --theme-gradient-cta:   linear-gradient(115deg, #8B85FF 0%, #6EA8FF 100%);
  --theme-gradient-dark:  linear-gradient(160deg, #363746 0%, #24252D 50%, #15161B 100%);
  --theme-gradient-gloss: linear-gradient(180deg, rgba(255,255,255,0.18) 0%, rgba(255,255,255,0) 100%);
  --theme-gradient-stat-blue:  linear-gradient(151deg, #8EBBFF 18%, #8B85FF 89%);
  --theme-gradient-stat-green: linear-gradient(137deg, #83DDBE 18%, #54D6AA 80%);
  --theme-gradient-stat-pink:  linear-gradient(121deg, #FF86C8 20%, #FFD166 81%);
  --theme-gradient-stat-cyan:  linear-gradient(142deg, #6EA8FF 22%, #54D6FF 72%);

  --theme-shadow-xs: 0 1px 1px rgba(0, 0, 0, 0.28);
  --theme-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.34);
  --theme-shadow-md: 0 6px 12px rgba(0, 0, 0, 0.38), 0 2px 4px rgba(0, 0, 0, 0.24);
  --theme-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.48);
  --theme-ring-active: 0 0 0 1px #202127, 0 1px 2px rgba(0, 0, 0, 0.48);

  --theme-elevation-blue:  #29284B;
  --theme-elevation-green: #1C3A37;
  --theme-elevation-pink:  #3A2639;
  --theme-elevation-amber: #3B3024;
}

/* ========================================================
   REDUCED-MOTION (Design-Language §7.5 — Pflicht-Regel).
   Bei prefers-reduced-motion wird ALLE Motion abgeschaltet: Dauer-Tokens -> 0ms.
   Loops (Shimmer/Spinner) separat per `animation: none`, da 0ms-Dauer eine
   Endlos-Animation nicht stoppt. Funktionalitaet bleibt IMMER erhalten.
   (Spiegelt den bestehenden @vw/ui-Block in tokens.css; falls dieses File
   ohne tokens.css geladen wird, setzt es die --theme-motion-*-Dauern selbst.)
   ======================================================== */

@media (prefers-reduced-motion: reduce) {
  :root {
    --theme-motion-duration-fast: 0ms;
    --theme-motion-duration-base: 0ms;
    --theme-motion-duration-slow: 0ms;
  }
  /* Loops separat killen (0ms-Dauer stoppt keine Endlos-Animation). */
  .vw-skeleton,
  .vw-spinner,
  [data-motion-loop] {
    animation: none !important;
  }
}

/* ========================================================
   ALIAS-BRIDGE (OPT-IN, kein Breaking Change).
   Hebt die @vw/ui-Editor-Tokens (--c-*) auf die Konvergenz-Werte —
   NUR innerhalb des explizit gesetzten Scopes `.vw-theme-bridge`
   (z.B. die CMS-Editor-Shell), damit die ~58 anderen Remotes, die `@vw/ui`
   nutzen, UNBERUEHRT bleiben (sie setzen diesen Scope nicht).
   Design-Language §4 „Bruecke zu @vw/ui": Werte werden GESETZT, nicht neu
   erfunden. So koennen Bestands-Komponenten in der CMS-Shell die Marken-Optik
   tragen, ohne dass ihre Templates Token-Namen tauschen muessen.
   ======================================================== */

.vw-theme-bridge {
  /* Marke/Akzent -> Lila-Primaer. */
  --c-brand:        var(--theme-primary);
  --c-app-accent:   var(--theme-primary);
  --c-app-accent-on: var(--theme-on-primary);
  --c-focus:        var(--theme-primary);
  /* Karten-Kontext-Radius auf den 12px-Kit-Konsens. */
  --radius:         var(--theme-card-radius);
  --radius-sm:      var(--theme-button-radius);
  /* Mikro-Schatten-System. */
  --shadow-sm:      var(--theme-shadow-sm);
  --shadow:         var(--theme-shadow-md);
  --shadow-lg:      var(--theme-shadow-lg);
}

:root {
  /* --- Marke (Theme v2: Indigo #5F57FF, vorher Lila #6D40E6) ------------
     --brand ist der Tweak-Hook (VwTweaksPanel schreibt ihn auf <html>);
     --c-brand bleibt der historische Editor-Token-Name und folgt --brand. */
  --brand: #5f57ff;
  --brand-ink: color-mix(in oklab, var(--brand) 86%, #1d1d3a);
  --brand-soft: color-mix(in oklab, var(--brand) 10%, white);
  --brand-softer: color-mix(in oklab, var(--brand) 5%, white);
  --brand-line: color-mix(in oklab, var(--brand) 26%, white);

  /* Candy-Gradients (Theme v2, exakt aus dem Export). */
  --grad-brand: linear-gradient(150deg, color-mix(in oklab, var(--brand) 72%, #C9B8FF) 0%, var(--brand) 55%, color-mix(in oklab, var(--brand) 78%, #221A5E) 100%);
  --grad-brand-soft: linear-gradient(180deg, color-mix(in oklab, var(--brand) 13%, white) 0%, color-mix(in oklab, var(--brand) 7%, white) 100%);
  --grad-panel: linear-gradient(180deg, #FFFFFF 0%, #FBFBFE 100%);

  /* --- Flächen & Text (Theme v2 „Kit Look") --- */
  --bg: #f6f7f9;
  --bg-panel: #ffffff;
  --bg-elev: #ffffff;
  /* ACHTUNG: --bg-sidebar ist seit Theme v2 ein GRADIENT (Export-Soll) —
     nur in background/background-image verwenden, nie in background-color.
     Das Tailwind-Preset mappt `bg-sidebar` darum auf background-image. */
  --bg-sidebar: linear-gradient(180deg, color-mix(in oklab, var(--brand) 3%, #FBFBFD) 0%, #F8F9FB 45%, color-mix(in oklab, #4FB3DC 3%, #F6F8FA) 100%);
  --bg-inset: #f1f2f6;
  --bg-hover: rgba(46, 46, 56, 0.05);
  --scrollbar-thumb: #d6d8df;
  --scrollbar-thumb-hover: #bfc2cc;
  /* Aktive Zeile/Item = Brand-Tint (Duo-Logik: Indigo für UI-Chrome). */
  --bg-active: var(--brand-soft);
  --border: #e6e7ec;
  --border-soft: #edeff3;
  --border-strong: #d8d9e0;
  --text: #2e2e38;
  --text-2: #5f6678;
  /* WCAG-AA-Kontrast (W6.a11y-fix-tokens, Audit F1 / SC 1.4.3) — BEWUSSTE
     Abweichung vom Export (dessen --text-3 #9AA0AD ≈ 2.9:1 fällt durch):
     --text-2/3/4 werden in App-Chrome, Chips, Badges und Statuszeilen als
       echter UI-Text genutzt und müssen deshalb auch auf --bg-inset/--bg-hover
       ≥ 4.5:1 erreichen. */
  --text-3: #646b7e;
  --text-4: #5f6678;

  /* --- Status (Theme v2: ok/warn/bad mit Soft-Flächen) --- */
  --ok: #15997b;
  --ok-soft: #e5f6f1;
  --warn: #b07c10;
  --warn-soft: #fbf2dc;
  /* White status text on badges must remain AA at normal 10px weight.
     #d6455d measured 4.31:1; the calibrated danger fill is 5.00:1. */
  --bad: #c23148;
  --bad-soft: #fbeaed;

  /* --- App-Akzentfarben — Theme-v2-Kit-Palette (rekalibriert) ---
     Token-NAMEN unverändert (63 Remotes), nur Werte gehoben. */
  --c-mail: #336bb7;
  --c-calendar: #e25c5c;
  --c-files: #2ba3b4;
  --c-docs: #e8762d;
  --c-slides: #2d7fe8;
  --c-notes: #e5a819;
  --c-reminders: #ed8936;
  --c-contacts: #a0795a;
  --c-wiki: #5f57ff;
  --c-crm: #2fa463;
  --c-finance: #15997b;
  --c-dam: #b42355;
  --c-automation: #8b5cf6;
  --c-events: #a855e8;
  --c-projects: #3d8fe0;
  --c-build: #5f57ff;
  --c-support: #4fb3dc;
  --c-people: #f06a8a;
  --c-marketing: #f0764f;
  --c-analytics: #38a8de;
  --c-commerce: #a8895f;
  --c-admin: #8e929e;
  --c-sites: #b42355;
  /* CMS Core: Coral-Rot aus dem freigegebenen Core-Board. Der eigene Token
     trennt CMS-Chrome bewusst vom globalen Marken-Indigo. */
  --c-core: #ef405a;
  --c-surveys: #dfae15;
  /* Office-Kollaboration: bewusst getrennte App-Identitaeten. Tabellen ist
     die violette Record-/Database-App, Sheets die gruene Kalkulation,
     Komponenten die orange Bausteinbibliothek und Chat der violette Dialog. */
  --c-tables: #6758e9;
  --c-sheets: #159a5b;
  --c-components: #d36c13;
  --c-chat: #8b5cf6;
  --c-domains: #3d7be0;
  --c-subsystems: #5f57ff;
  --c-assist: #8b5cf6;
  --c-whiteboard: #ef9a2d;
  --c-studio: #b42355;

  /* Extended subsystems (Kit-Palette, unverändert kompatibel) */
  --c-legal: #4f46e5;
  --c-research: #db2777;
  --c-logistics: #0891b2;
  --c-aistudio: #7c3aed;
  /* Video-Editor-Akzent (Design-Wahrheit theme.css: --c-video #C44FE9).
     Zentral hier, damit das Video-Remote ihn nicht remote-lokal overriden muss. */
  --c-video: #c44fe9;

  /* --- Text-auf-Akzent (Audit F2, SC 1.4.3 / 1.4.11) --------------------
     useOnAccent wählt den Vordergrund automatisch nach Luminanz. Für die
     "Totband"-Akzente (Luminanz nahe der Schwelle → WEDER Weiß NOCH dunkler
     Text erreicht auf der Basis 4.5:1) gibt es vertiefte, hue-gleiche
     `*-fill`-Varianten, auf denen WEISS sicher ≥ 4.5:1 erreicht. Gefüllte
     Buttons/Icons (VwButton/VwAppIcon) substituieren die Basis durch den Fill
     (FILL_SUBSTITUTE). Mit der Theme-v2-Palette berechnet (validierte
     WCAG-2.1-Kontraste):
       --c-mail       #336bb7 → weiß 5.3:1 ✓ (Fill = Basiston, trägt selbst)
       --c-events     #a855e8 → weiß 4.09 ✗ / dunkel 4.11 ✗ → Fill #9333ea (5.4)
       --c-danger/bad #d6455d → weiß 4.31 ✗ / dunkel 3.90 ✗ → Fill #c2334b (5.4)
       --c-automation #8b5cf6 → weiß 4.23 ✗ / dunkel 3.97 ✗ → Fill #7c3aed (5.7)
       --c-core       #ef405a → weiß 3.78 ✗ → Fill #d62f4b (4.81)
       --c-assist     #8b5cf6 → weiß 4.23 ✗ → Fill #7c3aed (5.7)
       --c-domains    #3d7be0 → weiß 4.11 ✗ / dunkel 4.09 ✗ → Fill #2f6ad0 (5.1)
       --c-slides     #2d7fe8 → weiß 3.95 ✗ / dunkel 4.26 ✗ → Fill #1f6fd8 (4.9)
       --c-contacts   #a0795a → weiß 3.91 ✗ / dunkel 4.31 ✗ → Fill #b08b6e
                      (dunkler Text 5.4 — heller Fill, da brauner Mid-Ton) */
  --c-mail-fill: #336bb7;
  --c-events-fill: #9333ea;
  --c-danger-fill: #c2334b;
  --c-automation-fill: #7c3aed;
  --c-core-fill: #d62f4b;
  --c-assist-fill: #7c3aed;
  --c-domains-fill: #2f6ad0;
  --c-slides-fill: #1f6fd8;
  --c-contacts-fill: #b08b6e;
  --c-chat-fill: #7c3aed;

  /* Suite-Akzent + pro-App überschreibbarer App-Akzent (AppShell/AppHeader
     setzen ihn). Theme v2 (Design-Export 2026-06-11): Primary ist das
     Marken-Indigo #5F57FF — Buttons, aktive Navigation, Links, Fokus. */
  --c-brand: var(--brand);
  --c-brand-hover: var(--brand-ink); /* Hover/Pressed */
  --c-brand-tint: var(--brand-soft); /* Active-/Hover-Fläche */
  --c-app-accent: var(--c-brand);
  /* Default-Vordergrund auf dem App-Akzent (Weiß auf #5F57FF = 5.0:1). */
  --c-app-accent-on: #ffffff;
  /* Fokusring — Marken-Indigo, ≥ 3:1 auf --bg. */
  --c-focus: var(--brand);
  /* Backwards-compatible alias for legacy focus-ring CSS. */
  --focus: var(--c-focus);
  /* Semantik: danger/success/warning auf der Theme-v2-Statusfamilie. */
  --c-danger: var(--bad);
  --c-success: var(--ok);
  --c-warning: #e5a819; /* Warn-FLÄCHE (Dots/Badges); Text nutzt *-text. */
  /* Semantische Farben als TEXT/Glyph auf neutraler Standardfläche (AA):
       --c-danger-text  #c23148 → 5.0:1 (Hue von --bad #d6455d)
       --c-warning-text #846200 → 5.6:1
       --c-success-text #0d6f58 → AA-safe on the light success tint (Hue von --ok #15997b) */
  --c-danger-text: #c23148;
  --c-warning-text: #846200;
  --c-success-text: #0d6f58;

  /* Status-Set INFO / LINK / NEUTRAL (CUI-KIT-01). Vollfarbe nur für
     Flächen/Punkte/Badges; als TEXTfarbe die dunklere `*-text`-Variante. */
  --c-info: #5f57ff;
  --c-info-text: #4845c9;
  --c-link: #2d7fe8;
  --c-link-text: #1d5fd6;
  --c-neutral: #8e929e;
  --c-neutral-text: #646b7e;

  /* --- Live-/Review-Status + On-Accent (CUI-KIT-02) --- */
  --c-live-active: #2fa463;
  --c-live-paused: #dfae15;
  --c-review: #8b5cf6;
  --c-review-text: #7c3aed;
  --c-on-accent: #ffffff;

  /* --- Soft-/Tint-Flächen für Status-Hintergründe (CUI-KIT-02) ---
     Theme v2: feste Soft-Töne statt rgba()-Mischung (Kit-Look). */
  --c-info-soft: var(--brand-soft);
  --c-success-soft: var(--ok-soft);
  --c-warning-soft: var(--warn-soft);
  --c-danger-soft: var(--bad-soft);
  --c-neutral-soft: #eef0f3;
  --c-review-soft: #f1ebfd;

  /* --- Radius (Theme v2: skaliert über den --rf-Tweak) --- */
  --rf: 1;
  --radius-sm: calc(8px * var(--rf));
  --radius: calc(11px * var(--rf));
  --radius-lg: calc(15px * var(--rf));
  --radius-xl: calc(22px * var(--rf));
  --radius-full: 999px;

  /* --- Tiefe (Theme v2 Default: FEINE BORDERS statt Schatten;
     Variante „Schatten" über html[data-surface="shadow"] unten) --- */
  --shadow-sm: 0 0 0 1px var(--border-soft);
  --shadow: 0 0 0 1px var(--border), 0 2px 10px rgba(82, 88, 102, 0.05);
  --shadow-lg: 0 0 0 1px var(--border), 0 24px 60px rgba(46, 46, 56, 0.16);

  /* --- Schriften (Theme v2: Schibsted Grotesk; self-hosted) --- */
  --font: "Schibsted Grotesk", "Geist", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  --font-mono: "Geist Mono", "SF Mono", ui-monospace, monospace;
  --font-serif: "Instrument Serif", "New York", "Times New Roman", serif;

  /* Typo-Skala (Theme v2: 13.5px-Body). */
  --text-xs: 11px;
  --text-sm: 12px;
  --text-base: 13.5px;
  --text-md: 14px;
  --text-lg: 16px;
  --text-xl: 20px;
  --text-2xl: 28px;
  --leading-tight: 1.2;
  --leading-normal: 1.5;

  /* Spacing (4er-Raster, ergänzend). */
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
  --space-5: 20px; --space-6: 24px; --space-8: 32px; --space-12: 48px;

  /* Motion (Theme v2 „lebendig": Dauern skalieren über --mo;
     reduced-motion-Override unten zieht sie auf 0ms). */
  --mo: 1; /* Motion-Multiplikator (Tweak: calm 0.6 / lively 1 / max 1.18 / off 0) */
  --t-fast: calc(130ms * var(--mo));
  --t-med: calc(220ms * var(--mo));
  --t-slow: calc(360ms * var(--mo));
  --motion-fast: var(--t-fast);
  --motion-base: var(--t-med);
  --motion-slow: var(--t-slow);
  --ease-out: cubic-bezier(0.22, 0.61, 0.36, 1);
  --ease-spring: cubic-bezier(0.34, 1.45, 0.5, 1);
}

/* ---------- Tweak: Flächen-Tiefe (Default = Borders, Variante Schatten) -- */

html[data-surface="shadow"] {
  --shadow-sm: 0 1px 2px rgba(46, 46, 56, 0.05), 0 0 0 0.5px rgba(46, 46, 56, 0.05);
  --shadow: 0 4px 18px rgba(46, 46, 56, 0.07), 0 0 0 0.5px rgba(46, 46, 56, 0.05);
  --shadow-lg: 0 24px 64px rgba(46, 46, 56, 0.18), 0 0 0 0.5px rgba(46, 46, 56, 0.06);
}

/* ---------- Tweak: Typografie ---------- */

html[data-font="geist"]    { --font: "Geist", -apple-system, BlinkMacSystemFont, system-ui, sans-serif; }

html[data-font="hanken"]   { --font: "Hanken Grotesk", -apple-system, BlinkMacSystemFont, system-ui, sans-serif; }

html[data-font="schibsted"]{ --font: "Schibsted Grotesk", "Geist", -apple-system, system-ui, sans-serif; }

/* ---------- Tweak: Dichte ---------- */

html[data-density="compact"] body { zoom: 0.93; }

html[data-density="roomy"] body { zoom: 1.07; }

/* ---------- Tweak: Farblogik „Nur Marke" (Duo ist Default) ----------
   data-accent="brand": alle App-Akzente kollabieren auf die Marke. */

html[data-accent="brand"] {
  --c-mail: var(--brand); --c-calendar: var(--brand); --c-files: var(--brand);
  --c-docs: var(--brand); --c-slides: var(--brand);
  --c-notes: var(--brand); --c-reminders: var(--brand); --c-contacts: var(--brand);
  --c-wiki: var(--brand); --c-crm: var(--brand); --c-finance: var(--brand);
  --c-dam: var(--brand); --c-automation: var(--brand); --c-events: var(--brand);
  --c-projects: var(--brand); --c-build: var(--brand); --c-support: var(--brand);
  --c-people: var(--brand); --c-marketing: var(--brand); --c-analytics: var(--brand);
  --c-commerce: var(--brand); --c-admin: var(--brand); --c-sites: var(--brand);
  --c-core: var(--brand); --c-surveys: var(--brand); --c-tables: var(--brand);
  --c-sheets: var(--brand); --c-components: var(--brand); --c-chat: var(--brand);
  --c-domains: var(--brand); --c-subsystems: var(--brand); --c-assist: var(--brand);
  --c-whiteboard: var(--brand); --c-studio: var(--brand); --c-legal: var(--brand);
  --c-research: var(--brand); --c-logistics: var(--brand); --c-aistudio: var(--brand);
  --c-video: var(--brand);
  --c-events-fill: var(--brand); --c-mail-fill: var(--brand);
  /* danger bleibt semantisch rot (kein App-Akzent) → --c-danger-fill NICHT
     auf die Marke kollabieren. */
  --c-automation-fill: var(--brand);
  --c-core-fill: var(--brand); --c-assist-fill: var(--brand);
  --c-domains-fill: var(--brand); --c-slides-fill: var(--brand);
  --c-contacts-fill: var(--brand); --c-chat-fill: var(--brand);
}

/* ---------- Basis-Typografie (Theme v2: 13.5px / 1.5, antialiased) ------ */

body {
  font-family: var(--font);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-size: 13.5px;
  line-height: 1.5;
}

/* Selektion theme-bewusst gegen die Panel-Fläche mischen (nicht hart gegen
   white) — sonst wird der Auswahl-Hintergrund im Dark Mode fast weiß und der
   Auswahl-Text (--text ≈ #f5f5f7) unsichtbar. */

::-moz-selection { background: color-mix(in oklab, var(--brand) 28%, var(--bg-panel)); }

::selection { background: color-mix(in oklab, var(--brand) 28%, var(--bg-panel)); }

::-webkit-scrollbar { width: 9px; height: 9px; }

::-webkit-scrollbar-track { background: transparent; }

::-webkit-scrollbar-thumb { background: var(--scrollbar-thumb); border-radius: 6px; border: 2px solid transparent; background-clip: content-box; }

::-webkit-scrollbar-thumb:hover { background: var(--scrollbar-thumb-hover); background-clip: content-box; border: 2px solid transparent; }

/* Dunkler Modus: Flächen/Text invertieren, App-Akzente bleiben (Kit-Palette
   trägt auf dunkel). Theme v2 ist Light-first; Dark bleibt funktional. */

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #1c1c1e;
    --bg-panel: #2c2c2e;
    --bg-elev: #3a3a3c;
    --bg-sidebar: linear-gradient(180deg, rgba(28, 28, 30, 0.96) 0%, rgba(28, 28, 30, 0.9) 100%);
    --bg-inset: #3a3a3c;
    --bg-hover: rgba(255, 255, 255, 0.06);
    --scrollbar-thumb: #5a5b66;
    --scrollbar-thumb-hover: #747682;
    --bg-active: rgba(139, 133, 255, 0.16);
    /* Legacy aliases used by VwEditorLayout and older remotes. */
    --c-bg: #1c1c1e;
    --c-surface: #2c2c2e;
    --c-border: rgba(255, 255, 255, 0.10);
    --grad-panel: linear-gradient(180deg, #2c2c2e 0%, #29292c 100%);
    --border: rgba(255, 255, 255, 0.10);
    --border-soft: rgba(255, 255, 255, 0.07);
    --border-strong: rgba(255, 255, 255, 0.16);
    --text: #f5f5f7;
    --text-2: #aeaeb2;
    /* WCAG-AA-Kontrast (Audit F1), Dark Mode. */
    --text-3: #9a9aa0;
    --text-4: #86868b;
    /* Dark-Brand: helleres Indigo der Gradient-Familie, damit der Akzent
       auf dunklen Flächen trägt. */
    --brand: #8b85ff;
    --brand-ink: color-mix(in oklab, var(--brand) 80%, white);
    --brand-soft: color-mix(in oklab, var(--brand) 18%, #1c1c1e);
    --brand-softer: color-mix(in oklab, var(--brand) 10%, #1c1c1e);
    --brand-line: color-mix(in oklab, var(--brand) 32%, #1c1c1e);
    --c-brand-hover: #9d98ff;
    --c-brand-tint: rgba(139, 133, 255, 0.16);
    /* Status-Soft-Flächen auf dunkel: Hue-Tints mit höherer Deckung. */
    --ok-soft: rgba(21, 153, 123, 0.22);
    --warn-soft: rgba(229, 168, 25, 0.20);
    --bad: #c23148;
    --bad-soft: rgba(194, 49, 72, 0.22);
    /* Semantische Text-Varianten im Dark Mode (AA, Audit F2). */
    --c-danger-text: #ff8094;
    --c-warning-text: #e5a819;
    --c-success-text: #34c79b;
    /* Status-Set INFO / LINK / NEUTRAL im Dark Mode (CUI-KIT-01). */
    --c-info-text: #a5a3f5;
    --c-link-text: #6ea8ff;
    --c-neutral-text: #9a9aa0;
    /* Live-/Review-Status (CUI-KIT-02). */
    --c-review-text: #c4a7fa;
    /* Soft-/Tint-Flächen im Dark Mode. */
    --c-info-soft: rgba(139, 133, 255, 0.18);
    --c-success-soft: rgba(47, 164, 99, 0.20);
    --c-warning-soft: rgba(229, 168, 25, 0.20);
    --c-danger-soft: rgba(214, 69, 93, 0.20);
    --c-neutral-soft: rgba(142, 146, 158, 0.22);
    --c-review-soft: rgba(139, 92, 246, 0.22);
    --shadow-sm: 0 0 0 1px var(--border-soft);
    --shadow: 0 0 0 1px var(--border), 0 4px 16px rgba(0, 0, 0, 0.5);
    --shadow-lg: 0 0 0 1px var(--border), 0 16px 48px rgba(0, 0, 0, 0.6);
  }
}

/* Manuell gewähltes Dunkel-Schema auf Systemen mit hellem OS-Theme. */

:root[data-theme="dark"] {
  --bg: #1c1c1e;
  --bg-panel: #2c2c2e;
  --bg-elev: #3a3a3c;
  --bg-sidebar: linear-gradient(180deg, rgba(28, 28, 30, 0.96) 0%, rgba(28, 28, 30, 0.9) 100%);
  --bg-inset: #3a3a3c;
  --bg-hover: rgba(255, 255, 255, 0.06);
  --scrollbar-thumb: #5a5b66;
  --scrollbar-thumb-hover: #747682;
  --bg-active: rgba(139, 133, 255, 0.16);
  /* Legacy aliases used by VwEditorLayout and older remotes. */
  --c-bg: #1c1c1e;
  --c-surface: #2c2c2e;
  --c-border: rgba(255, 255, 255, 0.10);
  --grad-panel: linear-gradient(180deg, #2c2c2e 0%, #29292c 100%);
  --border: rgba(255, 255, 255, 0.10);
  --border-soft: rgba(255, 255, 255, 0.07);
  --border-strong: rgba(255, 255, 255, 0.16);
  --text: #f5f5f7;
  --text-2: #aeaeb2;
  --text-3: #9a9aa0;
  --text-4: #86868b;
  --brand: #8b85ff;
  --brand-ink: color-mix(in oklab, var(--brand) 80%, white);
  --brand-soft: color-mix(in oklab, var(--brand) 18%, #1c1c1e);
  --brand-softer: color-mix(in oklab, var(--brand) 10%, #1c1c1e);
  --brand-line: color-mix(in oklab, var(--brand) 32%, #1c1c1e);
  --c-brand-hover: #9d98ff;
  --c-brand-tint: rgba(139, 133, 255, 0.16);
  --ok-soft: rgba(21, 153, 123, 0.22);
  --warn-soft: rgba(229, 168, 25, 0.20);
  --bad: #c23148;
  --bad-soft: rgba(194, 49, 72, 0.22);
  --c-danger-text: #ff8094;
  --c-warning-text: #e5a819;
  --c-success-text: #34c79b;
  --c-info-text: #a5a3f5;
  --c-link-text: #6ea8ff;
  --c-neutral-text: #9a9aa0;
  --c-review-text: #c4a7fa;
  --c-info-soft: rgba(139, 133, 255, 0.18);
  --c-success-soft: rgba(47, 164, 99, 0.20);
  --c-warning-soft: rgba(229, 168, 25, 0.20);
  --c-danger-soft: rgba(214, 69, 93, 0.20);
  --c-neutral-soft: rgba(142, 146, 158, 0.22);
  --c-review-soft: rgba(139, 92, 246, 0.22);
  --shadow-sm: 0 0 0 1px var(--border-soft);
  --shadow: 0 0 0 1px var(--border), 0 4px 16px rgba(0, 0, 0, 0.5);
  --shadow-lg: 0 0 0 1px var(--border), 0 16px 48px rgba(0, 0, 0, 0.6);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --mo: 0;
    --motion-fast: 0ms;
    --motion-base: 0ms;
    --motion-slow: 0ms;
  }
}

/* Basale Typografie-Grundlage. Optional von der App geladen. */

.vw-root,
:root {
  color-scheme: light dark;
}
*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*//*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: var(--font); /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: var(--font-mono); /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/
dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/
:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */
[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}
.\!container {
  width: 100% !important;
}
.container {
  width: 100%;
}
@media (min-width: 640px) {

  .\!container {
    max-width: 640px !important;
  }

  .container {
    max-width: 640px;
  }
}
@media (min-width: 768px) {

  .\!container {
    max-width: 768px !important;
  }

  .container {
    max-width: 768px;
  }
}
@media (min-width: 1024px) {

  .\!container {
    max-width: 1024px !important;
  }

  .container {
    max-width: 1024px;
  }
}
@media (min-width: 1280px) {

  .\!container {
    max-width: 1280px !important;
  }

  .container {
    max-width: 1280px;
  }
}
@media (min-width: 1536px) {

  .\!container {
    max-width: 1536px !important;
  }

  .container {
    max-width: 1536px;
  }
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}
.pointer-events-none {
  pointer-events: none;
}
.pointer-events-auto {
  pointer-events: auto;
}
.visible {
  visibility: visible;
}
.collapse {
  visibility: collapse;
}
.static {
  position: static;
}
.fixed {
  position: fixed;
}
.absolute {
  position: absolute;
}
.relative {
  position: relative;
}
.sticky {
  position: sticky;
}
.inset-0 {
  inset: 0px;
}
.inset-y-0 {
  top: 0px;
  bottom: 0px;
}
.-bottom-0\.5 {
  bottom: -0.125rem;
}
.-left-\[70px\] {
  left: -70px;
}
.-right-0\.5 {
  right: -0.125rem;
}
.-top-0\.5 {
  top: -0.125rem;
}
.-top-12 {
  top: -3rem;
}
.-top-px {
  top: -1px;
}
.bottom-0 {
  bottom: 0px;
}
.bottom-2 {
  bottom: 0.5rem;
}
.bottom-5 {
  bottom: 1.25rem;
}
.bottom-\[22px\] {
  bottom: 22px;
}
.bottom-\[56px\] {
  bottom: 56px;
}
.left-0 {
  left: 0px;
}
.left-1\/2 {
  left: 50%;
}
.left-2 {
  left: 0.5rem;
}
.left-2\.5 {
  left: 0.625rem;
}
.left-3 {
  left: 0.75rem;
}
.right-0 {
  right: 0px;
}
.right-1\.5 {
  right: 0.375rem;
}
.right-2 {
  right: 0.5rem;
}
.right-3 {
  right: 0.75rem;
}
.right-\[22px\] {
  right: 22px;
}
.top-0 {
  top: 0px;
}
.top-1\/2 {
  top: 50%;
}
.top-8 {
  top: 2rem;
}
.top-\[3px\] {
  top: 3px;
}
.top-\[58px\] {
  top: 58px;
}
.top-full {
  top: 100%;
}
.z-10 {
  z-index: 10;
}
.z-20 {
  z-index: 20;
}
.z-30 {
  z-index: 30;
}
.z-50 {
  z-index: 50;
}
.z-\[120\] {
  z-index: 120;
}
.z-\[200\] {
  z-index: 200;
}
.z-\[60\] {
  z-index: 60;
}
.z-\[75\] {
  z-index: 75;
}
.order-2 {
  order: 2;
}
.m-0 {
  margin: 0px;
}
.m-auto {
  margin: auto;
}
.mx-\[18px\] {
  margin-left: 18px;
  margin-right: 18px;
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.my-1 {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}
.my-1\.5 {
  margin-top: 0.375rem;
  margin-bottom: 0.375rem;
}
.mb-1 {
  margin-bottom: 0.25rem;
}
.mb-1\.5 {
  margin-bottom: 0.375rem;
}
.mb-2 {
  margin-bottom: 0.5rem;
}
.mb-2\.5 {
  margin-bottom: 0.625rem;
}
.mb-3 {
  margin-bottom: 0.75rem;
}
.mb-4 {
  margin-bottom: 1rem;
}
.mb-8 {
  margin-bottom: 2rem;
}
.mb-9 {
  margin-bottom: 2.25rem;
}
.mb-px {
  margin-bottom: 1px;
}
.ml-0 {
  margin-left: 0px;
}
.ml-0\.5 {
  margin-left: 0.125rem;
}
.ml-1 {
  margin-left: 0.25rem;
}
.ml-2 {
  margin-left: 0.5rem;
}
.ml-auto {
  margin-left: auto;
}
.mr-0 {
  margin-right: 0px;
}
.mr-auto {
  margin-right: auto;
}
.mt-0\.5 {
  margin-top: 0.125rem;
}
.mt-1 {
  margin-top: 0.25rem;
}
.mt-1\.5 {
  margin-top: 0.375rem;
}
.mt-2 {
  margin-top: 0.5rem;
}
.mt-2\.5 {
  margin-top: 0.625rem;
}
.mt-3 {
  margin-top: 0.75rem;
}
.mt-4 {
  margin-top: 1rem;
}
.mt-5 {
  margin-top: 1.25rem;
}
.mt-7 {
  margin-top: 1.75rem;
}
.mt-\[11px\] {
  margin-top: 11px;
}
.mt-\[12vh\] {
  margin-top: 12vh;
}
.mt-\[1px\] {
  margin-top: 1px;
}
.mt-\[3px\] {
  margin-top: 3px;
}
.mt-\[7px\] {
  margin-top: 7px;
}
.mt-px {
  margin-top: 1px;
}
.line-clamp-2 {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.line-clamp-3 {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}
.\!block {
  display: block !important;
}
.block {
  display: block;
}
.inline-block {
  display: inline-block;
}
.inline {
  display: inline;
}
.flex {
  display: flex;
}
.inline-flex {
  display: inline-flex;
}
.table {
  display: table;
}
.table-row {
  display: table-row;
}
.grid {
  display: grid;
}
.contents {
  display: contents;
}
.hidden {
  display: none;
}
.aspect-\[4\/3\] {
  aspect-ratio: 4/3;
}
.size-1\.5 {
  width: 0.375rem;
  height: 0.375rem;
}
.size-12 {
  width: 3rem;
  height: 3rem;
}
.size-2 {
  width: 0.5rem;
  height: 0.5rem;
}
.size-3\.5 {
  width: 0.875rem;
  height: 0.875rem;
}
.size-4 {
  width: 1rem;
  height: 1rem;
}
.size-5 {
  width: 1.25rem;
  height: 1.25rem;
}
.size-6 {
  width: 1.5rem;
  height: 1.5rem;
}
.size-7 {
  width: 1.75rem;
  height: 1.75rem;
}
.size-8 {
  width: 2rem;
  height: 2rem;
}
.size-\[10px\] {
  width: 10px;
  height: 10px;
}
.size-\[16px\] {
  width: 16px;
  height: 16px;
}
.size-\[18px\] {
  width: 18px;
  height: 18px;
}
.size-\[19px\] {
  width: 19px;
  height: 19px;
}
.size-\[22px\] {
  width: 22px;
  height: 22px;
}
.size-\[26px\] {
  width: 26px;
  height: 26px;
}
.size-\[38px\] {
  width: 38px;
  height: 38px;
}
.size-\[52px\] {
  width: 52px;
  height: 52px;
}
.size-\[5px\] {
  width: 5px;
  height: 5px;
}
.size-\[6px\] {
  width: 6px;
  height: 6px;
}
.size-\[7px\] {
  width: 7px;
  height: 7px;
}
.h-1 {
  height: 0.25rem;
}
.h-10 {
  height: 2.5rem;
}
.h-16 {
  height: 4rem;
}
.h-24 {
  height: 6rem;
}
.h-28 {
  height: 7rem;
}
.h-3 {
  height: 0.75rem;
}
.h-7 {
  height: 1.75rem;
}
.h-8 {
  height: 2rem;
}
.h-9 {
  height: 2.25rem;
}
.h-\[18px\] {
  height: 18px;
}
.h-\[220px\] {
  height: 220px;
}
.h-\[26px\] {
  height: 26px;
}
.h-\[30px\] {
  height: 30px;
}
.h-\[34px\] {
  height: 34px;
}
.h-\[38px\] {
  height: 38px;
}
.h-dvh {
  height: 100dvh;
}
.h-full {
  height: 100%;
}
.h-px {
  height: 1px;
}
.max-h-\[320px\] {
  max-height: 320px;
}
.max-h-\[380px\] {
  max-height: 380px;
}
.max-h-dvh {
  max-height: 100dvh;
}
.min-h-0 {
  min-height: 0px;
}
.min-h-\[120px\] {
  min-height: 120px;
}
.min-h-\[60px\] {
  min-height: 60px;
}
.min-h-dvh {
  min-height: 100dvh;
}
.w-10 {
  width: 2.5rem;
}
.w-2\/3 {
  width: 66.666667%;
}
.w-3 {
  width: 0.75rem;
}
.w-56 {
  width: 14rem;
}
.w-7 {
  width: 1.75rem;
}
.w-\[280px\] {
  width: 280px;
}
.w-\[284px\] {
  width: 284px;
}
.w-\[30px\] {
  width: 30px;
}
.w-\[380px\] {
  width: 380px;
}
.w-\[384px\] {
  width: 384px;
}
.w-\[3px\] {
  width: 3px;
}
.w-\[42px\] {
  width: 42px;
}
.w-\[600px\] {
  width: 600px;
}
.w-\[66px\] {
  width: 66px;
}
.w-\[min\(580px\2c 92vw\)\] {
  width: min(580px, 92vw);
}
.w-full {
  width: 100%;
}
.min-w-0 {
  min-width: 0px;
}
.min-w-4 {
  min-width: 1rem;
}
.min-w-\[150px\] {
  min-width: 150px;
}
.min-w-\[16px\] {
  min-width: 16px;
}
.min-w-\[180px\] {
  min-width: 180px;
}
.min-w-\[18px\] {
  min-width: 18px;
}
.min-w-\[192px\] {
  min-width: 192px;
}
.min-w-\[240px\] {
  min-width: 240px;
}
.min-w-\[260px\] {
  min-width: 260px;
}
.min-w-\[4\.5rem\] {
  min-width: 4.5rem;
}
.max-w-2xl {
  max-width: 42rem;
}
.max-w-4xl {
  max-width: 56rem;
}
.max-w-6xl {
  max-width: 72rem;
}
.max-w-\[1180px\] {
  max-width: 1180px;
}
.max-w-\[320px\] {
  max-width: 320px;
}
.max-w-\[420px\] {
  max-width: 420px;
}
.max-w-\[520px\] {
  max-width: 520px;
}
.max-w-\[560px\] {
  max-width: 560px;
}
.max-w-\[640px\] {
  max-width: 640px;
}
.max-w-\[78\%\] {
  max-width: 78%;
}
.max-w-\[80\%\] {
  max-width: 80%;
}
.max-w-\[92vw\] {
  max-width: 92vw;
}
.max-w-\[\2026px\] {
  max-width: …px;
}
.max-w-full {
  max-width: 100%;
}
.flex-1 {
  flex: 1 1 0%;
}
.flex-\[1_0_100\%\] {
  flex: 1 0 100%;
}
.flex-shrink {
  flex-shrink: 1;
}
.shrink-0 {
  flex-shrink: 0;
}
.border-collapse {
  border-collapse: collapse;
}
.-translate-x-1\/2 {
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.-translate-y-0 {
  --tw-translate-y: -0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.-translate-y-1\/2 {
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@keyframes pulse {

  50% {
    opacity: .5;
  }
}
.animate-pulse {
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@keyframes spin {

  to {
    transform: rotate(360deg);
  }
}
.animate-spin {
  animation: spin 1s linear infinite;
}
.cursor-grab {
  cursor: grab;
}
.cursor-not-allowed {
  cursor: not-allowed;
}
.cursor-pointer {
  cursor: pointer;
}
.touch-pan-x {
  --tw-pan-x: pan-x;
  touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom);
}
.touch-pan-y {
  --tw-pan-y: pan-y;
  touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom);
}
.select-none {
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.resize-none {
  resize: none;
}
.resize {
  resize: both;
}
.list-none {
  list-style-type: none;
}
.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid-cols-\[repeat\(auto-fill\2c minmax\(220px\2c 1fr\)\)\] {
  grid-template-columns: repeat(auto-fill,minmax(220px,1fr));
}
.flex-row {
  flex-direction: row;
}
.flex-row-reverse {
  flex-direction: row-reverse;
}
.flex-col {
  flex-direction: column;
}
.flex-wrap {
  flex-wrap: wrap;
}
.flex-nowrap {
  flex-wrap: nowrap;
}
.content-start {
  align-content: flex-start;
}
.items-start {
  align-items: flex-start;
}
.items-end {
  align-items: flex-end;
}
.items-center {
  align-items: center;
}
.items-baseline {
  align-items: baseline;
}
.justify-end {
  justify-content: flex-end;
}
.justify-center {
  justify-content: center;
}
.justify-between {
  justify-content: space-between;
}
.gap-0\.5 {
  gap: 0.125rem;
}
.gap-1 {
  gap: 0.25rem;
}
.gap-1\.5 {
  gap: 0.375rem;
}
.gap-2 {
  gap: 0.5rem;
}
.gap-2\.5 {
  gap: 0.625rem;
}
.gap-3 {
  gap: 0.75rem;
}
.gap-3\.5 {
  gap: 0.875rem;
}
.gap-4 {
  gap: 1rem;
}
.gap-6 {
  gap: 1.5rem;
}
.gap-\[11px\] {
  gap: 11px;
}
.gap-\[3px\] {
  gap: 3px;
}
.gap-\[5px\] {
  gap: 5px;
}
.gap-\[6px\] {
  gap: 6px;
}
.gap-\[7px\] {
  gap: 7px;
}
.gap-\[9px\] {
  gap: 9px;
}
.gap-px {
  gap: 1px;
}
.gap-x-2 {
  -moz-column-gap: 0.5rem;
       column-gap: 0.5rem;
}
.gap-x-4 {
  -moz-column-gap: 1rem;
       column-gap: 1rem;
}
.gap-x-\[14px\] {
  -moz-column-gap: 14px;
       column-gap: 14px;
}
.gap-y-0\.5 {
  row-gap: 0.125rem;
}
.gap-y-1 {
  row-gap: 0.25rem;
}
.gap-y-2 {
  row-gap: 0.5rem;
}
.space-y-1 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
}
.space-y-3 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
}
.space-y-4 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1rem * var(--tw-space-y-reverse));
}
.space-y-6 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));
}
.self-stretch {
  align-self: stretch;
}
.overflow-auto {
  overflow: auto;
}
.overflow-hidden {
  overflow: hidden;
}
.overflow-x-auto {
  overflow-x: auto;
}
.overflow-y-auto {
  overflow-y: auto;
}
.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.text-ellipsis {
  text-overflow: ellipsis;
}
.whitespace-nowrap {
  white-space: nowrap;
}
.whitespace-pre-wrap {
  white-space: pre-wrap;
}
.text-wrap {
  text-wrap: wrap;
}
.break-words {
  overflow-wrap: break-word;
}
.break-all {
  word-break: break-all;
}
.rounded {
  border-radius: var(--radius);
}
.rounded-2xl {
  border-radius: 1rem;
}
.rounded-\[--radius-lg\] {
  border-radius: var(--radius-lg);
}
.rounded-\[--radius-md\] {
  border-radius: var(--radius-md);
}
.rounded-\[--radius-sm\] {
  border-radius: var(--radius-sm);
}
.rounded-\[10px\] {
  border-radius: 10px;
}
.rounded-\[11px\] {
  border-radius: 11px;
}
.rounded-\[12px\] {
  border-radius: 12px;
}
.rounded-\[26px\] {
  border-radius: 26px;
}
.rounded-\[3px\] {
  border-radius: 3px;
}
.rounded-\[4px\] {
  border-radius: 4px;
}
.rounded-\[5px\] {
  border-radius: 5px;
}
.rounded-\[6px\] {
  border-radius: 6px;
}
.rounded-\[7px\] {
  border-radius: 7px;
}
.rounded-\[8px\] {
  border-radius: 8px;
}
.rounded-\[9px\] {
  border-radius: 9px;
}
.rounded-\[calc\(var\(--radius-sm\)-2px\)\] {
  border-radius: calc(var(--radius-sm) - 2px);
}
.rounded-\[var\(--radius\)\] {
  border-radius: var(--radius);
}
.rounded-\[var\(--radius-lg\)\] {
  border-radius: var(--radius-lg);
}
.rounded-\[var\(--radius-sm\)\] {
  border-radius: var(--radius-sm);
}
.rounded-full {
  border-radius: var(--radius-full);
}
.rounded-lg {
  border-radius: var(--radius-lg);
}
.rounded-md {
  border-radius: var(--radius);
}
.rounded-sm {
  border-radius: var(--radius-sm);
}
.rounded-xl {
  border-radius: var(--radius-xl);
}
.rounded-t-3xl {
  border-top-left-radius: 1.5rem;
  border-top-right-radius: 1.5rem;
}
.rounded-t-lg {
  border-top-left-radius: var(--radius-lg);
  border-top-right-radius: var(--radius-lg);
}
.rounded-tl-\[3px\] {
  border-top-left-radius: 3px;
}
.rounded-tr-\[3px\] {
  border-top-right-radius: 3px;
}
.border {
  border-width: 1px;
}
.border-0 {
  border-width: 0px;
}
.border-2 {
  border-width: 2px;
}
.border-y {
  border-top-width: 1px;
  border-bottom-width: 1px;
}
.border-b {
  border-bottom-width: 1px;
}
.border-r {
  border-right-width: 1px;
}
.border-t {
  border-top-width: 1px;
}
.border-dashed {
  border-style: dashed;
}
.border-none {
  border-style: none;
}
.border-\[--border\] {
  border-color: var(--border);
}
.border-\[var\(--c-app-accent\)\] {
  border-color: var(--c-app-accent);
}
.border-amber-500\/30 {
  border-color: rgb(245 158 11 / 0.3);
}
.border-amber-700\/40 {
  border-color: rgb(180 83 9 / 0.4);
}
.border-border {
  border-color: var(--border);
}
.border-border-soft {
  border-color: var(--border-soft);
}
.border-border-strong {
  border-color: var(--border-strong);
}
.border-brand {
  border-color: var(--c-brand);
}
.border-current {
  border-color: currentColor;
}
.border-danger-text {
  border-color: var(--c-danger-text);
}
.border-emerald-500\/30 {
  border-color: rgb(16 185 129 / 0.3);
}
.border-rose-500\/30 {
  border-color: rgb(244 63 94 / 0.3);
}
.border-text-3 {
  border-color: var(--text-3);
}
.border-theme-border {
  border-color: var(--theme-border);
}
.border-white {
  --tw-border-opacity: 1;
  border-color: rgb(255 255 255 / var(--tw-border-opacity, 1));
}
.border-t-transparent {
  border-top-color: transparent;
}
.bg-\[--bg-inset\] {
  background-color: var(--bg-inset);
}
.bg-\[--bg-panel\] {
  background-color: var(--bg-panel);
}
.bg-\[var\(--bg\)\] {
  background-color: var(--bg);
}
.bg-\[var\(--brand-soft\)\] {
  background-color: var(--brand-soft);
}
.bg-\[var\(--c-brand-tint\)\] {
  background-color: var(--c-brand-tint);
}
.bg-activebg {
  background-color: var(--bg-active);
}
.bg-amber-500\/10 {
  background-color: rgb(245 158 11 / 0.1);
}
.bg-bg {
  background-color: var(--bg);
}
.bg-black\/10 {
  background-color: rgb(0 0 0 / 0.1);
}
.bg-black\/25 {
  background-color: rgb(0 0 0 / 0.25);
}
.bg-border {
  background-color: var(--border);
}
.bg-border-strong {
  background-color: var(--border-strong);
}
.bg-brand {
  background-color: var(--c-brand);
}
.bg-brand-soft {
  background-color: var(--brand-soft);
}
.bg-elev {
  background-color: var(--bg-elev);
}
.bg-emerald-500\/10 {
  background-color: rgb(16 185 129 / 0.1);
}
.bg-hover {
  background-color: var(--bg-hover);
}
.bg-info-soft {
  background-color: var(--c-info-soft);
}
.bg-inset {
  background-color: var(--bg-inset);
}
.bg-panel {
  background-color: var(--bg-panel);
}
.bg-rose-500\/10 {
  background-color: rgb(244 63 94 / 0.1);
}
.bg-text {
  background-color: var(--text);
}
.bg-text-4 {
  background-color: var(--text-4);
}
.bg-transparent {
  background-color: transparent;
}
.bg-white {
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
}
.bg-white\/20 {
  background-color: rgb(255 255 255 / 0.2);
}
.bg-grad-panel {
  background-image: var(--grad-panel);
}
.bg-sidebar {
  background-image: var(--bg-sidebar);
}
.p-0 {
  padding: 0px;
}
.p-0\.5 {
  padding: 0.125rem;
}
.p-1 {
  padding: 0.25rem;
}
.p-1\.5 {
  padding: 0.375rem;
}
.p-2 {
  padding: 0.5rem;
}
.p-2\.5 {
  padding: 0.625rem;
}
.p-3 {
  padding: 0.75rem;
}
.p-4 {
  padding: 1rem;
}
.p-5 {
  padding: 1.25rem;
}
.p-6 {
  padding: 1.5rem;
}
.p-\[2px\] {
  padding: 2px;
}
.px-0\.5 {
  padding-left: 0.125rem;
  padding-right: 0.125rem;
}
.px-1 {
  padding-left: 0.25rem;
  padding-right: 0.25rem;
}
.px-1\.5 {
  padding-left: 0.375rem;
  padding-right: 0.375rem;
}
.px-12 {
  padding-left: 3rem;
  padding-right: 3rem;
}
.px-2 {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.px-2\.5 {
  padding-left: 0.625rem;
  padding-right: 0.625rem;
}
.px-3 {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}
.px-3\.5 {
  padding-left: 0.875rem;
  padding-right: 0.875rem;
}
.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}
.px-5 {
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}
.px-6 {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}
.px-\[11px\] {
  padding-left: 11px;
  padding-right: 11px;
}
.px-\[13px\] {
  padding-left: 13px;
  padding-right: 13px;
}
.px-\[14px\] {
  padding-left: 14px;
  padding-right: 14px;
}
.px-\[18\/22px\] {
  padding-left: 18/22px;
  padding-right: 18/22px;
}
.px-\[18px\] {
  padding-left: 18px;
  padding-right: 18px;
}
.px-\[5px\] {
  padding-left: 5px;
  padding-right: 5px;
}
.px-\[7px\] {
  padding-left: 7px;
  padding-right: 7px;
}
.px-\[9px\] {
  padding-left: 9px;
  padding-right: 9px;
}
.py-0 {
  padding-top: 0px;
  padding-bottom: 0px;
}
.py-0\.5 {
  padding-top: 0.125rem;
  padding-bottom: 0.125rem;
}
.py-1 {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}
.py-1\.5 {
  padding-top: 0.375rem;
  padding-bottom: 0.375rem;
}
.py-10 {
  padding-top: 2.5rem;
  padding-bottom: 2.5rem;
}
.py-12 {
  padding-top: 3rem;
  padding-bottom: 3rem;
}
.py-2 {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.py-2\.5 {
  padding-top: 0.625rem;
  padding-bottom: 0.625rem;
}
.py-3 {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}
.py-3\.5 {
  padding-top: 0.875rem;
  padding-bottom: 0.875rem;
}
.py-4 {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.py-8 {
  padding-top: 2rem;
  padding-bottom: 2rem;
}
.py-\[11px\] {
  padding-top: 11px;
  padding-bottom: 11px;
}
.py-\[14px\] {
  padding-top: 14px;
  padding-bottom: 14px;
}
.py-\[26px\] {
  padding-top: 26px;
  padding-bottom: 26px;
}
.py-\[2px\] {
  padding-top: 2px;
  padding-bottom: 2px;
}
.py-\[3px\] {
  padding-top: 3px;
  padding-bottom: 3px;
}
.py-\[4px\] {
  padding-top: 4px;
  padding-bottom: 4px;
}
.py-\[5px\] {
  padding-top: 5px;
  padding-bottom: 5px;
}
.py-\[7px\] {
  padding-top: 7px;
  padding-bottom: 7px;
}
.py-\[9px\] {
  padding-top: 9px;
  padding-bottom: 9px;
}
.py-px {
  padding-top: 1px;
  padding-bottom: 1px;
}
.pb-1 {
  padding-bottom: 0.25rem;
}
.pb-1\.5 {
  padding-bottom: 0.375rem;
}
.pb-14 {
  padding-bottom: 3.5rem;
}
.pb-2 {
  padding-bottom: 0.5rem;
}
.pb-2\.5 {
  padding-bottom: 0.625rem;
}
.pb-3 {
  padding-bottom: 0.75rem;
}
.pb-3\.5 {
  padding-bottom: 0.875rem;
}
.pb-8 {
  padding-bottom: 2rem;
}
.pb-\[14px\] {
  padding-bottom: 14px;
}
.pb-\[7px\] {
  padding-bottom: 7px;
}
.pl-2 {
  padding-left: 0.5rem;
}
.pl-2\.5 {
  padding-left: 0.625rem;
}
.pl-3 {
  padding-left: 0.75rem;
}
.pl-8 {
  padding-left: 2rem;
}
.pl-\[15px\] {
  padding-left: 15px;
}
.pl-\[31px\] {
  padding-left: 31px;
}
.pl-\[6px\] {
  padding-left: 6px;
}
.pl-\[7px\] {
  padding-left: 7px;
}
.pr-2\.5 {
  padding-right: 0.625rem;
}
.pr-3 {
  padding-right: 0.75rem;
}
.pr-8 {
  padding-right: 2rem;
}
.pr-\[10px\] {
  padding-right: 10px;
}
.pr-\[9px\] {
  padding-right: 9px;
}
.pt-0\.5 {
  padding-top: 0.125rem;
}
.pt-1 {
  padding-top: 0.25rem;
}
.pt-1\.5 {
  padding-top: 0.375rem;
}
.pt-2 {
  padding-top: 0.5rem;
}
.pt-2\.5 {
  padding-top: 0.625rem;
}
.pt-3 {
  padding-top: 0.75rem;
}
.pt-3\.5 {
  padding-top: 0.875rem;
}
.pt-9 {
  padding-top: 2.25rem;
}
.pt-\[14px\] {
  padding-top: 14px;
}
.pt-\[15px\] {
  padding-top: 15px;
}
.pt-px {
  padding-top: 1px;
}
.text-left {
  text-align: left;
}
.text-center {
  text-align: center;
}
.text-right {
  text-align: right;
}
.font-display {
  font-family: var(--font-serif);
}
.font-mono {
  font-family: var(--font-mono);
}
.font-ui {
  font-family: var(--font);
}
.text-2xl {
  font-size: var(--text-2xl);
}
.text-3xl {
  font-size: 1.875rem;
  line-height: 2.25rem;
}
.text-\[10\.5px\] {
  font-size: 10.5px;
}
.text-\[10px\] {
  font-size: 10px;
}
.text-\[11\.5px\] {
  font-size: 11.5px;
}
.text-\[11px\] {
  font-size: 11px;
}
.text-\[12\.5px\] {
  font-size: 12.5px;
}
.text-\[12px\] {
  font-size: 12px;
}
.text-\[13\.5px\] {
  font-size: 13.5px;
}
.text-\[13px\] {
  font-size: 13px;
}
.text-\[15\.5px\] {
  font-size: 15.5px;
}
.text-\[15px\] {
  font-size: 15px;
}
.text-\[18px\] {
  font-size: 18px;
}
.text-\[22px\] {
  font-size: 22px;
}
.text-base {
  font-size: var(--text-base);
}
.text-lg {
  font-size: var(--text-lg);
}
.text-md {
  font-size: var(--text-md);
}
.text-sm {
  font-size: var(--text-sm);
}
.text-xl {
  font-size: var(--text-xl);
}
.text-xs {
  font-size: var(--text-xs);
}
.font-\[450\] {
  font-weight: 450;
}
.font-bold {
  font-weight: 700;
}
.font-medium {
  font-weight: 500;
}
.font-normal {
  font-weight: 400;
}
.font-semibold {
  font-weight: 600;
}
.uppercase {
  text-transform: uppercase;
}
.lowercase {
  text-transform: lowercase;
}
.italic {
  font-style: italic;
}
.tabular-nums {
  --tw-numeric-spacing: tabular-nums;
  font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
}
.leading-6 {
  line-height: 1.5rem;
}
.leading-\[1\.12\] {
  line-height: 1.12;
}
.leading-\[1\.15\] {
  line-height: 1.15;
}
.leading-\[1\.1\] {
  line-height: 1.1;
}
.leading-\[1\.25\] {
  line-height: 1.25;
}
.leading-\[1\.4\] {
  line-height: 1.4;
}
.leading-\[1\.55\] {
  line-height: 1.55;
}
.leading-\[1\.5\] {
  line-height: 1.5;
}
.leading-\[15px\] {
  line-height: 15px;
}
.leading-\[17px\] {
  line-height: 17px;
}
.leading-relaxed {
  line-height: 1.625;
}
.leading-snug {
  line-height: 1.375;
}
.leading-tight {
  line-height: 1.25;
}
.tracking-\[-0\.015em\] {
  letter-spacing: -0.015em;
}
.tracking-\[-0\.01em\] {
  letter-spacing: -0.01em;
}
.tracking-\[-0\.03em\] {
  letter-spacing: -0.03em;
}
.tracking-\[\.04em\] {
  letter-spacing: .04em;
}
.tracking-\[\.06em\] {
  letter-spacing: .06em;
}
.tracking-\[\.07em\] {
  letter-spacing: .07em;
}
.tracking-\[\.12em\] {
  letter-spacing: .12em;
}
.tracking-tight {
  letter-spacing: -0.025em;
}
.tracking-wide {
  letter-spacing: 0.025em;
}
.text-\[\#1A1B2E\] {
  --tw-text-opacity: 1;
  color: rgb(26 27 46 / var(--tw-text-opacity, 1));
}
.text-\[--c-app-accent\] {
  color: var(--c-app-accent);
}
.text-\[--text-2\] {
  color: var(--text-2);
}
.text-\[--text-3\] {
  color: var(--text-3);
}
.text-\[--text-4\] {
  color: var(--text-4);
}
.text-\[--text\] {
  color: var(--text);
}
.text-\[var\(--brand-ink\)\] {
  color: var(--brand-ink);
}
.text-\[var\(--c-brand\)\] {
  color: var(--c-brand);
}
.text-\[var\(--text-2\)\] {
  color: var(--text-2);
}
.text-amber-700 {
  --tw-text-opacity: 1;
  color: rgb(180 83 9 / var(--tw-text-opacity, 1));
}
.text-bg {
  color: var(--bg);
}
.text-brand {
  color: var(--c-brand);
}
.text-danger-text {
  color: var(--c-danger-text);
}
.text-muted {
  color: var(--text-3);
}
.text-success {
  color: var(--c-success);
}
.text-text {
  color: var(--text);
}
.text-text-2 {
  color: var(--text-2);
}
.text-text-3 {
  color: var(--text-3);
}
.text-text-4 {
  color: var(--text-4);
}
.text-theme-on-primary {
  color: var(--theme-on-primary);
}
.text-warning-text {
  color: var(--c-warning-text);
}
.text-white {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.underline {
  text-decoration-line: underline;
}
.line-through {
  text-decoration-line: line-through;
}
.decoration-dotted {
  text-decoration-style: dotted;
}
.underline-offset-2 {
  text-underline-offset: 2px;
}
.accent-\[var\(--c-app-accent\)\] {
  accent-color: var(--c-app-accent);
}
.accent-\[var\(--c-brand\)\] {
  accent-color: var(--c-brand);
}
.opacity-50 {
  opacity: 0.5;
}
.opacity-60 {
  opacity: 0.6;
}
.opacity-70 {
  opacity: 0.7;
}
.opacity-85 {
  opacity: 0.85;
}
.opacity-90 {
  opacity: 0.9;
}
.shadow {
  --tw-shadow: var(--shadow);
  --tw-shadow-colored: var(--shadow);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[-16px_0_56px_rgba\(0\2c 0\2c 0\2c 0\.16\)\] {
  --tw-shadow: -16px 0 56px rgba(0,0,0,0.16);
  --tw-shadow-colored: -16px 0 56px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[0_0_0_1px_var\(--border\)\2c 0_14px_40px_rgba\(46\2c 46\2c 56\2c 0\.16\)\] {
  --tw-shadow: 0 0 0 1px var(--border),0 14px 40px rgba(46,46,56,0.16);
  --tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color), 0 14px 40px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[0_0_0_2px_var\(--bg-panel\)\2c 0_0_0_3\.5px_var\(--text\)\] {
  --tw-shadow: 0 0 0 2px var(--bg-panel),0 0 0 3.5px var(--text);
  --tw-shadow-colored: 0 0 0 2px var(--tw-shadow-color), 0 0 0 3.5px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[inset_0_0_0_1px_var\(--border\)\2c 0_1px_0_var\(--border-soft\)\] {
  --tw-shadow: inset 0 0 0 1px var(--border),0 1px 0 var(--border-soft);
  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color), 0 1px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[inset_0_0_0_1px_var\(--border\)\2c 0_1px_2px_rgba\(46\2c 46\2c 56\2c 0\.04\)\] {
  --tw-shadow: inset 0 0 0 1px var(--border),0 1px 2px rgba(46,46,56,0.04);
  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color), 0 1px 2px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[inset_0_0_0_1px_var\(--border\)\2c 0_1px_3px_rgba\(46\2c 46\2c 56\2c 0\.05\)\] {
  --tw-shadow: inset 0 0 0 1px var(--border),0 1px 3px rgba(46,46,56,0.05);
  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color), 0 1px 3px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[inset_0_0_0_1px_var\(--border\)\] {
  --tw-shadow: inset 0 0 0 1px var(--border);
  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[inset_0_1px_0_rgba\(255\2c 255\2c 255\2c 0\.25\)\] {
  --tw-shadow: inset 0 1px 0 rgba(255,255,255,0.25);
  --tw-shadow-colored: inset 0 1px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-lg {
  --tw-shadow: var(--shadow-lg);
  --tw-shadow-colored: var(--shadow-lg);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-md {
  --tw-shadow: var(--shadow);
  --tw-shadow-colored: var(--shadow);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-sm {
  --tw-shadow: var(--shadow-sm);
  --tw-shadow-colored: var(--shadow-sm);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[--shadow-lg\] {
  --tw-shadow-color: var(--shadow-lg);
  --tw-shadow: var(--tw-shadow-colored);
}
.outline-none {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.outline {
  outline-style: solid;
}
.ring {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-1 {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-inset {
  --tw-ring-inset: inset;
}
.ring-\[var\(--border\)\] {
  --tw-ring-color: var(--border);
}
.ring-\[var\(--c-app-accent\)\] {
  --tw-ring-color: var(--c-app-accent);
}
.ring-\[var\(--c-brand\)\] {
  --tw-ring-color: var(--c-brand);
}
.ring-focus {
  --tw-ring-color: var(--c-focus);
}
.ring-inset {
  --tw-ring-color: var(--bg-inset);
}
.blur {
  --tw-blur: blur(8px);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.backdrop-blur-sm {
  --tw-backdrop-blur: blur(4px);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
.backdrop-filter {
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[color\2c background-color\2c border-color\2c box-shadow\] {
  transition-property: color,background-color,border-color,box-shadow;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[color\2c background-color\2c border-color\2c transform\] {
  transition-property: color,background-color,border-color,transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[color\2c background-color\2c box-shadow\2c transform\2c filter\] {
  transition-property: color,background-color,box-shadow,transform,filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[color\2c background-color\2c box-shadow\] {
  transition-property: color,background-color,box-shadow;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[color\2c background-color\2c transform\] {
  transition-property: color,background-color,transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[transform\2c box-shadow\] {
  transition-property: transform,box-shadow;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[transform\2c opacity\] {
  transition-property: transform,opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-all {
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-colors {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-opacity {
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-transform {
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.duration-150 {
  transition-duration: 150ms;
}
.duration-fast {
  transition-duration: var(--motion-fast);
}
.ease-in-out {
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.ease-out {
  transition-timing-function: var(--ease-out);
}
.ease-spring {
  transition-timing-function: var(--ease-spring);
}
.\[-ms-overflow-style\:none\] {
  -ms-overflow-style: none;
}
.\[background\:var\(--bg-sidebar\)\] {
  background: var(--bg-sidebar);
}
.\[scrollbar-width\:none\] {
  scrollbar-width: none;
}

/* Globale Shell-Grundlagen, an das Design-Soll (theme.css body) angelehnt. */
html,
body,
#app {
  height: 100%;
}
/* Canvas-Hintergrund (Soll theme.css): radiale Farbwolken oben links/rechts
   über --bg; overflow hidden — die Shell scrollt nur in ihren Flächen. */
body {
  margin: 0;
  font-family: var(--font);
  color: var(--text);
  background:
    radial-gradient(1000px 420px at 14% -120px, color-mix(in oklab, var(--brand) 6%, transparent), transparent 70%),
    radial-gradient(900px 360px at 88% -100px, color-mix(in oklab, #4fb3dc 5%, transparent), transparent 70%),
    var(--bg);
  overflow: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: 'ss01', 'cv11';
  font-size: var(--text-base);
  line-height: var(--leading-normal);
}

/* Scroll-Fläche (Soll theme.css .scroll-y) — auch Ziel-Selektor von moStagger. */
.scroll-y {
  overflow-y: auto;
}

/* WebKit reserves the vertical scrollbar on the opposite edge in RTL and
   otherwise exposes that gutter as synthetic horizontal overflow. The suite
   home is a vertical document surface, so horizontal scrolling is never a
   valid interaction here. Keep the shell reflow gate truthful across engines. */
[data-shell-scroll-container] {
  overflow-x: hidden;
}

/* Dezente, schmale Scrollbalken wie in der Referenz. */
::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
::-webkit-scrollbar-track {
  background: transparent;
}
::-webkit-scrollbar-thumb {
  background: var(--scrollbar-thumb, rgba(0, 0, 0, 0.15));
  border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
  background: var(--scrollbar-thumb-hover, rgba(0, 0, 0, 0.25));
}

/* View Transitions: app-canvas (Gleiten) + nav-pill (Morph) kommen aus
   @vw/ui motion-tokens.css — hier bewusst KEINE Duplikate (konsolidiert). */

.placeholder\:text-text-3::-moz-placeholder {
  color: var(--text-3);
}

.placeholder\:text-text-3::placeholder {
  color: var(--text-3);
}

.placeholder\:text-text-4::-moz-placeholder {
  color: var(--text-4);
}

.placeholder\:text-text-4::placeholder {
  color: var(--text-4);
}

.backdrop\:bg-black\/20::backdrop {
  background-color: rgb(0 0 0 / 0.2);
}

.backdrop\:bg-black\/30::backdrop {
  background-color: rgb(0 0 0 / 0.3);
}

.backdrop\:backdrop-blur-\[2px\]::backdrop {
  --tw-backdrop-blur: blur(2px);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}

.last\:border-0:last-child {
  border-width: 0px;
}

.focus-within\:ring-2:focus-within {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}

.focus-within\:ring-focus:focus-within {
  --tw-ring-color: var(--c-focus);
}

.hover\:-translate-y-0\.5:hover {
  --tw-translate-y: -0.125rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.hover\:-translate-y-px:hover {
  --tw-translate-y: -1px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.hover\:border-border-strong:hover {
  border-color: var(--border-strong);
}

.hover\:bg-\[--bg-inset\]:hover {
  background-color: var(--bg-inset);
}

.hover\:bg-\[var\(--bg-inset\)\]:hover {
  background-color: var(--bg-inset);
}

.hover\:bg-\[var\(--c-brand-tint\)\]:hover {
  background-color: var(--c-brand-tint);
}

.hover\:bg-hover:hover {
  background-color: var(--bg-hover);
}

.hover\:text-\[--text-2\]:hover {
  color: var(--text-2);
}

.hover\:text-\[--text\]:hover {
  color: var(--text);
}

.hover\:text-\[var\(--c-brand\)\]:hover {
  color: var(--c-brand);
}

.hover\:text-text:hover {
  color: var(--text);
}

.hover\:underline:hover {
  text-decoration-line: underline;
}

.hover\:opacity-100:hover {
  opacity: 1;
}

.hover\:shadow-\[0_4px_16px_rgba\(46\2c 46\2c 56\2c 0\.10\)\2c inset_0_0_0_1px_var\(--c-app-accent\)\]:hover {
  --tw-shadow: 0 4px 16px rgba(46,46,56,0.10),inset 0 0 0 1px var(--c-app-accent);
  --tw-shadow-colored: 0 4px 16px var(--tw-shadow-color), inset 0 0 0 1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.hover\:brightness-\[1\.07\]:hover {
  --tw-brightness: brightness(1.07);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.focus\:outline-none:focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}

.focus-visible\:bg-hover:focus-visible {
  background-color: var(--bg-hover);
}

.focus-visible\:outline-none:focus-visible {
  outline: 2px solid transparent;
  outline-offset: 2px;
}

.focus-visible\:ring-0:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}

.focus-visible\:ring-1:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}

.focus-visible\:ring-2:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}

.focus-visible\:ring-inset:focus-visible {
  --tw-ring-inset: inset;
}

.focus-visible\:ring-\[--c-focus\]:focus-visible {
  --tw-ring-color: var(--c-focus);
}

.focus-visible\:ring-\[var\(--c-brand\)\]:focus-visible {
  --tw-ring-color: var(--c-brand);
}

.focus-visible\:ring-focus:focus-visible {
  --tw-ring-color: var(--c-focus);
}

.focus-visible\:ring-inset:focus-visible {
  --tw-ring-color: var(--bg-inset);
}

.focus-visible\:ring-white\/70:focus-visible {
  --tw-ring-color: rgb(255 255 255 / 0.7);
}

.focus-visible\:ring-offset-1:focus-visible {
  --tw-ring-offset-width: 1px;
}

.focus-visible\:ring-offset-2:focus-visible {
  --tw-ring-offset-width: 2px;
}

.focus-visible\:ring-offset-\[--bg-panel\]:focus-visible {
  --tw-ring-offset-color: var(--bg-panel);
}

.focus-visible\:ring-offset-bg:focus-visible {
  --tw-ring-offset-color: var(--bg);
}

.focus-visible\:ring-offset-panel:focus-visible {
  --tw-ring-offset-color: var(--bg-panel);
}

.active\:cursor-grabbing:active {
  cursor: grabbing;
}

.disabled\:pointer-events-none:disabled {
  pointer-events: none;
}

.disabled\:cursor-not-allowed:disabled {
  cursor: not-allowed;
}

.disabled\:opacity-40:disabled {
  opacity: 0.4;
}

.disabled\:opacity-45:disabled {
  opacity: 0.45;
}

.disabled\:opacity-50:disabled {
  opacity: 0.5;
}

@media (prefers-reduced-motion: no-preference) {

  .motion-safe\:hover\:-translate-y-0\.5:hover {
    --tw-translate-y: -0.125rem;
    transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  }
}

@media (min-width: 640px) {

  .sm\:order-none {
    order: 0;
  }

  .sm\:block {
    display: block;
  }

  .sm\:h-\[60px\] {
    height: 60px;
  }

  .sm\:min-w-\[250px\] {
    min-width: 250px;
  }

  .sm\:flex-none {
    flex: none;
  }

  .sm\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .sm\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .sm\:flex-nowrap {
    flex-wrap: nowrap;
  }

  .sm\:px-5 {
    padding-left: 1.25rem;
    padding-right: 1.25rem;
  }

  .sm\:px-6 {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }

  .sm\:py-0 {
    padding-top: 0px;
    padding-bottom: 0px;
  }
}

@media (min-width: 1024px) {

  .lg\:grid-cols-\[minmax\(0\2c 1fr\)_minmax\(22rem\2c 0\.8fr\)\] {
    grid-template-columns: minmax(0,1fr) minmax(22rem,0.8fr);
  }
}

.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar {
  display: none;
}

.suite-header[data-v-b9dc27b7] {
  position: relative;
  z-index: 5;
  display: flex;
  width: 100%;
  min-width: 0;
  min-height: 58px;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 8px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--suite-color-surface-panel);
  color: var(--text);
}
.suite-header__leading[data-v-b9dc27b7],
.suite-header__context[data-v-b9dc27b7],
.suite-header__actions[data-v-b9dc27b7],
.suite-header__identity[data-v-b9dc27b7],
.suite-header__context-button[data-v-b9dc27b7] {
  display: flex;
  min-width: 0;
  align-items: center;
}
.suite-header__leading[data-v-b9dc27b7] { gap: 10px;
}
.suite-header__context[data-v-b9dc27b7] { flex: 1; justify-content: center; gap: 16px;
}
.suite-header__actions[data-v-b9dc27b7] { gap: 6px;
}
.suite-header__home[data-v-b9dc27b7],
.suite-header__icon-button[data-v-b9dc27b7],
.suite-header__avatar[data-v-b9dc27b7] {
  display: grid;
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  place-items: center;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: transparent;
  color: var(--text-2);
  cursor: pointer;
}
.suite-header__home[data-v-b9dc27b7]:hover,
.suite-header__icon-button[data-v-b9dc27b7]:hover { background: var(--hover); color: var(--text);
}
.suite-header__mark[data-v-b9dc27b7] {
  display: grid;
  width: 24px;
  height: 24px;
  place-items: center;
  border-radius: 7px;
  background: var(--brand);
  color: var(--suite-color-on-brand);
  font-size: 9px;
  font-weight: 850;
  letter-spacing: -.04em;
}
.suite-header__divider[data-v-b9dc27b7] { width: 1px; height: 26px; background: var(--border);
}
.suite-header__identity[data-v-b9dc27b7] {
  gap: 8px;
  padding: 2px 8px 2px 2px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.suite-header__identity[data-v-b9dc27b7]:hover { background: var(--hover);
}
.suite-header__identity-copy[data-v-b9dc27b7] { display: grid; min-width: 0; gap: 1px;
}
.suite-header__identity-copy strong[data-v-b9dc27b7],
.suite-header__identity-copy small[data-v-b9dc27b7] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.suite-header__identity-copy strong[data-v-b9dc27b7] { max-width: 190px; font-size: 12px;
}
.suite-header__identity-copy small[data-v-b9dc27b7] { max-width: 190px; color: var(--text-3); font-size: 10px;
}
.suite-header__context-button[data-v-b9dc27b7] {
  min-width: min(360px, 40vw);
  justify-content: flex-start;
  gap: 8px;
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--suite-color-surface-canvas);
  color: var(--text-3);
  cursor: pointer;
  font-size: 12px;
}
.suite-header__context-button[data-v-b9dc27b7]:hover { color: var(--text); border-color: var(--brand);
}
.suite-header__context-button kbd[data-v-b9dc27b7] { margin-left: auto; color: var(--text-3); font-size: 10px;
}
.suite-header__avatar[data-v-b9dc27b7] { border: 0; background: var(--suite-color-brand-primary); color: var(--suite-color-on-brand); font-size: 11px; font-weight: 800;
}
.suite-header button[data-v-b9dc27b7]:focus-visible { outline: 2px solid var(--suite-state-focus); outline-offset: 2px;
}
@media (max-width: 760px) {
.suite-header[data-v-b9dc27b7] { gap: 8px; padding-inline: 10px;
}
.suite-header__context[data-v-b9dc27b7] { justify-content: flex-end;
}
.suite-header__context-button[data-v-b9dc27b7] { min-width: 34px; width: 34px; padding: 0; justify-content: center;
}
.suite-header__context-button span[data-v-b9dc27b7],
  .suite-header__context-button kbd[data-v-b9dc27b7] { display: none;
}
.suite-header__identity-copy small[data-v-b9dc27b7] { display: none;
}
}

/* The browser's 200% reflow check uses a 195px effective CSS viewport for the
 * 390px mobile fixture. Keep every control reachable without introducing an
 * internal horizontal scroll container at that effective width. */
@media (max-width: 240px) {
.suite-header[data-v-b9dc27b7] { gap: 3px; padding-inline: 4px;
}
.suite-header__leading[data-v-b9dc27b7] { gap: 2px; flex: 1 1 auto;
}
.suite-header__home[data-v-b9dc27b7],
  .suite-header__icon-button[data-v-b9dc27b7],
  .suite-header__avatar[data-v-b9dc27b7] {
    width: 24px;
    height: 24px;
    flex-basis: 24px;
}
.suite-header__divider[data-v-b9dc27b7] { height: 22px;
}
.suite-header__identity[data-v-b9dc27b7] { max-width: 82px; gap: 3px; padding-inline: 0;
}
.suite-header__identity-copy strong[data-v-b9dc27b7] { max-width: 65px; font-size: 10px;
}
.suite-header__context[data-v-b9dc27b7] { flex: 0 0 24px; gap: 0;
}
.suite-header__context-button[data-v-b9dc27b7] { width: 24px; min-width: 24px;
}
.suite-header__actions[data-v-b9dc27b7] { gap: 0;
}
}
@media (prefers-reduced-motion: reduce) {
.suite-header__identity[data-v-b9dc27b7],
  .suite-header__home[data-v-b9dc27b7],
  .suite-header__icon-button[data-v-b9dc27b7] { transition: none;
}
}

/* Switcher-Popover: dezenter Auftritt (fade + 4px slide-up). Nur transform/opacity. */
.vw-switch-pop-enter-active[data-v-6d5e4ece],
.vw-switch-pop-leave-active[data-v-6d5e4ece] {
  transition:
    opacity var(--motion-fast) var(--ease-out),
    transform var(--motion-fast) var(--ease-out);
}
.vw-switch-pop-enter-from[data-v-6d5e4ece],
.vw-switch-pop-leave-to[data-v-6d5e4ece] {
  opacity: 0;
  transform: translateY(-4px);
}
@media (prefers-reduced-motion: reduce) {
.vw-switch-pop-enter-active[data-v-6d5e4ece],
  .vw-switch-pop-leave-active[data-v-6d5e4ece] {
    transition: none;
}
}

.global-launcher-backdrop[data-v-5dc85236] {
  position: fixed;
  z-index: 80;
  inset: 0;
  padding: 12px 12px 12px 70px;
  background: var(--suite-color-overlay-scrim);
  backdrop-filter: blur(2px);
}
.global-launcher-backdrop__dismiss[data-v-5dc85236] {
  position: absolute;
  z-index: 0;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: transparent;
  cursor: default;
}
.global-launcher[data-v-5dc85236] {
  position: relative;
  z-index: 1;
  display: flex;
  width: min(780px, calc(100vw - 82px));
  max-height: calc(100dvh - 24px);
  flex-direction: column;
  margin: 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 16px;
  outline: 0;
  background: var(--bg-panel);
  color: var(--text);
  box-shadow: var(--suite-elevation-launcher);
}
.global-launcher__header[data-v-5dc85236] {
  position: relative;
  display: flex;
  min-height: 68px;
  flex: 0 0 auto;
  align-items: center;
  gap: 15px;
  padding: 0 14px;
  border-bottom: 1px solid var(--border);
}
.global-launcher__workspace[data-v-5dc85236] {
  width: 250px;
  padding: 0;
}
.global-launcher__title[data-v-5dc85236] {
  min-width: 0;
  flex: 1;
  border-left: 1px solid var(--border);
  padding-left: 15px;
}
.global-launcher__title p[data-v-5dc85236],
.global-launcher__section-heading p[data-v-5dc85236] {
  margin: 0 0 2px;
  color: var(--text-3);
  font-size: 10px;
  font-weight: 750;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.global-launcher__title h2[data-v-5dc85236],
.global-launcher__section-heading h3[data-v-5dc85236] {
  margin: 0;
}
.global-launcher__title h2[data-v-5dc85236] { font-size: 16px;
}
.global-launcher__section-heading h3[data-v-5dc85236] { font-size: 14px;
}
.global-launcher__close[data-v-5dc85236] {
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: var(--text-2);
  cursor: pointer;
}
.global-launcher__close[data-v-5dc85236]:hover { background: var(--hover);
}
.global-launcher__body[data-v-5dc85236] {
  display: grid;
  min-height: 0;
  flex: 1;
  gap: 22px;
  overflow: auto;
  overscroll-behavior: contain;
  padding: 16px;
}
.global-launcher__search[data-v-5dc85236] {
  display: flex;
  min-height: 44px;
  align-items: center;
  gap: 9px;
  padding: 0 11px;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: var(--bg);
  color: var(--text-3);
}
.global-launcher__search input[data-v-5dc85236] {
  min-width: 0;
  flex: 1;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--text);
}
.global-launcher__search > button[data-v-5dc85236] {
  border: 0;
  background: transparent;
  cursor: pointer;
}
.global-launcher__section-heading[data-v-5dc85236] {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}
.global-launcher__section-heading.is-compact[data-v-5dc85236] { margin-bottom: 7px;
}
.global-launcher__section-heading > span[data-v-5dc85236] { color: var(--text-3); font-size: 11px;
}
.global-launcher__mobile-back[data-v-5dc85236] {
  display: none;
  width: 34px;
  height: 34px;
  flex: 0 0 auto;
  place-items: center;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--bg-panel);
  color: var(--text-2);
  cursor: pointer;
}
.global-launcher__cores[data-v-5dc85236] {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 6px;
}
.global-launcher__cores > button[data-v-5dc85236],
.global-launcher__app[data-v-5dc85236],
.global-launcher__recent > button[data-v-5dc85236],
.global-launcher__footer > button[data-v-5dc85236] {
  border: 1px solid transparent;
  background: transparent;
  color: var(--text);
  cursor: pointer;
}
.global-launcher__cores > button[data-v-5dc85236] {
  display: flex;
  min-width: 0;
  min-height: 74px;
  align-items: center;
  gap: 8px;
  padding: 8px;
  border-radius: 11px;
  text-align: left;
}
.global-launcher__cores > button > .global-launcher__core-label[data-v-5dc85236] {
  min-width: 0;
  overflow: hidden;
  font-size: 11px;
  font-weight: 650;
  text-overflow: ellipsis;
}
.global-launcher__cores > button[data-v-5dc85236]:hover,
.global-launcher__cores > button.is-active[data-v-5dc85236],
.global-launcher__app[data-v-5dc85236]:hover,
.global-launcher__app.is-current[data-v-5dc85236],
.global-launcher__recent > button[data-v-5dc85236]:hover {
  border-color: color-mix(in oklab, var(--brand) 18%, var(--border));
  background: color-mix(in oklab, var(--brand) 6%, var(--bg-panel));
}
.global-launcher__apps[data-v-5dc85236] {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
}
.global-launcher__app[data-v-5dc85236] {
  display: flex;
  min-width: 0;
  min-height: 58px;
  align-items: center;
  gap: 9px;
  padding: 8px 10px;
  border-radius: 11px;
  text-align: left;
}
.global-launcher__app > .global-launcher__app-copy[data-v-5dc85236] {
  display: grid;
  min-width: 0;
  flex: 1;
  gap: 2px;
}
.global-launcher__app strong[data-v-5dc85236],
.global-launcher__app small[data-v-5dc85236] {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.global-launcher__app strong[data-v-5dc85236] { font-size: 12px;
}
.global-launcher__app small[data-v-5dc85236],
.global-launcher__recent small[data-v-5dc85236],
.global-launcher__footer small[data-v-5dc85236] { color: var(--text-3); font-size: 10px;
}
.global-launcher__badge[data-v-5dc85236] {
  display: inline-grid;
  min-width: 19px;
  height: 19px;
  flex: 0 0 auto;
  place-items: center;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--brand);
  color: var(--suite-color-on-brand);
  font-size: 9px;
  font-weight: 750;
  line-height: 19px;
  font-variant-numeric: tabular-nums;
}
.global-launcher__recent[data-v-5dc85236] {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.global-launcher__recent > button[data-v-5dc85236] {
  display: flex;
  min-height: 38px;
  align-items: center;
  gap: 7px;
  padding: 5px 8px;
  border-radius: 9px;
  font-size: 11px;
}
.global-launcher__empty[data-v-5dc85236] {
  padding: 24px;
  border: 1px dashed var(--border);
  border-radius: 11px;
  color: var(--text-3);
  text-align: center;
}
.global-launcher__footer[data-v-5dc85236] {
  position: relative;
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 9px;
  padding: 10px 14px;
  border-top: 1px solid var(--border);
}
.global-launcher__avatar[data-v-5dc85236] {
  display: flex;
  flex: 0 0 auto;
}
.global-launcher__identity[data-v-5dc85236] {
  display: grid;
  min-width: 0;
  flex: 1;
}
.global-launcher__footer > button[data-v-5dc85236] {
  display: inline-flex;
  min-height: 34px;
  align-items: center;
  gap: 6px;
  padding: 6px 9px;
  border-radius: 8px;
  font-size: 11px;
}
.global-launcher__footer > button[data-v-5dc85236]:hover { background: var(--hover);
}
.global-launcher__appearance[data-v-5dc85236] {
  position: absolute;
  right: 110px;
  bottom: calc(100% + 6px);
  z-index: 4;
  width: 290px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--bg-panel);
  box-shadow: var(--shadow-lg);
}
.global-launcher button[data-v-5dc85236]:focus-visible,
.global-launcher input[data-v-5dc85236]:focus-visible {
  outline: 2px solid var(--suite-state-focus);
  outline-offset: 2px;
}
@media (max-width: 700px) {
.global-launcher-backdrop[data-v-5dc85236] { padding: 0;
}
.global-launcher[data-v-5dc85236] {
    width: 100%;
    height: 100dvh;
    max-height: none;
    border: 0;
    border-radius: 0;
}
.global-launcher__header[data-v-5dc85236] { min-height: 64px; gap: 8px; padding: 0 8px;
}
.global-launcher__workspace[data-v-5dc85236] { width: auto; min-width: 0; flex: 1;
}
.global-launcher__title[data-v-5dc85236] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    border: 0;
    padding: 0;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}
.global-launcher__cores > button[data-v-5dc85236] {
    position: relative;
    min-height: 86px;
    flex-direction: column;
    justify-content: center;
    gap: 6px;
    text-align: center;
}
.global-launcher__cores > button > .global-launcher__core-label[data-v-5dc85236] {
    width: 100%;
    line-height: 1.2;
    white-space: normal;
}
.global-launcher__cores > button > .global-launcher__badge[data-v-5dc85236] {
    position: absolute;
    top: 6px;
    right: 6px;
}
.global-launcher__cores[data-v-5dc85236] { grid-template-columns: repeat(3, minmax(0, 1fr));
}
.global-launcher__apps[data-v-5dc85236] { grid-template-columns: 1fr;
}
.global-launcher__body[data-mobile-stage='cores'] .global-launcher__app-stage[data-v-5dc85236],
  .global-launcher__body[data-mobile-stage='apps'] .global-launcher__core-stage[data-v-5dc85236],
  .global-launcher__body[data-mobile-stage='apps'] .global-launcher__recent-stage[data-v-5dc85236] { display: none;
}
.global-launcher__mobile-back[data-v-5dc85236] { display: inline-grid;
}
.global-launcher__app-stage .global-launcher__section-heading[data-v-5dc85236] {
    align-items: center;
    justify-content: flex-start;
}
.global-launcher__app-stage .global-launcher__section-heading > span[data-v-5dc85236] { margin-left: auto;
}
.global-launcher__footer[data-v-5dc85236] { min-height: 54px; justify-content: flex-end;
}
.global-launcher__avatar[data-v-5dc85236],
  .global-launcher__identity[data-v-5dc85236] { display: none;
}
.global-launcher__footer > button[data-v-5dc85236] { flex: 1; justify-content: center;
}
.global-launcher__appearance[data-v-5dc85236] { right: 8px; width: min(290px, calc(100vw - 16px));
}
}

/* Drawer-Einzug mit Spring-Overshoot (Theme v2 --ease-spring). */
.cp-panel[data-v-18604f2f] {
  animation: cp-in-18604f2f calc(380ms * var(--mo, 1)) var(--ease-spring, cubic-bezier(0.34, 1.45, 0.5, 1)) both;
}
/* Glanzband im Gradient-Header (Kit-Look: feiner Lichtschein oben). */
.cp-head[data-v-18604f2f]::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.16) 0%, transparent 40%);
  pointer-events: none;
}
.cp-fade-enter-active[data-v-18604f2f],
.cp-fade-leave-active[data-v-18604f2f] {
  transition: opacity var(--t-med, 220ms) var(--ease-out, ease);
}
.cp-fade-enter-from[data-v-18604f2f],
.cp-fade-leave-to[data-v-18604f2f] {
  opacity: 0;
}
.cp-dot[data-v-18604f2f] {
  display: inline-block;
  animation: cp-dot-18604f2f calc(1.2s * (2 - var(--mo, 1))) ease-in-out infinite;
}
@keyframes cp-in-18604f2f {
from {
    transform: translateX(var(--theme-motion-drawer-slide, 16px));
    opacity: 0;
}
to {
    transform: translateX(0);
    opacity: 1;
}
}
@keyframes cp-dot-18604f2f {
0%,
  80%,
  100% {
    transform: translateY(0);
    opacity: 0.4;
}
40% {
    transform: translateY(-4px);
    opacity: 1;
}
}
@media (prefers-reduced-motion: reduce) {
.cp-panel[data-v-18604f2f],
  .cp-dot[data-v-18604f2f] {
    animation: none;
}
}

.suite-chrome-bar[data-v-2185af7f] {
  display: flex;
  min-height: 44px;
  align-items: center;
  gap: 10px;
  padding: 6px 16px;
  border-bottom: 1px solid var(--border);
  background: color-mix(in srgb, var(--suite-color-surface-panel) 94%, transparent);
  color: var(--text);
}
.suite-chrome-bar__context[data-v-2185af7f],
.suite-chrome-bar__object[data-v-2185af7f] {
  min-width: 0;
}
.suite-chrome-bar__object[data-v-2185af7f] {
  display: flex;
  max-width: 260px;
  flex-direction: column;
  gap: 1px;
  color: inherit;
  text-decoration: none;
}
.suite-chrome-bar__eyebrow[data-v-2185af7f] {
  color: var(--text-3);
  font-size: 10px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.suite-chrome-bar__object strong[data-v-2185af7f] {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
}
.suite-chrome-bar__search[data-v-2185af7f] {
  display: flex;
  min-width: 150px;
  max-width: 230px;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--border);
  border-radius: 7px;
  padding: 5px 8px;
  color: var(--text-3);
}
.suite-chrome-bar__search input[data-v-2185af7f] {
  min-width: 0;
  flex: 1;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--text);
  font-size: 12px;
}
.suite-chrome-bar__status[data-v-2185af7f] {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--text-2);
  font-size: 12px;
}
.suite-chrome-bar__status-dot[data-v-2185af7f] {
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: var(--text-3);
}
.suite-chrome-bar__status[data-tone='success'] .suite-chrome-bar__status-dot[data-v-2185af7f] { background: var(--ok);
}
.suite-chrome-bar__status[data-tone='warning'] .suite-chrome-bar__status-dot[data-v-2185af7f] { background: var(--warn);
}
.suite-chrome-bar__status[data-tone='danger'] .suite-chrome-bar__status-dot[data-v-2185af7f] { background: var(--bad);
}
.suite-chrome-bar__spacer[data-v-2185af7f] { flex: 1;
}
.suite-chrome-bar__actions[data-v-2185af7f] {
  display: flex;
  align-items: center;
  gap: 6px;
}
.suite-chrome-bar__action[data-v-2185af7f] {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 30px;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--suite-color-surface-panel);
  padding: 0 9px;
  color: var(--text-2);
  cursor: pointer;
  font-size: 12px;
}
.suite-chrome-bar__action[data-v-2185af7f]:hover { background: var(--hover); color: var(--text);
}
.suite-chrome-bar__action.is-primary[data-v-2185af7f] { border-color: var(--suite-color-brand-primary); background: var(--suite-color-brand-primary); color: var(--suite-color-on-brand);
}
.suite-chrome-bar__action.is-destructive[data-v-2185af7f] { color: var(--bad);
}
.suite-chrome-bar__action[data-v-2185af7f]:focus-visible { outline: 2px solid var(--suite-state-focus); outline-offset: 2px;
}
.suite-chrome-bar__action[data-v-2185af7f]:disabled { cursor: not-allowed; opacity: 0.55;
}
@media (max-width: 700px) {
.suite-chrome-bar[data-v-2185af7f] { overflow-x: auto; padding-inline: 10px;
}
.suite-chrome-bar__search[data-v-2185af7f] { min-width: 130px;
}
.suite-chrome-bar__action span[data-v-2185af7f] { display: none;
}
}
@media (prefers-reduced-motion: reduce) {
.suite-chrome-bar__action[data-v-2185af7f] { transition: none;
}
}

.suite-shell[data-v-65d5e929] {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.suite-shell__main[data-v-65d5e929] {
  min-height: 0;
}

/*
 * VwAppHeader remains a valid standalone/UI-Lab composition. In the Suite
 * host the global SuiteHeader already owns app identity and global search, so
 * the migrating remote header must not render a second copy of either. Its
 * nav/actions slots remain as the compact Office/Work context toolbar until
 * each remote has moved all contributions to the Chrome bridge.
 */
[data-vw-suite-host] .vw-app-header__identity-icon,[data-vw-suite-host] .vw-app-header__identity,[data-vw-suite-host] .vw-app-header__search,[data-vw-suite-host] .vw-app-header__copilot {
  display: none !important;
}
[data-vw-suite-host] .vw-app-header {
  min-height: 44px;
  height: auto;
  padding-block: 6px;
}

.home-content[data-v-9026048f],
.home-content[data-v-9026048f] * {
  min-width: 0;
}
.home-hero[data-v-9026048f] {
  overflow: hidden;
}
@media (max-width: 760px) {
.home-content[data-v-9026048f] {
    padding-inline: 16px;
}
.home-hero-actions[data-v-9026048f] {
    flex-wrap: wrap;
}
.home-approval-grid[data-v-9026048f],
  .home-primary-grid[data-v-9026048f] {
    grid-template-columns: minmax(0, 1fr) !important;
}
}
@media (max-width: 240px) {
.home-content[data-v-9026048f] {
    padding-inline: 12px;
    padding-top: 20px;
}
}

/* Freigabe-Karte gleitet raus (Soll home.jsx ApprovalCard: grid-rows 1fr→0fr). */
.vw-approval-card[data-v-9026048f] {
  display: grid;
  grid-template-rows: 1fr;
  opacity: 1;
  scale: 1;
  transition:
    grid-template-rows var(--t-med) var(--ease-out),
    opacity var(--t-med) var(--ease-out),
    scale var(--t-med) var(--ease-out);
}
.vw-approval-card.is-leaving[data-v-9026048f] {
  grid-template-rows: 0fr;
  opacity: 0;
  scale: 0.96;
}
@media (prefers-reduced-motion: reduce) {
.vw-approval-card[data-v-9026048f] {
    transition: none;
}
}

/* App-Wechsel: kurzes Fade+Slide (an die globale app-canvas-Transition angelehnt). */
.ah-canvas-enter-active[data-v-8121fd75] {
  transition:
    opacity calc(220ms * var(--mo, 1)) var(--ease-out),
    transform calc(220ms * var(--mo, 1)) var(--ease-out);
}
.ah-canvas-leave-active[data-v-8121fd75] {
  transition:
    opacity calc(120ms * var(--mo, 1)) var(--ease-out),
    transform calc(120ms * var(--mo, 1)) var(--ease-out);
}
.ah-canvas-enter-from[data-v-8121fd75] {
  opacity: 0;
  transform: translateY(8px);
}
.ah-canvas-leave-to[data-v-8121fd75] {
  opacity: 0;
  transform: translateY(-6px);
}

/* Brand-Spinner (Kit-Look statt grauem Ring). */
.ah-spinner[data-v-8121fd75] {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 2.5px solid color-mix(in oklab, var(--brand) 22%, transparent);
  border-top-color: var(--brand);
  animation: ah-spin-8121fd75 0.7s linear infinite;
}
@keyframes ah-spin-8121fd75 {
to {
    transform: rotate(360deg);
}
}
@media (prefers-reduced-motion: reduce) {
.ah-canvas-enter-active[data-v-8121fd75],
  .ah-canvas-leave-active[data-v-8121fd75] {
    transition: none;
}
.ah-spinner[data-v-8121fd75] {
    animation: none;
}
}

/* Detail-Sheet: Spring-Aufzug von der unteren Kante (Theme v2). */
.inbox-sheet[data-v-53a9520f] {
  animation: inbox-sheet-in-53a9520f calc(360ms * var(--mo, 1)) var(--ease-spring, cubic-bezier(0.34, 1.45, 0.5, 1)) both;
}
@keyframes inbox-sheet-in-53a9520f {
from {
    transform: translateY(16px);
    opacity: 0;
}
to {
    transform: translateY(0);
    opacity: 1;
}
}
@media (prefers-reduced-motion: reduce) {
.inbox-sheet[data-v-53a9520f] {
    animation: none;
}
}
