/* ═══════════════════════════════════════════════════════════════════════
   ZEYNAH — GEMEINSAME GRUNDLAGE FUER ALLE SEITEN
   ───────────────────────────────────────────────────────────────────────
   Gemessen am 13.08.2026: von 151 deploybaren Seiten lud GENAU EINE
   (index.html) das Gestaltungssystem aus `schaufenster.css`. Alle anderen
   150 hatten weder Schachbrett noch Glas noch Hintergrundfilm.

   Diese Datei zieht das Prinzip der Startseite heraus, damit es jede Seite
   laden kann — ohne die Seite selbst umzuschreiben:
     · Hintergrundfilm ueber die ganze Seite
     · Baender hell/dunkel im strikten Wechsel
     · Kacheln UND Knoepfe: Glas, farbig umrandet, schwebend
     · jede Kachel ist das Gegenteil ihres Bandes (Schachbrett)

   ── DIE FARBEN SIND ENTSCHIEDEN (13.08.2026) ──────────────────────────
   Nazannil woertlich: „kein schwarz kein weiss kein braun". Es gibt nur
   noch EINE Reihe. Die warme Fassung (`#332e28`, `#4e483f`, Champagner-
   Rand) wurde am 13.08. nebeneinander gezeigt und abgewaehlt — sie ist
   hier vollstaendig entfernt, damit sie nicht zurueckwandert.

   Messbar verboten, auf jeder Flaeche:
     · SCHWARZ  — Summe der drei Kanaele unter 90
     · WEISS    — reines #ffffff als Flaeche
     · BRAUN    — Rot minus Blau groesser gleich 8
   ═══════════════════════════════════════════════════════════════════ */

:root {
	/* Helle Seite — in beiden Reihen gleich, warm und ohne reines Weiss */
	--zy-creme:    #faf7f2;
	--zy-creme-2:  #f0e9dd;

	/* Akzent — Apple-Blau, in beiden Reihen gleich */
	--zy-blau:      #0071e3;
	--zy-blau-t:    #005bb8;   /* Knopfflaeche, Blauschrift auf Creme */
	--zy-blau-hell: #7fbcff;   /* Blau auf dunklem Grund */

	/* Zwei der vier Wechselraender sind in beiden Reihen gleich */
	--zy-rand-3: rgba(0, 113, 227, .50);   /* Apple-Blau — 14.08. war hier
	   Teal rgba(0,196,170) und daneben zwei GRAUE Raender. Nazannil:
	   „graue kaesten … kaesten immer glasig schwebend farbig umrandet".
	   Teal ist verbotene Farbe, Grau ist keine Farbe. Die vier Raender
	   sind jetzt vier Blaustufen: hell / Knopf / Apple / Apple leise. */
	--zy-rand-4: rgba(0, 113, 227, .34);   /* Blau, bewusst schwach */

	/* Glas — unter .88 Deckkraft entsteht Grau und die Schrift wird blass.
	   Gemessen am 04.08.2026 auf der Grosshandel-Seite. */
	--zy-glas-blur: blur(16px) saturate(1.2);
	--zy-deckkraft-dunkel: .88;
	--zy-deckkraft-hell:   .92;
}

/* ── Die dunkle Seite ─────────────────────────────────────────────────
   Kein Farbstich ist ABSICHT, kein Fehler: der Dunkelton steht neben
   warmem Creme, die Waerme kommt aus dem Zusammenspiel. Wer den Dunkelton
   „waermt", landet unweigerlich bei Braun — dreimal passiert. */
:root {
	--zy-tief:      #404144;   /* Grundflaeche          R-B  -4 */
	--zy-tief-2:    #4a4b4f;   /* Kachel dunkel         R-B  -5 */
	--zy-text-tief: #303134;   /* Schrift auf Creme     R-B  -4 */
	--zy-leise:     #565759;   /* leise auf Creme       R-B  -3 */
	--zy-schwach:   #e6e6e8;   /* schwach auf Dunkel    R-B  -2 */
	/* Rand 1 und 2 waren GRAU (230/230/232 und 198/200/205) — sichtbar auf
	   jeder zweiten Kachel. Nazannil 14.08.: „kein grau!" Jetzt die beiden
	   uebrigen Toene der Akzentreihe: #7fbcff und #005bb8. Nur diese zwei
	   Zeilen — alle Kacheln beziehen ihre Raender aus den Variablen. */
	--zy-rand-1:    rgba(127, 188, 255, .50);
	--zy-rand-2:    rgba(0, 91, 184, .46);
	--zy-schatten:  48, 49, 52;
	/* dieselben Toene dezimal — Baender brauchen sie mit Alpha */
	--zy-tief-rgb:   64, 65, 68;
	--zy-tief-2-rgb: 74, 75, 79;
}

/* Hier stand bis zum 13.08.2026 eine zweite, warme Reihe zum Vergleich.
   Sie ist abgewaehlt und entfernt. Die Werte stehen bewusst OHNE Raute,
   damit ein Suchlauf ueber Farbwerte diese Erklaerung nicht mitersetzt
   und niemand sie versehentlich zurueckholt:
   33-2e-28 (R−B +11) · 4e-48-3f (+15) · Champagner 212/196/168 (+44). */

/* ═══ HINTERGRUNDFILM ══════════════════════════════════════════════════
   Liegt hinter allem, fuellt den Schirm, laeuft leise weiter. Der Schleier
   darueber haelt die Schrift lesbar, egal wie hell ein Filmbild gerade ist.
   Eingehaengt von `zeynah-grundlage.js` — die Seite selbst braucht nichts. */
#zy-grundfilm {
	position: fixed;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: -2;
	pointer-events: none;
}
#zy-grundfilm-schleier {
	position: fixed;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	/* Ganz leicht. Die Startseite kommt sogar ohne Schleier aus; hier bleibt
	   nur so viel, dass ein helles Filmbild die Schrift im hellen Band nicht
	   ausbleicht. Dicker gemacht, und die hellen Baender wirken schmutzig. */
	background:
		radial-gradient(1100px 560px at 12% -12%, rgba(0, 113, 227, .10), transparent 62%),
		linear-gradient(168deg,
			rgba(var(--zy-schatten), .16) 0%,
			rgba(var(--zy-schatten), .26) 100%);
}
/* Wer das nicht mag oder Datenvolumen spart, bekommt eine ruhige Flaeche. */
/* reduced-motion-Ausnahme entfernt 14.08. — Logo/Leben IMMER an (Nazannils Gesetz; Bewegungen sind sanft und langsam) */

/* ═══ BAENDER — hell/dunkel im strikten Wechsel ════════════════════════
   Die Seite faengt HELL an. Ein erster Bildschirm als dunkle Wand ist
   ausdruecklich verboten. */
/* ── HELL DECKEND, DUNKEL DURCHSCHEINEND (14.08., endgueltig) ─────────
   Die Geschichte in einem Absatz, damit niemand den naechsten Fehlanlauf
   baut: Frueher war es umgekehrt (hell .74, dunkel satt) — und ueber dem
   dunklen Film wurde Creme .74 zu #c8ccd0: entsaettigt, schmutzig. DAS
   war das Grau, das Nazannil sah. „Alles deckend" toetete danach das
   Glas: durch eine deckende Flaeche schimmert nichts.

   Der Film ist seit dem 14.08. BLAU (#394d64). Ein DUNKLES Band mit .86
   darueber bleibt tiefblau-dunkel — Palette, lebendig, kein Grau. Nur
   CREME ueber dunklem Film ergibt Grau. Deshalb:
     · helle Baender: DECKEND (Creme bleibt Creme)
     · dunkle Baender: .86 — der Film schimmert durch, das Glas lebt
   Wer das aendert: erst den FILM messen, dann die Baender. */
.zy-band {
	position: relative;
	padding: 4.5rem 2rem;
	background: linear-gradient(168deg,
		rgb(250, 247, 242) 0%,
		rgb(240, 233, 221) 100%);
	color: var(--zy-text-tief);
}
.zy-band.zy-dunkel {
	background: linear-gradient(168deg,
		rgba(var(--zy-tief-rgb), .86) 0%,
		rgba(var(--zy-tief-2-rgb), .86) 100%);
	color: var(--zy-creme);
}
.zy-band > .zy-innen { max-width: 1240px; margin: 0 auto; }

.zy-band h1, .zy-band h2, .zy-band h3 { color: var(--zy-text-tief); }
.zy-band.zy-dunkel h1,
.zy-band.zy-dunkel h2,
.zy-band.zy-dunkel h3 { color: var(--zy-creme); }
.zy-band .zy-leise            { color: var(--zy-leise); }
.zy-band.zy-dunkel .zy-leise  { color: var(--zy-schwach); }

/* ═══ KACHELN — Glas, farbig umrandet, schwebend ═══════════════════════
   Jede Kachel ist das GEGENTEIL ihres Bandes. Die Kachel nur dunkel zu
   faerben genuegt nicht: alles darin ist fuer hellen Grund geschrieben.
   Deshalb werden die Variablen INNERHALB der Kachel neu belegt — dann
   dreht jedes Element mit, auch auf Seiten, die es noch nicht gibt. */
.zy-kachel {
	position: relative;
	border-radius: 20px;
	padding: 1.6rem;
	-webkit-backdrop-filter: var(--zy-glas-blur);
	backdrop-filter: var(--zy-glas-blur);
	border: 1.5px solid var(--zy-rand-1);
	box-shadow:
		0 20px 46px rgba(var(--zy-schatten), .26),
		0 2px 6px rgba(var(--zy-schatten), .12),
		inset 0 1px 0 rgba(250, 247, 242, .14);
	transition: transform .28s cubic-bezier(.34, 1.56, .64, 1),
	            box-shadow .3s ease, border-color .3s ease;
	isolation: isolate;
}

