/* .nc-card-grid-section: 1 Regeln am 2026-08-13 ins Design System
   aufgenommen (07-organisms). Tokens: 0. */
/* .nc-block-bundle: 3 Regeln am 2026-08-13 ins Design System
   aufgenommen (07-organisms). Tokens: 0. */
/* .nc-bento-section: 1 Regeln am 2026-08-13 ins Design System
   aufgenommen (07-organisms). Tokens: 0. */
/* .nc-accordion-block: 5 Regeln am 2026-08-13 ins Design System
   aufgenommen (07-organisms). Tokens: 0. */
/* .nc-section-intro: 4 Regeln am 2026-08-13 ins Design System
   aufgenommen (06-molecules). Tokens: 0. */
/* .nc-card-grid-cta: 3 Regeln am 2026-08-13 ins Design System
   aufgenommen (06-molecules). Tokens: 0. */
/* .nc-card-grid-cq: 1 Regeln am 2026-08-13 ins Design System
   aufgenommen (06-molecules). Tokens: 0. */
/* .nc-breadcrumb-section: 3 Regeln am 2026-08-13 ins Design System
   aufgenommen (06-molecules). Tokens: 0. */
/* .nc-tbl-icon: 2 Regeln am 2026-08-13 ins Design System
   aufgenommen (05-atoms). Tokens: 0. */
/* .nc-form-hp: 1 Regeln am 2026-08-13 ins Design System
   aufgenommen (05-atoms). Tokens: 0. */
/* .nc-hero-tom: 6 Regeln am 2026-08-12 ins Design System
   aufgenommen (07-organisms). Tokens: 0. */
/* .nc-tab-nav: 7 Regeln am 2026-08-12 ins Design System
   aufgenommen (06-molecules). Tokens: 2. */
/* .nc-table-block: 8 Regeln am 2026-08-12 ins Design System
   aufgenommen (06-molecules). Tokens: 2. */
/* .nc-shell: 21 Regeln am 2026-08-12 ins Design System
   aufgenommen (07-organisms). Tokens: 4. */


/* No-scroll */
body.u-no-scroll { overflow: hidden; }

/* Burger-Toggle: unter 1200px sichtbar */

/* Ab 1200px: Burger + Drawer verstecken */


/* ---------------------------------------------------------------------------
   NEO Section Layouts (Layout Builder)
   --------------------------------------------------------------------------- */


/* .nc-container: Vollstaendige Definition in styles.css (3-Phasen-Modell mit --mod-* Override-Layer) */

/* Full-Width Button */

/* ---------------------------------------------------------------------------
   General Drupal Overrides
   --------------------------------------------------------------------------- */

/* Remove default Drupal margins */
body {
  margin: 0;
  font-family: var(--fnd-typography-fonts-body);
  color: var(--fnd-color-text-primary);
  background: var(--fnd-color-background-base);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Sidebar sticky-Offset anpassen */


/* Logo-Hoehe: theme-overrides.css setzt 16px, hier auf volle Navbar-Hoehe */
:root {
  --nc-nav-brand-logo-height: 100%;
}

/* Dark Mode: Logo invertieren (SVG mit fill="black") */

/* --------------------------------------------------------------------------
   Gallery Block — Drupal-spezifische Overrides
   -------------------------------------------------------------------------- */

/* Gallery im Layout Builder: Admin-Toolbar-Offset */
body.toolbar-fixed .nc-gallery--fixed {
  --nc-gallery-min-height: 450px;
  --nc-gallery-max-height: 650px;
}

/* Gallery CTA-Button: Inverse Farben auf dunklem BG */

/* Autoplay-Icons: nur eins sichtbar */

/* Gallery in Layout Builder Edit-Modus: Hoehe reduzieren */
.layout-builder .nc-gallery {
  --nc-gallery-height: 50vh;
  --nc-gallery-min-height: 300px;
}


/* Responsive: 1 Spalte auf Mobile */


/* Parallax-BG innerhalb Hero: absolut positioniert, ueber dem BG-Color */

/* Responsive Fallback */


/* ==========================================================================
   nc-footer — Globaler Seitenfooter
   ========================================================================== */

/* Responsive: stacked auf Mobile */


/* ===========================================================================
   Text + Media Block
   =========================================================================== */

/* Section-Level Background fuer Text+Media */

/* Content ueber Background */

/* Contextual Links muessen ueber den Block-Inhalten liegen */
body:has(.layout-builder-form) .contextual {
  z-index: 50;
}

/* Drupal Off-Canvas Dialog (Block-Konfiguration) immer ganz oben */
body:has(.layout-builder-form) #drupal-off-canvas-wrapper {
  z-index: 501;
}

