|
1 | 1 | :root { |
| 2 | + /* Tells the browser to render native widgets (date picker icon, scrollbars, etc.) |
| 3 | + with light chrome, regardless of the OS-level light/dark preference. Themes with |
| 4 | + a dark surface override this to "dark" below so those icons stay visible. */ |
| 5 | + color-scheme: light; |
| 6 | + |
2 | 7 | /* Surface (overridden per theme) */ |
3 | 8 | --white: #ffffff; |
4 | 9 |
|
|
159 | 164 |
|
160 | 165 | /* ── Dark theme ────────────────────────────────────────────── */ |
161 | 166 | [data-theme="dark"] { |
| 167 | + color-scheme: dark; |
| 168 | + |
162 | 169 | --white: #1E293B; |
163 | 170 |
|
164 | 171 | --color-primary: #60A5FA; |
|
200 | 207 | --focus-ring-color: rgba(96, 165, 250, 0.25); |
201 | 208 | --primary-bg-hover: rgba(96, 165, 250, 0.1); |
202 | 209 | } |
| 210 | + |
| 211 | +/* ── Cyberpunk theme (High-Contrast Tech) ─────────────────────── */ |
| 212 | +[data-theme="cyberpunk"] { |
| 213 | + color-scheme: dark; |
| 214 | + |
| 215 | + --white: #1F2937; |
| 216 | + |
| 217 | + --color-primary: #06B6D4; |
| 218 | + --color-primary-dark: #0891B2; |
| 219 | + --color-primary-light: #67E8F9; |
| 220 | + |
| 221 | + /* Secondary/highlight accent (electric violet); components fall back to primary if unset */ |
| 222 | + --color-secondary: #8B5CF6; |
| 223 | + |
| 224 | + --color-success: #34D399; |
| 225 | + --color-success-light: rgba(52, 211, 153, 0.15); |
| 226 | + |
| 227 | + --color-error: #F43F5E; |
| 228 | + --color-error-light: rgba(244, 63, 94, 0.15); |
| 229 | + |
| 230 | + --color-warning: #FBBF24; |
| 231 | + --color-warning-light: rgba(251, 191, 36, 0.15); |
| 232 | + |
| 233 | + --color-danger: #F43F5E; |
| 234 | + --color-income: #34D399; |
| 235 | + --color-expense: #F43F5E; |
| 236 | + |
| 237 | + /* Inverted slate scale anchored to Deep Midnight Blue / Crisp Off-White */ |
| 238 | + --gray-50: #0B0F19; |
| 239 | + --gray-100: #1F2937; |
| 240 | + --gray-200: #2D3748; |
| 241 | + --gray-300: #3F4B5E; |
| 242 | + --gray-400: #64748B; |
| 243 | + --gray-500: #94A3B8; |
| 244 | + --gray-600: #C4CDD5; |
| 245 | + --gray-700: #D8DEE4; |
| 246 | + --gray-800: #ECEFF2; |
| 247 | + --gray-900: #F9FAFB; |
| 248 | + |
| 249 | + /* Neon-tinted shadows for a subtle glow on modals and hovered cards */ |
| 250 | + --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.5); |
| 251 | + --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.6), 0 1px 2px 0 rgba(0, 0, 0, 0.5); |
| 252 | + --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.6), 0 2px 4px -1px rgba(0, 0, 0, 0.5); |
| 253 | + --shadow-lg: 0 10px 15px -3px rgba(6, 182, 212, 0.15), 0 4px 6px -2px rgba(0, 0, 0, 0.5); |
| 254 | + --shadow-2xl: 0 25px 50px -12px rgba(6, 182, 212, 0.25), 0 0 40px -5px rgba(139, 92, 246, 0.15); |
| 255 | + |
| 256 | + --focus-ring-color: rgba(6, 182, 212, 0.35); |
| 257 | + --primary-bg-hover: rgba(6, 182, 212, 0.1); |
| 258 | +} |
| 259 | + |
| 260 | +/* ── Neo-Brutalist theme (Playful & Confident) ────────────────── */ |
| 261 | +[data-theme="brutalist"] { |
| 262 | + --white: #FFFFFF; |
| 263 | + |
| 264 | + --color-primary: #ADFF00; |
| 265 | + --color-primary-dark: #8FD400; |
| 266 | + --color-primary-light: #D4FF66; |
| 267 | + |
| 268 | + /* Contrast accent (hot magenta); components fall back to primary if unset */ |
| 269 | + --color-secondary: #FF007A; |
| 270 | + |
| 271 | + --color-success: #16A34A; |
| 272 | + --color-success-light: #BBF7D0; |
| 273 | + |
| 274 | + --color-error: #FF007A; |
| 275 | + --color-error-light: #FFD6EA; |
| 276 | + |
| 277 | + --color-warning: #FFDE4D; |
| 278 | + --color-warning-light: #FFF6D1; |
| 279 | + |
| 280 | + --color-danger: #FF007A; |
| 281 | + --color-income: #16A34A; |
| 282 | + --color-expense: #FF007A; |
| 283 | + |
| 284 | + /* Warm ochre-to-black scale anchored to the Pale Ochre canvas and Ink Black text */ |
| 285 | + --gray-50: #FDF8E2; |
| 286 | + --gray-100: #F3EEDA; |
| 287 | + --gray-200: #E8DFC0; |
| 288 | + --gray-300: #D4C89A; |
| 289 | + --gray-400: #A89B6E; |
| 290 | + --gray-500: #6B6347; |
| 291 | + --gray-600: #4A4430; |
| 292 | + --gray-700: #2E2A1D; |
| 293 | + --gray-800: #16140D; |
| 294 | + --gray-900: #000000; |
| 295 | + |
| 296 | + /* Hard-edged, no-blur offset shadows and square corners for the brutalist look */ |
| 297 | + --radius-sm: 0; |
| 298 | + --radius-base: 0; |
| 299 | + --radius-md: 0; |
| 300 | + --radius-lg: 0; |
| 301 | + --radius-xl: 0; |
| 302 | + |
| 303 | + --shadow-sm: 2px 2px 0 0 #000000; |
| 304 | + --shadow-base: 3px 3px 0 0 #000000; |
| 305 | + --shadow-md: 4px 4px 0 0 #000000; |
| 306 | + --shadow-lg: 6px 6px 0 0 #000000; |
| 307 | + --shadow-2xl: 8px 8px 0 0 #000000; |
| 308 | + |
| 309 | + --focus-ring-color: rgba(0, 0, 0, 0.5); |
| 310 | + --primary-bg-hover: rgba(173, 255, 0, 0.15); |
| 311 | +} |
| 312 | + |
| 313 | +/* ── Nordic Minimalist theme (Clean & Professional) ───────────── */ |
| 314 | +[data-theme="nordic"] { |
| 315 | + --white: #FFFFFF; |
| 316 | + |
| 317 | + --color-primary: #4F46E5; |
| 318 | + --color-primary-dark: #4338CA; |
| 319 | + --color-primary-light: #818CF8; |
| 320 | + |
| 321 | + /* Secondary brand nuance (deep forest green); components fall back to primary if unset */ |
| 322 | + --color-secondary: #14532D; |
| 323 | + |
| 324 | + --color-success: #14532D; |
| 325 | + --color-success-light: #DCFCE7; |
| 326 | + |
| 327 | + --color-error: #DC2626; |
| 328 | + --color-error-light: #FEE2E2; |
| 329 | + |
| 330 | + --color-warning: #FB923C; |
| 331 | + --color-warning-light: #FFEDD5; |
| 332 | + |
| 333 | + --color-danger: #DC2626; |
| 334 | + --color-income: #14532D; |
| 335 | + --color-expense: #DC2626; |
| 336 | + |
| 337 | + --gray-50: #F8F9FA; |
| 338 | + --gray-100: #F1F3F5; |
| 339 | + --gray-200: #E9ECEF; |
| 340 | + --gray-300: #DEE2E6; |
| 341 | + --gray-400: #ADB5BD; |
| 342 | + --gray-500: #868E96; |
| 343 | + --gray-600: #495057; |
| 344 | + --gray-700: #343A40; |
| 345 | + --gray-800: #212529; |
| 346 | + --gray-900: #1F2937; |
| 347 | + |
| 348 | + --focus-ring-color: rgba(79, 70, 229, 0.2); |
| 349 | + --primary-bg-hover: rgba(79, 70, 229, 0.05); |
| 350 | +} |
0 commit comments