/* heusel.bi Begleit-CSS — Begleit-Klassen auf dem kanonischen heusel-2030-System (vendor/heusel/hsl.css).
   Nutzt ausschliesslich kanonische Tokens (--bg/--bg-card/--fg/--fg-dim/--border/--hero-a/--co-*/--ring/--ease).
   heusel.web2.css (2027-SSOT) ist entfernt — keine --hsl-*-Alt-Tokens mehr (Ausnahme: --hsl-av-size ist ein
   kanonischer HSL-Avatar-Token aus hsl.css). App-Akzent (Firmenblau) kommt aus dem --hero-a-Override in App.razor.

   Aufgeraeumt (A1): die tote Eigenbau-Palette (Tabellen-/Badge-/Gruppen-/Fixed-Table-/Health-Detail-Klassen,
   Alt-Profil/Brand) und die tote Shell-Glue (.nav-acct/.nav-logout) sind entfernt — die Shell laeuft komplett
   ueber die kanonischen <hsl-*>-Chrome-Elemente (hsl-nav/hsl-profile-menu/hsl-footer/hsl-tenant-switch). */

/* --- Shell-Content-Wrapper (aus heusel.web2.css uebernommen, jetzt kanonisch) ---
   AdminLayout/PortalLayout .hsl_admin_content: bewusst KEINE max-width -> breite ListView-Tabellen
   nutzen die volle Breite; nur Innenabstand + volle Breite. */
.hsl_admin_content{padding:26px 24px 80px;width:100%;min-width:0;}
.hsl_admin_content h2{margin:30px 0 14px;}
.hsl_admin_content h3{margin:22px 0 10px;}

/* --- Leerzustand (generischer Helfer) --- */
.hsl_empty{color:var(--fg-dim);padding:14px 0}

/* heusel.web2.css abgeloest (Austausch statt Eigenbau): die --hsl-*-Tokens, die kiosk.css + board-builder.css
   noch referenzieren, kommen jetzt aus dem heusel.ui-Toolkit (nahezu identische Werte, themefaehig ueber #app.light).
   kiosk.css/board-builder.css bleiben unveraendert; web2.css (643 Z.) + die <html>-Theme-Bruecke entfallen. */
#app {
  --hsl-fg: var(--fg); --hsl-fg-dim: var(--fg-dim);
  --hsl-bg: var(--bg); --hsl-bg-2: var(--bg-2); --hsl-bg-card: var(--bg-card); --hsl-bg-input: var(--bg-2);
  --hsl-border: var(--border); --hsl-border-strong: var(--border-strong);
  --hsl-brand: var(--hero-a); --hsl-brand-fg: var(--hero-ink);
  --hsl-co-blue: var(--co-blue); --hsl-co-green: var(--co-green); --hsl-co-red: var(--co-red); --hsl-co-yellow: var(--co-yellow);
  --hsl-danger: var(--co-red); --hsl-ok: var(--co-green); --hsl-warn: var(--co-yellow); --hsl-bad: var(--co-red);
  --hsl-ok-fg: var(--co-green); --hsl-warn-fg: var(--co-yellow); --hsl-bad-fg: var(--co-red);
  --hsl-ok-bg: color-mix(in srgb, var(--co-green), transparent 86%);
  --hsl-warn-bg: color-mix(in srgb, var(--co-yellow), transparent 86%);
  --hsl-bad-bg: color-mix(in srgb, var(--co-red), transparent 86%);
  --hsl-ring: var(--border); --hsl-glass-edge: var(--glass-edge);
  /* Kiosk-„Glass": sichtbarer Karten-Hintergrund mit Sheen (kein backdrop-filter, Kiosk-Perf) -> aus den
     Toolkit-Karten-/Text-Tokens abgeleitet (oben leicht aufgehellt = Glas-Sheen), NICHT der bloße --glass-
     Schleier (der machte die Kacheln flach/transparent). */
  --hsl-glass-card: linear-gradient(155deg, color-mix(in srgb, var(--fg) 7%, var(--bg-card)), var(--bg-card) 58%);
  --hsl-e1: var(--e1); --hsl-e2: var(--e2);
  --hsl-radius-card: 14px; --hsl-radius-pill: 999px;
  --hsl-font-sans: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}

/* Content-Container nutzt die Toolkit-.content (Padding zu Header/Nav), behaelt aber KEINE max-width
   (breite ListView-Tabellen). .hsl_admin_content liefert weiter die h2/h3-Abstaende (oben). */
.content.hsl_admin_content { max-width: none; }

/* === Geteilte Layout-Primitive (P2-Generalisierung, Backlog 2026-07-16) ===================================
   Ersetzen die frueher je Seite dupliziert definierten Inline-<style>-Klassen (.ce-wrap/.cf-frow/.pe-hint/...).
   Namen bewusst kollisionsfrei zum Toolkit (geprueft); Toolkit-erweiternde Selektoren (.page .field .inp)
   gewinnen per Spezifitaet, daher ladeordnungs-unkritisch. Fuer rote Status-Pills die KANONISCHE .pill.crit
   nutzen (nicht .pill.off nachbauen). */
.page { display:flex; flex-direction:column; gap:var(--gap); }
.page .card-h svg { width:17px; height:17px; flex:0 0 auto; }
.page .field .inp, .page .field .sel, .page .field .ta { width:100%; min-width:0; }
.back-link { align-self:flex-start; }
.form-row { display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; }
.form-acts { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:2px; }
.hint { font-size:12px; color:var(--fg-dim); line-height:1.55; margin:0; }
.note { font-size:12px; color:var(--fg-dim); line-height:1.6; margin:0; }
.num { text-align:right; font-variant-numeric:tabular-nums; }
.dash { color:var(--fg-faint); }
/* Anlege-/Kopf-Balken im ListView-Kopf (mittig ausgerichtet). .bordered = mit Trennlinie unten. */
.headbar { display:flex; gap:12px; align-items:center; flex-wrap:wrap; padding:14px 18px; }
.headbar.bordered { border-bottom:1px solid var(--border); }
/* Anlege-Balken im ListView-Kopf (.lv hat padding:0). */
.lv-createbar { display:flex; gap:10px; align-items:flex-end; flex-wrap:wrap; padding:14px 18px; }
.lv-createbar .field { flex:0 0 240px; }
.lv-createbar .field.sm { flex:0 0 150px; }
/* Rote Fehler-/Sekundaerzeile, max. 2 Zeilen (z. B. selbst-deaktivierte Zuweisung). */
.err-note { margin-top:5px; font-size:11.5px; line-height:1.4; color:var(--co-red);
            max-width:420px; overflow:hidden; text-overflow:ellipsis;
            display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }

/* Shell-Einbettung (heusel.one): eigene Sidebar ausblenden, Grid auf eine Spalte, Fuss-Padding
   entfernen (sonst Freiflaeche unten). Gehoert langfristig ins Toolkit-shell-one (CANON). */
#app.shell-one .nav{display:none}
#app.shell-one .shell{grid-template-columns:1fr}
#app.shell-one .content{padding-bottom:24px}
