anky2002 commited on
Commit
ad3ee72
·
verified ·
1 Parent(s): a5602bd

fix: 🔧 Complete dark mode fix + contrast improvements + 2026 neo-brutalism upgrades (colored shadows, better tokens)

Browse files
Files changed (1) hide show
  1. frontend/src/app/globals.css +184 -107
frontend/src/app/globals.css CHANGED
@@ -1,140 +1,164 @@
1
  @import "tailwindcss";
2
- @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Syne:wght@400;500;600;700;800&display=swap');
3
 
4
- @custom-variant dark (&:is(.dark *));
 
5
 
 
6
  @theme inline {
7
- /* ====== NEO-BRUTALISM DESIGN SYSTEM ====== */
8
-
9
  /* Typography */
10
  --font-display: 'Syne', sans-serif;
11
  --font-body: 'Space Grotesk', sans-serif;
12
- --font-mono: 'JetBrains Mono', monospace;
13
-
14
- /* Core palette — Electric + Playful */
15
- --color-main: #FFE14D;
16
- --color-main-foreground: #000000;
17
- --color-secondary: #FF6B6B;
18
- --color-secondary-foreground: #000000;
19
- --color-accent: #A8FF3E;
20
- --color-accent-foreground: #000000;
21
- --color-tertiary: #88AAEE;
22
- --color-tertiary-foreground: #000000;
23
- --color-pop: #FF90E8;
24
- --color-pop-foreground: #000000;
25
-
26
  /* Surfaces */
27
- --color-background: #FDF8EE;
28
- --color-foreground: #0A0A0A;
29
  --color-card: #FFFFFF;
30
- --color-card-foreground: #0A0A0A;
31
- --color-muted: #F5F0E8;
32
  --color-muted-foreground: #4A4A4A;
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
  /* System */
35
  --color-border: #000000;
36
  --color-input: #FFFFFF;
37
  --color-ring: #000000;
38
- --color-destructive: #FF3B30;
39
- --color-success: #34C759;
40
- --color-warning: #FFCC00;
41
 
42
- /* Primary = Main */
43
- --color-primary: #FFE14D;
44
- --color-primary-foreground: #000000;
45
-
46
- /* Neo-brutalism shadows */
47
  --shadow-neo-xs: 2px 2px 0px 0px #000000;
48
  --shadow-neo-sm: 3px 3px 0px 0px #000000;
49
  --shadow-neo: 4px 4px 0px 0px #000000;
50
  --shadow-neo-md: 5px 5px 0px 0px #000000;
51
  --shadow-neo-lg: 6px 6px 0px 0px #000000;
52
  --shadow-neo-xl: 8px 8px 0px 0px #000000;
 
 
 
 
 
 
53
 
54
- /* Border */
55
  --radius: 0px;
56
  --radius-sm: 0px;
57
- --radius-md: 0px;
58
- --radius-lg: 0px;
59
  }
60
 
61
- /* Dark mode — white borders on dark, neon accents */
62
- .dark {
63
- --color-background: #1A1A1A;
64
- --color-foreground: #F5F5F5;
65
- --color-card: #2D2D2D;
66
- --color-card-foreground: #F5F5F5;
67
- --color-muted: #333333;
68
- --color-muted-foreground: #AAAAAA;
 
69
  --color-border: #FFFFFF;
70
  --color-ring: #FFFFFF;
71
- --color-input: #2D2D2D;
 
72
  --shadow-neo-xs: 2px 2px 0px 0px #FFFFFF;
73
  --shadow-neo-sm: 3px 3px 0px 0px #FFFFFF;
74
  --shadow-neo: 4px 4px 0px 0px #FFFFFF;
75
  --shadow-neo-md: 5px 5px 0px 0px #FFFFFF;
76
  --shadow-neo-lg: 6px 6px 0px 0px #FFFFFF;
77
  --shadow-neo-xl: 8px 8px 0px 0px #FFFFFF;
 
 
 
 
 
 
 
 
 
 
78
  }
