Add animation keyframes for grid and shimmer effects, implement mouse position tracking for dynamic background, and create direct download API for video/audio files. Update types for download requests and responses.

This commit is contained in:
2025-12-21 21:18:08 -06:00
parent ce199be67b
commit 4fa44751f7
6 changed files with 200 additions and 3 deletions

View File

@@ -145,6 +145,18 @@
}
}
@keyframes grid-wave {
0% {
transform: perspective(100vh) rotateX(60deg) translateY(0) scale(2);
}
50% {
transform: perspective(120vh) rotateX(50deg) translateY(-2%) scale(2.2);
}
100% {
transform: perspective(100vh) rotateX(60deg) translateY(0) scale(2);
}
}
@keyframes slide-up {
from {
opacity: 0;
@@ -165,6 +177,15 @@
}
}
@keyframes shimmer-text-sweep {
0% {
background-position: -200% 0;
}
100% {
background-position: 200% 0;
}
}
@layer base {
* {
@apply border-border outline-ring/50;
@@ -190,6 +211,24 @@
animation: pulse-glow 8s ease-in-out infinite;
}
/* Retro-futuristic flexible grid */
.background-grid {
position: fixed;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
z-index: -2;
background-image:
linear-gradient(to right, oklch(1 0 0 / 0.03) 1px, transparent 1px),
linear-gradient(to bottom, oklch(1 0 0 / 0.03) 1px, transparent 1px);
background-size: 60px 60px;
transform-origin: 50% 50%;
animation: grid-wave 20s ease-in-out infinite both alternate;
mask-image: radial-gradient(circle at center, black 0%, transparent 70%);
pointer-events: none;
}
/* Floating orbs */
.floating-orb {
position: absolute;
@@ -246,6 +285,7 @@
/* Gradient text */
.gradient-text {
position: relative;
background: linear-gradient(135deg,
oklch(0.85 0.18 280) 0%,
oklch(0.75 0.22 300) 50%,
@@ -257,6 +297,30 @@
color: transparent;
animation: gradient-shift 6s ease infinite;
}
.gradient-text::after {
content: attr(data-text);
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 2;
background: linear-gradient(
110deg,
transparent 35%,
oklch(1 0 0 / 0.3) 45%,
oklch(1 0 0 / 0.7) 50%,
oklch(1 0 0 / 0.3) 55%,
transparent 65%
);
background-size: 200% 100%;
-webkit-background-clip: text;
background-clip: text;
color: transparent;
animation: shimmer-text-sweep 4s linear infinite;
pointer-events: none;
}
/* Shimmer effect for loading */
.shimmer {