Public: anyone can read this; the crew can change it.
feat: Add Tokyo Drift theme with neon teal and pink colorway #18
Check · Review · Land · Live — Its check is red.
claude/tokyo-drift-theme-011CUURupeVH4iJSZpWZj7aJ → main 2 commits
A guest
This pull comes from a guest: its preview runs without the app's variables or a forge token until a person who can write here approves it.
This pull waits for a person who can write here to review it; it never lands on its own.
2 files
changed +108
−42
src/app/globals.css +105 −40
| @@ -1,39 +1,56 @@ | ||
| 1 | 1 | @tailwind base; |
| 2 | 2 | @tailwind components; |
| 3 | 3 | @tailwind utilities; |
| 4 | ||
| 4 | ||
| 5 | 5 | @layer base { |
| 6 | 6 | :root { |
| 7 | : 222.2 84% 4.9%; | |
| 8 | : 210 40% 98%; | |
| 9 | ||
| 10 | : 222.2 84% 4.9%; | |
| 11 | : 210 40% 98%; | |
| 12 | ||
| 13 | : 222.2 84% 4.9%; | |
| 14 | : 210 40% 98%; | |
| 15 | ||
| 16 | : 217.2 91.2% 59.8%; | |
| 17 | : 222.2 47.4% 11.2%; | |
| 18 | ||
| 19 | : 217.2 32.6% 17.5%; | |
| 20 | : 210 40% 98%; | |
| 21 | ||
| 22 | : 217.2 32.6% 17.5%; | |
| 23 | : 215 20.2% 65.1%; | |
| 24 | ||
| 25 | : 217.2 32.6% 17.5%; | |
| 26 | : 210 40% 98%; | |
| 27 | ||
| 28 | : 0 62.8% 30.6%; | |
| 29 | : 210 40% 98%; | |
| 30 | ||
| 31 | : 217.2 32.6% 17.5%; | |
| 32 | : 217.2 32.6% 17.5%; | |
| 33 | : 224.3 76.3% 48%; | |
| 7 | /* Tokyo Drift Theme - Rainy Night Vibes */ | |
| 8 | /* Dark, moody with strategic orange, cyan, and purple pops */ | |
| 9 | ||
| 10 | : 265 35% 4%; | |
| 11 | : 200 15% 92%; | |
| 12 | ||
| 13 | : 265 30% 7%; | |
| 14 | : 200 15% 92%; | |
| 15 | ||
| 16 | : 265 30% 7%; | |
| 17 | : 200 15% 92%; | |
| 18 | ||
| 19 | /* Primary: Iconic Tokyo Drift Orange - street lights, RX-7 */ | |
| 20 | : 12 83% 58%; | |
| 21 | : 0 0% 100%; | |
| 22 | ||
| 23 | /* Secondary: Cool cyan - neon signs, wet reflections */ | |
| 24 | : 189 81% 40%; | |
| 25 | : 0 0% 100%; | |
| 26 | ||
| 27 | /* Muted: Darker versions */ | |
| 28 | : 265 25% 15%; | |
| 29 | : 189 15% 65%; | |
| 30 | ||
| 31 | /* Accent: Deep purple - neon depth */ | |
| 32 | : 269 73% 35%; | |
| 33 | : 0 0% 100%; | |
| 34 | ||
| 35 | : 0 85% 55%; | |
| 36 | : 0 0% 100%; | |
| 37 | ||
| 38 | /* Borders: Dark with cyan tint */ | |
| 39 | : 189 40% 20%; | |
| 40 | : 265 30% 10%; | |
| 41 | ||
| 42 | /* Ring: Orange glow for focus states */ | |
| 43 | : 12 83% 58%; | |
| 44 | ||
| 45 | /* Chart colors: Mix of orange, cyan, purple */ | |
| 46 | : 12 83% 58%; | |
| 47 | : 189 81% 40%; | |
| 48 | : 269 73% 45%; | |
| 49 | : 340 75% 55%; | |
| 50 | : 189 60% 55%; | |
| 34 | 51 | } |
| 35 | 52 | } |
| 36 | ||
| 53 | ||
| 37 | 54 | @layer base { |
| 38 | 55 | * { |
| 39 | 56 | @apply border-border; |
| @@ -43,18 +60,28 @@ | ||
| 43 | 60 | } |
| 44 | 61 | } |
| 45 | 62 | |
| 46 | /* Custom styles */ | |
| 63 | /* Tokyo Drift Custom Styles - Rainy Night Edition */ | |
| 47 | 64 | body { |
| 48 | background: linear-gradient(to bottom, #000000, #001f3f); | |
| 65 | /* Deep black to dark purple gradient - wet asphalt at night */ | |
| 66 | background: linear-gradient(to bottom, #000000, #0d0a1f, #1a0f2e); | |
| 49 | 67 | min-height: 100vh; |
| 50 | 68 | } |
| 51 | 69 | |
| 70 | /* Orange street light glow */ | |
| 52 | 71 | .text-glow { |
| 53 | text-shadow: 0 0 10px rgba(59, 130, 246, 0.5); | |
| 72 | text-shadow: | |
| 73 | 0 0 20px rgba(236, 95, 59, 0.5), | |
| 74 | 0 0 40px rgba(236, 95, 59, 0.3), | |
| 75 | 0 0 60px rgba(236, 95, 59, 0.2); | |
| 54 | 76 | } |
| 55 | 77 | |
| 78 | /* Multi-colored neon border - orange, cyan, purple layers */ | |
| 56 | 79 | .neon-border { |
| 57 | box-shadow: 0 0 10px rgba(59, 130, 246, 0.5), inset 0 0 10px rgba(59, 130, 246, 0.5); | |
| 80 | box-shadow: | |
| 81 | 0 0 5px rgba(236, 95, 59, 0.4), | |
| 82 | 0 0 10px rgba(20, 157, 186, 0.3), | |
| 83 | 0 0 15px rgba(61, 17, 107, 0.2), | |
| 84 | inset 0 0 8px rgba(236, 95, 59, 0.2); | |
| 58 | 85 | } |
| 59 | 86 | |
| 60 | 87 | @keyframes pulse { |
| @@ -62,7 +89,7 @@ body { | ||
| 62 | 89 | opacity: 1; |
| 63 | 90 | } |
| 64 | 91 | 50% { |
| 65 | opacity: 0.5; | |
| 92 | opacity: 0.6; | |
| 66 | 93 | } |
| 67 | 94 | } |
| 68 | 95 | |
| @@ -86,18 +113,56 @@ body { | ||
| 86 | 113 | animation: float 6s ease-in-out infinite; |
| 87 | 114 | } |
| 88 | 115 | |
| 116 | /* Updated glow animation with Tokyo Drift colors */ | |
| 89 | 117 | @keyframes glow { |
| 90 | 118 | 0% { |
| 91 | box-shadow: 0 0 5px rgba(59, 130, 246, 0.5); | |
| 119 | box-shadow: | |
| 120 | 0 0 5px rgba(236, 95, 59, 0.4), | |
| 121 | 0 0 10px rgba(20, 157, 186, 0.3), | |
| 122 | 0 0 15px rgba(61, 17, 107, 0.2); | |
| 92 | 123 | } |
| 93 | 50% { | |
| 94 | box-shadow: 0 0 20px rgba(59, 130, 246, 0.8); | |
| 124 | 33% { | |
| 125 | box-shadow: | |
| 126 | 0 0 10px rgba(236, 95, 59, 0.6), | |
| 127 | 0 0 20px rgba(20, 157, 186, 0.4), | |
| 128 | 0 0 30px rgba(61, 17, 107, 0.3); | |
| 129 | } | |
| 130 | 66% { | |
| 131 | box-shadow: | |
| 132 | 0 0 8px rgba(20, 157, 186, 0.5), | |
| 133 | 0 0 15px rgba(236, 95, 59, 0.4), | |
| 134 | 0 0 25px rgba(61, 17, 107, 0.3); | |
| 95 | 135 | } |
| 96 | 136 | 100% { |
| 97 | box-shadow: 0 0 5px rgba(59, 130, 246, 0.5); | |
| 137 | box-shadow: | |
| 138 | 0 0 5px rgba(236, 95, 59, 0.4), | |
| 139 | 0 0 10px rgba(20, 157, 186, 0.3), | |
| 140 | 0 0 15px rgba(61, 17, 107, 0.2); | |
| 98 | 141 | } |
| 99 | 142 | } |
| 100 | 143 | |
| 101 | 144 | .animate-glow { |
| 102 | animation: glow 3s ease-in-out infinite; | |
| 103 | }↵ | |
| 145 | animation: glow 4s ease-in-out infinite; | |
| 146 | } | |
| 147 | ||
| 148 | /* Additional Tokyo Drift specific effects */ | |
| 149 | .tokyo-glow-orange { | |
| 150 | box-shadow: | |
| 151 | 0 0 10px rgba(236, 95, 59, 0.6), | |
| 152 | 0 0 20px rgba(236, 95, 59, 0.4), | |
| 153 | 0 0 30px rgba(236, 95, 59, 0.2); | |
| 154 | } | |
| 155 | ||
| 156 | .tokyo-glow-cyan { | |
| 157 | box-shadow: | |
| 158 | 0 0 10px rgba(20, 157, 186, 0.6), | |
| 159 | 0 0 20px rgba(20, 157, 186, 0.4), | |
| 160 | 0 0 30px rgba(20, 157, 186, 0.2); | |
| 161 | } | |
| 162 | ||
| 163 | .tokyo-glow-purple { | |
| 164 | box-shadow: | |
| 165 | 0 0 10px rgba(61, 17, 107, 0.6), | |
| 166 | 0 0 20px rgba(61, 17, 107, 0.4), | |
| 167 | 0 0 30px rgba(61, 17, 107, 0.2); | |
| 168 | } |
src/components/SpaceBackground.tsx +3 −2
| @@ -40,7 +40,8 @@ export const SpaceBackground: React.FC<{ children: React.ReactNode }> = ({ child | ||
| 40 | 40 | |
| 41 | 41 | function createExplosion(x: number, y: number) { |
| 42 | 42 | const particleCount = 50 |
| 43 | const colors = ['#ffffff', '#ffc0cb', '#e6e6fa', '#dda0dd', '#ff69b4', '#da70d6', '#8a2be2', '#9370db', '#7b68ee', '#4b0082'] | |
| 43 | // Tokyo Drift colors: orange (RX-7), cyan (neon), purple (neon depth), white (headlights) | |
| 44 | const colors = ['#ec5f3b', '#ff8c5a', '#149dba', '#3eb8d4', '#3d116b', '#6a2aa1', '#ffffff', '#ffa500', '#00c5ff'] | |
| 44 | 45 | for (let i = 0; i < particleCount; i++) { |
| 45 | 46 | particles.push({ |
| 46 | 47 | x, |
| @@ -125,7 +126,7 @@ export const SpaceBackground: React.FC<{ children: React.ReactNode }> = ({ child | ||
| 125 | 126 | }, []) |
| 126 | 127 | |
| 127 | 128 | return ( |
| 128 | <div className="relative min-h-screen overflow-hidden bg-gradient-to-b from-black to-blue-900"> | |
| 129 | <div className="relative min-h-screen overflow-hidden bg-gradient-to-b from-black via-purple-950/20 to-purple-950/40"> | |
| 129 | 130 | <canvas |
| 130 | 131 | ref={canvasRef} |
| 131 | 132 | className="absolute inset-0 w-full h-full" |