/* Helles Band → DUNKLE Kachel.
   Die Flaeche kommt aus `--zy-tief-2-rgb` (dem Kachelton), NICHT aus
   `--zy-schatten`. Beim ersten Bau stand hier die Schattenfarbe: in der
   warmen Reihe ist die blaeulich (38,43,51), und die Kachel wurde blaugrau
   statt braun — der Vergleich haette den falschen Ton gezeigt. */
.zy-band:not(.zy-dunkel) .zy-kachel {
	background: rgba(var(--zy-tief-2-rgb), var(--zy-deckkraft-dunkel));
	color: var(--zy-creme);
	--zy-text-tief: var(--zy-creme);
	--zy-leise:     var(--zy-schwach);
	--zy-blau-t:    var(--zy-blau-hell);
}
/* Dunkles Band → CREME-Kachel, echtes helles Milchglas mit dunkler
   Schrift — nicht heimlich dunkel gemacht. */
.zy-band.zy-dunkel .zy-kachel {
	background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP48PLufwAJOQO23LZ0xgAAAABJRU5ErkJggg==);
	/* messbare Zweitangabe fuer `flaecheVon()` — das PNG allein ist fuer
	   den Waechter unsichtbar (14.08.). Optisch deckungsgleich. */
	background-color: #f0e9dd;
	color: var(--zy-text-tief);
	--zy-text-tief: #303134;
	--zy-leise:     #565759;
	--zy-blau-t:    #005bb8;
}
.zy-band .zy-kachel h1, .zy-band .zy-kachel h2,
.zy-band .zy-kachel h3, .zy-band .zy-kachel p { color: inherit; }

/* Vier Raender im Wechsel — Blau ist EINER von vieren und der schwaechste.
   Verteilt `zeynah-grundlage.js`, damit keine Seite es einzeln pflegen muss. */
.zy-kachel.zy-r1 { border-color: var(--zy-rand-1); }
.zy-kachel.zy-r2 { border-color: var(--zy-rand-2); }
.zy-kachel.zy-r3 { border-color: var(--zy-rand-3); }
.zy-kachel.zy-r4 { border-color: var(--zy-rand-4); }

/* Schweben — vier Laufzeiten, damit nichts im Gleichschritt wippt */
@keyframes zy-schweben-a { 0%,100%{transform:translateY(0)}   50%{transform:translateY(-7px)} }
@keyframes zy-schweben-b { 0%,100%{transform:translateY(0)}   50%{transform:translateY(-5px)} }
@keyframes zy-schweben-c { 0%,100%{transform:translateY(-2px)} 50%{transform:translateY(-9px)} }
.zy-kachel:nth-child(4n+1) { animation: zy-schweben-a 8.5s ease-in-out infinite; }
.zy-kachel:nth-child(4n+2) { animation: zy-schweben-b 6.5s ease-in-out infinite -1.2s; }
.zy-kachel:nth-child(4n+3) { animation: zy-schweben-c 9.5s ease-in-out infinite -3.4s; }
.zy-kachel:nth-child(4n+4) { animation: zy-schweben-b 7.4s ease-in-out infinite -2.1s; }

.zy-kachel:hover {
	box-shadow:
		0 36px 74px rgba(var(--zy-schatten), .34),
		0 0 0 1px rgba(0, 113, 227, .38),
		inset 0 1px 0 rgba(250, 247, 242, .2);
}
/* Auffloppen beim Antippen */
.zy-kachel:active { transform: translateY(-12px) scale(.985); }

/* reduced-motion-Ausnahme entfernt 14.08. — Leben IMMER an (Nazannils Gesetz) */

/* ═══ KNOEPFE — genauso wie Kacheln ════════════════════════════════════
   „kacheln buttons glasig" — ein Knopf, der flach neben einer Glaskachel
   steht, faellt aus dem System. */
.zy-knopf {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	padding: .85rem 1.5rem;
	border-radius: 999px;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	text-decoration: none;
	background: rgba(0, 91, 184, var(--zy-deckkraft-dunkel));
	color: var(--zy-creme);
	border: 1.5px solid var(--zy-rand-4);
	-webkit-backdrop-filter: var(--zy-glas-blur);
	backdrop-filter: var(--zy-glas-blur);
	box-shadow: 0 12px 28px rgba(var(--zy-schatten), .24),
	            inset 0 1px 0 rgba(250, 247, 242, .18);
	transition: transform .22s cubic-bezier(.34, 1.56, .64, 1),
	            box-shadow .3s ease, border-color .3s ease;
}
.zy-knopf:hover  { box-shadow: 0 20px 40px rgba(var(--zy-schatten), .3); }
.zy-knopf:active { transform: translateY(-6px) scale(.97); }

/* Zweitrangiger Knopf — dieselbe Glasoptik, ruhiger */
.zy-knopf.zy-still {
	background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP48PLufwAJOQO23LZ0xgAAAABJRU5ErkJggg==);
	background-color: #f0e9dd;   /* messbar fuer den Waechter, s.o. */
	color: #303134;
	border-color: var(--zy-rand-1);
}
.zy-band.zy-dunkel .zy-knopf.zy-still {
	background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP48PLufwAJOQO23LZ0xgAAAABJRU5ErkJggg==);
	background-color: #f0e9dd;
}

/* ═══ FULLSCREEN ══════════════════════════════════════════════════════
   Nie eine schmale zentrierte Spalte auf breitem Schirm. */
html, body { min-height: 100dvh; }
body { margin: 0; }

/* ── LADEREIHENFOLGE IST PFLICHT ──────────────────────────────────────
   Diese Datei MUSS nach `_force-style.css` eingebunden werden. Jene setzt
   `html, body { background:#faf7f2 !important }` und deckt damit den
   Hintergrundfilm zu. Bei gleicher Gewichtung gewinnt die spaetere Datei —
   steht die Grundlage davor, bleibt der Film unsichtbar und man sucht den
   Fehler im Video statt in der Reihenfolge. */
html, body { background: transparent !important; }

/* ═══════════════════════════════════════════════════════════════════════
   DIE BRANCHENSEITEN — hero · workflow · features · diff · filme · pricing
   ───────────────────────────────────────────────────────────────────────
   Zehn Seiten teilen genau dieselbe Struktur: realestate, hotel, insurance,
   b2b, healthcare, gastro-landing, main, app/main und zwei weitere. Deshalb
   steht das Schachbrett EINMAL hier statt zehnmal in den Seiten.

   Gemessene Baenderfolge vorher: D D H D D H — die Seiten fingen dunkel an
   und hatten zweimal zwei dunkle Baender hintereinander, also gar kein
   Schachbrett. Jetzt H d H d H d, beginnend HELL.

   Der Kunstgriff: nicht jedes Element einzeln faerben, sondern die
   Variablen INNERHALB des Bandes neu belegen. Dann dreht alles mit, was
   sie schreibt — auch was spaeter dazukommt.
   ═══════════════════════════════════════════════════════════════════════ */

/* Hell und dunkel werden GEZAEHLT, nicht je Abschnittsnamen festgelegt —
   `zy-hell`/`zy-tief` vergibt `zeynah-grundlage.js` beim Laden. Feste
   Zuordnung stimmt nur, solange jede Seite dieselben Abschnitte hat: auf
   insurance.html fehlt das Filme-Band, und die Folge endete H d H d d. */
/* Gleiches Schema wie `.zy-band` oben: HELL deckend, DUNKEL .86 —
   Begruendung dort. Beide Stellen muessen zusammen geaendert werden,
   sonst zeigen die Seiten zweierlei Baender. */
