/* ==========================================================================
   QMS9000 – Design-System „Liquid Glass“
   Lebender Wellen-Hintergrund, Glaskarten mit Lichtkante, scrollgekoppelte Bühne.
   ========================================================================== */

/* ---------- Schrift (selbst gehostet) ---------- */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('fonts/inter-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('fonts/inter-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@property --winkel { syntax: '<angle>'; inherits: false; initial-value: 0deg; }

/* ---------- Tokens ---------- */
:root {
  /* Flächen */
  --weiss: #FFFFFF;
  --grund: #F6F9FE;
  --grund-2: #F8FAFD;
  --eis: #F0F6FF;

  /* Blau */
  --blau: #3478F6;
  --blau-ui: #2867E8;          /* Text & Knöpfe – AA-Kontrast auf Weiß */
  --blau-ui-hover: #1F58CF;
  --blau-tief: #174EA6;
  --cyan: #8ED8F8;
  --nachtblau: #071431;

  /* Text */
  --text: #151923;
  --text-2: #56627A;
  --text-3: #8590A4;

  /* Linien */
  --linie: rgba(21, 25, 35, .08);
  --linie-2: #DCE4EF;

  /* Status (nur in der Produktansicht) */
  --rot: #C4342B;
  --rot-hauch: #FDF1F0;

  /* Verläufe */
  --verlauf-text: linear-gradient(100deg, #174EA6 0%, #2867E8 28%, #4FA9F2 50%, #2867E8 72%, #174EA6 100%);
  --verlauf-knopf: linear-gradient(180deg, #4A8BFA 0%, #2867E8 55%, #1F58CF 100%);
  --verlauf-ikon: linear-gradient(145deg, #63A4FF 0%, #2F6FEB 50%, #174EA6 100%);

  /* Glaskarte – über Variablen, damit der Nacht-Abschnitt sie umfärben kann */
  --k-grund:
    radial-gradient(120% 85% at 100% 0%, rgba(142, 216, 248, .30), transparent 55%),
    radial-gradient(90% 70% at 0% 100%, rgba(52, 120, 246, .10), transparent 60%),
    linear-gradient(145deg, rgba(255, 255, 255, .9) 0%, rgba(255, 255, 255, .66) 100%);
  --k-rand: linear-gradient(140deg, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, .4) 35%, rgba(52, 120, 246, .18) 68%, rgba(142, 216, 248, .75) 100%);
  --k-licht: rgba(255, 255, 255, .7);
  --k-rand-licht: rgba(52, 120, 246, .75);
  --k-schatten: inset 0 1px 0 rgba(255, 255, 255, .95), 0 1px 2px rgba(16, 40, 90, .05), 0 28px 60px -32px rgba(23, 78, 166, .38);
  --k-schatten-hover: inset 0 1px 0 rgba(255, 255, 255, .95), 0 2px 4px rgba(16, 40, 90, .05), 0 40px 80px -36px rgba(23, 78, 166, .5);
  --k-blur: none; /* kein Live-Weichzeichner über dem bewegten Hintergrund – spart pro Bild die meiste GPU-Zeit */

  /* Radien */
  --r-s: 10px;
  --r-m: 16px;
  --r-l: 24px;
  --r-xl: 32px;
  --r-voll: 999px;

  /* Abstände */
  --sektion: clamp(96px, 12vw, 168px);
  --breite: 1200px;
  --rand: clamp(20px, 4vw, 40px);

  /* Typografie */
  --f-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI Variable Text', 'Segoe UI', system-ui, sans-serif;
  --fs-hero: clamp(2.9rem, 7.6vw, 6.9rem);
  --fs-h2: clamp(2.3rem, 4.9vw, 4.3rem);
  --fs-h3: 1.1875rem;
  --fs-lead: clamp(1.0625rem, 1.45vw, 1.3125rem);

  /* Bewegung */
  --ease: cubic-bezier(.22, .61, .36, 1);
  --ease-aus: cubic-bezier(.16, 1, .3, 1);
  --ease-sanft: cubic-bezier(.4, 0, .2, 1);
}

/* ---------- Basis ---------- */
*, *::before, *::after { box-sizing: border-box; }
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: 100px;
  background: var(--grund);
}
body {
  margin: 0;
  background: transparent;
  color: var(--text);
  font-family: var(--f-sans);
  font-size: 1rem;
  line-height: 1.6;
  font-feature-settings: 'cv11', 'ss01';
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}
img, svg, canvas { display: block; max-width: 100%; }
a { color: var(--blau-ui); text-decoration: none; transition: color .2s var(--ease-sanft); }
a:hover { color: var(--blau-ui-hover); }
h1, h2, h3 { margin: 0; color: var(--text); font-weight: 600; }
h2 { font-size: var(--fs-h2); line-height: 1.03; letter-spacing: -.042em; text-wrap: balance; }
h3 { font-size: var(--fs-h3); line-height: 1.3; letter-spacing: -.018em; }
p { margin: 0; }
ul { margin: 0; padding: 0; list-style: none; }
::selection { background: rgba(52, 120, 246, .2); }
:focus-visible { outline: 2px solid var(--blau); outline-offset: 3px; border-radius: 8px; }

.sr {
  position: absolute; left: 16px; top: -60px; z-index: 100;
  padding: 10px 16px; border-radius: var(--r-s);
  background: var(--text); color: #fff; font-size: .875rem;
  transition: top .2s var(--ease);
}
.sr:focus { top: 12px; color: #fff; }

.mitte { width: 100%; max-width: calc(var(--breite) + var(--rand) * 2); margin: 0 auto; padding: 0 var(--rand); }

/* ---------- Lebender Hintergrund ---------- */
.welle {
  position: fixed; inset: 0; z-index: -2;
  width: 100vw; height: 100vh; height: 100lvh;
  pointer-events: none;
}
.nacht-schleier {
  position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background: radial-gradient(90% 70% at 50% 40%, #12306F 0%, #071431 70%);
  opacity: 0;
}
/* Ohne WebGL: ruhiger Verlauf, Nacht über den Schleier */
.kein-gl .welle { display: none; }
.kein-gl body {
  background:
    radial-gradient(60% 50% at 20% 30%, rgba(142, 216, 248, .35), transparent 70%),
    radial-gradient(55% 45% at 85% 70%, rgba(52, 120, 246, .14), transparent 70%),
    var(--grund);
  background-attachment: fixed;
}
.kein-gl .nacht-schleier { opacity: var(--nacht, 0); }

/* Scroll-Fortschritt */
.fortschritt {
  position: fixed; left: 0; top: 0; z-index: 60;
  width: 100%; height: 2px;
  transform-origin: 0 50%; transform: scaleX(var(--fortschritt, 0));
  background: linear-gradient(90deg, #8ED8F8, #3478F6 55%, #174EA6);
  box-shadow: 0 0 12px rgba(52, 120, 246, .6);
  pointer-events: none;
}

main > section { position: relative; padding: var(--sektion) 0; overflow-x: clip; }

/* ==========================================================================
   GLASKARTEN
   ========================================================================== */
.glas, .modul, .v-karte, .f-box, .f-ziel, .haken-liste, .norm-karte, .k2, .formular, .zl {
  --mx: -999px; --my: -999px; --rx: 0deg; --ry: 0deg; --hub: 0px;
  position: relative;
  isolation: isolate;
  background: var(--k-grund);
  -webkit-backdrop-filter: var(--k-blur);
  backdrop-filter: var(--k-blur);
  border-radius: var(--r-l);
  box-shadow: var(--k-schatten);
}
/* Lichtkante, die zum Zeiger hin aufleuchtet */
:is(.glas, .modul, .v-karte, .f-box, .f-ziel, .haken-liste, .norm-karte, .k2, .formular, .zl)::before {
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  border-radius: inherit; padding: 1px;
  background: radial-gradient(260px circle at var(--mx) var(--my), var(--k-rand-licht), transparent 70%), var(--k-rand);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
}
/* Reflex: weiches Licht unter dem Zeiger + Glanz im oberen Drittel */
:is(.glas, .modul, .v-karte, .f-box, .f-ziel, .haken-liste, .norm-karte, .k2, .formular, .zl)::after {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  border-radius: inherit;
  background:
    radial-gradient(380px circle at var(--mx) var(--my), var(--k-licht), transparent 60%),
    linear-gradient(172deg, rgba(255, 255, 255, .5) 0%, rgba(255, 255, 255, 0) 34%);
}

/* Kippen & Anheben (nur Karten, die es vertragen) */
.modul, .k2, .norm-karte, .v-karte {
  transform: perspective(1000px) rotateX(var(--rx)) rotateY(var(--ry)) translateY(var(--hub));
  transition: transform .6s var(--ease-aus), box-shadow .5s var(--ease), opacity 1s var(--ease), translate 1.1s var(--ease-aus), scale 1.1s var(--ease-aus), filter 1s var(--ease);
  will-change: transform;
}
.modul:hover, .k2:hover, .norm-karte:hover, .v-karte:hover {
  --hub: -6px;
  box-shadow: var(--k-schatten-hover);
  transition: transform .25s var(--ease), box-shadow .5s var(--ease), opacity 1s var(--ease), translate 1.1s var(--ease-aus), scale 1.1s var(--ease-aus), filter 1s var(--ease);
}

/* ---------- Kopfzeile: schwebende Glaskapsel ---------- */
.kopf {
  position: sticky; top: 0; z-index: 50;
  padding: 14px var(--rand) 0;
  pointer-events: none;
}
.kopf .mitte {
  position: relative;
  display: flex; align-items: center; gap: 24px;
  max-width: 1180px; height: 60px; padding: 0 8px 0 18px;
  border-radius: var(--r-voll);
  pointer-events: auto;
  background: linear-gradient(135deg, rgba(255, 255, 255, .7), rgba(255, 255, 255, .46));
  -webkit-backdrop-filter: blur(24px) saturate(190%);
  backdrop-filter: blur(24px) saturate(190%);
  border: 1px solid rgba(255, 255, 255, .8);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 12px 34px -20px rgba(23, 78, 166, .45);
  transition: background .5s var(--ease), border-color .5s var(--ease), box-shadow .5s var(--ease);
}
.kopf.schatten .mitte {
  background: linear-gradient(135deg, rgba(255, 255, 255, .82), rgba(255, 255, 255, .62));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 18px 40px -22px rgba(23, 78, 166, .5);
}
.marke { display: inline-flex; align-items: center; gap: 10px; color: var(--text); flex-shrink: 0; }
.marke:hover { color: var(--text); }
.marke svg { filter: drop-shadow(0 6px 10px rgba(40, 103, 232, .35)); }
.marke-wort { font-size: 1.1875rem; font-weight: 600; letter-spacing: -.025em; color: var(--text); transition: color .5s var(--ease); }
.marke-wort b { font-weight: 600; color: var(--blau-ui); }
/* Markenschreibweise: „IQ“ überall kursiv und blau */
.qms9000 { white-space: nowrap; }
.qms9000 i, .marke-wort b, .ap-marke b { font-style: italic; color: var(--blau-ui); padding-right: .04em; }
.nacht .qms9000 i, .nacht-modus .marke-wort b { color: #9FD6FF; }

.nav { display: flex; align-items: center; gap: 2px; margin-left: auto; }
.nav a {
  padding: 8px 13px; border-radius: var(--r-voll); white-space: nowrap;
  color: var(--text-2); font-size: .875rem; font-weight: 450;
  transition: color .25s var(--ease-sanft), background-color .25s var(--ease-sanft);
}
.nav a:hover { color: var(--text); background: rgba(255, 255, 255, .7); }
.kopf-cta { min-height: 42px; padding: 0 18px; font-size: .875rem; }
.menue-knopf {
  display: none; margin-left: auto;
  width: 44px; height: 44px; border-radius: 50%;
  align-items: center; justify-content: center;
  border: 1px solid rgba(255, 255, 255, .8); background: rgba(255, 255, 255, .6); color: var(--text);
  cursor: pointer;
}
/* Kopfzeile im Nacht-Abschnitt */
.nacht-modus .kopf .mitte {
  background: linear-gradient(135deg, rgba(20, 36, 78, .62), rgba(10, 22, 52, .5));
  border-color: rgba(255, 255, 255, .12);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 18px 40px -22px rgba(0, 0, 0, .6);
}
.nacht-modus .marke-wort { color: #fff; }
.nacht-modus .marke-wort b { color: #9FD6FF; }
.nacht-modus .nav a { color: rgba(226, 236, 255, .72); }
.nacht-modus .nav a:hover { color: #fff; background: rgba(255, 255, 255, .08); }
.nacht-modus .menue-knopf { color: #fff; background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .14); }

/* ---------- Knöpfe ---------- */
.knopf {
  position: relative; overflow: hidden; isolation: isolate;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 44px; padding: 0 22px;
  border: 1px solid transparent; border-radius: var(--r-voll);
  font: inherit; font-size: .9375rem; font-weight: 500; letter-spacing: -.005em; line-height: 1;
  white-space: nowrap; cursor: pointer;
  transition: background-color .3s var(--ease-sanft), border-color .3s var(--ease-sanft), color .3s var(--ease-sanft), box-shadow .4s var(--ease), transform .4s var(--ease-aus);
}
.knopf-voll {
  background: var(--verlauf-knopf); background-color: var(--blau-ui); color: #fff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), inset 0 -1px 0 rgba(10, 30, 80, .2), 0 1px 2px rgba(23, 78, 166, .3), 0 12px 28px -12px rgba(40, 103, 232, .75);
}
/* Lichtstreif beim Überfahren */
.knopf-voll::after {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, .45) 50%, transparent 70%);
  transform: translateX(-120%);
  transition: transform .8s var(--ease-aus);
}
.knopf-voll:hover { color: #fff; transform: translateY(-2px); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 2px 4px rgba(23, 78, 166, .3), 0 18px 36px -14px rgba(40, 103, 232, .85); }
.knopf-voll:hover::after { transform: translateX(120%); }
.knopf-voll:active { transform: translateY(0); }
.knopf-voll:disabled { opacity: .6; cursor: progress; transform: none; }
.knopf-rand {
  background: linear-gradient(135deg, rgba(255, 255, 255, .92), rgba(255, 255, 255, .75));
  color: var(--text);
  border-color: rgba(255, 255, 255, .9);
  box-shadow: inset 0 1px 0 #fff, 0 10px 24px -16px rgba(23, 78, 166, .4);
}
.knopf-rand:hover { color: var(--blau-ui); background: rgba(255, 255, 255, .92); transform: translateY(-2px); }
.knopf-gross { min-height: 54px; padding: 0 30px; font-size: 1rem; }
.knopf-breit { width: 100%; min-height: 56px; font-size: 1rem; }

/* ---------- Sektionsköpfe ---------- */
.sektion-kopf { max-width: 820px; margin-bottom: clamp(48px, 6vw, 80px); }
.sektion-kopf.mittig { margin-left: auto; margin-right: auto; text-align: center; }
.sektion-kopf.mittig .einleitung { margin-left: auto; margin-right: auto; }
.vorzeile {
  display: inline-flex; align-items: center; gap: 9px;
  margin-bottom: 24px; padding: 7px 15px 7px 11px;
  border-radius: var(--r-voll);
  background: linear-gradient(135deg, rgba(255, 255, 255, .92), rgba(255, 255, 255, .74));
  border: 1px solid rgba(255, 255, 255, .9);
  box-shadow: inset 0 1px 0 #fff, 0 8px 20px -14px rgba(23, 78, 166, .45);
  color: var(--blau-ui); font-size: .8125rem; font-weight: 600; letter-spacing: .01em;
}
.vorzeile::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #8ED8F8, #2867E8);
  box-shadow: 0 0 0 4px rgba(52, 120, 246, .14), 0 0 12px rgba(52, 120, 246, .6);
}
.einleitung { margin-top: 24px; max-width: 40em; color: var(--text-2); font-size: var(--fs-lead); line-height: 1.6; text-wrap: pretty; }

/* ---------- Wort-Enthüllung ---------- */
.wort {
  display: inline-block; vertical-align: top;
  overflow: clip;
  padding: .12em .02em .14em; margin: -.12em -.02em -.14em;
}
.wort-i { display: inline-block; }
.js .geteilt:not([data-fuellen]) .wort-i {
  transform: translateY(112%) rotate(4deg);
  transform-origin: 0 100%;
}
.js .hero.los h1 .wort-i,
.js h2.geteilt.sichtbar .wort-i {
  transform: none;
  transition: transform 1.25s var(--ease-aus);
  transition-delay: calc(var(--i) * 55ms + 80ms);
}
.js .hero.los h1 .wort-i { transition-delay: calc(var(--i) * 85ms + 120ms); transition-duration: 1.4s; }
/* Geteilte Überschriften animieren wortweise, nicht als Block */
.js h2.geteilt.zeigen { opacity: 1; translate: none; scale: none; filter: none; }
[data-fuellen] .wort { transition: opacity .25s linear; }

/* ==========================================================================
   HERO
   ========================================================================== */
/* Bildschirmfüllend, Text unten links; das Punktefeld liegt dahinter und reagiert auf den Zeiger */
.hero {
  isolation: isolate;
  display: flex; align-items: flex-end;
  min-height: max(660px, 100svh);
  margin-top: -74px;                 /* Feld beginnt hinter der schwebenden Kopfzeile */
  padding: 0;
  touch-action: pan-y;
}
.hero-feld {
  position: absolute; inset: 0; z-index: -1;
  width: 100%; height: 100%;
  /* unten ausblenden; hinter dem gesamten Textblock unten links fast vollständig zurücknehmen,
     mit weichem, langem Übergang nach oben und rechts – die Schrift bleibt immer frei lesbar */
  -webkit-mask-image: linear-gradient(to bottom, #000 55%, transparent 97%), radial-gradient(ellipse 74% 80% at 20% 82%, rgba(0, 0, 0, .03) 0%, rgba(0, 0, 0, .06) 48%, rgba(0, 0, 0, .38) 72%, #000 96%);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(to bottom, #000 55%, transparent 97%), radial-gradient(ellipse 74% 80% at 20% 82%, rgba(0, 0, 0, .03) 0%, rgba(0, 0, 0, .06) 48%, rgba(0, 0, 0, .38) 72%, #000 96%);
  mask-composite: intersect;
}
.hero > .mitte {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 40px;
  padding-top: 150px; padding-bottom: clamp(56px, 9vh, 104px);
}
.hero-text { max-width: 880px; text-align: left; }
.scroll-hinweis {
  position: absolute; left: 50%; bottom: 22px; width: 1px; height: 44px; margin-left: -.5px; overflow: hidden;
  background: rgba(40, 103, 232, .14);
}
.scroll-hinweis i {
  position: absolute; left: 0; top: -40%; width: 1px; height: 40%;
  background: linear-gradient(180deg, transparent, var(--blau));
  animation: scroll-linie 2.2s var(--ease-sanft) infinite;
}
@keyframes scroll-linie { to { top: 110%; } }
.hero-index {
  display: inline-flex; align-items: center; gap: 12px;
  margin-bottom: 32px; padding: 8px 18px 8px 14px;
  border-radius: var(--r-voll);
  background: linear-gradient(135deg, rgba(255, 255, 255, .92), rgba(255, 255, 255, .74));
  border: 1px solid rgba(255, 255, 255, .95);
  box-shadow: inset 0 1px 0 #fff, 0 10px 26px -16px rgba(23, 78, 166, .45);
  color: var(--text-2); font-size: .8125rem; font-weight: 500;
}
.hero-index > span:first-child { display: inline-flex; align-items: center; gap: 9px; color: var(--blau-ui); font-weight: 600; }
.hero-index > span:first-child::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%;
  background: #2FBF71; box-shadow: 0 0 0 0 rgba(47, 191, 113, .5);
  animation: lebendig 2.4s var(--ease-sanft) infinite;
}
@keyframes lebendig { 0% { box-shadow: 0 0 0 0 rgba(47, 191, 113, .45); } 80%, 100% { box-shadow: 0 0 0 9px rgba(47, 191, 113, 0); } }
.hero-index > i { width: 1px; height: 13px; background: rgba(21, 25, 35, .14); }

.hero h1 {
  font-size: var(--fs-hero); font-weight: 600; line-height: .98; letter-spacing: -.052em;
  text-wrap: balance;
}
.hero h1 em {
  display: inline-block;
  font-style: normal;
  background: var(--verlauf-text); background-size: 220% 100%;
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: var(--blau-ui);
  animation: schimmer 9s linear infinite;
}
@keyframes schimmer { from { background-position: 0% 0; } to { background-position: -220% 0; } }
.hero-lead {
  max-width: 580px; margin: 30px 0 0;
  color: var(--text-2); font-size: var(--fs-lead); line-height: 1.6; text-wrap: pretty;
}
.hero-knoepfe { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 40px; }
.hero .hero-knoepfe { justify-content: flex-start; }
.hero h1 { font-size: clamp(2.8rem, 5.7vw, 5.9rem); }

/* Einstieg */
.js .hero-index, .js .hero-lead, .js .hero .hero-knoepfe, .js .hero-fakten {
  opacity: 0; translate: 0 18px;
  animation: auftauchen 1.2s var(--ease-aus) forwards;
}
.js .hero-index { animation-delay: .05s; }
.js .hero-lead { animation-delay: .55s; }
.js .hero .hero-knoepfe { animation-delay: .7s; }
.js .hero-fakten { animation-delay: 1.1s; }
@keyframes auftauchen { to { opacity: 1; translate: 0 0; } }

/* ---------- Bühne: Produktansicht richtet sich beim Scrollen auf ---------- */
.produkt-buehne {
  --kipp: 1;
  position: relative;
  max-width: 1140px; margin: 0 auto;
  perspective: 2200px;
}
.buehne-sektion { padding-top: clamp(24px, 4vw, 56px) !important; }
/* Rotierender Lichtring hinter dem Fenster */
.produkt-buehne::before {
  content: ""; position: absolute; z-index: -1; inset: 4% 3% -2%;
  border-radius: 48px;
  background: conic-gradient(from var(--winkel), #8ED8F8, #3478F6, #DCEBFF, #5BB8F5, #174EA6, #8ED8F8);
  filter: blur(72px);
  opacity: calc(.32 + var(--kipp) * .3);
  /* bewusst statisch: ein animierter 72px-Weichzeichner müsste jedes Bild neu gerechnet werden */
}
@keyframes drehen { to { --winkel: 360deg; } }

.fenster {
  position: relative;
  padding: 9px;
  border-radius: var(--r-xl);
  background: linear-gradient(150deg, rgba(255, 255, 255, .7), rgba(255, 255, 255, .38));
  -webkit-backdrop-filter: blur(16px) saturate(170%);
  backdrop-filter: blur(16px) saturate(170%);
  box-shadow: inset 0 1px 0 #fff, 0 2px 6px rgba(21, 25, 35, .05), 0 50px 100px -40px rgba(23, 78, 166, .45), 0 90px 160px -70px rgba(52, 120, 246, .35);
  transform-origin: 50% 0%;
  transform: rotateX(calc((1 - var(--kipp)) * 26deg)) scale(calc(.86 + var(--kipp) * .14));
  will-change: transform;
}
.fenster::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px; pointer-events: none; z-index: 3;
  background: linear-gradient(150deg, #fff 0%, rgba(255, 255, 255, .35) 30%, rgba(52, 120, 246, .3) 65%, rgba(142, 216, 248, .85) 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
}
/* Einmaliger Lichtschweif über das Glas */
.fenster::after {
  content: ""; position: absolute; inset: 0; z-index: 4; pointer-events: none;
  border-radius: inherit;
  background: linear-gradient(105deg, transparent 38%, rgba(255, 255, 255, .7) 49%, transparent 60%) no-repeat;
  background-size: 260% 100%;
  background-position: 160% 0;
  animation: lichtschweif 2.6s 1.9s var(--ease-sanft) forwards;
}
@keyframes lichtschweif { to { background-position: -70% 0; } }

.produkt-kopf {
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  height: 40px; padding: 0 12px;
  font-size: .75rem; color: var(--text-3);
}
.ampel { display: inline-flex; gap: 6px; }
.ampel i { width: 10px; height: 10px; border-radius: 50%; background: rgba(21, 25, 35, .12); }
.produkt-pfad { font-weight: 500; color: var(--text-2); }
.produkt-trenner { margin: 0 4px; color: var(--text-3); }
.produkt-tag {
  justify-self: end;
  padding: 3px 10px; border-radius: var(--r-voll);
  background: rgba(52, 120, 246, .1); color: var(--blau-ui);
  font-size: .6875rem; font-weight: 600; letter-spacing: .02em;
}
.produkt-fuss {
  display: flex; justify-content: space-between; gap: 16px;
  padding: 11px 14px 5px;
  font-size: .75rem; color: var(--text-3);
}

/* App */
.app {
  display: grid; grid-template-columns: 196px minmax(0, 1fr) 232px;
  min-height: 450px;
  border-radius: 22px; overflow: hidden;
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 0 0 1px rgba(21, 25, 35, .06), 0 1px 3px rgba(21, 25, 35, .05);
  font-size: .8125rem; line-height: 1.4; text-align: left;
}
.app-nav { padding: 16px 10px; background: linear-gradient(180deg, #FAFCFF, #F3F7FD); border-right: 1px solid var(--linie); }
.ap-marke { display: flex; align-items: center; gap: 8px; padding: 2px 8px 16px; font-weight: 600; font-size: .875rem; letter-spacing: -.01em; }
.ap-marke b { color: var(--blau-ui); font-weight: 600; }
.app-nav .p { display: flex; align-items: center; gap: 10px; padding: 7px 10px; margin-bottom: 1px; border-radius: 9px; color: var(--text-2); }
.app-nav .p svg { width: 16px; height: 16px; flex-shrink: 0; color: var(--text-3); }
.app-nav .p.an { background: #fff; color: var(--blau-ui); font-weight: 600; box-shadow: 0 1px 2px rgba(21, 25, 35, .06), 0 0 0 1px rgba(52, 120, 246, .14); }
.app-nav .p.an svg { color: var(--blau); }
.app-nav .zahl { margin-left: auto; min-width: 22px; padding: 1px 7px; border-radius: var(--r-voll); background: rgba(52, 120, 246, .1); color: var(--blau-ui); font-size: .6875rem; font-weight: 600; text-align: center; }
.app-nav .klein { padding: 16px 10px 6px; color: var(--text-3); font-size: .625rem; font-weight: 600; letter-spacing: .1em; }
.app-inhalt { padding: 20px 22px; min-width: 0; }
.app-ueberzeile { display: flex; justify-content: space-between; align-items: center; color: var(--text-3); font-size: .71875rem; }
.app-benutzer { padding: 3px 10px; border-radius: var(--r-voll); border: 1px solid var(--linie); color: var(--text-2); background: #fff; }
.app-titel { margin: 10px 0 16px; font-size: 1.3125rem; font-weight: 600; letter-spacing: -.025em; color: var(--text); }
.app-kz { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 18px; }
.app-kz > div { padding: 12px 14px; border-radius: 12px; border: 1px solid var(--linie); background: #fff; }
.app-kz b { display: block; font-size: 1.5rem; font-weight: 600; letter-spacing: -.03em; line-height: 1.1; }
.app-kz small { color: var(--text-2); font-size: .71875rem; }
.app-kz .kz-rot { background: linear-gradient(180deg, #fff, var(--rot-hauch)); border-color: #F6DEDC; }
.app-kz .kz-rot b { color: var(--rot); }
.app-kz .kz-blau { background: linear-gradient(160deg, #F4F8FF, #E3EEFF); border-color: rgba(52, 120, 246, .22); }
.app-kz .kz-blau b { color: var(--blau-ui); }
.app-listen-kopf, .app-zeile { display: grid; grid-template-columns: 92px minmax(0, 1fr) auto; gap: 12px; align-items: center; }
.app-listen-kopf { padding: 0 12px 8px; border-bottom: 1px solid var(--linie); color: var(--text-3); font-size: .6875rem; font-weight: 500; letter-spacing: .02em; }
.app-listen-kopf span:last-child { text-align: right; }
.app-zeile { position: relative; padding: 9px 12px; border-bottom: 1px solid rgba(21, 25, 35, .05); }
.app-zeile:last-child { border-bottom: 0; }
.app-zeile.ausgewaehlt { margin: 2px 0; border-radius: 10px; border-bottom-color: transparent; background: linear-gradient(90deg, rgba(52, 120, 246, .1), rgba(52, 120, 246, .03)); box-shadow: inset 0 0 0 1px rgba(52, 120, 246, .18); }
.app-modul { color: var(--text-2); font-size: .75rem; }
.app-zeile .t { font-weight: 500; color: var(--text); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.app-zeile .t small { display: block; color: var(--text-3); font-weight: 400; font-size: .6875rem; margin-top: 1px; }
.chip { padding: 3px 9px; border-radius: var(--r-voll); font-size: .6875rem; font-weight: 500; white-space: nowrap; }
.c-rot { background: var(--rot-hauch); color: var(--rot); }
.c-blau { background: rgba(52, 120, 246, .1); color: var(--blau-ui); }
.c-ruhig { background: var(--grund-2); color: var(--text-2); box-shadow: inset 0 0 0 1px var(--linie); }
.app-detail { padding: 16px; border-left: 1px solid var(--linie); background: linear-gradient(180deg, #fff 0%, #F5F9FF 100%); }
.detail-top { display: flex; justify-content: space-between; color: var(--text-3); font-size: .71875rem; font-weight: 500; margin-bottom: 12px; }
.dokument-blatt { position: relative; padding: 14px 14px 12px; margin-bottom: 14px; border-radius: 10px; background: #fff; border: 1px solid var(--linie); box-shadow: 0 1px 2px rgba(21, 25, 35, .04), 0 14px 26px -16px rgba(23, 78, 166, .35); }
.dokument-blatt::after { content: ""; position: absolute; right: 0; top: 0; width: 18px; height: 18px; background: linear-gradient(225deg, var(--grund-2) 50%, var(--linie-2) 50%, #fff 56%); border-top-right-radius: 10px; }
.blatt-kopf { display: block; color: var(--text-3); font-size: .5625rem; letter-spacing: .08em; text-transform: uppercase; }
.dokument-blatt strong { display: block; margin-top: 6px; font-size: .8125rem; font-weight: 600; }
.blatt-revision { display: block; color: var(--blau-ui); font-size: .625rem; font-weight: 500; }
.blatt-linien { display: grid; gap: 5px; margin: 10px 0; }
.blatt-linien i { display: block; height: 4px; border-radius: 2px; background: #EEF2F8; }
.blatt-linien i:nth-child(2) { width: 88%; }
.blatt-linien i:nth-child(3) { width: 72%; }
.blatt-linien i:nth-child(4) { width: 54%; }
.blatt-abschnitt { display: block; font-size: .625rem; font-weight: 600; color: var(--text-2); }
.detail-status { display: inline-flex; align-items: center; gap: 7px; margin-bottom: 10px; padding: 4px 10px; border-radius: var(--r-voll); background: rgba(52, 120, 246, .1); color: var(--blau-ui); font-size: .71875rem; font-weight: 600; }
.status-punkt { position: relative; width: 7px; height: 7px; border-radius: 50%; background: var(--blau); }
.status-punkt::after { content: ""; position: absolute; inset: -4px; border-radius: 50%; border: 1.5px solid var(--blau); opacity: 0; animation: puls 2.6s var(--ease-sanft) infinite; }
@keyframes puls { 0% { transform: scale(.5); opacity: .6; } 100% { transform: scale(1.6); opacity: 0; } }
.detail-eigenschaft { display: flex; justify-content: space-between; padding: 7px 0; border-bottom: 1px solid rgba(21, 25, 35, .05); font-size: .75rem; color: var(--text-2); }
.detail-eigenschaft b { color: var(--text); font-weight: 600; }
.detail-prozess { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-top: 14px; font-size: .65625rem; color: var(--text-3); }
.detail-prozess span, .detail-prozess b { padding: 3px 7px; border-radius: 6px; background: var(--grund-2); box-shadow: inset 0 0 0 1px var(--linie); }
.detail-prozess b { background: var(--blau-ui); color: #fff; box-shadow: none; font-weight: 600; }
.detail-prozess i { font-style: normal; color: var(--text-3); }

/* Schwebende Glas-Hinweise mit Tiefenversatz */
.schwebe {
  position: absolute; z-index: 5;
  display: flex; align-items: center; gap: 12px;
  padding: 13px 18px 13px 14px;
  border-radius: 18px;
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(142, 216, 248, .3), transparent 60%),
    linear-gradient(150deg, rgba(255, 255, 255, .86), rgba(255, 255, 255, .55));
  border: 1px solid rgba(255, 255, 255, .95);
  -webkit-backdrop-filter: blur(12px) saturate(170%);
  backdrop-filter: blur(12px) saturate(170%);
  box-shadow: inset 0 1px 0 #fff, 0 2px 4px rgba(21, 25, 35, .05), 0 30px 50px -22px rgba(23, 78, 166, .5);
  font-size: .8125rem; line-height: 1.35;
  transform: translateY(calc((1 - var(--kipp)) * var(--tiefe, 80px)));
  animation: schweben 7s var(--ease-sanft) infinite alternate;
}
.schwebe b { display: block; font-weight: 600; color: var(--text); }
.schwebe small { display: block; color: var(--text-2); font-size: .71875rem; }
.schwebe-a { --tiefe: 50px; left: 6%; top: -34px; }
.schwebe-b { --tiefe: -60px; right: -34px; bottom: -30px; animation-delay: -3.5s; }
.schwebe-punkt { position: relative; width: 34px; height: 34px; border-radius: 11px; flex-shrink: 0; background: linear-gradient(160deg, #FFF6F5, #FCE6E4); box-shadow: inset 0 0 0 1px #F6DAD7; }
.schwebe-punkt::after { content: ""; position: absolute; inset: 0; margin: auto; width: 9px; height: 9px; border-radius: 50%; background: var(--rot); box-shadow: 0 0 0 4px rgba(196, 52, 43, .14); }
.schwebe-ring { flex-shrink: 0; }
@keyframes schweben { from { translate: 0 0; } to { translate: 0 -12px; } }

.hero-fakten {
  display: flex; flex-direction: column; align-items: flex-end; gap: 10px;
  color: var(--text); font-size: .9375rem; font-weight: 500;
}
.hero-fakten li {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 11px 20px 11px 16px; border-radius: var(--r-voll);
  background: linear-gradient(135deg, rgba(255, 255, 255, .92), rgba(255, 255, 255, .74));
  border: 1px solid rgba(255, 255, 255, .9);
  box-shadow: inset 0 1px 0 #fff, 0 10px 24px -16px rgba(23, 78, 166, .4);
}
.hero-fakten svg { color: var(--blau); }

/* ---------- Laufband ---------- */
.laufband {
  position: relative; overflow: hidden;
  padding: clamp(12px, 2vw, 28px) 0;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 14%, #000 86%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 14%, #000 86%, transparent);
}
.laufband-innen { will-change: transform; }
.laufband-spur { display: flex; width: max-content; animation: lauf 60s linear infinite; }
.laufband-spur span {
  display: inline-flex; align-items: center; gap: clamp(28px, 4vw, 56px);
  padding-right: clamp(28px, 4vw, 56px);
  font-size: clamp(2rem, 5vw, 4.4rem); font-weight: 600; letter-spacing: -.045em; line-height: 1.15;
  white-space: nowrap;
  /* gefüllte Schrift statt Kontur: Inter (variabel) zeigt bei text-stroke innere Überlappungslinien */
  color: var(--blau-ui);
}
.laufband-spur span::after {
  content: ""; width: .22em; height: .22em; border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #8ED8F8, #2867E8);
  box-shadow: 0 0 18px rgba(52, 120, 246, .55);
}
@keyframes lauf { to { transform: translateX(-50%); } }

/* ==========================================================================
   WARUM – Vergleich
   ========================================================================== */
.band .sektion-kopf { max-width: 980px; }
.band h2 { font-size: clamp(2.3rem, 5.4vw, 4.8rem); }
.vergleich { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 28px; }
.v-karte { padding: clamp(30px, 3.6vw, 44px); border-radius: var(--r-xl); }
.v-karte h3 { margin-bottom: 24px; font-size: 1.375rem; letter-spacing: -.025em; }
.v-karte li { display: flex; align-items: flex-start; gap: 14px; padding: 14px 0; border-top: 1px solid rgba(21, 25, 35, .07); font-size: 1rem; line-height: 1.5; }
.v-karte li:first-child { border-top: 0; padding-top: 0; }
.v-ikon { display: grid; place-items: center; width: 26px; height: 26px; margin-top: -2px; border-radius: 50%; flex-shrink: 0; }
.v-ikon svg { width: 14px; height: 14px; }
.v-vorher {
  --k-grund: linear-gradient(145deg, rgba(255, 255, 255, .6), rgba(240, 243, 248, .4));
  --k-rand: linear-gradient(140deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .2) 50%, rgba(21, 25, 35, .08));
  --k-rand-licht: rgba(21, 25, 35, .25);
  color: var(--text-2);
}
.v-vorher h3 { color: var(--text-2); }
.v-vorher .v-ikon { background: rgba(255, 255, 255, .8); color: var(--text-3); box-shadow: inset 0 0 0 1px var(--linie-2); }
.v-nachher {
  --k-grund:
    radial-gradient(120% 90% at 100% 0%, rgba(142, 216, 248, .45), transparent 55%),
    radial-gradient(100% 80% at 0% 100%, rgba(52, 120, 246, .18), transparent 60%),
    linear-gradient(145deg, rgba(255, 255, 255, .86), rgba(255, 255, 255, .5));
  --k-schatten: inset 0 1px 0 #fff, 0 2px 4px rgba(16, 40, 90, .05), 0 40px 90px -36px rgba(40, 103, 232, .6);
}
.v-nachher h3 { color: var(--blau-ui); }
.v-nachher li { border-top-color: rgba(52, 120, 246, .14); }
.v-nachher .v-ikon { background: var(--verlauf-ikon); color: #fff; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 6px 14px -6px rgba(40, 103, 232, .8); }
.v-pfeil {
  position: relative;
  display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%;
  background: var(--verlauf-knopf); color: #fff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 16px 30px -12px rgba(40, 103, 232, .8);
}
.v-pfeil::after {
  content: ""; position: absolute; inset: -8px; border-radius: 50%;
  border: 1px solid rgba(52, 120, 246, .35);
  animation: welle-ring 2.6s var(--ease-sanft) infinite;
}
@keyframes welle-ring { from { transform: scale(.85); opacity: 1; } to { transform: scale(1.45); opacity: 0; } }

/* ==========================================================================
   QM-MODULE – Kopf bleibt stehen, Karten ziehen vorbei
   ========================================================================== */
.raster { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.modul { display: flex; flex-direction: column; padding: 30px 28px 26px; }
.modul-ikon {
  display: grid; place-items: center;
  width: 50px; height: 50px; margin-bottom: 24px; border-radius: 15px;
  background: var(--verlauf-ikon); color: #fff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .45), inset 0 -2px 6px rgba(10, 30, 90, .25), 0 12px 24px -10px rgba(40, 103, 232, .7);
  transition: transform .6s var(--ease-aus);
}
.modul:hover .modul-ikon { transform: translateZ(0) scale(1.06) rotate(-4deg); }
.modul h3 { margin-bottom: 10px; }
.modul p { margin-bottom: 22px; color: var(--text-2); font-size: .96875rem; line-height: 1.6; }
.norm {
  align-self: flex-start;
  margin-top: auto;
  padding: 5px 11px; border-radius: var(--r-voll);
  background: rgba(255, 255, 255, .6); box-shadow: inset 0 0 0 1px rgba(52, 120, 246, .14);
  color: var(--blau-ui); font-size: .75rem; font-weight: 600; letter-spacing: .02em;
  font-variant-numeric: tabular-nums;
}

/* Explorer (per JS aufgebaut; ohne JS bleibt das Raster oben) */
.modul-explorer {
  display: grid; grid-template-columns: minmax(270px, 360px) minmax(0, 1fr); gap: 20px; align-items: stretch;
}
.modul-liste {
  display: flex; flex-direction: column; gap: 2px;
  padding: 10px; border-radius: var(--r-xl);
  background: linear-gradient(145deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .7));
  border: 1px solid rgba(255, 255, 255, .85);
  -webkit-backdrop-filter: var(--k-blur); backdrop-filter: var(--k-blur);
  box-shadow: var(--k-schatten);
}
.modul-tab {
  position: relative;
  display: grid; grid-template-columns: 32px minmax(0, 1fr) auto; align-items: center; gap: 12px;
  width: 100%; padding: 8px 12px 8px 8px;
  border: 0; border-radius: 14px; background: transparent;
  font: inherit; text-align: left; color: var(--text-2); cursor: pointer;
  transition: background-color .3s var(--ease-sanft), box-shadow .3s var(--ease-sanft), color .3s var(--ease-sanft);
}
.modul-tab:hover { background: rgba(255, 255, 255, .7); color: var(--text); }
.tab-ikon {
  display: grid; place-items: center; width: 32px; height: 32px; border-radius: 10px;
  background: rgba(52, 120, 246, .09); color: var(--blau-ui);
  transition: background .3s var(--ease-sanft), color .3s var(--ease-sanft), box-shadow .3s var(--ease-sanft);
}
.tab-ikon svg { width: 16px; height: 16px; }
.tab-name { font-size: .9375rem; font-weight: 500; letter-spacing: -.01em; color: inherit; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tab-norm { color: var(--text-3); font-size: .6875rem; font-weight: 500; font-variant-numeric: tabular-nums; }
.modul-tab.an {
  background: #fff; color: var(--text);
  box-shadow: 0 1px 2px rgba(16, 40, 90, .06), 0 10px 24px -14px rgba(23, 78, 166, .5), inset 0 0 0 1px rgba(52, 120, 246, .14);
}
.modul-tab.an .tab-name { font-weight: 600; }
.modul-tab.an .tab-norm { color: var(--blau-ui); }
.modul-tab.an .tab-ikon { background: var(--verlauf-ikon); color: #fff; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 6px 14px -6px rgba(40, 103, 232, .8); }

.modul-buehne { position: relative; min-width: 0; }
.raster.explorer { display: block; height: 100%; }
.raster.explorer .modul {
  --hub: 0px;
  height: 100%; min-height: 460px;
  padding: clamp(32px, 4vw, 56px);
  overflow: hidden;
  --k-grund:
    radial-gradient(90% 80% at 100% 0%, rgba(142, 216, 248, .45), transparent 55%),
    radial-gradient(80% 70% at 0% 100%, rgba(52, 120, 246, .14), transparent 60%),
    linear-gradient(145deg, rgba(255, 255, 255, .86), rgba(255, 255, 255, .5));
}
.modul[hidden] { display: none !important; }
.raster.explorer .modul > :not(.modul-deko, .modul-nr) { position: relative; z-index: 1; }
.raster.explorer .modul:hover { --rx: 0deg !important; --ry: 0deg !important; }
.raster.explorer .modul-ikon { width: 72px; height: 72px; margin-bottom: 32px; border-radius: 22px; }
.raster.explorer .modul-ikon svg { width: 32px; height: 32px; }
.raster.explorer h3 { margin-bottom: 18px; font-size: clamp(2rem, 3.6vw, 3.25rem); line-height: 1.05; letter-spacing: -.045em; }
.raster.explorer p { max-width: 30em; margin-bottom: 32px; font-size: clamp(1.0625rem, 1.4vw, 1.3125rem); line-height: 1.6; }
.raster.explorer .norm { font-size: .8125rem; padding: 7px 14px; }
.modul-nr {
  position: absolute; top: clamp(28px, 3.4vw, 44px); right: clamp(28px, 3.4vw, 48px);
  color: var(--text-3); font-size: .8125rem; font-weight: 500; letter-spacing: .04em; font-variant-numeric: tabular-nums;
}
.raster:not(.explorer) .modul-nr, .raster:not(.explorer) .modul-deko { display: none; }
.modul-deko {
  position: absolute; right: -6%; bottom: -14%; z-index: 0; pointer-events: none;
  width: 52%; max-width: 380px; aspect-ratio: 1;
  color: var(--blau); opacity: .09;
}
.modul-deko svg { width: 100%; height: 100%; stroke-width: .8; }
/* neuer Inhalt gleitet herein */
.raster.explorer .modul:not([hidden]) > :is(.modul-ikon, h3, p, .norm) { animation: panel-ein .8s var(--ease-aus) both; }
.raster.explorer .modul:not([hidden]) > h3 { animation-delay: .05s; }
.raster.explorer .modul:not([hidden]) > p { animation-delay: .1s; }
.raster.explorer .modul:not([hidden]) > .norm { animation-delay: .15s; }
.raster.explorer .modul:not([hidden]) > .modul-deko { animation: deko-ein 1.2s var(--ease-aus) both; }
@keyframes panel-ein { from { opacity: 0; translate: 0 22px; filter: blur(6px); } to { opacity: 1; translate: 0 0; filter: none; } }
@keyframes deko-ein { from { opacity: 0; transform: scale(.85) rotate(-8deg); } to { opacity: .09; transform: none; } }
.modul-fortschritt {
  position: absolute; left: clamp(32px, 4vw, 56px); right: clamp(32px, 4vw, 56px); bottom: 26px; z-index: 3;
  height: 2px; border-radius: 2px; overflow: hidden;
  background: rgba(52, 120, 246, .12);
  transition: opacity .4s var(--ease);
}
.modul-fortschritt i {
  position: absolute; inset: 0; border-radius: inherit;
  background: linear-gradient(90deg, #8ED8F8, #2867E8);
  transform-origin: 0 50%; transform: scaleX(var(--p, 0));
}
.modul-explorer.manuell .modul-fortschritt { opacity: 0; }

/* ==========================================================================
   SO HÄNGT ES ZUSAMMEN – der Nacht-Abschnitt
   ========================================================================== */
/* Überschriften & Fließtext färben sich mit der Szene – lesbar in jedem Übergang */
main h2 { color: color-mix(in oklab, var(--text), #fff clamp(0%, (var(--nacht, 0) - .18) * 500%, 100%)); }
.einleitung { color: color-mix(in oklab, var(--text-2), #DCE8FF clamp(0%, (var(--nacht, 0) - .18) * 500%, 100%)); }

.nacht {
  color: #fff;
  /* eigene dunkelblaue Glasfarbe: bleibt auch auf hellem Grund lesbar */
  --k-grund:
    radial-gradient(120% 85% at 100% 0%, rgba(142, 216, 248, .2), transparent 55%),
    linear-gradient(145deg, rgba(36, 72, 160, .62) 0%, rgba(10, 26, 72, .72) 100%);
  --k-rand: linear-gradient(140deg, rgba(255, 255, 255, .5) 0%, rgba(255, 255, 255, .06) 40%, rgba(142, 216, 248, .4) 100%);
  --k-licht: rgba(142, 216, 248, .16);
  --k-rand-licht: rgba(142, 216, 248, .95);
  --k-schatten: inset 0 1px 0 rgba(255, 255, 255, .12), 0 30px 60px -30px rgba(0, 0, 0, .55);
  --k-blur: none;
}
html:not(.js) .nacht { background: radial-gradient(90% 70% at 50% 40%, #12306F, #071431 70%); }
.nacht .vorzeile { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .16); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .12); color: #9FD6FF; }
.nacht :is(.f-box, .f-ziel)::after { background: radial-gradient(320px circle at var(--mx) var(--my), var(--k-licht), transparent 60%), linear-gradient(172deg, rgba(255, 255, 255, .1) 0%, transparent 34%); }

.fluss { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.fluss-spalte { display: flex; flex-direction: column; align-items: stretch; }
.f-box { padding: 18px 20px; border-radius: var(--r-m); }
.f-box small { display: block; margin-bottom: 3px; color: rgba(220, 232, 255, .6); font-size: .75rem; font-weight: 500; letter-spacing: .02em; }
.f-box b { display: block; font-size: 1rem; font-weight: 600; letter-spacing: -.012em; line-height: 1.35; color: #fff; }
.f-box.qm {
  --k-grund:
    radial-gradient(120% 90% at 100% 0%, rgba(142, 216, 248, .28), transparent 60%),
    linear-gradient(145deg, rgba(52, 120, 246, .7), rgba(23, 60, 150, .62));
  --k-rand: linear-gradient(140deg, rgba(142, 216, 248, .8), rgba(52, 120, 246, .15) 45%, rgba(142, 216, 248, .55));
  box-shadow: var(--k-schatten), 0 0 40px -12px rgba(52, 120, 246, .55);
}
.f-box.qm small { color: #9FD6FF; }
/* Verbindungen zeichnen sich, Datenpunkte fließen */
.f-pfeil {
  position: relative; align-self: center;
  width: 2px; height: 36px;
  background: linear-gradient(180deg, rgba(142, 216, 248, .1), rgba(142, 216, 248, .75));
  transform-origin: 50% 0;
  transform: scaleY(0);
  transition: transform .9s var(--ease-aus);
}
.fluss-spalte.sichtbar .f-pfeil, html:not(.js) .f-pfeil { transform: scaleY(1); }
.fluss-spalte.sichtbar .f-pfeil:nth-child(2) { transition-delay: .35s; }
.fluss-spalte.sichtbar .f-pfeil:nth-child(4) { transition-delay: .75s; }
.f-pfeil::before {
  content: ""; position: absolute; left: 50%; top: 0;
  width: 6px; height: 6px; margin-left: -3px; border-radius: 50%;
  background: #CFF0FF; box-shadow: 0 0 10px 3px rgba(142, 216, 248, .85);
  animation: fliessen 2.2s var(--ease-sanft) infinite;
}
.fluss-spalte:nth-child(2) .f-pfeil::before { animation-delay: -.6s; }
.fluss-spalte:nth-child(3) .f-pfeil::before { animation-delay: -1.2s; }
.fluss-spalte:nth-child(4) .f-pfeil::before { animation-delay: -1.7s; }
@keyframes fliessen { 0% { top: -3px; opacity: 0; } 25% { opacity: 1; } 100% { top: calc(100% - 3px); opacity: 0; } }
.f-pfeil::after {
  content: ""; position: absolute; left: 50%; bottom: 0;
  width: 7px; height: 7px; transform: translateX(-50%) rotate(45deg);
  border-right: 2px solid rgba(142, 216, 248, .8); border-bottom: 2px solid rgba(142, 216, 248, .8);
}
.f-ziel {
  display: flex; align-items: center; gap: 20px;
  max-width: 680px; margin: 64px auto 0; padding: 22px 28px;
  border-radius: var(--r-l);
  box-shadow: var(--k-schatten), 0 0 80px -20px rgba(52, 120, 246, .6);
}
.f-ziel b { display: block; font-size: 1.125rem; font-weight: 600; letter-spacing: -.015em; color: #fff; }
.f-ziel span { display: block; color: rgba(220, 232, 255, .72); font-size: .96875rem; }
.f-ziel-ikon {
  display: grid; place-items: center; flex-shrink: 0;
  width: 52px; height: 52px; border-radius: 16px;
  background: var(--verlauf-ikon); color: #fff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 0 30px rgba(52, 120, 246, .7);
}

/* ==========================================================================
   ERP
   ========================================================================== */
.zwei { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(40px, 6vw, 96px); align-items: center; }
.erp-text .hero-knoepfe { margin-top: 36px; }
.haken-liste {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px;
  padding: 14px 32px; border-radius: var(--r-xl);
}
.haken-liste li { display: flex; gap: 14px; padding: 20px 0; border-bottom: 1px solid rgba(52, 120, 246, .12); }
.haken-liste li:nth-last-child(-n+2) { border-bottom: 0; }
.haken {
  display: grid; place-items: center; flex-shrink: 0;
  width: 26px; height: 26px; margin-top: 0; border-radius: 50%;
  background: var(--verlauf-ikon); color: #fff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 6px 12px -6px rgba(40, 103, 232, .8);
}
.haken-liste b { display: block; font-weight: 600; font-size: 1rem; letter-spacing: -.012em; }
.haken-liste span:not(.haken) { display: block; margin-top: 2px; color: var(--text-2); font-size: .875rem; line-height: 1.5; }
.js .haken-liste.zeigen li { opacity: 0; translate: 0 14px; transition: opacity .8s var(--ease), translate .9s var(--ease-aus); }
.js .haken-liste.sichtbar li { opacity: 1; translate: 0 0; }
.haken-liste li:nth-child(2) { transition-delay: .06s; }
.haken-liste li:nth-child(3) { transition-delay: .12s; }
.haken-liste li:nth-child(4) { transition-delay: .18s; }
.haken-liste li:nth-child(5) { transition-delay: .24s; }
.haken-liste li:nth-child(6) { transition-delay: .3s; }
.haken-liste li:nth-child(7) { transition-delay: .36s; }
.haken-liste li:nth-child(8) { transition-delay: .42s; }

/* ==========================================================================
   NORMEN
   ========================================================================== */
.normen { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px; }
.norm-karte { display: flex; flex-direction: column; align-items: flex-start; min-height: 190px; padding: 26px 24px; }
.norm-karte .n { font-size: 1.375rem; font-weight: 600; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.norm-karte .w { margin-top: 4px; color: var(--text-2); font-size: .9375rem; }
.norm-karte .s { margin-top: auto; padding: 5px 12px; border-radius: var(--r-voll); font-size: .75rem; font-weight: 600; letter-spacing: .02em; }
.s-paket { background: rgba(255, 255, 255, .7); color: var(--text-2); box-shadow: inset 0 0 0 1px var(--linie-2); }
.norm-karte.kern {
  --k-grund:
    radial-gradient(120% 90% at 100% 0%, rgba(142, 216, 248, .7), transparent 55%),
    linear-gradient(150deg, #3D84FA 0%, #2867E8 45%, #174EA6 100%);
  --k-rand: linear-gradient(140deg, rgba(255, 255, 255, .8), rgba(255, 255, 255, .1) 45%, rgba(142, 216, 248, .7));
  --k-licht: rgba(255, 255, 255, .25);
  --k-rand-licht: rgba(255, 255, 255, .95);
  --k-schatten: inset 0 1px 0 rgba(255, 255, 255, .4), 0 30px 60px -24px rgba(40, 103, 232, .75);
  color: #fff;
}
.norm-karte.kern .n { color: #fff; }
.norm-karte.kern .w { color: rgba(255, 255, 255, .82); }
.s-kern { background: #fff; color: var(--blau-ui); box-shadow: 0 6px 14px -6px rgba(10, 30, 90, .5); }

/* ==========================================================================
   FÜR WEN
   ========================================================================== */
.karten2 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.k2 { padding: clamp(30px, 3.2vw, 40px); border-radius: var(--r-xl); }
.branchen-nummer {
  display: block; margin-bottom: 48px;
  font-size: clamp(3.6rem, 6vw, 5.2rem); font-weight: 200; line-height: .9; letter-spacing: -.06em;
  background: linear-gradient(170deg, #3478F6 10%, #8ED8F8 95%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.k2 h3 { margin-bottom: 12px; font-size: 1.375rem; letter-spacing: -.025em; }
.k2 p { color: var(--text-2); font-size: 1rem; line-height: 1.6; }

/* ==========================================================================
   HERKUNFT – Zeitleiste zeichnet sich beim Scrollen
   ========================================================================== */
.zeitleiste { --zl-p: 0; position: relative; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; padding-top: 44px; }
.zeitleiste::before, .zeitleiste::after {
  content: ""; position: absolute; left: 0; right: 0; top: 7px; height: 2px; border-radius: 2px;
}
.zeitleiste::before { background: rgba(52, 120, 246, .12); }
.zeitleiste::after {
  background: linear-gradient(90deg, #8ED8F8, #3478F6 60%, #174EA6);
  box-shadow: 0 0 14px rgba(52, 120, 246, .55);
  transform-origin: 0 50%; transform: scaleX(var(--zl-p));
}
html:not(.js) .zeitleiste { --zl-p: 1; }
.zl { --zl-px: 28px; padding: 30px var(--zl-px); border-radius: var(--r-l); }
/* Punkt sitzt auf der Linie: 44px Abstand + 30px Innenabstand über dem Jahr */
.zl > .j::before {
  content: ""; position: absolute; left: 0; top: -74px;
  width: 16px; height: 16px; border-radius: 50%;
  background: #fff; border: 2px solid rgba(52, 120, 246, .3);
  transition: background .5s var(--ease), border-color .5s var(--ease), box-shadow .5s var(--ease);
}
.zl.an > .j::before, html:not(.js) .zl > .j::before {
  background: radial-gradient(circle at 35% 35%, #8ED8F8, #2867E8);
  border-color: #fff;
  box-shadow: 0 0 0 5px rgba(52, 120, 246, .15), 0 0 22px rgba(52, 120, 246, .7);
}
.zl .j { position: relative; margin-bottom: 12px; color: var(--blau-ui); font-size: .875rem; font-weight: 600; letter-spacing: .01em; }
.zl h3 { margin-bottom: 10px; font-size: 1.3125rem; letter-spacing: -.025em; }
.zl p { color: var(--text-2); font-size: .96875rem; line-height: 1.6; }
.zl.ziel {
  --k-grund:
    radial-gradient(120% 90% at 100% 0%, rgba(142, 216, 248, .5), transparent 55%),
    radial-gradient(100% 80% at 0% 100%, rgba(52, 120, 246, .16), transparent 60%),
    linear-gradient(145deg, rgba(255, 255, 255, .86), rgba(255, 255, 255, .5));
  --k-schatten: inset 0 1px 0 #fff, 0 40px 80px -36px rgba(40, 103, 232, .55);
}

/* ==========================================================================
   KONTAKT
   ========================================================================== */
.kontakt-raster { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(40px, 6vw, 96px); align-items: start; }
.kontakt-raster h2 { font-size: clamp(2.6rem, 5.4vw, 4.8rem); }
.kontakt-punkte { margin-top: 44px; }
.kontakt-punkte li { position: relative; display: flex; gap: 16px; padding-bottom: 26px; }
.kontakt-punkte li:not(:last-child)::before {
  content: ""; position: absolute; left: 16px; top: 38px; bottom: 4px; width: 2px; border-radius: 2px;
  background: linear-gradient(180deg, rgba(52, 120, 246, .5), rgba(52, 120, 246, .08));
}
.nummer {
  display: grid; place-items: center; flex-shrink: 0;
  width: 34px; height: 34px; border-radius: 50%;
  background: var(--verlauf-ikon); color: #fff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 8px 16px -8px rgba(40, 103, 232, .8);
  font-size: .8125rem; font-weight: 600;
}
.kontakt-punkte b { display: block; font-weight: 600; margin-top: 5px; }
.kontakt-punkte span:not(.nummer) { display: block; color: var(--text-2); font-size: .96875rem; line-height: 1.5; }
.direkt {
  margin-top: 18px; padding: 26px 28px;
  border-radius: var(--r-l);
  background: linear-gradient(145deg, rgba(255, 255, 255, .85), rgba(255, 255, 255, .65));
  border: 1px solid rgba(255, 255, 255, .8);
  color: var(--text-2); font-size: .9375rem; line-height: 1.65;
}
.direkt b { display: block; margin-bottom: 10px; color: var(--text); font-weight: 600; }
.direkt p + p { margin-top: 12px; }
.direkt a { font-weight: 500; }
.direkt .klein { color: var(--text-3); font-size: .8125rem; }

.formular {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 16px;
  padding: clamp(26px, 3.6vw, 44px);
  border-radius: var(--r-xl);
  --k-schatten: inset 0 1px 0 #fff, 0 2px 4px rgba(16, 40, 90, .05), 0 50px 100px -40px rgba(23, 78, 166, .5);
}
.formular .voll { grid-column: 1 / -1; }
.formular label, .formular legend { display: block; margin-bottom: 8px; color: var(--text); font-size: .8125rem; font-weight: 500; }
.formular input:not([type="checkbox"]), .formular textarea {
  width: 100%; padding: 13px 15px;
  border: 1px solid rgba(255, 255, 255, .9); border-radius: 14px;
  background: rgba(255, 255, 255, .62);
  color: var(--text); font: inherit; font-size: .9375rem; line-height: 1.4;
  box-shadow: inset 0 1px 2px rgba(21, 25, 35, .05), 0 0 0 1px rgba(21, 25, 35, .05);
  transition: border-color .25s var(--ease-sanft), box-shadow .25s var(--ease-sanft), background-color .25s var(--ease-sanft);
}
.formular input:not([type="checkbox"]):hover, .formular textarea:hover { background: rgba(255, 255, 255, .8); }
.formular input:not([type="checkbox"]):focus, .formular textarea:focus {
  outline: none; background: #fff;
  border-color: var(--blau);
  box-shadow: 0 0 0 4px rgba(52, 120, 246, .16), 0 10px 24px -14px rgba(40, 103, 232, .5);
}
.formular textarea { min-height: 132px; resize: vertical; }
.formular ::placeholder { color: var(--text-3); }
.formular fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.wahl-reihe { display: flex; flex-wrap: wrap; gap: 8px; }
.wahl-reihe label {
  display: inline-flex; align-items: center; gap: 8px; margin: 0;
  padding: 10px 15px 10px 12px; border-radius: var(--r-voll);
  background: rgba(255, 255, 255, .62); border: 1px solid rgba(255, 255, 255, .9);
  box-shadow: 0 0 0 1px rgba(21, 25, 35, .05);
  color: var(--text-2); font-size: .875rem; font-weight: 450;
  cursor: pointer;
  transition: background-color .25s var(--ease-sanft), color .25s var(--ease-sanft), box-shadow .25s var(--ease-sanft);
}
.wahl-reihe label:hover { color: var(--text); background: rgba(255, 255, 255, .85); }
.wahl-reihe label:has(input:checked) {
  background: linear-gradient(135deg, rgba(52, 120, 246, .14), rgba(142, 216, 248, .18));
  color: var(--blau-tief);
  box-shadow: 0 0 0 1px rgba(52, 120, 246, .45), 0 8px 18px -10px rgba(40, 103, 232, .6);
}
.wahl-reihe label:has(input:focus-visible) { outline: 2px solid var(--blau); outline-offset: 2px; }
.formular input[type="checkbox"] { width: 17px; height: 17px; margin: 0; flex-shrink: 0; accent-color: var(--blau-ui); cursor: pointer; }
.einwilligung { display: flex; align-items: flex-start; gap: 12px; }
.einwilligung input { margin-top: 2px !important; }
.einwilligung label { margin: 0; color: var(--text-2); font-size: .8125rem; font-weight: 400; line-height: 1.55; cursor: pointer; }
.honig { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
#meldung:empty { display: none; }
.meldung { padding: 12px 16px; border-radius: 12px; font-size: .875rem; font-weight: 500; }
.meldung.ok { background: #EEF8F2; color: #1C6B40; box-shadow: inset 0 0 0 1px #CDEBD9; }
.meldung.fehler { background: var(--rot-hauch); color: #A12A22; box-shadow: inset 0 0 0 1px #F6DAD7; }

/* ==========================================================================
   FUSS
   ========================================================================== */
.fuss { padding: 0 var(--rand) 24px; color: var(--text-3); font-size: .8125rem; }
.fuss .mitte {
  display: flex; flex-wrap: wrap; align-items: center; gap: 16px 32px;
  max-width: 1180px; padding: 22px 28px;
  border-radius: var(--r-l);
  background: linear-gradient(135deg, rgba(255, 255, 255, .88), rgba(255, 255, 255, .7));
  border: 1px solid rgba(255, 255, 255, .85);
  box-shadow: inset 0 1px 0 #fff, 0 20px 40px -26px rgba(23, 78, 166, .4);
}
.fuss .marke-wort { font-size: 1.0625rem; }
.fuss nav { display: flex; gap: 24px; }
.fuss nav a { color: var(--text-2); }
.fuss nav a:hover { color: var(--text); }
.fuss .mitte > span:last-child { margin-left: auto; }

/* ==========================================================================
   EINBLENDEN BEIM SCROLLEN
   ========================================================================== */
.js .zeigen {
  opacity: 0; translate: 0 36px; scale: .97; filter: blur(8px);
  transition: opacity 1s var(--ease), translate 1.2s var(--ease-aus), scale 1.2s var(--ease-aus), filter 1s var(--ease), transform .6s var(--ease-aus), box-shadow .5s var(--ease);
}
.js .zeigen.sichtbar { opacity: 1; translate: 0 0; scale: 1; filter: none; }
.js .zeigen.v1 { transition-delay: .1s; }
.js .zeigen.v2 { transition-delay: .2s; }
.js .zeigen.v3 { transition-delay: .3s; }
.js .raster .modul:nth-child(even) { transition-delay: .12s; }
.js .karten2 .k2.zeigen.sichtbar, .js .raster .modul.sichtbar { transition-delay: 0s; }

/* ==========================================================================
   RESPONSIV
   ========================================================================== */
@media (max-width: 1180px) {
  .kopf .mitte { gap: 12px; }
  .nav a { padding: 8px 9px; font-size: .8125rem; }
  .app { grid-template-columns: 184px minmax(0, 1fr); }
  .app-detail { display: none; }
  .schwebe-b { right: -12px; }
  .normen { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 1080px) {
  .raster { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
  /* Explorer: Modulnamen als wischbare Leiste über der Karte */
  .modul-explorer { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .modul-liste {
    flex-direction: row; gap: 6px; padding: 6px;
    overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none;
    border-radius: var(--r-l);
  }
  .modul-liste::-webkit-scrollbar { display: none; }
  .modul-tab { width: auto; flex: 0 0 auto; grid-template-columns: 28px auto; padding: 6px 14px 6px 6px; scroll-snap-align: start; }
  .tab-ikon { width: 28px; height: 28px; }
  .tab-norm { display: none; }
  .raster.explorer .modul { min-height: 0; padding-bottom: 60px; }
  .raster.explorer h3 { font-size: clamp(1.6rem, 7vw, 2.2rem); hyphens: auto; overflow-wrap: break-word; }
  .raster.explorer .modul-ikon { width: 60px; height: 60px; margin-bottom: 24px; border-radius: 18px; }
}

@media (max-width: 760px) {
  .hero > .mitte { grid-template-columns: minmax(0, 1fr); gap: 32px; padding-top: 120px; }
  .hero-fakten { align-items: flex-start; }
  .hero-feld {
    /* Text füllt hier die volle Breite: oben sichtbar, ab dem Textbeginn weich ausblenden */
    -webkit-mask-image: linear-gradient(to bottom, #000 14%, rgba(0, 0, 0, .3) 30%, rgba(0, 0, 0, .06) 44%, transparent 70%);
    mask-image: linear-gradient(to bottom, #000 14%, rgba(0, 0, 0, .3) 30%, rgba(0, 0, 0, .06) 44%, transparent 70%);
  }
  .scroll-hinweis { display: none; }
}

@media (max-width: 960px) {
  .menue-knopf { display: inline-flex; }
  .kopf-cta { display: none; }
  .nav {
    position: absolute; left: 0; right: 0; top: calc(100% + 10px);
    flex-direction: column; align-items: stretch; gap: 2px;
    padding: 10px; border-radius: var(--r-l);
    /* fast deckend: verschachtelter backdrop-filter greift in der Kapsel nicht */
    background: linear-gradient(160deg, rgba(255, 255, 255, .985), rgba(244, 249, 255, .97));
    border: 1px solid rgba(255, 255, 255, .9);
    box-shadow: inset 0 1px 0 #fff, 0 30px 60px -30px rgba(23, 78, 166, .5);
    opacity: 0; visibility: hidden; transform: translateY(-8px) scale(.98); transform-origin: top center;
    transition: opacity .3s var(--ease), transform .4s var(--ease-aus), visibility 0s linear .3s;
  }
  .nav.offen { opacity: 1; visibility: visible; transform: none; transition: opacity .3s var(--ease), transform .4s var(--ease-aus); }
  .nav a, .nacht-modus .nav a { padding: 14px 16px; border-radius: 14px; font-size: 1.0625rem; color: var(--text); }
  .nacht-modus .nav a:hover { color: var(--text); background: rgba(21, 25, 35, .04); }

  .vergleich { grid-template-columns: 1fr; }
  .v-pfeil { justify-self: center; transform: rotate(90deg); }
  .fluss { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px 16px; }
  .zwei, .kontakt-raster { grid-template-columns: 1fr; }
  .karten2 { grid-template-columns: 1fr; }
  .branchen-nummer { margin-bottom: 28px; }
  .zeitleiste { grid-template-columns: 1fr; gap: 18px; padding: 0 0 0 40px; }
  .zeitleiste::before, .zeitleiste::after { left: 7px; right: auto; top: 0; bottom: 0; width: 2px; height: auto; }
  .zeitleiste::after { transform-origin: 50% 0; transform: scaleY(var(--zl-p)); }
  .zl > .j::before { left: calc(-40px - var(--zl-px)); top: 2px; }
}

@media (max-width: 760px) {
  .normen { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .normen .kern { grid-column: 1 / -1; }
  .norm-karte { min-height: 160px; }
  .raster { grid-template-columns: 1fr; }
  .haken-liste { grid-template-columns: 1fr; padding: 8px 24px; }
  .haken-liste li:nth-last-child(2) { border-bottom: 1px solid rgba(52, 120, 246, .12); }
  .app { grid-template-columns: minmax(0, 1fr); min-height: 0; }
  .app-nav { display: none; }
  .schwebe { display: none; }
  .fenster { transform: rotateX(calc((1 - var(--kipp)) * 16deg)) scale(calc(.94 + var(--kipp) * .06)); }
  .formular { grid-template-columns: 1fr; }
  .fuss .mitte > span:last-child { margin-left: 0; width: 100%; }
}

@media (max-width: 520px) {
  .kopf { padding-top: 10px; }
  .kopf .mitte { height: 56px; padding-left: 14px; padding-right: 6px; }
  .hero-index { flex-wrap: wrap; justify-content: center; gap: 4px 10px; border-radius: 20px; }
  .hero-index > i { display: none; }
  .hero .hero-knoepfe .knopf { flex: 1 1 100%; }
  .fluss { grid-template-columns: 1fr; }
  .app-inhalt { padding: 16px 14px; }
  .app-listen-kopf { display: none; }
  .app-zeile { grid-template-columns: minmax(0, 1fr) auto; }
  .app-modul { display: none; }
  .app-kz { gap: 6px; }
  .app-kz > div { padding: 10px; }
  .produkt-kopf { grid-template-columns: auto 1fr; }
  .produkt-kopf .produkt-pfad { text-align: right; }
  .produkt-tag { display: none; }
  .produkt-fuss span:last-child { display: none; }
  .hero-fakten { font-size: .875rem; }
  .hero-fakten li { padding: 8px 16px 8px 12px; }
  .v-karte, .k2 { padding: 26px 22px; }
  .zl { --zl-px: 22px; padding: 26px var(--zl-px); }
}

/* ---------- Reduzierte Bewegung ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    transition-delay: 0s !important;
  }
  .js .zeigen, .js .hero-index, .js .hero-lead, .js .hero .hero-knoepfe, .js .hero-fakten, .js .produkt-buehne { opacity: 1; translate: none; scale: none; filter: none; }
  .js .geteilt .wort-i { transform: none !important; }
  .js .haken-liste.zeigen li { opacity: 1; translate: none; }
  .fenster { transform: none; }
  .schwebe { transform: none; animation: none !important; }
  .laufband-spur { animation: none !important; }
  .f-pfeil { transform: scaleY(1); }
  .f-pfeil::before, .status-punkt::after, .v-pfeil::after, .fenster::after { display: none; }
  .modul, .k2, .norm-karte, .v-karte { transform: none !important; }
}

/* ---------- Druck ---------- */
@media print {
  .welle, .nacht-schleier, .fortschritt, .kopf, .produkt-buehne, .laufband, .formular { display: none !important; }
  .js .zeigen, .js .geteilt .wort-i { opacity: 1; translate: none; filter: none; transform: none; }
  .nacht, .nacht h2, .nacht h3, .f-box b, .f-ziel b { color: var(--text) !important; }
}
/* QMS9000: gemeinsame Gestaltung aller Unterseiten */
.marke-wort{font-style:normal;white-space:nowrap;letter-spacing:-.045em;color:var(--text);font-weight:700}
.ap-marke{white-space:nowrap}
.nav a[aria-current="page"]{color:var(--blau-tief);text-decoration:underline;text-underline-offset:7px}
.fuss .mitte{flex-wrap:wrap;gap:24px}
.fuss nav{display:flex;flex-wrap:wrap;gap:12px 22px}
.fuss .mitte>span:last-child{width:100%;margin-left:0}
.weiterlesen{background:linear-gradient(180deg,#f0f6ff,#f8faff)}
.seiten-karten{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:40px}
.seiten-karte{display:flex;flex-direction:column;gap:18px;background:rgba(255,255,255,.88);border:1px solid #dce8fb;border-radius:24px;padding:32px;text-decoration:none;color:var(--text);box-shadow:0 10px 35px -25px #174ea655;transition:transform .2s,border-color .2s}
.seiten-karte:hover{transform:translateY(-4px);border-color:#8eb5f7;color:var(--text)}
.seiten-karte>span,.detail-nummer{font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--blau-tief);font-weight:600}
.seiten-karte h3{font-size:24px}.seiten-karte p{color:var(--text-2);line-height:1.7}.seiten-karte b{margin-top:auto;color:var(--blau-tief);font-size:14px}
.unterseite{background:#f6f9fe}.unterseite main{position:relative;z-index:1}.unterseite .kopf{position:sticky}
.brotkrumen{display:flex;flex-wrap:wrap;gap:10px;font-size:13px;color:var(--text-2);padding-top:32px}.brotkrumen a{color:var(--blau-tief)}
.seiten-hero{padding-block:65px 60px;background:radial-gradient(ellipse at 85% 5%,#dcecffaa,transparent 65%)}
.seiten-hero h1{font-size:clamp(36px,5.5vw,72px);line-height:1.08;max-width:950px;letter-spacing:-.055em;color:var(--text);overflow-wrap:break-word}
.seiten-hero .einleitung{max-width:790px;color:var(--text-2);font-size:clamp(17px,2vw,21px);line-height:1.75;margin-top:26px}
.module-inhalt{padding-block:20px 90px}.modul-sprung{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:40px}.modul-sprung a{font-size:14px;text-decoration:none;background:white;border:1px solid #dce5f4;border-radius:999px;padding:9px 16px;color:var(--blau-tief)}.modul-sprung a:hover{background:#e7f0ff}
.detail-raster{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.detail-karte{padding:36px;border-radius:24px;background:rgba(255,255,255,.92);border:1px solid #dce5f4;box-shadow:0 12px 40px -32px #174ea666;scroll-margin-top:115px}
.detail-karte h2{font-size:28px;line-height:1.2;margin:18px 0;color:var(--text)}.detail-karte h3{font-size:17px;font-weight:600;line-height:1.5;margin-bottom:14px;color:var(--text)}
.detail-karte p,.detail-karte li{font-size:16px;line-height:1.8;color:var(--text-2)}.detail-karte ul{padding-left:20px;margin-top:22px}.detail-karte li{padding-left:3px;margin-block:7px}.detail-karte li::marker{color:var(--blau-tief)}
.seiten-hinweis{margin-top:32px;color:var(--text-2);font-size:14px;line-height:1.8;max-width:900px}
.seiten-cta{background:#eaf2ff;padding-block:64px}.seiten-cta .mitte{display:flex;align-items:center;gap:40px;justify-content:space-between}.seiten-cta h2{font-size:clamp(28px,3.5vw,44px);max-width:650px}.seiten-cta p{margin-top:16px;color:var(--text-2)}.seiten-cta .knopf{flex-shrink:0}
.ablauf-band{background:white;padding-block:72px}.ablauf-band h2{font-size:clamp(30px,4vw,46px);max-width:800px}.ablauf-band .mitte>p:last-child{margin-top:32px;max-width:850px;color:var(--text-2);line-height:1.8}
.schritt-liste{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px;list-style-position:inside;margin-top:38px}.schritt-liste li::marker{color:var(--blau-tief);font-weight:600}.schritt-liste b{display:block;font-size:19px;margin-block:12px}.schritt-liste p{color:var(--text-2);line-height:1.8}
.einfuehrung-schritte{list-style:none;max-width:930px}.einfuehrung-schritte li{display:grid;grid-template-columns:70px minmax(0,1fr);gap:24px;padding:34px 0;border-top:1px solid #dce5f4}.einfuehrung-schritte li>span{color:var(--blau-tief);font-size:30px;letter-spacing:-.04em}.einfuehrung-schritte h2{font-size:28px;line-height:1.25}.einfuehrung-schritte p{color:var(--text-2);line-height:1.85;margin-top:16px}
.info-kasten{margin-top:40px;padding:34px;border:1px solid #cbdcf7;border-radius:22px;background:#eaf2ff;max-width:930px}.info-kasten h2{font-size:27px}.info-kasten p{margin-block:18px;color:var(--text-2);line-height:1.8}
.faq-liste{max-width:980px}.faq-liste details{background:white;border:1px solid #dce5f4;border-radius:16px;margin-bottom:14px;padding:0 28px}.faq-liste summary{cursor:pointer;font-size:18px;font-weight:600;line-height:1.5;padding:25px 0;color:var(--text)}.faq-liste details[open]{border-color:#8eb5f7}.faq-liste details p{padding-bottom:26px;line-height:1.85;color:var(--text-2);max-width:780px}
.recht-inhalt{padding-block:15px 90px}.recht-layout{display:grid;grid-template-columns:200px minmax(0,1fr);gap:48px;align-items:start}.recht-layout aside{position:sticky;top:120px;display:flex;flex-direction:column;gap:15px;font-size:14px}.recht-layout aside a{color:var(--text-2);text-decoration:none}.recht-layout aside a:hover{color:var(--blau-tief)}
.recht-blatt{background:white;border:1px solid #dce5f4;border-radius:24px;padding:44px;min-width:0}.recht-blatt h2{font-size:25px;line-height:1.3;margin:32px 0 15px;scroll-margin-top:120px}.recht-blatt h2:first-child{margin-top:0}.recht-blatt h3{font-size:19px;margin:24px 0 12px}.recht-blatt p,.recht-blatt li{color:var(--text-2);line-height:1.85;overflow-wrap:anywhere}.recht-blatt p+p{margin-top:16px}.recht-blatt ul{padding-left:22px}.recht-blatt li{margin-block:8px}.recht-blatt a{color:var(--blau-tief)}
.offene-angabe{background:#f0f6ff;border-left:3px solid #2867e8;border-radius:0 10px 10px 0;padding:16px 20px;font-size:14px}.quellen-hinweis{font-size:13px;margin-top:35px!important;border-top:1px solid #dce5f4;padding-top:20px}
.unterseite #kontakt{padding-top:65px}.unterseite #kontakt h2{font-size:clamp(34px,4vw,52px)}
@media(max-width:960px){.seiten-karten{grid-template-columns:1fr}.seiten-karte{gap:12px}.recht-layout{grid-template-columns:1fr;gap:24px}.recht-layout aside{position:static;flex-direction:row;flex-wrap:wrap}.seiten-cta .mitte{align-items:flex-start;flex-direction:column}.schritt-liste{grid-template-columns:1fr;gap:22px}}
@media(max-width:640px){.seiten-hero{padding-block:40px}.detail-raster{grid-template-columns:1fr}.detail-karte,.recht-blatt{padding:25px}.detail-karte h2{font-size:25px}.seiten-cta{padding-block:48px}.einfuehrung-schritte li{grid-template-columns:38px minmax(0,1fr);gap:14px}.einfuehrung-schritte h2{font-size:24px}.faq-liste details{padding-inline:20px}.faq-liste summary{font-size:16px}.info-kasten{padding:24px}.fuss nav{gap:12px 18px}.brotkrumen{padding-top:20px}}
@media(prefers-reduced-motion:reduce){.seiten-karte:hover{transform:none}}
@media print{.recht-layout{display:block}.recht-layout aside,.seiten-cta,.brotkrumen{display:none}.recht-blatt{border:0;padding:0}.recht-blatt h2{break-after:avoid}.detail-raster{display:block}.detail-karte{break-inside:avoid;box-shadow:none}.unterseite{background:white}}

.unterseite #kontakt h1{font-size:clamp(34px,4vw,52px);line-height:1.1;letter-spacing:-.04em;max-width:640px}

/* Markenkennzeichnung und gleichwertige Darstellung der Regelwerke */
.markenrecht{font-size:.48em;line-height:0;vertical-align:super;position:relative;top:-.08em;margin-left:.08em;font-weight:500;letter-spacing:0}.norm-karte .s{font-size:.6875rem;letter-spacing:0;white-space:normal}.norm-karte .n{color:var(--text)}

/* ERP: lange Überschriften innerhalb der Textspalte umbrechen. */
#erp .erp-text{min-width:0}#erp h2{font-size:clamp(2rem,3.6vw,3.5rem);hyphens:auto;overflow-wrap:break-word}#erp h2 .wort,#erp h2 .wort-i{max-width:100%;hyphens:auto;overflow-wrap:break-word}


/* Unterseiten verwenden dieselben Glasflächen und Lichtkanten wie die Startseite. */
.unterseite :is(.detail-karte,.info-kasten,.recht-blatt,.faq-liste details).glas{
  background:var(--k-grund);
  border:1px solid transparent;
  border-radius:var(--r-l);
  box-shadow:var(--k-schatten);
  -webkit-backdrop-filter:var(--k-blur);
  backdrop-filter:var(--k-blur);
}
.unterseite .detail-karte.glas{transition:box-shadow .35s var(--ease)}
.unterseite .faq-liste details.glas[open]{box-shadow:var(--k-schatten-hover),0 0 0 1px rgba(52,120,246,.18)}
.unterseite .info-kasten.glas{background:radial-gradient(100% 90% at 100% 0%,rgba(142,216,248,.36),transparent 65%),var(--k-grund)}
@media(hover:hover){.unterseite .detail-karte.glas:hover{box-shadow:var(--k-schatten-hover)}}
@media print{.unterseite :is(.detail-karte,.info-kasten,.recht-blatt,.faq-liste details).glas{background:#fff;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.unterseite .glas::before,.unterseite .glas::after{display:none}}

/* Unterseiten: Auftakt, Scroll-Einblendungen und interaktive Glasflächen. */
.unterseite main h2 .wort,.unterseite main h2 .wort-i{max-width:100%;hyphens:auto;overflow-wrap:break-word}
.unterseite .detail-karte.glas{transform:perspective(1200px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .5s var(--ease-aus),box-shadow .35s var(--ease),opacity .7s var(--ease),translate .8s var(--ease-aus)}
.unterseiten-effekte .sub-reveal{opacity:0;translate:0 24px;transition:opacity .7s var(--ease) var(--sub-delay,0ms),translate .8s var(--ease-aus) var(--sub-delay,0ms),transform .5s var(--ease-aus),box-shadow .35s var(--ease)}
.unterseiten-effekte .sub-reveal.eingeblendet{opacity:1;translate:0 0}
.sub-auftakt{animation:sub-auftakt .9s var(--ease-aus) both}.seiten-hero.sub-auftakt{animation-delay:.08s}
@keyframes sub-auftakt{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}
.unterseite .modul-sprung a{transition:background .2s,border-color .2s,box-shadow .2s}
.unterseite .modul-sprung a:hover,.unterseite .modul-sprung a:focus-visible{box-shadow:0 6px 18px -10px rgba(23,78,166,.45);border-color:#9fc4ff}
.unterseite .faq-liste summary::marker{color:var(--blau-ui)}
.unterseite .faq-liste details[open]>p{animation:sub-auftakt .35s var(--ease-aus) both}
@media(max-width:760px){.unterseiten-effekte .sub-reveal{translate:0 14px}.unterseiten-effekte .sub-reveal.eingeblendet{translate:0 0}}
@media(prefers-reduced-motion:reduce){.unterseiten-effekte .sub-reveal,.sub-auftakt{opacity:1;translate:none;animation:none}.unterseite .detail-karte.glas{transform:none}}
@media print{.unterseiten-effekte .sub-reveal,.sub-auftakt{opacity:1;translate:none;animation:none}.unterseite .detail-karte.glas{transform:none}}

/* Großzügiger Seitenabschluss auf allen Unterseiten. */
.unterseite .seiten-cta{padding-block:clamp(72px,7vw,108px)}
.unterseite .seiten-cta .mitte{gap:48px 72px}
.unterseite .seiten-cta h2{line-height:1.18}
.unterseite .seiten-cta p:not(.vorzeile){margin-top:24px;line-height:1.8}
.unterseite .fuss{padding:clamp(48px,6vw,80px) var(--rand) 40px}
.unterseite .fuss .mitte{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:32px 56px;padding:40px 44px}
.unterseite .fuss .marke-wort{font-size:20px}
.unterseite .fuss nav{justify-content:flex-end;gap:16px 28px;line-height:1.8}
.unterseite .fuss nav a{display:inline-block;padding-block:5px}
.unterseite .fuss .mitte>span:last-child{grid-column:1/-1;width:auto;margin:0;padding-top:24px;border-top:1px solid rgba(52,120,246,.12);line-height:1.8}
@media(max-width:760px){.unterseite .fuss{padding-top:48px;padding-bottom:28px}.unterseite .fuss .mitte{grid-template-columns:1fr;padding:30px 26px;gap:24px}.unterseite .fuss nav{justify-content:flex-start;gap:12px 24px}.unterseite .fuss .mitte>span:last-child{padding-top:22px}.unterseite .seiten-cta .mitte{gap:32px}}