/* ── Artikel-Layout (Full View): zentrierter, gekappter Lesefluss ─────────────
   Behebt: .nc-content war unbegrenzt (volle Viewport-Breite), Titel/Meta klebten
   am Rand, der Prosa-Text zentrierte sich im Nichts (verschiedene Achsen).
   Jetzt: Artikel auf xwide gekappt + zentriert; Titel/Meta auf DERSELBEN
   zentrierten Prosa-Achse wie der Body-Text; Medien brechen via data-bleed aus. */

/* ── Linksbuendiger Lesefluss (Blog/Doku-Bereiche) ───────────────────────────
   body.is-reading-left: Titel/Meta linksbuendig (statt zentriert), passend zur
   .nc-prose--left-Geometrie des Body. Bereiche via _neo_fe_is_reading_left(). */

/* Komponenten ohne .nc-container an den Override-Hook anbinden, damit die
   Breite auch dort greift. Beide nutzten bisher fixe Container-Variablen. */

/* ── Card: gleiche Hover-Sprache wie die Bento-Zelle ────────────────────────
   Im DS zeigen Border und Glow der Karte auf --fnd-color-interactive-default,
   genau wie die Bento-Zelle dort. Dieses Theme biegt die Zelle aber auf das
   Marken-Gruen um (s. --nc-bento-grid-border-hover oben). Ohne dieselbe
   Umbiegung liefen Zelle und Karte im Theme auseinander: Zelle gruen, Karte
   blau. Beide Werte stehen deshalb hier beieinander — wer den einen aendert,
   sieht den anderen.

   Die Schatten laufen ueber TOKENS, nicht ueber box-shadow-Regeln. Grund:
   --fnd-elevation-base/-raised loesen in diesem Theme zu 'xs'/'sm' auf —
   T-Shirt-Groessen, kein gueltiger Schattenwert. Eine box-shadow-Regel haette
   ausserdem gegen die DS-Regeln um Spezifitaet kaempfen muessen:
   .nc-card:hover ist (0,2,0), .nc-card:has(.nc-card__title-link):hover aber
   (0,3,0) — die Partial-Variante verlor dadurch ihren Hover-Schatten. Auf
   Token-Ebene stellt sich die Frage nicht. */

/* Akzent-Border und Glow NUR fuer navigierende Karten. Blanket auf .nc-card
   hatte die Auswahlkarte miterwischt: der Reset im DS-Mixin card-selectable
   steht auf derselben Spezifitaet (0,1,0), neo-overrides.css laedt aber
   zuletzt und gewann. Deshalb hier gleich eingegrenzt. */


/* (7) Badge-Micro-Animation: dezenter Puls-Ring (reduced-motion respektiert). */
@keyframes nc-bento-badge-pulse {
  0%   { box-shadow: 0 0 0 0 color-mix(in srgb, var(--nc-bento-grid-accent) 45%, transparent); }
  70%  { box-shadow: 0 0 0 7px transparent; }
  100% { box-shadow: 0 0 0 0 transparent; }
}

/* Section-Padding fuer Tab-Sektionen wiederherstellen: .nc-section--full nullt
   padding-block (fuer randlose Heroes gewollt) — die Tab-Bloecke brauchen aber
   vertikalen Abstand, sonst kleben die Sektionen aneinander. */

/* Header-Ausrichtung (links = Standard, zentriert, rechts) */

/* ═══════════════════════════════════════════════════════════════════════════
   TYPOGRAFIE-ROLLEN (Type Ramp) — Phase 0
   Disziplinierte Nutzung der vorhandenen 1.2-Fluid-Skala (--fs-*) ueber ein
   kleines, semantisches Rollen-Set (Material/Carbon/HIG-Logik). Komponenten
   konsumieren NUR diese Rollen, keine rohen --fs-* mehr.
   ═══════════════════════════════════════════════════════════════════════════ */
