diff --git a/frontend/src/components/ParticleBackground.tsx b/frontend/src/components/ParticleBackground.tsx
new file mode 100644
index 0000000..c06ca09
--- /dev/null
+++ b/frontend/src/components/ParticleBackground.tsx
@@ -0,0 +1,108 @@
+import { useMemo } from 'react';
+
+// Generate random box-shadow particles
+function generateParticles(count: number, spacing: number, color: string): string {
+ const shadows: string[] = [];
+ for (let i = 0; i < count; i++) {
+ const x = Math.floor(Math.random() * spacing);
+ const y = Math.floor(Math.random() * spacing);
+ shadows.push(`${x}px ${y}px ${color}`);
+ }
+ return shadows.join(', ');
+}
+
+interface ParticleLayerProps {
+ count: number;
+ size: number;
+ duration: number;
+ color: string;
+ spacing: number;
+}
+
+function ParticleLayer({ count, size, duration, color, spacing }: ParticleLayerProps) {
+ const boxShadow = useMemo(() => generateParticles(count, spacing, color), [count, spacing, color]);
+ const boxShadowAfter = useMemo(() => generateParticles(Math.floor(count * 0.8), spacing, color), [count, spacing, color]);
+
+ return (
+
+ );
+}
+
+export default function ParticleBackground() {
+ const spacing = 2000;
+
+ return (
+
+
+
+ {/* Multiple layers with different speeds for depth effect */}
+
+
+
+
+ );
+}