@tailwind base; @tailwind components; @tailwind utilities; html { scroll-behavior: smooth; } .marquee-viewport { -webkit-mask-image: linear-gradient(to right, transparent, black 6%, black 94%, transparent); mask-image: linear-gradient(to right, transparent, black 6%, black 94%, transparent); } /* Grundflaeche der Seite - die eigentliche Koernung kommt separat vom .grain-overlay, damit sie ueber JEDEM Abschnitt sichtbar bleibt, auch ueber Bereichen mit eigener deckender Hintergrundfarbe (z.B. bg-neutral-50 Baendern). */ .page-texture { background-color: #f6f5f0; } .dark .page-texture { background-color: #0a0b07; } /* Papierkorn als fixierter Ueberzug ueber der gesamten Seite statt als Hintergrundbild eines einzelnen Elements, damit es ueber JEDER Sektion sichtbar bleibt (auch ueber Baendern mit eigener deckender bg-neutral-50-Farbe). Normale Alpha-Transparenz statt mix-blend-mode: "overlay"/"soft-light" haben auf Hintergruende nahe Weiss/Schwarz (wie unsere Basisfarben) fast keinen sichtbaren Effekt, da die Blend-Mathematik dort kaum noch Kontrast erzeugt - reine Deckkraft-Ueberlagerung funktioniert unabhaengig davon. */ .grain-overlay { position: fixed; inset: 0; z-index: 40; pointer-events: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch' result='noise'/%3E%3CfeColorMatrix in='noise' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); background-size: 180px 180px; } .dark .grain-overlay { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch' result='noise'/%3E%3CfeColorMatrix in='noise' type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.11 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }