@import "tailwindcss"; @import "./components.css"; /* ───────────────────────────────────────────────────────────── Nebula – Designsystem Dark Glassmorphism mit Neon-Akzenten. Hier stehen Theme-Variablen, Grundlayout und Hintergrund. Die wiederverwendbaren Bausteine (.glass, .btn, .field …) liegen in components.css, damit sie in @layer components landen und Tailwind- Utilities sie ueberschreiben koennen. ───────────────────────────────────────────────────────────── */ @theme { --color-void: #05060f; --color-void-soft: #0a0c1a; --color-haze: #12142b; --font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; --font-mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace; --radius-card: 1.25rem; } :root { color-scheme: dark; --glass-bg: rgba(255, 255, 255, 0.035); --glass-border: rgba(255, 255, 255, 0.09); --glass-highlight: rgba(255, 255, 255, 0.16); } @layer base { * { border-color: var(--glass-border); } html, body { min-height: 100%; } body { background-color: var(--color-void); color: #e6e8f5; font-family: var(--font-sans); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: hidden; } ::selection { background: rgba(139, 92, 246, 0.35); color: #fff; } ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(148, 163, 184, 0.22); border-radius: 9999px; border: 2px solid transparent; background-clip: content-box; } ::-webkit-scrollbar-thumb:hover { background: rgba(167, 139, 250, 0.5); background-clip: content-box; } } /* ── Hintergrund: langsam driftende Nebel ───────────────────── */ .aurora { position: fixed; inset: 0; z-index: -2; overflow: hidden; pointer-events: none; } .aurora::after { /* feines Rauschen, damit die Verlaeufe nicht bandieren */ content: ""; position: absolute; inset: 0; opacity: 0.35; background-image: radial-gradient(rgba(255, 255, 255, 0.06) 1px, transparent 1px); background-size: 3px 3px; mix-blend-mode: overlay; } .aurora-blob { position: absolute; border-radius: 9999px; filter: blur(90px); opacity: 0.5; will-change: transform; } .aurora-blob--one { width: 46rem; height: 46rem; top: -18rem; left: -12rem; background: radial-gradient(circle at 30% 30%, #7c3aed, transparent 65%); animation: drift-a 26s ease-in-out infinite alternate; } .aurora-blob--two { width: 40rem; height: 40rem; top: -10rem; right: -14rem; background: radial-gradient(circle at 60% 40%, #0ea5e9, transparent 65%); animation: drift-b 32s ease-in-out infinite alternate; } .aurora-blob--three { width: 38rem; height: 38rem; bottom: -20rem; left: 28%; background: radial-gradient(circle at 50% 50%, #db2777, transparent 68%); animation: drift-c 38s ease-in-out infinite alternate; opacity: 0.35; } .aurora-grid { position: fixed; inset: 0; z-index: -1; pointer-events: none; background-image: linear-gradient(rgba(255, 255, 255, 0.028) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.028) 1px, transparent 1px); background-size: 64px 64px; mask-image: radial-gradient(ellipse 100% 70% at 50% 0%, #000 40%, transparent 100%); } @keyframes drift-a { from { transform: translate3d(0, 0, 0) scale(1); } to { transform: translate3d(6rem, 4rem, 0) scale(1.12); } } @keyframes drift-b { from { transform: translate3d(0, 0, 0) scale(1.05); } to { transform: translate3d(-7rem, 5rem, 0) scale(0.95); } } @keyframes drift-c { from { transform: translate3d(0, 0, 0) scale(0.95); } to { transform: translate3d(4rem, -6rem, 0) scale(1.1); } } /* ── Bewegung & Effekte ─────────────────────────────────────── */ .shimmer { background: linear-gradient( 100deg, rgba(255, 255, 255, 0) 20%, rgba(255, 255, 255, 0.12) 50%, rgba(255, 255, 255, 0) 80% ); background-size: 200% 100%; animation: shimmer 2.2s linear infinite; } @keyframes shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } } .fade-up { animation: fade-up 0.45s cubic-bezier(0.22, 1, 0.36, 1) both; } @keyframes fade-up { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } .pulse-ring { animation: pulse-ring 2.4s ease-out infinite; } @keyframes pulse-ring { 0% { box-shadow: 0 0 0 0 currentColor; opacity: 0.7; } 70% { box-shadow: 0 0 0 8px transparent; opacity: 0; } 100% { box-shadow: 0 0 0 0 transparent; opacity: 0; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; } }