:root {
  /* Display (Hero/Marketing) */
  --nc-type-display-l-size: var(--fs-5xl); --nc-type-display-l-weight: 800; --nc-type-display-l-lh: 1.05; --nc-type-display-l-ls: -0.03em;
  --nc-type-display-m-size: var(--fs-4xl); --nc-type-display-m-weight: 800; --nc-type-display-m-lh: 1.08; --nc-type-display-m-ls: -0.02em;
  --nc-type-display-s-size: var(--fs-3xl); --nc-type-display-s-weight: 700; --nc-type-display-s-lh: 1.10; --nc-type-display-s-ls: -0.02em;
  /* Heading (Struktur) */
  --nc-type-heading-l-size: var(--fs-2xl); --nc-type-heading-l-weight: 700; --nc-type-heading-l-lh: 1.15; --nc-type-heading-l-ls: -0.01em;
  --nc-type-heading-m-size: var(--fs-xl);  --nc-type-heading-m-weight: 700; --nc-type-heading-m-lh: 1.20; --nc-type-heading-m-ls: -0.01em;
  --nc-type-heading-s-size: var(--fs-lg);  --nc-type-heading-s-weight: 600; --nc-type-heading-s-lh: 1.30; --nc-type-heading-s-ls: 0;
  /* Body (Lesen) */
  --nc-type-body-l-size: var(--fs-lg);     --nc-type-body-l-weight: 400; --nc-type-body-l-lh: 1.50; --nc-type-body-l-ls: 0;
  --nc-type-body-m-size: var(--fs-base);   --nc-type-body-m-weight: 400; --nc-type-body-m-lh: 1.60; --nc-type-body-m-ls: 0;
  --nc-type-body-s-size: var(--fs-sm);     --nc-type-body-s-weight: 400; --nc-type-body-s-lh: 1.50; --nc-type-body-s-ls: 0;
  /* Funktional (UI) */
  --nc-type-label-size: var(--fs-base);    --nc-type-label-weight: 500; --nc-type-label-lh: 1.20; --nc-type-label-ls: 0;
  --nc-type-caption-size: var(--fs-xs);    --nc-type-caption-weight: 500; --nc-type-caption-lh: 1.40; --nc-type-caption-ls: 0.04em;
}

/* Die Slate-Palette stand bis 2026-08-17 hier und hat die Umstellung auf
   Graphit still zur Haelfte ausgehebelt: 20 Token im hellen und 18 im dunklen
   Thema. Diese Datei laedt NACH styles.css — was hier steht, gewinnt, und der
   Kommentar an dieser Stelle sagte das sogar ausdruecklich.

   Die Werte kommen jetzt aus dem Design System
   (00-settings/_mono-bridge.scss). Diese Ebene darf keine --fnd-color-*-Token
   mehr fuehren, sonst wiederholt sich derselbe Fall. */


/* ===========================================================================
   SURFACE-KONTEXTE — lokale Farb-Scopes (MD3 "on-surface")   [Phase 1]
   ===========================================================================
   Grundidee: Eine Flaeche mit FIXEM Hintergrund (dunkles Bild, Markenfarbe,
   "immer dunkel") bezieht ihre Vordergrundfarben aus SICH SELBST — nicht aus
   dem globalen Theme. Da .neo-light-theme / .neo-dark-theme reine KLASSEN-
   Selektoren sind (siehe theme-overrides.css), gelten sie auch LOKAL an einer
   einzelnen <section>: dort wird das komplette --fnd-color-*-Buendel neu
   gebunden (vollstaendiger on-surface-Satz, AA-geprueft via Slate).

   Anwendung (Phase 3, via Block-Feld "Farbkontext"):
     Auto   -> keine Klasse            (folgt dem globalen Theme)
     Hell   -> "neo-light-theme neo-surface"
     Dunkel -> "neo-dark-theme  neo-surface"
     Akzent -> "neo-surface neo-surface--accent"
   .neo-surface laesst den Block seine Flaeche tatsaechlich painten; ein
   explizites Inline-Hintergrundfeld (style="background:…", z.B. Hero-Bild)
   schlaegt das per Spezifitaet weiterhin. */