section.zy-hell{
	background:linear-gradient(168deg,
		rgb(250,247,242) 0%, rgb(240,233,221) 100%) !important;
	--white:#303134; --muted:#565759; --cyan:#005bb8; --cyan-dark:#00468c;
	color:#303134;
}
section.zy-tief{
	background:linear-gradient(168deg,
		rgba(64,65,68,.86) 0%, rgba(74,75,79,.86) 100%) !important;
	--white:#faf7f2; --muted:#e6e6e8; --cyan:#9ccafe; --cyan-dark:#7fbcff;
	color:#faf7f2;
}
section.zy-hell h1, section.zy-hell h2, section.zy-hell h3,
section.zy-hell .section-title{color:#303134 !important}
section.zy-hell .hero-sub, section.zy-hell .hero-note{color:#565759 !important}
section.zy-hell h1 em, section.zy-hell .section-title em,
section.zy-hell .section-eyebrow{color:#005bb8 !important}
section.zy-tief h1, section.zy-tief h2, section.zy-tief h3,
section.zy-tief .section-title{color:#faf7f2 !important}
section.zy-tief .hero-sub, section.zy-tief .hero-note{color:#e6e6e8 !important}
section.zy-tief h1 em, section.zy-tief .section-title em,
section.zy-tief .section-eyebrow{color:#9ccafe !important}

/* Kacheln richten sich nach dem gezaehlten Band, nicht nach dem Namen */
/* 14.08. spaeter Abend (Nazannil: „helle kaesten und helle schrift graue
   kaesten das ist nicht zeynah"). Zwei Fehler in einer Zeile:

   1) Die Creme-Kachel war ein 1×1-PNG (`background:url(data:image/png…)`,
      Pixel #f0e9dd deckend). Der Waechter `flaecheVon()` sucht die Flaeche
      per /rgba?\([^)]+\)/ — in einem Base64-PNG steht kein rgba(). Er fand
      nichts, stieg zum dunklen Band hoch, mass „dunkel" und faerbte die
      Schrift CREME. Creme auf Creme: 1,05:1. Genau das Gemeldete.
   2) Voll deckend + `backdrop-filter` = kein Glas. Die Kachel wurde flach.

   Beides loest ein VERLAUF statt PNG: er ist ebenfalls ein
   `background-image` (also gleich unkaputtbar gegen Auto-Dunkelmodi, der
   Grund fuers PNG), enthaelt aber rgba() — der Waechter misst wieder
   richtig. Das zusaetzliche `background-color` trifft schon die erste
   Abfrage in `flaecheVon()`, damit die Messung nie mehr am Bild haengt.
   Zwei Toene im Verlauf + Innenglanz geben das Glas zurueck, ohne dass
   der Film durchscheint und Grau-Matsch macht. */
section.zy-hell .feat-card:nth-child(odd), section.zy-hell .film-karte:nth-child(odd),
section.zy-hell .wf-step:nth-child(odd), section.zy-hell .price-card:nth-child(odd),
section.zy-hell .info-card:nth-child(odd), section.zy-hell .diff-list:nth-child(odd){
	background-color:#4a4b4f !important;
	background-image:linear-gradient(160deg,rgba(78,79,84,.94) 0%,rgba(64,65,68,.94) 100%) !important;
	color:#faf7f2 !important;
	--white:#faf7f2; --muted:#e6e6e8; --cyan:#9ccafe;
}
section.zy-hell .feat-card:nth-child(even), section.zy-hell .film-karte:nth-child(even),
section.zy-hell .wf-step:nth-child(even), section.zy-hell .price-card:nth-child(even),
section.zy-hell .info-card:nth-child(even), section.zy-hell .diff-list:nth-child(even){
	background-color:#f0e9dd !important;
	background-image:linear-gradient(160deg,rgba(250,247,242,.97) 0%,rgba(240,233,221,.97) 100%) !important;
	color:#303134 !important;
	--white:#303134; --muted:#565759; --cyan:#005bb8;
}
section.zy-tief .feat-card:nth-child(odd), section.zy-tief .film-karte:nth-child(odd),
section.zy-tief .wf-step:nth-child(odd), section.zy-tief .price-card:nth-child(odd),
section.zy-tief .info-card:nth-child(odd), section.zy-tief .diff-list:nth-child(odd){
	background-color:#f0e9dd !important;
	background-image:linear-gradient(160deg,rgba(250,247,242,.97) 0%,rgba(240,233,221,.97) 100%) !important;
	color:#303134 !important;
	--white:#303134; --muted:#565759; --cyan:#005bb8;
}
section.zy-tief .feat-card:nth-child(even), section.zy-tief .film-karte:nth-child(even),
section.zy-tief .wf-step:nth-child(even), section.zy-tief .price-card:nth-child(even),
section.zy-tief .info-card:nth-child(even), section.zy-tief .diff-list:nth-child(even){
	background-color:#4a4b4f !important;
	background-image:linear-gradient(160deg,rgba(78,79,84,.94) 0%,rgba(64,65,68,.94) 100%) !important;
	color:#faf7f2 !important;
	--white:#faf7f2; --muted:#e6e6e8; --cyan:#9ccafe;
}
/* Schrift folgt der Kachel, nicht dem Band */
.feat-card[style], .feat-card{}
section .feat-card .feat-name, section .film-karte .film-titel{color:inherit !important}
section .feat-card .feat-desc{color:inherit !important; opacity:.88}
section .wf-step *, section .diff-list *{color:inherit !important}

/* HIER STAND EIN BLOCK, DER DIE KOPFLEISTE FEST AUF CREME-SCHRIFT SETZTE
   — ENTFERNT. Er gehoerte zur nav-Notbremse: solange das <nav> pauschal
   dunkel gefaerbt war, brauchte es helle Schrift. Ohne die Notbremse ist
   die Leiste auf index.html wieder hell, und die helle Schrift stand
   darauf bei 1,14:1 — neun Menuepunkte unlesbar.

   Das war die Kette: eine pauschale Flaechenregel erzwingt eine pauschale
   Schriftregel, und beide stimmen nur auf den Seiten, fuer die sie
   gedacht waren. Beide sind weg; `zy-lesbarkeit()` misst und entscheidet.

   Nur die aktive Kennzeichnung und der Aktionsknopf bleiben: die bringen
   ihren eigenen Grund mit und sind damit unabhaengig vom Untergrund. */
nav .nav-cta{background:#005bb8 !important;color:#faf7f2 !important}
nav .lang-btn.active{background:#005bb8 !important;color:#faf7f2 !important}

/* ── Kacheln: Glas, farbig umrandet, schwebend ────────────────────── */
.feat-card, .film-karte, .wf-step, .price-card, .diff-list, .info-card{
	-webkit-backdrop-filter:blur(16px) saturate(1.2);
	backdrop-filter:blur(16px) saturate(1.2);
	border-radius:18px;
	border:1.5px solid rgba(0,113,227,.34);
	box-shadow:0 20px 46px rgba(48,49,52,.26),
	           0 2px 6px rgba(48,49,52,.12),
	           inset 0 1px 0 rgba(250,247,242,.14);
	transition:transform .28s cubic-bezier(.34,1.56,.64,1), box-shadow .3s ease;
}

/* ECHTES SCHACHBRETT: Kachel neben Kachel wechselt. Nicht nur „alle
   Kacheln invers zum Band" — dann sieht eine Reihe eintoenig aus.
   Deckkraft .88/.92: darunter entsteht Grau und die Schrift wird blass
   (am 04.08. durchgemessen). */
.features .feat-card:nth-child(odd), .filme .film-karte:nth-child(odd),
.features .info-card:nth-child(odd){
	background-color:#4a4b4f !important;
	background-image:linear-gradient(160deg,rgba(78,79,84,.94) 0%,rgba(64,65,68,.94) 100%) !important;
	color:#faf7f2 !important;
	--white:#faf7f2; --muted:#e6e6e8; --cyan:#9ccafe;
}
.features .feat-card:nth-child(even), .filme .film-karte:nth-child(even),
.features .info-card:nth-child(even){
	background-color:#f0e9dd !important;
	background-image:linear-gradient(160deg,rgba(250,247,242,.97) 0%,rgba(240,233,221,.97) 100%) !important;
	color:#303134 !important;
	--white:#303134; --muted:#565759; --cyan:#005bb8;
}
/* ── 14.08. spaeter Abend, auf realestate.html aufgefallen ───────────────
   ZWEI SCHACHBRETTER LIEFEN GEGENEINANDER. Die Flaeche einer Kachel
   entscheidet `section.zy-hell/zy-tief …:nth-child()` (0-3-1) — die kennt
   das Band. Die Schriftfarbe entschied `.features …:nth-child() .feat-name`
   (0-4-0) — die kennt es NICHT und zaehlt stur „ungerade = dunkle Kachel".
   Auf einem `zy-tief`-Band ist die Zaehlung aber gedreht. Ergebnis dort:
   creme Schrift auf der cremefarbenen Kachel, 17 Stellen.

   Zwei Systeme, die dasselbe bestimmen, koennen nur zufaellig
   uebereinstimmen. Deshalb bestimmt ab jetzt EINES die Flaeche — und die
   Schrift erbt sie. `color:inherit` kann per Bauart nie dagegenstehen,
   egal welche Regel die Flaeche am Ende gewinnt.

   Wer einen EIGENEN Grund mitbringt (Schildchen, Sprechblase, Knopf), erbt
   nicht — der steht weiter unten mit eigener Farbe und gewinnt ueber die
   Reihenfolge. */
.features .feat-card:nth-child(odd) .feat-name,
.filme .film-karte:nth-child(odd) .film-titel{color:inherit !important}
.features .feat-card:nth-child(odd) .feat-desc{color:inherit !important;opacity:.88}
/* Das Kuerzel-Schildchen bringt seinen Grund selbst mit (14.08., am Pixel
   gemessen: hellblau auf dem halbdurchsichtigen Chip ueber der dunklen
   Kachel ergab 3,70:1). Mit eigenem deckendem Knopfblau sind es 6,62:1 —
   auf JEDER Kachel gleich, unabhaengig vom Band. Dasselbe Muster wie bei
   den Knoepfen: wer einen eigenen Grund hat, braucht keine Rueckfrage an
   die Umgebung. */
.features .feat-card:nth-child(odd) .feat-icon{
	background:#005bb8 !important; color:#faf7f2 !important}
.features .feat-card:nth-child(even) .feat-name{color:inherit !important}
.features .feat-card:nth-child(even) .feat-desc{color:inherit !important;opacity:.88}
.features .feat-card:nth-child(even) .feat-icon{
	background:#005bb8 !important; color:#faf7f2 !important}
.filme .film-karte:nth-child(even) .film-titel{color:inherit !important}

.workflow-section .wf-step:nth-child(odd), .diff .diff-list:nth-child(odd),
.pricing .price-card:nth-child(odd){
	background-color:#f0e9dd !important;
	background-image:linear-gradient(160deg,rgba(250,247,242,.97) 0%,rgba(240,233,221,.97) 100%) !important;
	color:#303134 !important;
	--white:#303134; --muted:#565759; --cyan:#005bb8;
}
.workflow-section .wf-step:nth-child(even), .diff .diff-list:nth-child(even),
.pricing .price-card:nth-child(even){
	background-color:#4a4b4f !important;
	background-image:linear-gradient(160deg,rgba(78,79,84,.94) 0%,rgba(64,65,68,.94) 100%) !important;
	color:#faf7f2 !important;
	--white:#faf7f2; --muted:#e6e6e8; --cyan:#9ccafe;
}
/* Gleiche Umstellung wie oben: erben statt festschreiben. */
.workflow-section .wf-step:nth-child(odd) *,
.diff .diff-list:nth-child(odd) *{color:inherit !important}
.workflow-section .wf-step:nth-child(even) *,
.diff .diff-list:nth-child(even) *{color:inherit !important}
/* Die grosse Ziffer bleibt zurueckgenommen — ueber Deckkraft statt ueber
   eine feste Farbe, sonst haengt sie wieder am falschen Schachbrett. */
.workflow-section .wf-num{color:inherit !important;opacity:.34}
.workflow-section .wf-bubble{
	background:rgba(64,65,68,.92) !important; color:#faf7f2 !important;
	border-color:rgba(0,113,227,.34) !important;
}
.workflow-section .wf-bubble *{color:#faf7f2 !important}
/* Bedeutungsfarbe je nach Kachelhelligkeit — auf Creme dunkel, auf
   Dunkel hell. Sonst traegt die Ampel ihre Bedeutung unlesbar. */
.diff .diff-list:nth-child(odd) .diff-check{color:#06603f !important}
.diff .diff-list:nth-child(odd) .diff-x{color:#a8341f !important}
.diff .diff-list:nth-child(even) .diff-check{color:#6ee7b7 !important}
.diff .diff-list:nth-child(even) .diff-x{color:#ffab97 !important}
.pricing .price-card:nth-child(odd) .price-list span{color:#06603f !important}
.pricing .price-card:nth-child(even) .price-list span{color:#6ee7b7 !important}
.pricing .price-card:nth-child(odd) .price-label,
.pricing .price-card:nth-child(odd) .price-trial{color:#005bb8 !important}
.pricing .price-card:nth-child(even) .price-label,
.pricing .price-card:nth-child(even) .price-trial{color:#9ccafe !important}

/* Vier Randfarben im Wechsel — Blau ist EINER von vieren, nicht der
   Standard fuer alles. */
.feat-card:nth-child(4n+1), .wf-step:nth-child(4n+1),
.film-karte:nth-child(4n+1), .info-card:nth-child(4n+1){border-color:rgba(127,188,255,.52)}
.feat-card:nth-child(4n+2), .wf-step:nth-child(4n+2),
.film-karte:nth-child(4n+2), .info-card:nth-child(4n+2){border-color:rgba(0,91,184,.50)}
.feat-card:nth-child(4n+3), .wf-step:nth-child(4n+3),
.film-karte:nth-child(4n+3), .info-card:nth-child(4n+3){border-color:rgba(0,113,227,.50)}
.feat-card:nth-child(4n+4), .wf-step:nth-child(4n+4),
.film-karte:nth-child(4n+4), .info-card:nth-child(4n+4){border-color:rgba(0,113,227,.34)}

/* Schweben — drei Laufzeiten, damit nichts im Gleichschritt wippt,
   plus Auffloppen beim Antippen. */
@keyframes zy-schweb-a{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes zy-schweb-b{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes zy-schweb-c{0%,100%{transform:translateY(-2px)}50%{transform:translateY(-9px)}}
.feat-card:nth-child(3n+1), .wf-step:nth-child(3n+1), .film-karte:nth-child(3n+1),
.price-card:nth-child(3n+1), .info-card:nth-child(3n+1){animation:zy-schweb-a 8.5s ease-in-out infinite}
.feat-card:nth-child(3n+2), .wf-step:nth-child(3n+2), .film-karte:nth-child(3n+2),
.price-card:nth-child(3n+2), .info-card:nth-child(3n+2){animation:zy-schweb-b 6.5s ease-in-out infinite -1.2s}
.feat-card:nth-child(3n+3), .wf-step:nth-child(3n+3), .film-karte:nth-child(3n+3),
.price-card:nth-child(3n+3), .info-card:nth-child(3n+3){animation:zy-schweb-c 9.5s ease-in-out infinite -3.4s}
.feat-card:active, .wf-step:active, .film-karte:active,
.price-card:active, .info-card:active{transform:translateY(-12px) scale(.985)}
/* reduced-motion-Ausnahme entfernt 14.08. — Leben IMMER an (Nazannils Gesetz) */

/* ── Knoepfe: glasig, farbig umrandet, schwebend — wie die Kacheln ── */
.hero-cta, .nav-cta, .price-btn, .film-knopf{
	-webkit-backdrop-filter:blur(14px) saturate(1.15);
	backdrop-filter:blur(14px) saturate(1.15);
	border:1.5px solid rgba(0,113,227,.34) !important;
	box-shadow:0 12px 28px rgba(48,49,52,.24),
	           inset 0 1px 0 rgba(250,247,242,.18);
	transition:transform .22s cubic-bezier(.34,1.56,.64,1), box-shadow .3s ease;
}
.hero-cta{background:rgba(0,91,184,.92) !important;color:#faf7f2 !important}
/* Knoepfe bringen ihren Hintergrund selbst mit — wer sie gegen die Kachel
   faerbt, laesst den Text verschwinden (gemessene 1,86:1). */
.price-btn.filled{background:#005bb8 !important;color:#faf7f2 !important}
.price-card:nth-child(odd) .price-btn.outline{
	background:rgba(250,247,242,.55) !important;color:#005bb8 !important}
.price-card:nth-child(even) .price-btn.outline{
	background:rgba(64,65,68,.55) !important;color:#9ccafe !important}
.hero-cta:active, .price-btn:active, .nav-cta:active{transform:translateY(-6px) scale(.97)}

/* Die fixierte Leiste trug auf 20 Seiten rgba(3,7,15,.95) — Kanalsumme
   25, also Schwarz, und sie liegt ueber allem. Ein Suchlauf ueber
   sichtbare Elemente findet sie nur, wenn er `position:fixed` mitnimmt:
   offsetParent ist dort immer null. */
/* HIER STAND `nav{background:rgba(64,65,68,.95)!important}` — ENTFERNT.
   Es war die Notbremse gegen die schwarze Leiste (rgba(3,7,15,.95)) vom
   Nachmittag. Die ist ueberfluessig geworden: das Schwarz ist an allen
   1845 Fundstellen ersetzt.
   Sie hat aber Schaden angerichtet: auf index.html ist die Kopfleiste
   HELL (header = rgba(250,247,242,.92)), und das <nav> darin wurde durch
   diese Regel dunkel — die dunklen Texte darin blieben dunkel. Ergebnis:
   die Sprachknoepfe bei 1,18:1. Genau der Fehler, den ich heute viermal
   gemacht habe: eine Flaeche pauschal faerben, ohne zu pruefen, was
   darauf steht. */

/* ── Zuletzt: Elemente mit EIGENEM Grund ──────────────────────────────
   Diese Regeln muessen NACH `section .wf-step *{color:inherit}` stehen,
   sonst gewinnt die generische Regel und faerbt sie auf die Kachelfarbe
   (gemessene 1,61:1). Wer einen eigenen Hintergrund mitbringt, braucht
   auch seine eigene Schriftfarbe — bei gleicher Gewichtung entscheidet
   die Reihenfolge. */
/* `:nth-child(n)` steht hier absichtlich: die Gegenregel lautet
   `.wf-step:nth-child(2n+1) *` und wiegt damit drei Klassen. Ohne das
   zusaetzliche `:nth-child(n)` wiegt meine Regel nur zwei Klassen plus
   ein Element — und verliert, obwohl sie spaeter steht. Gemessen: die
   Sprechblase blieb bei 1,51:1. Spezifitaet schlaegt Reihenfolge. */
section .wf-step:nth-child(n) .wf-bubble{
	background:rgba(64,65,68,.94) !important;
	border:1px solid rgba(0,113,227,.34) !important;
}
section .wf-step:nth-child(n) .wf-bubble,
section .wf-step:nth-child(n) .wf-bubble *{color:#faf7f2 !important}

/* Die Ampel traegt ihre Bedeutung ueber die Farbe — sie darf NICHT von
   `color:inherit` eingefangen werden, sonst wird sie einfarbig blass.
   `:nth-child(n)` aus demselben Grund wie bei der Sprechblase: die
   Gegenregel wiegt drei Klassen. Gruen und Rot je nach Kachelhelligkeit,
   damit die Bedeutung lesbar bleibt (gemessene 4,13 vorher). */
section .diff-list:nth-child(odd) .diff-check{color:#054e33 !important}
section .diff-list:nth-child(even) .diff-check{color:#8ff0c4 !important}
section .diff-list:nth-child(odd) .diff-x{color:#8f2a16 !important}
section .diff-list:nth-child(even) .diff-x{color:#ffc4b6 !important}
section.zy-tief .diff-list:nth-child(odd) .diff-check{color:#054e33 !important}
section.zy-tief .diff-list:nth-child(even) .diff-check{color:#8ff0c4 !important}
section .zy-hell .diff-list:nth-child(even) .diff-check,
section.zy-tief .diff-list:nth-child(odd) .diff-check,
section.zy-hell .diff-list:nth-child(even) .diff-check{color:#06603f !important}
section.zy-hell .diff-list:nth-child(odd) .diff-check,
section.zy-tief .diff-list:nth-child(even) .diff-check{color:#6ee7b7 !important}
section.zy-hell .diff-list:nth-child(even) .diff-x,
section.zy-tief .diff-list:nth-child(odd) .diff-x{color:#8f2a16 !important}
section.zy-hell .diff-list:nth-child(odd) .diff-x,
section.zy-tief .diff-list:nth-child(even) .diff-x{color:#ffab97 !important}

/* Die obere Leiste hat einen blauen Verlauf als eigenen Grund. */
.zeynah-top-bar{
	background:linear-gradient(90deg,#005bb8,#0071e3) !important;
}
.zeynah-top-bar, .zeynah-top-bar a, .zeynah-top-bar span{color:#faf7f2 !important}

/* ═══════════════════════════════════════════════════════════════════════
   NACHGEMESSEN 13.08.2026 — zwei Gruppen, beide im Browser gefunden
   ═══════════════════════════════════════════════════════════════════════ */

/* 1 · Im HELLEN Band ist die ungerade Kachel DUNKEL (Schachbrett). Die
       Preisangaben trugen dort trotzdem ihre Dunkel-auf-Creme-Farben:
       gemessene 1,16 bis 1,61:1 auf 18 Stellen. Die Schrift folgt der
       KACHEL, nie dem Band — das ist der wiederkehrende Fehler. */
section.zy-hell .price-card:nth-child(odd) .price-list span{color:#8ff0c4 !important}
section.zy-hell .price-card:nth-child(odd) .price-label,
section.zy-hell .price-card:nth-child(odd) .price-trial{color:#9ccafe !important}
section.zy-hell .price-card:nth-child(odd) .price-period,
section.zy-hell .price-card:nth-child(odd) .price-list li{color:#e6e6e8 !important}
section.zy-hell .price-card:nth-child(odd) .price-amount,
section.zy-hell .price-card:nth-child(odd) h3{color:#faf7f2 !important}
/* und umgekehrt in der geraden, hellen Kachel */
section.zy-hell .price-card:nth-child(even) .price-list span{color:#054e33 !important}
section.zy-hell .price-card:nth-child(even) .price-label,
section.zy-hell .price-card:nth-child(even) .price-trial{color:#005bb8 !important}
section.zy-hell .price-card:nth-child(even) .price-period,
section.zy-hell .price-card:nth-child(even) .price-list li{color:#565759 !important}
section.zy-hell .price-card:nth-child(even) .price-amount,
section.zy-hell .price-card:nth-child(even) h3{color:#303134 !important}

/* 2 · Helle Baender DECKEND — endgueltig (14.08.). Jede Durchsicht des
       dunklen Films durch Creme erzeugt Grau (bei .74 gemessen
       rgb(202,200,197), bei .86 immer noch angegraut). Die Bewegung des
       Films gehoert in die DUNKLEN Baender (.86, siehe oben) und in den
       Hero — nicht ins Creme. */
.zy-band, section.zy-hell{
	background:linear-gradient(168deg,
		rgb(250,247,242) 0%, rgb(240,233,221) 100%) !important;
}
section.zy-hell .hero-sub, section.zy-hell .hero-note{color:#45464a !important}
section.zy-hell .hero-eyebrow, section.zy-hell .section-eyebrow{color:#00468c !important}

/* Nachzuegler, einzeln gemessen:
   · Der DSGVO-Streifen liegt AUSSERHALB der Baender — er steht damit
     direkt auf dem Hintergrundfilm und braucht einen eigenen Grund,
     sonst wechselt seine Lesbarkeit mit jedem Filmbild.
   · Die Vergleichsbeschriftung und der Umriss-Knopf trugen noch die
     Farben der jeweils anderen Seite. */
.dsgvo{
	background:linear-gradient(168deg,#404144 0%,#4a4b4f 100%) !important;
	padding:2rem 1.5rem;
}
.dsgvo, .dsgvo *{color:#e6e6e8 !important}
.dsgvo .dsgvo-title{color:#faf7f2 !important}
.dsgvo .dsgvo-icon{color:#9ccafe !important}

section.zy-tief .diff-label{color:#e6e6e8 !important}
section.zy-hell .diff-label{color:#45464a !important}
section.zy-hell .price-card:nth-child(odd) .price-btn.outline{
	background:rgba(64,65,68,.55) !important;color:#9ccafe !important;
	border-color:rgba(0,113,227,.34) !important;
}
section.zy-hell .price-card:nth-child(even) .price-btn.outline{
	background:rgba(250,247,242,.55) !important;color:#005bb8 !important;
}

/* Der Umriss-Knopf war halbdurchsichtig (.55). Gemischt ergab das
   rgb(166,165,164) — ein Grau — und blaue Schrift darauf nur 2,68:1.
   Knoepfe bekommen einen DECKENDEN Grund: sie stehen nie zuverlaessig
   auf dem, was man annimmt, und ihre Lesbarkeit darf nicht davon
   abhaengen, was zufaellig dahinterliegt. */
section .price-card:nth-child(odd) .price-btn.outline{
	background:#faf7f2 !important; color:#00468c !important;
	border:1.5px solid #005bb8 !important;
}
section .price-card:nth-child(even) .price-btn.outline{
	background:#404144 !important; color:#9ccafe !important;
	border:1.5px solid #7fbcff !important;
}
section.zy-hell .price-card:nth-child(odd) .price-btn.outline{
	background:#404144 !important; color:#9ccafe !important;
	border:1.5px solid #7fbcff !important;
}
section.zy-hell .price-card:nth-child(even) .price-btn.outline{
	background:#faf7f2 !important; color:#00468c !important;
	border:1.5px solid #005bb8 !important;
}
/* Die Wortmarke in der Fusszeile stand hellblau auf Creme (1,59:1). */
footer .footer-logo, footer .footer-logo *{color:#303134 !important}

/* Seiten OHNE Baender (booking, danke, Formularseiten) sind fuer HELLEN
   Grund gebaut: ihre Schrift ist dunkel. Durch `html,body{background:
   transparent}` stand sie ploetzlich auf dem dunklen Film — gemessene
   1,0 bis 1,55:1.

   Erster Versuch war, dort alle Texte hell zu faerben. Das machte aus
   sieben Fehlern zweiundzwanzig, weil die Fusszeile dieser Seiten hell
   ist. Richtig ist das Gegenteil: der Seite ihren hellen Grund
   zurueckgeben, dann stimmen ihre eigenen Farben wieder. Der Film bleibt
   als ruhiger Schimmer darunter sichtbar. */
body.zy-ohne-baender{
	background:linear-gradient(168deg,
		rgba(250,247,242,.94) 0%, rgba(240,233,221,.94) 100%) !important;
}

/* Der Kalenderkasten ist eine DUNKLE Kachel (gemessen rgba(64,65,68,.7))
   auf hellem Grund — seine Beschriftung blieb dunkel: 1,41 und 2,19:1.
   Dieselbe Regel wie ueberall: die Schrift folgt der Kachel, nicht der
   Seite. Deckkraft auf .92, sonst mischt der helle Grund durch und der
   Kasten wird grau. */
.cal-wrap{background:rgba(64,65,68,.92) !important}
.cal-wrap .cal-title, .cal-wrap h2, .cal-wrap h3{color:#faf7f2 !important}
.cal-wrap p, .cal-wrap li, .cal-wrap span:not(.cal-badge){color:#e6e6e8 !important}
.cal-wrap .cal-badge{
	color:#9ccafe !important;
	background:rgba(0,113,227,.22) !important;
	border:1px solid rgba(0,113,227,.34) !important;
}

/* ═══════════════════════════════════════════════════════════════════════
   HIER STANDEN DREI DURCHGAENGE PAUSCHALER FARBREGELN — ENTFERNT.
   ───────────────────────────────────────────────────────────────────────
   Ich habe dreimal hintereinander Klassen wie `.grp`, `footer div` oder
   `a[href*=zeynah.cloud]` fest eingefaerbt, ohne den Grund zu kennen, auf
   dem sie stehen. Jedes Mal wurde es SCHLIMMER statt besser:
   51 -> 25 -> 41 Stellen unter 4,5:1. Dieselbe Klasse steht auf der einen
   Seite auf Creme und auf der anderen auf Anthrazit — eine feste Farbe
   kann daher gar nicht stimmen.

   Ersetzt durch `zy-lesbarkeit()` in `zeynah-grundlage.js`: das MISST den
   tatsaechlichen Grund jedes Textes und waehlt die passende Palettenfarbe.
   Messen statt raten — genau das, was ich haette tun sollen.
   ═══════════════════════════════════════════════════════════════════════ */

/* Die inaktiven Sprachknoepfe trugen #4a4a5a — den Grauton, der auf Creme
   gueltig ist und deshalb bei der Entbraeunung bewusst stehen blieb. In
   der Kopfleiste steht er aber auf Anthrazit: gemessene 1,18:1. Derselbe
   Wert kann richtig und falsch sein, je nachdem worauf er liegt. */
/* Nur die AKTIV-Kennzeichnung bleibt fest: sie bringt ihren eigenen
   Grund mit und ist deshalb unabhaengig davon, worauf sie liegt. Die
   INAKTIVEN Knoepfe regelt `zy-lesbarkeit()` messend. */
.lang-btn.active, [data-lang].active{
	background:#005bb8 !important; color:#faf7f2 !important;
	border-color:#005bb8 !important;
}

/* HIER STAND EINE WEITERE PAUSCHALE REGEL — ENTFERNT (die vierte heute).
   `nav button{color:#e6e6e8}` sollte die Sprachknoepfe auf /booking
   lesbar machen (1,23:1). Auf /arztpraxis und /b2b ist die Kopfleiste
   aber HELL — dort erzeugte dieselbe Regel neun bzw. sieben neue
   Fehler. Gemessen: 0 -> 9 und 0 -> 7.

   Endgueltige Lehre des Tages: Eine feste Farbe fuer einen Selektor kann
   nicht stimmen, wenn derselbe Selektor auf verschiedenen Seiten auf
   verschiedenen Gruenden liegt. Das kann NUR zur Laufzeit entschieden
   werden — `zy-lesbarkeit()` in `zeynah-grundlage.js` misst den Grund
   und waehlt danach. Ich haette nach dem ersten Mal aufhoeren sollen,
   Regeln zu stapeln. */

/* Die Regel fuer die Sprachknoepfe ist ebenfalls weg: sie war nur noetig,
   weil meine nav-Notbremse die Leiste faelschlich verdunkelt hat. Ohne
   die Notbremse steht die Leiste wieder hell und die vorhandene Farbe
   #4a4a5a stimmt dort von selbst. Die Ursache beheben, nicht das
   Symptom uebermalen. */

/* Die inaktiven Reiter der App-Oberflaechen: #86868b auf Creme = 3,11:1.
   Das ist Apple-Grau und wirkt „nur ein bisschen leise" — reicht aber
   nicht. Der Palettenwert fuer leise Schrift auf Creme ist #565759 und
   schafft 5,5. Die Regel haengt am eigenen Grund der Kachel, nicht am
   Band, und ist damit unabhaengig von der Seite.
   Warum das Messskript sie nicht erwischt: `.tab-item` enthaelt Text UND
   eine Zahl in einem eigenen Element — der Textknoten allein reicht der
   Blattpruefung nicht immer. */
.tab-item, .tab-item span:not(.badge):not(.zahl){color:#565759 !important}
.tab-item.active, .tab-item[aria-selected="true"]{color:#005bb8 !important}

/* ═══════════════════════════════════════════════════════════════════════
   GLAS UND SCHACHBRETT FUER DIE UEBRIGEN SEITEN — 14.08.2026
   ───────────────────────────────────────────────────────────────────────
   Gemessen: Auf fuenf von acht Adressen gab es WEDER Glas NOCH Schachbrett.
   Grund war kein Fehler in den Regeln, sondern in meiner Annahme: diese
   Seiten benennen ihre Kacheln voellig anders, und meine Selektoren
   (.feat-card, .price-card, .zy-kachel …) trafen dort ins Leere. Gemessen
   statt geraten, hier die echten Namen:

     /restaurant   Baender .band.light/.band.dark   Kacheln .st .s .vcol
     /grosshandel  Baender .band--hell/--dunkel     Kacheln .schritt .fall .paket
     /arztpraxis   keine Baender                    Kacheln .dashboard-card
     /b2b          keine Baender                    Kacheln .dashboard-card
     /booking      keine Baender                    Kacheln .info-card

   Die SCHRIFTFARBEN werden hier bewusst NICHT gesetzt — das uebernimmt
   `zy-lesbarkeit()` messend. Feste Schriftregeln haben gestern viermal
   Schaden angerichtet.
   ═══════════════════════════════════════════════════════════════════════ */

.st, .s, .vcol, .schritt, .fall, .paket, .dashboard-card, .info-card{
	-webkit-backdrop-filter: blur(16px) saturate(1.2);
	backdrop-filter: blur(16px) saturate(1.2);
	border-radius: 18px;
	border: 1.5px solid rgba(0,113,227,.34);
	box-shadow: 0 20px 46px rgba(48,49,52,.26),
	            0 2px 6px rgba(48,49,52,.12),
	            inset 0 1px 0 rgba(250,247,242,.14);
	transition: transform .28s cubic-bezier(.34,1.56,.64,1), box-shadow .3s ease;
}

/* Schachbrett: Kachel neben Kachel wechselt. In hellen Baendern faengt es
   dunkel an, in dunklen hell — jede Kachel ist das Gegenteil ihres Bandes
   UND ihres Nachbarn. */
.band.light .st:nth-child(odd), .band.light .s:nth-child(odd), .band.light .vcol:nth-child(odd),
.band--hell .schritt:nth-child(odd), .band--hell .fall:nth-child(odd), .band--hell .paket:nth-child(odd),
.dashboard-card:nth-child(odd), .info-card:nth-child(odd){
	background: rgba(74,75,79,.88) !important;
}
.band.light .st:nth-child(even), .band.light .s:nth-child(even), .band.light .vcol:nth-child(even),
.band--hell .schritt:nth-child(even), .band--hell .fall:nth-child(even), .band--hell .paket:nth-child(even),
.dashboard-card:nth-child(even), .info-card:nth-child(even){
	background: rgba(240,233,221,.92) !important;
}
.band.dark .st:nth-child(odd), .band.dark .s:nth-child(odd), .band.dark .vcol:nth-child(odd),
.band--dunkel .schritt:nth-child(odd), .band--dunkel .fall:nth-child(odd), .band--dunkel .paket:nth-child(odd){
	background: rgba(240,233,221,.92) !important;
}
.band.dark .st:nth-child(even), .band.dark .s:nth-child(even), .band.dark .vcol:nth-child(even),
.band--dunkel .schritt:nth-child(even), .band--dunkel .fall:nth-child(even), .band--dunkel .paket:nth-child(even){
	background: rgba(74,75,79,.88) !important;
}

/* Vier Randfarben im Wechsel — Blau ist einer von vieren, nicht der
   Standard fuer alles. */
.st:nth-child(4n+1), .s:nth-child(4n+1), .vcol:nth-child(4n+1), .schritt:nth-child(4n+1),
.fall:nth-child(4n+1), .paket:nth-child(4n+1), .dashboard-card:nth-child(4n+1),
.info-card:nth-child(4n+1){border-color:rgba(127,188,255,.52)}
.st:nth-child(4n+2), .s:nth-child(4n+2), .vcol:nth-child(4n+2), .schritt:nth-child(4n+2),
.fall:nth-child(4n+2), .paket:nth-child(4n+2), .dashboard-card:nth-child(4n+2),
.info-card:nth-child(4n+2){border-color:rgba(0,91,184,.50)}
.st:nth-child(4n+3), .s:nth-child(4n+3), .vcol:nth-child(4n+3), .schritt:nth-child(4n+3),
.fall:nth-child(4n+3), .paket:nth-child(4n+3), .dashboard-card:nth-child(4n+3),
.info-card:nth-child(4n+3){border-color:rgba(0,113,227,.50)}
.st:nth-child(4n+4), .s:nth-child(4n+4), .vcol:nth-child(4n+4), .schritt:nth-child(4n+4),
.fall:nth-child(4n+4), .paket:nth-child(4n+4), .dashboard-card:nth-child(4n+4),
.info-card:nth-child(4n+4){border-color:rgba(0,113,227,.34)}

/* Schweben, drei Laufzeiten, plus Auffloppen beim Antippen */
.st:nth-child(3n+1), .s:nth-child(3n+1), .vcol:nth-child(3n+1), .schritt:nth-child(3n+1),
.fall:nth-child(3n+1), .paket:nth-child(3n+1), .dashboard-card:nth-child(3n+1),
.info-card:nth-child(3n+1){animation:zy-schweb-a 8.5s ease-in-out infinite}
.st:nth-child(3n+2), .s:nth-child(3n+2), .vcol:nth-child(3n+2), .schritt:nth-child(3n+2),
.fall:nth-child(3n+2), .paket:nth-child(3n+2), .dashboard-card:nth-child(3n+2),
.info-card:nth-child(3n+2){animation:zy-schweb-b 6.5s ease-in-out infinite -1.2s}
.st:nth-child(3n+3), .s:nth-child(3n+3), .vcol:nth-child(3n+3), .schritt:nth-child(3n+3),
.fall:nth-child(3n+3), .paket:nth-child(3n+3), .dashboard-card:nth-child(3n+3),
.info-card:nth-child(3n+3){animation:zy-schweb-c 9.5s ease-in-out infinite -3.4s}
.st:active, .s:active, .vcol:active, .schritt:active, .fall:active, .paket:active,
.dashboard-card:active, .info-card:active{transform:translateY(-12px) scale(.985)}
/* reduced-motion-Ausnahme entfernt 14.08. — Leben IMMER an (Nazannils Gesetz) */

/* Die Vergleichskacheln auf /realestate schwebten als einzige nicht
   (0 von 2) und hatten nur eine Randfarbe. */
.diff-list:nth-child(odd){animation:zy-schweb-a 8.5s ease-in-out infinite}
.diff-list:nth-child(even){animation:zy-schweb-c 9.5s ease-in-out infinite -3.4s}

/* Auf /booking sind die vier Infokacheln nicht Geschwister im selben
   Elternteil — `:nth-child` zaehlt dort jeweils bei eins los, deshalb
   bekamen alle dieselbe Randfarbe. `:nth-of-type` greift auch dann,
   wenn die Kacheln verteilt liegen. */
.info-card:nth-of-type(4n+1){border-color:rgba(127,188,255,.52) !important}
.info-card:nth-of-type(4n+2){border-color:rgba(0,91,184,.50) !important}
.info-card:nth-of-type(4n+3){border-color:rgba(0,113,227,.50) !important}
.info-card:nth-of-type(4n+4){border-color:rgba(0,113,227,.34) !important}

/* ═══════════════════════════════════════════════════════════════════════
   HINTERGRUNDFILM SICHTBAR MACHEN — 14.08.2026, gemessen
   ───────────────────────────────────────────────────────────────────────
   Der Film LIEF, war aber begraben: in hellen Baendern kamen 14 % durch,
   in dunklen 0 %. Ich hatte bisher nur geprueft, OB er laeuft — nicht,
   ob man ihn SIEHT. Zwei verschiedene Fragen.

   Jetzt: helle Baender .74 (26 % Film), dunkle .82 (18 % Film). Die
   dunklen bleiben dichter, weil heller Text auf bewegtem Bild schneller
   unruhig wird als dunkler. Danach im Browser gegengemessen — die
   Lesbarkeit entscheidet, wie weit man gehen kann, nicht der Wunsch.
   ═══════════════════════════════════════════════════════════════════════ */
/* KORRIGIERT 14.08. abends: Der Block hier stammte vom Vormittag (hell
   .74 / dunkel .82) und ueberschrieb als SPAETERE Regel alles davor —
   dieselbe Krankheit, die den Tag gekostet hat: vier Fassungen derselben
   Regel in einer Datei. Jetzt traegt auch diese Stelle das endgueltige
   Schema: HELL DECKEND (Creme ueber dunklem Film = Grau), DUNKEL .86
   (der blaue Film schimmert durch, das Glas lebt). */
section.zy-hell, .zy-band:not(.zy-dunkel){
	background:linear-gradient(168deg,
		rgb(250,247,242) 0%, rgb(240,233,221) 100%) !important;
}
section.zy-tief, .zy-band.zy-dunkel{
	background:linear-gradient(168deg,
		rgba(64,65,68,.86) 0%, rgba(74,75,79,.86) 100%) !important;
}
/* Auf Seiten mit eigenen Baendern dasselbe Schema. */
.band.light, .band--hell{
	background:linear-gradient(168deg,
		rgb(250,247,242) 0%, rgb(240,233,221) 100%) !important;
}
.band.dark, .band--dunkel{
	background:linear-gradient(168deg,
		rgba(64,65,68,.86) 0%, rgba(74,75,79,.86) 100%) !important;
}
/* Der Film selbst darf nicht zu schwach sein — er ist der Grund, warum
   die Baender ueberhaupt durchscheinen. */
#zy-grundfilm{opacity:1}

/* ═══════════════════════════════════════════════════════════════════════
   KEIN GRAU — Korrektur meiner eigenen Aenderung, 14.08.2026
   ───────────────────────────────────────────────────────────────────────
   Um den Hintergrundfilm sichtbar zu machen, hatte ich die Baender
   durchscheinend gesetzt (.74 hell, .82 dunkel). An den PIXELN gemessen
   kam dabei heraus:
       helles Band   rgb(250,247,242) -> gesehen rgb(201,198,192)  Saett. 9
       dunkles Band  rgb(64,65,68)    -> gesehen rgb(64,64,64)     Saett. 0
   Also mattes Grau und exaktes Grau. Genau das, was seit dem 04.08. als
   Regel steht: „halbtransparentes Dunkel ueber Creme ergibt GRAU, und
   Grau ist absolut verboten." Ich habe es selbst wieder hineingebaut.

   NACHTRAG 14.08. abends — die Messung oben galt fuer den BRAUNEN Film:
   Dunkel .82 ueber Braun mischte sich zu exaktem Grau. Der Film ist jetzt
   BLAU (#394d64); Dunkel .86 darueber bleibt tiefblau-dunkel und lebendig.
   Nur CREME ueber dunklem Film ergibt Grau — deshalb hell DECKEND,
   dunkel .86. „Alles deckend" hat das Glas getoetet (Nazannil: „glasig!!!
   schwebend!!!"): durch eine deckende Flaeche schimmert nichts.

   DIES IST DIE LETZTE UND GEWINNENDE DEFINITION der Baender in dieser
   Datei. Die frueheren Bloecke sind auf dasselbe Schema gestellt. Wer die
   Baender aendert, aendert ALLE Stellen — sonst wirkt die Aenderung nicht
   und der Fehler wird woanders gesucht (hat am 14.08. Stunden gekostet).
   ═══════════════════════════════════════════════════════════════════════ */
/* HELLE Baender: sattes Creme + ein wanderndes Blaulicht bei 8 %.
   Warum: Blur zeigt nur, was sich HINTER einer Kachel bewegt. Auf einer
   toten Creme-Flaeche hatte das Glas nichts zu verwischen — „kaesten sind
   nicht glasig" (14.08., dreimal). Ein LICHT bei 8 % hellt Creme auf,
   statt es zu vergrauen (Grau entsteht nur, wenn DUNKLES durchscheint).
   Als background-Schicht, nicht als ::before — _force-style.css toetet
   section::before/::after mit display:none !important. */
@keyframes zy-hell-licht {
	0%   { background-position: 0% 30%, 0 0; }
	50%  { background-position: 100% 70%, 0 0; }
	100% { background-position: 0% 30%, 0 0; }
}
section.zy-hell, .zy-band:not(.zy-dunkel), .band.light, .band--hell{
	/* Creme als BILD, nicht als Farbe: erzwungene Dunkelmodi invertieren
	   Farben und Verlaeufe, aber keine Rasterbilder. So bleibt das
	   Schachbrett auch auf solchen Geraeten sichtbar (14.08.). */
	background:
		radial-gradient(720px 480px at 30% 40%,
			rgba(0, 113, 227, .08), transparent 70%),
		url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP49f3TfwAJtQPjdZugKAAAAABJRU5ErkJggg==) !important;
	/* 14.08. spaeter Abend — DIESELBE Falle wie bei den Kacheln, nur eine
	   Etage hoeher. `flaecheVon()` nimmt die ERSTE rgba() im Bildstapel;
	   das ist hier der blaue Lichtschleier mit Alpha .08. Der wird gegen
	   den dunklen Koerper gemischt und ergibt „dunkles Band" — obwohl das
	   PNG darunter deckendes Creme #faf7f2 ist. Ergebnis: creme Schrift
	   auf cremefarbenem BAND. Nazannil sah das als „helle kaesten und
	   helle schrift".
	   Die Farbe hier gibt dem Waechter etwas Messbares, das er ZUERST
	   liest (erste Abfrage in `flaecheVon`). Optisch aendert sie nichts —
	   das deckende PNG liegt darueber. */
	background-color: #faf7f2 !important;
	background-size: 220% 220%, 100% 100% !important;
	background-repeat: no-repeat !important;
	animation: zy-hell-licht 26s ease-in-out infinite;
}
section.zy-tief, .zy-band.zy-dunkel, .band.dark, .band--dunkel{
	background:linear-gradient(168deg,
		rgba(64,65,68,.86) 0%, rgba(74,75,79,.86) 100%) !important;
}
/* reduced-motion-Ausnahme entfernt 14.08. — Logo/Leben IMMER an (Nazannils Gesetz; Bewegungen sind sanft und langsam) */

/* DER ZIELKONFLIKT, sauber geloest.
   „Film sichtbar" und „kein Grau" schliessen sich aus, solange man es
   ueber Deckkraft versucht: jede halbdurchsichtige Flaeche ueber dem
   Film mischt sich zu Grau. Gemessen: Creme .82 ueber dem Film ergab
   rgb(217,214,211) — abgedunkeltes Creme, also genau das Verbotene.

   Loesung: Der Film ist im Kopfbereich WIRKLICH zu sehen — keine
   Creme-Schicht darueber — und der Text sitzt in einer DECKENDEN
   Glaskachel darauf. So bleibt der Film ein Film, die Flaeche bleibt
   Palette, und die Schrift steht auf einem eindeutigen Grund.
   Flaeche geben statt Durchsicht. */
section.hero.zy-hell, section.hero{
	background: transparent !important;
}
section.hero > .container, section.hero > .zy-innen{
	/* ── 14.08., Nazannil: "warum ist da schwarz?" — ZWEI Fehler in einem:
	   1. `background:` (Farbe) wird von _force-style.css
	      (`body .container{background-color:transparent!important}`)
	      GELOESCHT — die Karte war durchsichtig, die Schrift stand nackt
	      auf dem dunklen/ladenden Video: die schwarze leere Flaeche.
	      Der Revert vom Mittag hatte diesen alten Fehler zurueckgeholt.
	   2. Dunkles Glas wirkte als grosse Flaeche ohnehin wie ein schwarzer
	      Kasten. Jetzt HELLES Creme-Glas als background-IMAGE (PNG):
	      unantastbar fuer force-style UND fuer erzwungene Dunkelmodi. */
	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP48PLufwAJOQO23LZ0xgAAAABJRU5ErkJggg==);
	background-color: #f0e9dd;   /* messbar fuer den Waechter, s.o. */
	-webkit-backdrop-filter: blur(16px) saturate(1.2);
	backdrop-filter: blur(16px) saturate(1.2);
	border: 1.5px solid rgba(0,113,227,.50);
	border-radius: 22px;
	padding: 42px 34px;
	box-shadow: 0 24px 54px rgba(48,49,52,.3), inset 0 1px 0 rgba(250,247,242,.14);
}
section.hero h1, section.hero h2{color:#303134 !important}
section.hero .lead, section.hero .hero-sub, section.hero p{color:#303134 !important}
section.hero .eyebrow, section.hero .hero-eyebrow,
section.hero .section-eyebrow, section.hero .hero-note{color:#005bb8 !important}
section.hero h1 em{color:#005bb8 !important}
/* Der Hoerbeweis-Kasten in der hellen Karte bleibt dunkel — Schachbrett
   im Kleinen — seine Schrift bleibt hell. */
section.hero #zy-hoer, section.hero #zy-hoer *{color:#faf7f2 !important}

/* ═══════════════════════════════════════════════════════════════════════
   DER FILM SELBST WAR BRAUN — 14.08.2026
   ───────────────────────────────────────────────────────────────────────
   An den Bildpunkten des laufenden Videos gemessen: rgb(63,59,49),
   Rot liegt 14 ueber Blau. Das ist nach unserer eigenen Regel Braun.
   Solange der Film unsichtbar hinter deckenden Baendern lag, ist es
   niemandem aufgefallen — sichtbar gemacht, wurde es sofort sichtbar.

   Nicht geraten, sondern durchprobiert und gemessen:
     ohne Filter                        rgb(63,59,49)   R-B +14
     saturate(.3)                       rgb(60,59,56)   R-B  +4
     saturate(.25) hue-rotate(185deg)   rgb(58,59,61)   R-B  -3   <- gewaehlt
     saturate(.2) hue-rotate(200deg)    rgb(54,54,56)   R-B  -2
   Der gewaehlte Wert liegt damit genau in der Palette (#404144 hat -4)
   und behaelt die Helligkeitsstruktur, sodass die Bewegung sichtbar
   bleibt. Ein staerkeres `grayscale` haette den Film totgestellt.

   Wer das Video austauscht: HINTERHER NACHMESSEN. Ein neuer Film bringt
   seinen eigenen Farbstich mit, und der Filter hier passt dann nicht mehr. */
/* Der Filter `saturate(.25) hue-rotate(185deg)` stand hier als Notbehelf
   fuer den BRAUNEN Film — sein eigener Kommentar oben verlangt: nach einem
   Videotausch nachmessen, der Filter passt dann nicht mehr. Am 14.08. ist
   der Film gegen einen echten blauen getauscht; saturate(.25) haette aus
   dem Blau (#394d64) wieder GRAU gemacht. Deshalb: kein Filter mehr, der
   Film traegt seine Farbe selbst. */
#zy-grundfilm, #zy-grund{
	filter: none;
}

/* ═══════════════════════════════════════════════════════════════════════
   ERGAENZUNGEN 14.08.2026 — NUR HINZUGEFUEGT, nichts oben umgebaut.
   Nazannil (woertlich): „kein grau! glasig schwebend hintergrund video",
   „nicht mal mein Logo ist lebendig", „du solltest nur hinzufuegen".
   Jeder Block hier behebt genau EINEN gesehenen Mangel.
   ═══════════════════════════════════════════════════════════════════════ */

/* 1 · LOGO LEBENDIG — Puls 85↔115 % ueber 4,5 s (Regel vom 10.08.).
   Nur Groesse, nie Farben: das Markenzeichen bleibt original. */
@keyframes zy-logo-puls {
	0%, 100% { transform: scale(.85); }
	50%      { transform: scale(1.15); }
}
.nav-logo img, .zlogo, img[alt="ZEYNAH"] {
	animation: zy-logo-puls 4.5s ease-in-out infinite;
	transform-origin: center;
	will-change: transform;
}
/* reduced-motion-Ausnahme entfernt 14.08. — Logo/Leben IMMER an (Nazannils Gesetz; Bewegungen sind sanft und langsam) */

/* 2 · KNOEPFE SCHWEBEN IM GRUNDZUSTAND — auf dem Handy gibt es kein
   Hover; ohne das hier liegen alle Knoepfe flach (live gesehen:
   transform none). Hover verstaerkt nur noch. */
.zy-knopf, .price-btn, .nav-cta {
	transform: translateY(-2px);
}
.zy-knopf:hover, .price-btn:hover, .nav-cta:hover {
	transform: translateY(-5px);
}
.zy-knopf:active, .price-btn:active, .nav-cta:active {
	transform: translateY(-6px) scale(.97);
}

/* 3 · RAENDER SICHTBAR UND FARBIG — live gemessen: 0,8 px in
   rgba(0,113,227,.15). Das ist kein Rand, das ist ein Haarriss.
   Ursache: `_force-style.css` erzwingt auf jeder Karte
   `[class*="-card"]:not(.lang-btn){border-color:rgba(0,113,227,.15)!important}`
   (Spezifitaet 0-2-0) und schlaegt damit die Rand-Rotation. Jene Datei
   bleibt unangetastet (sie schuetzt Altseiten) — hier gewinnt eine
   SPEZIFISCHERE Regel (html body … :nth-child = 0-2-2), die nur auf den
   Grundlage-Seiten laedt. Vier Toene im Wechsel; Teal bleibt Teal. */
html body .feat-card:nth-child(4n+1), html body .wf-step:nth-child(4n+1),
html body .eck:nth-child(4n+1), html body .info-card:nth-child(4n+1) {
	border: 1.5px solid rgba(127, 188, 255, .50) !important;
}
html body .feat-card:nth-child(4n+2), html body .wf-step:nth-child(4n+2),
html body .eck:nth-child(4n+2), html body .info-card:nth-child(4n+2) {
	border: 1.5px solid rgba(0, 91, 184, .46) !important;
}
html body .feat-card:nth-child(4n+3), html body .wf-step:nth-child(4n+3),
html body .eck:nth-child(4n+3), html body .info-card:nth-child(4n+3) {
	/* War Teal rgba(0,196,170) — verbotene Farbe, 14.08. auf Apple-Blau
	   gedreht. Diese vier Regeln sind die WIRKSAMEN Raender (html body …
	   !important schlaegt alles darueber); die Rotation weiter oben ist
	   jetzt nur noch gleichlautend gehalten. */
	border: 1.5px solid rgba(0, 113, 227, .50) !important;
}
html body .feat-card:nth-child(4n+4), html body .wf-step:nth-child(4n+4),
html body .eck:nth-child(4n+4), html body .info-card:nth-child(4n+4) {
	border: 1.5px solid rgba(0, 113, 227, .34) !important;
}
html body .price-card, html body .zy-kachel {
	border-width: 1.5px !important;
	border-style: solid !important;
}

/* 4 · GLAS SICHTBAR MACHEN — auch auf ruhigem Grund (14.08., Nazannil:
   „kaesten sind nicht glasig"). backdrop-filter zeigt nur, was HINTER der
   Kachel liegt; auf einem satten Creme-Band liegt nichts Bewegtes, also
   sah die Kachel aus wie Farbe auf Farbe. Was Glas ausmacht, traegt die
   Scheibe selbst: die LICHTKANTE oben und ein schraeger Lichtschein
   (eine Scheibe faengt oben Licht — steht so seit dem 05.08. in der
   Glas-Regel). Der Schein kommt als ::before-Schicht, weil die
   Flaechenfarben mit !important gesetzt sind und ein background-image
   im selben Kampf verloren geht. */
html body .feat-card, html body .wf-step, html body .eck,
html body .price-card, html body .film-karte, html body .zy-kachel {
	position: relative;
	box-shadow:
		0 22px 48px rgba(48, 49, 52, .30),
		0 2px 6px rgba(48, 49, 52, .14),
		inset 0 1px 0 rgba(250, 247, 242, .34) !important;
}
.feat-card::before, .wf-step::before, .eck::before,
.price-card::before, .film-karte::before, .zy-kachel::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	pointer-events: none;
	background:
		linear-gradient(160deg,
			rgba(250, 247, 242, .16) 0%,
			rgba(250, 247, 242, .05) 26%,
			transparent 45%);
}

/* 5 · DER GRUND LEBT IMMER — auch wenn das Video nicht darf (14.08.,
   Nazannil: „ich sehe kein hintergrundvideo"). Samsung blockiert Autoplay
   je nach Spar-Einstellung dauerhaft; dann stand nur das Standbild. Der
   Schleier ueber dem Film bekommt eine langsame Drift (24 s) — damit
   bewegt sich der Hintergrund IMMER, mit Video und ohne. Unter
   prefers-reduced-motion bleibt alles ruhig. */
@keyframes zy-grund-drift {
	0%   { background-position: 0% 0%, 0 0; }
	50%  { background-position: 100% 60%, 0 0; }
	100% { background-position: 0% 0%, 0 0; }
}
#zy-grundfilm-schleier {
	background-size: 220% 220%, 100% 100%;
	animation: zy-grund-drift 24s ease-in-out infinite;
}
/* reduced-motion-Ausnahme entfernt 14.08. — Logo/Leben IMMER an (Nazannils Gesetz; Bewegungen sind sanft und langsam) */

/* 5b · GLASIGER UND HOEHER SCHWEBEN (14.08. abends, Nazannil nach dem
   ersten sichtbaren Erfolg: „Kacheln muessen glasiger sein und schweben.
   Macht genauso weiter.") Das kanonische Glas-Rezept vom 05.08. sagt
   blur(22px) saturate(1.25) — die Kacheln liefen noch auf blur(16).
   Und die Schwebe-Amplitude (7px auf grossen Flaechen) war am Handy
   kaum wahrnehmbar: jetzt 12px, mit staerkerer Lichtkante und
   groesserem, weicherem Schatten. */
html body .feat-card, html body .wf-step, html body .eck,
html body .price-card, html body .film-karte, html body .zy-kachel {
	-webkit-backdrop-filter: blur(22px) saturate(1.25) !important;
	backdrop-filter: blur(22px) saturate(1.25) !important;
	box-shadow:
		0 26px 56px rgba(48, 49, 52, .34),
		0 3px 8px rgba(48, 49, 52, .16),
		inset 0 1px 0 rgba(250, 247, 242, .42) !important;
}
@keyframes zy-schweb-hoch-a { 0%,100%{transform:translateY(0)}    50%{transform:translateY(-12px)} }
@keyframes zy-schweb-hoch-b { 0%,100%{transform:translateY(-2px)} 50%{transform:translateY(-10px)} }
@keyframes zy-schweb-hoch-c { 0%,100%{transform:translateY(-3px)} 50%{transform:translateY(-14px)} }
html body .feat-card:nth-child(3n+1), html body .wf-step:nth-child(3n+1),
html body .film-karte:nth-child(3n+1), html body .price-card:nth-child(3n+1),
html body .eck:nth-child(3n+1) { animation: zy-schweb-hoch-a 8.5s ease-in-out infinite; }
html body .feat-card:nth-child(3n+2), html body .wf-step:nth-child(3n+2),
html body .film-karte:nth-child(3n+2), html body .price-card:nth-child(3n+2),
html body .eck:nth-child(3n+2) { animation: zy-schweb-hoch-b 6.5s ease-in-out infinite -1.2s; }
html body .feat-card:nth-child(3n+3), html body .wf-step:nth-child(3n+3),
html body .film-karte:nth-child(3n+3), html body .price-card:nth-child(3n+3),
html body .eck:nth-child(3n+3) { animation: zy-schweb-hoch-c 9.5s ease-in-out infinite -3.4s; }
/* reduced-motion-Ausnahme entfernt 14.08. — Logo/Leben IMMER an (Nazannils Gesetz; Bewegungen sind sanft und langsam) */

/* 6 · DER GRUND BEWEGT SICH BEDINGUNGSLOS (14.08., drittes
   „hintergrundvideo!!!"). Alle Erkennungen (Timer, Klassen, play-Events)
   haengen davon ab, dass irgendetwas mitspielt — auf Nazannils Samsung
   tat es das dreimal nicht. Deshalb haengt die Bewegung jetzt an NICHTS
   mehr: Das Hintergrund-Element selbst atmet per CSS (Zoom 1.0→1.09,
   26 s, GPU-guenstig). Das wirkt auf laufende Videobilder UND auf das
   Standbild — Bewegung ist da, egal was der Browser blockiert.
   Dazu wandert ein blauer Lichtfleck ueber die Standbild-Schicht; laeuft
   das Video, liegen dessen Bilder darueber und man sieht nur den Zoom. */
@keyframes zy-grund-atmen {
	0%   { transform: scale(1); }
	50%  { transform: scale(1.09); }
	100% { transform: scale(1); }
}
@keyframes zy-licht-wandern {
	0%   { background-position: 0% 20%, center; }
	33%  { background-position: 80% 70%, center; }
	66%  { background-position: 30% 100%, center; }
	100% { background-position: 0% 20%, center; }
}
#zy-grundfilm, #zy-grund {
	background-image:
		radial-gradient(closest-side,
			rgba(0, 113, 227, .30), rgba(0, 113, 227, .08) 55%, transparent 75%),
		url('/assets/zeynah-hintergrund.jpg?v=20260814k') !important;
	background-size: 160% 160%, cover !important;
	background-repeat: no-repeat !important;
	background-color: #404144 !important;
	animation:
		zy-grund-atmen 26s ease-in-out infinite,
		zy-licht-wandern 22s ease-in-out infinite;
}
/* reduced-motion-Ausnahme entfernt 14.08. — Logo/Leben IMMER an (Nazannils Gesetz; Bewegungen sind sanft und langsam) */