79
 
 
80
  @layer base {
81
  * {
82
- @apply border-border;
83
  }
84
 
85
  body {
86
- @apply bg-background text-foreground antialiased;
 
87
  font-family: var(--font-body);
 
 
88
  }
89
 
90
  h1, h2, h3, h4, h5, h6 {
91
  font-family: var(--font-display);
92
  font-weight: 800;
93
- letter-spacing: -0.02em;
94
- line-height: 0.95;
95
  }
96
 
97
- /* Neo-brutalism base styles */
98
  input, textarea, select {
99
- @apply border-2 border-black bg-white px-4 py-3 font-medium;
 
 
 
 
 
100
  border-radius: 0;
101
  box-shadow: var(--shadow-neo-xs);
102
  transition: box-shadow 0.15s ease, transform 0.15s ease;
103
  }
104
-
105
  input:focus, textarea:focus, select:focus {
106
  outline: none;
107
  transform: translate(-1px, -1px);
108
  box-shadow: var(--shadow-neo-sm);
109
  }
 
 
 
 
110
  }
111
 
 
112
  @layer utilities {
113
- /* Neo-brutalism utility classes */
114
- .neo-border {
115
- border: 2px solid #000;
116
- }
117
- .neo-border-thick {
118
- border: 3px solid #000;
119
- }
120
- .neo-shadow {
121
- box-shadow: var(--shadow-neo);
122
- }
123
- .neo-shadow-sm {
124
- box-shadow: var(--shadow-neo-sm);
125
- }
126
- .neo-shadow-lg {
127
- box-shadow: var(--shadow-neo-lg);
128
- }
129
- .neo-shadow-xl {
130
- box-shadow: var(--shadow-neo-xl);
131
- }
132
 
133
- /* Interactive neo elements */
 
 
 
 
 
 
134
  .neo-interactive {
135
- border: 2px solid #000;
136
  box-shadow: var(--shadow-neo);
137
- transition: transform 0.15s ease, box-shadow 0.15s ease;
138
  cursor: pointer;
139
  }
140
  .neo-interactive:hover {
@@ -142,42 +166,38 @@
142
  box-shadow: var(--shadow-neo-lg);
143
  }
144
  .neo-interactive:active {
145
- transform: translate(2px, 2px);
146
- box-shadow: 0px 0px 0px 0px #000;
147
  }
148
 
149
- /* Neo card */
150
  .neo-card {
151
- border: 2px solid #000;
152
  box-shadow: var(--shadow-neo-md);
153
- background: white;
154
- transition: transform 0.2s ease, box-shadow 0.2s ease;
 
155
  }
156
  .neo-card:hover {
157
  transform: translate(-3px, -3px);
158
  box-shadow: var(--shadow-neo-xl);
159
  }
160
-
161
- /* Neo badge */
162
- .neo-badge {
163
- border: 2px solid #000;
164
- font-weight: 700;
165
- font-size: 0.75rem;
166
- padding: 2px 10px;
167
- text-transform: uppercase;
168
- letter-spacing: 0.05em;
169
- }
170
-
171
- /* Neo button base */
172
  .neo-btn {
173
- border: 2px solid #000;
174
  box-shadow: var(--shadow-neo);
175
  font-weight: 700;
 
176
  text-transform: uppercase;
177
- letter-spacing: 0.05em;
178
- padding: 12px 24px;
179
- transition: transform 0.15s ease, box-shadow 0.15s ease;
180
  cursor: pointer;
 
 
 
 
181
  }
182
  .neo-btn:hover {
183
  transform: translate(-2px, -2px);
@@ -185,10 +205,49 @@
185
  }
186
  .neo-btn:active {
187
  transform: translate(3px, 3px);
188
- box-shadow: 0 0 0 0 #000;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
  }
190
 
191
- /* Marquee animation */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192
  @keyframes marquee {
193
  0% { transform: translateX(0%); }
194
  100% { transform: translateX(-50%); }
@@ -197,16 +256,16 @@
197
  animation: marquee 25s linear infinite;
198
  }
199
 
200
- /* Floating animation */
201
  @keyframes float {
202
  0%, 100% { transform: translateY(0px); }
203
- 50% { transform: translateY(-10px); }
204
  }
205
  .animate-float {
206
  animation: float 3s ease-in-out infinite;
207
  }
208
 
209
- /* Wiggle */
210
  @keyframes wiggle {
211
  0%, 100% { transform: rotate(0deg); }
212
  25% { transform: rotate(-2deg); }
@@ -215,23 +274,41 @@
215
  .hover\:animate-wiggle:hover {
216
  animation: wiggle 0.3s ease-in-out;
217
  }
218
- }
219
 
220
- /* Scrollbar styling */
221
- ::-webkit-scrollbar {
222
- width: 12px;
 
223
  }
 
 
 
224
  ::-webkit-scrollbar-track {
225
  background: var(--color-muted);
226
- border-left: 2px solid #000;
227
  }
228
  ::-webkit-scrollbar-thumb {
229
- background: var(--color-main);
230
- border: 2px solid #000;
 
 
 
231
  }
232
 
233
- /* Selection */
234
  ::selection {
235
- background: var(--color-main);
236
  color: #000;
237
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  @import "tailwindcss";
2
+ @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Syne:wght@400;500;600;700;800&family=Space+Mono:wght@400;700&display=swap');
3
 
4
+ /* ===== DARK MODE FIX: Use @variant (not @custom-variant) ===== */
5
+ @variant dark (&:where(.dark, .dark *));
6
 
7
+ /* ===== BASE THEME TOKENS (Light Mode) ===== */
8
  @theme inline {
 
 
9
  /* Typography */
10
  --font-display: 'Syne', sans-serif;
11
  --font-body: 'Space Grotesk', sans-serif;
12
+ --font-mono: 'Space Mono', monospace;
13
+
 
 
 
 
 
 
 
 
 
 
 
 
14
  /* Surfaces */
15
+ --color-background: #FAFAF8;
16
+ --color-foreground: #0D0D0D;
17
  --color-card: #FFFFFF;
18
+ --color-card-foreground: #0D0D0D;
19
+ --color-muted: #F0EDE6;
20
  --color-muted-foreground: #4A4A4A;
21
+
22
+ /* Neo-Brut Accent Colors (all AA accessible with black text) */
23
+ --color-primary: #FFD000;
24
+ --color-primary-foreground: #000000;
25
+ --color-secondary: #E63946;
26
+ --color-secondary-foreground: #FFFFFF;
27
+ --color-accent: #C0FF00;
28
+ --color-accent-foreground: #000000;
29
+ --color-tertiary: #4ECDC4;
30
+ --color-tertiary-foreground: #000000;
31
+ --color-pop: #6C5CE7;
32
+ --color-pop-foreground: #FFFFFF;
33
 
34
  /* System */
35
  --color-border: #000000;
36
  --color-input: #FFFFFF;
37
  --color-ring: #000000;
38
+ --color-destructive: #E63946;
39
+ --color-success: #00B37E;
40
+ --color-warning: #FFB347;
41
 
42
+ /* Shadows — default black offset */
 
 
 
 
43
  --shadow-neo-xs: 2px 2px 0px 0px #000000;
44
  --shadow-neo-sm: 3px 3px 0px 0px #000000;
45
  --shadow-neo: 4px 4px 0px 0px #000000;
46
  --shadow-neo-md: 5px 5px 0px 0px #000000;
47
  --shadow-neo-lg: 6px 6px 0px 0px #000000;
48
  --shadow-neo-xl: 8px 8px 0px 0px #000000;
49
+
50
+ /* 2026: Colored shadows */
51
+ --shadow-neo-primary: 4px 4px 0px 0px #FFD000;
52
+ --shadow-neo-secondary: 4px 4px 0px 0px #E63946;
53
+ --shadow-neo-accent: 4px 4px 0px 0px #C0FF00;
54
+ --shadow-neo-tertiary: 4px 4px 0px 0px #4ECDC4;
55
 
56
+ /* Radius: flat brutalism */
57
  --radius: 0px;
58
  --radius-sm: 0px;
59
+ --radius-md: 2px;
60
+ --radius-lg: 4px;
61
  }
62
 
63
+ /* ===== DARK MODE OVERRIDES — Plain CSS (NOT inside @theme) ===== */
64
+ html.dark {
65
+ --color-background: #0F0F0F;
66
+ --color-foreground: #FAFAF8;
67
+ --color-card: #1A1A1A;
68
+ --color-card-foreground: #FAFAF8;
69
+ --color-muted: #252525;
70
+ --color-muted-foreground: #B0B0B0;
71
+ --color-input: #1A1A1A;
72
  --color-border: #FFFFFF;
73
  --color-ring: #FFFFFF;
74
+
75
+ /* Shadows flip to WHITE in dark mode */
76
  --shadow-neo-xs: 2px 2px 0px 0px #FFFFFF;
77
  --shadow-neo-sm: 3px 3px 0px 0px #FFFFFF;
78
  --shadow-neo: 4px 4px 0px 0px #FFFFFF;
79
  --shadow-neo-md: 5px 5px 0px 0px #FFFFFF;
80
  --shadow-neo-lg: 6px 6px 0px 0px #FFFFFF;
81
  --shadow-neo-xl: 8px 8px 0px 0px #FFFFFF;
82
+
83
+ /* Colored shadows — brighter in dark */
84
+ --shadow-neo-primary: 4px 4px 0px 0px #FFD000;
85
+ --shadow-neo-secondary: 4px 4px 0px 0px #FF6B6B;
86
+ --shadow-neo-accent: 4px 4px 0px 0px #C0FF00;
87
+ --shadow-neo-tertiary: 4px 4px 0px 0px #00FFDD;
88
+
89
+ /* Accent colors get neon boost in dark */
90
+ --color-tertiary: #00FFDD;
91
+ --color-accent: #C0FF00;
92
  }
93
 
94
+ /* ===== BASE STYLES ===== */
95
  @layer base {
96
  * {
97
+ border-color: var(--color-border);
98
  }
99
 
100
  body {
101
+ background-color: var(--color-background);
102
+ color: var(--color-foreground);
103
  font-family: var(--font-body);
104
+ -webkit-font-smoothing: antialiased;
105
+ -moz-osx-font-smoothing: grayscale;
106
  }
107
 
108
  h1, h2, h3, h4, h5, h6 {
109
  font-family: var(--font-display);
110
  font-weight: 800;
111
+ letter-spacing: -0.03em;
112
+ line-height: 0.92;
113
  }
114
 
115
+ /* Inputs — thick border, no radius, shadow on focus */
116
  input, textarea, select {
117
+ border: 2px solid var(--color-border);
118
+ background: var(--color-input);
119
+ color: var(--color-foreground);
120
+ padding: 0.75rem 1rem;
121
+ font-weight: 500;
122
+ font-family: var(--font-body);
123
  border-radius: 0;
124
  box-shadow: var(--shadow-neo-xs);
125
  transition: box-shadow 0.15s ease, transform 0.15s ease;
126
  }
 
127
  input:focus, textarea:focus, select:focus {
128
  outline: none;
129
  transform: translate(-1px, -1px);
130
  box-shadow: var(--shadow-neo-sm);
131
  }
132
+ input::placeholder, textarea::placeholder {
133
+ color: var(--color-muted-foreground);
134
+ opacity: 0.7;
135
+ }
136
  }
137
 
138
+ /* ===== NEO-BRUTALISM UTILITIES ===== */
139
  @layer utilities {
140
+ /* Borders */
141
+ .neo-border { border: 2px solid var(--color-border); }
142
+ .neo-border-thick { border: 3px solid var(--color-border); }
143
+ .neo-border-heavy { border: 4px solid var(--color-border); }
144
+
145
+ /* Shadows */
146
+ .neo-shadow { box-shadow: var(--shadow-neo); }
147
+ .neo-shadow-sm { box-shadow: var(--shadow-neo-sm); }
148
+ .neo-shadow-lg { box-shadow: var(--shadow-neo-lg); }
149
+ .neo-shadow-xl { box-shadow: var(--shadow-neo-xl); }
 
 
 
 
 
 
 
 
 
150
 
151
+ /* 2026: Colored shadows */
152
+ .neo-shadow-primary { box-shadow: var(--shadow-neo-primary); }
153
+ .neo-shadow-secondary { box-shadow: var(--shadow-neo-secondary); }
154
+ .neo-shadow-accent { box-shadow: var(--shadow-neo-accent); }
155
+ .neo-shadow-tertiary { box-shadow: var(--shadow-neo-tertiary); }
156
+
157
+ /* Interactive: The signature neo-brutalism button behavior */
158
  .neo-interactive {
159
+ border: 2px solid var(--color-border);
160
  box-shadow: var(--shadow-neo);
161
+ transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.15s cubic-bezier(0.4, 0, 0.2, 1);
162
  cursor: pointer;
163
  }
164
  .neo-interactive:hover {
 
166
  box-shadow: var(--shadow-neo-lg);
167
  }
168
  .neo-interactive:active {
169
+ transform: translate(3px, 3px);
170
+ box-shadow: 0px 0px 0px 0px var(--color-border);
171
  }
172
 
173
+ /* Card */
174
  .neo-card {
175
+ border: 2px solid var(--color-border);
176
  box-shadow: var(--shadow-neo-md);
177
+ background: var(--color-card);
178
+ color: var(--color-card-foreground);
179
+ transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1);
180
  }
181
  .neo-card:hover {
182
  transform: translate(-3px, -3px);
183
  box-shadow: var(--shadow-neo-xl);
184
  }
185
+
186
+ /* Button */
 
 
 
 
 
 
 
 
 
 
187
  .neo-btn {
188
+ border: 2px solid var(--color-border);
189
  box-shadow: var(--shadow-neo);
190
  font-weight: 700;
191
+ font-family: var(--font-body);
192
  text-transform: uppercase;
193
+ letter-spacing: 0.04em;
194
+ padding: 0.75rem 1.5rem;
195
+ transition: transform 0.12s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.12s cubic-bezier(0.4, 0, 0.2, 1);
196
  cursor: pointer;
197
+ display: inline-flex;
198
+ align-items: center;
199
+ justify-content: center;
200
+ gap: 0.5rem;
201
  }
202
  .neo-btn:hover {
203
  transform: translate(-2px, -2px);
 
205
  }
206
  .neo-btn:active {
207
  transform: translate(3px, 3px);
208
+ box-shadow: 0 0 0 0 var(--color-border);
209
+ }
210
+ .neo-btn:disabled {
211
+ opacity: 0.5;
212
+ cursor: not-allowed;
213
+ transform: none;
214
+ box-shadow: var(--shadow-neo-xs);
215
+ }
216
+
217
+ /* Badge */
218
+ .neo-badge {
219
+ border: 2px solid var(--color-border);
220
+ font-weight: 700;
221
+ font-size: 0.7rem;
222
+ padding: 3px 10px;
223
+ text-transform: uppercase;
224
+ letter-spacing: 0.06em;
225
+ display: inline-flex;
226
+ align-items: center;
227
+ gap: 4px;
228
  }
229
 
230
+ /* 2026: Outlined mega text */
231
+ .neo-outline-text {
232
+ color: transparent;
233
+ -webkit-text-stroke: 2px var(--color-border);
234
+ font-family: var(--font-display);
235
+ font-weight: 800;
236
+ }
237
+
238
+ /* 2026: Terminal/retro header */
239
+ .neo-terminal {
240
+ font-family: var(--font-mono);
241
+ font-size: 0.75rem;
242
+ letter-spacing: 0.1em;
243
+ text-transform: uppercase;
244
+ padding: 0.4rem 0.8rem;
245
+ background: var(--color-foreground);
246
+ color: var(--color-accent);
247
+ border: 2px solid var(--color-border);
248
+ }
249
+
250
+ /* Marquee */
251
  @keyframes marquee {
252
  0% { transform: translateX(0%); }
253
  100% { transform: translateX(-50%); }
 
256
  animation: marquee 25s linear infinite;
257
  }
258
 
259
+ /* Float */
260
  @keyframes float {
261
  0%, 100% { transform: translateY(0px); }
262
+ 50% { transform: translateY(-8px); }
263
  }
264
  .animate-float {
265
  animation: float 3s ease-in-out infinite;
266
  }
267
 
268
+ /* Wiggle on hover */
269
  @keyframes wiggle {
270
  0%, 100% { transform: rotate(0deg); }
271
  25% { transform: rotate(-2deg); }
 
274
  .hover\:animate-wiggle:hover {
275
  animation: wiggle 0.3s ease-in-out;
276
  }
 
277
 
278
+ /* 2026: Slight card rotation for collage effect */
279
+ .neo-tilt-1 { transform: rotate(-0.8deg); }
280
+ .neo-tilt-2 { transform: rotate(0.6deg); }
281
+ .neo-tilt-3 { transform: rotate(-0.4deg); }
282
  }
283
+
284
+ /* ===== SCROLLBAR ===== */
285
+ ::-webkit-scrollbar { width: 10px; }
286
  ::-webkit-scrollbar-track {
287
  background: var(--color-muted);
288
+ border-left: 2px solid var(--color-border);
289
  }
290
  ::-webkit-scrollbar-thumb {
291
+ background: var(--color-primary);
292
+ border: 2px solid var(--color-border);
293
+ }
294
+ ::-webkit-scrollbar-thumb:hover {
295
+ background: var(--color-secondary);
296
  }
297
 
298
+ /* ===== SELECTION ===== */
299
  ::selection {
300
+ background: var(--color-primary);
301
  color: #000;
302
  }
303
+
304
+ /* ===== DARK MODE specific overrides ===== */
305
+ html.dark ::-webkit-scrollbar-track {
306
+ border-left-color: #FFFFFF;
307
+ }
308
+ html.dark ::-webkit-scrollbar-thumb {
309
+ border-color: #FFFFFF;
310
+ }
311
+ html.dark input, html.dark textarea, html.dark select {
312
+ border-color: #FFFFFF;
313
+ box-shadow: var(--shadow-neo-xs);
314
+ }