.neo-surface {
  background-color: var(--fnd-color-background-base);
  color: var(--fnd-color-text-primary);
}
/* Getoent-Kontext (Layer 2): bindet NUR die Flaeche neu und laesst die
   Textfarben des umgebenden Themes stehen. Dadurch traegt der Block in Hell
   UND Dunkel automatisch weiter — es gibt keinen eigenen on-surface-Satz,
   der auseinanderlaufen koennte.
   Kontrast auf der Flaeche nachgerechnet (WCAG 2.1 AA):
     Hell  #e4e4e4: text-primary 16,52:1 | text-secondary 7,08:1  ✓
     Dunkel #1a1a1a: text-primary 17,40:1 | text-secondary 5,81:1 ✓
   Der Block bleibt eine volle Sektion (nc-section liefert das Padding) —
   die Abgrenzung entsteht durch den Flaechenwechsel, nicht durch eine Kante,
   deshalb ist 1.4.11 hier nicht einschlaegig. */
.neo-surface--muted {
  --fnd-color-background-base: var(--nc-surface-muted-bg);
}

/* Akzent-Kontext: Marken-Gruen als Flaeche, on-accent als Text. */
.neo-surface--accent {
  --fnd-color-background-base:  var(--fnd-color-background-accent);
  --fnd-color-text-primary:     var(--fnd-color-on-accent);
  --fnd-color-text-secondary:   color-mix(in srgb, var(--fnd-color-on-accent) 78%, transparent);
  --fnd-color-text-tertiary:    color-mix(in srgb, var(--fnd-color-on-accent) 60%, transparent);
  --fnd-color-border-secondary: color-mix(in srgb, var(--fnd-color-on-accent) 24%, transparent);
}
/* Scrim: garantierter Text-Schutz-Verlauf auf Medien-Flaechen (Hero A+C).
   Wiederverwendbarer Helfer; in Phase 4 vom Hero genutzt. */
.neo-scrim { position: relative; }
.neo-scrim > * { position: relative; z-index: 1; }
.neo-scrim::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: linear-gradient(180deg,
    color-mix(in srgb, #000 55%, transparent) 0%,
    color-mix(in srgb, #000 18%, transparent) 45%,
    color-mix(in srgb, #000 60%, transparent) 100%);
}


/* ===========================================================================
   HIER ENDETE FRUEHER DIE SPIEGELUNG DES DESIGN SYSTEMS
   ===========================================================================
   Bis zum 25.08.2026 standen hier vier Bloecke, die Werte aus WEBSITE26
   nachbauten: die Line-Height-Stufen (--lh-none/snug/normal/relaxed), die
   Tracking-Skala (--fnd-tracking-*), die Schriftstapel mit Metrik-Fallback
   und --fnd-font-weight-heading-strong, dazu `text-wrap: balance` auf den
   Ueberschriften, `font-optical-sizing` auf dem Body und das staerkere
   Gewicht fuer h4–h6.

   Jeder dieser Bloecke trug seit dem Audit den Vermerk „nach DS-Regenerierung
   redundant". Das Design System ist seither vielfach neu gebaut worden, und
   am 25.08.2026 nachgemessen: alle 15 Custom Properties stehen dort mit
   IDENTISCHEM Wert, die drei Element-Regeln mit denselben Selektoren —
   `h4,h5,h6{font-weight:var(--fnd-font-weight-heading-strong)}` sogar
   wortgleich.

   Ein Override, das dasselbe sagt wie die Quelle, ist keine Sicherheit,
   sondern eine zweite Wahrheit: Aendert das Design System einen Wert, haelt
   die Kopie hier dagegen — und weil diese Datei ZULETZT laedt, gewinnt sie.
   Genau so bleiben Aenderungen am Design System unsichtbar.

   Gegengeprueft wurde nicht der Dateiinhalt, sondern das Ergebnis: 23
   berechnete Werte auf drei Seiten, vor und nach dem Entfernen. Kein
   Unterschied.

   Ebenfalls entfernt: die Abschnittsueberschrift „NEO Form" mit drei
   Kommentaren, deren Regeln laengst im Design System stehen. Ein Kommentar
   ohne Regel beschreibt nichts.
   =========================================================================== */
