Spaces:
Running
Running
Simeon Garratt
feat: cinematic landing page with 3D title, scroll easter egg, and starfield preservation
bb20dea | @import "tailwindcss"; | |
| /* --- Cosmetic custom-property defaults --- */ | |
| :root { | |
| --cosmetic-card-bg: rgba(26, 16, 64, 0.4); | |
| --cosmetic-card-border: rgba(255, 255, 255, 0.1); | |
| --cosmetic-card-glow: none; | |
| --cosmetic-star-color: white; | |
| --cosmetic-answer-border: rgba(255, 255, 255, 0.2); | |
| --cosmetic-answer-hover: rgba(233, 30, 140, 0.5); | |
| --cosmetic-title-gradient: none; | |
| } | |
| @theme { | |
| --color-navy: #0a0e27; | |
| --color-purple-deep: #1a1040; | |
| --color-dark: #0a0a1a; | |
| --color-magenta: #e91e8c; | |
| --color-gold: #ffc107; | |
| --color-cyan: #00d4ff; | |
| --color-card: rgba(255, 255, 255, 0.05); | |
| --color-card-border: rgba(255, 255, 255, 0.1); | |
| --font-display: "Inter", sans-serif; | |
| } | |
| /* --- Base body background --- */ | |
| body { | |
| background: | |
| radial-gradient(ellipse at 20% 50%, rgba(233, 30, 140, 0.15) 0%, transparent 50%), | |
| radial-gradient(ellipse at 80% 20%, rgba(0, 212, 255, 0.1) 0%, transparent 50%), | |
| radial-gradient(ellipse at 50% 100%, rgba(26, 16, 64, 0.8) 0%, transparent 60%), | |
| linear-gradient(135deg, var(--color-navy) 0%, var(--color-dark) 100%); | |
| background-attachment: fixed; | |
| color: white; | |
| min-height: 100vh; | |
| } | |
| /* --- Glass card --- */ | |
| .glass-card { | |
| background: rgba(26, 16, 64, 0.4); | |
| backdrop-filter: blur(24px); | |
| -webkit-backdrop-filter: blur(24px); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); | |
| border-radius: 1rem; | |
| } | |
| /* --- Glow utilities --- */ | |
| .glow-magenta { | |
| box-shadow: | |
| 0 0 20px rgba(233, 30, 140, 0.4), | |
| 0 0 40px rgba(233, 30, 140, 0.2); | |
| } | |
| .glow-gold { | |
| box-shadow: | |
| 0 0 20px rgba(255, 193, 7, 0.4), | |
| 0 0 40px rgba(255, 193, 7, 0.2); | |
| } | |
| .glow-cyan { | |
| box-shadow: | |
| 0 0 20px rgba(0, 212, 255, 0.4), | |
| 0 0 40px rgba(0, 212, 255, 0.2); | |
| } | |
| /* --- Shake animation (wrong answer feedback) --- */ | |
| @keyframes shake { | |
| 0%, 100% { transform: translateX(0); } | |
| 10%, 30%, 50%, 70%, 90% { transform: translateX(-4px); } | |
| 20%, 40%, 60%, 80% { transform: translateX(4px); } | |
| } | |
| .animate-shake { | |
| animation: shake 0.5s ease-in-out; | |
| } | |
| /* --- Fast pulse (1s cycle) --- */ | |
| .animate-pulse-fast { | |
| animation: pulse-fast 1s cubic-bezier(0.4, 0, 0.6, 1) infinite; | |
| } | |
| @keyframes pulse-fast { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.5; } | |
| } | |
| /* --- Starfield twinkle --- */ | |
| @keyframes twinkle { | |
| 0%, 100% { opacity: 0; } | |
| 50% { opacity: 1; } | |
| } | |
| .star { | |
| position: absolute; | |
| pointer-events: none; | |
| width: 2px; | |
| height: 2px; | |
| background: var(--cosmetic-star-color, white); | |
| border-radius: 50%; | |
| animation: twinkle var(--twinkle-duration, 3s) ease-in-out infinite; | |
| animation-delay: var(--twinkle-delay, 0s); | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .star { | |
| animation: none; | |
| opacity: 0.6; | |
| } | |
| } | |
| /* --- Rainbow star animation (prismatic_field cosmetic) --- */ | |
| @keyframes rainbow-star { | |
| 0% { background: hsl(0, 100%, 70%); } | |
| 16% { background: hsl(60, 100%, 70%); } | |
| 33% { background: hsl(120, 100%, 70%); } | |
| 50% { background: hsl(180, 100%, 70%); } | |
| 66% { background: hsl(240, 100%, 70%); } | |
| 83% { background: hsl(300, 100%, 70%); } | |
| 100% { background: hsl(360, 100%, 70%); } | |
| } | |
| .star-rainbow { | |
| animation: | |
| twinkle var(--twinkle-duration, 3s) ease-in-out infinite, | |
| rainbow-star 3s linear infinite; | |
| animation-delay: var(--twinkle-delay, 0s); | |
| } | |
| @keyframes shine-sweep { | |
| 0%, 100% { transform: translateX(-120%); } | |
| 50% { transform: translateX(120%); } | |
| } | |