/* Automatisch generiert aus main.css (utils/cssBundler.js) – nicht manuell bearbeiten. */
/**
 * Abflattern Main CSS
 *
 * Modulares CSS-System basierend auf ITCSS-Prinzipien
 * Version: 3.0.0 – Optimized & Consolidated
 *
 * Importiert alle CSS-Module in der korrekten Reihenfolge:
 * Settings → Tools → Generic → Elements → Objects → Components → Utilities → Themes
 *
 * Optimierungen v3.0:
 * - Flexbox-Utilities konsolidiert (700+ Zeilen gespart)
 * - Avatar-Komponente vereinheitlicht (200+ Zeilen gespart)
 * - Header/Actions Pattern konsolidiert (300+ Zeilen gespart)
 * - Hardcodierte Farben durch Variablen ersetzt (20+ Stellen)
 * - Panel-Pattern Utilities erstellt (270+ Zeilen gespart)
 * - Media Queries zentralisiert (150+ Zeilen gespart)
 * - Gesamt: ~1.640 Zeilen Code-Reduktion
 */

/* ==========================================================================
   01. SETTINGS – Variablen & Design Tokens
   ========================================================================== */


/* == inlined: 01-settings/_variables.css == */
/**
 * Design System – Warmes Dark Theme
 */

:root {
  color-scheme: dark;

  /* Warme Primärfarben */
  --primary: #ff6b6b;
  --primary-hover: #ff5252;
  --primary-dark: #a50d26;
  /* Primärfarben Variationen (Konsolidiert) */
  --primary-subtle: rgba(255, 107, 107, 0.05);
  --primary-low:    rgba(255, 107, 107, 0.12);
  --primary-medium: rgba(255, 107, 107, 0.25);
  --primary-high:   rgba(255, 107, 107, 0.50);

  /* Legacy Mapping (für schrittweise Umstellung) */
  --primary-light:    var(--primary-low);
  --primary-light-03: var(--primary-subtle);
  --primary-light-05: var(--primary-subtle);
  --primary-light-10: var(--primary-low);
  --primary-light-12: var(--primary-low);
  --primary-light-18: var(--primary-low);
  --primary-light-25: var(--primary-medium);
  --primary-light-30: var(--primary-medium);
  --primary-light-35: var(--primary-medium);
  --primary-light-50: var(--primary-high);

  --primary-glow: rgba(255, 140, 100, 0.4);
  --primary-gradient: linear-gradient(135deg, #ff6b6b, #a50d26);

  /* Accent (Petrol) – Struktur, Links, Fokus */
  --accent: #7BBFB9;
  --accent-hover: #9ECFC9;
  --accent-subtle: rgba(123, 191, 185, 0.10);
  --accent-low: rgba(123, 191, 185, 0.16);
  --accent-medium: rgba(123, 191, 185, 0.28);
  --link-color: var(--accent);
  --link-hover: var(--accent-hover);

  /* Auth-Atmosphäre (Petrol/Gelb statt Koralle) */
  --auth-glow-a: rgba(123, 191, 185, 0.10);
  --auth-glow-b: rgba(244, 224, 123, 0.08);
  --auth-card-glow: rgba(123, 191, 185, 0.10);
  --input-focus-border: var(--accent);

  /* CTA-Buttons: warmes Orange/Gold, nicht rot */
  --cta-from: #FFCA28;
  --cta-to: #FF9800;
  --cta-hover-from: #FFD54F;
  --cta-hover-to: #FB8C00;
  --cta-gradient: linear-gradient(135deg, var(--cta-from), var(--cta-to));
  --cta-gradient-hover: linear-gradient(135deg, var(--cta-hover-from), var(--cta-hover-to));
  --cta-glow: rgba(255, 152, 0, 0.28);

  /* Warme Hintergründe */
  --bg: #1a1a1a;
  --bg-elevated: #252525;
  --bg-overlay: #2f2f2f;
  --bg-glass: rgba(37, 37, 37, 0.7);

  /* Subtile Borders mit Wärme */
  --border: rgba(255, 200, 170, 0.12);
  --border-strong: rgba(255, 180, 140, 0.2);
  --border-glow: rgba(123, 191, 185, 0.28);

  /* Warme Texttöne */
  --text: #fef5f1;
  --text-secondary: #e8d4c8;
  --text-muted: #c4a89a;

  /* Status-Farben mit Wärme */
  --success: #4ade80;
  --success-light: rgba(74, 222, 128, 0.15);
  --success-bg: rgba(46, 204, 113, 0.15);
  --success-glow: rgba(74, 222, 128, 0.3);
  --warning: #fbbf24;
  --warning-light: #f1c40f;
  --warning-light-bg: rgba(241, 196, 15, 0.15);
  --warning-bg: rgba(243, 156, 18, 0.15);
  --warning-glow: rgba(251, 191, 36, 0.3);
  --error: #f87171;
  --error-light: rgba(248, 113, 113, 0.15);
  --error-dark: #b91c1c;
  --error-glow: rgba(248, 113, 113, 0.3);
  --info: #60a5fa;
  --info-light: rgba(96, 165, 250, 0.15);
  --info-bg: rgba(52, 152, 219, 0.15);
  --info-glow: rgba(96, 165, 250, 0.3);
  --danger: #e74c3c;
  --danger-bg: rgba(231, 76, 60, 0.15);
  --muted-bg: rgba(128, 128, 128, 0.15);

  /* Dispatcher: Schichtbelegung (rot / gelb / grün ausgewogen) */
  --shift-staff-empty-bg: rgba(248, 113, 113, 0.24);
  --shift-staff-partial-bg: rgba(251, 191, 36, 0.24);
  --shift-staff-exact-bg: rgba(74, 222, 128, 0.24);
  --shift-staff-over-bg: rgba(96, 165, 250, 0.24);

  /* Abstände */
  --space-2xs: 0.125rem;
  --space-xs: 0.25rem;
  --space-sm: 0.5rem;
  --space-md: 0.75rem;
  --space-lg: 1rem;
  --space-xl: 1.25rem;
  --space-2xl: 1.5rem;
  --space-3xl: 2rem;
  --space-4xl: 2.5rem;

  /* Typografie */
  --font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-family-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;
  --font-mono: var(--font-family-mono);

  --font-size-2xs: 0.625rem;
  --font-size-xs: 0.75rem;
  --font-size-sm: 0.875rem;
  --font-size-base: 0.9375rem;
  --font-size-lg: 1rem;
  --font-size-xl: 1.125rem;
  --font-size-2xl: 1.5rem;
  --font-size-3xl: 2rem;

  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;

  --line-height-tight: 1.25;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.625;

  /* Radius */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 12px;
  --radius-xl: 16px;
  --radius-full: 999px;

  /* Schatten */
  --shadow-sm: 0 4px 10px rgba(0, 0, 0, 0.25);
  --shadow-md: 0 10px 24px rgba(0, 0, 0, 0.35);
  --shadow-lg: 0 20px 40px rgba(0, 0, 0, 0.45);
  --shadow-inner: inset 0 2px 4px rgba(0, 0, 0, 0.2);
  --shadow-glow: 0 0 16px rgba(123, 191, 185, 0.12);
  --shadow-focus: 0 0 0 3px rgba(123, 191, 185, 0.28);

  /* Transitions */
  --transition-fast: 0.15s ease;
  --transition-base: 0.2s ease;
  --transition-slow: 0.3s ease;

  /* Z-Index */
  --z-dropdown: 10;
  --z-sticky: 20;
  --z-fixed: 50;
  --z-modal: 100;
  --z-tooltip: 300;
  --z-notification: 400;

  /* Komponenten */
  --avatar-size-sm: 36px;
  --avatar-size-md: 48px;
  --avatar-size-lg: 72px;
  --avatar-size-xl: 96px;
  --avatar-fallback-bg: linear-gradient(135deg, var(--primary-hover), var(--primary));

  --input-height: 44px;
  --input-padding-x: 1rem;
  --input-padding-y: 0.75rem;

  --table-header-bg: var(--bg-overlay);
  --table-row-even-bg: var(--bg-overlay);
  --table-hover-bg: var(--bg-elevated);

  --header-height: 54px;
  --bottom-nav-height: 64px;
  --container-max-width: 1200px;
  --container-max-width-wide: 1600px;
  --container-padding: 1.25rem;

  /* Buttons */
  --button-height: 44px;
  --button-padding-x: 1.25rem;
  --button-padding-y: 0.75rem;
  --button-border-radius: var(--radius-md);
  --button-secondary-bg: linear-gradient(135deg, var(--bg-elevated), var(--bg-overlay));
  --button-secondary-text: var(--text);
  --button-secondary-hover: var(--bg-overlay);

  /* Form Backgrounds */
  --input-bg: var(--bg-overlay);
  --form-bg: var(--bg-overlay);
  --chat-input-bg: var(--bg-overlay);

  /* Hero & Card Image Overlays (Themable) */
  --hero-bg-gradient: linear-gradient(145deg, rgba(4, 6, 12, 0.78), rgba(4, 6, 12, 0.25));
  --hero-text-color: #ffffff;
  --hero-muted-color: rgba(255, 255, 255, 0.7);
  --hero-img-filter: brightness(0.75);
  --hero-img-opacity: 1;

  --card-img-bg-gradient: linear-gradient(135deg, rgba(10, 12, 20, 0.78), rgba(10, 12, 20, 0.35));
  --card-img-text-color: #ffffff;
  --card-img-muted-color: rgba(255, 255, 255, 0.85);
  --card-img-filter: brightness(0.5);
  --card-img-opacity: 1;
  --card-img-border: rgba(255, 255, 255, 0.15);
}



/* ==========================================================================
   03. GENERIC – Reset & Normalisierung
   ========================================================================== */


/* == inlined: 03-generic/_reset.css == */
/**
 * CSS Reset & Normalisierung
 *
 * Minimaler Reset für konsistentes Rendering über Browser hinweg
 */

/* Box-Sizing für alle Elemente */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* Margin & Padding Reset */
* {
  margin: 0;
  padding: 0;
}

/* HTML & Body Basis */
html {
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

html,
body {
  min-height: 100%;
}

/* Body Defaults */
body {
  font-family: var(--font-family-base);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  background: var(--bg);
  color: var(--text);
  margin: 0;
  padding: 0;
}

/* Listen-Reset */
ul,
ol {
  list-style: none;
  padding: 0;
  margin: 0;
}

/* Link-Reset */
a {
  color: inherit;
  text-decoration: none;
}

/* Button-Reset */
button {
  font: inherit;
  color: inherit;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
}

button::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/* Image & Media */
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}

/* Form Elements */
input,
textarea,
select,
button {
  font: inherit;
}

/* Textarea */
textarea {
  resize: vertical;
}

/* Table */
table {
  border-collapse: collapse;
  border-spacing: 0;
}

/* Hidden Attribute */
[hidden] {
  display: none !important;
}

/* Utility: Screen Reader Only */
.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;
}



/* ==========================================================================
   04. ELEMENTS – HTML-Element Styles
   ========================================================================== */


/* == inlined: 04-elements/_typography.css == */
/**
 * Typografie – HTML-Element Styles
 *
 * Basis-Styles für typografische HTML-Elemente
 */

/* Überschriften */
h1,
h2,
h3,
h4,
h5,
h6 {
  color: var(--text);
  font-weight: var(--font-weight-semibold);
  line-height: 1.35;
  margin: 0;
  letter-spacing: -0.02em;
}

h1 {
  font-size: clamp(1.8rem, 5vw + 0.5rem, 2.5rem);
  margin-bottom: var(--space-lg);
  font-weight: var(--font-weight-bold);
  background: linear-gradient(135deg, var(--text), var(--text-secondary));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

h2 {
  font-size: clamp(1.4rem, 3vw + 0.3rem, 2rem);
  margin-top: var(--space-4xl);
  margin-bottom: var(--space-md);
  padding-bottom: var(--space-sm);
  border-bottom: 2px solid transparent;
  border-image: linear-gradient(90deg, var(--primary), transparent) 1;
}

h3 {
  font-size: var(--font-size-xl);
  margin-top: var(--space-2xl);
  margin-bottom: var(--space-sm);
}

h4 {
  font-size: var(--font-size-lg);
  margin-top: var(--space-xl);
  margin-bottom: var(--space-sm);
}

h5,
h6 {
  font-size: var(--font-size-base);
  margin-top: var(--space-lg);
  margin-bottom: var(--space-sm);
}

/* Paragraphen */
p {
  margin: 0 0 var(--space-lg) 0;
  line-height: 1.65;
  color: var(--text-secondary);
}

p:last-child {
  margin-bottom: 0;
}

/* Links */
a:not(.header-icon-btn) {
  color: var(--link-color, var(--primary));
  text-decoration: none;
  transition: all var(--transition-fast);
  position: relative;
}

a:not(.header-icon-btn):hover {
  color: var(--link-hover, var(--primary-hover));
  text-decoration: none;
}

a:not(.btn):not(.card):not(.quick-action):not(.header-icon-btn)::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 2px;
  background: linear-gradient(90deg, var(--link-color, var(--primary)), var(--link-hover, var(--primary-hover)));
  transition: width var(--transition-base);
}

a:not(.btn):not(.card):not(.quick-action):not(.header-icon-btn):hover::after {
  width: 100%;
}

/* Listen */
ul,
ol {
  margin: 0 0 var(--space-lg) var(--space-2xl);
  padding: 0;
}

li {
  margin-bottom: var(--space-xs);
}

/* Text-Formatierung */
strong,
b {
  font-weight: var(--font-weight-semibold);
}

em,
i {
  font-style: italic;
}

small {
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
}

code {
  font-family: var(--font-family-mono);
  background: var(--bg-elevated);
  padding: 0.1rem 0.35rem;
  border-radius: var(--radius-sm);
  font-size: 0.9em;
}

pre {
  font-family: var(--font-family-mono);
  background: var(--bg-elevated);
  padding: var(--space-lg);
  border-radius: var(--radius-md);
  overflow-x: auto;
  margin: 0 0 var(--space-lg) 0;
}

pre code {
  background: none;
  padding: 0;
}

/* Blockquote */
blockquote {
  margin: 0 0 var(--space-lg) 0;
  padding-left: var(--space-lg);
  border-left: 3px solid var(--primary);
  color: var(--text-secondary);
  font-style: italic;
}

/* Horizontale Linie */
hr {
  border: 0;
  border-top: 1px solid var(--border);
  margin: var(--space-2xl) 0;
}

/*
 * Hinweis: Utility-Klassen wie .text-muted, .text-center, .text-xs etc.
 * wurden nach 07-utilities/_utilities.css verschoben.
 * Sie folgen dem ITCSS-Prinzip und gehören in die Utilities-Schicht.
 */



/* ==========================================================================
   05. OBJECTS – Layout-Strukturen
   ========================================================================== */


/* == inlined: 05-objects/_container.css == */
/**
 * Container – Layout-Container
 */

.container {
  width: 90%;
  max-width: var(--container-max-width);
  margin: 30px auto;
  padding: 20px var(--container-padding);
  background: var(--bg-elevated);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
}

/* Wide Container (für Admin/Dispatcher) */
.container--wide,
.admin-app .container,
.dispatcher-app .container {
  max-width: var(--container-max-width-wide);
  width: min(var(--container-max-width-wide), 100%);
}

/* Full Width Container (kein max-width) */
.container--full {
  max-width: none;
  width: 100%;
}

/* No Padding Container */
.container--no-padding {
  padding: 0;
}

/* App-spezifische Container */
.app .container {
  padding: var(--space-xl);
  max-width: 960px;
  margin: 0 auto;
}

/* Mobile: äußere Container-Ebene entkernen (mehr Inhaltsbreite) */
@media (max-width: 768px) {
  .app .container {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: var(--space-md);
    background: transparent;
    border-radius: 0;
    box-shadow: none;
  }
}


/* == inlined: 05-objects/_auth.css == */
/**
 * Authentication & Login Components
 *
 * Desktop login, mobile login, auth pages
 * Restored from archive: layout.css
 */

/* ==========================================================================
   DESKTOP LOGIN
   ========================================================================== */

.desktop-login {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: clamp(12px, 2.5vw, 24px) clamp(12px, 3vw, 16px) clamp(20px, 4vw, 40px);
  background:
    radial-gradient(circle at 20% 30%, var(--auth-glow-a), transparent 50%),
    radial-gradient(circle at 80% 70%, var(--auth-glow-b), transparent 50%),
    var(--bg);
  position: relative;
  overflow-x: hidden;
  overflow-y: auto;
}

.desktop-login::before {
  content: '';
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: radial-gradient(circle, var(--primary-glow) 0%, transparent 60%);
  opacity: 0.15;
  animation: auth-glow 20s ease-in-out infinite;
  pointer-events: none;
}

@keyframes auth-glow {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: 0.15; }
  50% { transform: translate(10%, 10%) scale(1.1); opacity: 0.25; }
}

.desktop-login__shell {
  width: min(100%, 760px);
  max-width: 760px;
  display: flex;
  flex-direction: column;
  gap: clamp(10px, 2vw, 16px);
  flex: 0 0 auto;
}

.desktop-login__brand {
  padding: 8px 0 0;
}

.desktop-login__card {
  max-width: 720px;
  width: 100%;
  padding: clamp(18px, 3.5vw, 32px) clamp(16px, 3vw, 28px) clamp(22px, 3.5vw, 36px);
  font-size: clamp(0.95rem, 1.1vw + 0.75rem, 1.125rem);
  position: relative;
  z-index: 1;
  background: var(--bg-glass);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg), 0 0 40px var(--auth-card-glow);
  box-sizing: border-box;
}

.desktop-login__card h1 {
  font-size: clamp(1.35rem, 2.5vw + 0.5rem, 2rem);
  margin-bottom: clamp(0.75rem, 2vw, 1.25rem);
  text-transform: none;
  letter-spacing: normal;
}

.desktop-login__card h2 {
  margin-top: clamp(0.5rem, 1.5vw, 1rem);
  margin-bottom: clamp(0.5rem, 1.5vw, 0.75rem);
  font-size: clamp(1.1rem, 1.5vw + 0.65rem, 1.5rem);
}

.desktop-login #login-section input {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  padding: 16px 14px;
  margin: 10px 0;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
  color: var(--text);
  font: inherit;
  line-height: 1.5;
  box-sizing: border-box;
  transition: all var(--transition-base);
  box-shadow: var(--shadow-sm);
}

.desktop-login #login-section input:focus {
  border-color: var(--input-focus-border);
  box-shadow: var(--shadow-focus);
}

.desktop-login #login-section button[type="submit"],
.desktop-login .reg-simple button[type="submit"],
.mobile-login__card button[type="submit"],
.password-reset button[type="button"],
.password-reset button:not(.secondary-action) {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  padding: 16px;
  font-size: 17px;
  font-weight: var(--font-weight-semibold);
  border-radius: var(--radius-md);
  margin-top: 12px;
  border: 1px solid transparent;
  background: var(--cta-gradient);
  color: var(--cta-fg, #1a1a1a);
  box-shadow: var(--shadow-md), 0 4px 16px var(--cta-glow);
  transition: all var(--transition-base);
  cursor: pointer;
}

.desktop-login #login-section button[type="submit"]:hover,
.desktop-login .reg-simple button[type="submit"]:hover,
.mobile-login__card button[type="submit"]:hover,
.password-reset button[type="button"]:hover,
.password-reset button:not(.secondary-action):hover {
  background: var(--cta-gradient-hover, var(--cta-gradient));
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg), 0 6px 20px var(--cta-glow);
}

.desktop-login #login-section button[type="submit"]::-moz-focus-inner {
  border: 0;
  padding: 0;
}

.desktop-login #login-section .secondary-action {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid var(--border);
  color: var(--text);
  padding: 14px;
  border-radius: var(--radius-md);
  font-size: 17px;
  cursor: pointer;
  box-shadow: none;
  transform: none;
}

.desktop-login #login-section .secondary-action:hover,
.mobile-login__card .secondary-action:hover {
  transform: none;
  box-shadow: none;
  filter: brightness(1.05);
}

.mobile-login__card .secondary-action {
  width: 100%;
  padding: 18px;
  font-size: 18px;
  border-radius: var(--radius-md);
  margin-top: 12px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid var(--border);
  color: var(--text);
  box-shadow: none;
}

.desktop-login .helper-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-sm);
  margin-top: var(--space-md);
}

.desktop-login .helper__divider {
  text-align: center;
  color: var(--text-muted);
  font-size: 1rem;
}

.desktop-login .secondary-action {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid var(--border);
  color: var(--text);
  padding: 14px;
  border-radius: var(--radius-md);
  font-size: 17px;
  cursor: pointer;
}

.desktop-login .secondary-action:hover {
  filter: brightness(1.05);
}

/* Registrierung: kompakter auf schmalen/kurzen Desktop-Viewports */
.desktop-login .reg-simple {
  margin: 0;
}

.desktop-login .reg-simple button[type="submit"] {
  width: 100%;
  padding: clamp(12px, 2vw, 16px);
  font-size: clamp(0.95rem, 1vw + 0.8rem, 1.05rem);
  margin-top: 8px;
}

.desktop-login .reg-simple h3 {
  font-size: clamp(0.95rem, 1vw + 0.8rem, 1.05rem);
}

.desktop-login .reg-simple__privacy {
  padding: clamp(10px, 2vw, 14px);
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--border);
}

@media (max-width: 1024px) {
  .desktop-login__shell {
    max-width: min(100%, 640px);
  }

  .desktop-login__card {
    max-width: 100%;
  }

  .desktop-login #login-section input {
    padding: 14px 12px;
    margin: 8px 0;
  }

  .desktop-login #login-section button[type="submit"],
  .desktop-login #login-section .secondary-action {
    padding: 14px;
    font-size: 1rem;
  }
}

@media (max-height: 860px) {
  .desktop-login {
    align-items: stretch;
  }

  .desktop-login__shell {
    max-width: min(100%, 600px);
    margin-inline: auto;
  }

  .desktop-login__brand {
    padding-top: 0;
  }

  .desktop-login__card h1 {
    margin-bottom: 0.5rem;
  }

  .desktop-login .reg-simple {
    padding: 14px;
    gap: 10px;
  }

  .desktop-login .reg-simple__input,
  .desktop-login .reg-simple__select {
    padding: 10px 12px !important;
  }

  .desktop-login .reg-simple__privacy {
    padding: 10px;
  }
}

@media (max-width: 900px) and (max-height: 760px) {
  .desktop-login {
    padding-top: 8px;
    padding-bottom: 16px;
  }

  .desktop-login__card {
    padding: 14px 14px 18px;
  }
}


/* ==========================================================================
   MOBILE LOGIN
   ========================================================================== */

.mobile-login {
  min-height: 100dvh;
  display: flex;
  background: radial-gradient(160% 160% at 20% 20%, var(--auth-glow-a), transparent), var(--bg);
  color: var(--text);
}

.mobile-login__wrapper {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: clamp(18px, 6vw, 32px) clamp(16px, 6vw, 28px) clamp(24px, 8vw, 40px);
}

.mobile-login__hero {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-sm);
}

.mobile-login__brand {
  display: flex;
  align-items: center;
  gap: 14px;
}

.mobile-login__icon {
  width: 82px;
  height: 82px;
}

.mobile-login__wordmark {
  height: 52px;
}

.mobile-login__card {
  background: var(--bg-elevated);
  border-radius: var(--radius-lg);
  box-shadow: 0 24px 56px rgba(0, 0, 0, 0.5);
  padding: clamp(22px, 6vw, 36px);
  width: min(95vw, 780px);
  margin: 0 auto;
}

.mobile-login__card h1 {
  margin: 0 0 14px;
  font-size: clamp(2.1rem, 4vw, 2.5rem);
  text-transform: none;
  letter-spacing: normal;
}

.mobile-login__card h2 {
  margin: 6px 0 12px;
  font-size: clamp(1.2rem, 3vw, 1.4rem);
  border: 0;
}

.mobile-login__card input {
  width: 100%;
  padding: 18px 16px;
  margin: 10px 0;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
  color: var(--text);
  font-size: 18px;
  line-height: 1.45;
  box-sizing: border-box;
}

.mobile-login__card input::placeholder {
  color: var(--text-muted);
}

.mobile-login__card input:focus {
  border-color: var(--input-focus-border);
  box-shadow: var(--shadow-focus);
  outline: none;
}

.mobile-login__card button[type="submit"] {
  width: 100%;
  padding: 18px;
  font-size: 18px;
  border-radius: var(--radius-md);
  margin-top: 12px;
  font-weight: var(--font-weight-semibold);
}

.mobile-login__card .helper {
  margin-top: 14px;
  font-size: 1.1rem;
}

.mobile-login__card .helper a {
  color: var(--link-color, var(--text-secondary));
  text-decoration: underline;
  text-underline-offset: 2px;
}

.mobile-login__card .build-info {
  margin-top: 14px;
  font-size: 0.95rem;
  color: var(--text-muted);
}

.mobile-login__card-section {
  margin: 12px 0 16px;
}

@media (max-width: 480px) {
  .mobile-login__icon {
    width: 72px;
    height: 72px;
  }

  .mobile-login__wordmark {
    height: 46px;
  }

  .mobile-login__card {
    width: 100%;
  }
}


/* ==========================================================================
   AUTH PAGE & CARD
   ========================================================================== */

.auth-page {
  min-height: 100dvh;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: clamp(16px, 5vw, 32px);
}

.auth-shell {
  width: 100%;
  min-height: 100%;
  display: flex;
  flex-direction: column;
  gap: 16px;
  align-items: center;
  justify-content: center;
}

.auth-stack {
  display: contents;
}

.auth-hero {
  display: flex;
  align-items: center;
  gap: 14px;
}

.auth-card {
  width: min(96vw, 760px);
  background: var(--bg-elevated);
  border-radius: var(--radius-lg);
  box-shadow: 0 20px 48px rgba(0, 0, 0, 0.5);
  padding: clamp(22px, 5vw, 36px);
  color: var(--text);
  font-size: 18px;
}

.auth-card h1 {
  font-size: clamp(2rem, 3vw, 2.4rem);
  margin: 0 0 18px;
}

.auth-card h2 {
  margin-top: 6px;
  margin-bottom: 10px;
  border-bottom: 0;
  font-size: clamp(1.2rem, 2.4vw, 1.35rem);
}

.auth-card input {
  width: 100%;
  padding: 18px 16px;
  margin: 10px 0;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
  color: var(--text);
  font-size: 18px;
  line-height: 1.4;
  box-sizing: border-box;
}

.auth-card input::placeholder {
  color: var(--text-muted);
}

.auth-card input:focus {
  border-color: var(--input-focus-border);
  box-shadow: var(--shadow-focus);
  outline: none;
}

.auth-card button {
  width: 100%;
  padding: 18px;
  font-size: 18px;
  border-radius: var(--radius-md);
  margin-top: 10px;
}

.auth-card .helper {
  margin-top: 12px;
  font-size: 1.1rem;
}

.auth-card .helper a {
  color: var(--link-color, var(--text-secondary));
  text-decoration: underline;
  text-underline-offset: 2px;
}


/* ==========================================================================
   HELPER ELEMENTS
   ========================================================================== */

.helper-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-sm);
}

.helper__divider {
  text-align: center;
  color: var(--text-muted);
  font-size: 1rem;
}

.secondary-action {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid var(--border);
  color: var(--text);
  padding: 14px;
  border-radius: var(--radius-md);
  font-size: 17px;
  cursor: pointer;
  transition: var(--transition-base);
}

.secondary-action:hover {
  filter: brightness(1.05);
}

.desktop-login .helper a,
.password-reset .helper a {
  color: var(--link-color, var(--text-secondary));
  text-decoration: underline;
  text-underline-offset: 2px;
}

.build-info {
  margin-top: var(--space-sm);
  font-size: 0.9rem;
  color: var(--text-muted);
}

/* ==========================================================================
   PASSWORT-RESET
   ========================================================================== */

.password-reset__intro {
  margin: 0 0 clamp(0.75rem, 2vw, 1.25rem);
  color: var(--text-muted);
  line-height: 1.5;
}

.password-reset input[type="email"],
.password-reset input[type="password"] {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  padding: 16px 14px;
  margin: 10px 0;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
  color: var(--text);
  font: inherit;
  line-height: 1.5;
  box-sizing: border-box;
  transition: all var(--transition-base);
  box-shadow: var(--shadow-sm);
}

.password-reset input:focus {
  border-color: var(--input-focus-border);
  box-shadow: var(--shadow-focus);
}

.reset-account {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0 0 12px;
  padding: 14px 16px;
  border-radius: var(--radius-md);
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--border);
}

.reset-account__label {
  font-size: 0.85rem;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.reset-account__email {
  font-size: 1.05rem;
  font-weight: var(--font-weight-semibold);
  word-break: break-all;
}

.activate-account__info {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 12px;
}

.activate-account__login-hint {
  margin: 8px 0 0;
}

.password-reset .reset-field {
  display: block;
  margin-bottom: 4px;
  font-size: 0.95rem;
  color: var(--text-muted);
}

.password-reset .reset-field input {
  margin-top: 6px;
}


/* ==========================================================================
   BRAND COMPONENTS
   ========================================================================== */

.brand {
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
}

.brand__icon {
  width: 32px;
  height: 32px;
  object-fit: contain;
}

.brand__wordmark {
  height: 28px;
  object-fit: contain;
}

.brand__icon--hero {
  width: 68px;
  height: 68px;
}

.brand__wordmark--hero {
  height: 44px;
}

@media (max-width: 720px) {
  .brand__wordmark {
    display: none;
  }
}



/* ==========================================================================
   06. COMPONENTS – UI-Komponenten
   ========================================================================== */

/* Core-Komponenten (konsolidiert) */

/* == inlined: 06-components/_avatar.css == */
/**
 * Avatar Component
 * Konsolidierte Avatar-Komponente
 * Ersetzt 10 verschiedene Avatar-Implementierungen (200+ Zeilen)
 */

/* ==========================================================================
   BASE AVATAR
   ========================================================================== */

.avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  object-fit: cover;
  background: var(--bg-elevated);
  color: white;
  font-weight: 600;
  flex-shrink: 0;
  position: relative;
  overflow: hidden;
  border: none;
  transition: var(--transition-base);
}

/* Avatar Image */
.avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
}

/* Avatar Fallback (Initials) */
.avatar__initials {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: inherit;
  font-weight: inherit;
}

/* ==========================================================================
   SIZES
   ========================================================================== */

.avatar--xs {
  width: 24px;
  height: 24px;
  font-size: 10px;
  border-width: 1px;
}

.avatar--sm {
  width: 32px;
  height: 32px;
  font-size: 12px;
}

.avatar--md {
  width: 40px;
  height: 40px;
  font-size: 14px;
}

.avatar--lg {
  width: 48px;
  height: 48px;
  font-size: 16px;
}

.avatar--xl {
  width: 64px;
  height: 64px;
  font-size: 20px;
}

.avatar--2xl {
  width: 80px;
  height: 80px;
  font-size: 24px;
}

.avatar--3xl {
  width: 96px;
  height: 96px;
  font-size: 28px;
}

.avatar--4xl {
  width: 120px;
  height: 120px;
  font-size: 32px;
}

/* ==========================================================================
   VARIANTS
   ========================================================================== */

/* Primary */
.avatar--primary {
  background: var(--primary);
  color: white;
}

/* Secondary */
.avatar--secondary {
  background: var(--bg-elevated);
  color: var(--text-primary);
  border: none;
}

/* Gradient */
.avatar--gradient {
  background: linear-gradient(135deg, var(--primary), var(--primary-dark, #a50d26));
  color: white;
}

/* Subtle */
.avatar--subtle {
  background: var(--bg);
  border: none;
}

/* No Border */
.avatar--no-border {
  border: none;
}

/* Square (for logos, etc.) */
.avatar--square {
  border-radius: var(--radius-md);
}

/* ==========================================================================
   STATES
   ========================================================================== */

/* Clickable */
.avatar--clickable {
  cursor: pointer;
}

.avatar--clickable:hover {
  transform: scale(1.05);
  border-color: var(--primary);
  box-shadow: var(--shadow-md);
}

/* Online Status */
.avatar--online::after {
  content: '';
  position: absolute;
  bottom: 0;
  right: 0;
  width: 25%;
  height: 25%;
  background: var(--success);
  border: 2px solid var(--bg);
  border-radius: 50%;
}

/* Offline Status */
.avatar--offline::after {
  content: '';
  position: absolute;
  bottom: 0;
  right: 0;
  width: 25%;
  height: 25%;
  background: var(--text-tertiary);
  border: 2px solid var(--bg);
  border-radius: 50%;
}

/* ==========================================================================
   AVATAR GROUP
   ========================================================================== */

.avatar-group {
  display: inline-flex;
  align-items: center;
  flex-direction: row-reverse;
  padding-left: 12px;
}

.avatar-group .avatar {
  margin-left: -12px;
  border: 2px solid var(--bg);
  transition: var(--transition-base);
}

.avatar-group .avatar:hover {
  z-index: 10;
  transform: translateY(-2px);
}

/* Avatar Group Counter */
.avatar-group__counter {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--bg-elevated);
  border: 2px solid var(--bg);
  color: var(--text-secondary);
  font-size: 12px;
  font-weight: 600;
  margin-left: -12px;
}

/* ==========================================================================
   AVATAR WITH TEXT
   ========================================================================== */

.avatar-inline {
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
}

.avatar-inline__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.avatar-inline__name {
  font-weight: 600;
  color: var(--text-primary);
  font-size: 14px;
}

.avatar-inline__meta {
  font-size: 12px;
  color: var(--text-secondary);
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
  .avatar--responsive {
    width: 32px;
    height: 32px;
    font-size: 12px;
  }

  .avatar-group {
    padding-left: 8px;
  }

  .avatar-group .avatar {
    margin-left: -8px;
  }
}

/* ==========================================================================
   AVATAR-HOVER-PREVIEW (Mouseover-Vergrößerung)
   ========================================================================== */

[data-avatar-preview] {
  cursor: pointer;
}

.avatar-hover-preview-popup {
  position: fixed;
  z-index: calc(var(--z-tooltip, 300) + 50);
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-xs);
  padding: var(--space-xs);
  background: var(--bg-overlay, #1a1f2b);
  border: 1px solid var(--border-strong, rgba(255, 255, 255, 0.15));
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  opacity: 0;
  transform: scale(0.95);
  transition: opacity 0.15s ease-out, transform 0.15s ease-out;
}

.avatar-hover-preview-popup.is-visible {
  opacity: 1;
  transform: scale(1);
}

.avatar-hover-preview-popup img {
  display: block;
  width: 200px;
  height: 200px;
  object-fit: cover;
  border-radius: var(--radius-md);
  background: var(--bg-elevated);
}

.avatar-hover-preview-popup__caption {
  color: var(--text, #fff);
  font-size: var(--font-size-sm);
  font-weight: 600;
  text-align: center;
  max-width: 200px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Tap-Lightbox für Touch-Geräte (kein Mouseover) */
.avatar-preview-lightbox {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.92);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: calc(var(--z-tooltip, 300) + 100);
  padding: var(--space-xl);
  cursor: zoom-out;
  opacity: 0;
  transition: opacity 0.2s ease-out;
}

.avatar-preview-lightbox.is-visible {
  opacity: 1;
}

.avatar-preview-lightbox img {
  max-width: min(90vw, 480px);
  max-height: 80vh;
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  cursor: default;
}

.avatar-preview-lightbox__close {
  position: absolute;
  top: max(var(--space-lg), env(safe-area-inset-top, 0px));
  right: max(var(--space-lg), env(safe-area-inset-right, 0px));
  background: rgba(0, 0, 0, 0.5);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #fff;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  font-size: var(--font-size-xl);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}

body.avatar-preview-lightbox-open {
  overflow: hidden;
}


/* == inlined: 06-components/_buttons.css == */
/**
 * Buttons – Globales Button-System
 *
 * KONZEPT:
 * 1. .btn ist die Basisklasse (Mobile-First, Touch-friendly).
 * 2. Modifikatoren für Farben (--primary, --danger, etc.) und Größen (--sm, --lg).
 * 3. Alle Werte basieren auf CSS-Variablen aus _variables.css.
 */

/* ==========================================================================
   BASE BUTTON
   ========================================================================== */

button,
.btn {
  -webkit-appearance: none;
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-sm);
  padding: var(--button-padding-y) var(--button-padding-x);
  min-height: var(--button-height);
  font-family: inherit;
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-semibold);
  line-height: 1;
  border-radius: var(--button-border-radius);
  border: 1px solid transparent;
  background: var(--bg-overlay);
  color: var(--text);
  text-decoration: none;
  cursor: pointer;
  transition: all var(--transition-base);
  user-select: none;
  position: relative;
  overflow: hidden;
}

/* Hover & Active States (Global) */
button:hover:not(:disabled),
.btn:hover:not(:disabled) {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
  filter: brightness(1.1);
}

button:active:not(:disabled),
.btn:active:not(:disabled) {
  transform: translateY(0) scale(0.98);
}

button:disabled,
.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  filter: grayscale(0.5);
}

/* ==========================================================================
   VARIANTS (COLORS)
   ========================================================================== */

/* Primary */
.btn--primary,
.btn-primary {
  background: var(--primary-gradient);
  color: #fff;
  border-color: var(--primary-dark);
}

/* Secondary */
.btn--secondary,
.btn-secondary {
  background: var(--button-secondary-bg);
  color: var(--button-secondary-text);
  border-color: var(--border-strong);
}

/* Danger / Error */
.btn--danger,
.btn-danger {
  background: linear-gradient(135deg, var(--error), var(--error-dark));
  color: #fff;
  border-color: var(--error-dark);
}

/* Success */
.btn--success,
.btn-success {
  background: linear-gradient(135deg, var(--success), #16a34a);
  color: #fff;
  border-color: #15803d;
}

/* Ghost / Outline */
.btn--ghost {
  background: transparent;
  border: 1px solid var(--border-strong);
  color: var(--text);
}

.btn--ghost:hover:not(:disabled) {
  background: var(--primary-light-10);
  border-color: var(--primary);
  color: var(--primary);
}

/* ==========================================================================
   SIZES & SHAPES
   ========================================================================== */

.btn--sm, .btn-sm {
  min-height: 32px;
  padding: 4px var(--space-md);
  font-size: var(--font-size-sm);
}

.btn--lg, .btn-lg {
  min-height: 52px;
  padding: var(--space-md) var(--space-2xl);
  font-size: var(--font-size-lg);
}

.btn--pill {
  border-radius: var(--radius-full);
}

.btn--block {
  width: 100%;
}

/* Icon Buttons */
.btn--icon {
  width: 40px;
  height: 40px;
  padding: 0;
  border-radius: 50%;
}

/* ==========================================================================
   SPECIALS (FLOATING, DISPATCHER)
   ========================================================================== */

/* Floating Action Button */
.btn--floating {
  position: fixed;
  bottom: calc(var(--bottom-nav-height) + var(--space-lg));
  right: var(--space-lg);
  z-index: var(--z-fixed);
  box-shadow: var(--shadow-lg), 0 0 15px var(--primary-glow);
}

/* Dispatcher / Admin "Pill" Buttons (ex #job-create-btn) */
.btn--admin-pill {
  border-radius: var(--radius-full);
  padding: 2px 12px;
  font-size: var(--font-size-sm);
  min-height: 30px;
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
  button, .btn {
    min-height: 48px; /* Extra Touch-friendly auf kleinen Screens */
  }
  
  .btn--sm {
    min-height: 36px;
  }
}

/* == inlined: 06-components/_cards.css == */
/**
 * Cards – Vereinheitlichtes Card-System
 *
 * KONZEPT:
 * 1. .card ist die universelle Basis (schlicht, Admin, Sektionen).
 * 2. .item-card ist die "Premium"-Variante für das Helfer-Portal.
 * 3. Alle spezialisierten Karten (Profile, Event, Widget) basieren auf diesen Tokens.
 */

/* ==========================================================================
   BASE CARD
   ========================================================================== */

.card,
.widget-card {
  --card-padding: var(--space-lg);
  --card-gap: var(--space-md);
  --card-radius: var(--radius-lg);
  --card-bg: var(--bg-elevated);
  --card-border: var(--border-strong);
  --card-shadow: var(--shadow-sm);

  display: flex;
  flex-direction: column;
  gap: var(--card-gap);
  padding: var(--card-padding);
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--card-radius);
  color: var(--text);
  text-decoration: none;
  transition: all var(--transition-base);
  position: relative;
  overflow: hidden;
}

/* Clickable state for all cards */
.card--interactive,
a.card,
.item-card,
.widget-card--clickable {
  cursor: pointer;
}

.card--interactive:hover,
a.card:hover,
.widget-card--clickable:hover {
  border-color: var(--border-glow);
  box-shadow: var(--shadow-md);
  transform: translateY(-4px);
}

/* ==========================================================================
   ITEM-CARD (PREMIUM HELFER-CARD)
   ========================================================================== */

.item-card {
  --card-padding: var(--space-md);
  --card-radius: var(--radius-md);
  
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding: var(--card-padding);
  background: var(--bg-elevated);
  border: 1px solid var(--border-strong);
  border-radius: var(--card-radius);
  color: var(--text);
  position: relative;
  overflow: hidden;
  transition: var(--transition-base);
}

/* Glassmorphism & Background Hero */
.item-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: var(--job-card-bg, none);
  background-size: cover;
  background-position: center;
  filter: var(--card-img-filter);
  opacity: var(--card-img-opacity);
  transition: transform var(--transition-slow);
  z-index: 0;
}

.item-card::after {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--card-img-bg-gradient);
  z-index: 1;
}

.item-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg), 0 0 20px var(--primary-glow);
  border-color: var(--primary-light-50);
}

.item-card:hover::before {
  transform: scale(1.05);
}

/* Content wrapper to stay above background */
.item-card > * {
  position: relative;
  z-index: 2;
}

/* Layout Modifiers */
.item-card--horizontal {
  flex-direction: row;
  align-items: center;
}

/* ==========================================================================
   CARD SUB-COMPONENTS
   ========================================================================== */

.card__header, .item-card__header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-md);
}

.card__body, .item-card__body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.card__title, .item-card__title {
  margin: 0;
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-tight);
}

.card__teaser, .item-card__teaser {
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
}

.card__footer, .item-card__footer {
  margin-top: auto;
  padding-top: var(--space-sm);
  border-top: 1px solid var(--border);
}

/* Icons & Images */
.card__icon, .item-card__icon {
  width: 64px;
  height: 64px;
  border-radius: var(--radius-md);
  background: var(--bg-overlay);
  border: 1px solid var(--border);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.card__icon img, .item-card__icon img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ==========================================================================
   SPEZIALISIERTE KARTEN (KONSOLIDIERT)
   ========================================================================== */

/* Dashboard Widget */
.dashboard-widget {
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-xl);
  padding: var(--space-lg);
  background: var(--bg-elevated);
  backdrop-filter: var(--glass-blur);
  transition: all var(--transition-base);
}

.dashboard-widget:hover {
  border-color: var(--border-glow);
  box-shadow: var(--shadow-md);
}

/* Profile Card (Schlicht) */
.profile-card {
  background: var(--bg-elevated);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-lg);
  padding: var(--space-lg) var(--space-xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

/* Event Select Card */
.event-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-md) var(--space-lg);
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  transition: border-color var(--transition-fast);
}

.event-card:hover {
  border-color: var(--primary);
}

/* ==========================================================================
   UTILITIES & STATES
   ========================================================================== */

.card--compact { --card-padding: var(--space-md); --card-gap: var(--space-sm); }
.card--elevated { box-shadow: var(--shadow-md); }
.card--active { border-color: var(--primary); background: var(--primary-light-10); }
.card--disabled { opacity: 0.6; pointer-events: none; }

/* ==========================================================================
   LISTS & COLLECTIONS
   ========================================================================== */

.list {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.list-section {
  margin-bottom: var(--space-2xl);
}

.list-section h2 {
  font-size: var(--font-size-xl);
  font-weight: 700;
  margin-bottom: var(--space-md);
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
  .card { --card-padding: var(--space-md); }
  .card:hover, .item-card:hover, .widget-card--clickable:hover { transform: none; }
  .item-card--horizontal { flex-direction: column; align-items: stretch; }
}

/* ==========================================================================
   DASHBOARD SPECIFICS
   ========================================================================== */

.widget-card h3 {
  font-size: var(--font-size-md);
  font-weight: 700;
  margin: 0;
  color: var(--text);
}

.widget-card p {
  margin: 0;
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
}

/* Glassmorphism für Dashboard-Karten mit Hintergrundbild */
.widget-card.has-bg {
  --card-bg: rgba(15, 22, 35, 0.7);
  backdrop-filter: blur(10px);
  border-color: rgba(255, 255, 255, 0.1);
}

.widget-card.has-bg::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: var(--widget-shift-bg, var(--widget-job-bg, none));
  background-size: cover;
  background-position: center;
  filter: brightness(0.4);
  z-index: -1;
}

.widget-card-badge {
  display: inline-block;
  align-self: flex-start;
  padding: 2px 8px;
  background: var(--primary-light-10);
  color: var(--primary);
  border-radius: var(--radius-full);
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: var(--space-xs);
}

.widget-crew {
  display: flex;
  margin-top: var(--space-sm);
  padding-left: 10px;
}

.widget-avatar {
  width: 28px;
  height: 28px;
  border-radius: var(--radius-full);
  background: var(--bg-soft);
  border: 2px solid var(--bg-elevated);
  margin-left: -10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 700;
  overflow: hidden;
  transition: transform var(--transition-fast);
  position: relative;
  z-index: 2;
}

.widget-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.widget-avatar:hover {
  transform: translateY(-4px);
  z-index: 10;
}


/* == inlined: 06-components/_forms.css == */
/**
 * Forms – Formulare & Input-Elemente
 *
 * Konsolidierte Form-Komponenten mit konsistentem Styling
 */

/* ==========================================================================
   BASE INPUT STYLES
   ========================================================================== */

input:not([type='checkbox']):not([type='radio']),
textarea,
select {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  padding: var(--input-padding-y) var(--input-padding-x);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  background: var(--bg-overlay);
  color: var(--text);
  transition: all var(--transition-base);
  box-shadow: var(--shadow-sm);
}

input:not([type='checkbox']):not([type='radio']):hover,
textarea:hover,
select:hover {
  border-color: var(--border-glow);
}

input:not([type='checkbox']):not([type='radio']):focus,
textarea:focus {
  outline: none;
  border-color: var(--primary);
  background: var(--bg-elevated);
  box-shadow: var(--shadow-focus), 0 4px 12px rgba(0, 0, 0, 0.2);
  /* Kein transform hier – würde Firefox-Dropdown-Positionierung brechen */
}

select:focus {
  outline: none;
  border-color: var(--primary);
  background: var(--bg-elevated);
  box-shadow: var(--shadow-focus);
}

input::placeholder,
textarea::placeholder {
  color: var(--text-muted);
}

input:disabled,
textarea:disabled,
select:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

/* Textarea */
textarea {
  resize: vertical;
  min-height: 80px;
}

textarea.form-control--md {
  min-height: 160px;
}

textarea.form-control--md-editor {
  min-height: 220px;
}

/* Select */
select {
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.75rem center;
  background-size: 12px;
  padding-right: 2.5rem;
}


/* ==========================================================================
   FORM LAYOUT
   ========================================================================== */

/* Form Row */
.form-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm);
  align-items: center;
  margin-bottom: var(--space-sm);
}

.form-row label {
  min-width: 120px;
  color: var(--text);
  font-weight: var(--font-weight-medium);
}

/* Form Grid */
.form-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-lg);
  align-items: flex-end;
  margin-bottom: var(--space-lg);
}

.form-grid--2-col {
  grid-template-columns: repeat(2, 1fr);
}

.form-grid--3-col {
  grid-template-columns: repeat(3, 1fr);
}

@media (max-width: 768px) {
  .form-grid--2-col,
  .form-grid--3-col {
    grid-template-columns: 1fr;
  }
}

/* Form Panel */
.form-panel {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

/* Form Group (Label + Input) */
.form-group {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.form-group label {
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
  color: var(--text);
}

/* Form Actions */
.form-actions {
  display: flex;
  align-items: center;
  gap: var(--space-lg);
  flex-wrap: wrap;
  margin-top: var(--space-lg);
}

/* Inline Inputs (z.B. für Zeit-Felder) */
.inline-inputs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-sm);
}


/* ==========================================================================
   FORM CONTROL VARIANTEN
   ========================================================================== */

.form-control {
  width: 100%;
  padding: 0.65rem 0.75rem;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
  color: var(--text);
  font-size: var(--font-size-base);
}


/* ==========================================================================
   CHECKBOXEN & RADIO BUTTONS
   ========================================================================== */

input[type='checkbox'],
input[type='radio'] {
  width: auto;
  margin-right: var(--space-xs);
  cursor: pointer;
}

/* Checkbox/Radio Label Container */
.checkbox-label,
.radio-label {
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
  cursor: pointer;
}


/* ==========================================================================
   FILE INPUT
   ========================================================================== */

input[type='file'] {
  padding: var(--space-sm);
  font-size: var(--font-size-sm);
}

.file-input-label {
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  text-align: center;
  cursor: pointer;
  color: var(--text-secondary);
  transition: border-color var(--transition-base);
}

.file-input-label:hover {
  border-color: var(--primary);
}

.file-input-label input {
  display: none;
}

.file-input-label.dragover {
  border-color: var(--primary);
  background: var(--bg-elevated);
  border-style: solid;
}

/* File Upload Wrapper */
.file-upload-wrapper {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

/* Image Preview */
.image-preview {
  position: relative;
  border-radius: var(--radius-md);
  overflow: hidden;
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
}

.image-preview img {
  width: 100%;
  max-height: 300px;
  object-fit: contain;
  display: block;
}

.image-remove-btn {
  position: absolute;
  top: var(--space-sm);
  right: var(--space-sm);
  padding: var(--space-xs) var(--space-sm);
  background: var(--error);
  color: white;
  border: none;
  border-radius: var(--radius-sm);
  cursor: pointer;
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
  transition: background var(--transition-base);
}

.image-remove-btn:hover {
  background: var(--error-dark);
}

/* Markdown Editor Textarea */
.markdown-editor-textarea {
  min-height: 200px;
  font-family: var(--font-mono, monospace);
}

/* ==========================================================================
   MARKDOWN EDITOR (SimpleMDE / CodeMirror) DARK THEME
   ========================================================================== */

/* CodeMirror Editor */
.CodeMirror {
  background: var(--bg-overlay) !important;
  color: var(--text) !important;
  border: 1px solid var(--border-strong) !important;
  border-radius: var(--radius-md) !important;
}

.CodeMirror-scroll {
  background: var(--bg-overlay) !important;
}

.CodeMirror-gutters {
  background: var(--bg-elevated) !important;
  border-right: 1px solid var(--border-strong) !important;
}

.CodeMirror-linenumber {
  color: var(--text-muted) !important;
}

.CodeMirror-cursor {
  border-left: 1px solid var(--text) !important;
}

.CodeMirror-selected {
  background: var(--primary-light) !important;
}

.CodeMirror-focused .CodeMirror-selected,
.CodeMirror-line::selection,
.CodeMirror-line > span::selection,
.CodeMirror-line > span > span::selection {
  background: var(--primary-light) !important;
}

.CodeMirror-activeline-background {
  background: var(--primary-light-05) !important;
}

/* Editor Toolbar */
.editor-toolbar {
  background: var(--bg-elevated) !important;
  border: 1px solid var(--border-strong) !important;
  border-bottom: none !important;
  border-radius: var(--radius-md) var(--radius-md) 0 0 !important;
}

.editor-toolbar a {
  color: var(--text) !important;
}

.editor-toolbar a:hover,
.editor-toolbar a.active {
  background: var(--bg-overlay) !important;
  border-color: var(--border-strong) !important;
}

.editor-toolbar i.separator {
  border-left: 1px solid var(--border-strong) !important;
  border-right: 1px solid var(--border-strong) !important;
}

/* Editor Preview */
.editor-preview,
.editor-preview-side {
  background: var(--bg-overlay) !important;
  color: var(--text) !important;
  border: 1px solid var(--border-strong) !important;
}

.editor-preview pre,
.editor-preview-side pre {
  background: var(--bg-elevated) !important;
  color: var(--text) !important;
}

.editor-preview table td,
.editor-preview table th,
.editor-preview-side table td,
.editor-preview-side table th {
  border: 1px solid var(--border-strong) !important;
}

/* Editor Statusbar */
.editor-statusbar {
  background: var(--bg-elevated) !important;
  color: var(--text-muted) !important;
  border: 1px solid var(--border-strong) !important;
  border-top: none !important;
  border-radius: 0 0 var(--radius-md) var(--radius-md) !important;
}

/* CodeMirror Syntax Highlighting für Dark Theme */
.CodeMirror .CodeMirror-code .cm-header {
  color: var(--primary) !important;
}

.CodeMirror .CodeMirror-code .cm-quote {
  color: var(--text-secondary) !important;
}

.CodeMirror .CodeMirror-code .cm-comment {
  background: var(--primary-light-10) !important;
  color: var(--text-muted) !important;
}

.CodeMirror .CodeMirror-code .cm-link {
  color: var(--primary) !important;
}

.CodeMirror .CodeMirror-code .cm-url {
  color: var(--text-secondary) !important;
}

.CodeMirror .CodeMirror-code .cm-string {
  color: #ffd700 !important;
}

.CodeMirror .CodeMirror-code .cm-keyword {
  color: #ff6b9d !important;
}

.CodeMirror .CodeMirror-placeholder {
  color: var(--text-muted) !important;
  opacity: 0.6 !important;
}

/* Job Create Form */
.job-create-form {
  background: var(--bg-overlay);
  padding: var(--space-lg);
  border-radius: var(--radius-lg);
  border: 1px solid var(--border-strong);
  margin-bottom: var(--space-xl);
}

.job-create-form .form-group {
  margin-bottom: var(--space-lg);
}

.job-create-form .form-group:last-of-type {
  margin-bottom: 0;
}


/* ==========================================================================
   SEARCH INPUT
   ========================================================================== */

.search-input {
  width: 100%;
  min-height: var(--input-height);
  border-radius: var(--radius-lg);
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
  color: var(--text);
  padding: var(--space-md);
  font-size: var(--font-size-base);
  box-shadow: var(--shadow-inner);
}

.search-input:focus {
  border-color: var(--primary);
  outline: none;
}


/* ==========================================================================
   MESSAGES / FEEDBACK
   ========================================================================== */

.message {
  display: block;
  padding: var(--space-md) var(--space-lg);
  border-radius: var(--radius-sm);
  font-weight: var(--font-weight-medium);
  margin: var(--space-lg) 0;
}

.message.info {
  background: var(--info-light);
  color: #ffffff;
  border: 1px solid var(--info);
}

.message.success {
  background: var(--success-light);
  color: #ffffff;
  border: 1px solid var(--success);
}

.message.error {
  background: var(--error-light);
  color: #ffffff;
  border: 1px solid var(--error);
}

.message.warning {
  background: var(--warning-light);
  color: #000000;
  border: 1px solid var(--warning);
}

/* Hidden Messages */
.message:not(.info):not(.success):not(.error):not(.warning) {
  display: none;
}


.form-feedback {
  display: none;
  margin: var(--space-lg) 0;
  padding: var(--space-md) var(--space-lg);
  border-radius: var(--radius-md);
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  font-size: var(--font-size-sm);
  box-shadow: var(--shadow-sm);
}

.form-feedback--visible {
  display: block;
}

.form-feedback--hidden {
  display: none;
}

.form-feedback--success {
  border-color: var(--success);
  background: rgba(34, 197, 94, 0.12);
  color: var(--success);
}

.form-feedback--error {
  border-color: var(--error);
  background: rgba(240, 89, 89, 0.12);
  color: var(--error);
}

.form-feedback__header {
  display: flex;
  flex-direction: column;
  gap: var(--space-1x);
  margin-bottom: var(--space-sm);
}

.form-feedback__title {
  font-weight: var(--font-weight-semibold);
}

.form-feedback__message {
  margin: 0;
  color: var(--text);
}

.form-feedback__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.form-feedback__item {
  padding: var(--space-xs) var(--space-sm);
  border-radius: var(--radius-sm);
  background: rgba(0, 0, 0, 0.03);
  font-size: var(--font-size-xs);
}

.form-feedback__item strong {
  display: inline-block;
  font-size: var(--font-size-xs);
  margin-right: var(--space-xs);
}

.form-feedback__item--field {
  border-left: 3px solid currentColor;
}

.input--error {
  border-color: var(--error) !important;
}


/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
  .form-row {
    flex-direction: column;
    align-items: stretch;
  }

  .form-row label {
    min-width: auto;
  }

  .form-grid {
    grid-template-columns: 1fr;
  }

  .inline-inputs {
    grid-template-columns: 1fr;
  }
}

/* Branding-Admin: Upload-Zeilen und Vorschau */
.form-section-title {
  margin: 1.25rem 0 0.35rem;
  font-size: 1.05rem;
}

.branding-asset-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}

.branding-asset-controls input[type='text'] {
  flex: 1 1 16rem;
  min-width: 0;
}

.branding-preview-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}

.branding-preview-theme-toggle {
  display: flex;
  gap: 0.35rem;
}

.branding-preview-mode.is-active {
  border-color: var(--primary);
  color: var(--primary);
}

.branding-preview-frame {
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 8px);
  padding: 1rem 1.25rem;
}

.branding-preview-frame--light {
  background: #f8fafa;
  color: #001a1a;
}

.branding-preview-frame--dark {
  background: #121416;
  color: #f8f9fa;
}


/* == inlined: 06-components/_navigation.css == */
/**
 * Navigation – Header, Bottom Nav, Burger Menu
 *
 * Konsolidiert alle Navigations-Komponenten
 */

/* ==========================================================================
   APP HEADER
   ========================================================================== */

.app-header {
  position: sticky;
  top: 0;
  z-index: var(--z-sticky);
  display: grid;
  grid-template-columns: auto auto 1fr auto;
  align-items: center;
  gap: var(--space-md);
  padding: var(--space-sm) var(--space-lg);
  background: var(--bg-glass);
  backdrop-filter: var(--glass-blur);
  border-bottom: 1px solid var(--glass-border);
  color: var(--text);
  min-height: var(--header-height);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}

.header-left {
  display: flex;
  align-items: center;
  gap: var(--space-md);
}

.header-title {
  text-align: center;
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-semibold);
  color: var(--text);
}

.header-actions {
  display: flex;
  gap: var(--space-md);
  align-items: center;
}

.header-icons {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  overflow: visible;
}

/* Einheitliche Icon-Buttons im Header (Chat, Benachrichtigungen, Einstellungen, Logout) */
.app-header .header-icons .header-icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  min-height: 2rem;
  padding: 0;
  border-radius: var(--radius-md, 8px);
  font-size: 1rem;
  line-height: 1;
  flex-shrink: 0;
  background: transparent;
  border: 1px solid transparent;
  color: var(--text);
  text-decoration: none;
  box-shadow: none;
}

.app-header .header-icons .header-icon-btn i {
  font-size: 1rem;
  line-height: 1;
  pointer-events: none;
  color: currentColor;
}

.app-header .header-icons .header-icon-btn:hover:not(:disabled),
.app-header .header-icons .header-icon-btn:focus-visible:not(:disabled) {
  transform: none;
  filter: none;
  background: var(--accent-subtle, rgba(255, 255, 255, 0.1));
  border-color: var(--accent, var(--border-strong));
  color: var(--accent, var(--text));
  box-shadow: none;
}

.app-header .header-icons .header-icon-btn:active:not(:disabled) {
  transform: scale(0.95);
}

.app-header .header-icons .header-icon-btn[aria-current="page"] {
  background: var(--accent-subtle, rgba(255, 255, 255, 0.12));
  border-color: var(--accent, var(--border-strong));
  color: var(--text);
}

/* Profil-Link im Header: Avatar statt Icon-Button */
.app-header .header-profile-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: none;
  background: transparent;
  line-height: 0;
  text-decoration: none;
}

.app-header .header-profile-avatar {
  flex-shrink: 0;
}

/* Kompakte Hinweise (Anfragen / Registrierung) links in den Header-Icons */
.header-orga-alerts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-xs);
  margin-right: var(--space-sm);
}

.header-orga-alerts__chip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.15rem 0.45rem;
  border-radius: var(--radius-sm, 4px);
  font-size: var(--font-size-xs, 0.75rem);
  font-weight: var(--font-weight-semibold);
  text-decoration: none;
  color: var(--text);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid var(--glass-border);
  white-space: nowrap;
  max-width: 10rem;
}

.header-orga-alerts__chip:hover {
  background: rgba(255, 255, 255, 0.14);
}

.header-orga-alerts__label {
  opacity: 0.85;
  overflow: hidden;
  text-overflow: ellipsis;
}

.header-orga-alerts__count {
  min-width: 1.1rem;
  text-align: center;
  padding: 0.05rem 0.25rem;
  border-radius: 999px;
  background: var(--primary);
  color: var(--on-primary, #fff);
  font-size: 0.7rem;
  line-height: 1.2;
}

/* Chat-Icon: Badge + Dropdown für ungelesene Nachrichten */
.header-chat-menu {
  position: relative;
}

.header-chat-menu__trigger {
  position: relative;
  overflow: visible;
}

.header-chat-menu__badge {
  position: absolute;
  /* Innerhalb des Buttons – sonst clippt Header/overflow auf Mobile */
  top: 2px;
  right: 2px;
  z-index: 2;
  min-width: 1.1rem;
  height: 1.1rem;
  padding: 0 0.25rem;
  border-radius: 999px;
  background: var(--danger, #c0392b);
  color: #fff;
  font-size: 0.65rem;
  font-weight: var(--font-weight-semibold);
  line-height: 1.1rem;
  text-align: center;
  box-shadow: 0 0 0 2px var(--bg-elevated);
  pointer-events: none;
}

.header-chat-menu__badge[hidden] {
  display: none !important;
}

.header-chat-menu__panel {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 10060;
  width: 100%;
  max-height: min(78vh, calc(100dvh - 3.5rem));
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: var(--bg-elevated, var(--bg-glass));
  border: 1px solid var(--border, var(--glass-border));
  border-bottom: none;
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  box-shadow: var(--shadow-lg, 0 8px 24px rgba(0, 0, 0, 0.35));
}

.header-chat-menu__backdrop {
  position: fixed;
  inset: 0;
  z-index: 10050;
  background: rgba(0, 0, 0, 0.45);
}

.header-chat-menu__backdrop[hidden],
.header-chat-menu__panel[hidden] {
  display: none !important;
}

.header-chat-menu__grab {
  flex: 0 0 auto;
  width: 2.5rem;
  height: 0.3rem;
  margin: 0.55rem auto 0.25rem;
  border-radius: 999px;
  background: var(--border);
}

.header-chat-menu__panel-head {
  padding: var(--space-sm) var(--space-md);
  font-weight: var(--font-weight-semibold);
  font-size: var(--font-size-sm);
  border-bottom: 1px solid var(--glass-border);
}

@media (min-width: 720px) {
  .header-chat-menu > .header-chat-menu__panel {
    position: absolute;
    left: auto;
    right: 0;
    bottom: auto;
    top: calc(100% + 0.35rem);
    width: min(20rem, 90vw);
    max-height: min(24rem, 60vh);
    border-radius: var(--radius-md, 8px);
    border-bottom: 1px solid var(--glass-border);
    background: var(--bg-glass);
    backdrop-filter: var(--glass-blur);
  }

  body > .header-chat-menu__panel {
    position: fixed;
    left: auto;
    bottom: auto;
    width: min(20rem, 90vw);
    max-height: min(24rem, 60vh);
    border-radius: var(--radius-md, 8px);
    border-bottom: 1px solid var(--glass-border);
    background: var(--bg-glass);
    backdrop-filter: var(--glass-blur);
  }

  .header-chat-menu__backdrop {
    background: transparent;
  }

  .header-chat-menu__grab {
    display: none;
  }
}

.header-chat-menu__list {
  list-style: none;
  margin: 0;
  padding: 0;
  overflow-y: auto;
  flex: 1;
}

.header-chat-menu__item a {
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  gap: var(--space-sm);
  align-items: center;
  padding: var(--space-sm) var(--space-md);
  text-decoration: none;
  color: var(--text);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.header-chat-menu__item a:hover {
  background: rgba(255, 255, 255, 0.06);
}

.header-chat-menu__item-icon {
  flex-shrink: 0;
  width: 28px;
  text-align: center;
  font-size: 0.9rem;
  display: flex;
  align-items: center;
  justify-content: center;
}

.header-chat-menu__item-avatar {
  width: auto;
}

.header-chat-menu__avatar {
  flex-shrink: 0;
}

.header-chat-menu__item-meta {
  min-width: 0;
}

.header-chat-menu__item-title {
  display: block;
  font-weight: var(--font-weight-semibold);
  font-size: var(--font-size-sm);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.header-chat-menu__item-snippet {
  display: block;
  font-size: var(--font-size-xs);
  opacity: 0.75;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.header-chat-menu__item-time {
  font-size: var(--font-size-xs);
  opacity: 0.65;
  white-space: nowrap;
}

.header-chat-menu__item-badge {
  min-width: 1.2rem;
  padding: 0 0.3rem;
  border-radius: 999px;
  background: var(--primary);
  color: var(--on-primary, #fff);
  font-size: 0.68rem;
  font-weight: var(--font-weight-semibold);
  line-height: 1.3;
  text-align: center;
}

.header-chat-menu__empty {
  padding: var(--space-md);
  text-align: center;
  font-size: var(--font-size-sm);
  opacity: 0.75;
}

.header-chat-menu__all {
  display: block;
  padding: var(--space-sm) var(--space-md);
  text-align: center;
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
  border-top: 1px solid var(--glass-border);
  text-decoration: none;
  color: var(--primary);
}

.header-chat-menu__all:hover {
  background: rgba(255, 255, 255, 0.05);
}


/* ==========================================================================
   BOTTOM NAVIGATION (Mobile)
   ========================================================================== */

.bottom-nav {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  background: var(--nav-bg);
  backdrop-filter: var(--glass-blur);
  border-top: 1px solid var(--glass-border);
  z-index: var(--z-fixed);
  box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.3);
}

.bottom-nav a {
  text-align: center;
  padding: var(--space-md) var(--space-sm);
  text-decoration: none;
  color: var(--nav-text);
  font-size: var(--font-size-sm);
  border-top: 3px solid transparent;
  transition: all var(--transition-base);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-xs);
  position: relative;
}

.bottom-nav a::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%) scaleX(0);
  width: 40px;
  height: 3px;
  background: var(--nav-active-indicator, var(--text));
  border-radius: 0 0 3px 3px;
  transition: transform var(--transition-bounce);
}

.bottom-nav a.active {
  color: var(--nav-text-active, var(--text));
  font-weight: var(--font-weight-semibold);
  background: var(--nav-active-bg, var(--bg-hover));
}

.bottom-nav a.active::before {
  transform: translateX(-50%) scaleX(1);
}

.bottom-nav a i {
  font-size: 1.3rem;
  transition: transform var(--transition-bounce);
}

.bottom-nav a:hover i,
.bottom-nav a.active i {
  transform: scale(1.15);
}

/* Hidden State */
body.bottom-nav--hidden,
body.bottom-nav--hidden .app,
body.bottom-nav--hidden .admin-app,
body.bottom-nav--hidden .mgmt-page {
  padding-bottom: 0 !important;
}

body.bottom-nav--hidden .bottom-nav {
  display: none !important;
}


/* ==========================================================================
   BURGER MENU / OFFCANVAS
   ========================================================================== */

.burger-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.7);
  z-index: var(--z-modal);
  display: none;
}

.burger-overlay.open {
  display: block;
}

.burger-panel {
  position: absolute;
  top: 0;
  left: 0;
  width: min(320px, 80vw);
  height: 100%;
  background: var(--bg-elevated);
  border-right: 1px solid var(--border);
  box-shadow: 6px 0 24px rgba(0, 0, 0, 0.35);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.burger-panel__header {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  padding: var(--space-lg);
  padding-bottom: var(--space-md);
  border-bottom: 1px solid var(--border);
}

.burger-panel h3 {
  margin: 0;
  color: var(--text);
}

.burger-menu-close {
  background: transparent;
  border: none;
  color: var(--text-secondary);
  font-size: 1.4rem;
  cursor: pointer;
  padding: 0;
  line-height: 1;
}

.burger-menu-scroll {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: var(--space-md) var(--space-lg) var(--space-lg);
}

.burger-settings {
  padding: var(--space-md);
  background: var(--bg);
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
}

.burger-setting-item {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  font-size: var(--font-size-sm);
  color: var(--text);
  cursor: pointer;
}

.burger-setting-item input[type="checkbox"] {
  width: 1.2rem;
  height: 1.2rem;
  cursor: pointer;
}

.burger-menu-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.burger-menu-list a {
  display: block;
  padding: var(--space-md) var(--space-lg);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  color: var(--nav-text, var(--text));
  text-decoration: none;
  background: var(--bg-elevated);
  transition: all var(--transition-base);
}

.burger-menu-list a:hover {
  background: var(--nav-active-bg, var(--bg-hover));
  border-color: var(--border-strong);
  color: var(--nav-text, var(--text));
}

.burger-menu-list a.active {
  border-color: var(--border-strong);
  background: var(--nav-active-bg, var(--bg-hover));
  color: var(--nav-text-active, var(--text));
  font-weight: var(--font-weight-semibold);
  box-shadow: inset 3px 0 0 var(--nav-active-indicator, var(--text));
}

/* Submenu (ein Bereich ohne Accordion) */
.burger-submenu {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.burger-submenu-label {
  font-weight: var(--font-weight-semibold);
  color: var(--text-secondary);
  padding-left: var(--space-xs);
  font-size: var(--font-size-sm);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* Accordion-Bereiche (User / Orga) */
.burger-section {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.burger-section + .burger-section {
  margin-top: var(--space-sm);
  padding-top: var(--space-sm);
  border-top: 1px solid var(--border);
}

.burger-section__toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  width: 100%;
  margin: 0;
  padding: var(--space-sm) var(--space-xs);
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  cursor: pointer;
  text-align: left;
  transition: color var(--transition-base), background var(--transition-base);
}

.burger-section__toggle:hover {
  color: var(--text);
  background: var(--bg);
}

.burger-section__label {
  flex: 1;
}

.burger-section__chevron {
  flex-shrink: 0;
  font-size: 0.85rem;
  line-height: 1;
  transition: transform var(--transition-base);
}

.burger-section__toggle[aria-expanded="true"] .burger-section__chevron {
  transform: rotate(0deg);
}

.burger-section__toggle[aria-expanded="false"] .burger-section__chevron {
  transform: rotate(-90deg);
}

.burger-section__panel {
  margin: 0;
}

.burger-menu-sublist {
  list-style: none;
  padding-left: var(--space-sm);
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.burger-menu-sublist a {
  padding: var(--space-sm) var(--space-md);
  font-size: var(--font-size-sm);
}

.burger-menu-sublist a.burger-subitem {
  margin-left: var(--space-lg);
}

/* Inline-Badge im Menü (z. B. offene Registrierungsanfragen) */
.burger-menu-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.5em;
  padding: 0 0.4em;
  margin-left: 0.4em;
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
  line-height: 1.4;
  color: #fff;
  background: var(--danger, #c0392b);
  border-radius: 999px;
  vertical-align: baseline;
}

/* Kompaktere Einträge bei wenig Viewport-Höhe */
@media (max-height: 800px) {
  .burger-panel__header {
    padding: var(--space-md) var(--space-lg);
    padding-bottom: var(--space-sm);
  }

  .burger-menu-scroll {
    padding: var(--space-sm) var(--space-md) var(--space-md);
  }

  .burger-menu-list,
  .burger-submenu,
  .burger-section {
    gap: var(--space-xs);
  }

  .burger-menu-list a {
    padding: var(--space-sm) var(--space-md);
    font-size: var(--font-size-sm);
  }

  .burger-menu-sublist a {
    padding: var(--space-xs) var(--space-sm);
  }

  .burger-section__toggle {
    padding: var(--space-xs);
  }
}


/* ==========================================================================
   BRAND / LOGO
   ========================================================================== */

.brand {
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
}

.brand__icon {
  width: 32px;
  height: 32px;
  object-fit: contain;
}

.brand__wordmark {
  height: 28px;
  object-fit: contain;
}

.brand__icon--hero {
  width: 68px;
  height: 68px;
}

.brand__wordmark--hero {
  height: 44px;
}

@media (max-width: 720px) {
  .brand__wordmark {
    display: none;
  }
}


/* ==========================================================================
   TAB NAVIGATION
   ========================================================================== */

.tab-switch {
  display: flex;
  gap: var(--space-sm);
  margin-bottom: var(--space-lg);
  border-bottom: 1px solid var(--border);
}

.tab-btn {
  flex: 1;
  border: none;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--text-secondary);
  border-radius: 0;
  padding: var(--space-md) var(--space-lg);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-xs);
  transition: all var(--transition-base);
  font-weight: var(--font-weight-medium);
}

.tab-btn:hover {
  color: var(--text);
  background: var(--bg-elevated);
}

.tab-btn.active {
  border-bottom-color: var(--primary);
  background: transparent;
  color: var(--primary);
  font-weight: var(--font-weight-semibold);
}

.tab-content {
  display: none;
}

.tab-content.active {
  display: block;
}


/* ==========================================================================
   BREADCRUMBS
   ========================================================================== */

.breadcrumbs {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  margin-bottom: var(--space-lg);
  color: var(--text-muted);
  font-size: var(--font-size-sm);
}

.breadcrumbs a {
  color: var(--text-secondary);
  text-decoration: none;
  transition: color var(--transition-base);
}

.breadcrumbs a:hover {
  color: var(--primary);
}

.breadcrumbs__separator {
  color: var(--text-muted);
}

.breadcrumbs__current {
  color: var(--text);
  font-weight: var(--font-weight-medium);
}


/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
  .app-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-sm);
    padding: var(--space-sm);
  }

  .header-title {
    font-size: var(--font-size-base);
    order: 5;
    width: 100%;
    text-align: center;
  }

  .brand {
    order: 1;
  }

  .burger-btn {
    order: 2;
    /* Icons übernehmen den rechten Rand – kein margin-right:auto am Burger,
       sonst rutscht die Icon-Leiste bei engem Viewport in eine zweite Zeile nach links. */
    margin-right: 0;
  }

  .header-icons {
    order: 3;
    margin-left: auto;
    flex-wrap: nowrap;
    max-width: calc(100% - 6.5rem);
  }

  /* Logout außerhalb der Icon-Leiste rechts neben den Icons halten */
  .app-header > #logout {
    order: 4;
    flex-shrink: 0;
  }

  .header-actions {
    order: 4;
  }

  .app-header .btn-secondary,
  .app-header .btn-ghost,
  .app-header a.btn-secondary,
  .app-header a.btn-ghost {
    width: auto;
  }

  .app-header .header-icon-btn {
    width: 2rem;
    height: 2rem;
    min-height: 2rem;
  }

  .app-header .header-icons .header-icon-btn {
    width: 2rem;
    height: 2rem;
    min-height: 2rem;
  }

  .header-left {
    flex-wrap: wrap;
    gap: var(--space-sm);
  }

  .header-left > div {
    order: 5;
    width: 100%;
  }
}


/* == inlined: 06-components/_modals.css == */
/**
 * Modals & Overlays – Konsolidierte Overlay-Komponenten
 *
 * Vereinheitlicht: .modal, .shift-overlay, .dashboard-overlay, .gallery-overlay
 */

/* ==========================================================================
   BASE OVERLAY
   ========================================================================== */

.overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.75);
  backdrop-filter: blur(8px);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: var(--z-modal);
  padding: var(--space-lg);
  animation: overlay-fade-in 0.3s ease;
}

@keyframes overlay-fade-in {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

.overlay.open,
.overlay[aria-hidden="false"] {
  display: flex;
}

/* Backdrop */
.overlay__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.75);
  backdrop-filter: blur(8px);
}

/* Panel */
.overlay__panel {
  position: relative;
  background: var(--bg-glass);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-xl);
  width: min(560px, 90vw);
  max-height: 85vh;
  padding: var(--space-2xl);
  overflow-y: auto;
  box-shadow: var(--shadow-lg), 0 0 40px var(--primary-light);
  z-index: 1;
  animation: panel-slide-up 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

@keyframes panel-slide-up {
  from {
    opacity: 0;
    transform: translateY(20px) scale(0.95);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

/* Close Button */
.overlay__close {
  position: absolute;
  top: var(--space-lg);
  right: var(--space-lg);
  border: none;
  background: transparent;
  color: var(--text-muted);
  font-size: 1.4rem;
  cursor: pointer;
  padding: 0;
  line-height: 1;
  transition: color var(--transition-base);
}

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


/* ==========================================================================
   OVERLAY VARIANTEN
   ========================================================================== */

/* Wide Overlay */
.overlay--wide .overlay__panel {
  width: min(900px, 95vw);
}

/* Extra Wide Overlay */
.overlay--extra-wide .overlay__panel {
  width: min(1200px, 98vw);
}

/* Compact Overlay */
.overlay--compact .overlay__panel {
  width: min(420px, 90vw);
  padding: var(--space-xl);
}

/* Full Height Overlay */
.overlay--full-height .overlay__panel {
  max-height: 95vh;
}

/* Top Aligned Overlay */
.overlay--top {
  align-items: flex-start;
  padding-top: 4vh;
}


/* ==========================================================================
   LEGACY SUPPORT (alte Klassennamen)
   ========================================================================== */

/* Modal (alt) */
.modal {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.75);
  backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: var(--z-modal);
  padding: var(--space-lg);
}

.modal-content {
  background: var(--bg-glass);
  backdrop-filter: var(--glass-blur);
  color: var(--text);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-xl);
  width: min(100%, 900px);
  max-height: 90vh;
  overflow: auto;
  padding: var(--space-2xl);
  box-shadow: var(--shadow-lg), 0 0 40px var(--primary-light);
  animation: panel-slide-up 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  margin-bottom: var(--space-lg);
}

.modal-close {
  border: none;
  background: transparent;
  color: var(--text-secondary);
  font-size: 1.4rem;
  cursor: pointer;
}

.modal--wide .modal-content {
  width: min(100%, 1200px);
  padding: var(--space-2xl) var(--space-3xl);
}

.modal-body--two-column {
  display: flex;
  gap: var(--space-2xl);
  align-items: flex-start;
  flex-wrap: wrap;
}

.modal-body--two-column>* {
  flex: 1 1 320px;
}

.modal-footer {
  margin-top: var(--space-xl);
  display: flex;
  justify-content: flex-end;
  gap: var(--space-md);
}


/* ==========================================================================
   SHIFT OVERLAY (REBUILT)
   Structure: .so-panel > [.so-header, .so-body, .so-footer]
   ========================================================================== */

.shift-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.75);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: var(--z-modal);
  padding: var(--space-lg);
  backdrop-filter: blur(4px);
}

.shift-overlay.open {
  display: flex;
}

.so-panel {
  position: relative;
  width: min(1000px, 95vw);
  height: 85vh;
  background: var(--bg-overlay);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-xl);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  /* No global scroll */
}

.so-close {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: none;
  background: transparent;
  color: var(--text-muted);
  font-size: 1.5rem;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background-color 0.2s;
  z-index: 10;
}

.so-close:hover {
  background: var(--bg-surface);
  color: var(--text);
}

/* Header */
.so-header {
  flex-shrink: 0;
  padding: var(--space-2xl) var(--space-2xl) var(--space-lg);
  /* Top padding wider */
  border-bottom: 1px solid var(--border);
}

.so-job-label {
  text-transform: uppercase;
  font-size: var(--font-size-xs);
  letter-spacing: 0.05em;
  color: var(--text-muted);
  margin-bottom: var(--space-xs);
}

.so-title-input {
  font-size: 1.25rem;
  font-weight: 600;
  padding: 0;
  border: none;
  background: transparent;
  width: 100%;
}

.so-title-input:focus {
  outline: none;
  box-shadow: none;
  border-bottom: 1px solid var(--primary);
}

/* Body */
.so-body {
  flex: 1;
  display: flex;
  flex-direction: row;
  /* Desktop Default */
  overflow: hidden;
  /* Contain columns */
  min-height: 0;
}

/* Columns */
.so-col {
  flex: 1;
  overflow-y: auto;
  /* Independent scroll */
  padding: var(--space-xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
}

.so-col--highlight {
  background: rgba(255, 255, 255, 0.02);
  border-left: 1px solid var(--border);
}

/* Sections */
.so-section-title {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  border-bottom: 1px solid var(--border);
  padding-bottom: var(--space-xs);
  margin-bottom: var(--space-md);
}

.so-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.so-label {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xs);
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
}

.so-row {
  display: flex;
  gap: var(--space-md);
}

.so-row>* {
  flex: 1;
}

/* Footer */
.so-footer {
  flex-shrink: 0;
  padding: var(--space-lg) var(--space-xl);
  border-top: 1px solid var(--border);
  background: var(--bg-overlay);
  /* ensure opaque */
  display: flex;
  justify-content: space-between;
  align-items: center;
}


/* ==========================================================================
   DASHBOARD OVERLAY
   ========================================================================== */

.dashboard-overlay[hidden] {
  display: none !important;
}

.dashboard-overlay {
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
  display: none;
}

.dashboard-overlay[aria-hidden="false"] {
  display: block;
}

.dashboard-overlay__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.7);
}

.dashboard-overlay__panel {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: var(--bg-overlay);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-xl);
  width: min(560px, 90vw);
  max-height: 85vh;
  padding: var(--space-2xl);
  overflow-y: auto;
}

.dashboard-overlay__close {
  border: none;
  background: transparent;
  color: var(--text-muted);
  font-size: 1.4rem;
  cursor: pointer;
  position: absolute;
  top: var(--space-md);
  right: var(--space-lg);
}


/* ==========================================================================
   GALLERY OVERLAY
   ========================================================================== */

.gallery-overlay {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2000;
}

.gallery-overlay.hidden {
  display: none;
}

.gallery-overlay__scrim {
  position: absolute;
  inset: 0;
  background: rgba(5, 6, 10, 0.85);
  backdrop-filter: blur(6px);
}

.gallery-overlay__panel {
  position: relative;
  width: min(960px, 96vw);
  max-height: 92vh;
  background: var(--bg-overlay);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-2xl);
  box-shadow: var(--shadow-xl);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.gallery-overlay__header {
  padding: var(--space-xl);
  border-bottom: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  gap: var(--space-lg);
}

.gallery-overlay__header-actions {
  display: flex;
  gap: var(--space-sm);
  flex-wrap: wrap;
}

.gallery-overlay__body {
  padding: var(--space-xl);
  overflow-y: auto;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.gallery-overlay--upload .gallery-overlay__body {
  justify-content: center;
}

body.gallery-overlay-open {
  overflow: hidden;
}


/* ==========================================================================
   CHAT DM OVERLAY
   ========================================================================== */

.chat-dm-overlay {
  position: fixed;
  inset: 0;
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 500;
}

.chat-dm-overlay[aria-hidden="false"],
.chat-dm-overlay.open {
  display: flex;
}

.chat-dm-overlay__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.7);
}

.chat-dm-overlay__panel {
  position: relative;
  background: var(--bg-overlay);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-xl);
  width: min(480px, 94vw);
  padding: var(--space-2xl);
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.chat-dm-overlay__panel header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-sm);
}

.chat-dm-overlay__panel [data-overlay-close] {
  font-size: 1.4rem;
  border-radius: 50%;
  width: 36px;
  height: 36px;
  border: 1px solid var(--border);
}


/* ==========================================================================
   OVERLAY UTILITIES
   ========================================================================== */

/* Info Panel (in Overlays) */
.info-panel {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  color: var(--text-secondary);
}

/* Detail List (für Meta-Infos in Overlays) */
.detail-list {
  margin: var(--space-lg) 0 0;
  padding: 0;
}

.detail-list dt {
  font-size: var(--font-size-sm);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
  margin-top: var(--space-md);
}

.detail-list dd {
  margin: 0;
  font-size: var(--font-size-base);
  color: var(--text-secondary);
}

/* Eyebrow (kleine Überschrift) */
.eyebrow {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  margin: 0;
}



/* ==========================================================================
   AVATAR LIST STYLING (Shift Assignments)
   ========================================================================== */

.shift-assignment-list,
.shift-reservation-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  margin: 0;
  padding: 0;
  list-style: none;
}

.shift-assignment-item {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  padding: var(--space-sm);
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  transition: border-color 0.2s;
}

/* User Search Results Dropdown Styling */
.shift-user-result {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  padding: var(--space-md);
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  transition: background 0.1s ease;
}

.shift-user-result:last-child {
  border-bottom: none;
}

.shift-user-result:hover {
  background: var(--bg-hover);
}

.shift-user-result .result-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  overflow: hidden;
  flex-shrink: 0;
  background: var(--bg-surface);
}

.shift-user-result .result-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.shift-user-result .result-info {
  display: flex;
  flex-direction: column;
  line-height: 1.3;
  min-width: 0;
  /* text truncate works */
}

.shift-user-result .result-main-line {
  display: flex;
  align-items: baseline;
  gap: var(--space-xs);
  white-space: nowrap;
  overflow: hidden;
}

.shift-user-result .result-name {
  font-weight: 600;
  color: var(--text-primary);
  text-overflow: ellipsis;
  overflow: hidden;
}

.shift-user-result .result-nick {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
}

.shift-user-result .result-email {
  font-size: var(--font-size-xs);
  color: var(--text-secondary);
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

.shift-assignment-item:hover {
  border-color: var(--border-strong);
}

.assignment-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  overflow: hidden;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

.assignment-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.assignment-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.assignment-name {
  font-weight: 500;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: var(--font-size-sm);
  line-height: 1.2;
}

.assignment-meta {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  line-height: 1.2;
}

.assignment-remove {
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  border-radius: 50%;
  font-size: 1.2rem;
  line-height: 1;
  transition: all 0.2s;
}

.assignment-remove:hover {
  background: var(--bg-elevated);
  color: var(--error);
}


/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {

  .so-panel {
    width: 100vw;
    height: 100vh;
    border-radius: 0;
    max-height: none;
  }

  .so-body {
    flex-direction: column;
    overflow-y: auto;
    /* Allow global scroll on mobile if preferred, or per col */
  }

  .so-col {
    overflow-y: visible;
    height: auto;
    border-left: none;
    border-bottom: 1px solid var(--border);
  }

  .so-row {
    flex-direction: column;
    /* Stack inputs on mobile */
    gap: var(--space-sm);
  }


  .gallery-overlay__panel {
    width: 98vw;
    max-height: 95vh;
  }
}

/* Message Box */
.dispatcher-message-box {
  padding: var(--space-sm) var(--space-md);
  margin-bottom: var(--space-md);
  border-radius: var(--radius-md);
  font-size: var(--font-size-sm);
  display: none;
}

.dispatcher-message-box:not(:empty) {
  display: block;
}

.dispatcher-message-box.error {
  background-color: var(--error-bg);
  color: var(--error);
  border: 1px solid var(--error-border);
}

.dispatcher-message-box.success {
  background-color: var(--success-bg);
  color: var(--success);
  border: 1px solid var(--success-border);
}

.dispatcher-message-box.info {
  background-color: var(--bg-elevated);
  color: var(--text-secondary);
  border: 1px solid var(--border);
}

/* Shift Overlay Card Adaptations */
.so-col .responsible-card {
  width: 100%;
  margin-bottom: var(--space-sm);
  background: var(--bg-surface);
  padding: var(--space-sm) var(--space-md);
}

.so-col .responsible-card:last-child {
  margin-bottom: 0;
}

/* Ensure avatar size consistency in overlay */
.so-col .responsible-card .avatar {
  width: 32px;
  height: 32px;
  font-size: 0.9rem;
}

.so-col .responsible-card h3 {
  font-size: var(--font-size-sm);
  margin-bottom: 0;
}

.so-col .responsible-card p {
  font-size: var(--font-size-xs);
}

/* == inlined: 06-components/_tables.css == */
/**
 * Tables – Admin & User Management Tables
 */

/* ==========================================================================
   BASE TABLE
   ========================================================================== */

.admin-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: var(--space-xl);
  background: var(--bg-elevated);
}

.admin-table th,
.admin-table td {
  border: 1px solid var(--border-strong);
  padding: var(--space-sm) var(--space-md);
  text-align: left;
}

.admin-table th {
  background: var(--table-header-bg);
  font-weight: var(--font-weight-bold);
  color: var(--text);
  position: sticky;
  top: 0;
  z-index: var(--z-sticky);
}

.admin-table tr:nth-child(even) {
  background: var(--table-row-even-bg);
}

.admin-table tr:hover {
  background: var(--table-hover-bg);
}

.admin-table input,
.admin-table select {
  width: 100%;
  box-sizing: border-box;
  padding: var(--space-xs);
  background: var(--bg-overlay);
  border: 1px solid var(--border-strong);
  color: var(--text);
}

/* Table Wrapper (für Scrolling) */
.table-wrapper {
  overflow-x: auto;
}

/* User Management Table spezifisch */
.user-management-page .container {
  max-width: var(--container-max-width-wide);
}

.user-management-page #user-management-table {
  min-width: 1550px;
}

.user-management-page #user-management-table th,
.user-management-page #user-management-table td {
  white-space: nowrap;
}

/* Spaltenbreiten */
.user-table-avatar {
  width: 70px;
  text-align: center;
}

/* User Detail Row */
.user-detail-row td {
  padding: 0;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-top: none;
}

.user-detail-card {
  padding: var(--space-2xl);
  border-radius: 0 0 var(--radius-xl) var(--radius-xl);
}

.user-row--active {
  outline: 2px solid var(--primary);
  outline-offset: -2px;
}

.user-row-actions {
  display: flex;
  gap: var(--space-xs);
}

/* Inline Edit Form Row */
.edit-form-row {
  display: none;
}

.edit-form-row.active {
  display: table-row;
}

.edit-form-row td {
  padding: 0;
  background: var(--bg-elevated);
  border: 1px solid var(--border-strong);
  border-top: none;
}

.edit-form-container {
  padding: var(--space-lg);
  background: var(--bg-overlay);
  border-radius: 0 0 var(--radius-md) var(--radius-md);
}

.table-row--editing {
  background: var(--primary-light-10) !important;
}

/* Inline Edit Controls in Tables */
.admin-table input[type="checkbox"] {
  cursor: pointer;
  width: auto;
  margin: 0;
}

.admin-table input[type="datetime-local"] {
  padding: var(--space-xs) var(--space-sm);
  font-size: var(--font-size-sm);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  background: var(--bg-overlay);
  color: var(--text);
  transition: all var(--transition-base);
  min-width: 160px;
}

.admin-table input[type="datetime-local"]:hover {
  border-color: var(--border-glow);
}

.admin-table input[type="datetime-local"]:focus {
  outline: none;
  border-color: var(--primary);
  background: var(--bg-elevated);
  box-shadow: var(--shadow-focus);
}

.admin-table .checkbox-label {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: var(--space-xs);
}


/* ==========================================================================
   RESPONSIVE TABLE (Mobile)
   ========================================================================== */

@media (max-width: 800px) {
  .admin-table,
  .admin-table thead,
  .admin-table tbody,
  .admin-table th,
  .admin-table td,
  .admin-table tr {
    display: block;
  }

  .admin-table thead {
    display: none;
  }

  .admin-table tr {
    margin-bottom: var(--space-md);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
  }

  .admin-table td {
    border: none;
    display: flex;
    justify-content: space-between;
    padding: var(--space-sm) var(--space-md);
  }

  .admin-table td::before {
    content: attr(data-label);
    font-weight: var(--font-weight-bold);
  }
}

/* ==========================================================================
   STATUS SELECTS (Helferstatus)
   ========================================================================== */

.status-cell {
  min-width: 140px;
}

.status-select {
  font-size: var(--font-size-sm);
  padding: var(--space-xs) var(--space-sm);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: all var(--transition-base);
  min-width: 130px;
}

/* Globaler Status: Farbcodes */
.status-select.status-aktiv {
  background: var(--success-bg, rgba(46, 204, 113, 0.15));
  border-color: var(--success, #2ecc71);
  color: var(--success, #2ecc71);
}

.status-select.status-inaktiv {
  background: var(--muted-bg, rgba(128, 128, 128, 0.15));
  border-color: var(--text-muted, #888);
  color: var(--text-muted, #888);
}

.status-select.status-geloescht {
  background: var(--danger-bg, rgba(231, 76, 60, 0.15));
  border-color: var(--danger, #e74c3c);
  color: var(--danger, #e74c3c);
}

/* Event-Status: Farbcodes */
.status-select.status-offen {
  background: var(--muted-bg, rgba(128, 128, 128, 0.1));
  border-color: var(--border);
  color: var(--text-muted);
}

.status-select.status-in_arbeit {
  background: var(--info-bg, rgba(52, 152, 219, 0.15));
  border-color: var(--info, #3498db);
  color: var(--info, #3498db);
}

.status-select.status-nicht_erreicht {
  background: var(--warning-bg, rgba(243, 156, 18, 0.15));
  border-color: var(--warning, #f39c12);
  color: var(--warning, #f39c12);
}

.status-select.status-wartet_auf_bestaetigung {
  background: var(--warning-bg, rgba(241, 196, 15, 0.15));
  border-color: var(--warning-light, #f1c40f);
  color: var(--warning-light, #f1c40f);
}

.status-select.status-erledigt {
  background: var(--success-bg, rgba(46, 204, 113, 0.15));
  border-color: var(--success, #2ecc71);
  color: var(--success, #2ecc71);
}

.status-select.status-setzt_aus {
  background: var(--muted-bg, rgba(128, 128, 128, 0.15));
  border-color: var(--text-muted, #888);
  color: var(--text-muted, #888);
}

/* Hover & Focus */
.status-select:hover:not(:disabled) {
  filter: brightness(1.1);
}

.status-select:focus {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.status-select:disabled {
  cursor: not-allowed;
  opacity: 0.6;
}

.status-cell-inner {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
}

.btn-summary-mail {
  background: var(--bg-overlay);
  border: 1px solid var(--border-strong);
  color: var(--text-muted);
  border-radius: var(--radius-sm);
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all var(--transition-base);
  padding: 0;
  flex-shrink: 0;
}

.btn-summary-mail:hover {
  background: var(--primary);
  color: white;
  border-color: var(--primary);
  transform: translateY(-1px);
  box-shadow: var(--shadow-sm);
}

.btn-summary-mail i {
  font-size: var(--font-size-sm);
}


/* == inlined: 06-components/_badges.css == */
/**
 * Badges & Status-Indikatoren
 *
 * KONZEPT:
 * 1. .badge ist die universelle Basisklasse.
 * 2. Modifikatoren steuern Farbe (--success, etc.) und Stil (--outline, --filled).
 * 3. Absorbiert die Funktionalität der alten _status-badge.css.
 */

/* ==========================================================================
   BASE BADGE
   ========================================================================== */

.badge,
.status-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-xs);
  padding: 0.15rem 0.6rem;
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
  line-height: 1.4;
  border-radius: var(--radius-full);
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
  color: var(--text-secondary);
  white-space: nowrap;
  transition: all var(--transition-fast);
  box-shadow: var(--shadow-sm);
}

/* Base Variants */
.badge--pill { border-radius: var(--radius-full); }
.badge--rect { border-radius: var(--radius-sm); }
.badge--sm { font-size: var(--font-size-2xs); padding: 0.1rem 0.4rem; }

/* Interactive State */
a.badge:hover,
.badge--interactive:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
  filter: brightness(1.1);
}

/* ==========================================================================
   COLOR VARIANTS (SEMANTIC)
   ========================================================================== */

/* Success / Aktiv / Erledigt */
.badge--success,
.status-badge--aktiv,
.status-badge--erledigt,
.status-badge--approved,
.status-approved {
  background: var(--success-bg);
  color: var(--success);
  border-color: rgba(74, 222, 128, 0.3);
}

/* Info / In Arbeit / Ausstehend (Angefragt) – neutral, nicht rot */
.badge--info,
.status-badge--in-arbeit,
.status-badge--pending,
.status-pending {
  background: var(--reservation-pending-bg, var(--info-bg));
  color: var(--reservation-pending-fg, var(--info));
  border-color: var(--reservation-pending-border, rgba(96, 165, 250, 0.28));
}

/* Warning / Wartet */
.badge--warning,
.status-badge--wartet,
.status-badge--nicht-erreicht {
  background: var(--warning-bg);
  color: var(--warning);
  border-color: rgba(251, 191, 36, 0.3);
}

/* Danger / Gelöscht / Abgelehnt */
.badge--danger,
.status-badge--geloescht,
.status-badge--rejected,
.status-declined {
  background: var(--danger-bg);
  color: var(--danger);
  border-color: rgba(231, 76, 60, 0.3);
}

/* Muted / Inaktiv / Offen */
.badge--muted,
.status-badge--inaktiv,
.status-badge--offen,
.status-badge--setzt-aus {
  background: var(--muted-bg);
  color: var(--text-muted);
  border-color: var(--border);
}

/* Promoted (Spezial) */
.badge--promoted {
  background: linear-gradient(135deg, #fbbf24, #f59e0b);
  color: #1a1a2e;
  border-color: #f59e0b;
  box-shadow: 0 0 10px rgba(251, 191, 36, 0.3);
}

/* ==========================================================================
   FLAGS (SHIFT/JOB FLAGS)
   ========================================================================== */

.flag-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
}

.flag-badge--on { background: var(--text-secondary); color: var(--bg); }
.flag-badge--off { opacity: 0.5; }

.age-restriction-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-left: 0.35rem;
  padding: 0.1rem 0.45rem;
  border-radius: var(--radius-full);
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.2;
  vertical-align: middle;
  color: var(--bg);
  background: #8a3b12;
  border: 1px solid rgba(0, 0, 0, 0.08);
  white-space: nowrap;
}

.age-restriction-badge__label {
  letter-spacing: 0.02em;
}

.flag-adults-only.flag-on {
  background: #8a3b12;
  color: #fff;
  border-color: #6d2f0e;
}

.user-sub--warning {
  color: #b42318;
  font-weight: 600;
}

/* ==========================================================================
   LEGACY COMPATIBILITY (TO BE PURGED)
   ========================================================================== */

.widget-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.2rem 0.65rem;
  border-radius: var(--radius-full);
  background: var(--accent-low, var(--primary-light-25));
  color: var(--accent, var(--primary));
  font-weight: 600;
  font-size: var(--font-size-sm);
}

.flag-on {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  background: var(--text-secondary);
  color: var(--bg);
}

.flag-off {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  opacity: 0.5;
}


/* == inlined: 06-components/_toasts.css == */
/**
 * Toast Notifications
 */

.toast {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: 80px;
  background: var(--bg-overlay);
  color: var(--text);
  padding: var(--space-md) var(--space-lg);
  border-radius: var(--radius-md);
  opacity: 0;
  pointer-events: none;
  transition: all var(--transition-slow);
  box-shadow: var(--shadow-lg);
  z-index: var(--z-notification);
  border: 1px solid var(--border-strong);
}

.toast--show,
.toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(-10px);
  pointer-events: auto;
}

.toast--error,
.toast.error {
  background: var(--error-dark);
  border-color: var(--error);
  color: #fff;
}

.toast--success,
.toast.success {
  background: var(--success-bg);
  border-color: var(--success);
  color: #fff;
}


/* == inlined: 06-components/_tooltips.css == */
/**
 * Tooltip Component
 * Generische Tooltips, die an der Maus oder am Element positioniert werden.
 */

.tooltip-box {
  position: fixed;
  background: var(--bg-overlay, #1a1f2b);
  backdrop-filter: blur(8px);
  color: var(--text, #ffffff);
  border: 1px solid var(--border, rgba(255, 255, 255, 0.15));
  border-radius: var(--radius-md, 6px);
  padding: var(--space-xs, 6px) var(--space-sm, 12px);
  font-size: var(--font-size-sm, 14px);
  z-index: 10000;
  pointer-events: none;
  box-shadow: var(--shadow-lg, 0 10px 25px rgba(0, 0, 0, 0.5));
  white-space: nowrap;
  opacity: 0;
  transform: translateY(5px);
  transition: opacity 0.15s ease-out, transform 0.15s ease-out;
}

.tooltip-box.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Pfeil-Optionen (optional, falls benötigt) */
.tooltip-box::after {
  content: '';
  position: absolute;
  border: 6px solid transparent;
}

.tooltip-box--top::after {
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border-top-color: var(--bg-overlay, #1a1f2b);
}

.tooltip-box--bottom::after {
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  border-bottom-color: var(--bg-overlay, #1a1f2b);
}


/* == inlined: 06-components/_registration-simple.css == */
/**
 * Simple Registration Form Component
 * Designed for maximum compatibility and robustness.
 */

.reg-simple {
    background: var(--bg-elevated);
    border: 1px solid var(--border-strong);
    border-radius: var(--radius-lg, 12px);
    padding: 24px;
    margin: 16px 0;
    box-shadow: var(--shadow-sm);
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.reg-simple h3 {
    margin: 0 0 4px;
    font-size: 1.1rem;
    color: var(--accent, var(--text));
    font-weight: 600;
}

.reg-simple__info {
    font-size: 0.85rem;
    color: var(--text-muted);
    margin-bottom: 8px;
    line-height: 1.4;
}

.reg-simple__input-group {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.reg-simple__label {
    font-size: 0.85rem;
    color: var(--text-muted);
    font-weight: 500;
}

.reg-simple__input {
    width: 100% !important;
    background: var(--input-bg, var(--bg-overlay)) !important;
    border: 1px solid var(--border-strong) !important;
    border-radius: var(--radius-sm, 6px) !important;
    padding: 12px 14px !important;
    color: var(--text) !important;
    font-size: 16px !important; /* Verhindert iOS Auto-Zoom */
    margin: 0 !important;
    box-sizing: border-box !important;
}

.reg-simple__input:focus {
    border-color: var(--input-focus-border, var(--accent, var(--primary))) !important;
    outline: none !important;
    box-shadow: var(--shadow-focus) !important;
}

.reg-simple__select {
    width: 100% !important;
    background-color: var(--input-bg, var(--bg-overlay)) !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 18px !important;
    border: 1px solid var(--border-strong) !important;
    border-radius: var(--radius-sm, 6px) !important;
    padding: 12px 40px 12px 14px !important;
    color: var(--text) !important;
    font-size: 16px !important;
    margin: 0 !important;
    box-sizing: border-box !important;
    cursor: pointer;
    appearance: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.reg-simple__select:focus {
    border-color: var(--input-focus-border, var(--accent, var(--primary))) !important;
    outline: none !important;
    box-shadow: var(--shadow-focus) !important;
}

.reg-simple__select option {
    background-color: var(--bg-elevated);
    color: var(--text);
}

.reg-simple__preview {
    background: var(--bg);
    padding: 12px;
    border-radius: var(--radius-sm, 6px);
    border-left: 3px solid var(--accent, var(--primary));
    margin-top: 4px;
}

.reg-simple__preview-label {
    display: block;
    font-size: 0.7rem;
    color: var(--text-muted);
    margin-bottom: 2px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.reg-simple__preview-value {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--text);
}

.reg-simple__privacy h3 {
    margin: 0 0 6px;
    font-size: 1rem;
}

@media (max-width: 1024px) {
    .reg-simple {
        padding: 18px;
        gap: 12px;
    }

    .reg-simple__info {
        font-size: 0.8rem;
    }

    .reg-simple__preview-value {
        font-size: 1rem;
    }
}

@media (max-width: 480px) {
    .reg-simple {
        padding: 16px;
        margin: 12px 0;
        gap: 12px;
    }
    
    .reg-simple__input,
    .reg-simple__select {
        padding: 10px 12px !important;
    }
}


/* Feature-spezifische Komponenten */

/* == inlined: 06-components/_accordion.css == */
/**
 * Accordion Component
 *
 * Collapsible accordion sections using <details> elements
 * Restored from archive: style.css (line 724-735)
 */

/* ==========================================================================
   ACCORDION
   ========================================================================== */

.accordion {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.accordion-item,
.accordion-subitem {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-sm) var(--space-md);
}

.accordion-item summary,
.accordion-subitem summary {
  cursor: pointer;
  font-weight: var(--font-weight-semibold);
  user-select: none;
  list-style: none;
}

.accordion-item summary::-webkit-details-marker,
.accordion-subitem summary::-webkit-details-marker {
  display: none;
}

.accordion-body {
  padding: var(--space-xs) var(--space-xs) var(--space-xs);
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}


/* ==========================================================================
   PUBLIC VIEW ACCORDION
   ========================================================================== */

.public-day {
  padding: var(--space-xs) 0;
  border-top: 1px solid var(--border);
}

.public-day h4 {
  margin: 0 0 var(--space-xs);
}

.public-shift-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}


/* == inlined: 06-components/_profile.css == */
/**
 * Profile Components
 *
 * Avatar upload, cropper, and profile-specific components
 * Restored from archive: style.css (lines 1029-1193)
 */

/* ==========================================================================
   PROFILE PAGE
   ========================================================================== */

.profile-page .container {
  max-width: 780px;
}

.profile-card {
  background: var(--bg-elevated);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-lg);
  padding: var(--space-lg) var(--space-xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.profile-card-header {
  display: flex;
  gap: var(--space-lg);
  align-items: center;
  flex-wrap: wrap;
}

/* Profilbild: Umschalten zwischen Preset-Avatar und eigenem Foto */
.profile-picture-mode-tabs {
  display: flex;
  gap: var(--space-sm);
  margin: var(--space-md) 0 var(--space-lg);
  flex-wrap: wrap;
}

.profile-picture-tab {
  flex: 1;
  min-width: 8rem;
}

.profile-picture-tab.is-active {
  border-color: var(--color-primary, var(--border-strong));
  box-shadow: 0 0 0 1px var(--color-primary, rgba(255, 255, 255, 0.35));
}

.profile-picture-panel:not(.is-active) {
  display: none;
}


/* ==========================================================================
   PROFILE AVATAR PREVIEW
   ========================================================================== */

.profile-avatar-preview {
  width: 140px;
  height: 140px;
  border-radius: 50%;
  border: 2px solid var(--border-strong);
  background: var(--bg-elevated);
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.profile-avatar-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
  display: none;
}

.profile-avatar-preview.has-image img {
  display: block;
}


/* ==========================================================================
   AVATAR CROPPER
   ========================================================================== */

.avatar-cropper {
  background: var(--bg-elevated);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-lg);
  padding: var(--space-md);
}

.avatar-cropper canvas {
  width: 100%;
  height: auto;
  border-radius: var(--radius-md);
  background: var(--bg-elevated);
  touch-action: none;
}

.avatar-controls {
  margin-top: var(--space-md);
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.avatar-actions {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.avatar-actions button {
  width: 100%;
}


/* ==========================================================================
   PROFILE UPLOAD GRID
   ========================================================================== */

.profile-upload-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--space-lg);
}

.profile-card-header-inline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
}


/* ==========================================================================
   PROFILE FORM SECTIONS
   ========================================================================== */

.profile-basic-row {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-sm) 0;
  border-bottom: 1px solid var(--border);
}
.profile-basic-row span {
  min-width: 120px;
  color: var(--text-muted);
  font-size: var(--font-size-sm);
}

.profile-basic-row strong {
  color: var(--text);
}

.profile-basic-row.email-row {
  gap: var(--space-md);
  flex-wrap: wrap;
}

.email-change {
  margin-top: var(--space-md);
  padding-top: var(--space-sm);
  border-top: 1px solid var(--border);
}

.profile-edit-actions {
  margin-top: var(--space-sm);
  display: flex;
  gap: var(--space-sm);
  flex-wrap: wrap;
}

.profile-card .form-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: var(--space-md);
}

.profile-card .form-grid label {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  font-weight: var(--font-weight-semibold);
  color: var(--text);
}

.profile-card .form-grid input,
.profile-card .form-grid select {
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
  color: var(--text);
}

.profile-card .form-grid input::placeholder {
  color: var(--text-muted);
}


/* ==========================================================================
   FILE INPUT
   ========================================================================== */

.file-input-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-sm);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  padding: var(--space-md) var(--space-lg);
  text-align: center;
  cursor: pointer;
  color: var(--text);
  background: var(--bg-overlay);
  font-weight: var(--font-weight-medium);
  transition: all var(--transition-base);
  min-height: var(--button-height);
  width: 100%;
}

.file-input-label:hover {
  border-color: var(--primary);
  background: var(--bg-elevated);
  color: var(--primary);
  transform: translateY(-1px);
  box-shadow: var(--shadow-sm);
}



.file-input-label input {
  display: none;
}


/* ==========================================================================
   PROFILE MESSAGES
   ========================================================================== */

.profile-card .message {
  display: none;
}

.profile-card .message.info,
.profile-card .message.success,
.profile-card .message.error {
  display: block;
}

.profile-card input[type="password"] {
  letter-spacing: 0.02em;
}

.profile-card .small {
  font-size: var(--font-size-sm);
  color: var(--text-muted);
}


/* ==========================================================================
   USER DETAIL PAGE
   ========================================================================== */

.user-detail-header {
  display: flex;
  align-items: center;
  gap: var(--space-lg);
  flex-wrap: wrap;
}

.user-detail-avatar-wrapper {
  width: 96px;
  height: 96px;
  border-radius: 50%;
  border: 2px solid var(--border-strong);
  background: var(--bg-elevated);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.user-detail-avatar-wrapper img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
}

.user-detail-heading {
  flex: 1;
  min-width: 220px;
}

.user-detail-heading h2 {
  margin: 0;
}

.user-detail-heading p {
  margin: var(--space-xs) 0 0;
  color: var(--text-secondary);
}


/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
  .profile-upload-grid {
    grid-template-columns: 1fr;
  }

  .avatar-actions button,
  .file-input-label {
    width: 100%;
  }

  .profile-card-header {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* ==========================================================================
   STATUS SECTION
   ========================================================================== */

.status-overview {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding: var(--space-md);
  background: var(--bg-overlay);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-lg);
}

.status-item {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  flex-wrap: wrap;
}

.status-label {
  min-width: 120px;
  color: var(--text-muted);
  font-size: var(--font-size-sm);
}

.status-actions {
  border-top: 1px solid var(--border);
  padding-top: var(--space-lg);
  margin-top: var(--space-md);
}

.status-actions h4 {
  margin-bottom: var(--space-md);
  font-size: var(--font-size-base);
  color: var(--text);
}

.status-actions .form-row {
  margin-bottom: var(--space-lg);
}

.status-actions .form-row label {
  display: block;
  margin-bottom: var(--space-xs);
  font-weight: var(--font-weight-medium);
}

.status-actions .form-row select {
  width: 100%;
  max-width: 400px;
}

/* ==========================================================================
   AVATAR GALLERY
   ========================================================================== */

.avatar-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(70px, 1fr));
  gap: var(--space-md);
  max-height: 380px;
  overflow-y: auto;
  padding: var(--space-md);
  background: var(--bg-overlay);
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
}

.avatar-gallery-item {
  aspect-ratio: 1;
  border-radius: var(--radius-md);
  overflow: hidden;
  cursor: pointer;
  border: 2px solid transparent;
  transition: all var(--transition-base);
  position: relative;
  background: var(--bg-elevated);
}

.avatar-gallery-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.8;
  transition: opacity 0.2s;
}

.avatar-gallery-item:hover img {
  opacity: 1;
}

.avatar-gallery-item:hover {
  transform: translateY(-2px);
  border-color: var(--primary-light);
}

.avatar-gallery-item.is-selected {
  border-color: var(--primary);
  box-shadow: 0 0 0 2px var(--bg-elevated), 0 0 0 4px var(--primary);
}

.avatar-gallery-item.is-selected img {
  opacity: 1;
}

.avatar-gallery-item.is-selected::after {
  content: '\f00c';
  font-family: 'Font Awesome 6 Free';
  font-weight: 900;
  position: absolute;
  top: 4px;
  right: 4px;
  background: var(--primary);
  color: white;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  z-index: 2;
}

.status-actions .form-row .small {
  display: block;
  margin-top: var(--space-xs);
}


/* == inlined: 06-components/_teams.css == */
/**
 * Teams Components
 *
 * Feature-specific components for team management and team views
 * Refactored from legacy style.css
 */

/* ==========================================================================
   TEAM MANAGEMENT PANELS
   ========================================================================== */

.team-manage-panel {
  margin-top: var(--space-xl);
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-xl);
}

.team-manage-panel__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-lg);
  gap: var(--space-lg);
}

.team-manage-panel__header h3 {
  margin: 0;
  color: var(--text);
}

/* ==========================================================================
   TEAM DETAILS FORM
   ========================================================================== */

.team-details-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  margin-bottom: var(--space-xl);
}

.team-details-form input,
.team-details-form textarea {
  width: 100%;
}

.team-details-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-lg);
  flex-wrap: wrap;
}

/* ==========================================================================
   TEAM MEMBER SECTION
   ========================================================================== */

.team-member-section {
  border-top: 1px solid var(--border);
  padding-top: var(--space-xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.team-member-section--disabled {
  opacity: 0.6;
  pointer-events: none;
}

/* ==========================================================================
   TEAM MEMBER LIST & CARDS
   ========================================================================== */

.team-member-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  margin-bottom: var(--space-lg);
}

.team-member-card {
  padding: var(--space-sm) var(--space-md);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  transition: var(--transition-fast);
  position: relative;
}

.team-member-card:hover {
  border-color: var(--border-strong);
}

.team-member-actions {
  display: flex;
  gap: var(--space-xs);
}

/* ==========================================================================
   TEAM MEMBER FORM
   ========================================================================== */

.team-member-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding: var(--space-lg);
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
}

.team-member-form__actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-sm);
  padding-top: var(--space-md);
  border-top: 1px solid var(--border);
}

/* ==========================================================================
   TEAM MEMBER SEARCH
   ========================================================================== */

.team-member-search {
  margin-bottom: var(--space-lg);
}

/* ==========================================================================
   TEAM DETAIL VIEW
   ========================================================================== */

.team-detail {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xl);
  padding: var(--space-lg);
}

.team-hero {
  background: linear-gradient(135deg, var(--primary-light-18), rgba(8, 13, 22, 0.9));
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-2xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.team-hero h1 {
  margin: 0;
  font-size: var(--font-size-3xl);
  color: var(--text);
}

.team-hero__actions {
  display: flex;
  gap: var(--space-sm);
  flex-wrap: wrap;
}

.team-description {
  color: var(--text-muted);
  line-height: 1.6;
  margin: var(--space-md) 0;
}

/* ==========================================================================
   TEAM MEMBERS GRID
   ========================================================================== */

.team-members {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-xl);
}

.team-members h2 {
  margin: 0 0 var(--space-lg) 0;
  color: var(--text);
}

.team-members__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: var(--space-md);
}

/* ==========================================================================
   TEAM MEMBER PILL (Avatar + Name)
   ========================================================================== */

.team-member-pill {
  padding: var(--space-sm) var(--space-md);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  transition: var(--transition-fast);
  position: relative;
}

.team-member-pill:hover {
  border-color: var(--border-strong);
  transform: translateY(-2px);
}

.team-member-pill__actions {
  margin-left: auto;
  opacity: 0;
  transition: opacity var(--transition-fast);
}

.team-member-pill:hover .team-member-pill__actions {
  opacity: 1;
}

.team-member-pill__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
}

/* ==========================================================================
   TEAM DETAIL COLUMNS
   ========================================================================== */

.team-detail-columns {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: var(--space-xl);
}

/* ==========================================================================
   TEAM CHAT CARD
   ========================================================================== */

.team-chat-card {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.team-chat-card h3 {
  margin: 0;
  color: var(--text);
}

.team-chat-actions {
  display: flex;
  gap: var(--space-sm);
}

/* ==========================================================================
   TEAM EMPTY STATE
   ========================================================================== */

.team-empty {
  text-align: center;
  padding: var(--space-2xl);
  color: var(--text-muted);
}

/* ==========================================================================
   MARKDOWN PREVIEW
   ========================================================================== */

.markdown-preview {
  line-height: 1.7;
  color: var(--text);
}

.markdown-preview h1,
.markdown-preview h2,
.markdown-preview h3 {
  color: var(--text);
  margin-top: var(--space-lg);
  margin-bottom: var(--space-md);
}

.markdown-preview p {
  margin-bottom: var(--space-md);
}

.markdown-preview ul,
.markdown-preview ol {
  margin-left: var(--space-lg);
  margin-bottom: var(--space-md);
}

.markdown-preview code {
  background: var(--bg-elevated);
  padding: 0.2em 0.4em;
  border-radius: var(--radius-xs);
  font-family: 'Courier New', monospace;
  font-size: 0.9em;
}

.markdown-preview pre {
  background: var(--bg-elevated);
  padding: var(--space-md);
  border-radius: var(--radius-sm);
  overflow-x: auto;
  border: 1px solid var(--border);
}

.markdown-preview pre code {
  background: none;
  padding: 0;
}

/* ==========================================================================
   TEAM ADMIN TOOLBAR
   ========================================================================== */

.team-admin-toolbar {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-sm);
  margin-bottom: var(--space-lg);
}

/* ==========================================================================
   TEAM CARD GRID (Team List)
   ========================================================================== */

.team-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: var(--space-lg);
  margin-top: var(--space-xl);
}

.team-card {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--bg-elevated);
  transition: var(--transition-fast);
  cursor: pointer;
}

.team-card:hover {
  border-color: var(--border-strong);
  transform: translateY(-4px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
}

.team-card__header {
  padding: var(--space-lg);
  border-bottom: 1px solid var(--border);
}

.team-card__hero {
  height: 120px;
  background: linear-gradient(135deg, var(--primary-light-30), rgba(8, 13, 22, 0.9));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--font-size-2xl);
  font-weight: 700;
  color: white;
}

.team-card__meta {
  display: flex;
  gap: var(--space-md);
  color: var(--text-muted);
  font-size: var(--font-size-sm);
}

.team-card__body {
  padding: var(--space-lg);
}

.team-card__title {
  font-size: var(--font-size-xl);
  font-weight: 600;
  margin: 0 0 var(--space-sm) 0;
  color: var(--text);
}

.team-card__description {
  color: var(--text-muted);
  line-height: 1.5;
  margin-bottom: var(--space-md);
}

.team-card__actions {
  display: flex;
  gap: var(--space-sm);
}

.team-card__footer {
  padding: var(--space-md) var(--space-lg);
  border-top: 1px solid var(--border);
  background: var(--bg);
}

/* ==========================================================================
   AVATAR STACK
   ========================================================================== */

.avatar-stack {
  display: flex;
  margin-left: var(--space-sm);
}

.avatar-stack__item {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 2px solid var(--bg);
  background: var(--primary);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  font-size: var(--font-size-xs);
  margin-left: -10px;
  transition: var(--transition-fast);
}

.avatar-stack__item:first-child {
  margin-left: 0;
}

.avatar-stack__item:hover {
  transform: translateY(-2px);
  z-index: 10;
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 960px) {
  .team-detail-columns {
    grid-template-columns: 1fr;
  }

  .team-card-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {
  .team-hero {
    padding: var(--space-lg);
  }

  .team-members__grid {
    grid-template-columns: 1fr;
  }

  .team-detail-columns {
    gap: var(--space-lg);
  }
}


/* == inlined: 06-components/_shifts.css == */
/**
 * Shifts Components
 *
 * Feature-specific components for shift management
 * Refactored from legacy style.css and dispatcher.css
 */

/* ==========================================================================
   SHIFT USER SEARCH RESULTS
   ========================================================================== */

.shift-user-results {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  max-height: 200px;
  overflow-y: auto;
  scrollbar-width: thin;
}

.shift-user-result {
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: var(--space-sm) var(--space-md);
  text-align: left;
  background: var(--bg-elevated);
  color: var(--text);
  cursor: pointer;
  transition: var(--transition-fast);
}

.shift-user-result:hover {
  border-color: var(--primary);
  background: var(--bg);
}

.shift-user-result:active {
  transform: scale(0.98);
}

.shift-user-result__avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--bg-elevated), var(--bg));
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: var(--font-weight-semibold);
  color: var(--text);
  text-transform: uppercase;
  flex-shrink: 0;
  overflow: hidden;
}

.shift-user-result__avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.shift-user-result__body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

/* ==========================================================================
   SHIFT GRID & CARDS
   ========================================================================== */

.shift-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: var(--space-lg);
  margin-top: var(--space-xl);
}

.shift-card {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--bg-elevated);
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  transition: var(--transition-fast);
}

.shift-card:hover {
  border-color: var(--border-strong);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}

.shift-card__header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-sm);
}

.shift-card__title {
  font-weight: 600;
  font-size: var(--font-size-lg);
  color: var(--text);
  margin: 0;
}

.shift-card__time {
  font-size: var(--font-size-sm);
  color: var(--text-muted);
  display: flex;
  align-items: center;
  gap: var(--space-xs);
}

.shift-card__meta {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  padding: var(--space-md) 0;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}

.shift-card__location,
.shift-card__team {
  font-size: var(--font-size-sm);
  color: var(--text);
  display: flex;
  align-items: center;
  gap: var(--space-xs);
}

.shift-card__actions {
  display: flex;
  gap: var(--space-sm);
  margin-top: auto;
}

/* ==========================================================================
   SHIFT STATUS BADGES
   ========================================================================== */

.shift-status {
  display: inline-flex;
  align-items: center;
  padding: 0.25rem 0.75rem;
  border-radius: 999px;
  font-size: var(--font-size-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.shift-status--upcoming {
  background: var(--info-light);
  color: var(--info);
}

.shift-status--active {
  background: var(--success-light);
  color: var(--success);
}

.shift-status--completed {
  background: rgba(156, 163, 175, 0.15);
  color: #9ca3af;
}

.shift-status--cancelled {
  background: var(--error-light);
  color: var(--error);
}

/* ==========================================================================
   SHIFT DETAILS VIEW
   ========================================================================== */

.shift-detail {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
}

.shift-detail__hero {
  background: linear-gradient(135deg, var(--primary-light-18), rgba(8, 13, 22, 0.9));
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-2xl);
}

.shift-detail__hero h1 {
  margin: 0 0 var(--space-md) 0;
  font-size: var(--font-size-3xl);
  color: var(--text);
}

.shift-detail__info {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-lg);
  margin-top: var(--space-xl);
}

.shift-info-item {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.shift-info-item__label {
  font-size: var(--font-size-sm);
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 600;
}

.shift-info-item__value {
  font-size: var(--font-size-lg);
  color: var(--text);
}

/* ==========================================================================
   SHIFT ASSIGNMENT
   ========================================================================== */

.shift-assignment {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-xl);
}

.shift-assignment h3 {
  margin: 0 0 var(--space-lg) 0;
  color: var(--text);
}

.shift-assignment-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.shift-assignment-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-sm) var(--space-md);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  transition: var(--transition-fast);
}

.shift-assignment-item:hover {
  border-color: var(--border-strong);
}

.shift-assignment-item__user {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

.shift-assignment-item__actions {
  display: flex;
  gap: var(--space-xs);
}

/* ==========================================================================
   OPEN SHIFTS (Public View)
   ========================================================================== */

.open-shifts-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

/* Filter Bar */
.filter-bar {
  background: var(--bg-overlay);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-lg);
  padding: var(--space-lg);
  margin-bottom: var(--space-xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  box-shadow: var(--shadow-sm);
}

.filter-row {
  display: flex;
  gap: var(--space-md);
  flex-wrap: wrap;
}

.filter-group {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  flex: 1;
  min-width: 200px;
}

.filter-group label {
  font-size: var(--font-size-xs);
  font-weight: 700;
  text-transform: uppercase;
  color: var(--text-muted);
}

.filter-checkbox-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 150px;
  overflow-y: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: var(--space-xs);
  background: var(--bg);
  scrollbar-width: thin;
}

.filter-checkbox-item {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  font-size: var(--font-size-sm);
  padding: 4px 8px;
  cursor: pointer;
  border-radius: var(--radius-xs);
  transition: var(--transition-fast);
}

.filter-checkbox-item:hover {
  background: var(--bg-elevated);
}

.filter-checkbox-item input {
  margin: 0;
  cursor: pointer;
}

.filter-actions {
  display: flex;
  justify-content: flex-end;
  border-top: 1px solid var(--border);
  padding-top: var(--space-sm);
}

.open-shifts__job {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--bg-elevated);
}

.open-shifts__header {
  display: flex;
  justify-content: space-between;
  gap: var(--space-lg);
  flex-wrap: wrap;
  align-items: center;
  width: 100%;
  background: none;
  border: none;
  color: inherit;
  font: inherit;
  cursor: pointer;
  text-align: left;
  padding: 0;
}

.open-shifts__header:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 4px;
}

.open-shifts__count {
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
  background: var(--primary-subtle);
  border-radius: var(--radius-full);
  padding: var(--space-xs) var(--space-md);
}

.open-shifts__meta {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  flex-wrap: wrap;
  justify-content: flex-end;
}

.open-shifts__chevron {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.15);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform var(--transition-base);
}

.open-shifts__chevron::before {
  content: '▾';
  font-size: var(--font-size-sm);
  color: var(--text);
}

.open-shifts__job.is-closed .open-shifts__chevron {
  transform: rotate(-90deg);
}

.open-shifts__shift-list {
  margin-top: var(--space-xs);
}

.open-shifts__job.is-closed .open-shifts__shift-list {
  display: none;
}

.open-shifts-info {
  margin-bottom: var(--space-xs);
}


/* ==========================================================================
   OPEN SHIFT ITEMS
   ========================================================================== */

.open-shift {
  display: flex;
  gap: var(--space-lg);
  padding: var(--space-md) 0;
  border-top: 1px solid var(--border);
  flex-wrap: wrap;
  align-items: center;
}

.open-shift:first-child {
  border-top: none;
}

.open-shift__info {
  flex: 1;
  min-width: 200px;
}

.open-shift__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm);
  align-items: center;
  justify-content: center;
  min-width: 100px;
  margin-left: auto;
}

.open-shift__slots {
  background: var(--open-shift-slots-bg, rgba(45, 164, 78, 0.18));
  color: var(--open-shift-slots-fg, #83f2a4);
  border-radius: var(--radius-full);
  padding: var(--space-xs) var(--space-md);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
}

.open-shift__reservations {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  background: var(--open-shift-reservations-bg, rgba(255, 255, 255, 0.05));
  padding: 2px 8px;
  border-radius: var(--radius-sm);
}

.open-shift__points {
  font-size: var(--font-size-sm);
  color: var(--text);
}

.open-shift__cta {
  width: 150px;
  display: flex;
  justify-content: flex-end;
  flex-shrink: 0;
}

.open-shift--deeplink {
  outline: 2px solid var(--accent, #2da44e);
  outline-offset: 2px;
}

@media (max-width: 500px) {
  .open-shift__meta {
    margin-left: 0;
    justify-content: flex-start;
    width: 100%;
  }
  .open-shift__cta {
    width: 100%;
    justify-content: flex-start;
  }
}


/* ==========================================================================
   SHIFT LISTS & LINKS
   ========================================================================== */

.shift-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.shift-link {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-md);
  padding: var(--space-sm) var(--space-md);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  text-decoration: none;
  color: var(--text);
  background: var(--bg-elevated);
  transition: var(--transition-base);
}

.shift-link:hover {
  border-color: var(--primary);
  background: var(--bg-elevated);
}

.shift-list__time {
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
}

.shift-list__name {
  font-weight: var(--font-weight-semibold);
}

.shift-public-card {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-md);
  background: var(--bg-elevated);
}


/* ==========================================================================
   SHIFT OVERLAYS
   ========================================================================== */

.shift-overlay-assignments,
.shift-overlay-reservations {
  margin-top: var(--space-lg);
}


/* ==========================================================================
   SHIFT INTERNAL NOTE ICON & TOOLTIP
   ========================================================================== */

.shift-note-icon {
  position: absolute;
  top: 4px;
  right: 4px;
  color: rgba(255, 255, 255, 0.75);
  font-size: var(--font-size-xs);
  cursor: help;
  transition: var(--transition-fast);
  z-index: 2;
  padding: 2px;
  border-radius: var(--radius-sm);
  background: rgba(0, 0, 0, 0.2);
}

.shift-note-icon:hover {
  color: rgba(255, 255, 255, 0.95);
  background: rgba(0, 0, 0, 0.4);
  transform: scale(1.1);
}

.shift-note-tooltip {
  position: fixed;
  background: var(--bg-overlay);
  backdrop-filter: blur(8px);
  color: var(--text);
  padding: var(--space-md) var(--space-lg);
  border-radius: var(--radius-md);
  font-size: var(--font-size-sm);
  line-height: var(--line-height-normal);
  max-width: min(600px, 90vw);
  min-width: 150px;
  width: max-content;
  white-space: pre-wrap;
  word-wrap: break-word;
  z-index: 10000;
  pointer-events: none;
  box-shadow: var(--shadow-lg);
  border: 1px solid var(--border-strong);
  animation: tooltipFadeIn 0.15s ease-out;
  max-height: calc(100vh - 40px);
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: var(--primary-hover) var(--bg-elevated);
}

.shift-note-tooltip::-webkit-scrollbar {
  width: 6px;
}

.shift-note-tooltip::-webkit-scrollbar-track {
  background: var(--bg-elevated);
  border-radius: 3px;
}

.shift-note-tooltip::-webkit-scrollbar-thumb {
  background: var(--primary-hover);
  border-radius: 3px;
}

.shift-note-tooltip::-webkit-scrollbar-thumb:hover {
  background: var(--primary);
}

.shift-note-tooltip.below::before {
  content: '';
  position: absolute;
  top: -6px;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
  border-bottom: 6px solid var(--bg-overlay);
}

.shift-note-tooltip:not(.below)::after {
  content: '';
  position: absolute;
  bottom: -6px;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
  border-top: 6px solid var(--bg-overlay);
}

@keyframes tooltipFadeIn {
  from {
    opacity: 0;
    transform: translateY(-4px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}


/* ==========================================================================
   BESETZUNGS-TOOLTIP (Hover auf Schicht-Block im Kalender)
   ========================================================================== */

.shift-crew-tooltip {
  position: fixed;
  background: var(--bg-overlay);
  backdrop-filter: blur(8px);
  color: var(--text);
  border-radius: var(--radius-md);
  font-size: var(--font-size-sm);
  width: 230px;
  z-index: 10000;
  pointer-events: auto;
  box-shadow: var(--shadow-lg);
  border: 1px solid var(--border-strong);
  animation: tooltipFadeIn 0.15s ease-out;
  overflow: hidden;
}

.shift-crew-tooltip__header {
  padding: var(--space-xs) var(--space-md);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
  border-bottom: 1px solid var(--border);
  background: var(--bg-elevated);
}

.shift-crew-tooltip__list {
  max-height: 260px;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: var(--primary-hover) var(--bg-elevated);
}

.shift-crew-tooltip__list::-webkit-scrollbar {
  width: 5px;
}

.shift-crew-tooltip__list::-webkit-scrollbar-track {
  background: var(--bg-elevated);
}

.shift-crew-tooltip__list::-webkit-scrollbar-thumb {
  background: var(--primary-hover);
  border-radius: 3px;
}

.shift-crew-tooltip__user {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: 6px var(--space-md);
  text-decoration: none;
  color: var(--text);
  transition: var(--transition-fast);
  cursor: pointer;
  border-bottom: 1px solid var(--border);
}

.shift-crew-tooltip__user:last-child {
  border-bottom: none;
}

.shift-crew-tooltip__user:hover {
  background: var(--bg-elevated);
  color: var(--primary);
  text-decoration: none;
}

.shift-crew-tooltip__avatar {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  overflow: hidden;
  flex-shrink: 0;
  background: var(--bg-elevated);
}

.shift-crew-tooltip__avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.shift-crew-tooltip__name {
  font-size: var(--font-size-sm);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
  min-width: 0;
}

.shift-crew-tooltip__loading,
.shift-crew-tooltip__empty {
  padding: var(--space-sm) var(--space-md);
  color: var(--text-muted);
  font-size: var(--font-size-sm);
  text-align: center;
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
  .shift-grid {
    grid-template-columns: 1fr;
  }

  .shift-detail__info {
    grid-template-columns: 1fr;
  }

  .shift-detail__hero {
    padding: var(--space-lg);
  }
}


/* == inlined: 06-components/_jobs.css == */
/**
 * Job Components
 *
 * Job details, assignments, reservations, and responsible cards
 * Restored from archive: style.css
 */

/* ==========================================================================
   JOB DETAIL LAYOUT
   ========================================================================== */

.job-detail {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  margin-bottom: var(--space-3xl);
}

.job-detail .card {
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-lg);
  padding: var(--space-xl);
  background: var(--bg-elevated);
  box-shadow: var(--shadow-sm);
}

.job-detail__back {
  color: var(--text-secondary);
  text-decoration: none;
  font-size: var(--font-size-sm);
  display: inline-flex;
  margin-bottom: var(--space-xs);
}


/* ==========================================================================
   JOB HERO
   ========================================================================== */

.job-detail__hero {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--space-xl);
  background: linear-gradient(135deg, var(--bg-elevated), var(--bg));
  position: relative;
  overflow: hidden;
  color: var(--text);
  min-height: 200px;
  padding: var(--space-xl);
}

.job-detail__hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: var(--hero-image, none);
  background-size: cover;
  background-position: center;
  filter: var(--hero-img-filter);
  opacity: 0;
  transition: opacity var(--transition-base);
}

.job-detail__hero.job-detail__hero--has-image::before {
  opacity: var(--hero-img-opacity);
}

.job-detail__hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--hero-bg-gradient);
}

.job-detail__hero > * {
  position: relative;
  z-index: 2;
}

.job-detail__hero-text h1 {
  margin: 0;
  font-size: var(--font-size-3xl);
  color: var(--hero-text-color);
}

.job-detail__title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-sm);
  margin: 0.1rem 0;
}

.job-detail__adults-badge .age-restriction-badge {
  margin-left: 0;
  font-size: 0.8rem;
  -webkit-text-fill-color: currentColor;
  color: #fff;
}

.job-detail__adults-badge .age-restriction-badge i {
  color: inherit;
}

.job-detail__hero-text .muted {
  color: var(--hero-muted-color);
}

.job-detail__meta p {
  margin: 0.2rem 0;
  color: var(--hero-muted-color);
}

.job-detail__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  margin-top: var(--space-sm);
}

.job-detail__map-link.hidden {
  display: none;
}


/* ==========================================================================
   JOB CONTENT SECTIONS
   ========================================================================== */

.job-detail__content h2,
.job-detail__responsibles h2,
.job-detail__chat h2 {
  margin-top: 0;
}

.job-detail__gallery {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.job-detail__gallery-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-lg);
}

.job-detail__chat-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-lg);
  flex-wrap: wrap;
}

.job-detail__chat #job-chat {
  margin-top: var(--space-lg);
}


/* ==========================================================================
   RESPONSIBLE CARDS
   ========================================================================== */

.job-detail__responsible-list,
.responsible-cards-container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-lg);
}

.responsible-card {
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  padding: var(--space-md);
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  background: var(--bg-elevated);
  position: relative;
}

.responsible-card__header {
  display: flex;
  gap: var(--space-md);
  align-items: center;
  margin-bottom: var(--space-xs);
}

.responsible-card__meta {
  display: flex;
  flex-direction: column;
  flex: 1;
}

.responsible-card__meta h3 {
  margin: 0;
}

.responsible-card__meta p {
  margin: 0.1rem 0;
}

.responsible-card__meta .badge {
  align-self: flex-start;
  margin-top: var(--space-xs);
}

.responsible-card h3 {
  margin: 0;
}

.responsible-card__link {
  margin-top: var(--space-xs);
  color: var(--primary);
  font-weight: var(--font-weight-semibold);
  text-decoration: none;
}

.responsible-card__link:hover {
  text-decoration: underline;
}

.responsible-card__remove {
  position: absolute;
  top: var(--space-sm);
  right: var(--space-sm);
  background: transparent;
  border: none;
  color: var(--text-muted);
  font-size: var(--font-size-2xl);
  line-height: 1;
  cursor: pointer;
  padding: var(--space-xs);
  border-radius: var(--radius-sm);
  transition: all var(--transition-base);
  width: 2rem;
  height: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
}

.responsible-card__remove:hover {
  background: var(--bg);
  color: var(--error);
}


/* ==========================================================================
   JOB IMAGES / GALLERY
   ========================================================================== */

.job-images {
  margin-top: var(--space-xl);
}

.job-gallery-admin {
  margin-top: var(--space-xl);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--bg-elevated);
}

.job-image-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-lg);
}

.job-image-card {
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  padding: var(--space-md);
  background: var(--bg-elevated);
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.job-image-card__preview {
  width: 100%;
  height: 140px;
  border-radius: var(--radius-md);
  background-size: cover;
  background-position: center;
  background-color: var(--bg);
}

.job-image-card__placeholder {
  width: 100%;
  height: 140px;
  border-radius: var(--radius-md);
  background: var(--bg);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
}

.job-image-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}


/* ==========================================================================
   JOB CARD (extended from _cards.css)
   ========================================================================== */

.job-card__body {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}


/* ==========================================================================
   ASSIGNMENTS & RESERVATIONS
   ========================================================================== */

.assignment-event {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-md);
  margin-bottom: var(--space-lg);
  background: var(--bg-elevated);
}

.assignment-event__header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-md);
  margin-bottom: var(--space-md);
}

.assignment-event__header h4 {
  margin: 0;
}

.assignment-count {
  font-size: var(--font-size-sm);
  color: var(--text-muted);
}

.assignment-job {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-md);
  margin-bottom: var(--space-sm);
  background: var(--bg-elevated);
}

.assignment-job__header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-md);
  margin-bottom: var(--space-sm);
}

.assignment-job__header strong {
  font-weight: var(--font-weight-semibold);
}

.assignment-job__link {
  text-decoration: none;
  color: var(--text);
}

.assignment-job__link:hover strong {
  color: var(--primary);
}

.shift-assignment-list,
.shift-reservation-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  margin-top: var(--space-sm);
}

.assignment-item,
.reservation-item {
  padding: var(--space-sm) var(--space-md);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--bg-elevated);
}

.reservation-meta {
  display: flex;
  gap: var(--space-md);
  align-items: center;
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
}

.reservation-user {
  font-weight: var(--font-weight-semibold);
}

.reservation-actions {
  display: flex;
  gap: var(--space-xs);
  margin-top: var(--space-sm);
}


/* ==========================================================================
   MY RESERVATIONS
   ========================================================================== */

.my-reservation-card {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--bg-elevated);
  margin-bottom: var(--space-md);
}

.my-reservation-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-lg);
  margin-bottom: var(--space-sm);
}

.my-reservation-status {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  padding: 0.2rem 0.65rem;
  border-radius: var(--radius-full);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
  line-height: 1.4;
  white-space: nowrap;
  border: 1px solid transparent;
}

.my-reservation-status.status-pending {
  background: var(--reservation-pending-bg, var(--info-bg));
  color: var(--reservation-pending-fg, var(--info));
  border-color: var(--reservation-pending-border, rgba(96, 165, 250, 0.28));
}

.my-reservation-status.status-declined {
  background: var(--danger-bg);
  color: var(--danger);
  border-color: rgba(192, 57, 43, 0.28);
}

.my-reservation-status.status-approved {
  background: var(--success-bg);
  color: var(--success);
  border-color: rgba(21, 128, 61, 0.28);
}

.my-reservation-status.status-withdrawn {
  background: var(--muted-bg);
  color: var(--text-muted);
  border-color: var(--border);
}

.my-reservation-actions {
  display: flex;
  gap: var(--space-xs);
  margin-top: var(--space-md);
  flex-wrap: wrap;
}


/* ==========================================================================
   SCHICHTEN & BESETZUNG (Verantwortlichen-Ansicht)
   ========================================================================== */

.shifts-crew {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: var(--space-lg);
  align-items: start;
}

/* Schichtliste (linke Spalte) */
.shifts-crew__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  max-height: 500px;
  overflow-y: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-sm);
  background: var(--bg);
}

.shifts-crew__item {
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-md);
  border: 1px solid transparent;
  cursor: pointer;
  transition: background var(--transition-fast), border-color var(--transition-fast);
}

.shifts-crew__item:hover {
  background: var(--bg-hover);
  border-color: var(--border);
}

.shifts-crew__item--active {
  background: var(--primary-subtle);
  border-color: var(--primary);
}

.shifts-crew__item--laufend {
  border-left: 3px solid var(--success, #22c55e);
}

.shifts-crew__item-header {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  flex-wrap: wrap;
  margin-bottom: var(--space-2xs);
}

.shifts-crew__item-name {
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
}

.shifts-crew__item-range {
  font-size: var(--font-size-xs);
  margin: 0;
}

/* Statusbadges */
.shifts-crew__badge {
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
  padding: 1px 6px;
  border-radius: var(--radius-sm);
  white-space: nowrap;
}

.shifts-crew__badge--aktiv {
  background: var(--success-subtle, #dcfce7);
  color: var(--success-text, #166534);
}


.shifts-crew__badge--beendet {
  background: var(--bg-muted, var(--bg-elevated));
  color: var(--text-secondary);
}

/* Besetzungsanzeige in der Liste */
.shifts-crew__besetzung {
  font-size: var(--font-size-xs);
  display: inline-block;
  margin-top: var(--space-2xs);
}

.shifts-crew__besetzung--voll { color: var(--success, #16a34a); }
.shifts-crew__besetzung--ok  { color: var(--info, #0284c7); }
.shifts-crew__besetzung--offen { color: var(--text-secondary); }

/* Detail-Panel (rechte Spalte) */
.shifts-crew__detail {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--bg-elevated);
  min-height: 200px;
}

.shifts-crew__detail-header {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  flex-wrap: wrap;
  margin-bottom: var(--space-md);
}

.shifts-crew__detail-title {
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-semibold);
  margin: 0;
}

.shifts-crew__detail-meta {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--space-2xs) var(--space-md);
  font-size: var(--font-size-sm);
  margin-bottom: var(--space-md);
}

.shifts-crew__detail-meta dt {
  color: var(--text-secondary);
  font-weight: var(--font-weight-medium);
}

.shifts-crew__detail-meta dd {
  margin: 0;
}

.shifts-crew__detail-note {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: var(--space-sm) var(--space-md);
  margin-bottom: var(--space-md);
  font-size: var(--font-size-sm);
}

.shifts-crew__detail-note strong {
  display: block;
  margin-bottom: var(--space-2xs);
  color: var(--text-secondary);
}

.shifts-crew__detail-note p {
  margin: 0;
}

.shifts-crew__detail-crew strong {
  display: block;
  font-size: var(--font-size-sm);
  margin-bottom: var(--space-sm);
}

.shifts-crew__crew-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.shifts-crew__crew-item {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  font-size: var(--font-size-sm);
}

/* ==========================================================================
   SCHICHTPLÄNE (Aufgabenverantwortliche)
   ========================================================================== */

.responsible-overview {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  margin-bottom: var(--space-xl);
}

.responsible-overview__intro h1 {
  margin: 0 0 var(--space-sm);
  font-size: var(--font-size-xl);
}

.responsible-overview__job-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1rem;
  margin-bottom: 0.75rem;
}

.responsible-overview__job-link,
.responsible-overview__shift-link {
  display: inline-block;
  font-size: var(--font-size-sm);
  margin-bottom: var(--space-sm);
}

.responsible-overview__shift-title {
  display: inline;
  margin-right: var(--space-xs);
}

.responsible-overview__shift-range {
  display: block;
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-normal);
  margin-top: var(--space-2xs);
}

.responsible-overview-page .accordion-subitem summary {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2xs);
}

.responsible-overview-page .accordion-subitem .shifts-crew__besetzung {
  margin-top: var(--space-2xs);
}

.responsible-overview-banner {
  margin-bottom: var(--space-md);
}

.responsible-overview-banner p {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-sm);
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
  .job-detail {
    gap: var(--space-md);
    margin-bottom: var(--space-xl);
  }

  .job-detail .card {
    padding: var(--space-md);
  }

  .job-detail__hero {
    min-height: 160px;
  }

  .job-detail__responsible-list,
  .job-image-grid {
    grid-template-columns: 1fr;
  }

  .shifts-crew {
    grid-template-columns: 1fr;
  }

  .shifts-crew__list {
    max-height: 260px;
  }
}


/* == inlined: 06-components/_gallery.css == */
/**
 * Gallery Components
 *
 * Image gallery preview, overlay, slider, and upload
 * Restored from archive: style.css (lines 1649-2041)
 */

/* ==========================================================================
   GALLERY PREVIEW
   ========================================================================== */

.gallery-preview {
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-lg);
  background: var(--bg-elevated);
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.gallery-preview__header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-md);
}

.gallery-preview__actions {
  display: flex;
  gap: var(--space-xs);
  flex-wrap: wrap;
  justify-content: flex-end;
}

.gallery-preview__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.gallery-preview__thumbnails {
  display: flex;
  gap: var(--space-xs);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding-bottom: var(--space-xs);
  scrollbar-width: thin;
  scrollbar-color: var(--border) transparent;
}

/* Webkit-Scrollbar dezent halten */
.gallery-preview__thumbnails::-webkit-scrollbar {
  height: 4px;
}

.gallery-preview__thumbnails::-webkit-scrollbar-track {
  background: transparent;
}

.gallery-preview__thumbnails::-webkit-scrollbar-thumb {
  background: var(--border);
  border-radius: 2px;
}

.gallery-preview__thumb {
  width: 80px;
  height: 80px;
  flex-shrink: 0;
  scroll-snap-align: start;
  border-radius: var(--radius-md);
  border: 1px solid rgba(255, 255, 255, 0.15);
  background-image: var(--gallery-thumb);
  background-size: cover;
  background-position: center;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  transition: var(--transition-base);
}

.gallery-preview__thumb::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(145deg, rgba(0, 0, 0, 0.2), transparent);
  transition: opacity var(--transition-fast);
}

.gallery-preview__thumb:hover::after {
  opacity: 0;
}

.gallery-preview__empty {
  margin: 0;
  color: var(--text-muted);
}

/* Quick-Snap Label verhält sich wie ein Button */
.gallery-preview__snap-label {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  cursor: pointer;
}


/* ==========================================================================
   GALLERY OVERLAY / MODAL
   ========================================================================== */

.gallery-overlay {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: var(--z-modal);
}

.gallery-overlay.hidden {
  display: none;
}

.gallery-overlay__scrim {
  position: absolute;
  inset: 0;
  background: rgba(5, 6, 10, 0.85);
  backdrop-filter: blur(6px);
}

.gallery-overlay__panel {
  position: relative;
  width: min(960px, 96vw);
  max-height: 92vh;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-xl);
  box-shadow: 0 35px 120px rgba(0, 0, 0, 0.65);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.gallery-overlay__header {
  padding: var(--space-lg);
  border-bottom: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  gap: var(--space-lg);
}

.gallery-overlay__header-actions {
  display: flex;
  gap: var(--space-xs);
  flex-wrap: wrap;
}

.gallery-overlay__body {
  padding: var(--space-lg);
  overflow-y: auto;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.gallery-overlay--upload .gallery-overlay__body {
  justify-content: center;
}

.gallery-overlay__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.gallery-overlay__empty {
  margin: var(--space-xs) 0;
  color: var(--text-muted);
}

.gallery-overlay__upload-view {
  width: 100%;
}

body.gallery-overlay-open {
  overflow: hidden;
}


/* ==========================================================================
   GALLERY GRID (Thumbnail-Raster in der Overlay-Listenansicht)
   ========================================================================== */

.gallery-overlay__list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: var(--space-sm);
}

.gallery-grid__thumb {
  aspect-ratio: 1;
  border-radius: var(--radius-md);
  border: 1px solid rgba(255, 255, 255, 0.12);
  background-image: var(--gallery-thumb);
  background-size: cover;
  background-position: center;
  cursor: pointer;
  transition: transform var(--transition-fast), border-color var(--transition-fast);
}

.gallery-grid__thumb:hover,
.gallery-grid__thumb:focus-visible {
  transform: scale(1.04);
  border-color: var(--primary);
  outline: none;
}

.gallery-grid__item,
.gallery-preview__thumb-wrap {
  position: relative;
}

.gallery-grid__delete,
.gallery-preview__delete {
  position: absolute;
  top: 4px;
  right: 4px;
  z-index: 2;
  width: 28px;
  height: 28px;
  border: none;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.65);
  color: #fff;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  transition: background var(--transition-fast);
}

.gallery-grid__delete:hover,
.gallery-preview__delete:hover {
  background: var(--color-error, #d32f2f);
}


/* ==========================================================================
   GALLERY SLIDER (Vollbild-Ansicht)
   ========================================================================== */

/* Slider-View füllt den gesamten Panel aus (Header wird per JS ausgeblendet) */
.gallery-overlay__slider-view {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 60vh;
  background: var(--bg);
}

/* X-Button oben rechts */
.gallery-slider__close {
  position: absolute;
  top: var(--space-md);
  right: var(--space-md);
  z-index: 10;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
  font-size: 1.1rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--transition-fast);
}

.gallery-slider__close:hover {
  background: rgba(0, 0, 0, 0.8);
}

/* Slider-Zeile (Prev / Bild / Next) */
.gallery-slider {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 0;
  min-height: 0;
  overflow: hidden;
}

.gallery-slider__stage {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  padding: var(--space-lg) 0;
}

.gallery-slider__stage img {
  max-height: 100%;
  max-width: 100%;
  border-radius: var(--radius-lg);
  object-fit: contain;
  background: transparent;
  touch-action: pinch-zoom;
  user-select: none;
  -webkit-user-drag: none;
}

/* Nav-Buttons seitlich, semi-transparent */
.gallery-slider__nav {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: rgba(0, 0, 0, 0.4);
  color: #fff;
  cursor: pointer;
  transition: background var(--transition-fast);
  margin: 0 var(--space-xs);
  display: flex;
  align-items: center;
  justify-content: center;
}

.gallery-slider__nav:hover {
  background: rgba(0, 0, 0, 0.7);
}

/* Info-Button unten rechts, über dem Bild */
.gallery-slider__info-btn {
  position: absolute;
  bottom: var(--space-md);
  right: var(--space-md);
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: none;
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
  font-size: 1rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--transition-fast);
  z-index: 5;
}

.gallery-slider__info-btn:hover {
  background: rgba(0, 0, 0, 0.8);
}

/* Info-Panel: Slide-up von unten */
.gallery-slider__info-panel {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(10, 12, 20, 0.92);
  backdrop-filter: blur(8px);
  border-top: 1px solid var(--border);
  border-radius: 0 0 var(--radius-xl) var(--radius-xl);
  padding: var(--space-lg);
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  z-index: 6;
  max-height: 50%;
  overflow-y: auto;
}

.gallery-slider__info-panel.hidden {
  display: none;
}

.gallery-slider__info-body h3 {
  margin: 0 0 var(--space-xs);
  color: var(--text);
}

.gallery-slider__location,
.gallery-slider__meta {
  margin: 0;
  color: var(--text-muted);
  font-size: var(--font-size-sm);
}

.gallery-slider__edit {
  display: flex;
  gap: var(--space-xs);
  flex-wrap: wrap;
}

/* Body-Padding entfernen wenn Slider aktiv */
.gallery-overlay__body:has(.gallery-overlay__slider-view:not(.hidden)) {
  padding: 0;
}


/* ==========================================================================
   GALLERY UPLOADER
   ========================================================================== */

.gallery-uploader {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-lg);
}

.gallery-uploader__left {
  flex: 1;
  min-width: 260px;
  border: 1px dashed var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-lg);
  background: var(--bg-elevated);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-md);
  cursor: pointer;
  transition: border-color var(--transition-base), background var(--transition-base);
}

.gallery-uploader__left.is-dragging {
  border-color: var(--primary);
  background: var(--primary-light);
}

#gallery-upload-preview {
  width: 100%;
  max-height: 320px;
  object-fit: contain;
  border-radius: var(--radius-md);
  background: var(--bg);
}

.gallery-upload-placeholder {
  text-align: center;
  color: var(--text-muted);
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  align-items: center;
}

.gallery-upload-placeholder p {
  margin: 0;
}

#gallery-upload-filename {
  margin: 0;
  text-align: center;
}

.gallery-uploader__right {
  flex: 1;
  min-width: 260px;
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.gallery-uploader__right label {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  font-size: var(--font-size-sm);
}

.gallery-uploader__right input,
.gallery-uploader__right textarea {
  width: 100%;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
  color: var(--text);
  padding: var(--space-sm) var(--space-md);
}


/* ==========================================================================
   GALLERY FORMS
   ========================================================================== */

.gallery-form__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-lg);
}

.gallery-form__grid label {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  font-size: var(--font-size-sm);
}

.gallery-form__grid input,
.gallery-form__grid textarea {
  width: 100%;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
  color: var(--text);
  padding: var(--space-sm) var(--space-md);
}

.gallery-form__coordinates {
  display: flex;
  gap: var(--space-xs);
}

.gallery-form__coordinates input {
  flex: 1;
}

.gallery-form__upload {
  margin-top: var(--space-lg);
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.gallery-form__file-buttons {
  display: flex;
  gap: var(--space-xs);
  flex-wrap: wrap;
}

.gallery-form__actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-xs);
  margin-top: var(--space-lg);
}


/* == inlined: 06-components/_history.css == */
/**
 * History & Activity Log Components
 *
 * Activity logs, history panels, and timeline entries
 */

/* ==========================================================================
   HISTORY NAVIGATION (eingebettet)
   ========================================================================== */

.history-nav {
  display: flex;
  gap: var(--space-xs);
  flex-wrap: wrap;
}


/* ==========================================================================
   HISTORY PANEL (Legacy / eingebettet)
   ========================================================================== */

.history-panel {
  margin-top: var(--space-xl);
  padding: var(--space-lg) var(--space-xl);
  border-radius: var(--radius-md);
  border: 1px solid var(--border);
  background: var(--bg-elevated);
  box-shadow: var(--shadow-md);
}

.history-panel .history-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-lg);
  margin-bottom: var(--space-md);
}

.history-panel .history-controls {
  display: flex;
  gap: var(--space-xs);
  align-items: center;
}

.history-panel .history-list {
  list-style: none;
  margin: 0;
  padding: 0;
  max-height: 320px;
  overflow-y: auto;
}

.history-entry {
  border-bottom: 1px solid var(--border);
  padding: var(--space-sm) 0;
}

.history-entry:last-child {
  border-bottom: none;
}

.history-entry time {
  display: block;
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  margin-bottom: var(--space-xs);
}

.history-entry-message {
  margin: 0;
  line-height: var(--line-height-relaxed);
  color: var(--text);
  font-size: var(--font-size-sm);
}


/* ==========================================================================
   HISTORY PAGE – Desktop-Volllayout (Admin)
   ========================================================================== */

.history-page.mgmt-page {
  background: var(--bg);
}

.history-page .history-main {
  display: flex;
  flex-direction: column;
  min-height: calc(100vh - var(--header-height, 56px));
  padding: var(--space-md) var(--space-lg) var(--space-xl);
  box-sizing: border-box;
}

.history-page .history-container {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  width: 100%;
  max-width: none;
  margin: 0;
}

.history-toolbar {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-lg);
  flex-wrap: wrap;
  margin-bottom: var(--space-md);
  padding-bottom: var(--space-md);
  border-bottom: 1px solid var(--border);
}

.history-toolbar-intro h2 {
  margin: 0 0 var(--space-xs);
  font-size: var(--font-size-xl);
}

.history-toolbar-intro .muted {
  margin: 0;
}

.history-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--space-md);
  flex: 1;
  justify-content: flex-end;
}

.history-control {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  margin: 0;
}

.history-control-label {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.history-control select,
.history-control input[type='search'] {
  background: var(--bg);
  border: 1px solid var(--border-strong);
  color: var(--text);
  border-radius: var(--radius-md);
  padding: 0.6rem 0.75rem;
  font-size: var(--font-size-base);
  min-height: 2.5rem;
}

.history-control--search {
  flex: 1;
  min-width: 280px;
  max-width: 520px;
}

.history-control--search input[type='search'] {
  width: 100%;
}

.history-page #history-refresh {
  min-height: 2.5rem;
  align-self: flex-end;
}

.history-page #history-message {
  margin-bottom: var(--space-sm);
}

.history-table-wrap {
  flex: 1;
  min-height: 0;
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg);
}

.history-page .history-table {
  margin-top: 0;
  width: 100%;
  table-layout: fixed;
}

.history-page .history-table thead th {
  position: sticky;
  top: 0;
  z-index: var(--z-sticky);
  white-space: nowrap;
  font-size: var(--font-size-sm);
}

.history-page .history-table td {
  vertical-align: top;
  font-size: var(--font-size-sm);
  line-height: var(--line-height-relaxed);
}

.history-col-time {
  width: 9.5rem;
  white-space: nowrap;
}

.history-col-action {
  width: 14rem;
}

.history-col-actor {
  width: 11rem;
}

.history-col-subject {
  width: 10rem;
}

.history-col-details {
  width: 7rem;
}

.history-col-message {
  width: auto;
  word-break: break-word;
}

.history-col-action {
  font-weight: var(--font-weight-medium);
  color: var(--text);
}

.history-entry-meta {
  font-size: var(--font-size-xs);
  color: var(--text-secondary);
}

.history-entry-meta summary {
  cursor: pointer;
  color: var(--primary-light);
  user-select: none;
}

.history-entry-meta pre {
  margin: var(--space-xs) 0 0;
  max-height: 12rem;
  overflow: auto;
  padding: var(--space-sm);
  background: var(--bg-overlay);
  border-radius: var(--radius-sm);
  font-size: var(--font-size-xs);
  white-space: pre-wrap;
  word-break: break-word;
}

.history-row--empty td,
.history-row--placeholder td {
  text-align: center;
  padding: var(--space-xl);
}

.history-filters {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: var(--space-md);
  margin-bottom: var(--space-md);
  padding: var(--space-md);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg-elevated);
}

.history-control--user-search {
  grid-column: span 2;
  min-width: 280px;
}

.history-user-search input[type='search'] {
  width: 100%;
  background: var(--bg);
  border: 1px solid var(--border-strong);
  color: var(--text);
  border-radius: var(--radius-md);
  padding: 0.6rem 0.75rem;
  font-size: var(--font-size-base);
  min-height: 2.5rem;
  box-sizing: border-box;
}

.history-user-search .shift-user-results {
  margin-top: var(--space-xs);
}

.history-filters-actions {
  display: flex;
  align-items: flex-end;
  grid-column: 1 / -1;
  justify-content: flex-end;
}

.history-summary {
  margin: 0 0 var(--space-sm);
  font-size: var(--font-size-sm);
}

.history-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
}

.history-link {
  font-size: var(--font-size-xs);
  color: var(--primary-light);
  text-decoration: none;
  white-space: nowrap;
}

.history-link:hover {
  text-decoration: underline;
}

.history-col-links {
  width: 8rem;
}

.history-pagination {
  display: flex;
  justify-content: center;
  margin-top: var(--space-md);
}

.history-controls--primary {
  flex-wrap: wrap;
}


/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
  .history-page .history-main {
    padding: var(--space-md);
  }

  .history-toolbar {
    flex-direction: column;
    align-items: stretch;
  }

  .history-controls {
    flex-direction: column;
    align-items: stretch;
  }

  .history-control--search {
    max-width: none;
  }

  .history-control--user-search {
    grid-column: span 1;
  }

  .history-page #history-refresh {
    width: 100%;
  }

  .history-table-wrap {
    max-height: none;
  }

  .history-page .history-table thead {
    display: none;
  }

  .history-page .history-table,
  .history-page .history-table tbody,
  .history-page .history-table tr,
  .history-page .history-table td {
    display: block;
    width: 100%;
  }

  .history-page .history-table tr {
    border-bottom: 1px solid var(--border);
    padding: var(--space-md) 0;
  }

  .history-page .history-table td {
    border: none;
    padding: var(--space-xs) 0;
  }

  .history-page .history-table td::before {
    content: attr(data-label);
    display: block;
    font-size: var(--font-size-xs);
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 0.15rem;
  }

  .history-col-time::before { content: 'Zeit'; }
  .history-col-action::before { content: 'Aktion'; }
  .history-col-actor::before { content: 'Ausführend'; }
  .history-col-message::before { content: 'Beschreibung'; }
  .history-col-subject::before { content: 'Bezug'; }
  .history-col-details::before { content: 'Technik'; }
  .history-col-links::before { content: 'Links'; }

  .history-panel {
    padding: var(--space-md);
  }

  .history-panel .history-header {
    flex-direction: column;
    align-items: flex-start;
  }
}


/* == inlined: 06-components/_chat-unified.css == */
/* ==========================================================================
   CHAT APP LAYOUT
   ==========================================================================

   Strategie: body → Grid (header + chat), chat-main → Grid (header + messages + input).
   Nur .chat-messages und .chat-sidebar__scroll dürfen scrollen.
   ========================================================================== */

/* --- Vollbild-Layout für die Chat-Seite --- */
body.chat-app.app {
  display: grid;
  grid-template-rows: auto 1fr auto; /* Header, Chat, Bottom-Nav */
  height: 100vh;
  height: 100dvh;
  height: 100svh; /* sichtbare Höhe ohne Browser-/System-Chrome (Android) */
  overflow: hidden;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  /* Bottom-Nav liegt im Grid – kein zusätzliches padding von .app */
  padding-bottom: 0;
  /* Abstand zur System-Gestenleiste (viewport-fit=cover in chat.html) */
  --chat-safe-bottom: env(safe-area-inset-bottom, 0px);
  /* Zusätzlicher Abstand für Eingabezeile (Kamera/Emoji-Buttons ~36–40px) */
  --chat-input-bottom: calc(var(--chat-safe-bottom) + var(--space-md));
}

/* Staging-Banner ist erstes Body-Kind – vierte Grid-Zeile verhindert, dass der App-Header 1fr bekommt */
body.chat-app.app.is-staging {
  grid-template-rows: auto auto minmax(0, 1fr) auto;
}

body.chat-app.app.is-staging #abflattern-staging-banner,
body.chat-app.app.is-staging .staging-banner {
  grid-row: 1;
}

body.chat-app.app.is-staging > .app-header {
  grid-row: 2;
}

body.chat-app.app.is-staging > .chat-page {
  grid-row: 3;
}

body.chat-app.app.is-staging > .bottom-nav {
  grid-row: 4;
}

body.chat-app.app .bottom-nav {
  position: static;
  grid-row: 3;
  z-index: var(--z-fixed);
  padding-bottom: var(--chat-safe-bottom);
  box-sizing: border-box;
}

body.chat-app.app .chat-dm-overlay {
  grid-row: 1 / -1;
  grid-column: 1 / -1;
}

/* --- Hauptbereich unter dem Header --- */
body.chat-app.app > .chat-page {
  display: flex;
  overflow: hidden;
  min-height: 0;
  min-width: 0;
  max-width: 100%;
  padding: 0;
}

body.chat-app.app .chat-shell,
body.chat-app.app #chat-overview {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
}

/* ==========================================================================
   CHAT WIDGET
   ========================================================================== */

.chat-widget {
  display: flex;
  flex: 1;
  min-width: 0;
  width: 100%;
  max-width: 100%;
  min-height: 0;
  overflow: hidden;
  border: none;
  border-radius: 0;
  background: transparent;
}

.chat-widget--single {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg-elevated);
}

/* ==========================================================================
   CHAT MAIN – Grid mit 3 Zeilen (Header, Messages, Input)
   ========================================================================== */

.chat-main {
  flex: 1;
  display: grid;
  /* Spalte minmax(0,1fr): lange Kanaltitel dürfen die Breite nicht aufblasen */
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr) auto auto;
  min-height: 0;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  background: var(--bg);
}

.chat-main__header {
  padding: var(--space-md) var(--space-lg);
  border-bottom: 1px solid var(--border);
  background: var(--bg-elevated);
  display: flex;
  align-items: center;
  gap: var(--space-md);
  flex-shrink: 0;
  min-height: 0;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  grid-row: 1;
}

.chat-main__title-group {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  flex-wrap: nowrap;
  overflow: hidden;
}

.chat-main__title {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  font-weight: 600;
  color: var(--text);
  /* Bis 2 Zeilen lesbar; danach Ellipsis – ohne Layout-Breite aufzublasen */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  line-height: 1.25;
}

.chat-main__header-actions {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  flex-shrink: 0;
}

.chat-main__presence {
  flex-shrink: 0;
  max-width: 45%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--font-size-sm);
  color: var(--text-muted);
}

.chat-members-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  border: 1px solid var(--border);
  border-radius: var(--radius-full);
  background: var(--bg);
  color: var(--text-muted);
  padding: 0.2rem 0.55rem;
  font-size: var(--font-size-sm);
  cursor: pointer;
  transition: var(--transition-fast);
}

.chat-members-btn:hover,
.chat-members-btn[aria-expanded="true"] {
  color: var(--text);
  border-color: var(--accent);
  background: var(--bg-elevated);
}

.chat-members-btn__count {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}

.chat-members-overlay {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: none;
  align-items: flex-end;
  justify-content: center;
}

.chat-members-overlay[aria-hidden="false"],
.chat-members-overlay.open {
  display: flex;
}

.chat-members-overlay__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
}

.chat-members-panel {
  position: relative;
  z-index: 1;
  width: min(100%, 420px);
  max-height: min(70vh, 520px);
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  box-shadow: var(--shadow-lg);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.chat-members-panel__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  padding: var(--space-md) var(--space-lg);
  border-bottom: 1px solid var(--border);
}

.chat-members-panel__header h2 {
  margin: 0;
  font-size: var(--font-size-lg);
  color: var(--text);
  padding: 0;
  border: 0;
  border-image: none;
}

.chat-members-panel__summary {
  margin: 0;
  padding: var(--space-sm) var(--space-lg) 0;
}

.chat-members-panel__list {
  overflow-y: auto;
  padding: var(--space-sm) var(--space-md) var(--space-lg);
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.chat-members-panel__item {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: var(--space-md);
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  min-height: 0;
  margin: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--bg);
  color: var(--text);
  padding: var(--space-sm) var(--space-md);
  text-align: left;
  cursor: pointer;
  transition: var(--transition-fast);
  font-family: inherit;
  font-size: var(--font-size-sm);
  font-weight: 400;
  line-height: 1.25;
  overflow: visible;
  transform: none;
  box-shadow: none;
  filter: none;
}

.chat-members-panel__avatar {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.chat-members-panel__avatar .avatar {
  width: 32px !important;
  height: 32px !important;
  font-size: 12px !important;
}

.chat-members-panel__item:hover:not(:disabled) {
  border-color: var(--border-strong);
  background: var(--bg-elevated);
  transform: none;
  box-shadow: none;
  filter: none;
}

.chat-members-panel__item--self {
  opacity: 0.75;
  cursor: default;
}

.chat-members-panel__item:disabled {
  background: var(--bg);
  border-color: var(--border);
}

.chat-members-panel__item:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.chat-members-panel__meta {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  min-width: 0;
  flex: 1;
}

.chat-members-panel__name {
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--font-size-sm);
}

.chat-members-panel__status {
  font-size: var(--font-size-xs);
  font-weight: 400;
  color: var(--text-muted);
}

.chat-members-panel__empty {
  margin: var(--space-md);
  text-align: center;
}

@media (min-width: 768px) {
  .chat-members-overlay {
    align-items: flex-start;
    justify-content: flex-end;
    padding: calc(var(--header-height, 56px) + var(--space-md)) var(--space-lg) var(--space-lg);
  }

  .chat-members-panel {
    width: min(360px, 100%);
    max-height: min(60vh, 480px);
    border-radius: var(--radius-lg);
  }
}

.chat-main__header h3 {
  margin: 0;
  color: var(--text);
}

.chat-main__back {
  display: none;
  background: transparent;
  border: none;
  color: var(--text);
  font-size: var(--font-size-base);
  cursor: pointer;
  padding: var(--space-xs);
}

/* ==========================================================================
   CHAT SINGLE (Compact Widget für Job-/Team-Detail)
   ========================================================================== */

.chat-single {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg-elevated);
  display: flex;
  flex-direction: column;
  min-height: 280px;
  /* Feste Maximalhöhe: sonst wächst die Nachrichtenliste mit dem Inhalt.
     Dann greift overscroll-behavior:contain auf .chat-messages und blockiert
     den Seiten-Scroll – Touch funktioniert nur noch am Rand außerhalb der Liste. */
  max-height: min(60vh, 520px);
  overflow: hidden;
}

.chat-single__header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: var(--space-md) var(--space-lg);
  border-bottom: 1px solid var(--border);
  gap: var(--space-md);
  flex-shrink: 0;
}

.chat-single__header-main {
  flex: 1;
  min-width: 0;
}

.chat-single__title-row {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

.chat-single__title {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-single__header-actions {
  display: flex;
  align-items: center;
  flex-shrink: 0;
}

.chat-single__header h3 {
  margin: 0;
  color: var(--text);
}

.chat-single__refresh {
  border: none;
  background: transparent;
  color: var(--text);
  cursor: pointer;
  font-size: var(--font-size-lg);
  transition: var(--transition-fast);
}

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

.chat-single__messages {
  flex: 1 1 auto;
  /* min-height:0 ist Pflicht in Flex-Spalten, damit overflow-y greift */
  min-height: 0;
}

.chat-single__input {
  /* Nutzt .chat-input Styles */
  flex-shrink: 0;
}
/* ==========================================================================
   CHAT SIDEBAR
   ========================================================================== */

.chat-sidebar {
  width: 280px;
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  background: var(--bg-elevated);
  flex-shrink: 0;
  overflow: hidden;
  min-height: 0;
}

.chat-sidebar__header {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  padding: var(--space-md);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
  z-index: 10;
  background: var(--bg-elevated);
}

/* Scrollbarer Bereich für Kanal- und Direktlisten */
.chat-sidebar__scroll {
  flex: 1 1 0;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  touch-action: pan-y;
  scrollbar-width: thin;
  /* Letzte Kanäle nicht hinter App- oder System-Navigation */
  padding-bottom: calc(var(--space-lg) + var(--chat-safe-bottom, 0px));
  box-sizing: border-box;
}

.chat-sidebar__scroll::-webkit-scrollbar {
  width: 6px;
}

.chat-sidebar__scroll::-webkit-scrollbar-track {
  background: transparent;
}

.chat-sidebar__scroll::-webkit-scrollbar-thumb {
  background: var(--border-strong);
  border-radius: 3px;
}

.chat-sidebar__actions {
  display: inline-flex;
  gap: var(--space-sm);
}

.chat-sidebar__actions button {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--text);
  font-size: 1rem;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: var(--transition-fast);
}

.chat-sidebar__actions button:hover {
  background: var(--border-strong);
  color: var(--text);
}

.chat-notify-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border: 1px solid var(--border);
  border-radius: 50%;
  background: transparent;
  color: var(--text);
  font-size: 1rem;
  cursor: pointer;
  transition: var(--transition-fast);
  flex-shrink: 0;
}

.chat-notify-toggle:hover,
.chat-notify-toggle:focus-visible {
  background: var(--border-strong);
  color: var(--text);
}

.chat-notify-toggle--off {
  color: var(--text-muted);
  opacity: 0.75;
}

.chat-notify-toggle--channel {
  width: auto;
  min-width: 34px;
  padding: 0 0.55rem;
  border-radius: var(--radius-full);
}

.chat-channel-item--muted {
  opacity: 0.85;
}

.chat-channel-item__mute-icon {
  flex-shrink: 0;
  font-size: 0.7rem;
  color: var(--text-muted);
  opacity: 0.8;
}

/* --- Kanal-Sektionen --- */

.chat-channel-section {
  padding: var(--space-md);
}

.chat-channel-section__title {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  margin-bottom: var(--space-sm);
  font-weight: var(--font-weight-semibold);
}

/* --- Kanalliste --- */

.chat-channel-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.chat-channel-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: background var(--transition-fast);
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
  position: relative;
}

.chat-channel-item:hover {
  background: var(--bg-overlay);
  color: var(--text);
}

.chat-channel-item.active {
  background: var(--primary-light);
  color: var(--primary);
  font-weight: var(--font-weight-semibold);
}

.chat-channel-item__main {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  flex: 1;
  min-width: 0;
}

.chat-channel-item__icon {
  flex-shrink: 0;
  width: 20px;
  text-align: center;
  font-size: 0.85rem;
}

.chat-channel-item__avatar {
  flex-shrink: 0;
}

.chat-channel-item__title {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-channel-item__badge:empty {
  display: none;
}

.chat-channel-item__badge {
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 9px;
  background: var(--primary);
  color: #fff;
  font-size: var(--font-size-2xs);
  font-weight: var(--font-weight-bold);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

/* --- Tabs (Kanäle / Direkt) --- */

.chat-sidebar__tabs {
  display: flex;
  border-bottom: 1px solid var(--border);
}

.chat-sidebar__tab {
  flex: 1;
  padding: var(--space-sm);
  text-align: center;
  font-size: var(--font-size-sm);
  color: var(--text-muted);
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  transition: var(--transition-fast);
}

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

.chat-sidebar__tab.active {
  color: var(--primary);
  border-bottom-color: var(--primary);
  font-weight: var(--font-weight-semibold);
}/* ==========================================================================
   CHAT MESSAGES
   ========================================================================== */

.chat-messages {
  overflow-y: auto;
  overflow-x: hidden;
  padding: var(--space-lg);
  padding-bottom: var(--space-lg);
  display: flex;
  flex-direction: column;
  /* kein justify-content: flex-end – bricht Touch-Scroll auf Mobile (WebKit) */
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  touch-action: pan-y;
  scrollbar-width: thin;
  min-height: 0;
  min-width: 0;
  max-width: 100%;
  grid-row: 2;
}

.chat-messages::-webkit-scrollbar {
  width: 6px;
}

.chat-messages::-webkit-scrollbar-track {
  background: transparent;
}

.chat-messages::-webkit-scrollbar-thumb {
  background: var(--border-strong);
  border-radius: 3px;
}

/* --- Nachricht --- */

.chat-message {
  display: flex;
  gap: var(--space-sm);
  padding: var(--space-sm) 0;
  position: relative;
}

.chat-message:hover {
  background: var(--bg-elevated);
  border-radius: var(--radius-sm);
}

.chat-message__avatar {
  flex-shrink: 0;
}

.chat-message__content {
  flex: 1;
  min-width: 0;
}

.chat-message__meta {
  display: flex;
  gap: var(--space-sm);
  align-items: baseline;
  margin-bottom: var(--space-2xs);
}

.chat-message__meta strong {
  color: var(--text);
  font-size: var(--font-size-sm);
}

.chat-message__meta span {
  color: var(--text-muted);
  font-size: var(--font-size-xs);
}

.chat-message__body {
  color: var(--text-secondary);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  word-break: break-word;
  overflow-wrap: anywhere;
  white-space: pre-wrap;
  max-width: 100%;
}

.chat-message.is-deleted .chat-message__body {
  font-style: italic;
  color: var(--text-muted);
}

.chat-message__delete {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: none;
  background: transparent;
  color: var(--text-muted);
  font-size: 0.75rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity var(--transition-fast), background var(--transition-fast);
}

.chat-message:hover .chat-message__delete {
  opacity: 1;
}

.chat-message__delete:hover {
  background: var(--error-light);
  color: var(--error);
}

/* --- Reaktionen --- */

.chat-message__reactions-wrap {
  margin-top: var(--space-2xs);
}

.chat-message__reactions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2xs);
  align-items: center;
  position: relative;
}

.chat-reaction-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: 999px;
  border: 1px solid var(--border-subtle);
  background: var(--bg-elevated);
  color: var(--text-secondary);
  font-size: var(--font-size-xs);
  cursor: pointer;
  transition: background var(--transition-fast), border-color var(--transition-fast);
}

.chat-reaction-chip:hover {
  background: var(--bg-muted);
}

.chat-reaction-chip.is-active {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 12%, transparent);
}

.chat-reaction-chip__emoji {
  font-size: 1rem;
  line-height: 1;
}

.chat-reaction-chip__count {
  font-size: var(--font-size-xs);
  font-weight: 600;
}

.chat-reaction-add {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1px dashed var(--border-subtle);
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity var(--transition-fast), background var(--transition-fast);
}

.chat-message:hover .chat-reaction-add,
.chat-message__reactions:not(:empty) .chat-reaction-add {
  opacity: 1;
}

.chat-reaction-add:hover {
  background: var(--bg-muted);
  color: var(--text);
}

.chat-reaction-picker {
  position: absolute;
  bottom: calc(100% + 4px);
  left: 0;
  z-index: 20;
  display: flex;
  flex-wrap: wrap;
  gap: 2px;
  padding: var(--space-xs);
  background: var(--bg-elevated);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  max-width: 300px;
  max-height: 220px;
  overflow-y: auto;
}

.chat-reaction-picker.hidden {
  display: none;
}

.chat-reaction-picker__item {
  width: 32px;
  height: 32px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  font-size: 1.25rem;
  cursor: pointer;
  line-height: 1;
}

.chat-reaction-picker__item:hover {
  background: var(--bg-muted);
}

@media (hover: none) {
  .chat-reaction-add {
    opacity: 1;
  }
}

/* --- Loader --- */

.chat-loader {
  text-align: center;
  padding: var(--space-md);
  color: var(--text-muted);
  font-size: var(--font-size-sm);
}

/* --- Datumstrenner --- */

.chat-date-separator {
  text-align: center;
  color: var(--text-muted);
  font-size: var(--font-size-xs);
  padding: var(--space-md) 0;
  position: relative;
}

.chat-date-separator::before,
.chat-date-separator::after {
  content: '';
  position: absolute;
  top: 50%;
  width: 30%;
  height: 1px;
  background: var(--border);
}

.chat-date-separator::before {
  left: 0;
}

.chat-date-separator::after {
  right: 0;
}

/* --- Deaktiviert-Hinweis --- */

.chat-disabled-notice {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-lg);
  padding: var(--space-4xl);
  color: var(--text-muted);
  font-size: var(--font-size-lg);
}

.chat-disabled-notice i {
  font-size: 2.5rem;
  opacity: 0.5;
}

/* --- Gesperrt-Hinweis --- */

.chat-locked-notice {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-sm) var(--space-lg);
  background: var(--warning-bg);
  color: var(--warning);
  font-size: var(--font-size-sm);
  border-top: 1px solid var(--border);
}/* ==========================================================================
   CHAT INPUT (REWRITE)
   ========================================================================== */

.chat-input {
  display: flex;
  align-items: flex-end;
  gap: var(--space-sm);
  padding: var(--space-md);
  border-top: 1px solid var(--border);
  background: var(--bg-elevated);
  position: relative;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  flex-shrink: 0;
  overflow: visible; /* Wichtig für Popups */
  grid-row: 4;
}

/* Container für linke Buttons (Kamera, Emoji) */
.chat-input__left-actions {
  display: flex;
  gap: var(--space-xs);
  flex-shrink: 0;
  align-items: center;
}

.chat-input textarea {
  flex: 1;
  min-width: 0; /* Erlaubt das Schrumpfen in Flexbox */
  height: 42px;
  max-height: 120px;
  resize: none;
  padding: var(--space-sm) var(--space-md);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text);
  font-family: inherit;
  font-size: var(--font-size-base);
  line-height: 1.4;
  transition: border-color var(--transition-fast);
  box-sizing: border-box;
}

.chat-input textarea:focus {
  border-color: var(--primary);
  outline: none;
}

/* Einheitliche Styles für kreisförmige Buttons */
.chat-input__attach-wrap,
.chat-input__emoji-btn,
.chat-input__submit {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all var(--transition-fast);
  flex-shrink: 0;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--text-muted);
  padding: 0;
  box-sizing: border-box;
}

.chat-input__submit {
  background: var(--primary);
  color: #fff;
  border: none;
}

.chat-input__submit:hover {
  transform: scale(1.05);
  background: var(--primary-hover);
}

.chat-input__attach-wrap:hover,
.chat-input__emoji-btn:hover {
  border-color: var(--primary);
  color: var(--primary);
  background: var(--bg-hover);
}

.chat-input__attach-wrap {
  position: relative;
  overflow: visible;
}

.chat-input__attach-btn {
  width: 100%;
  height: 100%;
  border: none;
  background: transparent;
  color: inherit;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border-radius: 50%;
}

.chat-input__attach-wrap input[type="file"] {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

/* Auswahl: Kamera vs. Galerie (Smartphone braucht capture-Input) */
.chat-attach-menu {
  position: absolute;
  bottom: calc(100% + 8px);
  left: 0;
  min-width: 180px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: 4px;
  z-index: var(--z-dropdown);
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.chat-attach-menu.hidden {
  display: none;
}

.chat-attach-menu__item {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  width: 100%;
  border: none;
  background: transparent;
  color: var(--text);
  padding: 10px 12px;
  border-radius: var(--radius-sm);
  cursor: pointer;
  font-size: var(--font-size-sm);
  text-align: left;
}

.chat-attach-menu__item:hover,
.chat-attach-menu__item:focus-visible {
  background: var(--bg-hover);
  color: var(--primary);
  outline: none;
}

.chat-attach-menu__item i {
  width: 1.1em;
  text-align: center;
  color: var(--text-muted);
}

.chat-input__attach-wrap.disabled {
  opacity: 0.5;
  pointer-events: none;
}

/* Attachment Preview */
.chat-attachment-preview {
  display: flex;
  gap: var(--space-sm);
  padding: var(--space-sm) var(--space-md);
  background: var(--bg-elevated);
  border-top: 1px solid var(--border);
  overflow-x: auto;
  width: 100%;
  box-sizing: border-box;
  grid-row: 3;
}

.chat-attachment-preview.hidden {
  display: none;
}

.chat-attachment-item {
  width: 60px;
  height: 60px;
  border-radius: var(--radius-sm);
  position: relative;
  border: 1px solid var(--border);
  flex-shrink: 0;
}

.chat-attachment-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
}

.chat-attachment-item__remove {
  position: absolute;
  top: -6px;
  right: -6px;
  width: 18px;
  height: 18px;
  background: var(--danger);
  color: #fff;
  border: none;
  border-radius: 50%;
  font-size: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: var(--shadow-sm);
}

.chat-message__attachments {
  margin-top: var(--space-sm);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm);
}

.chat-message__attachment {
  max-width: 300px;
  max-height: 400px;
  border-radius: var(--radius-md);
  overflow: hidden;
  border: 1px solid var(--border);
  cursor: pointer;
}

.chat-message__attachment img {
  display: block;
  max-width: 100%;
  height: auto;
  transition: var(--transition-base);
}

.chat-message__attachment:hover img {
  transform: scale(1.02);
}

/* ==========================================================================
   CHAT EMOJI PICKER (REWRITE)
   ========================================================================== */

.chat-emoji-picker {
  position: absolute;
  bottom: calc(100% + 12px);
  right: var(--space-md);
  width: 300px;
  max-height: 300px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  padding: var(--space-sm);
  z-index: var(--z-dropdown);
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 4px;
  overflow-y: auto;
  backdrop-filter: blur(12px);
  animation: emojiPop 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.chat-emoji-picker.hidden {
  display: none;
}

.chat-emoji-item {
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  cursor: pointer;
  border-radius: var(--radius-sm);
  transition: transform 0.1s ease;
}

.chat-emoji-item:hover {
  background: rgba(255, 255, 255, 0.1);
  transform: scale(1.2);
}

.chat-emoji-item--custom img,
.chat-reaction-picker__item.chat-emoji-item--custom img {
  width: 1.35rem;
  height: 1.35rem;
  object-fit: contain;
  display: block;
}

.chat-custom-emoji,
.chat-reaction-chip__img {
  width: 1.25rem;
  height: 1.25rem;
  object-fit: contain;
  vertical-align: middle;
  display: inline-block;
}

.chat-reaction-picker__item.chat-emoji-item--custom {
  padding: 2px;
}

@keyframes emojiPop {
  from { opacity: 0; transform: translateY(10px) scale(0.9); }
  to { opacity: 1; transform: none; }
}

/* ==========================================================================
   MOBILE RESPONSIVE – Master/Detail (Kanalliste ↔ Chat)
   ========================================================================== */

@media (max-width: 900px) {
  /* Fallback, wenn safe-area noch 0 ist (ältere Android-WebViews) */
  body.chat-app.app {
    --chat-safe-bottom: max(env(safe-area-inset-bottom, 0px), 28px);
    /* ~28px System + ~20px = Icons vollständig über Gestenleiste */
    --chat-input-bottom: calc(var(--chat-safe-bottom) + var(--space-xl));
  }

  .chat-widget:not(.chat-widget--single) {
    flex-direction: column;
    flex: 1;
    min-height: 0;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
  }

  /* Standard: nur Kanalliste */
  .chat-widget:not(.chat-widget--single) .chat-sidebar {
    width: 100%;
    max-width: 100%;
    flex: 1 1 0;
    min-height: 0;
    border-right: none;
    border-bottom: none;
  }

  .chat-widget:not(.chat-widget--single) .chat-sidebar__scroll {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: calc(var(--space-xl) + var(--chat-safe-bottom, 16px));
  }

  .chat-widget:not(.chat-widget--single) .chat-main {
    display: none;
    width: 100%;
    max-width: 100%;
    flex: 1;
    min-height: 0;
    min-width: 0;
  }

  .chat-widget:not(.chat-widget--single) .chat-main__back {
    display: inline-flex;
    align-items: center;
  }

  /* Detail-Ansicht: nur Chat */
  .chat-widget:not(.chat-widget--single).chat-widget--detail .chat-sidebar {
    display: none;
  }

  .chat-widget:not(.chat-widget--single).chat-widget--detail .chat-main {
    display: grid;
    flex: 1;
    min-height: 0;
  }
}

@media (max-width: 768px) {
  .chat-app .chat-page {
    padding: 0;
  }

  .chat-messages {
    padding: var(--space-md);
    padding-bottom: calc(var(--space-md) + var(--chat-safe-bottom, 0px));
  }

  body.chat-app .chat-input {
    padding: var(--space-sm) var(--space-sm);
    padding-bottom: var(--chat-input-bottom, calc(var(--space-md) + var(--chat-safe-bottom, 0px)));
    gap: var(--space-xs);
    overflow: hidden; /* Chrome Overflow Fix */
  }

  .chat-input__left-actions {
    flex-direction: column;
    gap: 4px;
  }

  .chat-input__attach-wrap,
  .chat-input__emoji-btn {
    width: 36px;
    height: 36px;
    font-size: var(--font-size-sm);
  }
  
  .chat-input__submit {
    width: 38px;
    height: 38px;
    background: transparent;
    color: var(--primary);
    border: 1px solid var(--primary-light);
    box-shadow: none;
  }

  .chat-input textarea {
    padding: var(--space-xs) var(--space-sm);
    font-size: 1rem; /* Besser für iOS Auto-Zoom */
    min-width: 0;
  }
}

/* ==========================================================================
   MOBILE OPTIMIZATIONS (REWRITE)
   ========================================================================== */

@media (max-width: 600px) {
  /* Chat App Root Fixes – Sidebar-Scroll nicht blockieren */
  .chat-app, .chat-page, .chat-widget, .chat-main {
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
  }

  .chat-sidebar__scroll {
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch !important;
    touch-action: pan-y !important;
  }

  .chat-messages {
    padding: var(--space-md);
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    touch-action: pan-y !important;
  }

  /* Lange Kanaltitel: max. 2 Zeilen, kein Aufblasen der Chat-Breite */
  .chat-main__header {
    min-width: 0 !important;
    max-width: 100% !important;
    overflow: hidden !important;
  }

  .chat-main__title {
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 2 !important;
    line-clamp: 2 !important;
    white-space: normal !important;
    overflow: hidden !important;
    overflow-wrap: anywhere !important;
    word-break: break-word !important;
  }

  /* Input Rewrite for Mobile – Safe-Area-Padding nur in der Vollbild-Chat-App */
  .chat-input,
  .chat-single__input {
    padding: var(--space-sm) var(--space-sm) !important;
    gap: var(--space-xs) !important;
    align-items: center !important;
    width: 100% !important;
    box-sizing: border-box !important;
    overflow: visible !important;
  }

  body.chat-app .chat-input {
    padding-bottom: var(--chat-input-bottom, calc(var(--space-lg) + var(--chat-safe-bottom, 28px))) !important;
  }

  /* Eingebetteter Chat (Aufgabe/Team/Infobude): kompakter, interner Scroll */
  .chat-single {
    max-height: min(55vh, 440px);
  }

  .chat-input__left-actions {
    flex-direction: row !important;
    gap: 8px !important;
  }

  .chat-input__attach-wrap,
  .chat-input__emoji-btn {
    width: 36px !important;
    height: 36px !important;
    font-size: 0.9rem !important;
  }

  .chat-input textarea {
    height: 40px !important;
    padding: var(--space-sm) var(--space-md) !important;
    font-size: var(--font-size-lg) !important; /* Verhindert Zoom auf iOS */
    border-radius: 20px !important;
    flex: 1 !important;
  }

  .chat-input__submit {
    width: 40px !important;
    height: 40px !important;
    background: transparent !important;
    color: var(--primary) !important;
    border: 1px solid var(--primary-light) !important;
  }

  /* Emoji Picker as Drawer on Mobile */
  .chat-emoji-picker {
    position: fixed !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    max-height: 45vh !important;
    border-radius: var(--radius-lg) var(--radius-lg) 0 0 !important;
    grid-template-columns: repeat(7, 1fr) !important;
    padding: var(--space-md) !important;
    padding-bottom: var(--chat-input-bottom, calc(env(safe-area-inset-bottom, 0px) + 28px)) !important;
    border: none !important;
    border-top: 1px solid var(--border) !important;
    box-shadow: var(--shadow-lg) !important;
  }

  .chat-emoji-item {
    font-size: 2rem !important;
  }

  /* Foto-Auswahl als Bottom-Sheet (Kamera vs. Galerie) */
  .chat-attach-menu {
    position: fixed !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
    min-width: 0 !important;
    width: 100% !important;
    border-radius: var(--radius-lg) var(--radius-lg) 0 0 !important;
    padding: var(--space-sm) !important;
    padding-bottom: var(--chat-input-bottom, calc(env(safe-area-inset-bottom, 0px) + 28px)) !important;
    border: none !important;
    border-top: 1px solid var(--border) !important;
  }

  .chat-attach-menu__item {
    padding: 14px 16px !important;
    font-size: var(--font-size-md) !important;
  }
}/* ==========================================================================
   CHAT DM OVERLAY (Direct Message Modal)
   ========================================================================== */

.chat-dm-overlay {
  position: fixed;
  inset: 0;
  display: none;
  align-items: center;
  justify-content: center;
  z-index: var(--z-modal);
}

.chat-dm-overlay[aria-hidden="false"],
.chat-dm-overlay.open {
  display: flex;
}

.chat-dm-overlay__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.7);
  backdrop-filter: blur(4px);
}

.chat-dm-overlay__panel {
  position: relative;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  width: min(480px, 94vw);
  padding: var(--space-xl);
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  box-shadow: var(--shadow-lg);
}

.chat-dm-overlay__panel header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-sm);
}

.chat-dm-overlay__panel h3 {
  margin: 0;
  color: var(--text);
}

.chat-dm-overlay__panel [data-overlay-close] {
  font-size: var(--font-size-2xl);
  border-radius: 50%;
  width: 36px;
  height: 36px;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--text);
  cursor: pointer;
  transition: var(--transition-fast);
}

.chat-dm-overlay__panel [data-overlay-close]:hover {
  background: var(--border-strong);
}

.chat-app .shift-user-results {
  max-height: 220px;
  overflow-y: auto;
}

.chat-app .dm-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

/* ==========================================================================
   CHAT LIGHTBOX (Vollbild-Bildansicht)
   ========================================================================== */

.chat-lightbox {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.92);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: var(--z-notification);
  padding: var(--space-xl);
  cursor: zoom-out;
  animation: fadeIn 0.2s ease-out;
}

.chat-lightbox img {
  max-width: 90vw;
  max-height: 90vh;
  width: auto;
  height: auto;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  cursor: default;
}

.chat-lightbox__close {
  position: absolute;
  top: var(--space-lg);
  right: var(--space-lg);
  background: rgba(0,0,0,0.5);
  border: 1px solid rgba(255,255,255,0.2);
  color: white;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  font-size: var(--font-size-xl);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--transition-fast);
}

.chat-lightbox__close:hover {
  background: rgba(255,255,255,0.1);
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}


/* == inlined: 06-components/_infobude-kiosk.css == */
/* Infobude-Kiosk – Vollbild-Stand-Ansicht für die physische Infobude */

body.kiosk-stand {
  overflow: hidden;
}

body.kiosk-stand .bottom-nav {
  display: none;
}

.kiosk-stand .app-header {
  grid-template-columns: auto 1fr auto;
  gap: 12px;
}

.kiosk-stand .burger-btn {
  display: none;
}

.kiosk-stand__event {
  font-size: 0.85rem;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.kiosk-stand__status {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.75rem;
  color: var(--text-muted);
}

.kiosk-stand__status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--text-muted);
}

.kiosk-stand__status-dot.is-online {
  background: #22c55e;
  box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.25);
}

.kiosk-stand__status-dot.is-offline {
  background: #ef4444;
}

.kiosk-page {
  height: calc(100vh - var(--header-height, 56px));
  display: grid;
  grid-template-columns: minmax(280px, 340px) 1fr;
  overflow: hidden;
}

@media (max-width: 800px) {
  .kiosk-page {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(180px, 35vh) 1fr;
  }
}

.kiosk-login {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg);
  padding: 24px;
}

.kiosk-login__card {
  width: min(420px, 100%);
  padding: 28px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-lg, 12px);
  background: var(--bg-elevated);
  box-shadow: var(--shadow-lg, 0 12px 40px rgba(0, 0, 0, 0.2));
}

.kiosk-login__card h1 {
  margin: 0 0 8px;
  font-size: 1.35rem;
}

.kiosk-login__card p {
  margin: 0 0 20px;
  color: var(--text-muted);
  font-size: 0.9rem;
}

.kiosk-login__card input {
  width: 100%;
  margin-bottom: 12px;
}

.kiosk-login__error {
  color: var(--danger, #ef4444);
  font-size: 0.85rem;
  margin-bottom: 12px;
  min-height: 1.2em;
}

.kiosk-flash {
  pointer-events: none;
  position: fixed;
  inset: 0;
  z-index: 90;
  background: rgba(59, 130, 246, 0.18);
  opacity: 0;
  transition: opacity 0.15s ease;
}

.kiosk-flash.is-active {
  opacity: 1;
}

.kiosk-thread.is-pulse {
  animation: kiosk-pulse 1.2s ease 2;
}

@keyframes kiosk-pulse {
  0%, 100% { background: var(--primary-light); }
  50% { background: rgba(59, 130, 246, 0.35); }
}

.kiosk-error {
  padding: 24px;
  text-align: center;
  color: var(--text-muted);
}


/* == inlined: 06-components/_defect-reports-kiosk.css == */
/* Mängelmelder-Kiosk – Karten-First mit Seitenliste und Detail-Overlay */

body.kiosk-stand {
  margin: 0;
  overflow: hidden;
}

.kiosk-login {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 24px;
}

.kiosk-login__card {
  max-width: 400px;
  width: 100%;
  background: var(--bg-elevated);
  border: 1px solid var(--border-strong);
  border-radius: 12px;
  padding: 24px;
}

.kiosk-login__error {
  color: #c00;
  margin: 8px 0;
  min-height: 1.2em;
}

.kiosk-flash {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  background: rgba(196, 92, 38, 0.35);
  opacity: 0;
  transition: opacity 0.2s;
}

.kiosk-flash.is-on {
  opacity: 1;
}

.kiosk-stand__bar {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 14px;
  border-bottom: 1px solid var(--border-strong);
  background: var(--bg-elevated);
  position: relative;
  z-index: 20;
}

.kiosk-stand__bar-spacer {
  flex: 1;
}

.kiosk-stand__status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  display: inline-block;
  background: #888;
}

.kiosk-stand__status-dot.is-ok {
  background: #2d6a4f;
}

.kiosk-workspace {
  display: flex;
  flex-direction: column;
  height: calc(100vh - 48px);
  position: relative;
}

.kiosk-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  padding: 8px 14px;
  border-bottom: 1px solid var(--border-strong);
  background: var(--bg);
  z-index: 15;
}

.kiosk-filters label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.85rem;
  color: var(--text-muted);
}

.kiosk-filters select {
  font-size: 0.85rem;
  padding: 4px 8px;
  border-radius: 6px;
  border: 1px solid var(--border-strong);
  background: var(--bg-elevated);
  color: var(--text);
}

.kiosk-filters__count {
  margin-left: auto;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text-muted);
}

.kiosk-filters__count strong {
  color: var(--text);
}

.kiosk-legend {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  font-size: 0.78rem;
  color: var(--text-muted);
}

.kiosk-legend__item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}

.kiosk-legend__dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 2px solid #fff;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25);
  flex-shrink: 0;
}

.kiosk-legend__dot--open {
  background: #c45c26;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.25),
    0 0 0 4px rgba(196, 92, 38, 0.35);
  animation: kiosk-legend-pulse 1.2s ease-in-out infinite;
}

.kiosk-legend__dot--progress {
  background: #2a6f97;
}

.kiosk-legend__dot--urgent {
  background: #9b2226;
}

.kiosk-legend__dot--resolved {
  background: #2d6a4f;
}

@keyframes kiosk-legend-pulse {
  0%,
  100% {
    box-shadow:
      0 0 0 1px rgba(0, 0, 0, 0.25),
      0 0 0 3px rgba(196, 92, 38, 0.35);
  }
  50% {
    box-shadow:
      0 0 0 1px rgba(0, 0, 0, 0.25),
      0 0 0 6px rgba(196, 92, 38, 0.15);
  }
}

.kiosk-map-stage {
  position: relative;
  flex: 1;
  min-height: 0;
}

#kiosk-overview-map {
  width: 100%;
  height: 100%;
}

#kiosk-overview-map.location-map {
  height: 100%;
  border-radius: 0;
  overflow: hidden;
}

#kiosk-overview-map .location-map__canvas {
  height: 100% !important;
  min-height: 100%;
}

.kiosk-list-drawer {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(380px, 92vw);
  background: var(--bg-elevated);
  border-left: 1px solid var(--border-strong);
  box-shadow: -8px 0 24px rgba(0, 0, 0, 0.12);
  display: flex;
  flex-direction: column;
  z-index: 12;
  transform: translateX(105%);
  transition: transform 0.25s ease;
  pointer-events: none;
}

.kiosk-list-drawer.is-open {
  transform: translateX(0);
  pointer-events: auto;
}

.defect-kiosk-list__head {
  padding: 10px 14px;
  border-bottom: 1px solid var(--border-strong);
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--text-muted);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

#kiosk-list {
  overflow-y: auto;
  flex: 1;
}

.defect-kiosk-item {
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  border-left: 3px solid transparent;
}

.defect-kiosk-item:hover {
  background: var(--bg);
}

.defect-kiosk-item.is-active {
  border-left-color: var(--primary);
  background: var(--bg);
}

.defect-kiosk-item.is-new {
  background: var(--primary-light, #fff3e8);
  border-left-color: #c45c26;
  animation: defect-kiosk-pulse-new 1.2s ease infinite;
}

@keyframes defect-kiosk-pulse-new {
  0%,
  100% {
    box-shadow: inset 0 0 0 0 transparent;
  }
  50% {
    box-shadow: inset 0 0 0 2px #c45c26;
  }
}

.defect-kiosk-item__title {
  font-weight: 600;
  margin: 0 0 4px;
}

.defect-kiosk-item__meta {
  font-size: 0.8rem;
  color: var(--text-muted);
  margin: 0;
}

/* Detail-Overlay */
.kiosk-overlay {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: stretch;
  justify-content: flex-end;
}

.kiosk-overlay[hidden] {
  display: none !important;
}

.kiosk-overlay__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  cursor: pointer;
}

.kiosk-overlay__panel {
  position: relative;
  width: min(560px, 100vw);
  max-width: 100%;
  background: var(--bg-elevated);
  border-left: 1px solid var(--border-strong);
  box-shadow: -12px 0 40px rgba(0, 0, 0, 0.25);
  display: flex;
  flex-direction: column;
  z-index: 1;
  animation: defect-kiosk-overlay-in 0.2s ease;
}

@keyframes defect-kiosk-overlay-in {
  from {
    transform: translateX(24px);
    opacity: 0.6;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

.kiosk-overlay__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--border-strong);
  flex-shrink: 0;
}

.kiosk-overlay__head h2 {
  margin: 0;
  font-size: 1.05rem;
  line-height: 1.3;
}

.defect-kiosk-detail {
  overflow-y: auto;
  padding: 16px;
  flex: 1;
}

.defect-kiosk-map {
  height: 200px;
  border-radius: 10px;
  border: 1px solid var(--border-strong);
  margin: 12px 0;
}

.defect-kiosk-images {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 12px 0;
}

.defect-kiosk-images img,
.defect-kiosk-images button.defect-kiosk-images__thumb {
  width: 120px;
  height: 120px;
  object-fit: cover;
  border-radius: 8px;
  padding: 0;
  border: 0;
  cursor: zoom-in;
  background: transparent;
  display: block;
}

.defect-kiosk-images button.defect-kiosk-images__thumb img {
  width: 100%;
  height: 100%;
  border-radius: 8px;
  cursor: zoom-in;
}

.defect-kiosk-images button.defect-kiosk-images__thumb:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

/* Foto-Lightbox */
.defect-lightbox {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
}

.defect-lightbox[hidden] {
  display: none !important;
}

.defect-lightbox__backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  padding: 0;
  margin: 0;
  background: rgba(0, 0, 0, 0.88);
  cursor: pointer;
}

.defect-lightbox__frame {
  position: relative;
  z-index: 1;
  max-width: min(96vw, 1200px);
  max-height: 92vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

.defect-lightbox__img {
  max-width: 90vw;
  max-height: 84vh;
  object-fit: contain;
  border-radius: 8px;
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.5);
  background: #111;
}

.defect-lightbox__close {
  position: absolute;
  top: -40px;
  right: 0;
  z-index: 2;
}

.defect-lightbox__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.35);
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
  font-size: 1.6rem;
  line-height: 1;
  cursor: pointer;
}

.defect-lightbox__nav:hover {
  background: rgba(0, 0, 0, 0.75);
}

.defect-lightbox__nav--prev {
  left: -56px;
}

.defect-lightbox__nav--next {
  right: -56px;
}

.defect-lightbox__counter {
  position: absolute;
  bottom: -36px;
  left: 50%;
  transform: translateX(-50%);
  margin: 0;
  color: rgba(255, 255, 255, 0.85);
  font-size: 0.85rem;
}

@media (max-width: 720px) {
  .defect-lightbox__nav--prev {
    left: 4px;
  }
  .defect-lightbox__nav--next {
    right: 4px;
  }
  .defect-lightbox__close {
    top: 8px;
    right: 8px;
  }
  .defect-lightbox__counter {
    bottom: 8px;
  }
}

.defect-kiosk-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 12px 0;
  align-items: center;
}

.defect-kiosk-chat {
  border: 1px solid var(--border-strong);
  border-radius: 10px;
  overflow: hidden;
  margin-top: 16px;
  min-height: 280px;
}

.badge {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--primary);
  color: #fff;
}

.badge--urgent {
  background: #9b2226;
}

.badge--open {
  background: #c45c26;
}

.badge--in_progress {
  background: #2a6f97;
}

.badge--resolved {
  background: #2d6a4f;
}

.badge--rejected {
  background: #666;
}

.kiosk-list-toggle__badge {
  display: inline-block;
  min-width: 1.4em;
  padding: 0 6px;
  margin-left: 6px;
  border-radius: 999px;
  background: #c45c26;
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1.5;
}

.kiosk-list-toggle__badge:empty,
.kiosk-list-toggle__badge[data-count='0'] {
  display: none;
}

@media (prefers-reduced-motion: reduce) {
  .kiosk-list-drawer,
  .kiosk-overlay__panel,
  .defect-kiosk-item.is-new,
  .kiosk-legend__dot--open {
    transition: none;
    animation: none;
  }
}


/* == inlined: 06-components/_emergency-contacts.css == */
/* Notfallnummern – Helfer-Liste und Admin-Pflege */

.emergency-contacts-page {
  max-width: 32rem;
  padding-bottom: calc(var(--space-xl, 2rem) + env(safe-area-inset-bottom, 0px));
}

.emergency-contacts-lead {
  margin: 0 0 var(--space-md, 1rem);
  line-height: 1.45;
}

.emergency-contacts-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-sm, 0.75rem);
}

.emergency-contact-card {
  display: flex;
  align-items: center;
  gap: var(--space-md, 1rem);
  padding: 1rem 1.1rem;
  min-height: 4.25rem;
  text-decoration: none;
  color: inherit;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md, 0.5rem);
  -webkit-tap-highlight-color: transparent;
  transition: background 0.15s ease, border-color 0.15s ease;
}

.emergency-contact-card:hover,
.emergency-contact-card:focus-visible {
  background: var(--color-surface-elevated, var(--color-surface));
  border-color: var(--color-accent, var(--color-primary));
  outline: none;
}

.emergency-contact-card:active {
  transform: scale(0.99);
}

.emergency-contact-card__icon {
  flex: 0 0 auto;
  width: 2.75rem;
  height: 2.75rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: color-mix(in srgb, var(--color-accent, #2a7) 18%, transparent);
  color: var(--color-accent, var(--color-primary));
  font-size: 1.15rem;
}

.emergency-contact-card__body {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.emergency-contact-card__title {
  font-weight: 650;
  font-size: 1.05rem;
  line-height: 1.25;
}

.emergency-contact-card__phone {
  font-size: 1.05rem;
  letter-spacing: 0.01em;
  color: var(--color-text-muted);
  word-break: break-word;
}

.emergency-contact-card__action {
  flex: 0 0 auto;
  color: var(--color-text-muted);
  opacity: 0.7;
}

/* Admin */
.emergency-admin {
  max-width: 52rem;
}

.emergency-admin-settings {
  margin: 0 0 var(--space-lg, 1.5rem);
  padding: 0.85rem 1rem;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md, 0.5rem);
}

.emergency-admin-settings .checkbox-label {
  font-weight: 600;
}

.emergency-admin-form__row {
  display: grid;
  grid-template-columns: 1.2fr 1fr auto;
  gap: var(--space-md, 1rem);
  align-items: end;
  margin-bottom: var(--space-lg, 1.5rem);
}

.emergency-admin-form__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}

.emergency-admin-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.emergency-admin-list__item {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0.75rem;
  align-items: center;
  padding: 0.85rem 1rem;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md, 0.5rem);
}

.emergency-admin-list__item--inactive {
  opacity: 0.65;
}

.emergency-admin-list__main {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  align-items: baseline;
  min-width: 0;
}

.emergency-admin-list__phone {
  color: var(--color-accent, var(--color-primary));
  text-decoration: none;
  font-variant-numeric: tabular-nums;
}

.emergency-admin-list__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}

@media (max-width: 720px) {
  .emergency-admin-form__row {
    grid-template-columns: 1fr;
  }
}


/* == inlined: 06-components/_wifi-psk.css == */
/* Helfer-WLAN – Zugangsseite & Admin-QR */

.wifi-psk-page {
  max-width: 36rem;
  margin: 0 auto;
  padding: 1.25rem 1rem 3rem;
}

.wifi-psk-lead {
  margin: 0 0 1.25rem;
  line-height: 1.45;
}

.wifi-psk-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  box-shadow: var(--shadow-sm, none);
}

.wifi-psk-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

.wifi-psk-actions .btn-primary,
.wifi-psk-actions .btn-secondary {
  flex: 1 1 12rem;
  text-align: center;
  justify-content: center;
}

.wifi-psk-qr-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
}

.wifi-psk-qr {
  background: #fff;
  padding: 0.75rem;
  border-radius: var(--radius-md);
  display: inline-block;
}

.wifi-psk-qr-hint {
  margin: 0;
  font-size: 0.9rem;
  text-align: center;
}

.wifi-psk-creds {
  display: grid;
  gap: 0.75rem;
}

.wifi-psk-cred-row {
  display: grid;
  grid-template-columns: 6.5rem 1fr auto;
  gap: 0.5rem;
  align-items: center;
}

.wifi-psk-cred-row .label {
  font-weight: 600;
  color: var(--color-text-muted);
  font-size: 0.9rem;
}

.wifi-psk-cred-row .value {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  word-break: break-all;
  font-size: 1.05rem;
}

.wifi-psk-howto {
  margin: 0;
  padding-left: 1.1rem;
  line-height: 1.55;
}

.wifi-psk-howto li + li {
  margin-top: 0.65rem;
}

.wifi-psk-dummy-badge {
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 600;
  padding: 0.15rem 0.5rem;
  border-radius: 999px;
  background: var(--warning-light, #fef3c7);
  color: var(--warning-ink, #92400e);
}

.wifi-psk-msg {
  margin-bottom: 1rem;
}

/* Admin Userverwaltung */
.user-detail-wifi {
  margin-top: 1.25rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: 0.75rem 1rem;
}

.user-detail-wifi > summary {
  cursor: pointer;
  font-weight: 600;
  list-style: none;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  user-select: none;
}

.user-detail-wifi > summary > * {
  pointer-events: none;
}

.user-detail-wifi > summary::-webkit-details-marker {
  display: none;
}

.user-detail-wifi > summary::before {
  content: '▸';
  display: inline-block;
  transition: transform 0.15s ease;
}

.user-detail-wifi[open] > summary::before {
  transform: rotate(90deg);
}

.user-detail-wifi-body {
  margin-top: 0.85rem;
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: flex-start;
}

.user-detail-wifi-qr {
  background: #fff;
  padding: 0.5rem;
  border-radius: var(--radius-sm);
  display: inline-block;
}

.user-detail-wifi-qr.is-clickable {
  cursor: zoom-in;
  border: 1px solid var(--color-border, #ddd);
}

.user-detail-wifi-qr.is-clickable:hover {
  box-shadow: 0 0 0 2px rgba(13, 148, 136, 0.35);
}

.user-detail-wifi-qr.is-clickable:focus-visible {
  outline: 2px solid var(--primary, #0d9488);
  outline-offset: 2px;
}

/* Vollbild-QR zum Vorzeigen an Helfer:innen */
.wifi-qr-lightbox {
  position: fixed;
  inset: 0;
  z-index: 10050;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}

.wifi-qr-lightbox.is-open,
.wifi-qr-lightbox[aria-hidden="false"] {
  display: flex;
}

.wifi-qr-lightbox__backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  padding: 0;
  margin: 0;
  background: #111;
  cursor: pointer;
}

.wifi-qr-lightbox__panel {
  position: relative;
  z-index: 1;
  background: #fff;
  color: #111;
  border-radius: 16px;
  padding: 1.5rem 1.25rem 1.25rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.85rem;
  max-width: min(92vw, 32rem);
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.45);
}

/* Theme-unabhängig dunkel: globales p { color: var(--text-secondary) } wäre auf Weiß unleserlich */
.wifi-qr-lightbox__panel p {
  color: #111;
}

.wifi-qr-lightbox__ssid {
  margin: 0;
  font-size: 1.15rem;
  text-align: center;
}

.wifi-qr-lightbox__ssid strong {
  color: #0a0a0a;
}

.wifi-qr-lightbox__pass {
  margin: 0;
  font-size: 1.05rem;
  text-align: center;
  line-height: 1.35;
}

.wifi-qr-lightbox__passphrase {
  display: inline-block;
  margin-top: 0.25rem;
  color: #0a0a0a;
  font-weight: 700;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 1.25rem;
  word-break: break-all;
}

.wifi-qr-lightbox__code {
  background: #fff;
  padding: 0.5rem;
  line-height: 0;
}

.wifi-qr-lightbox__code img,
.wifi-qr-lightbox__code canvas {
  display: block;
  max-width: 100%;
  height: auto;
}

.wifi-qr-lightbox__hint {
  margin: 0;
  color: #555;
  font-size: 0.95rem;
}

.wifi-qr-lightbox__close {
  min-width: 8rem;
}

body.wifi-qr-lightbox-open {
  overflow: hidden;
}

.user-detail-wifi-meta {
  flex: 1 1 12rem;
  min-width: 0;
}

.user-detail-wifi-meta code {
  word-break: break-all;
}

@media (max-width: 480px) {
  .wifi-psk-cred-row {
    grid-template-columns: 1fr;
  }

  .wifi-psk-cred-row .btn-secondary {
    justify-self: start;
  }
}


/* == inlined: 06-components/_dashboard.css == */
/**
 * Dashboard - Komplett neu von Grund auf
 */

/* Container */
.dashboard-container {
  max-width: var(--container-max-width-wide);
  margin: 0 auto;
  padding: var(--space-lg);
}

/* Hero */
.dashboard-hero {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-xl);
  margin-bottom: var(--space-xl);
  box-shadow: var(--shadow-sm);
}

.dashboard-hero h1 {
  margin: 0 0 var(--space-xs) 0;
  font-size: var(--font-size-3xl);
  color: var(--text);
}

.dashboard-hero p {
  margin: 0;
  color: var(--text-muted);
}

/* Widgets Grid */
.dashboard-widgets {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
  gap: var(--space-lg);
}

/* Status Banner – Standard: Hinweis (Schichtplanung noch offen), kein Primär-Rot */
.status-banner {
  background: linear-gradient(135deg, var(--bg-elevated), var(--warning-bg));
  border: 2px solid var(--warning);
  border-left-width: 8px; /* Extra Akzent */
  border-radius: var(--radius-lg);
  padding: var(--space-lg);
  margin-bottom: var(--space-xl);
  box-shadow: var(--shadow-md);
  animation: slideDown 0.4s ease-out;
}

.status-banner--complete {
  border-color: var(--success);
  background: linear-gradient(135deg, var(--bg-elevated), var(--success-light));
}

/* Event wird ausgesetzt – sachlich, ohne Alarm-Farben */
.status-banner--paused {
  border-color: var(--info);
  background: linear-gradient(135deg, var(--bg-elevated), var(--info-light));
}

/* Stammdaten-Aktualisierung – freundlicher Hinweis */
.status-banner--profile-refresh {
  border-color: var(--info);
  background: linear-gradient(135deg, var(--bg-elevated), var(--info-light));
}

.status-banner--profile-refresh .status-banner__icon {
  font-size: 2rem;
  filter: none;
  color: var(--info);
}

.status-banner--push-nudge .status-banner__icon {
  font-size: 2rem;
  filter: none;
  color: var(--info);
}

.status-banner__content {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-lg);
}

.status-banner__info {
  display: flex;
  align-items: center;
  gap: var(--space-md);
}

.status-banner__icon {
  font-size: 2.5rem;
  flex-shrink: 0;
  filter: drop-shadow(0 0 8px var(--warning-glow));
}

.status-banner--complete .status-banner__icon {
  filter: drop-shadow(0 0 8px var(--success-glow));
}

.status-banner--paused .status-banner__icon {
  filter: drop-shadow(0 0 8px var(--info-glow));
}

/* Bändchen / Goodies im Status-Banner „fest eingeplant“ */
.status-banner__goodies {
  margin-top: var(--space-md);
  padding-top: var(--space-md);
  border-top: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
}

.status-banner__goodies p {
  margin: 0 0 var(--space-xs);
}

.status-banner__goodies-lead {
  margin-bottom: var(--space-sm) !important;
}

.status-banner__goodies-note {
  opacity: 0.9;
  font-size: var(--font-size-sm);
}

.status-banner__goodies-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm);
  margin: var(--space-sm) 0;
}

.status-banner__goodies-cta.is-selected {
  outline: 2px solid var(--success);
  outline-offset: 2px;
}

.goodies-admin {
  margin-top: var(--space-md);
  padding: var(--space-md);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg-elevated);
}

.goodies-admin__title {
  font-weight: 600;
  margin-bottom: var(--space-sm);
}

.goodies-admin__row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm);
  align-items: flex-end;
  margin-bottom: var(--space-sm);
}

.goodies-admin__row label {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  font-size: var(--font-size-sm);
}

.goodies-admin__meta {
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
  margin: 0;
}

.status-banner__text {
  flex: 1;
  min-width: 0;
}

.status-banner__text strong {
  display: block;
  font-size: var(--font-size-lg);
  margin-bottom: var(--space-xs);
  color: var(--text);
  text-wrap: balance;
}

.status-banner__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
  line-height: 1.55;
  max-width: 42rem;
}

.status-banner__body p {
  margin: 0;
}

.status-banner__highlight {
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
}

.status-banner__body a {
  color: var(--primary);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.status-banner__body a:hover {
  color: var(--primary-hover, var(--primary));
}

.status-banner__body .status-banner__meta {
  margin-top: var(--space-md);
}

.status-banner__thankyou {
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
  line-height: 1.55;
}

.status-banner__thankyou p {
  margin: 0 0 var(--space-sm);
}

.status-banner__thankyou p:last-child {
  margin-bottom: 0;
}

/* PDF-Button: nicht wie Text-Link im Banner färben */
.status-banner__pdf-cta {
  color: var(--button-secondary-text) !important;
  background: var(--button-secondary-bg) !important;
  border: 1px solid var(--border-strong) !important;
}

.status-banner__pdf-cta:hover {
  color: var(--button-secondary-text) !important;
  filter: brightness(0.97);
}

.status-banner--complete .status-banner__pdf-cta {
  background: var(--bg-elevated) !important;
  border-color: var(--success) !important;
  color: var(--text) !important;
}

.status-banner__note {
  padding: var(--space-sm) var(--space-md);
  background: var(--bg-surface, rgba(255, 255, 255, 0.45));
  border-radius: var(--radius-md);
  border-left: 3px solid var(--warning);
}

.status-banner__actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  gap: var(--space-sm);
  flex-shrink: 0;
  min-width: 12.5rem;
  align-self: center;
}

.status-banner__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-xs);
  width: 100%;
  min-height: 2.75rem;
  padding: var(--space-sm) var(--space-lg);
  font-size: var(--font-size-sm);
  font-weight: 600;
  white-space: nowrap;
  text-decoration: none;
  box-shadow: var(--shadow-sm);
}

.status-banner__cta.btn-primary {
  border: none;
}

a.status-banner__cta:hover {
  text-decoration: none;
}

@keyframes slideDown {
  from { opacity: 0; transform: translateY(-10px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 768px) {
  .status-banner__content {
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-md);
  }
  
  .status-banner__info {
    flex-direction: row;
    align-items: flex-start;
    text-align: left;
  }
  
  .status-banner__actions {
    min-width: 0;
    width: 100%;
  }
  
  .status-banner__actions button,
  .status-banner__actions .status-banner__cta {
    flex: 1;
  }
}

/* Widget */
.widget {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-lg);
  display: block;
}

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

/* Widget Header */
.widget-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-md);
  padding-bottom: var(--space-md);
  border-bottom: 1px solid var(--border);
}

.widget-header h2 {
  margin: 0;
  font-size: var(--font-size-lg);
  font-weight: 600;
  color: var(--text);
}

.widget-header-link {
  font-size: var(--font-size-sm);
  color: var(--primary);
  text-decoration: none;
  font-weight: 500;
}

.widget-header-link:hover {
  text-decoration: underline;
}

.widget-badge {
  background: var(--primary);
  color: white;
  padding: 0.25rem 0.75rem;
  border-radius: 999px;
  font-size: var(--font-size-sm);
  font-weight: 700;
}

/* Widget Body */
.widget-body {
  min-height: 120px;
  margin-bottom: var(--space-md);
}

.widget-empty {
  color: var(--text-muted);
  font-size: var(--font-size-sm);
  text-align: center;
  padding: var(--space-xl) 0;
}

.widget-summary {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  padding: var(--space-sm) 0;
}

.summary-group label {
  display: block;
  font-size: var(--font-size-xs);
  font-weight: 700;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: var(--space-xs);
  letter-spacing: 0.05em;
}

.job-pill-container {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.job-pill {
  background: var(--bg);
  border: 1px solid var(--border);
  padding: 4px 10px;
  border-radius: var(--radius-sm);
  font-size: var(--font-size-xs);
  color: var(--text);
}

.widget-divider {
  height: 1px;
  background: var(--border);
  margin: var(--space-xs) 0;
}

.widget-body--scrollable {
  max-height: 450px;
  overflow-y: auto;
  scrollbar-width: thin;
  padding-right: var(--space-xs);
}

.widget-body--scrollable::-webkit-scrollbar {
  width: 6px;
}

.widget-body--scrollable::-webkit-scrollbar-track {
  background: transparent;
}

.widget-body--scrollable::-webkit-scrollbar-thumb {
  background: var(--border);
  border-radius: 3px;
}

.widget-empty-small {
  color: var(--text-muted);
  font-size: var(--font-size-sm);
  font-style: italic;
}

/* Widget Card */
.widget-card {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-md);
  margin-bottom: var(--space-sm);
  position: relative;
}

.widget-card--clickable {
  display: block;
  width: 100%;
  text-align: left;
  cursor: pointer;
  appearance: none;
  font: inherit;
  color: inherit;
}

/* Platz für Absage-Button unten rechts (Schicht-Karten) */
.widget-card--with-action {
  padding-right: calc(var(--space-sm) + 7rem);
  padding-bottom: calc(var(--space-sm) + 2.75rem);
}

.widget-card__cancel {
  position: absolute;
  bottom: var(--space-sm);
  right: var(--space-sm);
  border: 1px solid var(--border-strong);
  background: var(--bg-elevated);
  padding: 4px 12px;
  border-radius: var(--radius-sm);
  font-size: var(--font-size-2xs);
  font-weight: 700;
  color: var(--text-secondary);
  cursor: pointer;
  transition: all var(--transition-fast);
  z-index: 5;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.widget-card__cancel:hover {
  background: var(--error-bg);
  color: var(--error);
  border-color: var(--error);
}

.widget-card.has-bg .widget-card__cancel {
  background: var(--widget-cancel-on-image-bg, rgba(0, 0, 0, 0.5));
  backdrop-filter: blur(4px);
  color: var(--widget-cancel-on-image-fg, #fff);
  border-color: var(--widget-cancel-on-image-border, rgba(255, 255, 255, 0.3));
}

.widget-card.has-bg .widget-card__cancel:hover {
  background: var(--error);
  border-color: var(--error);
  color: #fff;
}

.widget-card--clickable:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.widget-card:last-child {
  margin-bottom: 0;
}

.widget-card:hover {
  border-color: var(--border-strong);
  background: var(--bg-elevated);
}

/* Collapsible Section Support */
.collapsible-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.collapsible-header .toggle-icon {
  transition: transform 0.3s ease;
  font-size: 0.9rem;
  color: var(--text-muted);
}

.is-collapsed > *:not(h2) {
  display: none !important;
}

.is-collapsed {
  min-height: auto !important;
}

.widget-card--job {
  overflow: hidden;
}

.widget-card.has-bg {
  position: relative;
  z-index: 0;
  background-color: var(--bg-elevated);
  overflow: hidden;
  border-color: var(--card-img-border);
}

.widget-card.has-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  filter: var(--card-img-filter, none);
  opacity: var(--card-img-opacity, 1);
  z-index: -2;
  transition: transform 0.3s ease;
}

.widget-card.has-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--card-img-bg-gradient);
  z-index: -1;
}

.widget-card--job.has-bg::before {
  background-image: var(--widget-job-bg);
}

.widget-card--shift.has-bg::before,
.widget-card--continuous.has-bg::before {
  background-image: var(--widget-shift-bg);
}

.widget-card.has-bg:hover::before {
  transform: scale(1.05);
}

.widget-card-badge {
  position: absolute;
  top: 6px;
  right: 6px;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
  background: var(--bg-elevated);
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  pointer-events: none;
  z-index: 1;
}

.widget-card.has-bg .widget-card-badge {
  background: var(--bg-glass);
  color: var(--text);
  border-color: var(--border);
}

.widget-card--job.has-bg h3,
.widget-card--shift.has-bg h3,
.widget-card--continuous.has-bg h3 {
  color: var(--card-img-text-color);
}

.widget-card--job.has-bg p,
.widget-card--shift.has-bg p,
.widget-card--continuous.has-bg p {
  color: var(--card-img-muted-color);
}

.widget-card--job .widget-job-open {
  margin-top: var(--space-sm);
  font-weight: 600;
  color: var(--text);
}

.widget-card--job.has-bg .widget-job-open {
  color: var(--card-img-text-color);
}


.widget-card h3 {
  margin: 0 0 var(--space-xs) 0;
  font-size: var(--font-size-base);
  font-weight: 600;
  color: var(--text);
}

.widget-card p {
  margin: 0 0 var(--space-xs) 0;
  font-size: var(--font-size-sm);
  color: var(--text-muted);
}

.widget-card-action {
  display: block;
  width: 100%;
  margin-top: var(--space-md);
  padding: var(--space-sm) var(--space-md);
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text);
  text-align: center;
  text-decoration: none;
  font-size: var(--font-size-sm);
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s;
}

.widget-card-action:hover {
  background: var(--primary);
  border-color: var(--primary);
  color: white;
}

/* Widget Footer Link */
.widget-footer-link {
  display: block;
  padding: var(--space-sm);
  text-align: center;
  color: var(--primary);
  text-decoration: none;
  font-size: var(--font-size-sm);
  font-weight: 500;
  border-top: 1px solid var(--border);
  margin-top: var(--space-md);
  padding-top: var(--space-md);
}

.widget-footer-link:hover {
  color: var(--primary);
  text-decoration: underline;
}

/* Icon Row */
.widget-icon-row {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  margin-bottom: var(--space-sm);
}

.widget-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-md);
  overflow: hidden;
  flex-shrink: 0;
  background: var(--bg-elevated);
}

.widget-icon img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Crew Avatars */
.widget-crew {
  display: flex;
  gap: 4px;
  margin-top: var(--space-sm);
}

.widget-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--primary-light);
  color: var(--primary);
  border: 2px solid var(--bg);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--font-size-xs);
  font-weight: 600;
  overflow: hidden;
}

.widget-avatar-link {
  display: inline-flex;
  text-decoration: none;
}

.widget-avatar-link:focus-visible .widget-avatar {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.widget-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Badge */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0.25rem 0.5rem;
  border-radius: var(--radius-sm);
  font-size: var(--font-size-xs);
  font-weight: 600;
}

.badge-promoted {
  background: rgba(255, 215, 0, 0.2);
  color: #ffd700;
  border: 1px solid rgba(255, 215, 0, 0.3);
}

.text-success {
  color: #22c55e;
}

/* Modal */
.modal[hidden] {
  display: none;
}

.modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
}

.modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.85);
  cursor: pointer;
}

.modal-content {
  position: relative;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-xl);
  max-width: 500px;
  width: 90%;
  max-height: 80vh;
  overflow-y: auto;
  z-index: 1;
}

.modal-close {
  position: absolute;
  top: var(--space-md);
  right: var(--space-md);
  background: none;
  border: none;
  font-size: var(--font-size-2xl);
  color: var(--text-muted);
  cursor: pointer;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
}

.modal-close:hover {
  background: var(--bg);
  color: var(--text);
}

.modal-content h3 {
  margin: 0 0 var(--space-lg) 0;
  color: var(--text);
}

.modal-content dl {
  margin: 0;
}

.modal-content dt {
  font-weight: 600;
  color: var(--text-muted);
  font-size: var(--font-size-sm);
  text-transform: uppercase;
  margin-top: var(--space-md);
}

.modal-content dd {
  margin: var(--space-xs) 0 0 0;
  color: var(--text);
}

/* Hervorgehobene Karte: Offene Schichten (Dashboard, unter „Meine Schichten“) */
.dashboard-open-shifts-wrap {
  margin-top: var(--space-lg);
  padding-top: var(--space-lg);
  border-top: 2px dashed var(--border-strong);
}

.dashboard-open-shifts-card {
  /* Fallback; SOA-Themes in _theme-soa-dashboard.css */
  --open-shifts-fg: var(--text);
  --open-shifts-teaser: var(--text-secondary);
  --open-shifts-action: var(--accent, var(--link-color));
  --open-shifts-bg: var(--bg-elevated);
  --open-shifts-surface: linear-gradient(
    135deg,
    var(--accent-subtle, rgba(123, 191, 185, 0.12)) 0%,
    transparent 58%
  );
  --open-shifts-accent-bar: var(--cta-gradient, var(--accent));
  --open-shifts-shadow: var(--shadow-md);
  --open-shifts-shadow-hover: var(--shadow-lg);
  --open-shifts-title-shadow: none;
  --open-shifts-icon-shadow: var(--shadow-sm);

  position: relative;
  display: block;
  overflow: hidden;
  border-radius: var(--radius-lg);
  text-decoration: none;
  color: var(--open-shifts-fg);
  border: 1px solid var(--border-strong);
  box-shadow: var(--open-shifts-shadow);
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.dashboard-open-shifts-card:hover {
  transform: translateY(-2px);
  border-color: var(--accent, var(--border-strong));
  box-shadow: var(--open-shifts-shadow-hover);
}

.dashboard-open-shifts-card:focus-visible {
  outline: 2px solid var(--accent, var(--primary));
  outline-offset: 3px;
}

.dashboard-open-shifts-card__bg {
  position: absolute;
  inset: 0;
  background-color: var(--open-shifts-bg);
  pointer-events: none;
}

.dashboard-open-shifts-card__bg::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--open-shifts-surface);
}

.dashboard-open-shifts-card__bg::after {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: var(--open-shifts-accent-bar);
  border-radius: var(--radius-lg) 0 0 var(--radius-lg);
}

.dashboard-open-shifts-card__body {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-xs);
  padding: var(--space-lg);
  text-align: left;
}

.dashboard-open-shifts-card__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  margin-bottom: var(--space-2xs);
  border-radius: 50%;
  background: var(--cta-gradient, var(--primary-gradient));
  color: var(--cta-fg, var(--on-primary, #fff));
  font-size: 1.15rem;
  box-shadow: var(--open-shifts-icon-shadow);
}

.dashboard-open-shifts-card__title {
  font-size: var(--font-size-2xl);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.2;
  text-shadow: var(--open-shifts-title-shadow);
}

.dashboard-open-shifts-card__teaser {
  font-size: var(--font-size-sm);
  line-height: 1.45;
  color: var(--open-shifts-teaser);
  max-width: 26rem;
}

.dashboard-open-shifts-card__action {
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
  margin-top: var(--space-sm);
  font-size: var(--font-size-sm);
  font-weight: 700;
  color: var(--open-shifts-action);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.dashboard-open-shifts-card__action .fa-arrow-right {
  transition: transform 0.2s ease;
}

.dashboard-open-shifts-card:hover .dashboard-open-shifts-card__action .fa-arrow-right {
  transform: translateX(4px);
}

/* Schnellzugriff-Karten auf dem Dashboard (Mängelmelder, WLAN, …) */
.dashboard-defect-wrap,
.dashboard-wifi-wrap {
  margin: 0 0 16px;
}

.dashboard-defect-card,
.dashboard-wifi-card {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 16px;
  border-radius: 12px;
  border: 1px solid var(--border-strong);
  background: var(--bg-elevated);
  text-decoration: none;
  color: inherit;
  transition: border-color 0.15s ease, transform 0.15s ease;
}

.dashboard-defect-card:hover {
  border-color: #c45c26;
}

.dashboard-wifi-card:hover {
  border-color: #0d9488;
}

.dashboard-defect-card:focus-visible,
.dashboard-wifi-card:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.dashboard-defect-card.is-offline-disabled {
  opacity: 0.65;
  cursor: not-allowed;
}

.dashboard-defect-card__icon,
.dashboard-wifi-card__icon {
  flex: 0 0 auto;
  width: 42px;
  height: 42px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.15rem;
}

.dashboard-defect-card__icon {
  background: rgba(196, 92, 38, 0.15);
  color: #c45c26;
}

.dashboard-wifi-card__icon {
  background: rgba(13, 148, 136, 0.15);
  color: #0d9488;
}

.dashboard-defect-card__body,
.dashboard-wifi-card__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.dashboard-defect-card__title,
.dashboard-wifi-card__title {
  font-size: 1.05rem;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.dashboard-defect-card__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.4em;
  padding: 1px 7px;
  border-radius: 999px;
  background: #c45c26;
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
}

.dashboard-defect-card__teaser,
.dashboard-wifi-card__teaser {
  font-size: 0.9rem;
  color: var(--text-muted);
  line-height: 1.4;
}

.dashboard-defect-card__action,
.dashboard-wifi-card__action {
  margin-top: 4px;
  font-size: 0.9rem;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.dashboard-defect-card__action {
  color: #c45c26;
}

.dashboard-wifi-card__action {
  color: #0d9488;
}

.dashboard-defect-card__action .fa-arrow-right,
.dashboard-wifi-card__action .fa-arrow-right {
  transition: transform 0.15s ease;
}

.dashboard-defect-card:hover .dashboard-defect-card__action .fa-arrow-right,
.dashboard-wifi-card:hover .dashboard-wifi-card__action .fa-arrow-right {
  transform: translateX(4px);
}

@media (prefers-reduced-motion: reduce) {
  .dashboard-open-shifts-card,
  .dashboard-open-shifts-card__action .fa-arrow-right {
    transition: none;
  }

  .dashboard-open-shifts-card:hover {
    transform: none;
  }

  .dashboard-open-shifts-card:hover .dashboard-open-shifts-card__action .fa-arrow-right {
    transform: none;
  }
}

/* Responsive */
@media (max-width: 768px) {
  .dashboard-container {
    padding: var(--space-md);
  }

  .dashboard-widgets {
    grid-template-columns: 1fr;
  }

  .dashboard-hero {
    padding: var(--space-md);
    margin-bottom: var(--space-md);
  }

  .widget {
    padding: var(--space-md);
  }
}

/* Skeleton Loader */
@keyframes skeleton-pulse {
  0% { background-color: var(--bg); opacity: 0.6; }
  50% { background-color: var(--bg-elevated); opacity: 1; }
  100% { background-color: var(--bg); opacity: 0.6; }
}

.skeleton {
  animation: skeleton-pulse 1.5s ease-in-out infinite;
  background: var(--bg-elevated);
  border-radius: var(--radius-sm);
  display: block;
}

.skeleton-text {
  height: 1rem;
  margin-bottom: var(--space-xs);
  width: 100%;
}

.skeleton-title {
  height: 1.25rem;
  margin-bottom: var(--space-sm);
  width: 60%;
}

.skeleton-card {
  height: 100px;
  border-radius: var(--radius-md);
  margin-bottom: var(--space-sm);
}


/* == inlined: 06-components/_dispatcher.css == */
/**
 * Dispatcher Components
 *
 * Feature-specific components for dispatcher/scheduling view
 * Refactored from legacy dispatcher.css
 */

:root {
  --multi-hour-height: 32px;
}

/* ==========================================================================
   DISPATCHER LAYOUT
   ========================================================================== */

.dispatcher-layout {
  display: flex;
  gap: var(--space-xl);
  padding: var(--space-lg);
  color: var(--text);
  height: calc(100vh - var(--header-height) - var(--bottom-nav-height));
  max-height: calc(100vh - var(--header-height) - var(--bottom-nav-height));
  overflow: hidden;
  box-sizing: border-box;
}

/* ==========================================================================
   DISPATCHER SIDEBAR
   ========================================================================== */

.dispatcher-sidebar {
  width: 420px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  box-shadow: var(--shadow-md);
  transition: width 0.2s ease, padding 0.2s ease, opacity 0.2s ease;
  flex-shrink: 0;
  overflow: hidden;
}

/* Collapsed sidebar state */
body.sidebar-collapsed .dispatcher-sidebar {
  width: 0;
  padding: 0;
  border: none;
  opacity: 0;
  pointer-events: none;
}

/* Toggle button - always visible */
.sidebar-toggle-btn {
  position: absolute;
  left: var(--space-md);
  top: var(--space-md);
  z-index: 100;
  border: 1px solid var(--border);
  background: linear-gradient(135deg, var(--bg-elevated), var(--bg));
  color: var(--text);
  border-radius: 999px;
  width: 34px;
  height: 34px;
  padding: 0;
  cursor: pointer;
  transition: var(--transition-fast);
}

.sidebar-toggle-btn:hover {
  border-color: var(--primary);
}

/* Adjust button position when sidebar is visible */
body:not(.sidebar-collapsed) .sidebar-toggle-btn {
  left: calc(420px + var(--space-md) + var(--space-lg));
}

.dispatcher-sidebar select {
  width: 100%;
  padding: var(--space-sm);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text);
}

/* ==========================================================================
   SIDEBAR HEADER
   ========================================================================== */

.sidebar-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-sm);
  font-weight: 600;
  color: var(--text);
}

.sidebar-header-left {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

/* ==========================================================================
   SIDEBAR SECTION & JOB LIST
   ========================================================================== */

.sidebar-section {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.job-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  max-height: calc(100vh - 260px);
  overflow-y: auto;
  scrollbar-width: thin;
}

/* ==========================================================================
   JOB CARD
   ========================================================================== */

.job-card {
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 0.75rem 1rem;
  padding-right: 54px;
  cursor: pointer;
  transition: border-color 0.2s, background 0.2s, transform 0.2s, box-shadow 0.2s;
  background: var(--bg-elevated);
  color: var(--text);
  box-shadow: var(--shadow-sm);
  position: relative;
  min-height: auto;
}

.job-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: var(--job-card-bg, none);
  background-size: cover;
  background-position: center;
  filter: var(--card-img-filter, brightness(0.5));
  opacity: var(--job-card-bg-opacity, 0);
  transition: transform var(--transition-slow);
  z-index: 0;
  border-radius: inherit;
  pointer-events: none;
}

.job-card>* {
  position: relative;
  z-index: 1;
}

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

.job-card.active {
  border-color: var(--accent, var(--primary));
  background: var(--accent-subtle, var(--primary-light-12));
  transform: translateX(4px);
}

.job-card.multi-selected {
  border-color: var(--success);
  background: var(--success-bg, rgba(52, 211, 153, 0.18));
}

.job-card .job-card__body {
  gap: 2px;
  overflow: hidden;
}

.job-card h4,
.job-card .job-card__title {
  margin: 0 0 2px 0;
  font-size: 0.95rem;
  line-height: 1.3;
  font-weight: var(--font-weight-medium);
  letter-spacing: normal;
  color: var(--text);
}

.job-card .muted,
.job-card .job-card__section,
.job-card-responsibles {
  font-size: 0.75rem;
  line-height: 1.3;
  color: var(--text-secondary);
  opacity: 1;
}

.job-card.has-bg h4,
.job-card.has-bg .job-card__title {
  color: var(--card-img-text-color, var(--text));
  text-shadow:
    0 1px 0 rgba(255, 255, 255, 0.95),
    0 0 10px rgba(255, 255, 255, 0.75);
}

.job-card.has-bg .muted,
.job-card.has-bg .job-card__section,
.job-card.has-bg .job-card-responsibles {
  color: var(--card-img-muted-color, var(--text-secondary));
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.9);
}

.job-card.multi-selected h4,
.job-card.multi-selected .job-card__title,
.job-card.multi-selected .muted,
.job-card.multi-selected .job-card__section,
.job-card.multi-selected .job-card-responsibles {
  color: var(--text);
}

.job-card small {
  font-size: 0.75rem;
  line-height: 1.3;
  color: var(--text-secondary);
  opacity: 1;
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

.job-card-meta {
  font-size: var(--font-size-sm);
  color: var(--text-muted);
  margin-bottom: var(--space-xs);
}

.job-card-actions {
  position: absolute;
  top: 0.75rem;
  right: 0.5rem;
  display: flex;
  justify-content: flex-end;
  margin-top: 0;
  gap: 2px;
}

.job-card-actions .btn-icon,
.job-card-actions button {
  width: 1.75rem;
  height: 1.75rem;
  min-height: 1.75rem;
  padding: 0;
  font-size: 0.8rem;
}

.job-card-responsibles {
  margin-top: var(--space-xs);
}

.job-card__badges {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  margin-top: var(--space-xs);
}

.job-view-btn {
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--text);
  border-radius: var(--radius-sm);
  padding: 0.2rem 0.5rem;
  font-size: var(--font-size-xs);
  cursor: pointer;
  transition: var(--transition-fast);
}

.job-view-btn:hover {
  border-color: var(--primary);
  color: var(--primary);
}

/* ==========================================================================
   DISPATCHER CONTENT
   ========================================================================== */

.dispatcher-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
  min-width: 0;
  min-height: 0;
}

/* Job-Detail-Bereich wurde entfernt - Kalender nutzt jetzt volle Breite */
.dispatcher-content .job-detail {
  display: none;
}

/* ==========================================================================
   JOB DETAIL PANEL
   ========================================================================== */

.job-detail {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg) var(--space-xl);
  min-height: 160px;
  box-shadow: var(--shadow-md);
}

.job-detail h2 {
  margin-top: 0;
  color: var(--text);
}

#job-detail-container {
  display: flex;
  flex-direction: column;
  gap: var(--space-lg);
}

.job-detail-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-lg);
}

.job-detail-actions {
  display: flex;
  gap: var(--space-sm);
  align-items: center;
}

.job-detail-body {
  display: grid;
  gap: var(--space-lg);
}

#job-detail-container.collapsed .job-detail-body {
  display: none;
}

.detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: var(--space-sm) var(--space-lg);
}

.detail-item {
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.detail-item__label {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 600;
}

.detail-item__value {
  font-size: var(--font-size-md);
  color: var(--text);
}

/* ==========================================================================
   CALENDAR WRAPPER & GRID
   ========================================================================== */

.calendar-wrapper {
  position: relative;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
}

.dispatcher-view-controls {
  display: flex;
  justify-content: flex-start;
  flex-shrink: 0;
  /* Linksbündig */
  margin-bottom: var(--space-md);
  border-bottom: 1px solid var(--border);
  padding-bottom: var(--space-md);
}

.view-toggle-group {
  display: flex;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 4px;
  gap: 4px;
}

.view-toggle-btn {
  background: transparent;
  border: none;
  border-radius: var(--radius-sm);
  padding: 0.4rem 0.85rem;
  color: var(--text-muted);
  font-size: var(--font-size-sm);
  font-weight: 500;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  transition: all 0.2s ease;
}

.view-toggle-btn:hover {
  color: var(--text);
  background: var(--bg-hover, rgba(255, 255, 255, 0.05));
}

.view-toggle-btn.active {
  background: var(--bg-elevated);
  color: var(--accent, var(--primary));
  box-shadow: var(--shadow-sm);
  font-weight: 600;
}

@media (max-width: 600px) {
  .desktop-only {
    display: none;
  }
}


.calendar-grid {
  display: flex;
  gap: var(--space-lg);
  min-height: 520px;
  overflow-x: auto;
  overflow-y: auto;
  /* Spalten nach Inhaltshöhe, nicht auf sichtbare Grid-Höhe stauchen */
  align-items: flex-start;
}

.single-axis-column {
  flex-shrink: 0;
  width: 80px;
  box-sizing: border-box;
  padding: var(--space-sm);
  display: flex;
  flex-direction: column;
}

.single-axis-header {
  text-align: center;
  padding: var(--space-sm);
  font-weight: 600;
  border-bottom: 1px solid transparent;
  margin-bottom: var(--space-sm);
  color: var(--text);
  /* Gleiche Kopfzeilenhöhe wie Tages-Spalten, damit Skala und Schichten bündig starten */
  min-height: 3.875rem;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}

.single-axis-scale {
  position: relative;
  /* Höhe kommt per JS (applyTimeWindowStyles) – flex:1 würde die Achse kürzen */
  flex: none;
}

.calendar-column {
  flex: 1;
  min-width: 120px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: var(--space-sm);
  position: relative;
  background: var(--bg);
  user-select: none;
  display: flex;
  flex-direction: column;
}

.calendar-column__header,
.calendar-column-header {
  text-align: center;
  padding: var(--space-sm);
  font-weight: var(--font-weight-medium);
  border-bottom: 1px solid var(--border);
  margin-bottom: var(--space-sm);
  color: var(--text);
  min-height: 3.875rem;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}

.calendar-column__date {
  font-size: var(--font-size-sm);
  color: var(--text-muted);
  display: block;
  margin-top: 0.25rem;
}

.calendar-column-body {
  position: relative;
  flex: none;
  min-height: 400px;
}

/* ==========================================================================
   MULTI-CALENDAR LAYOUT
   ========================================================================== */

.multi-calendar-wrapper {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

.calendar-wrapper > .multi-calendar-wrapper {
  flex: 1;
  min-height: 0;
}

.multi-calendar-horizontal {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

.multi-calendar-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}

.multi-calendar-header {
  display: grid;
  gap: var(--space-sm);
  border-bottom: 2px solid var(--border);
  padding-bottom: var(--space-sm);
  margin-bottom: var(--space-sm);
  position: sticky;
  top: 0;
  background: var(--bg-elevated);
  z-index: 20;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.multi-axis-header {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: var(--space-md);
  font-weight: var(--font-weight-medium);
  text-align: center;
  color: var(--text);
}

.multi-job-header {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-xs);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: var(--space-sm) var(--space-md);
  font-weight: var(--font-weight-medium);
  color: var(--text);
  cursor: pointer;
  transition: var(--transition-fast);
  min-width: 0;
}

.multi-job-header__title {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: center;
}

.multi-job-header__add {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--bg-elevated);
  color: var(--primary);
  cursor: pointer;
  transition: var(--transition-fast);
}

.multi-job-header__add:hover,
.multi-job-header__add:focus-visible {
  border-color: var(--primary);
  background: var(--primary);
  color: var(--on-primary, #fff);
  outline: none;
  transform: none;
}

.multi-job-header__continuous {
  flex-shrink: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-full);
  background: var(--bg-elevated);
  color: var(--text-muted);
  font-size: var(--font-size-xs);
  padding: 0.15rem 0.55rem;
  cursor: pointer;
  white-space: nowrap;
  transition: var(--transition-fast);
}

.multi-job-header__continuous:hover,
.multi-job-header__continuous:focus-visible {
  border-color: var(--primary);
  color: var(--primary);
  outline: none;
}

.multi-job-header:hover {
  border-color: var(--primary);
  background: var(--bg-elevated);
  transform: translateY(-1px);
}

.multi-job-header:has(.multi-job-header__add:hover),
.multi-job-header:has(.multi-job-header__add:focus-visible) {
  transform: none;
}

.multi-calendar-body {
  display: grid;
  gap: var(--space-sm);
  min-height: 460px;
}

.multi-axis-column {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  position: relative;
}

.axis-day-block {
  position: relative;
  min-height: var(--multi-hour-height);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--bg);
  padding: var(--space-xs) var(--space-sm);
  text-align: center;
}

.axis-day-label {
  position: absolute;
  top: var(--space-xs);
  left: 0;
  right: 0;
  font-size: var(--font-size-xs);
  font-weight: 600;
  color: var(--text);
  line-height: 1.3;
  z-index: 1;
  pointer-events: none;
  text-align: center;
}

.axis-hour-marker {
  position: absolute;
  left: 0;
  right: 0;
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  border-top: 1px dashed var(--border);
  padding-top: 2px;
  white-space: nowrap;
  /* Linie auf exakter Uhrzeit (wie Schicht-Start), nicht zentriert am Label */
  transform: none;
  pointer-events: none;
  text-align: center;
}

.multi-job-column {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  min-width: 200px;
}

.multi-day-block {
  position: relative;
  min-height: var(--multi-hour-height);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--bg);
  cursor: pointer;
  user-select: none;
  transition: var(--transition-fast);
}

.multi-day-block:hover {
  background: var(--bg-elevated);
  border-color: var(--border-strong);
}

.multi-day-block.selecting {
  background: var(--primary-light-05);
  border-color: var(--primary);
}

/* ==========================================================================
   CALENDAR SHIFT BLOCKS
   ========================================================================== */

.shift-block {
  position: absolute;
  left: 4px;
  right: 4px;
  background: var(--primary-light-30);
  border: 1px solid var(--primary);
  border-radius: var(--radius-xs);
  padding: 0.35rem 0.5rem;
  font-size: var(--font-size-xs);
  color: white;
  cursor: pointer;
  transition: var(--transition-fast);
  overflow: hidden;
  z-index: 1;
}

.shift-block .shift-name {
  display: block;
  margin-bottom: 2px;
  font-weight: var(--font-weight-medium);
}

/* Helle Themes: Schichttitel auf Karten lesbar (Einzel- + Multi-Kalender) */
:root[data-theme="soa-light"] .shift-block .shift-name {
  color: #000;
}

@media (prefers-color-scheme: light) {
  :root[data-theme="soa"] .shift-block .shift-name {
    color: #000;
  }
}

.shift-block small {
  display: block;
  opacity: 0.9;
}

.shift-block:hover {
  background: var(--primary-light-50);
  z-index: 40;
  transform: scale(1.01);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.45);
}

.shift-block--multi {
  background: rgba(52, 211, 153, 0.3);
  border-color: #34d399;
}

.shift-block-meta {
  position: absolute;
  left: 0.5rem;
  right: 0.5rem;
  bottom: 0.35rem;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: var(--space-xs);
  z-index: 1;
}

.shift-block-crew {
  font-size: var(--font-size-xs);
  opacity: 0.9;
}

.shift-block-crew-compact {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  padding: 2px var(--space-sm);
  border-radius: var(--radius-lg);
  font-size: 0.78rem;
  line-height: 1.1;
  font-weight: var(--font-weight-medium);
  background: var(--shift-crew-badge-bg, #1a1f2b);
  color: var(--shift-crew-badge-fg, #d1d5db);
  border: 1px solid var(--shift-crew-badge-border, #2f3748);
  white-space: nowrap;
  opacity: 0.85;
  /* Leicht unterschiedlich zu Flag-Badges für visuelle Unterscheidung */
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}

.shift-block-flags {
  display: flex;
  gap: var(--space-xs);
  margin-top: 0;
}

/* Shift staffing states */
.shift-block.shift-empty {
  background: var(--shift-staff-empty-bg, var(--error-light));
  border-color: var(--error);
}

.shift-block.shift-partial {
  background: var(--shift-staff-partial-bg, var(--warning-light-bg));
  border-color: var(--warning);
}

.shift-block.shift-exact {
  background: var(--shift-staff-exact-bg, var(--success-light));
  border-color: var(--success);
}

.shift-block.shift-over {
  background: var(--shift-staff-over-bg, var(--info-light));
  border-color: var(--info);
}

/* Selection preview for creating shifts */
.selection-preview {
  position: absolute;
  left: 4px;
  right: 4px;
  background: rgba(52, 211, 153, 0.2);
  border: 2px dashed #34d399;
  border-radius: var(--radius-xs);
  pointer-events: none;
  z-index: 5;
}

/* Shift drag & drop features */
.shift-resize-handle {
  position: absolute;
  left: 8px;
  right: 8px;
  bottom: 2px;
  height: 8px;
  border-top: 1px solid rgba(255, 255, 255, 0.35);
  cursor: ns-resize;
  opacity: 0;
  transition: opacity 0.2s;
  z-index: 15;
}

.shift-block:hover .shift-resize-handle {
  opacity: 1;
}

.shift-selection-preview {
  position: absolute;
  left: 8px;
  right: 8px;
  border-radius: var(--radius-sm);
  border: 2px dashed rgba(148, 163, 184, 0.8);
  background: rgba(59, 130, 246, 0.15);
  pointer-events: none;
  z-index: 5;
}

.shift-preview-label {
  position: absolute;
  top: 4px;
  left: 8px;
  font-size: var(--font-size-xs);
  color: #f5d9de;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
  font-weight: 600;
}

/* ==========================================================================
   FLOATING SHIFT BUTTON
   ========================================================================== */

.floating-shift-btn {
  position: fixed;
  bottom: 16px;
  left: 50%;
  z-index: 20;
  border: 1px solid var(--border);
  background: linear-gradient(135deg, #c8102e, #a50d26);
  color: #fff;
  border-radius: 999px;
  padding: 0.55rem 1.4rem;
  cursor: pointer;
  font-size: var(--font-size-md);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.45);
  transition: var(--transition-fast);
}

.floating-shift-btn:hover {
  filter: brightness(1.05);
  transform: translateX(-50%) translateY(-2px);
}

/* ==========================================================================
   JOB BULK ACTIONS
   ========================================================================== */

.job-bulk-actions {
  display: flex;
  gap: var(--space-sm);
  padding: var(--space-md);
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  align-items: center;
}

.job-bulk-actions__label {
  font-weight: 600;
  color: var(--text);
  margin-right: var(--space-sm);
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 1200px) {
  .dispatcher-sidebar {
    width: 320px;
  }
}

@media (max-width: 960px) {
  .dispatcher-layout {
    flex-direction: column;
  }

  .dispatcher-sidebar {
    width: 100%;
  }

  .calendar-grid {
    min-height: 400px;
  }
}

@media (max-width: 768px) {
  .dispatcher-layout {
    padding: var(--space-md);
    gap: var(--space-md);
  }

  .calendar-column {
    min-width: 100px;
  }

  .detail-grid {
    grid-template-columns: 1fr;
  }
}

/* ==========================================================================
   DAUERZUORDNUNGEN (All-Day-Band + Overlay)
   ========================================================================== */

.calendar-column-header {
  margin-bottom: 0;
}

.continuous-band {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem;
  min-height: 2.25rem;
  margin: var(--space-xs) 0 var(--space-sm);
  padding: 0.2rem 0.25rem;
  border: 1px dashed var(--border);
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--bg-elevated) 80%, transparent);
  cursor: pointer;
  box-sizing: border-box;
}

.continuous-band:hover,
.continuous-band:focus-visible {
  border-color: var(--primary);
  outline: none;
}

.continuous-band--empty {
  justify-content: center;
}

.continuous-band__empty-hint {
  color: var(--text-muted);
  font-size: var(--font-size-xs);
  line-height: 1;
}

.continuous-band--axis {
  cursor: default;
  border-style: solid;
  border-color: transparent;
  background: transparent;
  justify-content: center;
  pointer-events: none;
}

.continuous-band__label {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.continuous-chip {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  padding: 0.1rem 0.45rem;
  border-radius: var(--radius-full);
  font-size: var(--font-size-xs);
  font-weight: 600;
  line-height: 1.4;
  color: #fff;
  background: #64748b;
}

.continuous-chip__name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 6.5rem;
}

.continuous-chip--tone-0 { background: #0f766e; }
.continuous-chip--tone-1 { background: #1d4ed8; }
.continuous-chip--tone-2 { background: #7c3aed; }
.continuous-chip--tone-3 { background: #b45309; }
.continuous-chip--tone-4 { background: #be123c; }
.continuous-chip--tone-5 { background: #334155; }

#continuous-manage-btn.btn--floating {
  right: calc(var(--space-lg) + 9.5rem);
  box-shadow: var(--shadow-md);
}

.continuous-entire-period-label {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0.5rem 0 0.75rem;
  font-size: var(--font-size-sm);
}

.continuous-entry {
  margin-bottom: 0.75rem;
}

.continuous-entry-edit {
  margin-top: 0.5rem;
}

.continuous-entry-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.5rem;
  align-items: center;
}

.so-title-static {
  margin: 0;
  font-size: var(--font-size-lg);
  font-weight: 600;
}

.so-panel--narrow {
  max-width: 520px;
  width: min(520px, 96vw);
}

@media (max-width: 600px) {
  #continuous-manage-btn.btn--floating {
    right: var(--space-lg);
    bottom: calc(var(--bottom-nav-height) + var(--space-lg) + 3.5rem);
  }
}


/* == inlined: 06-components/_management-common.css == */
/**
 * Management Common Layout
 * 
 * Gemeinsame Basis für alle Admin-Management-Seiten (User, Jobs, etc.)
 * Konsolidiert Toolbar, Filter-System und Tabellen-Strukturen.
 */

/* ==========================================================================
   PAGE STRUCTURE
   ========================================================================== */

.mgmt-page {
  background: var(--bg);
  min-height: calc(100vh - var(--header-height));
}

.mgmt-main {
  padding: var(--space-lg) var(--space-xl);
}

.mgmt-container {
  max-width: var(--container-max-width-wide);
  margin: 0 auto;
  background: var(--bg-elevated);
  border-radius: var(--radius-lg);
  padding: var(--space-lg);
  box-shadow: var(--shadow-md);
  border: 1px solid var(--border);
}

/* ==========================================================================
   TOOLBAR & FILTERS
   ========================================================================== */

.mgmt-toolbar {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
  margin-bottom: var(--space-lg);
  padding-bottom: var(--space-md);
  border-bottom: 1px solid var(--border);
}

.mgmt-toolbar-row {
  display: flex;
  align-items: flex-end;
  gap: var(--space-lg);
  flex-wrap: wrap;
}

/* Search Box */
.mgmt-search {
  flex: 1;
  min-width: 300px;
  max-width: 500px;
  position: relative;
}

.mgmt-search input {
  width: 100%;
  padding: 0.75rem 1rem 0.75rem 2.75rem;
  font-size: var(--font-size-base);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  background: var(--bg);
  color: var(--text);
  transition: all var(--transition-base);
}

.mgmt-search input:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: var(--shadow-focus);
}

.mgmt-search::before {
  content: '\f002';
  font-family: 'Font Awesome 6 Free';
  font-weight: 900;
  position: absolute;
  left: 1rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--text-muted);
}

/* Filter Fields */
.mgmt-field,
.toolbar-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xs);
}

.mgmt-field label,
.mgmt-field span,
.toolbar-field label,
.toolbar-field span {
  font-size: var(--font-size-2xs);
  font-weight: 700;
  text-transform: uppercase;
  color: var(--text-muted);
  letter-spacing: 0.05em;
  display: block;
}

.mgmt-field select, 
.mgmt-field input,
.toolbar-field select,
.toolbar-field input {
  padding: 0.4rem 0.6rem;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--bg);
  color: var(--text);
  font-size: var(--font-size-sm);
}

/* Utilities */
.mgmt-field--inline {
  flex-direction: row;
  align-items: center;
  gap: var(--space-sm);
}

.mgmt-field--inline label,
.mgmt-field--inline span {
  margin-bottom: 0;
}

.mgmt-field--checkbox {
  flex-direction: row;
  align-items: center;
  gap: var(--space-xs);
  cursor: pointer;
  padding: 4px 0;
}

.mgmt-field--checkbox input {
  width: auto;
  margin: 0;
}

.mgmt-field--checkbox span {
  font-size: var(--font-size-sm);
  text-transform: none;
  font-weight: 500;
  letter-spacing: normal;
}

/* ==========================================================================
   DATA TABLE
   ========================================================================== */

.mgmt-table-wrapper {
  overflow-x: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg);
}

.mgmt-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--font-size-sm);
}

.mgmt-table th {
  background: var(--bg-overlay);
  font-weight: 600;
  text-align: left;
  padding: 0.75rem 1rem;
  border-bottom: 2px solid var(--border);
  color: var(--text);
  white-space: nowrap;
}

.mgmt-table td {
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
}

.mgmt-table tr:hover {
  background: var(--table-hover-bg);
}

.mgmt-table tr.is-active {
  background: var(--primary-light-10);
}

/* ==========================================================================
   DETAIL CARDS
   ========================================================================== */

.mgmt-detail-card,
.user-detail-card,
.job-detail-container {
  margin-top: var(--space-xl);
  padding: var(--space-xl);
  background: var(--bg-elevated);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-lg);
  animation: slideIn 0.3s ease-out;
}

@keyframes slideIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: none; }
}

/* ==========================================================================
   TAB SWITCH (In-Page Filters)
   ========================================================================== */

.mgmt-tab-switch {
  display: flex;
  gap: var(--space-xs);
  flex-wrap: wrap;
}

.mgmt-tab-switch .tab-btn {
  border: 1px solid var(--border);
  background: transparent;
  color: var(--text);
  border-radius: var(--radius-md);
  padding: var(--space-xs) var(--space-md);
  cursor: pointer;
  font-size: var(--font-size-sm);
  font-weight: 600;
  transition: all var(--transition-base);
}

.mgmt-tab-switch .tab-btn:hover {
  background: var(--bg-soft);
}

.mgmt-tab-switch .tab-btn[aria-pressed='true'],
.mgmt-tab-switch .tab-btn.active {
  background: var(--primary-light-10);
  border-color: var(--primary);
  color: var(--primary);
}

.mgmt-tab-switch .filter-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.6em;
  padding: 0 0.4em;
  margin-left: 0.4em;
  font-size: var(--font-size-2xs);
  background: var(--danger);
  color: #fff;
  border-radius: var(--radius-full);
}

/* ==========================================================================
   USER MANAGEMENT SPECIFICS
   ========================================================================== */

.user-table-avatar img {
  width: 40px;
  height: 40px;
  border-radius: var(--radius-full);
  object-fit: cover;
  border: 1px solid var(--border);
}

.user-name-meta {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.name-primary {
  font-weight: 700;
  color: var(--text);
  display: flex;
  align-items: center;
  gap: var(--space-xs);
}

.checkin-marker {
  width: 8px;
  height: 8px;
  background: var(--success);
  border-radius: var(--radius-full);
  box-shadow: 0 0 5px var(--success);
}

.meta-tags {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}

.tag {
  font-size: 10px;
  background: var(--bg-soft);
  padding: 1px 6px;
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
}

.tag--manager {
  background: var(--warning-bg);
  color: var(--warning);
}

.tag--resp {
  background: var(--info-bg);
  color: var(--info);
}


/* == inlined: 06-components/_user-management.css == */
/**
 * User Management – Spezifische Anpassungen
 * 
 * Basiert auf _management-common.css.
 */

/* Spaltenbreiten Tabelle */
.mgmt-table .col-id { width: 50px; }
.mgmt-table .col-avatar { width: 50px; text-align: center; }
.mgmt-table .col-name { min-width: 180px; }
.mgmt-table .col-status { width: 130px; }
.mgmt-table .col-event-status { width: 150px; }
.mgmt-table .col-band { width: 72px; text-align: center; }
.mgmt-table .col-nickname { min-width: 100px; }
.mgmt-table .col-email { min-width: 180px; }
.mgmt-table .col-birthdate { width: 100px; }
.mgmt-table .col-role { width: 120px; }
.mgmt-table .col-hint { width: 60px; text-align: center; }

/* Status Badges (Inline Edit in Tabelle) */
.status-select, 
.role-select {
  padding: 0.3rem 0.5rem;
  border-radius: var(--radius-sm);
  background: var(--bg);
  border: 1px solid var(--border-strong);
  font-size: var(--font-size-xs);
  cursor: pointer;
  width: 100%;
  color: var(--text);
  transition: all var(--transition-fast);
}

.status-select:hover:not(:disabled),
.role-select:hover:not(:disabled) {
  border-color: var(--primary);
  background: var(--bg-soft);
}

.status-select:disabled,
.role-select:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Status-Farben (Border-Indikator) */
.status-select.status-aktiv { border-left: 4px solid var(--success); }
.status-select.status-inaktiv { border-left: 4px solid var(--text-muted); }
.status-select.status-geloescht { border-left: 4px solid var(--danger); }
.status-select.status-offen { border-left: 4px solid var(--text-muted); }
.status-select.status-in_arbeit { border-left: 4px solid var(--info); }
.status-select.status-nicht_erreicht { border-left: 4px solid var(--warning); }
.status-select.status-wartet_auf_bestaetigung { border-left: 4px solid var(--warning); }
.status-select.status-erledigt { border-left: 4px solid var(--success); }
.status-select.status-setzt_aus { border-left: 4px solid var(--text-muted); }

/* Notizen-Tooltip (Hinweise) */
.hint-cell {
  text-align: center;
}

.hint-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: var(--radius-full);
  background: var(--info-light);
  border: 1px solid var(--info);
  color: var(--info);
  position: relative;
  cursor: help;
  transition: all var(--transition-fast);
}

.hint-icon:hover,
.hint-icon:focus-visible {
  background: var(--info);
  color: #fff;
}

/* Tooltip standardmäßig versteckt */
.hint-tooltip {
  position: absolute;
  bottom: 110%;
  left: 50%;
  transform: translate(-50%, 5px);
  min-width: 260px;
  max-width: 350px;
  background: var(--bg-elevated);
  box-shadow: var(--shadow-lg);
  padding: var(--space-md);
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  font-size: var(--font-size-xs);
  text-align: left;
  z-index: var(--z-tooltip);
  opacity: 0;
  visibility: hidden;
  transition: all var(--transition-base);
  pointer-events: none;
}

/* Tooltip bei Hover anzeigen */
.hint-icon:hover .hint-tooltip,
.hint-icon:focus-visible .hint-tooltip {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
}

.hint-tooltip__item {
  margin-bottom: var(--space-xs);
  padding-bottom: var(--space-xs);
  border-bottom: 1px solid var(--border);
}

.hint-tooltip__item:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}

.hint-tooltip__item strong {
  display: block;
  color: var(--info);
  margin-bottom: 0.125rem;
  font-size: var(--font-size-2xs);
}

.hint-tooltip__item p {
  margin: 0;
  color: var(--text);
  line-height: 1.4;
}

/* Row-Active State (spezifisch für Benutzer) */
.mgmt-table tr.user-row--active {
  background: var(--primary-light);
  scroll-margin-top: calc(var(--header-height) + 12px);
}

.band-cell {
  text-align: center;
  vertical-align: middle;
}

.band-chip {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 2.75rem;
  padding: 0.2rem 0.35rem;
  border-radius: var(--radius-sm, 4px);
  border: 1px solid var(--border);
  background: var(--bg-elevated);
  line-height: 1.15;
  cursor: default;
}

.band-chip__code {
  font-weight: 700;
  font-size: var(--font-size-sm);
  color: var(--text);
}

.band-chip__src {
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  color: var(--text-muted);
}

.band-chip--friday {
  border-color: #1d4ed8;
  background: #1d4ed8;
  color: #fff;
}

.band-chip--friday .band-chip__code,
.band-chip--friday .band-chip__src {
  color: #fff;
}

.band-chip--saturday {
  border-color: #b45309;
  background: #f59e0b;
  color: #1c1917;
}

.band-chip--saturday .band-chip__code,
.band-chip--saturday .band-chip__src {
  color: #1c1917;
}

.band-chip--weekend {
  border-color: #047857;
  background: #059669;
  color: #fff;
}

.band-chip--weekend .band-chip__code,
.band-chip--weekend .band-chip__src {
  color: #fff;
}

.band-chip--shirt {
  border-color: #475569;
  background: #64748b;
  color: #fff;
}

.band-chip--shirt .band-chip__code,
.band-chip--shirt .band-chip__src {
  color: #fff;
}

.band-chip--choice-open {
  border-color: #dc2626;
  background: #fef2f2;
  color: #991b1b;
}

.band-chip--choice-open .band-chip__code,
.band-chip--choice-open .band-chip__src {
  color: #991b1b;
}

.band-chip--none {
  opacity: 0.85;
}

.user-detail-row {
  scroll-margin-top: calc(var(--header-height) + 12px);
}

/* Detailansicht Spezialanpassungen */
.user-detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: var(--space-md);
}

.user-detail-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2xs);
}

.user-detail-field span {
  font-size: var(--font-size-2xs);
  font-weight: 700;
  text-transform: uppercase;
  color: var(--text-muted);
}

/* Notizen in der Benutzer-Detailansicht */
.user-detail-notes .note-row {
  padding: var(--space-sm) 0;
  border-bottom: 1px solid var(--border-subtle, rgba(0, 0, 0, 0.08));
}

.user-detail-notes .note-row:last-child {
  border-bottom: none;
}

.note-row__meta {
  font-size: var(--font-size-2xs);
  color: var(--text-muted);
  margin-left: var(--space-xs);
}

.note-type-tag {
  display: inline-block;
  font-size: var(--font-size-2xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  padding: 0.1rem 0.45rem;
  border-radius: var(--radius-sm, 4px);
  margin-right: var(--space-xs);
}

.note-type-tag--legacy-shifts {
  background: var(--color-info-light, #e8f1fb);
  color: var(--color-info-content, #1a4f8b);
}

.note-row--legacy-shifts {
  margin-top: var(--space-sm);
  padding-top: var(--space-md);
  border-top: 2px solid var(--border-subtle, rgba(0, 0, 0, 0.12));
}

.memo-body {
  margin: var(--space-xs) 0 0;
  line-height: 1.5;
}

.memo-body--prewrap {
  white-space: pre-wrap;
  word-break: break-word;
  font-family: var(--font-mono, ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace);
  font-size: var(--font-size-sm, 0.875rem);
  background: var(--surface-muted, rgba(0, 0, 0, 0.03));
  border: 1px solid var(--border-subtle, rgba(0, 0, 0, 0.08));
  border-radius: var(--radius-sm, 4px);
  padding: var(--space-sm);
  max-height: 28rem;
  overflow: auto;
}

.note-row--legacy-shifts .memo-body--prewrap {
  max-height: 36rem;
}

.note-row__header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-xs);
}

.note-row__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-sm);
  margin-top: var(--space-xs);
}

.memo-planning-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: var(--font-size-sm);
  color: var(--text-muted);
  cursor: pointer;
  margin: 0;
}

.memo-planning-toggle input {
  margin: 0;
  width: auto;
}

.memo-planning-toggle--form {
  margin-top: var(--space-xs);
}

.note-type-tag--planning {
  background: var(--info-light, #e8f1fb);
  color: var(--info, #1a4f8b);
}

.note-type-tag--archive {
  background: var(--bg-muted, #f3f4f6);
  color: var(--text-muted);
}


/* == inlined: 06-components/_jobs-management.css == */
/**
 * Jobs Management – Spezifische Anpassungen
 * 
 * Basiert auf _management-common.css.
 */

/* Spaltenbreiten Tabelle */
.mgmt-table .col-id { width: 60px; }
.mgmt-table .col-name { min-width: 250px; }
.mgmt-table .col-section { min-width: 150px; }
.mgmt-table .col-location { min-width: 150px; }
.mgmt-table .col-public { width: 120px; text-align: center; }
.mgmt-table .col-promoted { width: 120px; text-align: center; }

/* Job Image Thumbnail */
.job-thumbnail {
  width: 40px;
  height: 40px;
  object-fit: cover;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
}

/* Detail-Tabs & Form */
.job-detail-tabs {
  display: flex;
  gap: var(--space-md);
  border-bottom: 2px solid var(--border);
  margin-bottom: var(--space-lg);
}

.job-tab-btn {
  background: transparent;
  border: none;
  padding: var(--space-md) var(--space-lg);
  font-weight: 600;
  color: var(--text-muted);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
}

.job-tab-btn.active {
  color: var(--primary);
  border-bottom-color: var(--primary);
}

/* Markdown-Notizfeld in Detail- und Erstellungsformular */
.job-memo-field,
.job-create-memo-field {
  display: block;
  width: 100%;
  margin-top: var(--space-lg);
}

.job-create-inline-form .job-create-memo-field {
  margin-bottom: var(--space-lg);
}

.job-detail-form .job-memo-field .CodeMirror,
.job-create-inline-form .job-create-memo-field .CodeMirror {
  min-height: 200px;
}

/* Row-Active State (spezifisch für Aufgaben) */
.mgmt-table tr.job-row--active {
  background: var(--primary-subtle);
  border-left: 4px solid var(--primary);
}

/* == inlined: 06-components/_admin-settings-layout.css == */
/**
 * Admin-Settings-Layout – Sidebar-Navigation für admin/admin.html (Desktop)
 */

.admin-settings-app {
  padding-bottom: 0;
}

.admin-settings-layout {
  display: flex;
  align-items: flex-start;
  gap: var(--space-xl);
  width: min(var(--container-max-width-wide), 100%);
  max-width: var(--container-max-width-wide);
  margin: var(--space-lg) auto;
  padding: 0 var(--space-lg) var(--space-2xl);
}

.admin-settings-sidebar {
  flex: 0 0 240px;
  position: sticky;
  top: var(--space-lg);
  max-height: calc(100vh - var(--space-2xl));
  overflow-y: auto;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-md) 0;
}

.admin-settings-nav__group + .admin-settings-nav__group {
  margin-top: var(--space-md);
  padding-top: var(--space-md);
  border-top: 1px solid var(--border);
}

.admin-settings-nav__group--danger {
  border-top-color: color-mix(in srgb, var(--danger, #c0392b) 35%, var(--border));
}

.admin-settings-nav__label {
  margin: 0;
  padding: var(--space-xs) var(--space-lg);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-secondary);
}

.admin-settings-nav__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.admin-settings-nav__item {
  display: block;
  width: 100%;
  text-align: left;
  padding: var(--space-sm) var(--space-lg);
  border: none;
  border-left: 3px solid transparent;
  background: transparent;
  color: var(--text);
  font-size: var(--font-size-sm);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}

.admin-settings-nav__item:hover {
  background: var(--bg);
}

.admin-settings-nav__item.active {
  background: color-mix(in srgb, var(--primary, #3498db) 12%, transparent);
  border-left-color: var(--primary, #3498db);
  font-weight: 600;
}

.admin-settings-nav__item--danger {
  color: var(--danger, #c0392b);
}

.admin-settings-nav__item--danger.active {
  background: color-mix(in srgb, var(--danger, #c0392b) 10%, transparent);
  border-left-color: var(--danger, #c0392b);
}

.admin-settings-content {
  flex: 1;
  min-width: 0;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-xl);
  box-shadow: var(--shadow-lg);
}

.admin-settings-breadcrumb {
  margin: 0 0 var(--space-sm);
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
}

.admin-settings-breadcrumb__sep {
  margin: 0 0.35em;
  opacity: 0.6;
}

.admin-settings-panel[data-tab-section] {
  display: none;
}

.admin-settings-panel[data-tab-section][data-tab-active="true"] {
  display: block;
}

.admin-settings-panel > h2 {
  margin-top: 0;
}

.admin-settings-panel > .admin-settings-lead {
  margin-top: calc(var(--space-sm) * -1);
  margin-bottom: var(--space-xl);
  color: var(--text-secondary);
  max-width: 72ch;
}

/* Event-Anlegen: standardmäßig eingeklappt */
.admin-event-create-toggle {
  margin-bottom: var(--space-lg);
}

.admin-event-create-panel[hidden] {
  display: none !important;
}

.admin-event-create-panel {
  margin-bottom: var(--space-2xl);
  padding: var(--space-lg);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg);
}

/* Wartung: Danger Zone eingeklappt */
.admin-maintenance-toggle {
  margin-bottom: var(--space-md);
}

.admin-maintenance-panel[hidden] {
  display: none !important;
}

.admin-danger-zone {
  border: 1px solid color-mix(in srgb, var(--danger, #c0392b) 45%, var(--border));
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: color-mix(in srgb, var(--danger, #c0392b) 6%, var(--bg));
}

.admin-danger-zone h2 {
  color: var(--danger, #c0392b);
  margin-top: 0;
}

.admin-settings-panel .admin-section {
  margin-bottom: 0;
}


/* == inlined: 06-components/_no-show.css == */
/**
 * Schicht-Notizen (siehe ADR-015)
 *
 * Komponente: AssignmentNoShowPanel
 * Anwendungsstellen: Dispatcher-Schicht-Overlay, /user/job-detail.html,
 * /user/shifts.html, /user/shift-detail.html
 */

/* Badge an Crew-Karte: Schicht-Notiz ohne Aufklappen erkennbar */
.ans-card-badge {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.25rem 0.35rem;
  max-width: 100%;
  padding: 0.12rem 0.45rem;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: 0.01em;
  background: rgba(230, 126, 34, 0.16);
  color: var(--color-warning, #c56a12);
  border: 1px solid rgba(230, 126, 34, 0.35);
  white-space: nowrap;
}

.ans-card-badge i {
  font-size: 0.72rem;
  opacity: 0.95;
}

.ans-card-badge__tag {
  font-size: 0.62rem;
  font-weight: 600;
  padding: 0.05rem 0.35rem;
  border-radius: 4px;
  background: rgba(0, 0, 0, 0.06);
  color: inherit;
  text-transform: lowercase;
}

.ans-card-badge__tag--internal {
  background: rgba(0, 0, 0, 0.08);
}

.ans-card-badge__tag--warning {
  background: rgba(231, 76, 60, 0.15);
  color: var(--color-danger, #c0392b);
}

/* Dezenter Einstieg am Crew-Mitglied */
.ans-toggle-row {
  display: flex;
  justify-content: flex-end;
  width: 100%;
}

.ans-inline-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  min-height: 2.75rem;
  padding: 0.35rem 0.6rem;
  margin: 0;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--color-text-muted, var(--text-muted, #888));
  font-size: 0.8rem;
  text-decoration: underline;
  text-underline-offset: 0.12em;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

.ans-inline-trigger--has-note {
  font-weight: 600;
  color: var(--color-warning, #c56a12);
  text-decoration: none;
  background: rgba(230, 126, 34, 0.1);
  border: 1px solid rgba(230, 126, 34, 0.28);
}

.ans-inline-trigger--has-note:hover,
.ans-inline-trigger--has-note:focus-visible {
  background: rgba(230, 126, 34, 0.18);
  color: var(--color-warning, #a8580f);
}

.ans-inline-trigger:hover,
.ans-inline-trigger:focus-visible {
  color: var(--color-text, var(--text, inherit));
  background: var(--muted-bg);
  outline: none;
}

.ans-inline-trigger.is-open {
  color: var(--color-text, var(--text, inherit));
  background: var(--primary-light-10, var(--muted-bg));
}

.ans-panel-host {
  width: 100%;
}

@media (max-width: 540px) {
  .job-detail-page .shifts-crew__crew-item-top .ans-inline-trigger {
    flex-shrink: 0;
    max-width: 42vw;
    text-align: right;
    line-height: 1.25;
    hyphens: auto;
    font-size: 0.72rem;
  }

  .responsible-card .ans-toggle-row .ans-inline-trigger {
    max-width: min(9rem, 40vw);
    text-align: right;
    line-height: 1.25;
    font-size: 0.72rem;
  }
}

/* Checkbox „Nicht vor Ort“ */
.ans-check-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0 0 0.75rem 0;
  font-size: 0.9rem;
  cursor: pointer;
}

.ans-check-row input {
  width: 1.1rem;
  height: 1.1rem;
  flex-shrink: 0;
}

.ans-status-tag {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.1rem 0.45rem;
  border-radius: 4px;
  font-size: 0.72rem;
  font-weight: 600;
  vertical-align: middle;
}

.ans-status-tag--warning {
  background: var(--color-warning-bg, rgba(230, 126, 34, 0.15));
  color: var(--color-warning, #e67e22);
}

/* Erste Notiz: große Auswahl für Touch */
.ans-panel__hint--compact {
  margin-bottom: 0.25rem;
}

.ans-panel__subtitle {
  margin: 0 0 0.65rem 0;
  font-size: 0.8rem;
  line-height: 1.35;
}

.ans-vis-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
}

@media (max-width: 360px) {
  .ans-vis-grid {
    grid-template-columns: 1fr;
  }
}

.ans-vis-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 4.5rem;
  padding: 0.75rem 0.65rem;
  border: 2px solid var(--border-strong, rgba(255, 180, 140, 0.3));
  border-radius: 10px;
  background: var(--bg-elevated, #252525);
  color: var(--text, #fef5f1);
  text-align: center;
  cursor: pointer;
  font: inherit;
  line-height: 1.25;
  transition:
    border-color 0.12s ease,
    background 0.12s ease,
    transform 0.08s ease,
    box-shadow 0.12s ease;
  -webkit-tap-highlight-color: transparent;
}

.ans-vis-btn:hover {
  border-color: var(--primary);
}

.ans-vis-btn:active {
  transform: scale(0.985);
}

.ans-vis-btn.is-selected {
  border-color: var(--primary);
  background: var(--primary-low, rgba(255, 107, 107, 0.12));
  box-shadow: 0 0 12px var(--primary-low);
}

.ans-vis-btn__icon {
  font-size: 1.4rem;
  margin-bottom: 0.45rem;
  color: var(--text-muted, #c4a89a);
  transition: color 0.12s ease, transform 0.15s ease;
}

.ans-vis-btn.is-selected .ans-vis-btn__icon {
  color: var(--primary);
  transform: scale(1.1);
}

.ans-vis-btn__title {
  font-weight: 700;
  font-size: 0.9rem;
  margin-bottom: 0.15rem;
}

.ans-vis-btn__hint {
  font-size: 0.72rem;
  color: var(--text-muted, #c4a89a);
  opacity: 0.85;
}

.ans-field {
  margin-bottom: 0.75rem;
}

.ans-field-label {
  display: block;
  margin-bottom: 0.35rem;
  font-size: 0.8rem;
  font-weight: 600;
}

.ans-initial-comment {
  width: 100%;
  min-height: 5.5rem;
  padding: 0.65rem;
  resize: vertical;
  border-radius: 8px;
  border: 1px solid var(--color-border);
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 1rem;
  line-height: 1.4;
}

.ans-panel__actions--responsive {
  gap: 0.5rem;
}

.ans-panel__actions--single {
  margin-top: 0.35rem;
  justify-content: flex-start;
}

/* Zeile: Text + Toggle-Switch (bestehender Vermerk) */
.ans-visibility-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.75rem 0;
  margin: 0.5rem 0 0.75rem;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}

.ans-visibility-bar__text {
  flex: 1 1 auto;
  min-width: 0;
}

.ans-visibility-bar__title-row {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin-bottom: 0.15rem;
}

.ans-visibility-bar__label {
  font-weight: 600;
  font-size: 0.9rem;
  line-height: 1.2;
}

.ans-visibility-bar__hint {
  margin: 0;
  font-size: 0.78rem;
  line-height: 1.3;
  color: var(--text-muted);
}

/*
 * Toggle-Switch (Exakt iOS 7+ Style)
 */
.ans-switch {
  all: unset;
  position: relative;
  display: block !important;
  width: 51px !important;
  height: 31px !important;
  padding: 0 !important;
  margin: 0 !important;
  border: none !important;
  cursor: pointer;
  flex-shrink: 0;
  -webkit-tap-highlight-color: transparent;
}

.ans-switch__track {
  position: absolute;
  top: 0;
  left: 0;
  width: 51px !important;
  height: 31px !important;
  border-radius: 16px !important;
  background-color: #39393d !important; /* iOS Dark Mode OFF */
  transition: background-color 0.25s ease;
  box-sizing: border-box !important;
}

.ans-switch.is-on .ans-switch__track {
  background-color: #34c759 !important; /* iOS Green */
}

.ans-switch__thumb {
  position: absolute;
  top: 2px !important;
  left: 2px !important;
  width: 27px !important;
  height: 27px !important;
  border-radius: 50% !important;
  background-color: #ffffff !important;
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.4) !important;
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;
  box-sizing: border-box !important;
}

.ans-switch.is-on .ans-switch__thumb {
  transform: translateX(20px) !important;
}

.ans-switch.is-busy {
  opacity: 0.6;
  cursor: wait;
}

@media (max-width: 380px) {
  .ans-visibility-bar {
    flex-direction: column;
    align-items: stretch;
  }

  .ans-switch {
    align-self: flex-end;
  }
}

@media (max-width: 480px) {
  .ans-panel__actions--responsive {
    flex-direction: column;
    align-items: stretch;
  }

  .ans-panel__actions--responsive .btn {
    width: 100%;
    justify-content: center;
  }
}

.ans-panel {
  display: block;
  margin-top: 0.5rem;
}

.ans-panel__body {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 0.75rem 1rem;
  background: var(--color-bg-alt);
}

.ans-panel__hint {
  margin: 0 0 0.5rem 0;
  color: var(--color-text-muted);
  font-size: 0.9rem;
}

.ans-panel__visibility {
  border: none;
  padding: 0;
  margin: 0 0 0.75rem 0;
}

.ans-panel__visibility legend {
  font-weight: 600;
  font-size: 0.9rem;
  margin-bottom: 0.25rem;
}

.ans-panel__visibility label {
  display: block;
  margin: 0.25rem 0;
  cursor: pointer;
  font-size: 0.9rem;
}

.ans-panel__status {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: 0.5rem;
}

.ans-status-label {
  font-weight: 700;
  color: var(--warning);
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.ans-marked-at {
  font-size: 0.8rem;
}

.ans-badge {
  display: inline-block;
  font-size: 0.75rem;
  padding: 0.15rem 0.5rem;
  border-radius: 999px;
  border: 1px solid var(--color-border);
}

.ans-badge--visible {
  background: rgba(91, 141, 239, 0.12);
  border-color: var(--color-primary, #5b8def);
  color: var(--color-primary, #5b8def);
}

.ans-badge--hidden {
  background: rgba(149, 165, 166, 0.12);
  color: var(--color-text-muted);
}

.ans-panel__actions {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: 0.75rem;
}

.ans-panel__banner {
  display: flex;
  gap: 0.75rem;
  align-items: flex-start;
  background: rgba(231, 76, 60, 0.08);
  border: 1px solid rgba(231, 76, 60, 0.4);
  border-radius: 8px;
  padding: 0.75rem 1rem;
  margin-bottom: 0.75rem;
}

.ans-panel__banner i {
  color: var(--color-danger, #e74c3c);
  font-size: 1.25rem;
  margin-top: 0.15rem;
}

.ans-panel__banner p {
  margin: 0.25rem 0 0 0;
  font-size: 0.85rem;
}

.ans-comments h4 {
  margin: 0.5rem 0 0.5rem 0;
  font-size: 0.9rem;
}

.ans-comments__list {
  list-style: none;
  margin: 0 0 0.75rem 0;
  padding: 0;
}

.ans-comments__empty {
  font-size: 0.85rem;
}

.ans-comment {
  border-top: 1px solid var(--color-border);
  padding: 0.5rem 0;
}

.ans-comment:first-child {
  border-top: none;
}

.ans-comment__head {
  display: flex;
  gap: 0.5rem;
  align-items: baseline;
  flex-wrap: wrap;
  font-size: 0.8rem;
}

.ans-comment__author {
  font-weight: 600;
}

.ans-comment__role {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-text-muted);
}

.ans-comment__time {
  font-size: 0.75rem;
}

.ans-comment__text {
  margin: 0.25rem 0;
  white-space: pre-wrap;
  font-size: 0.9rem;
}

.ans-comment__actions {
  display: flex;
  gap: 0.25rem;
}

.ans-comments__form {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.ans-comments__form textarea {
  width: 100%;
  resize: vertical;
  min-height: 60px;
  padding: 0.5rem;
  border-radius: 6px;
  border: 1px solid var(--color-border);
  background: var(--color-bg);
  color: var(--color-text);
}

.ans-comments__form .ans-add-comment {
  align-self: flex-end;
}

/* Crew-Karte mit aktivem Vermerk hervorheben (Dispatcher-Overlay & Job-Detail). */
.responsible-card.has-no-show,
.shifts-crew__crew-item.has-no-show,
.widget-card--no-show {
  border-color: var(--color-warning, #e67e22);
  box-shadow: 0 0 0 1px var(--color-warning, #e67e22);
  background: linear-gradient(
    135deg,
    rgba(230, 126, 34, 0.07) 0%,
    var(--bg-surface, transparent) 48%
  );
}

/* Banner an Schichten-Karte in /user/shifts.html. */
.widget-card__no-show {
  display: flex;
  gap: 0.5rem;
  align-items: flex-start;
  background: rgba(231, 76, 60, 0.1);
  color: var(--color-text);
  border-radius: 6px;
  padding: 0.5rem 0.75rem;
  margin: 0.5rem 0;
  font-size: 0.85rem;
}

.widget-card__no-show i {
  color: var(--color-danger, #e74c3c);
  margin-top: 0.15rem;
}


/* == inlined: 06-components/_staging-banner.css == */
/**
 * Staging-Umgebungshinweis (feste Leiste oben).
 */
.staging-banner {
  position: sticky;
  top: 0;
  z-index: 10000;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 1rem;
  padding: 0.45rem 0.85rem;
  background: #b45309;
  color: #fff7ed;
  font-size: 0.85rem;
  line-height: 1.35;
  border-bottom: 2px solid #7c2d12;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
}

.staging-banner__label {
  letter-spacing: 0.06em;
  font-size: 0.8rem;
  padding: 0.15rem 0.45rem;
  background: #7c2d12;
  border-radius: 3px;
}

.staging-banner__text {
  opacity: 0.95;
}


/* == inlined: 06-components/_offline-banner.css == */
/**
 * Offline-Banner – Design-System-Anbindung (ApiClient setzt Klassen)
 */
#offline-cache-banner {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  z-index: 9999;
  display: none;
  padding: 8px 12px;
  text-align: center;
  font: 600 13px/1.4 var(--font-family-base, "Trebuchet MS", Verdana, Arial, sans-serif);
  color: var(--text-on-warning, #2a1d05);
  background: var(--warning, #f2d56b);
  border-bottom: 1px solid var(--border-strong, rgba(0, 0, 0, 0.12));
}

#offline-cache-banner.is-visible {
  display: block;
}

#offline-cache-banner.is-stale {
  background: var(--danger-soft, #f0c0a0);
  color: var(--text, #2a1d05);
}

#offline-cache-banner.is-refreshing {
  background: var(--primary-muted, #d0dde8);
  color: var(--text, #1a1a1a);
}

#offline-cache-banner.is-auth-needed {
  background: var(--warning, #f2d56b);
}

body.has-offline-banner {
  padding-top: 40px;
}

.offline-inline-notice {
  margin: 0 0 12px;
  padding: 10px 12px;
  border-radius: 8px;
  background: var(--warning, #f2d56b);
  color: var(--text-on-warning, #2a1d05);
  font-size: 0.9rem;
  font-weight: 600;
}

.is-offline-disabled,
button.is-offline-disabled,
a.is-offline-disabled {
  opacity: 0.55;
  pointer-events: none;
  cursor: not-allowed;
}


/* == inlined: 06-components/_push-notifications.css == */
/**
 * Push-Benachrichtigungen + Notification-Inbox: Header-Glocke und Dashboard-Nudge.
 */

.header-push-menu {
  position: relative;
}

.header-push-menu__trigger {
  position: relative;
}

.header-push-menu__badge {
  position: absolute;
  top: 2px;
  right: 2px;
  min-width: 1.1rem;
  height: 1.1rem;
  padding: 0 0.25rem;
  border-radius: 999px;
  background: var(--danger);
  color: #fff;
  font-size: 0.65rem;
  font-weight: 700;
  line-height: 1.1rem;
  text-align: center;
  box-shadow: 0 0 0 2px var(--bg-elevated);
  pointer-events: none;
}

.header-push-menu__badge[hidden] {
  display: none !important;
}

.header-push-menu__trigger--off::after,
.header-push-menu__trigger--denied::after {
  content: '';
  position: absolute;
  top: 6px;
  right: 6px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--warning);
  box-shadow: 0 0 0 2px var(--bg-elevated);
}

.header-push-menu__trigger--denied::after {
  background: var(--danger);
}

.header-push-menu__trigger--has-unread::after {
  display: none;
}

.header-push-menu__backdrop {
  position: fixed;
  inset: 0;
  /* Über Staging-Banner (z-index 10000) und Header-backdrop-filter */
  z-index: 10050;
  background: rgba(0, 0, 0, 0.45);
}

.header-push-menu__backdrop[hidden] {
  display: none !important;
}

.header-push-menu__panel {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 10060;
  display: flex;
  flex-direction: column;
  max-height: min(78vh, calc(100dvh - 3.5rem));
  width: 100%;
  padding: 0;
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  border: 1px solid var(--border);
  border-bottom: none;
  background: var(--bg-elevated);
  box-shadow: var(--shadow-lg);
}

.header-push-menu__panel[hidden] {
  display: none !important;
}

.header-push-menu__grab {
  flex: 0 0 auto;
  width: 2.5rem;
  height: 0.3rem;
  margin: 0.55rem auto 0.25rem;
  border-radius: 999px;
  background: var(--border);
}

.header-push-menu__panel-head {
  flex: 0 0 auto;
  font-weight: 600;
  padding: 0.35rem 1rem 0.5rem;
  font-size: 1.05rem;
}

.header-push-menu__list {
  flex: 1 1 auto;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  padding: 0 0.35rem 0.5rem;
  min-height: 0;
}

.header-push-menu__empty {
  margin: 0.75rem 1rem;
  font-size: 0.9rem;
}

.header-push-menu__item {
  display: block;
  width: 100%;
  text-align: left;
  padding: 0.75rem 0.75rem;
  margin: 0;
  border: none;
  border-radius: var(--radius-md);
  background: transparent;
  color: inherit;
  cursor: pointer;
  text-decoration: none;
}

.header-push-menu__item + .header-push-menu__item {
  border-top: 1px solid var(--border);
  border-radius: 0;
}

.header-push-menu__item--unread {
  background: color-mix(in srgb, var(--info) 12%, transparent);
  font-weight: 600;
}

.header-push-menu__item--read {
  opacity: 0.72;
}

.header-push-menu__item-title {
  display: block;
  font-size: 0.95rem;
  line-height: 1.3;
}

.header-push-menu__item-body {
  display: block;
  margin-top: 0.2rem;
  font-size: 0.85rem;
  font-weight: 400;
  line-height: 1.35;
  color: var(--text-muted, inherit);
  opacity: 0.9;
}

.header-push-menu__item-meta {
  display: block;
  margin-top: 0.25rem;
  font-size: 0.75rem;
  font-weight: 400;
  opacity: 0.65;
}

.header-push-menu__footer {
  flex: 0 0 auto;
  padding: 0.65rem 1rem calc(0.85rem + env(safe-area-inset-bottom, 0px));
  border-top: 1px solid var(--border);
  background: var(--bg-elevated);
}

.header-push-menu__detail {
  margin: 0 0 0.55rem;
  font-size: 0.85rem;
  line-height: 1.4;
}

.header-push-menu__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.55rem;
  font-size: 0.9rem;
}

.header-push-menu__denied-help {
  margin: 0 0 0.5rem;
  font-size: 0.85rem;
}

.header-push-menu__settings {
  display: inline-block;
  font-size: 0.9rem;
  color: var(--link);
  text-decoration: none;
}

.header-push-menu__settings:hover {
  text-decoration: underline;
}

@media (min-width: 720px) {
  .header-push-menu__backdrop {
    background: transparent;
  }

  /* Im Header (ohne Portal): absolute unter dem Trigger */
  .header-push-menu > .header-push-menu__panel {
    position: absolute;
    left: auto;
    right: 0;
    bottom: auto;
    top: calc(100% + 0.5rem);
    width: min(360px, calc(100vw - 2rem));
    max-height: min(70vh, 520px);
    border-radius: var(--radius-lg);
    border-bottom: 1px solid var(--border);
  }

  /* Am body (Portal): Position per JS, Maße hier */
  body > .header-push-menu__panel {
    position: fixed;
    left: auto;
    bottom: auto;
    width: min(360px, calc(100vw - 2rem));
    max-height: min(70vh, 520px);
    border-radius: var(--radius-lg);
    border-bottom: 1px solid var(--border);
  }

  .header-push-menu__grab {
    display: none;
  }

  .header-push-menu__footer {
    padding-bottom: 0.85rem;
  }
}

.status-banner--push-nudge {
  border-color: var(--info);
  background: linear-gradient(135deg, var(--bg-elevated), var(--info-light));
}

.status-banner--push-nudge .status-banner__icon {
  color: var(--info);
  filter: none;
}

.status-banner--push-denied {
  border-color: var(--warning);
  background: linear-gradient(135deg, var(--bg-elevated), var(--warning-bg));
}

.status-banner--push-off {
  border-color: var(--info);
}

.push-settings-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 0.75rem;
}

.push-settings-row__text {
  flex: 1;
  min-width: 0;
}

.push-settings-denied-help {
  margin-top: 0.75rem;
  padding: 0.75rem 0.9rem;
  border-radius: var(--radius-md);
  border: 1px solid var(--border);
  background: var(--bg-subtle);
}

.push-settings-denied-help ol {
  margin: 0.5rem 0 0;
  padding-left: 1.2rem;
}

.push-settings-denied-help li + li {
  margin-top: 0.35rem;
}

.notif-pref-list {
  margin-top: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.notif-pref-card {
  padding: 0.85rem 0.9rem;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--bg-subtle);
}

.notif-pref-card__title {
  margin: 0;
  font-size: 1rem;
}

.notif-pref-card__desc {
  margin: 0.25rem 0 0.65rem;
  font-size: 0.85rem;
}

.notif-pref-card__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-top: 0.35rem;
  font-size: 0.9rem;
}

.notif-pref-card__locked {
  font-size: 0.85rem;
  opacity: 0.75;
}


/* Geo-Features */

/* == inlined: 06-components/_location-map.css == */
/**
 * Location Map Component
 * Kartenkomponente für Aufgabenstandorte
 */

.location-map {
  position: relative;
  border-radius: var(--radius-md, 8px);
  overflow: hidden;
  background: var(--surface-secondary, #1a1a1a);
}

.location-map__canvas {
  width: 100%;
  min-height: 200px;
  z-index: 1;
  touch-action: none;
}

.location-map--picker {
  overflow: visible;
}

.location-map--picker .location-map__canvas {
  min-height: 280px;
  height: 280px;
  border-radius: var(--radius-md, 8px);
  border: 1px solid var(--border-color, #333);
  overflow: hidden;
}

.location-map__picker-hint {
  margin: 0 0 8px;
  font-size: 0.9rem;
  color: var(--text-muted, #999);
  line-height: 1.35;
}

@media (max-width: 640px) {
  .location-map--picker .location-map__canvas {
    min-height: 300px;
    height: min(50vw, 360px);
  }
}

/* Leaflet-Overrides für Theme-Kompatibilität */
.location-map .leaflet-container {
  background: var(--surface-secondary, #1a1a1a);
  font-family: inherit;
}

.location-map .leaflet-control-zoom {
  border: none;
  box-shadow: var(--shadow-md, 0 4px 12px rgba(0,0,0,0.3));
}

.location-map .leaflet-control-zoom a {
  background: var(--surface-primary, #242424);
  color: var(--text-primary, #ffffff);
  border: 1px solid var(--border-color, #333);
  width: 32px;
  height: 32px;
  line-height: 32px;
  font-size: 16px;
}

.location-map .leaflet-control-zoom a:hover {
  background: var(--surface-hover, #2a2a2a);
  color: var(--text-primary, #ffffff);
}

.location-map .leaflet-control-attribution {
  background: rgba(0, 0, 0, 0.6);
  color: var(--text-muted, #888);
  font-size: 10px;
  padding: 2px 6px;
}

.location-map .leaflet-control-attribution a {
  color: var(--text-secondary, #aaa);
}

.location-map .leaflet-popup-content-wrapper {
  background: var(--surface-primary, #242424);
  color: var(--text-primary, #ffffff);
  border-radius: var(--radius-sm, 4px);
  box-shadow: var(--shadow-lg, 0 8px 24px rgba(0,0,0,0.4));
}

.location-map .leaflet-popup-tip {
  background: var(--surface-primary, #242424);
}

.location-map .leaflet-popup-close-button {
  color: var(--text-secondary, #aaa);
}

.location-map .leaflet-popup-close-button:hover {
  color: var(--text-primary, #ffffff);
}

/* Koordinaten-Anzeige (Picker-Modus) */
.location-map__coords {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 0.75rem;
  background: var(--surface-primary, #242424);
  border-top: 1px solid var(--border-color, #333);
  font-size: 0.875rem;
}

.location-map__coords-label {
  color: var(--text-muted, #888);
}

.location-map__coords-value {
  flex: 1;
  font-family: var(--font-mono, monospace);
  color: var(--text-primary, #ffffff);
}

.location-map__clear-btn {
  padding: 0.25rem 0.5rem;
  font-size: 0.75rem;
}

/* Readonly-Modus: Cursor ändern */
.location-map--readonly .leaflet-container {
  cursor: default;
}

/* Picker-Modus: Crosshair-Cursor */
.location-map:not(.location-map--readonly) .leaflet-container {
  cursor: crosshair;
}

/* Ladezustand */
.location-map--loading .location-map__canvas {
  display: flex;
  align-items: center;
  justify-content: center;
}

.location-map--loading .location-map__canvas::after {
  content: 'Karte wird geladen...';
  color: var(--text-muted, #888);
}

/* Fallback wenn keine Koordinaten */
.location-map__empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 200px;
  color: var(--text-muted, #888);
  text-align: center;
  gap: 0.5rem;
}

.location-map__empty i {
  font-size: 2rem;
  opacity: 0.5;
}

/* Responsive */
@media (max-width: 600px) {
  .location-map__canvas {
    min-height: 180px;
  }
  
  .location-map__coords {
    flex-wrap: wrap;
  }
  
  .location-map__coords-value {
    font-size: 0.75rem;
  }
}

/* Job-Detail spezifisch */
.job-detail .location-map {
  margin-top: 1rem;
}

.job-detail .location-map__canvas {
  height: 250px;
}

/* Dispatcher/Admin spezifisch */
.shift-overlay-form .location-map,
.form-group .location-map {
  margin-top: 0.5rem;
}

.shift-overlay-form .location-map__canvas,
.form-group .location-map__canvas {
  height: 200px;
}

/* Job Location Map Wrapper im Dispatcher */
.job-location-map-wrapper {
  grid-column: 1 / -1;
  margin: 0.5rem 0;
}

.job-location-map-wrapper > label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 500;
  color: var(--text-secondary, #aaa);
  font-size: 0.875rem;
}

.job-location-map-wrapper .location-map__canvas {
  height: 400px;
}

/* Visuelle Rückmeldung bei Orts-Vorschlag */
.location-map__suggestion-highlight {
  animation: location-suggestion-pulse 0.3s ease-out;
  box-shadow: 0 0 0 2px var(--accent, #4caf50) !important;
  border-color: var(--accent, #4caf50) !important;
}

@keyframes location-suggestion-pulse {
  0% {
    box-shadow: 0 0 0 0 rgba(76, 175, 80, 0.6);
  }
  100% {
    box-shadow: 0 0 0 4px rgba(76, 175, 80, 0);
  }
}

/* Venue-GeoJSON: uMap-Drop-Pins (SVG-Tropfen + Pictogramm/Text) */
.location-map__umap-drop {
  background: transparent !important;
  border: none !important;
  overflow: visible !important;
}

.location-map__umap-drop-wrap {
  position: relative;
  display: block;
  width: 36px;
  height: 48px;
}

.location-map__umap-drop-svg {
  display: block;
  width: 36px;
  height: 48px;
  filter: drop-shadow(1px 2px 3px rgba(0, 0, 0, 0.45));
  pointer-events: none;
}

.location-map__umap-drop-inner {
  position: absolute;
  left: 0;
  top: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 32px;
  pointer-events: none;
}

.location-map__umap-drop-picto {
  width: 16px;
  height: 16px;
  object-fit: contain;
  /* schwarze uMap-SVGs → weiß auf farbigem Pin */
  filter: brightness(0) invert(1);
}

.location-map__umap-drop-text {
  max-width: 28px;
  overflow: hidden;
  font-size: 9px;
  font-weight: 800;
  line-height: 1;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.35);
  white-space: nowrap;
}

.location-map__umap-drop-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #fff;
}

.location-map .leaflet-tooltip.location-map__umap-permanent-label {
  padding: 3px 8px;
  border: 1px solid rgba(0, 0, 0, 0.25);
  border-radius: 4px;
  background: #fff;
  color: #111;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.25;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);
  white-space: nowrap;
}

.location-map .leaflet-tooltip.location-map__umap-permanent-label--place {
  padding: 4px 10px;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0.01em;
  border: 2px solid rgba(0, 0, 0, 0.35);
  background: #fffef8;
  color: #111;
  text-shadow: none;
}

.location-map .leaflet-tooltip.location-map__umap-permanent-label::before {
  border-top-color: #fff;
}

.location-map .leaflet-tooltip.location-map__umap-permanent-label--place::before {
  border-top-color: #fffef8;
}

/* Legacy-Klassen (Fallback) */
.location-map__venue-icon,
.location-map__venue-label {
  background: transparent !important;
  border: none !important;
}

.location-map__venue-label-text {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.5rem;
  padding: 0.1rem 0.35rem;
  border-radius: 3px;
  font-size: 0.65rem;
  font-weight: 700;
  line-height: 1.2;
  color: #fff;
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4);
  white-space: nowrap;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
}

/* Aufgabenort-Marker: groß, rot, Halo + Puls – klar von Venue-POIs unterscheidbar */
.location-map__job-marker {
  background: transparent !important;
  border: none !important;
  position: relative;
  overflow: visible !important;
}

.location-map__job-marker-pin {
  display: block;
  position: relative;
  z-index: 3;
  filter: drop-shadow(0 3px 6px rgba(0, 0, 0, 0.55));
  line-height: 0;
}

.location-map__job-marker-halo {
  position: absolute;
  left: 50%;
  top: 22px;
  width: 36px;
  height: 36px;
  margin-left: -18px;
  margin-top: -18px;
  border-radius: 50%;
  background: rgba(211, 47, 47, 0.28);
  border: 2px solid rgba(255, 255, 255, 0.95);
  box-shadow: 0 0 0 3px rgba(211, 47, 47, 0.35);
  z-index: 1;
  pointer-events: none;
}

.location-map__job-marker-pulse {
  position: absolute;
  left: 50%;
  top: 22px;
  width: 36px;
  height: 36px;
  margin-left: -18px;
  margin-top: -18px;
  border-radius: 50%;
  background: rgba(211, 47, 47, 0.4);
  z-index: 2;
  animation: location-map-job-pulse 1.5s ease-out infinite;
  pointer-events: none;
}

.location-map__job-marker-label {
  position: absolute;
  left: 50%;
  top: 100%;
  transform: translate(-50%, 2px);
  z-index: 4;
  padding: 2px 8px;
  border-radius: 999px;
  background: #D32F2F;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.02em;
  white-space: nowrap;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.45);
  pointer-events: none;
}

@keyframes location-map-job-pulse {
  0% {
    transform: scale(0.7);
    opacity: 0.85;
  }
  70% {
    transform: scale(2.4);
    opacity: 0;
  }
  100% {
    transform: scale(2.4);
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .location-map__job-marker-pulse {
    animation: none;
    opacity: 0.5;
    transform: scale(1.5);
  }
}



/* Legacy-Komponenten (Feature-spezifische Styles) */

/* == inlined: 06-components/_legacy.css == */
/**
 * Legacy Components – Refactored Feature-Specific Components
 *
 * Phase 4: Legacy-Refactoring Complete!
 *
 * All legacy components have been extracted and refactored into modular,
 * maintainable CSS files that use design tokens and follow modern best practices.
 *
 * Components:
 * - Dashboard (style.css → _dashboard.css)
 * - Teams (style.css → _teams.css)
 * - Shifts (style.css, dispatcher.css → _shifts.css)
 * - Dispatcher (dispatcher.css → _dispatcher.css)
 * - Chat (chat.css → _chat.css)
 *
 * These components now:
 * ✅ Use CSS custom properties (design tokens)
 * ✅ Follow BEM-like naming conventions
 * ✅ Support theme system (dark, light, warm)
 * ✅ Are responsive and accessible
 * ✅ Have consistent spacing and sizing
 * ✅ Are maintainable and well-documented
 */

/* NOTE: @imports entfernt - _dashboard.css, _teams.css, _shifts.css, _dispatcher.css, _chat.css 
   werden bereits in main.css importiert. Diese Datei enthält nur Legacy-Overrides. */

/* ==========================================================================
   LEGACY OVERRIDES & COMPATIBILITY
   ========================================================================== */

/*
 * This section is for temporary compatibility overrides
 * As pages are tested and verified, these can be removed
 */

/* Admin Section Overrides (from style.css) */
.admin-section {
  margin-bottom: var(--space-2xl);
}

.admin-section .event-form,
.admin-section .user-form {
  margin-bottom: var(--space-sm);
}

.event-form input {
  margin-right: var(--space-xs);
  margin-bottom: var(--space-xs);
}

/* Permission Grid (from style.css) */
.permission-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-md);
  margin: var(--space-lg) 0;
}

.permission-card {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-md);
  background: var(--bg-elevated);
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.permission-card label {
  display: flex;
  gap: var(--space-sm);
  align-items: flex-start;
  cursor: pointer;
  color: var(--text);
}

/* User Management Grid (from style.css) */
.user-management-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: var(--space-xl);
}

.user-card {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--bg-elevated);
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.user-detail-meta {
  display: flex;
  gap: var(--space-lg);
  flex-wrap: wrap;
}

/* Gallery (from style.css) */
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: var(--space-md);
  margin-top: var(--space-xl);
}

.gallery-item {
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  overflow: hidden;
  background: var(--bg-elevated);
  transition: var(--transition-fast);
}

.gallery-item:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
}

.gallery-item img {
  width: 100%;
  height: auto;
  display: block;
}

/* Job Details (from style.css) */
.job-detail-grid {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: var(--space-xl);
}

.job-info-card {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-xl);
  background: var(--bg-elevated);
}

/* History/Activity (from style.css) */
.activity-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.activity-item {
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: var(--space-md);
  background: var(--bg-elevated);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.activity-item__time {
  font-size: var(--font-size-sm);
  color: var(--text-muted);
}

/* Profile (from style.css) */
.profile-hero {
  background: linear-gradient(135deg, var(--primary-light-18), rgba(8, 13, 22, 0.9));
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-2xl);
  display: flex;
  gap: var(--space-xl);
  align-items: center;
}

.profile-avatar {
  width: 120px;
  height: 120px;
  border-radius: 50%;
  background: var(--primary);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--font-size-3xl);
  font-weight: 700;
  flex-shrink: 0;
}

.profile-info h1 {
  margin: 0 0 var(--space-sm) 0;
  color: var(--text);
}

/* Utility Classes */
.hidden {
  display: none !important;
}

.text-center {
  text-align: center;
}

.flex-between {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* Message Box (from style.css) */
#message {
  display: none;
  margin: var(--space-lg) 0;
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-sm);
  font-weight: bold;
}

#message.success {
  background: rgba(34, 197, 94, 0.15);
  color: #4ade80;
  border: 1px solid #4ade80;
}

#message.error {
  background: rgba(239, 68, 68, 0.15);
  color: #f87171;
  border: 1px solid #f87171;
}

/* ==========================================================================
   RESPONSIVE OVERRIDES
   ========================================================================== */

@media (max-width: 960px) {
  .user-management-grid {
    grid-template-columns: 1fr;
  }

  .user-detail-meta {
    width: 100%;
    justify-content: flex-start;
  }

  .job-detail-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {
  .profile-hero {
    flex-direction: column;
    text-align: center;
    padding: var(--space-lg);
  }

  .gallery-grid {
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  }
}


/* ==========================================================================
   07. UTILITIES – Helper-Klassen
   ========================================================================== */

/* Layout & Structure Utilities (neu konsolidiert) */

/* == inlined: 07-utilities/_flexbox.css == */
/**
 * Flexbox Utilities
 * Häufig verwendete Flexbox-Pattern als Utility-Klassen
 * Ersetzt 700+ Zeilen duplizierten Code
 */

/* ==========================================================================
   FLEX CONTAINER
   ========================================================================== */

.flex {
  display: flex;
}

.inline-flex {
  display: inline-flex;
}

/* Flex Direction */
.flex-row {
  flex-direction: row;
}

.flex-col {
  flex-direction: column;
}

.flex-row-reverse {
  flex-direction: row-reverse;
}

.flex-col-reverse {
  flex-direction: column-reverse;
}

/* ==========================================================================
   ALIGNMENT
   ========================================================================== */

/* Align Items */
.items-start {
  align-items: flex-start;
}

.items-center {
  align-items: center;
}

.items-end {
  align-items: flex-end;
}

.items-stretch {
  align-items: stretch;
}

.items-baseline {
  align-items: baseline;
}

/* Justify Content */
.justify-start {
  justify-content: flex-start;
}

.justify-center {
  justify-content: center;
}

.justify-end {
  justify-content: flex-end;
}

.justify-between {
  justify-content: space-between;
}

.justify-around {
  justify-content: space-around;
}

.justify-evenly {
  justify-content: space-evenly;
}

/* ==========================================================================
   COMMON COMBINATIONS (Die häufigsten Pattern)
   ========================================================================== */

/* Horizontal centering */
.flex-center {
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Vertical centering */
.flex-center-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

/* Space between with vertical centering */
.flex-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

/* Flex start with vertical centering */
.flex-start {
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

/* Flex end with vertical centering */
.flex-end {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

/* Column with gap */
.flex-col-gap {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

/* Row with gap */
.flex-row-gap {
  display: flex;
  gap: var(--space-md);
  align-items: center;
}

/* ==========================================================================
   GAP UTILITIES
   ========================================================================== */

.gap-xs {
  gap: var(--space-xs);
}

.gap-sm {
  gap: var(--space-sm);
}

.gap-md {
  gap: var(--space-md);
}

.gap-lg {
  gap: var(--space-lg);
}

.gap-xl {
  gap: var(--space-xl);
}

.gap-2xl {
  gap: var(--space-2xl);
}

/* Column Gap */
.gap-col-xs {
  column-gap: var(--space-xs);
}

.gap-col-sm {
  column-gap: var(--space-sm);
}

.gap-col-md {
  column-gap: var(--space-md);
}

.gap-col-lg {
  column-gap: var(--space-lg);
}

/* Row Gap */
.gap-row-xs {
  row-gap: var(--space-xs);
}

.gap-row-sm {
  row-gap: var(--space-sm);
}

.gap-row-md {
  row-gap: var(--space-md);
}

.gap-row-lg {
  row-gap: var(--space-lg);
}

/* ==========================================================================
   FLEX ITEM
   ========================================================================== */

.flex-1 {
  flex: 1;
}

.flex-auto {
  flex: auto;
}

.flex-initial {
  flex: initial;
}

.flex-none {
  flex: none;
}

/* Flex Grow */
.flex-grow-0 {
  flex-grow: 0;
}

.flex-grow {
  flex-grow: 1;
}

/* Flex Shrink */
.flex-shrink-0 {
  flex-shrink: 0;
}

.flex-shrink {
  flex-shrink: 1;
}

/* ==========================================================================
   WRAP
   ========================================================================== */

.flex-wrap {
  flex-wrap: wrap;
}

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

.flex-wrap-reverse {
  flex-wrap: wrap-reverse;
}


/* == inlined: 07-utilities/_layout.css == */
/**
 * Layout Utilities
 * Konsolidierte Header, Actions und Section Pattern
 * Ersetzt 300+ Zeilen duplizierten Code
 */

/* ==========================================================================
   SECTION HEADER
   ========================================================================== */

.section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  margin-bottom: var(--space-lg);
}

.section-header--bordered {
  padding-bottom: var(--space-lg);
  border-bottom: 1px solid var(--border);
}

.section-header--compact {
  margin-bottom: var(--space-md);
}

.section-header--spacious {
  margin-bottom: var(--space-2xl);
}

/* Section Header Title */
.section-header__title {
  flex: 1;
  font-size: 20px;
  font-weight: 700;
  color: var(--text-primary);
  margin: 0;
}

.section-header__title--lg {
  font-size: 24px;
}

.section-header__title--sm {
  font-size: 16px;
}

/* Section Header Meta */
.section-header__meta {
  font-size: 14px;
  color: var(--text-secondary);
  margin-top: 4px;
}

/* Section Header Content */
.section-header__content {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
}

/* ==========================================================================
   SECTION ACTIONS
   ========================================================================== */

.section-actions {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  flex-shrink: 0;
}

.section-actions--start {
  justify-content: flex-start;
}

.section-actions--end {
  justify-content: flex-end;
}

.section-actions--between {
  justify-content: space-between;
  width: 100%;
}

.section-actions--compact {
  gap: var(--space-xs);
}

.section-actions--spacious {
  gap: var(--space-lg);
}

/* ==========================================================================
   MODAL/DIALOG HEADER
   ========================================================================== */

.modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  padding-bottom: var(--space-lg);
  border-bottom: 1px solid var(--border);
  margin-bottom: var(--space-lg);
}

.modal-header__title {
  font-size: 20px;
  font-weight: 700;
  color: var(--text-primary);
  margin: 0;
  flex: 1;
}

.modal-header__close {
  flex-shrink: 0;
}

/* ==========================================================================
   CARD HEADER
   ========================================================================== */

.card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  padding: var(--space-lg);
  border-bottom: 1px solid var(--border);
}

.card-header--no-border {
  border-bottom: none;
}

.card-header__title {
  font-size: 16px;
  font-weight: 600;
  color: var(--text-primary);
  margin: 0;
}

.card-header__actions {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

/* ==========================================================================
   TOOLBAR
   ========================================================================== */

.toolbar {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  padding: var(--space-md);
  background: var(--bg-elevated);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-lg);
}

.toolbar--bordered {
  border: 1px solid var(--border);
}

.toolbar--sticky {
  position: sticky;
  top: 0;
  z-index: var(--z-sticky, 10);
  background: var(--bg);
  border-bottom: 1px solid var(--border);
}

.toolbar__section {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

.toolbar__section--grow {
  flex: 1;
}

.toolbar__divider {
  width: 1px;
  height: 24px;
  background: var(--border);
  margin: 0 var(--space-xs);
}

/* ==========================================================================
   FORM ACTIONS
   ========================================================================== */

.form-actions {
  display: flex;
  align-items: center;
  gap: var(--space-lg);
  padding-top: var(--space-xl);
  margin-top: var(--space-xl);
  border-top: 1px solid var(--border);
}

.form-actions--no-border {
  border-top: none;
  padding-top: 0;
  margin-top: 0;
}

.form-actions--end {
  justify-content: flex-end;
}

.form-actions--between {
  justify-content: space-between;
}

.form-actions--center {
  justify-content: center;
}

.form-actions--compact {
  gap: var(--space-sm);
  padding-top: var(--space-lg);
  margin-top: var(--space-lg);
}

/* ==========================================================================
   DETAIL HEADER (für Detail-Seiten)
   ========================================================================== */

.detail-header {
  display: flex;
  gap: var(--space-lg);
  align-items: flex-start;
  padding-bottom: var(--space-xl);
  border-bottom: 1px solid var(--border);
  margin-bottom: var(--space-xl);
}

.detail-header__avatar {
  flex-shrink: 0;
}

.detail-header__content {
  flex: 1;
  min-width: 0;
}

.detail-header__title {
  font-size: 24px;
  font-weight: 700;
  color: var(--text-primary);
  margin: 0 0 var(--space-xs) 0;
}

.detail-header__meta {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  flex-wrap: wrap;
  color: var(--text-secondary);
  font-size: 14px;
}

.detail-header__actions {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  flex-shrink: 0;
}

/* ==========================================================================
   EMPTY STATE
   ========================================================================== */

.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: var(--space-4xl) var(--space-xl);
  color: var(--text-secondary);
}

.empty-state__icon {
  font-size: 48px;
  opacity: 0.5;
  margin-bottom: var(--space-lg);
}

.empty-state__title {
  font-size: 18px;
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: var(--space-sm);
}

.empty-state__message {
  font-size: 14px;
  color: var(--text-secondary);
  margin-bottom: var(--space-lg);
  max-width: 400px;
}

.empty-state__action {
  margin-top: var(--space-md);
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
  .section-header {
    flex-direction: column;
    align-items: flex-start;
  }

  .section-actions--mobile-full {
    width: 100%;
  }

  .detail-header {
    flex-direction: column;
  }

  .detail-header__actions {
    width: 100%;
    justify-content: flex-start;
  }

  .toolbar {
    flex-wrap: wrap;
  }

  .form-actions {
    flex-direction: column-reverse;
    align-items: stretch;
  }

  .form-actions > * {
    width: 100%;
  }
}


/* == inlined: 07-utilities/_panel.css == */
/**
 * Panel Utilities
 * Konsolidierte Panel-Pattern (Border + Padding + Background)
 * Ersetzt 270+ Zeilen duplizierten Code
 */

/* ==========================================================================
   BASE PANEL
   ========================================================================== */

.panel {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--bg-elevated);
}

.panel--elevated {
  background: var(--bg-elevated);
  box-shadow: var(--shadow-sm);
}

.panel--glass {
  background: var(--bg-glass);
  backdrop-filter: blur(12px);
  border: 1px solid var(--glass-border, rgba(255, 255, 255, 0.1));
}

/* ==========================================================================
   PANEL SIZES
   ========================================================================== */

.panel--xs {
  padding: var(--space-xs);
  border-radius: var(--radius-sm);
}

.panel--sm {
  padding: var(--space-sm);
  border-radius: var(--radius-sm);
}

.panel--md {
  padding: var(--space-md);
  border-radius: var(--radius-md);
}

.panel--lg {
  padding: var(--space-lg);
  border-radius: var(--radius-md);
}

.panel--xl {
  padding: var(--space-xl);
  border-radius: var(--radius-lg);
}

.panel--2xl {
  padding: var(--space-2xl);
  border-radius: var(--radius-lg);
}

/* ==========================================================================
   PANEL VARIANTS
   ========================================================================== */

.panel--no-border {
  border: none;
}

.panel--no-padding {
  padding: 0;
}

.panel--flat {
  background: transparent;
  border: none;
  padding: 0;
}

.panel--bordered-strong {
  border-color: var(--border-strong);
}

.panel--overlay {
  background: var(--bg-overlay);
}

/* ==========================================================================
   PANEL WITH SECTIONS
   ========================================================================== */

.panel__header {
  padding: var(--space-lg);
  border-bottom: 1px solid var(--border);
  margin: calc(-1 * var(--space-lg)) calc(-1 * var(--space-lg)) var(--space-lg);
}

.panel__body {
  padding: var(--space-lg);
}

.panel__footer {
  padding: var(--space-lg);
  border-top: 1px solid var(--border);
  margin: var(--space-lg) calc(-1 * var(--space-lg)) calc(-1 * var(--space-lg));
}

/* ==========================================================================
   COMMON COMBINATIONS
   ========================================================================== */

/* Card-like panel */
.panel--card {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--bg-elevated);
  box-shadow: var(--shadow-sm);
  transition: var(--transition-base);
}

.panel--card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

/* Well/Inset panel */
.panel--well {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--bg);
  box-shadow: var(--shadow-inner);
}

/* Highlighted panel */
.panel--highlight {
  border: 1px solid var(--primary);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--primary-light-05);
}

/* Info panel */
.panel--info {
  border: 1px solid var(--info);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--info-light);
}

/* Success panel */
.panel--success {
  border: 1px solid var(--success);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--success-light);
}

/* Warning panel */
.panel--warning {
  border: 1px solid var(--warning);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--warning-light-bg);
}

/* Error panel */
.panel--error {
  border: 1px solid var(--error);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--error-light);
}

/* ==========================================================================
   CLICKABLE PANEL
   ========================================================================== */

.panel--clickable {
  cursor: pointer;
  transition: var(--transition-base);
}

.panel--clickable:hover {
  border-color: var(--primary);
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

.panel--clickable:active {
  transform: none;
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
  .panel--responsive {
    padding: var(--space-md);
  }

  .panel__header,
  .panel__body,
  .panel__footer {
    padding: var(--space-md);
  }
}


/* == inlined: 07-utilities/_responsive.css == */
/**
 * Responsive Utilities
 * Zentrale Media Queries und Responsive Helper-Klassen
 * Ersetzt 150+ Zeilen verteilter Media Queries
 */

/* ==========================================================================
   BREAKPOINT VARIABLEN
   ========================================================================== */

:root {
  --breakpoint-sm: 640px;
  --breakpoint-md: 768px;
  --breakpoint-lg: 960px;
  --breakpoint-xl: 1200px;
  --breakpoint-2xl: 1440px;
}

/* ==========================================================================
   VISIBILITY UTILITIES
   ========================================================================== */

/* Hide on mobile */
@media (max-width: 767px) {
  .hide-mobile {
    display: none !important;
  }
}

/* Hide on tablet */
@media (min-width: 768px) and (max-width: 959px) {
  .hide-tablet {
    display: none !important;
  }
}

/* Hide on desktop */
@media (min-width: 960px) {
  .hide-desktop {
    display: none !important;
  }
}

/* Show only on mobile */
.show-mobile {
  display: none !important;
}

@media (max-width: 767px) {
  .show-mobile {
    display: block !important;
  }

  .show-mobile-flex {
    display: flex !important;
  }

  .show-mobile-inline {
    display: inline !important;
  }
}

/* Show only on tablet and up */
@media (min-width: 768px) {
  .show-tablet-up {
    display: block !important;
  }
}

/* Show only on desktop */
@media (min-width: 960px) {
  .show-desktop {
    display: block !important;
  }
}

/* ==========================================================================
   RESPONSIVE LAYOUT
   ========================================================================== */

/* Stack on mobile */
@media (max-width: 768px) {
  .stack-mobile {
    flex-direction: column !important;
  }

  .stack-mobile > * {
    width: 100% !important;
  }
}

/* Full width on mobile */
@media (max-width: 768px) {
  .full-width-mobile {
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* ==========================================================================
   RESPONSIVE SPACING
   ========================================================================== */

@media (max-width: 768px) {
  /* Reduce padding on mobile */
  .padding-responsive {
    padding: var(--space-md) !important;
  }

  .padding-x-responsive {
    padding-left: var(--space-md) !important;
    padding-right: var(--space-md) !important;
  }

  .padding-y-responsive {
    padding-top: var(--space-md) !important;
    padding-bottom: var(--space-md) !important;
  }

  /* Reduce gap on mobile */
  .gap-responsive {
    gap: var(--space-sm) !important;
  }
}

/* ==========================================================================
   RESPONSIVE TEXT
   ========================================================================== */

@media (max-width: 768px) {
  .text-sm-mobile {
    font-size: var(--font-size-sm) !important;
  }

  .text-xs-mobile {
    font-size: var(--font-size-xs) !important;
  }

  .text-center-mobile {
    text-align: center !important;
  }

  .text-left-mobile {
    text-align: left !important;
  }
}

/* ==========================================================================
   COMMON RESPONSIVE PATTERNS
   ========================================================================== */

/* Responsive Grid - 2 columns on desktop, 1 on mobile */
.responsive-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--space-lg);
}

@media (max-width: 768px) {
  .responsive-grid {
    grid-template-columns: 1fr;
    gap: var(--space-md);
  }
}

/* Responsive Flex - Row on desktop, column on mobile */
.responsive-flex {
  display: flex;
  gap: var(--space-lg);
}

@media (max-width: 768px) {
  .responsive-flex {
    flex-direction: column;
    gap: var(--space-md);
  }
}

/* Responsive Container */
.responsive-container {
  max-width: var(--container-max-width);
  margin: 0 auto;
  padding: 0 var(--container-padding);
}

@media (max-width: 768px) {
  .responsive-container {
    padding: 0 var(--space-md);
  }
}

/* ==========================================================================
   MOBILE-FIRST UTILITIES
   ========================================================================== */

/* Default mobile styles, override on larger screens */

/* Flex Direction */
.flex-col-mobile {
  flex-direction: column;
}

@media (min-width: 768px) {
  .flex-col-mobile {
    flex-direction: row;
  }
}

/* Justify */
.justify-start-mobile {
  justify-content: flex-start;
}

@media (min-width: 768px) {
  .justify-start-mobile {
    justify-content: space-between;
  }
}

/* Align */
.items-start-mobile {
  align-items: flex-start;
}

@media (min-width: 768px) {
  .items-start-mobile {
    align-items: center;
  }
}

/* ==========================================================================
   RESPONSIVE SIZING
   ========================================================================== */

/* Width */
@media (max-width: 768px) {
  .w-full-mobile {
    width: 100% !important;
  }

  .w-auto-mobile {
    width: auto !important;
  }
}

/* Height */
@media (max-width: 768px) {
  .h-auto-mobile {
    height: auto !important;
  }
}

/* ==========================================================================
   COMMON BREAKPOINT PATTERNS
   ========================================================================== */

/* Most common breakpoint: 768px */
@media (max-width: 768px) {
  /* Buttons full width on mobile */
  .btn-mobile-full {
    width: 100%;
    display: block;
  }

  /* Cards full width on mobile */
  .card-mobile-full {
    width: 100%;
  }

  /* Hide labels, show icons only on mobile */
  .hide-label-mobile .btn-text {
    display: none;
  }
}

/* Tablet breakpoint: 960px */
@media (max-width: 960px) {
  .compact-tablet {
    padding: var(--space-md);
  }
}

/* Large desktop: 1200px+ */
@media (min-width: 1200px) {
  .spacious-desktop {
    padding: var(--space-2xl);
  }
}

/* ==========================================================================
   PRINT STYLES
   ========================================================================== */

@media print {
  .no-print {
    display: none !important;
  }

  .print-full-width {
    width: 100% !important;
  }
}


/* General Utilities */

/* == inlined: 07-utilities/_utilities.css == */
/**
 * Utility-Klassen – Häufig verwendete Helper-Klassen
 */

/* ==========================================================================
   DISPLAY
   ========================================================================== */

.hidden {
  display: none !important;
}

.block {
  display: block !important;
}

.inline-block {
  display: inline-block !important;
}

.flex {
  display: flex !important;
}

.inline-flex {
  display: inline-flex !important;
}

.grid {
  display: grid !important;
}


/* ==========================================================================
   FLEX UTILITIES
   ========================================================================== */

.flex-row {
  flex-direction: row !important;
}

.flex-col {
  flex-direction: column !important;
}

.items-start {
  align-items: flex-start !important;
}

.items-center {
  align-items: center !important;
}

.items-end {
  align-items: flex-end !important;
}

.items-stretch {
  align-items: stretch !important;
}

.justify-start {
  justify-content: flex-start !important;
}

.justify-center {
  justify-content: center !important;
}

.justify-end {
  justify-content: flex-end !important;
}

.justify-between {
  justify-content: space-between !important;
}

.flex-wrap {
  flex-wrap: wrap !important;
}

.flex-1 {
  flex: 1 !important;
}


/* ==========================================================================
   GAP (Flex/Grid Spacing)
   ========================================================================== */

.gap-xs {
  gap: var(--space-xs) !important;
}

.gap-sm {
  gap: var(--space-sm) !important;
}

.gap-md {
  gap: var(--space-md) !important;
}

.gap-lg {
  gap: var(--space-lg) !important;
}

.gap-xl {
  gap: var(--space-xl) !important;
}

.gap-2xl {
  gap: var(--space-2xl) !important;
}


/* ==========================================================================
   SPACING (Margin & Padding)
   ========================================================================== */

/* Margin */
.m-0 { margin: 0 !important; }
.m-xs { margin: var(--space-xs) !important; }
.m-sm { margin: var(--space-sm) !important; }
.m-md { margin: var(--space-md) !important; }
.m-lg { margin: var(--space-lg) !important; }
.m-xl { margin: var(--space-xl) !important; }
.m-2xl { margin: var(--space-2xl) !important; }

/* Margin Top */
.mt-0 { margin-top: 0 !important; }
.mt-xs { margin-top: var(--space-xs) !important; }
.mt-sm { margin-top: var(--space-sm) !important; }
.mt-md { margin-top: var(--space-md) !important; }
.mt-lg { margin-top: var(--space-lg) !important; }
.mt-xl { margin-top: var(--space-xl) !important; }
.mt-2xl { margin-top: var(--space-2xl) !important; }

/* Margin Bottom */
.mb-0 { margin-bottom: 0 !important; }
.mb-xs { margin-bottom: var(--space-xs) !important; }
.mb-sm { margin-bottom: var(--space-sm) !important; }
.mb-md { margin-bottom: var(--space-md) !important; }
.mb-lg { margin-bottom: var(--space-lg) !important; }
.mb-xl { margin-bottom: var(--space-xl) !important; }
.mb-2xl { margin-bottom: var(--space-2xl) !important; }

/* Margin Left */
.ml-0 { margin-left: 0 !important; }
.ml-auto { margin-left: auto !important; }

/* Margin Right */
.mr-0 { margin-right: 0 !important; }
.mr-auto { margin-right: auto !important; }

/* Padding */
.p-0 { padding: 0 !important; }
.p-xs { padding: var(--space-xs) !important; }
.p-sm { padding: var(--space-sm) !important; }
.p-md { padding: var(--space-md) !important; }
.p-lg { padding: var(--space-lg) !important; }
.p-xl { padding: var(--space-xl) !important; }
.p-2xl { padding: var(--space-2xl) !important; }


/* ==========================================================================
   WIDTH & HEIGHT
   ========================================================================== */

.w-full {
  width: 100% !important;
}

.w-auto {
  width: auto !important;
}

.h-full {
  height: 100% !important;
}

.h-auto {
  height: auto !important;
}


/* ==========================================================================
   POSITION
   ========================================================================== */

.relative {
  position: relative !important;
}

.absolute {
  position: absolute !important;
}

.fixed {
  position: fixed !important;
}

.sticky {
  position: sticky !important;
}


/* ==========================================================================
   TEXT UTILITIES
   ========================================================================== */

.text-left {
  text-align: left !important;
}

.text-center {
  text-align: center !important;
}

.text-right {
  text-align: right !important;
}

.text-uppercase {
  text-transform: uppercase !important;
  letter-spacing: 0.05em;
}

.text-capitalize {
  text-transform: capitalize !important;
}

.font-normal {
  font-weight: var(--font-weight-normal) !important;
}

.font-medium {
  font-weight: var(--font-weight-medium) !important;
}

.font-semibold {
  font-weight: var(--font-weight-semibold) !important;
}

.font-bold {
  font-weight: var(--font-weight-bold) !important;
}

.text-xs {
  font-size: var(--font-size-xs) !important;
}

.text-sm {
  font-size: var(--font-size-sm) !important;
}

.text-base {
  font-size: var(--font-size-base) !important;
}

.text-lg {
  font-size: var(--font-size-lg) !important;
}

.text-xl {
  font-size: var(--font-size-xl) !important;
}


/* ==========================================================================
   COLOR UTILITIES
   ========================================================================== */

.text-primary {
  color: var(--primary) !important;
}

.text-secondary {
  color: var(--text-secondary) !important;
}

.text-muted {
  color: var(--text-muted) !important;
}

.text-success {
  color: var(--success) !important;
}

.text-error {
  color: var(--error) !important;
}

.text-warning {
  color: var(--warning) !important;
}

.bg-primary {
  background-color: var(--primary) !important;
}

.bg-surface {
  background-color: var(--bg-elevated) !important;
}

.bg-elevated {
  background-color: var(--bg-elevated) !important;
}


/* ==========================================================================
   BORDER & RADIUS
   ========================================================================== */

.border {
  border: 1px solid var(--border) !important;
}

.border-top {
  border-top: 1px solid var(--border) !important;
}

.border-bottom {
  border-bottom: 1px solid var(--border) !important;
}

.rounded-sm {
  border-radius: var(--radius-sm) !important;
}

.rounded {
  border-radius: var(--radius-md) !important;
}

.rounded-lg {
  border-radius: var(--radius-lg) !important;
}

.rounded-xl {
  border-radius: var(--radius-xl) !important;
}

.rounded-full {
  border-radius: var(--radius-full) !important;
}


/* ==========================================================================
   SHADOW
   ========================================================================== */

.shadow-sm {
  box-shadow: var(--shadow-sm) !important;
}

.shadow {
  box-shadow: var(--shadow-md) !important;
}

.shadow-lg {
  box-shadow: var(--shadow-lg) !important;
}

.shadow-none {
  box-shadow: none !important;
}


/* ==========================================================================
   OVERFLOW
   ========================================================================== */

.overflow-auto {
  overflow: auto !important;
}

.overflow-hidden {
  overflow: hidden !important;
}

.overflow-x-auto {
  overflow-x: auto !important;
}

.overflow-y-auto {
  overflow-y: auto !important;
}


/* ==========================================================================
   CURSOR
   ========================================================================== */

.cursor-pointer {
  cursor: pointer !important;
}

.cursor-not-allowed {
  cursor: not-allowed !important;
}


/* ==========================================================================
   OPACITY
   ========================================================================== */

.opacity-0 {
  opacity: 0 !important;
}

.opacity-50 {
  opacity: 0.5 !important;
}

.opacity-75 {
  opacity: 0.75 !important;
}

.opacity-100 {
  opacity: 1 !important;
}


/* ==========================================================================
   Z-INDEX
   ========================================================================== */

.z-0 {
  z-index: 0 !important;
}

.z-10 {
  z-index: var(--z-dropdown) !important;
}

.z-20 {
  z-index: var(--z-sticky) !important;
}

.z-30 {
  z-index: var(--z-fixed) !important;
}

.z-50 {
  z-index: var(--z-modal) !important;
}


/* == inlined: 07-utilities/_misc.css == */
/**
 * Miscellaneous Utilities & Components
 *
 * User management, tags, widgets, alerts, and small utilities
 * Restored from archive: style.css
 */

/* ==========================================================================
  MESSAGE HELPER
  ========================================================================== */

#message.visible {
  display: block !important;
}

/* ==========================================================================
   USER MANAGEMENT
   ========================================================================== */

.user-management-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  align-items: center;
  margin-bottom: var(--space-lg);
}

.user-management-toolbar input {
  flex: 1;
  min-width: 240px;
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  background: var(--bg-overlay);
  color: var(--text);
}

.user-list-panel {
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-lg);
  background: var(--bg-elevated);
}

.user-detail-contact {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}

.user-detail-assignments {
  margin-top: var(--space-xl);
}


/* ==========================================================================
   TAGS & BADGES
   ========================================================================== */

.tag-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  margin-top: var(--space-xs);
}


/* Widget styles moved to _dashboard.css */


/* ==========================================================================
   ALERTS & MESSAGES
   ========================================================================== */

.alert {
  padding: var(--space-md) var(--space-lg);
  border-radius: var(--radius-md);
  border-left: 4px solid;
  margin-bottom: var(--space-lg);
}

.alert.alert--info {
  background: rgba(59, 130, 246, 0.1);
  border-color: #3b82f6;
  color: #93c5fd;
}

.alert.alert--success {
  background: rgba(34, 197, 94, 0.1);
  border-color: #22c55e;
  color: #86efac;
}

.alert.alert--warning {
  background: rgba(245, 158, 11, 0.1);
  border-color: #f59e0b;
  color: #fcd34d;
}

.alert.alert--error {
  background: rgba(239, 68, 68, 0.1);
  border-color: #ef4444;
  color: #fca5a5;
}


/* ==========================================================================
   MARKDOWN CONTENT
   ========================================================================== */

.markdown-body {
  line-height: var(--line-height-relaxed);
  color: var(--text);
}

.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
  margin-top: var(--space-xl);
  margin-bottom: var(--space-md);
  font-weight: var(--font-weight-semibold);
}

.markdown-body p {
  margin-bottom: var(--space-md);
}

.markdown-body ul,
.markdown-body ol {
  margin-bottom: var(--space-md);
  padding-left: var(--space-xl);
}

.markdown-body code {
  background: var(--bg-elevated);
  padding: 0.2em 0.4em;
  border-radius: var(--radius-sm);
  font-size: 0.9em;
}

.markdown-body pre {
  background: var(--bg-elevated);
  padding: var(--space-md);
  border-radius: var(--radius-md);
  overflow-x: auto;
  margin-bottom: var(--space-md);
}


/* ==========================================================================
   PWA INSTALL BANNER
   ========================================================================== */

.pwa-install {
  position: fixed;
  bottom: var(--space-lg);
  left: 50%;
  transform: translateX(-50%);
  max-width: 90vw;
  width: 420px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-lg);
  padding-top: calc(var(--space-lg) + 0.5rem);
  box-shadow: var(--shadow-lg);
  z-index: var(--z-notification);
}

.pwa-install:not(.hidden) {
  display: block;
}

.pwa-install__close {
  position: absolute;
  top: var(--space-sm);
  right: var(--space-sm);
  border: none;
  background: transparent;
  color: var(--text-muted, var(--text));
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
  padding: 0.25rem 0.5rem;
  border-radius: var(--radius-sm, 4px);
}

.pwa-install__close:hover {
  color: var(--text);
  background: rgba(255, 255, 255, 0.06);
}

.pwa-install__text {
  display: none;
  margin-bottom: var(--space-md);
  color: var(--text);
}

.pwa-install[data-mode="default"] .pwa-install__text[data-mode="default"],
.pwa-install[data-mode="ios"] .pwa-install__text[data-mode="ios"],
.pwa-install[data-mode="manual"] .pwa-install__text[data-mode="manual"] {
  display: block;
}

.pwa-install__actions {
  display: flex;
  gap: var(--space-sm);
  align-items: center;
}

/* Soft-Einstieg Dashboard (unabhängig vom Banner-Dismiss) */
.pwa-install-entry {
  margin: var(--space-xl) 0 var(--space-md);
  text-align: center;
  font-size: 0.9rem;
}

.pwa-install-entry[hidden] {
  display: none !important;
}

.pwa-install-entry__btn {
  border: none;
  background: transparent;
  color: var(--text-muted, var(--text));
  text-decoration: underline;
  text-underline-offset: 0.15em;
  cursor: pointer;
  padding: 0;
  font: inherit;
}

.pwa-install-entry__btn:hover,
.pwa-install-entry__btn:focus-visible {
  color: var(--text);
}

.pwa-install-entry__hint {
  font-size: 0.85em;
}

/* Hilfe-Blöcke in den Einstellungen */
.pwa-install-help__block {
  display: none;
}

#pwa-install-help[data-mode="ios"] .pwa-install-help__block[data-mode="ios"],
#pwa-install-help[data-mode="manual"] .pwa-install-help__block[data-mode="manual"] {
  display: block;
}

#pwa-install-help.is-open,
#pwa-install-help:not([hidden]) {
  display: block;
}


/* ==========================================================================
   ROLE & PERMISSION MANAGEMENT
   ========================================================================== */

.role-create-row {
  display: flex;
  gap: var(--space-md);
  align-items: center;
  margin-bottom: var(--space-lg);
}

.permission-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-md);
  margin: var(--space-lg) 0;
}

.permission-card {
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  padding: var(--space-md);
  background: var(--bg-elevated);
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
}

.permission-card label {
  display: flex;
  gap: var(--space-xs);
  align-items: flex-start;
  cursor: pointer;
}


/* ==========================================================================
   TOOLBAR FIELDS
   ========================================================================== */

.toolbar-field {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

.toolbar-field--checkbox {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
}

.toolbar-field--checkbox input[type="checkbox"] {
  cursor: pointer;
}

.toolbar-field--checkbox label {
  cursor: pointer;
}


/* ==========================================================================
   EVENT SELECT
   ========================================================================== */

.event-select-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
}


/* ==========================================================================
   TEAM MODAL
   ========================================================================== */

.team-modal {
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.5);
}

.team-modal.hidden {
  display: none;
}


/* ==========================================================================
   MUTED TEXT
   ========================================================================== */

.muted {
  color: var(--text-muted);
  font-size: var(--font-size-sm);
}


/* ==========================================================================
   LIST SECTION
   ========================================================================== */

.list-section {
  margin-bottom: var(--space-xl);
}



/* ==========================================================================
   08. THEMES – Theme-Varianten
   ========================================================================== */


/* == inlined: 08-themes/_theme-soa.css == */
/**
 * Stemweder Open Air Theme (SOA)
 * CI 2024/2025
 *
 * Google Fonts (Archivo Narrow / Roboto) werden nicht per @import geladen –
 * die HTML-Middleware injiziert preconnect + stylesheet (nicht render-blockierend
 * in der CSS-Kette). Siehe middleware/cspHtmlNonce.js → injectGoogleFontsIntoHtml.
 */

/* --- SOA DARK (Das Nachtfestival) --- */
:root[data-theme="soa-dark"] {
  color-scheme: dark;

  /* CI Farben */
  --soa-main-1: #E64A19; /* Orangerot */
  --soa-main-2: #121416; /* Dunkelgrau (statt Petrol) */
  --soa-sub-1: #F4E07B;  /* Gelb */
  --soa-sub-2: #E9969F;  /* Rosa */
  --soa-sub-3: #7BBFB9;  /* Hellpetrol */

  /* Typografie */
  --font-family-base: 'Roboto', sans-serif;
  --font-family-headings: 'Archivo Narrow', sans-serif;

  /* App Mapping */
  --primary: var(--soa-main-1);
  --primary-hover: #FF7043;
  --primary-dark: #FF5722;
  
  --bg: var(--soa-main-2);
  --bg-elevated: #1C1F22;
  --bg-overlay: #24282C;
  --bg-glass: rgba(18, 20, 22, 0.75);

  --text: #F8F9FA;
  --text-secondary: #CED4DA;
  --text-muted: #ADB5BD;

  --border: rgba(255, 255, 255, 0.08);
  --border-strong: rgba(255, 255, 255, 0.15);

  --shadow-sm: 0 4px 10px rgba(0, 0, 0, 0.4);
  --shadow-md: 0 10px 24px rgba(0, 0, 0, 0.5);
  --shadow-lg: 0 20px 40px rgba(0, 0, 0, 0.6);

  --input-bg: var(--bg-overlay);
  --form-bg: var(--bg-overlay);
  --chat-input-bg: var(--bg-overlay);

  /* Overlays (Themable Tokens) */
  --hero-bg-gradient: linear-gradient(145deg, rgba(18, 20, 22, 0.65), rgba(18, 20, 22, 0.2));
  --hero-text-color: #ffffff;
  --hero-muted-color: rgba(255, 255, 255, 0.85);
  --hero-img-filter: brightness(1.15) saturate(1.1);
  --hero-img-opacity: 1.0;

  --card-img-bg-gradient: linear-gradient(135deg, rgba(18, 20, 22, 0.6), rgba(18, 20, 22, 0.15));
  --card-img-text-color: #ffffff;
  --card-img-muted-color: rgba(255, 255, 255, 0.9);
  --card-img-filter: brightness(1.05) saturate(1.1);
  --card-img-opacity: 1.0;
  --card-img-border: rgba(255, 255, 255, 0.1);

  /* Navigation */
  --nav-text: #C8CDD2;
  --nav-text-active: #FFFFFF;
  --nav-active-bg: rgba(255, 255, 255, 0.10);
  --nav-active-indicator: #FFFFFF;
}

/* --- SOA LIGHT (Das Tagfestival) --- */
:root[data-theme="soa-light"] {
  color-scheme: light;

  /* CI */
  --soa-main-1: #E64A19;
  --soa-main-2: #001A1A;
  --soa-sub-1: #F4E07B;
  --soa-sub-2: #C75B6A;
  --soa-sub-3: #7BBFB9;
  --soa-sub-3-soft: #E8F4F3;

  --font-family-base: 'Roboto', sans-serif;
  --font-family-headings: 'Archivo Narrow', sans-serif;

  /* Primary – durchgängig aus SOA-Orange */
  --primary: var(--soa-main-1);
  --primary-hover: #FF7043;
  --primary-dark: #FF5722;
  --primary-subtle: rgba(255, 87, 34, 0.05);
  --primary-low: rgba(255, 87, 34, 0.10);
  --primary-medium: rgba(255, 87, 34, 0.22);
  --primary-high: rgba(255, 87, 34, 0.36);
  --primary-glow: rgba(255, 112, 67, 0.24);
  --primary-gradient: linear-gradient(135deg, #FF7043, #FF5722);
  --primary-light: var(--primary-low);
  --primary-light-03: var(--primary-subtle);
  --primary-light-05: var(--primary-subtle);
  --primary-light-10: var(--primary-low);
  --primary-light-12: var(--primary-low);
  --primary-light-18: var(--primary-low);
  --primary-light-25: var(--primary-medium);
  --primary-light-30: var(--primary-medium);
  --primary-light-35: var(--primary-medium);
  --primary-light-50: var(--primary-high);

  /* Flächen */
  --bg: #F4F7F7;
  --bg-elevated: #FFFFFF;
  --bg-overlay: #FFFFFF;
  --bg-glass: rgba(255, 255, 255, 0.92);
  --bg-hover: rgba(0, 26, 26, 0.04);
  --muted-bg: rgba(0, 26, 26, 0.06);

  /* Text */
  --text: var(--soa-main-2);
  --text-secondary: #37474F;
  --text-muted: #627882;

  /* Ränder */
  --border: rgba(0, 26, 26, 0.09);
  --border-strong: rgba(0, 26, 26, 0.16);
  --border-glow: rgba(42, 111, 106, 0.24);
  --shadow-glow: 0 0 14px rgba(42, 111, 106, 0.08);
  --shadow-focus: 0 0 0 3px rgba(42, 111, 106, 0.20);

  --shadow-sm: 0 4px 10px rgba(0, 26, 26, 0.05);
  --shadow-md: 0 10px 24px rgba(0, 26, 26, 0.08);
  --shadow-lg: 0 20px 40px rgba(0, 26, 26, 0.12);

  /* Glas / Navigation */
  --glass-blur: blur(12px);
  --glass-border: rgba(0, 26, 26, 0.08);
  --nav-bg: rgba(255, 255, 255, 0.94);
  --nav-text: var(--soa-main-2, #001A1A);
  --nav-text-active: var(--soa-main-2, #001A1A);
  --nav-active-bg: rgba(0, 26, 26, 0.07);
  --nav-active-indicator: var(--soa-main-2, #001A1A);
  --on-primary: #FFFFFF;

  /* Status – gedämpft für helle Flächen */
  --success: #15803d;
  --success-light: rgba(21, 128, 61, 0.12);
  --success-bg: rgba(21, 128, 61, 0.10);
  --success-glow: rgba(21, 128, 61, 0.20);
  --warning: #c9a000;
  --warning-light: #F4E07B;
  --warning-light-bg: rgba(244, 224, 123, 0.45);
  --warning-bg: rgba(244, 224, 123, 0.42);
  --warning-glow: rgba(244, 224, 123, 0.35);
  --error: #b91c1c;
  --error-light: rgba(185, 28, 28, 0.10);
  --error-dark: #991b1b;
  --error-glow: rgba(185, 28, 28, 0.18);
  --info: #2a6f6a;
  --info-light: rgba(123, 191, 185, 0.16);
  --info-bg: rgba(123, 191, 185, 0.16);
  --info-glow: rgba(42, 111, 106, 0.15);
  --danger: #c0392b;
  --danger-bg: rgba(192, 57, 43, 0.10);

  /* Buttons */
  --button-secondary-bg: #FFFFFF;
  --button-secondary-text: var(--text);
  --button-secondary-hover: #F0F4F4;

  /* Formulare / Tabellen */
  --input-bg: #FFFFFF;
  --form-bg: #FFFFFF;
  --chat-input-bg: #FFFFFF;
  --table-bg: #FFFFFF;
  --table-header-bg: #F0F4F4;
  --table-row-even-bg: #F8FAFA;
  --table-hover-bg: var(--bg-hover);

  /* Hero & Karten mit Hintergrundbild */
  --hero-bg-gradient: linear-gradient(145deg, rgba(255, 255, 255, 0.94), rgba(255, 255, 255, 0.75));
  --hero-text-color: var(--soa-main-2);
  --hero-muted-color: var(--text-secondary);
  --hero-img-filter: brightness(1.05) saturate(1.05);
  --hero-img-opacity: 0.65;

  --card-img-bg-gradient: linear-gradient(135deg, rgba(255, 255, 255, 0.90), rgba(255, 255, 255, 0.55));
  --card-img-text-color: var(--soa-main-2);
  --card-img-muted-color: #37474F;
  --card-img-filter: brightness(1.02) saturate(1.03);
  --card-img-opacity: 0.75;
  --card-img-border: var(--border);

  --avatar-fallback-bg: linear-gradient(135deg, var(--primary-hover), var(--primary));

  --reservation-pending-bg: rgba(123, 191, 185, 0.22);
  --reservation-pending-fg: #2a5f5a;
  --reservation-pending-border: rgba(123, 191, 185, 0.45);
}

/* --- SOA AUTO (Reagiert auf Systemeinstellungen) --- */
:root[data-theme="soa"] {
  color-scheme: light dark;
}

@media (prefers-color-scheme: dark) {
  :root[data-theme="soa"] {
    --soa-main-1: #E64A19;
    --soa-main-2: #121416;
    --font-family-base: 'Roboto', sans-serif;
    --font-family-headings: 'Archivo Narrow', sans-serif;
    --primary: var(--soa-main-1);
    --primary-hover: #FF7043;
    --primary-dark: #FF5722;
    --bg: var(--soa-main-2);
    --bg-elevated: #1C1F22;
    --bg-overlay: #24282C;
    --bg-glass: rgba(18, 20, 22, 0.75);
    --text: #F8F9FA;
    --text-secondary: #CED4DA;
    --text-muted: #ADB5BD;
    --border: rgba(255, 255, 255, 0.08);
    --border-strong: rgba(255, 255, 255, 0.15);
    --shadow-sm: 0 4px 10px rgba(0, 0, 0, 0.4);
    --shadow-md: 0 10px 24px rgba(0, 0, 0, 0.5);
    --shadow-lg: 0 20px 40px rgba(0, 0, 0, 0.6);
    --input-bg: var(--bg-overlay);
    --form-bg: var(--bg-overlay);
    --chat-input-bg: var(--bg-overlay);
    --hero-bg-gradient: linear-gradient(145deg, rgba(18, 20, 22, 0.65), rgba(18, 20, 22, 0.2));
    --hero-text-color: #ffffff;
    --hero-muted-color: rgba(255, 255, 255, 0.85);
    --hero-img-filter: brightness(1.15) saturate(1.1);
    --hero-img-opacity: 1.0;
    --card-img-bg-gradient: linear-gradient(135deg, rgba(18, 20, 22, 0.6), rgba(18, 20, 22, 0.15));
    --card-img-text-color: #ffffff;
    --card-img-muted-color: rgba(255, 255, 255, 0.9);
    --card-img-filter: brightness(1.05) saturate(1.1);
    --card-img-opacity: 1.0;
    --card-img-border: rgba(255, 255, 255, 0.1);
    --nav-text: #C8CDD2;
    --nav-text-active: #FFFFFF;
    --nav-active-bg: rgba(255, 255, 255, 0.10);
    --nav-active-indicator: #FFFFFF;
  }
}

@media (prefers-color-scheme: light) {
  :root[data-theme="soa"] {
    --soa-main-1: #E64A19;
    --soa-main-2: #001A1A;
    --soa-sub-1: #F4E07B;
    --soa-sub-2: #C75B6A;
    --soa-sub-3: #7BBFB9;
    --soa-sub-3-soft: #E8F4F3;
    --font-family-base: 'Roboto', sans-serif;
    --font-family-headings: 'Archivo Narrow', sans-serif;
    --primary: var(--soa-main-1);
    --primary-hover: #FF7043;
    --primary-dark: #FF5722;
    --bg: #F4F7F7;
    --bg-elevated: #FFFFFF;
    --bg-overlay: #FFFFFF;
    --bg-glass: rgba(255, 255, 255, 0.92);
    --bg-hover: rgba(0, 26, 26, 0.04);
    --muted-bg: rgba(0, 26, 26, 0.06);
    --text: var(--soa-main-2);
    --text-secondary: #37474F;
    --text-muted: #627882;
    --border: rgba(0, 26, 26, 0.09);
    --border-strong: rgba(0, 26, 26, 0.16);
    --shadow-sm: 0 4px 10px rgba(0, 26, 26, 0.05);
    --shadow-md: 0 10px 24px rgba(0, 26, 26, 0.08);
    --shadow-lg: 0 20px 40px rgba(0, 26, 26, 0.12);
    --input-bg: #FFFFFF;
    --form-bg: #FFFFFF;
    --chat-input-bg: #FFFFFF;
    --hero-bg-gradient: linear-gradient(145deg, rgba(255, 255, 255, 0.94), rgba(255, 255, 255, 0.75));
    --hero-text-color: var(--soa-main-2);
    --hero-muted-color: var(--text-secondary);
    --hero-img-filter: brightness(1.05) saturate(1.05);
    --hero-img-opacity: 0.65;
    --card-img-bg-gradient: linear-gradient(135deg, rgba(255, 255, 255, 0.90), rgba(255, 255, 255, 0.55));
    --card-img-text-color: var(--soa-main-2);
    --card-img-muted-color: #37474F;
    --card-img-filter: brightness(1.02) saturate(1.03);
    --card-img-opacity: 0.75;
    --card-img-border: var(--border);
    --nav-bg: rgba(255, 255, 255, 0.94);
    --nav-text: var(--soa-main-2, #001A1A);
    --nav-text-active: var(--soa-main-2, #001A1A);
    --nav-active-bg: rgba(0, 26, 26, 0.07);
    --nav-active-indicator: var(--soa-main-2, #001A1A);
    --reservation-pending-bg: rgba(123, 191, 185, 0.22);
    --reservation-pending-fg: #2a5f5a;
    --reservation-pending-border: rgba(123, 191, 185, 0.45);
  }
}

/* --- Spezielle Komponenten-Anpassungen --- */

:root[data-theme^="soa"] {
  font-family: var(--font-family-base);
}

:root[data-theme^="soa"] h1, 
:root[data-theme^="soa"] h2, 
:root[data-theme^="soa"] h3, 
:root[data-theme^="soa"] h4,
:root[data-theme^="soa"] .brand__wordmark,
:root[data-theme^="soa"] .sidebar-header,
:root[data-theme^="soa"] .section-header h1 {
  font-family: var(--font-family-headings);
}

/* Personennamen: normales Letter-Spacing statt Überschriften-Tracking */
:root[data-theme^="soa"] .responsible-card h3,
:root[data-theme^="soa"] .responsible-card h4,
:root[data-theme^="soa"] .team-member-pill h3,
:root[data-theme^="soa"] .avatar-inline__name,
:root[data-theme^="soa"] .assignment-name,
:root[data-theme^="soa"] .result-name,
:root[data-theme^="soa"] .name-primary,
:root[data-theme^="soa"] .user-name-meta strong,
:root[data-theme^="soa"] .chat-message__meta strong,
:root[data-theme^="soa"] .user-detail-heading h2,
:root[data-theme^="soa"] .profile-basic-row strong,
:root[data-theme^="soa"] #welcome-message,
:root[data-theme^="soa"] .desktop-login__card h1,
:root[data-theme^="soa"] .mobile-login__card h1,
:root[data-theme^="soa"] [data-branding-text] {
  letter-spacing: normal;
}

/* Chat Bubbles */
:root[data-theme^="soa"] .chat-message.own .message-bubble {
  background: var(--soa-main-1);
  color: #FFFFFF;
}

:root[data-theme="soa-dark"] .chat-message:not(.own) .message-bubble,
:root[data-theme="soa"][data-color-scheme="dark"] .chat-message:not(.own) .message-bubble {
  background: var(--bg-overlay);
  border: 1px solid var(--border);
}

:root[data-theme="soa-light"] .chat-message:not(.own) .message-bubble,
:root[data-theme="soa"][data-color-scheme="light"] .chat-message:not(.own) .message-bubble {
  background: var(--soa-sub-3-soft, #E8F4F3);
  color: var(--soa-main-2);
  border: 1px solid rgba(0, 26, 26, 0.08);
}

/* Mentions */
:root[data-theme^="soa"] .chat-mention {
  color: var(--soa-sub-2);
  font-weight: bold;
}

/* Karten-Rahmen: einheitlich in _theme-soa-ui.css (--accent) */

/* Hero – kein Text-Glow im hellen Theme */
:root[data-theme="soa-light"] [class*="hero"] h1,
:root[data-theme="soa-light"] [class*="hero"] p,
:root[data-theme="soa-light"] .widget-card.has-bg h3,
:root[data-theme="soa-light"] .widget-card.has-bg p,
:root[data-theme="soa"][data-color-scheme="light"] [class*="hero"] h1,
:root[data-theme="soa"][data-color-scheme="light"] [class*="hero"] p,
:root[data-theme="soa"][data-color-scheme="light"] .widget-card.has-bg h3,
:root[data-theme="soa"][data-color-scheme="light"] .widget-card.has-bg p {
  text-shadow: none;
}

/* Buttons */
:root[data-theme^="soa"] .btn-primary {
  background: var(--cta-gradient, var(--primary-gradient, var(--primary)));
  color: var(--cta-fg, var(--on-primary, #fff));
  border: none;
  box-shadow: 0 2px 8px var(--cta-glow, var(--primary-glow));
}

:root[data-theme^="soa"] .btn-primary:hover {
  background: var(--cta-gradient-hover, var(--primary-hover));
  color: var(--cta-fg, var(--on-primary, #fff));
  transform: translateY(-1px);
  box-shadow: 0 4px 14px var(--cta-glow, var(--primary-glow));
}

:root[data-theme="soa-light"] .chat-mention {
  color: var(--soa-sub-2);
}

/* Offene-Schichten-Karte – helle Darstellung (Aktion/Rahmen in _theme-soa-ui.css) */
:root[data-theme="soa-light"] .dashboard-open-shifts-card {
  --open-shifts-fg: var(--soa-main-2, #001A1A);
  --open-shifts-teaser: var(--text-secondary);
  --open-shifts-bg: var(--bg-elevated, #FFFFFF);
  --open-shifts-shadow: 0 6px 20px rgba(0, 26, 26, 0.08);
  --open-shifts-shadow-hover: 0 10px 28px rgba(0, 26, 26, 0.12);
  --open-shifts-title-shadow: none;
}

@media (prefers-color-scheme: light) {
  :root[data-theme="soa"] .dashboard-open-shifts-card {
    --open-shifts-fg: var(--soa-main-2, #001A1A);
    --open-shifts-teaser: var(--text-secondary);
    --open-shifts-bg: var(--bg-elevated, #FFFFFF);
    --open-shifts-shadow: 0 6px 20px rgba(0, 26, 26, 0.08);
    --open-shifts-shadow-hover: 0 10px 28px rgba(0, 26, 26, 0.12);
    --open-shifts-title-shadow: none;
  }
}


/* == inlined: 08-themes/_theme-soa-light-surfaces.css == */
/**
 * SOA Helles Theme – Komponenten-Fixes gegen Dark-Leaks
 *
 * Gilt für soa-light und soa (System hell).
 * Basis-Komponenten behalten Dark-Defaults; hier werden helle Oberflächen nachgezogen.
 */

/* Zusätzliche Interaktions-Tokens für soa-light */
:root[data-theme="soa-light"] {
  --bg-hover: rgba(0, 26, 26, 0.04);
  --glass-blur: blur(12px);
  --glass-border: rgba(0, 26, 26, 0.08);
  --nav-bg: rgba(255, 255, 255, 0.94);
  --nav-text: var(--soa-main-2, #001A1A);
  --nav-text-active: var(--soa-main-2, #001A1A);
  --nav-active-bg: rgba(0, 26, 26, 0.07);
  --nav-active-indicator: var(--soa-main-2, #001A1A);
  --on-primary: #FFFFFF;
  --muted-bg: rgba(0, 26, 26, 0.06);
  --success: #15803d;
  --success-bg: rgba(21, 128, 61, 0.12);
  --shadow-focus: 0 0 0 3px rgba(42, 111, 106, 0.20);
  --shift-crew-badge-bg: var(--bg-elevated);
  --shift-crew-badge-fg: var(--text-secondary);
  --shift-crew-badge-border: var(--border-strong);
  --widget-cancel-on-image-bg: rgba(255, 255, 255, 0.92);
  --widget-cancel-on-image-fg: var(--soa-main-2, #001A1A);
  --widget-cancel-on-image-border: var(--border-strong);
  --gallery-control-bg: rgba(255, 255, 255, 0.88);
  --gallery-control-fg: var(--soa-main-2, #001A1A);
  --gallery-control-hover-bg: rgba(255, 255, 255, 0.98);
  --gallery-info-panel-bg: rgba(255, 255, 255, 0.96);
  --open-shift-slots-bg: var(--success-bg);
  --open-shift-slots-fg: var(--success);
  --open-shift-reservations-bg: var(--muted-bg, rgba(0, 26, 26, 0.06));
  --reservation-pending-bg: rgba(123, 191, 185, 0.22);
  --reservation-pending-fg: #2a5f5a;
  --reservation-pending-border: rgba(123, 191, 185, 0.45);
}


/* --- Navigation --- */
:root[data-theme="soa-light"] .app-header {
  box-shadow: 0 2px 12px rgba(0, 26, 26, 0.06);
}

:root[data-theme="soa-light"] .header-orga-alerts__chip {
  background: var(--bg-hover);
  border-color: var(--glass-border);
}

:root[data-theme="soa-light"] .header-orga-alerts__chip:hover {
  background: rgba(0, 26, 26, 0.07);
}

:root[data-theme="soa-light"] .header-chat-menu__panel {
  box-shadow: var(--shadow-md);
}

:root[data-theme="soa-light"] .header-chat-menu__item a {
  border-bottom-color: var(--border);
}

:root[data-theme="soa-light"] .header-chat-menu__item a:hover, :root[data-theme="soa-light"] .header-chat-menu__all:hover {
  background: var(--bg-hover);
}

:root[data-theme="soa-light"] .bottom-nav {
  background: var(--nav-bg);
  box-shadow: 0 -2px 12px rgba(0, 26, 26, 0.06);
}

:root[data-theme="soa-light"] .burger-panel {
  box-shadow: 6px 0 20px rgba(0, 26, 26, 0.1);
}

/* --- Login / Auth Sekundäraktionen --- */
:root[data-theme="soa-light"] .desktop-login .secondary-action, :root[data-theme="soa-light"] .mobile-login .secondary-action {
  background: var(--bg-hover);
}

:root[data-theme="soa-light"] .desktop-login .reg-simple__privacy, :root[data-theme="soa-light"] .mobile-login .reg-simple__privacy {
  background: var(--muted-bg, var(--bg-hover));
}

/* --- Dashboard: Abbrechen auf Bild-Karten --- */
:root[data-theme="soa-light"] .widget-card.has-bg .widget-card__cancel {
  background: var(--widget-cancel-on-image-bg);
  color: var(--widget-cancel-on-image-fg);
  border-color: var(--widget-cancel-on-image-border);
  backdrop-filter: blur(6px);
}

:root[data-theme="soa-light"] .widget-card.has-bg .widget-card__cancel:hover {
  color: var(--on-primary, #fff);
}

/* --- Schichten: offene Plätze / Reservierungen --- */
:root[data-theme="soa-light"] .open-shift__slots {
  background: var(--open-shift-slots-bg);
  color: var(--open-shift-slots-fg);
}

:root[data-theme="soa-light"] .open-shift__reservations {
  background: var(--open-shift-reservations-bg);
}

:root[data-theme="soa-light"] .shift-user-result__avatar {
  color: var(--text);
}

/* --- Galerie Slider --- */
:root[data-theme="soa-light"] .gallery-slider__close, :root[data-theme="soa-light"] .gallery-slider__info-btn {
  background: var(--gallery-control-bg);
  color: var(--gallery-control-fg);
  border-color: var(--border-strong);
}

:root[data-theme="soa-light"] .gallery-slider__close:hover, :root[data-theme="soa-light"] .gallery-slider__info-btn:hover {
  background: var(--gallery-control-hover-bg);
}

:root[data-theme="soa-light"] .gallery-slider__info-panel {
  background: var(--gallery-info-panel-bg);
}

/* --- Dispatcher --- */
:root[data-theme="soa-light"] .dispatcher-sidebar {
  box-shadow: var(--shadow-md);
}

:root[data-theme="soa-light"] .job-card {
  box-shadow: var(--shadow-sm);
}

:root[data-theme="soa-light"] .job-card.has-bg {
  border-color: var(--card-img-border, var(--border));
}

:root[data-theme="soa-light"] .job-card.active {
  border-color: var(--accent);
  background: var(--accent-subtle, rgba(123, 191, 185, 0.12));
}

:root[data-theme="soa-light"] .job-card.multi-selected {
  border-color: var(--success);
  background: var(--success-bg);
}

:root[data-theme="soa-light"] .view-toggle-btn:hover {
  background: var(--bg-hover);
}

:root[data-theme="soa-light"] .view-toggle-btn.active {
  color: var(--accent);
}

:root[data-theme="soa-light"] #jobs-management-sidebar-btn {
  color: var(--text);
}

:root[data-theme="soa-light"] .job-card.has-bg::before {
  filter: var(--card-img-filter, brightness(1.05) saturate(1.03));
  opacity: 0.32;
}

:root[data-theme="soa-light"] .shift-block .shift-name {
  color: var(--soa-main-2, #001A1A);
}

:root[data-theme="soa-light"] .shift-block:hover {
  box-shadow: 0 6px 16px rgba(0, 26, 26, 0.12);
}

/* --- Formulare: Fokus-Schatten --- */
:root[data-theme="soa-light"] input:not([type='checkbox']):not([type='radio']):focus, :root[data-theme="soa-light"] textarea:focus, :root[data-theme="soa-light"] select:focus {
  box-shadow: var(--shadow-focus), 0 2px 8px rgba(0, 26, 26, 0.06);
}

/* --- SOA Auto bei hellem System --- */
@media (prefers-color-scheme: light) {
  :root[data-theme="soa"] {
    --bg-hover: rgba(0, 26, 26, 0.04);
    --glass-blur: blur(12px);
    --glass-border: rgba(0, 26, 26, 0.08);
    --nav-bg: rgba(255, 255, 255, 0.94);
    --nav-text: var(--soa-main-2, #001A1A);
    --nav-text-active: var(--soa-main-2, #001A1A);
    --nav-active-bg: rgba(0, 26, 26, 0.07);
    --nav-active-indicator: var(--soa-main-2, #001A1A);
    --muted-bg: rgba(0, 26, 26, 0.06);
    --shift-crew-badge-bg: var(--bg-elevated);
    --shift-crew-badge-fg: var(--text-secondary);
    --shift-crew-badge-border: var(--border-strong);
    --widget-cancel-on-image-bg: rgba(255, 255, 255, 0.92);
    --widget-cancel-on-image-fg: var(--soa-main-2, #001A1A);
    --widget-cancel-on-image-border: var(--border-strong);
    --gallery-control-bg: rgba(255, 255, 255, 0.88);
    --gallery-control-fg: var(--soa-main-2, #001A1A);
    --gallery-control-hover-bg: rgba(255, 255, 255, 0.98);
    --gallery-info-panel-bg: rgba(255, 255, 255, 0.96);
    --open-shift-slots-bg: rgba(21, 128, 61, 0.12);
    --open-shift-slots-fg: #15803d;
    --open-shift-reservations-bg: rgba(0, 26, 26, 0.06);
    --reservation-pending-bg: rgba(123, 191, 185, 0.22);
    --reservation-pending-fg: #2a5f5a;
    --reservation-pending-border: rgba(123, 191, 185, 0.45);
  }

  :root[data-theme="soa"] .app-header {
    box-shadow: 0 2px 12px rgba(0, 26, 26, 0.06);
  }

  :root[data-theme="soa"] .header-orga-alerts__chip {
    background: var(--bg-hover);
    border-color: var(--glass-border);
  }

  :root[data-theme="soa"] .header-orga-alerts__chip:hover {
    background: rgba(0, 26, 26, 0.07);
  }

  :root[data-theme="soa"] .header-chat-menu__panel {
    box-shadow: var(--shadow-md);
  }

  :root[data-theme="soa"] .header-chat-menu__item a {
    border-bottom-color: var(--border);
  }

  :root[data-theme="soa"] .header-chat-menu__item a:hover,
  :root[data-theme="soa"] .header-chat-menu__all:hover {
    background: var(--bg-hover);
  }

  :root[data-theme="soa"] .bottom-nav {
    background: var(--nav-bg);
    box-shadow: 0 -2px 12px rgba(0, 26, 26, 0.06);
  }

  :root[data-theme="soa"] .burger-panel {
    box-shadow: 6px 0 20px rgba(0, 26, 26, 0.1);
  }

  :root[data-theme="soa"] .desktop-login .secondary-action,
  :root[data-theme="soa"] .mobile-login .secondary-action {
    background: var(--bg-hover);
  }

  :root[data-theme="soa"] .desktop-login .reg-simple__privacy,
  :root[data-theme="soa"] .mobile-login .reg-simple__privacy {
    background: var(--muted-bg);
  }

  :root[data-theme="soa"] .widget-card.has-bg .widget-card__cancel {
    background: var(--widget-cancel-on-image-bg);
    color: var(--widget-cancel-on-image-fg);
    border-color: var(--widget-cancel-on-image-border);
    backdrop-filter: blur(6px);
  }

  :root[data-theme="soa"] .open-shift__slots {
    background: var(--open-shift-slots-bg);
    color: var(--open-shift-slots-fg);
  }

  :root[data-theme="soa"] .open-shift__reservations {
    background: var(--open-shift-reservations-bg);
  }

  :root[data-theme="soa"] .shift-user-result__avatar {
    color: var(--text);
  }

  :root[data-theme="soa"] .gallery-slider__close,
  :root[data-theme="soa"] .gallery-slider__info-btn {
    background: var(--gallery-control-bg);
    color: var(--gallery-control-fg);
    border-color: var(--border-strong);
  }

  :root[data-theme="soa"] .gallery-slider__close:hover,
  :root[data-theme="soa"] .gallery-slider__info-btn:hover {
    background: var(--gallery-control-hover-bg);
  }

  :root[data-theme="soa"] .gallery-slider__info-panel {
    background: var(--gallery-info-panel-bg);
  }

  :root[data-theme="soa"] .shift-block .shift-name {
    color: var(--soa-main-2, #001A1A);
  }

  :root[data-theme="soa"] .dispatcher-sidebar {
    box-shadow: var(--shadow-md);
  }

  :root[data-theme="soa"] .job-card {
    box-shadow: var(--shadow-sm);
  }

  :root[data-theme="soa"] .job-card.has-bg {
    border-color: var(--card-img-border, var(--border));
  }

  :root[data-theme="soa"] .job-card.active {
    border-color: var(--accent);
    background: var(--accent-subtle, rgba(123, 191, 185, 0.12));
  }

  :root[data-theme="soa"] .job-card.multi-selected {
    border-color: var(--success);
    background: var(--success-bg);
  }

  :root[data-theme="soa"] .view-toggle-btn:hover {
    background: var(--bg-hover);
  }

  :root[data-theme="soa"] .view-toggle-btn.active {
    color: var(--accent);
  }

  :root[data-theme="soa"] #jobs-management-sidebar-btn {
    color: var(--text);
  }

  :root[data-theme="soa"] .job-card.has-bg::before {
    filter: var(--card-img-filter, brightness(1.05) saturate(1.03));
    opacity: 0.32;
  }

  :root[data-theme="soa"] .shift-block:hover {
    box-shadow: 0 6px 16px rgba(0, 26, 26, 0.12);
  }

  :root[data-theme="soa"] input:not([type='checkbox']):not([type='radio']):focus,
  :root[data-theme="soa"] textarea:focus,
  :root[data-theme="soa"] select:focus {
    box-shadow: var(--shadow-focus), 0 2px 8px rgba(0, 26, 26, 0.06);
  }
}


/* == inlined: 08-themes/_theme-soa-semantic.css == */
/**
 * SOA – Semantische Farbrollen (Accent / Warning / Primary)
 *
 * Primary (Orange): nur .btn-primary & Dekor-Streifen
 * Accent (Petrol): Links, Navigation, Fokus, Interaktion
 * Warning (CI-Gelb): Hinweise, nicht Orange-Rot
 * Danger/Error: echte Fehler
 */

/* --- Dunkel (soa-dark + soa Auto dunkel) --- */
:root[data-theme="soa-dark"] {
  --accent: #7BBFB9;
  --accent-hover: #9ECFC9;
  --accent-subtle: rgba(123, 191, 185, 0.10);
  --accent-low: rgba(123, 191, 185, 0.16);
  --accent-medium: rgba(123, 191, 185, 0.28);
  --accent-high: rgba(123, 191, 185, 0.42);
  --accent-border-glow: rgba(123, 191, 185, 0.35);
  --link-color: var(--accent);
  --link-hover: var(--accent-hover);

  --primary-subtle: rgba(255, 87, 34, 0.08);
  --primary-low: rgba(255, 87, 34, 0.14);
  --primary-medium: rgba(255, 87, 34, 0.26);
  --primary-high: rgba(255, 87, 34, 0.42);
  --primary-glow: rgba(255, 112, 67, 0.28);
  --primary-gradient: linear-gradient(135deg, #FF7043, #FF5722);
  --primary-light: var(--primary-low);
  --primary-light-03: var(--primary-subtle);
  --primary-light-05: var(--primary-subtle);
  --primary-light-10: var(--primary-low);
  --primary-light-12: var(--primary-low);
  --primary-light-18: var(--primary-low);
  --primary-light-25: var(--primary-medium);
  --primary-light-30: var(--primary-medium);
  --primary-light-35: var(--primary-medium);
  --primary-light-50: var(--primary-high);

  --warning: #F4E07B;
  --warning-light: #F4E07B;
  --warning-light-bg: rgba(244, 224, 123, 0.12);
  --warning-bg: rgba(244, 224, 123, 0.12);
  --warning-glow: rgba(244, 224, 123, 0.22);

  --success: #4ade80;
  --success-light: rgba(74, 222, 128, 0.14);
  --success-bg: rgba(74, 222, 128, 0.12);
  --success-glow: rgba(74, 222, 128, 0.22);

  --error: #EF5350;
  --error-light: rgba(239, 83, 80, 0.12);
  --error-dark: #C62828;
  --error-glow: rgba(239, 83, 80, 0.20);
  --danger: #EF5350;
  --danger-bg: rgba(239, 83, 80, 0.12);

  --info: var(--accent);
  --info-light: var(--accent-subtle);
  --info-bg: var(--accent-subtle);
  --info-glow: rgba(123, 191, 185, 0.22);

  --border-glow: var(--accent-border-glow);
  --shadow-focus: 0 0 0 3px rgba(123, 191, 185, 0.28);
  --shadow-glow: 0 0 16px rgba(123, 191, 185, 0.10);

  --nav-text: #C8CDD2;
  --nav-text-active: #FFFFFF;
  --nav-active-bg: rgba(255, 255, 255, 0.10);
  --nav-active-indicator: #FFFFFF;
  --bg-hover: rgba(255, 255, 255, 0.06);
  --muted-bg: rgba(255, 255, 255, 0.06);

  --glass-blur: blur(12px);
  --glass-border: rgba(255, 255, 255, 0.10);
  --nav-bg: rgba(28, 31, 34, 0.92);
  --cta-fg: #001A1A;
  --cta-glow: rgba(255, 152, 0, 0.22);
  --on-primary: #FFFFFF;

  --button-secondary-bg: linear-gradient(135deg, var(--bg-elevated), var(--bg-overlay));
  --button-secondary-hover: var(--bg-overlay);

  --table-header-bg: var(--bg-overlay);
  --table-row-even-bg: rgba(255, 255, 255, 0.02);
  --table-hover-bg: var(--bg-hover);

  --color-primary: var(--accent);
  --color-warning: var(--warning);
  --color-warning-bg: var(--warning-bg);
  --color-danger: var(--danger);
  --color-success: var(--success);
  --color-info-content: var(--info);
  --color-info-light: var(--info-light);

  --reservation-pending-bg: var(--accent-subtle);
  --reservation-pending-fg: var(--accent);
  --reservation-pending-border: rgba(123, 191, 185, 0.35);

  --shift-crew-badge-bg: var(--bg-overlay);
  --shift-crew-badge-fg: var(--text-secondary);
  --shift-crew-badge-border: var(--border-strong);

  --shift-staff-empty-bg: rgba(239, 83, 80, 0.26);
  --shift-staff-partial-bg: rgba(244, 224, 123, 0.26);
  --shift-staff-exact-bg: rgba(74, 222, 128, 0.26);
  --shift-staff-over-bg: rgba(123, 191, 185, 0.26);
}

/* --- Hell (soa-light) --- */
:root[data-theme="soa-light"] {
  --accent: #2a6f6a;
  --accent-hover: #1f5854;
  --accent-subtle: rgba(123, 191, 185, 0.16);
  --accent-low: rgba(123, 191, 185, 0.22);
  --accent-medium: rgba(42, 111, 106, 0.14);
  --accent-high: rgba(42, 111, 106, 0.26);
  --accent-border-glow: rgba(42, 111, 106, 0.28);
  --link-color: var(--accent);
  --link-hover: var(--accent-hover);

  --primary-subtle: rgba(255, 87, 34, 0.06);
  --primary-low: rgba(255, 87, 34, 0.10);
  --primary-medium: rgba(255, 87, 34, 0.20);
  --primary-high: rgba(255, 87, 34, 0.34);
  --primary-glow: rgba(255, 112, 67, 0.22);
  --primary-gradient: linear-gradient(135deg, #FF7043, #FF5722);
  --primary-dark: #FF5722;
  --primary-light: var(--primary-low);
  --primary-light-03: var(--primary-subtle);
  --primary-light-05: var(--primary-subtle);
  --primary-light-10: var(--primary-low);
  --primary-light-12: var(--primary-low);
  --primary-light-18: var(--primary-low);
  --primary-light-25: var(--primary-medium);
  --primary-light-30: var(--primary-medium);
  --primary-light-35: var(--primary-medium);
  --primary-light-50: var(--primary-high);

  --warning: #c9a000;
  --warning-light: #F4E07B;
  --warning-light-bg: rgba(244, 224, 123, 0.45);
  --warning-bg: rgba(244, 224, 123, 0.42);
  --warning-glow: rgba(244, 224, 123, 0.35);

  --success: #15803d;
  --success-light: rgba(21, 128, 61, 0.12);
  --success-bg: rgba(21, 128, 61, 0.10);
  --success-glow: rgba(21, 128, 61, 0.18);

  --error: #b91c1c;
  --error-light: rgba(185, 28, 28, 0.10);
  --error-dark: #991b1b;
  --error-glow: rgba(185, 28, 28, 0.16);
  --danger: #c0392b;
  --danger-bg: rgba(192, 57, 43, 0.10);

  --info: var(--accent);
  --info-light: var(--accent-subtle);
  --info-bg: var(--accent-subtle);
  --info-glow: rgba(42, 111, 106, 0.15);

  --border-glow: var(--accent-border-glow);
  --shadow-focus: 0 0 0 3px rgba(42, 111, 106, 0.20);
  --shadow-glow: 0 0 14px rgba(42, 111, 106, 0.08);

  --nav-text: var(--soa-main-2, #001A1A);
  --nav-text-active: var(--soa-main-2, #001A1A);
  --nav-active-bg: rgba(0, 26, 26, 0.07);
  --nav-active-indicator: var(--soa-main-2, #001A1A);
  --button-secondary-bg: #FFFFFF;
  --button-secondary-hover: #F0F4F4;

  --shift-staff-empty-bg: rgba(185, 28, 28, 0.22);
  --shift-staff-partial-bg: rgba(201, 160, 0, 0.23);
  --shift-staff-exact-bg: rgba(21, 128, 61, 0.22);
  --shift-staff-over-bg: rgba(42, 111, 106, 0.22);
}

@media (prefers-color-scheme: dark) {
  :root[data-theme="soa"] {
    --accent: #7BBFB9;
    --accent-hover: #9ECFC9;
    --accent-subtle: rgba(123, 191, 185, 0.10);
    --accent-low: rgba(123, 191, 185, 0.16);
    --accent-medium: rgba(123, 191, 185, 0.28);
    --accent-high: rgba(123, 191, 185, 0.42);
    --accent-border-glow: rgba(123, 191, 185, 0.35);
    --link-color: var(--accent);
  --link-hover: var(--accent-hover);
    --primary-subtle: rgba(255, 87, 34, 0.08);
    --primary-low: rgba(255, 87, 34, 0.14);
    --primary-medium: rgba(255, 87, 34, 0.26);
    --primary-high: rgba(255, 87, 34, 0.42);
    --primary-glow: rgba(255, 112, 67, 0.28);
    --primary-gradient: linear-gradient(135deg, #FF7043, #FF5722);
    --primary-light: var(--primary-low);
    --primary-light-03: var(--primary-subtle);
    --primary-light-05: var(--primary-subtle);
    --primary-light-10: var(--primary-low);
    --primary-light-12: var(--primary-low);
    --primary-light-18: var(--primary-low);
    --primary-light-25: var(--primary-medium);
    --primary-light-30: var(--primary-medium);
    --primary-light-35: var(--primary-medium);
    --primary-light-50: var(--primary-high);
    --warning: #F4E07B;
    --warning-light: #F4E07B;
    --warning-light-bg: rgba(244, 224, 123, 0.12);
    --warning-bg: rgba(244, 224, 123, 0.12);
    --warning-glow: rgba(244, 224, 123, 0.22);
    --success: #4ade80;
    --success-light: rgba(74, 222, 128, 0.14);
    --success-bg: rgba(74, 222, 128, 0.12);
    --error: #EF5350;
    --error-light: rgba(239, 83, 80, 0.12);
    --error-dark: #C62828;
    --danger: #EF5350;
    --danger-bg: rgba(239, 83, 80, 0.12);
    --info: var(--accent);
    --info-light: var(--accent-subtle);
    --info-bg: var(--accent-subtle);
    --border-glow: var(--accent-border-glow);
    --shadow-focus: 0 0 0 3px rgba(123, 191, 185, 0.28);
    --shadow-glow: 0 0 16px rgba(123, 191, 185, 0.10);
    --nav-text-active: #F8F9FA;
    --nav-active-bg: rgba(255, 255, 255, 0.10);
    --nav-active-indicator: #F8F9FA;
    --bg-hover: rgba(255, 255, 255, 0.06);
    --muted-bg: rgba(255, 255, 255, 0.06);
    --glass-blur: blur(12px);
    --glass-border: rgba(255, 255, 255, 0.10);
    --nav-bg: rgba(28, 31, 34, 0.92);
    --nav-text: #B8BFC6;
    --reservation-pending-bg: var(--accent-subtle);
    --reservation-pending-fg: var(--accent);
    --reservation-pending-border: rgba(123, 191, 185, 0.35);
    --shift-crew-badge-bg: var(--bg-overlay);
    --shift-crew-badge-fg: var(--text-secondary);
    --shift-crew-badge-border: var(--border-strong);
    --shift-staff-empty-bg: rgba(239, 83, 80, 0.26);
    --shift-staff-partial-bg: rgba(244, 224, 123, 0.26);
    --shift-staff-exact-bg: rgba(74, 222, 128, 0.26);
    --shift-staff-over-bg: rgba(123, 191, 185, 0.26);
    --color-primary: var(--accent);
  }
}

@media (prefers-color-scheme: light) {
  :root[data-theme="soa"] {
    --accent: #2a6f6a;
    --accent-hover: #1f5854;
    --accent-subtle: rgba(123, 191, 185, 0.16);
    --accent-low: rgba(123, 191, 185, 0.22);
    --accent-medium: rgba(42, 111, 106, 0.14);
    --accent-high: rgba(42, 111, 106, 0.26);
    --accent-border-glow: rgba(42, 111, 106, 0.28);
    --link-color: var(--accent);
  --link-hover: var(--accent-hover);
    --primary-subtle: rgba(255, 87, 34, 0.06);
    --primary-low: rgba(255, 87, 34, 0.10);
    --primary-medium: rgba(255, 87, 34, 0.20);
    --primary-high: rgba(255, 87, 34, 0.34);
    --primary-glow: rgba(255, 112, 67, 0.22);
    --primary-gradient: linear-gradient(135deg, #FF7043, #FF5722);
    --primary-dark: #FF5722;
    --primary-light: var(--primary-low);
    --primary-light-03: var(--primary-subtle);
    --primary-light-05: var(--primary-subtle);
    --primary-light-10: var(--primary-low);
    --primary-light-12: var(--primary-low);
    --primary-light-18: var(--primary-low);
    --primary-light-25: var(--primary-medium);
    --primary-light-30: var(--primary-medium);
    --primary-light-35: var(--primary-medium);
    --primary-light-50: var(--primary-high);
    --warning: #c9a000;
    --warning-light: #F4E07B;
    --warning-light-bg: rgba(244, 224, 123, 0.45);
    --warning-bg: rgba(244, 224, 123, 0.42);
    --warning-glow: rgba(244, 224, 123, 0.35);
    --success: #15803d;
    --success-light: rgba(21, 128, 61, 0.12);
    --success-bg: rgba(21, 128, 61, 0.10);
    --error: #b91c1c;
    --error-light: rgba(185, 28, 28, 0.10);
    --danger: #c0392b;
    --danger-bg: rgba(192, 57, 43, 0.10);
    --info: var(--accent);
    --info-light: var(--accent-subtle);
    --info-bg: var(--accent-subtle);
    --border-glow: var(--accent-border-glow);
    --shadow-focus: 0 0 0 3px rgba(42, 111, 106, 0.20);
    --shadow-glow: 0 0 14px rgba(42, 111, 106, 0.08);
    --nav-text-active: var(--soa-main-2, #001A1A);
    --nav-active-bg: rgba(0, 26, 26, 0.07);
    --nav-active-indicator: var(--soa-main-2, #001A1A);
    --bg-hover: rgba(0, 26, 26, 0.04);
    --muted-bg: rgba(0, 26, 26, 0.06);
    --glass-blur: blur(12px);
    --glass-border: rgba(0, 26, 26, 0.08);
    --nav-bg: rgba(255, 255, 255, 0.94);
    --nav-text: var(--soa-main-2, #001A1A);
    --reservation-pending-bg: rgba(123, 191, 185, 0.22);
    --reservation-pending-fg: #2a5f5a;
    --reservation-pending-border: rgba(123, 191, 185, 0.45);
    --shift-crew-badge-bg: var(--bg-elevated);
    --shift-crew-badge-fg: var(--text-secondary);
    --shift-crew-badge-border: var(--border-strong);
    --shift-staff-empty-bg: rgba(185, 28, 28, 0.22);
    --shift-staff-partial-bg: rgba(201, 160, 0, 0.23);
    --shift-staff-exact-bg: rgba(21, 128, 61, 0.22);
    --shift-staff-over-bg: rgba(42, 111, 106, 0.22);
    --widget-cancel-on-image-bg: rgba(255, 255, 255, 0.92);
    --widget-cancel-on-image-fg: var(--soa-main-2, #001A1A);
    --widget-cancel-on-image-border: var(--border-strong);
    --color-primary: var(--accent);
    --button-secondary-bg: #FFFFFF;
    --button-secondary-hover: #F0F4F4;
  }
}


/* == inlined: 08-themes/_theme-soa-ui.css == */
/**
 * SOA – UI-Farben: Petrol für Interaktion, Orange nur für CTAs & Dekor
 *
 * Orange (--primary): .btn-primary, Chat-eigene Bubble, 1. Karten-Streifen
 * Petrol (--accent): Links, Nav-Marker, Tabs, Fokus, Hover
 * Gelb (--soa-sub-1): Warnungen, 2. Karten-Streifen
 */

/* --- Globale Links: über --link-color in Typografie; Menü separat unten --- */

:root[data-theme^="soa"] blockquote {
  border-left-color: var(--accent);
}

/* Ghost-Buttons: Petrol statt Orange */
:root[data-theme^="soa"] .btn--ghost:hover:not(:disabled) {
  background: var(--accent-subtle);
  border-color: var(--accent);
  color: var(--accent);
}

/* Karten: dezenter Akzent nur auf Inhalts-Karten (nicht Dashboard-Widgets) */
:root[data-theme^="soa"] .card:not(.dashboard-widget):not(.widget),
:root[data-theme^="soa"] .item-card {
  border-top: 3px solid var(--border-strong);
}

/* Widget-Links */
:root[data-theme^="soa"] .widget-header-link,
:root[data-theme^="soa"] .widget-footer-link,
:root[data-theme^="soa"] .status-banner__body a,
:root[data-theme^="soa"] .header-chat-menu__all {
  color: var(--link-color);
}

:root[data-theme^="soa"] .widget-header-link:hover,
:root[data-theme^="soa"] .widget-footer-link:hover,
:root[data-theme^="soa"] .status-banner__body a:hover {
  color: var(--accent-hover, var(--link-color));
}

/* Zähler */
:root[data-theme^="soa"] .widget-count {
  background: var(--accent-low);
  color: var(--accent);
}

/* Menü: Schriftfarbe schwarz (hell) bzw. hell (dunkel) – nie Petrol/Linkfarbe */
:root[data-theme^="soa"] nav.bottom-nav a,
:root[data-theme^="soa"] nav.bottom-nav a:hover,
:root[data-theme^="soa"] nav.bottom-nav a:visited,
:root[data-theme^="soa"] .burger-menu-list a,
:root[data-theme^="soa"] .burger-menu-list a:hover,
:root[data-theme^="soa"] .burger-menu-list a:visited,
:root[data-theme^="soa"] .burger-menu-sublist a,
:root[data-theme^="soa"] .burger-menu-sublist a:hover,
:root[data-theme^="soa"] .burger-menu-sublist a:visited {
  color: var(--nav-text);
  text-decoration: none;
}

:root[data-theme^="soa"] nav.bottom-nav a::after,
:root[data-theme^="soa"] .burger-menu-list a::after,
:root[data-theme^="soa"] .burger-menu-sublist a::after {
  display: none;
}

/* Header-Icons: Textfarbe wie Navigation, nie Link-Petrol */
:root[data-theme^="soa"] .app-header .header-icons .header-icon-btn,
:root[data-theme^="soa"] .app-header .header-icons .header-icon-btn:visited,
:root[data-theme^="soa"] .app-header .header-icons .header-icon-btn[aria-current="page"] {
  color: var(--text);
  text-decoration: none;
}

:root[data-theme^="soa"] .app-header .header-icons .header-icon-btn:hover,
:root[data-theme^="soa"] .app-header .header-icons .header-icon-btn:focus-visible {
  color: var(--accent);
}

:root[data-theme^="soa"] .app-header .header-icons a.header-icon-btn::after {
  display: none;
}

:root[data-theme^="soa"] nav.bottom-nav a.active,
:root[data-theme^="soa"] .burger-menu-list a.active,
:root[data-theme^="soa"] .burger-menu-sublist a.active {
  color: var(--nav-text-active);
  font-weight: var(--font-weight-semibold);
}

/* Tabs & Breadcrumbs */
:root[data-theme^="soa"] .tab-btn.active {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

:root[data-theme^="soa"] .breadcrumbs a:hover {
  color: var(--accent);
}

/* Header-Badges: Petrol (Orange nur bei .btn-primary) */
:root[data-theme^="soa"] .header-orga-alerts__count,
:root[data-theme^="soa"] .header-chat-menu__badge {
  background: var(--accent);
  color: var(--soa-main-2, #001A1A);
}

:root[data-theme="soa-dark"] .header-orga-alerts__count,
:root[data-theme="soa-dark"] .header-chat-menu__badge,
:root[data-theme="soa"][data-color-scheme="dark"] .header-orga-alerts__count,
:root[data-theme="soa"][data-color-scheme="dark"] .header-chat-menu__badge {
  color: #FFFFFF;
}

:root[data-theme^="soa"] .chat-channel-item.active {
  background: var(--accent-subtle);
  color: var(--accent);
  font-weight: var(--font-weight-semibold);
}

:root[data-theme^="soa"] .chat-input textarea:focus {
  border-color: var(--accent);
}

/* Formular-Fokus */
:root[data-theme^="soa"] input:focus,
:root[data-theme^="soa"] textarea:focus,
:root[data-theme^="soa"] select:focus {
  border-color: var(--accent);
}

:root[data-theme^="soa"] .chat-sidebar__tab.active {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

:root[data-theme^="soa"] .chat-input__attach-wrap:hover,
:root[data-theme^="soa"] .chat-input__emoji-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
}

/* Karten-Interaktion */
:root[data-theme^="soa"] .card--active {
  border-color: var(--accent);
  background: var(--accent-subtle);
}

:root[data-theme^="soa"] .item-card:hover {
  border-color: var(--accent-medium);
  box-shadow: var(--shadow-lg), 0 0 18px rgba(123, 191, 185, 0.10);
}

/* Dispatcher */
:root[data-theme^="soa"] .dispatcher-sidebar .shift-item.active,
:root[data-theme^="soa"] .dispatcher-sidebar .shift-item:hover {
  border-color: var(--accent);
}

:root[data-theme^="soa"] .dispatcher-sidebar .shift-item.active {
  background: var(--accent-subtle);
  color: var(--accent);
}

:root[data-theme^="soa"] .sidebar-toggle-btn:hover {
  border-color: var(--accent);
}

/* Schichten */
:root[data-theme^="soa"] .shift-card:hover,
:root[data-theme^="soa"] .open-shift:hover {
  border-color: var(--accent);
}

:root[data-theme^="soa"] .responsible-card__link,
:root[data-theme^="soa"] .assignment-job__link:hover strong {
  color: var(--link-color);
}

:root[data-theme^="soa"] .assignment-job__link:hover strong {
  color: var(--accent-hover, var(--link-color));
}

:root[data-theme^="soa"] .gallery-grid__thumb:hover,
:root[data-theme^="soa"] .gallery-grid__thumb:focus-visible {
  border-color: var(--accent);
}

:root[data-theme^="soa"] .job-tab-btn.active {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

:root[data-theme^="soa"] .mgmt-table tr.job-row--active {
  border-left-color: var(--accent);
  background: var(--accent-subtle);
}

:root[data-theme^="soa"] .gallery-uploader__left.is-dragging {
  border-color: var(--accent);
  background: var(--accent-subtle);
}

/* Badge-Ränder */
:root[data-theme^="soa"] .badge--warning,
:root[data-theme^="soa"] .status-badge--wartet,
:root[data-theme^="soa"] .status-badge--nicht-erreicht {
  border-color: rgba(244, 224, 123, 0.55);
}

:root[data-theme^="soa"] .badge--info,
:root[data-theme^="soa"] .status-badge--pending,
:root[data-theme^="soa"] .status-pending {
  border-color: var(--reservation-pending-border, rgba(123, 191, 185, 0.45));
}


/* == inlined: 08-themes/_theme-soa-auth.css == */
/**
 * SOA – Auth-Seiten (Login, Registrierung, Reset, Aktivierung, E-Mail)
 * Petrol/Gelb für Atmosphäre & Links; Orange nur bei Submit-Buttons
 */

:root[data-theme^="soa"] {
  --auth-glow-a: rgba(123, 191, 185, 0.14);
  --auth-glow-b: rgba(244, 224, 123, 0.12);
  --auth-card-glow: rgba(123, 191, 185, 0.14);
  --input-focus-border: var(--accent);

  /* CTA: SOA-Gelb → warmes Orange (nicht rot) */
  --cta-from: #F4E07B;
  --cta-to: #FF9800;
  --cta-hover-from: #FFE082;
  --cta-hover-to: #FB8C00;
  --cta-gradient: linear-gradient(135deg, var(--cta-from), var(--cta-to));
  --cta-gradient-hover: linear-gradient(135deg, var(--cta-hover-from), var(--cta-hover-to));
  --cta-fg: #001A1A;
  --cta-glow: rgba(255, 152, 0, 0.22);
}

:root[data-theme="soa-light"] {
  --auth-glow-a: rgba(123, 191, 185, 0.22);
  --auth-glow-b: rgba(244, 224, 123, 0.20);
  --auth-card-glow: rgba(123, 191, 185, 0.18);
}

@media (prefers-color-scheme: light) {
  :root[data-theme="soa"] {
    --auth-glow-a: rgba(123, 191, 185, 0.22);
    --auth-glow-b: rgba(244, 224, 123, 0.20);
    --auth-card-glow: rgba(123, 191, 185, 0.18);
  }
}

@media (prefers-color-scheme: dark) {
  :root[data-theme="soa"] {
    --auth-glow-a: rgba(123, 191, 185, 0.14);
    --auth-glow-b: rgba(244, 224, 123, 0.10);
    --auth-card-glow: rgba(123, 191, 185, 0.14);
  }
}

/* Hintergrund-Glow ohne Koralle */
:root[data-theme^="soa"] .desktop-login::before {
  background: radial-gradient(circle, var(--accent-medium) 0%, transparent 60%);
  opacity: 0.12;
}

/* Helper-Links */
:root[data-theme^="soa"] .desktop-login .helper a,
:root[data-theme^="soa"] .mobile-login .helper a,
:root[data-theme^="soa"] .auth-card .helper a,
:root[data-theme^="soa"] .password-reset .helper a {
  color: var(--link-color);
  text-decoration: underline;
  text-underline-offset: 2px;
}

:root[data-theme^="soa"] .desktop-login .helper a:hover,
:root[data-theme^="soa"] .mobile-login .helper a:hover,
:root[data-theme^="soa"] .auth-card .helper a:hover,
:root[data-theme^="soa"] .password-reset .helper a:hover {
  color: var(--accent-hover, var(--link-color));
}

/* Sekundäraktion als Link (z. B. „Zum Login“) */
:root[data-theme^="soa"] a.secondary-action {
  color: var(--text);
  text-decoration: none;
}

:root[data-theme^="soa"] a.secondary-action:hover {
  color: var(--accent);
  border-color: var(--accent);
  background: var(--accent-subtle);
}

/* Auth-CTA: Gold-Orange mit dunkler Schrift */
:root[data-theme^="soa"] .desktop-login #login-section button[type="submit"],
:root[data-theme^="soa"] .desktop-login .reg-simple button[type="submit"],
:root[data-theme^="soa"] .mobile-login__card button[type="submit"],
:root[data-theme^="soa"] .password-reset button[type="button"],
:root[data-theme^="soa"] .password-reset button:not(.secondary-action) {
  color: var(--cta-fg);
  font-weight: var(--font-weight-bold);
}

:root[data-theme="soa-dark"] .desktop-login #login-section button[type="submit"],
:root[data-theme="soa-dark"] .desktop-login .reg-simple button[type="submit"],
:root[data-theme="soa-dark"] .mobile-login__card button[type="submit"],
:root[data-theme="soa-dark"] .password-reset button[type="button"],
:root[data-theme="soa-dark"] .password-reset button:not(.secondary-action),
:root[data-theme="soa"][data-color-scheme="dark"] .desktop-login #login-section button[type="submit"],
:root[data-theme="soa"][data-color-scheme="dark"] .desktop-login .reg-simple button[type="submit"],
:root[data-theme="soa"][data-color-scheme="dark"] .mobile-login__card button[type="submit"],
:root[data-theme="soa"][data-color-scheme="dark"] .password-reset button[type="button"],
:root[data-theme="soa"][data-color-scheme="dark"] .password-reset button:not(.secondary-action) {
  --cta-fg: #121416;
}

/* Eingabefelder */
:root[data-theme^="soa"] .desktop-login #login-section input:focus,
:root[data-theme^="soa"] .mobile-login__card input:focus,
:root[data-theme^="soa"] .auth-card input:focus,
:root[data-theme^="soa"] .password-reset input:focus {
  border-color: var(--accent);
}

/* Registrierung */
:root[data-theme^="soa"] .reg-simple h3 {
  color: var(--accent);
}

:root[data-theme^="soa"] .reg-simple__preview {
  border-left-color: var(--accent);
}

:root[data-theme^="soa"] .reg-simple__input:focus,
:root[data-theme^="soa"] .reg-simple__select:focus {
  border-color: var(--accent) !important;
}

/* Feedback auf Auth-Seiten: Info = Petrol */
:root[data-theme^="soa"] .form-feedback--error {
  color: var(--error);
}

:root[data-theme^="soa"] .desktop-login .message.info,
:root[data-theme^="soa"] .password-reset .message.info {
  background: var(--info-bg);
  color: var(--accent);
  border-color: var(--accent-medium);
}


/* == inlined: 08-themes/_theme-soa-dashboard.css == */
/**
 * SOA – Dashboard: ruhige, einheitliche Flächen (hell & dunkel)
 * Kein Regenbogen, kein Primär-Rot auf Bannern und Widgets
 */

/* Hero */
:root[data-theme^="soa"] .dashboard-hero {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-sm);
}

/* Widgets – neutrale Karten ohne farbigen Streifen */
:root[data-theme^="soa"] .dashboard-widget,
:root[data-theme^="soa"] .widget {
  border-top: none;
  border: 1px solid var(--border);
  box-shadow: var(--shadow-sm);
}

:root[data-theme^="soa"] .dashboard-widget:nth-child(2n),
:root[data-theme^="soa"] .dashboard-widget:nth-child(3n),
:root[data-theme^="soa"] .widget:nth-child(2n),
:root[data-theme^="soa"] .widget:nth-child(3n) {
  border-top-color: var(--border);
}

:root[data-theme^="soa"] .widget-header h2 {
  color: var(--text);
  padding-bottom: var(--space-sm);
  border-bottom: 1px solid var(--border);
}

/* Status-Banner – dezenter Hinweis statt Alarm-Farbe */
:root[data-theme^="soa"] .status-banner,
:root[data-theme^="soa"] .status-banner--complete,
:root[data-theme^="soa"] .status-banner--profile-refresh,
:root[data-theme^="soa"] .status-banner--push-nudge,
:root[data-theme^="soa"] .status-banner--paused {
  border: 1px solid var(--border-strong);
  border-left-width: 4px;
  background: var(--bg-elevated);
  box-shadow: var(--shadow-sm);
}

:root[data-theme^="soa"] .status-banner {
  border-left-color: var(--soa-sub-1, #F4E07B);
}

:root[data-theme^="soa"] .status-banner__icon {
  color: var(--soa-sub-1, #F4E07B);
  filter: none;
}

:root[data-theme^="soa"] .status-banner--profile-refresh {
  border-left-color: var(--soa-sub-1, #F4E07B);
  background: var(--bg-elevated);
}

:root[data-theme^="soa"] .status-banner--profile-refresh .status-banner__icon {
  color: var(--soa-sub-1, #F4E07B);
}

:root[data-theme^="soa"] .status-banner--complete {
  border-left-color: var(--success);
  background: var(--bg-elevated);
}

:root[data-theme^="soa"] .status-banner--complete .status-banner__icon {
  color: var(--success);
  filter: none;
}

:root[data-theme^="soa"] .status-banner--paused {
  border-left-color: var(--accent);
  background: var(--bg-elevated);
}

:root[data-theme^="soa"] .status-banner--paused .status-banner__icon {
  color: var(--accent);
  filter: none;
}

:root[data-theme^="soa"] .status-banner__note {
  background: var(--muted-bg, var(--bg-hover));
  border-left-color: var(--border-strong);
}

/* Banner-CTA: Gold-Orange wie Login, nicht Koralle */
:root[data-theme^="soa"] .status-banner__cta.btn-primary,
:root[data-theme^="soa"] .status-banner__actions .btn-primary {
  background: var(--cta-gradient);
  color: var(--cta-fg, #001A1A);
  border: none;
  box-shadow: var(--shadow-sm), 0 2px 10px var(--cta-glow);
}

:root[data-theme^="soa"] .status-banner__cta.btn-primary:hover,
:root[data-theme^="soa"] .status-banner__actions .btn-primary:hover {
  background: var(--cta-gradient-hover, var(--cta-gradient));
  color: var(--cta-fg, #001A1A);
}

:root[data-theme="soa-dark"] .status-banner__cta.btn-primary,
:root[data-theme="soa-dark"] .status-banner__actions .btn-primary,
:root[data-theme="soa"][data-color-scheme="dark"] .status-banner__cta.btn-primary,
:root[data-theme="soa"][data-color-scheme="dark"] .status-banner__actions .btn-primary {
  --cta-fg: #121416;
}

/* Widget-Details ohne Primär-Rot */
:root[data-theme^="soa"] .widget-badge {
  background: var(--accent-low);
  color: var(--accent);
}

:root[data-theme^="soa"] .widget-card-action:hover {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}

:root[data-theme^="soa"] .widget-avatar {
  background: var(--accent-subtle);
  color: var(--accent);
  border-color: var(--border);
}

/* Offene-Schichten-Karte – dunkel & hell ruhig */
:root[data-theme^="soa"] .dashboard-open-shifts-card {
  border: 1px solid var(--border-strong);
  box-shadow: var(--shadow-md);
}

:root[data-theme^="soa"] .dashboard-open-shifts-card:hover {
  border-color: var(--accent);
  box-shadow: var(--shadow-lg);
  transform: translateY(-2px);
}

:root[data-theme^="soa"] .dashboard-open-shifts-card:focus-visible {
  outline-color: var(--accent);
}

:root[data-theme^="soa"] .dashboard-open-shifts-card__icon {
  background: var(--cta-gradient);
  color: var(--cta-fg, #001A1A);
}

:root[data-theme="soa-dark"] .dashboard-open-shifts-card,
:root[data-theme="soa"][data-color-scheme="dark"] .dashboard-open-shifts-card {
  --open-shifts-bg: var(--bg-elevated);
  --open-shifts-fg: var(--text);
  --open-shifts-teaser: var(--text-secondary);
  --open-shifts-action: var(--accent);
  --open-shifts-surface: linear-gradient(
    135deg,
    rgba(123, 191, 185, 0.14) 0%,
    transparent 55%
  );
  --open-shifts-shadow: var(--shadow-md);
  --open-shifts-shadow-hover: var(--shadow-lg);
  --open-shifts-title-shadow: none;
  --open-shifts-icon-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
}

:root[data-theme="soa-light"] .dashboard-open-shifts-card,
:root[data-theme="soa-light-v2"] .dashboard-open-shifts-card {
  --open-shifts-surface: linear-gradient(
    135deg,
    rgba(123, 191, 185, 0.10) 0%,
    transparent 50%
  );
}

@media (prefers-color-scheme: light) {
  :root[data-theme="soa"] .dashboard-open-shifts-card {
    --open-shifts-surface: linear-gradient(
      135deg,
      rgba(123, 191, 185, 0.10) 0%,
      transparent 50%
    );
  }
}



/* ==========================================================================
   GLOBALE LAYOUT-KLASSEN
   ========================================================================== */

/* App Layout */
.app {
  background: var(--bg);
  min-height: 100vh;
  padding-bottom: var(--bottom-nav-height);
}

/* Section Header */
.section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  margin-bottom: var(--space-lg);
}

/* Admin Section */
.admin-section {
  margin-bottom: var(--space-4xl);
}

/* List Section */
.list-section {
  margin-bottom: var(--space-2xl);
}

/* Divider */
.divider {
  border: 0;
  border-top: 1px solid var(--border);
  margin: var(--space-2xl) 0;
}
