@howssatoshi/quantumcss 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1117 @@
1
+ /*!
2
+ * QuantumCSS - Utility-First CSS Framework
3
+ * Advanced utility framework with modern CSS features
4
+ * Version: 1.0.0
5
+ * Features: Modern CSS, Container Queries, Logical Properties, Dark Mode, etc.
6
+ */
7
+
8
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');
9
+
10
+ /* CSS Custom Properties (Design Tokens) */
11
+ :root {
12
+ /* Colors */
13
+ --color-primary: #3b82f6;
14
+ --color-primary-50: #eff6ff;
15
+ --color-primary-100: #dbeafe;
16
+ --color-primary-200: #bfdbfe;
17
+ --color-primary-300: #93c5fd;
18
+ --color-primary-400: #60a5fa;
19
+ --color-primary-500: #3b82f6;
20
+ --color-primary-600: #2563eb;
21
+ --color-primary-700: #1d4ed8;
22
+ --color-primary-800: #1e40af;
23
+ --color-primary-900: #1e3a8a;
24
+
25
+ --color-secondary: #64748b;
26
+ --color-success: #10b981;
27
+ --color-warning: #f59e0b;
28
+ --color-error: #ef4444;
29
+ --color-neutral: #6b7280;
30
+
31
+ /* Typography */
32
+ --font-sans: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
33
+ --font-serif: Georgia, Cambria, serif;
34
+ --font-mono: 'SF Mono', Monaco, 'Cascadia Code', monospace;
35
+
36
+ /* Spacing Scale (4px base unit) */
37
+ --space-0: 0px;
38
+ --space-1: 0.25rem; /* 4px */
39
+ --space-2: 0.5rem; /* 8px */
40
+ --space-3: 0.75rem; /* 12px */
41
+ --space-4: 1rem; /* 16px */
42
+ --space-5: 1.25rem; /* 20px */
43
+ --space-6: 1.5rem; /* 24px */
44
+ --space-8: 2rem; /* 32px */
45
+ --space-10: 2.5rem; /* 40px */
46
+ --space-12: 3rem; /* 48px */
47
+ --space-16: 4rem; /* 64px */
48
+ --space-20: 5rem; /* 80px */
49
+ --space-24: 6rem; /* 96px */
50
+ --space-32: 8rem; /* 128px */
51
+
52
+ /* Border Radius */
53
+ --radius-none: 0px;
54
+ --radius-sm: 0.125rem;
55
+ --radius-md: 0.375rem;
56
+ --radius-lg: 0.5rem;
57
+ --radius-xl: 0.75rem;
58
+ --radius-2xl: 1rem;
59
+ --radius-3xl: 1.5rem;
60
+ --radius-full: 9999px;
61
+
62
+ /* Shadows */
63
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
64
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
65
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
66
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
67
+ --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
68
+
69
+ /* Animation */
70
+ --duration-75: 75ms;
71
+ --duration-100: 100ms;
72
+ --duration-150: 150ms;
73
+ --duration-200: 200ms;
74
+ --duration-300: 300ms;
75
+ --duration-500: 500ms;
76
+ --duration-700: 700ms;
77
+ --duration-1000: 1000ms;
78
+
79
+ --ease-linear: linear;
80
+ --ease-in: cubic-bezier(0.4, 0, 1, 1);
81
+ --ease-out: cubic-bezier(0, 0, 0.2, 1);
82
+ --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
83
+
84
+ /* --- Starlight Specific Tokens --- */
85
+ --color-starlight-blue: #00d4ff;
86
+ --color-starlight-peach: #ffb38a;
87
+ --color-starlight-orange: #ff7e5f;
88
+ --color-starlight-deep: #08081a;
89
+ --color-starlight-glow: rgba(0, 212, 255, 0.35);
90
+
91
+ /* Semantic Text Colors */
92
+ --text-primary: #f1f5f9;
93
+ --text-secondary: rgba(241, 245, 249, 0.7);
94
+ --text-muted: rgba(241, 245, 249, 0.45);
95
+
96
+ /* Light Mode Palette */
97
+ --light-bg: #f1f5f9;
98
+ --light-text: #1e293b;
99
+ --light-text-muted: #64748b;
100
+ --light-card-bg: #ffffff;
101
+ --light-card-border: rgba(0, 0, 0, 0.06);
102
+
103
+ /* Glassmorphism */
104
+ --glass-bg: rgba(255, 255, 255, 0.03);
105
+ --glass-border: rgba(255, 255, 255, 0.1);
106
+ --glass-blur: blur(16px);
107
+
108
+ /* Transitions */
109
+ --transition-fast: 150ms ease-in-out;
110
+ --transition-base: 250ms cubic-bezier(0.4, 0, 0.2, 1);
111
+ --transition-slow: 400ms ease-in-out;
112
+ }
113
+
114
+ /* Dark Mode */
115
+ @media (prefers-color-scheme: dark) {
116
+ :root {
117
+ --color-primary: #60a5fa;
118
+ --color-secondary: #94a3b8;
119
+ --color-neutral: #9ca3af;
120
+ }
121
+ }
122
+
123
+ /* Base Reset */
124
+ *, *::before, *::after {
125
+ box-sizing: border-box;
126
+ margin: 0;
127
+ padding: 0;
128
+ }
129
+
130
+ html {
131
+ line-height: 1.6;
132
+ -webkit-text-size-adjust: 100%;
133
+ font-family: 'Inter', system-ui, -apple-system, sans-serif;
134
+ font-size: 16px;
135
+ -webkit-font-smoothing: antialiased;
136
+ -moz-osx-font-smoothing: grayscale;
137
+ }
138
+
139
+ body {
140
+ line-height: inherit;
141
+ }
142
+
143
+ /* Layout Utilities */
144
+ .container {
145
+ width: 100%;
146
+ max-width: 1200px;
147
+ margin-left: auto;
148
+ margin-right: auto;
149
+ padding-left: var(--space-4);
150
+ padding-right: var(--space-4);
151
+ }
152
+
153
+ @container (min-width: 640px) {
154
+ .container {
155
+ max-width: 640px;
156
+ }
157
+ }
158
+
159
+ @container (min-width: 768px) {
160
+ .container {
161
+ max-width: 768px;
162
+ }
163
+ }
164
+
165
+ @container (min-width: 1024px) {
166
+ .container {
167
+ max-width: 1024px;
168
+ }
169
+ }
170
+
171
+ @container (min-width: 1280px) {
172
+ .container {
173
+ max-width: 1280px;
174
+ }
175
+ }
176
+
177
+ /* Display Utilities */
178
+ .block { display: block; }
179
+ .inline-block { display: inline-block; }
180
+ .inline { display: inline; }
181
+ .flex { display: flex; }
182
+ .inline-flex { display: inline-flex; }
183
+ .grid { display: grid; }
184
+ .inline-grid { display: inline-grid; }
185
+ .hidden { display: none; }
186
+
187
+ /* Flexbox Utilities */
188
+ .flex-row { flex-direction: row; }
189
+ .flex-row-reverse { flex-direction: row-reverse; }
190
+ .flex-col { flex-direction: column; }
191
+ .flex-col-reverse { flex-direction: column-reverse; }
192
+
193
+ .flex-wrap { flex-wrap: wrap; }
194
+ .flex-wrap-reverse { flex-wrap: wrap-reverse; }
195
+ .flex-nowrap { flex-wrap: nowrap; }
196
+
197
+ .items-start { align-items: flex-start; }
198
+ .items-end { align-items: flex-end; }
199
+ .items-center { align-items: center; }
200
+ .items-baseline { align-items: baseline; }
201
+ .items-stretch { align-items: stretch; }
202
+
203
+ .justify-start { justify-content: flex-start; }
204
+ .justify-end { justify-content: flex-end; }
205
+ .justify-center { justify-content: center; }
206
+ .justify-between { justify-content: space-between; }
207
+ .justify-around { justify-content: space-around; }
208
+ .justify-evenly { justify-content: space-evenly; }
209
+
210
+ .flex-1 { flex: 1 1 0%; }
211
+ .flex-auto { flex: 1 1 auto; }
212
+ .flex-initial { flex: 0 1 auto; }
213
+ .flex-none { flex: none; }
214
+
215
+ /* Grid Utilities */
216
+ .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
217
+ .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
218
+ .grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
219
+ .grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
220
+ .grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
221
+ .grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
222
+ .grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }
223
+
224
+ .gap-0 { gap: var(--space-0); }
225
+ .gap-1 { gap: var(--space-1); }
226
+ .gap-2 { gap: var(--space-2); }
227
+ .gap-3 { gap: var(--space-3); }
228
+ .gap-4 { gap: var(--space-4); }
229
+ .gap-5 { gap: var(--space-5); }
230
+ .gap-6 { gap: var(--space-6); }
231
+ .gap-8 { gap: var(--space-8); }
232
+
233
+ /* Spacing Utilities */
234
+ .m-0 { margin: var(--space-0); }
235
+ .m-1 { margin: var(--space-1); }
236
+ .m-2 { margin: var(--space-2); }
237
+ .m-3 { margin: var(--space-3); }
238
+ .m-4 { margin: var(--space-4); }
239
+ .m-5 { margin: var(--space-5); }
240
+ .m-6 { margin: var(--space-6); }
241
+ .m-8 { margin: var(--space-8); }
242
+ .m-auto { margin: auto; }
243
+
244
+ .mx-auto { margin-left: auto; margin-right: auto; }
245
+ .my-auto { margin-top: auto; margin-bottom: auto; }
246
+
247
+ .p-0 { padding: var(--space-0); }
248
+ .p-1 { padding: var(--space-1); }
249
+ .p-2 { padding: var(--space-2); }
250
+ .p-3 { padding: var(--space-3); }
251
+ .p-4 { padding: var(--space-4); }
252
+ .p-5 { padding: var(--space-5); }
253
+ .p-6 { padding: var(--space-6); }
254
+ .p-8 { padding: var(--space-8); }
255
+
256
+ /* Typography Utilities */
257
+ .text-xs { font-size: 0.75rem; line-height: 1rem; }
258
+ .text-sm { font-size: 0.875rem; line-height: 1.25rem; }
259
+ .text-base { font-size: 1rem; line-height: 1.5rem; }
260
+ .text-lg { font-size: 1.125rem; line-height: 1.75rem; }
261
+ .text-xl { font-size: 1.25rem; line-height: 1.75rem; }
262
+ .text-2xl { font-size: 1.5rem; line-height: 2rem; }
263
+ .text-3xl { font-size: 1.875rem; line-height: 2.25rem; }
264
+ .text-4xl { font-size: 2.25rem; line-height: 2.5rem; }
265
+ .text-5xl { font-size: 3rem; line-height: 1; }
266
+
267
+ .font-light { font-weight: 300; }
268
+ .font-normal { font-weight: 400; }
269
+ .font-medium { font-weight: 500; }
270
+ .font-semibold { font-weight: 600; }
271
+ .font-bold { font-weight: 700; }
272
+ .font-extrabold { font-weight: 800; }
273
+
274
+ .text-left { text-align: left; }
275
+ .text-center { text-align: center; }
276
+ .text-right { text-align: right; }
277
+ .text-justify { text-align: justify; }
278
+
279
+ /* Color Utilities */
280
+ .text-primary { color: var(--color-primary); }
281
+ .text-secondary { color: var(--color-secondary); }
282
+ .text-success { color: var(--color-success); }
283
+ .text-warning { color: var(--color-warning); }
284
+ .text-error { color: var(--color-error); }
285
+ .text-neutral { color: var(--color-neutral); }
286
+ .text-white { color: #ffffff; }
287
+ .text-black { color: #000000; }
288
+
289
+ .bg-primary { background-color: var(--color-primary); }
290
+ .bg-secondary { background-color: var(--color-secondary); }
291
+ .bg-success { background-color: var(--color-success); }
292
+ .bg-warning { background-color: var(--color-warning); }
293
+ .bg-error { background-color: var(--color-error); }
294
+ .bg-neutral { background-color: var(--color-neutral); }
295
+ .bg-white { background-color: #ffffff; }
296
+ .bg-black { background-color: #000000; }
297
+
298
+ /* Border Utilities */
299
+ .border-0 { border-width: 0px; }
300
+ .border { border-width: 1px; }
301
+ .border-2 { border-width: 2px; }
302
+ .border-4 { border-width: 4px; }
303
+
304
+ .border-solid { border-style: solid; }
305
+ .border-dashed { border-style: dashed; }
306
+ .border-dotted { border-style: dotted; }
307
+
308
+ .border-neutral { border-color: var(--color-neutral); }
309
+
310
+ .rounded-none { border-radius: var(--radius-none); }
311
+ .rounded-sm { border-radius: var(--radius-sm); }
312
+ .rounded-md { border-radius: var(--radius-md); }
313
+ .rounded-lg { border-radius: var(--radius-lg); }
314
+ .rounded-xl { border-radius: var(--radius-xl); }
315
+ .rounded-2xl { border-radius: var(--radius-2xl); }
316
+ .rounded-3xl { border-radius: var(--radius-3xl); }
317
+ .rounded-full { border-radius: var(--radius-full); }
318
+
319
+ /* Shadow Utilities */
320
+ .shadow-none { box-shadow: none; }
321
+ .shadow-sm { box-shadow: var(--shadow-sm); }
322
+ .shadow-md { box-shadow: var(--shadow-md); }
323
+ .shadow-lg { box-shadow: var(--shadow-lg); }
324
+ .shadow-xl { box-shadow: var(--shadow-xl); }
325
+ .shadow-2xl { box-shadow: var(--shadow-2xl); }
326
+
327
+ /* Position Utilities */
328
+ .static { position: static; }
329
+ .fixed { position: fixed; }
330
+ .absolute { position: absolute; }
331
+ .relative { position: relative; }
332
+ .sticky { position: sticky; }
333
+
334
+ .inset-0 { inset: 0px; }
335
+ .top-0 { top: 0px; }
336
+ .right-0 { right: 0px; }
337
+ .bottom-0 { bottom: 0px; }
338
+ .left-0 { left: 0px; }
339
+
340
+ /* Size Utilities */
341
+ .w-auto { width: auto; }
342
+ .w-full { width: 100%; }
343
+ .w-screen { width: 100vw; }
344
+ .w-fit { width: fit-content; }
345
+
346
+ .h-auto { height: auto; }
347
+ .h-full { height: 100%; }
348
+ .h-screen { height: 100vh; }
349
+ .h-fit { height: fit-content; }
350
+
351
+ /* Transition Utilities */
352
+ .transition-none {
353
+ transition-property: none;
354
+ }
355
+
356
+ .transition-all {
357
+ transition-property: all;
358
+ transition-timing-function: var(--ease-in-out);
359
+ transition-duration: var(--duration-150);
360
+ }
361
+
362
+ .transition-colors {
363
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
364
+ transition-timing-function: var(--ease-in-out);
365
+ transition-duration: var(--duration-150);
366
+ }
367
+
368
+ /* Transform Utilities */
369
+ .scale-95 { transform: scale(0.95); }
370
+ .scale-100 { transform: scale(1); }
371
+ .scale-105 { transform: scale(1.05); }
372
+ .scale-110 { transform: scale(1.1); }
373
+
374
+ .rotate-0 { transform: rotate(0deg); }
375
+ .rotate-45 { transform: rotate(45deg); }
376
+ .rotate-90 { transform: rotate(90deg); }
377
+ .rotate-180 { transform: rotate(180deg); }
378
+
379
+ /* Interactivity */
380
+ .cursor-pointer { cursor: pointer; }
381
+ .cursor-default { cursor: default; }
382
+ .cursor-not-allowed { cursor: not-allowed; }
383
+
384
+ .select-none { user-select: none; }
385
+ .select-text { user-select: text; }
386
+ .select-all { user-select: all; }
387
+
388
+ .pointer-events-none { pointer-events: none; }
389
+ .pointer-events-auto { pointer-events: auto; }
390
+
391
+ /* Accessibility */
392
+ .sr-only {
393
+ position: absolute;
394
+ width: 1px;
395
+ height: 1px;
396
+ padding: 0;
397
+ margin: -1px;
398
+ overflow: hidden;
399
+ clip: rect(0, 0, 0, 0);
400
+ white-space: nowrap;
401
+ border-width: 0;
402
+ }
403
+
404
+ .not-sr-only {
405
+ position: static;
406
+ width: auto;
407
+ height: auto;
408
+ padding: 0;
409
+ margin: 0;
410
+ overflow: visible;
411
+ clip: auto;
412
+ white-space: normal;
413
+ }
414
+
415
+ /* ====== QUANTUM CSS ENHANCEMENTS ====== */
416
+
417
+ /* Responsive Design System - Better Breakpoints */
418
+ @media (max-width: 639px) {
419
+ .q-sm\:block { display: block; }
420
+ .q-sm\:hidden { display: none; }
421
+ .q-sm\:text-center { text-align: center; }
422
+ .q-sm\:flex-col { flex-direction: column; }
423
+ }
424
+
425
+ @media (min-width: 640px) {
426
+ .q-md\:block { display: block; }
427
+ .q-md\:hidden { display: none; }
428
+ .q-md\:flex-row { flex-direction: row; }
429
+ }
430
+
431
+ @media (min-width: 768px) {
432
+ .q-lg\:block { display: block; }
433
+ .q-lg\:hidden { display: none; }
434
+ .q-lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
435
+ }
436
+
437
+ @media (min-width: 1024px) {
438
+ .q-xl\:block { display: block; }
439
+ .q-xl\:hidden { display: none; }
440
+ .q-xl\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
441
+ }
442
+
443
+ @media (min-width: 1280px) {
444
+ .q-2xl\:block { display: block; }
445
+ .q-2xl\:hidden { display: none; }
446
+ .q-2xl\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
447
+ }
448
+
449
+ /* Component Utilities - Semantic & Reusable */
450
+ .q-card {
451
+ background: white;
452
+ border-radius: var(--radius-lg);
453
+ box-shadow: var(--shadow-md);
454
+ padding: var(--space-6);
455
+ border: 1px solid var(--color-neutral);
456
+ transition: var(--duration-200) all var(--ease-in-out);
457
+ }
458
+
459
+ .q-card:hover {
460
+ box-shadow: var(--shadow-lg);
461
+ transform: translateY(-2px);
462
+ }
463
+
464
+ .q-btn {
465
+ display: inline-flex;
466
+ align-items: center;
467
+ justify-content: center;
468
+ gap: var(--space-2);
469
+ padding: var(--space-3) var(--space-6);
470
+ border-radius: var(--radius-md);
471
+ font-weight: 500;
472
+ font-size: 0.875rem;
473
+ line-height: 1.25rem;
474
+ transition: all var(--duration-150) var(--ease-in-out);
475
+ cursor: pointer;
476
+ border: none;
477
+ text-decoration: none;
478
+ position: relative;
479
+ overflow: hidden;
480
+ }
481
+
482
+ .q-btn:disabled {
483
+ opacity: 0.5;
484
+ cursor: not-allowed;
485
+ }
486
+
487
+ .q-btn-primary {
488
+ background-color: var(--color-primary);
489
+ color: white;
490
+ }
491
+
492
+ .q-btn-primary:hover:not(:disabled) {
493
+ background-color: var(--color-primary-600);
494
+ transform: translateY(-1px);
495
+ box-shadow: var(--shadow-md);
496
+ }
497
+
498
+ .q-btn-secondary {
499
+ background-color: var(--color-neutral);
500
+ color: white;
501
+ }
502
+
503
+ .q-btn-outline {
504
+ background-color: transparent;
505
+ border: 1px solid var(--color-primary);
506
+ color: var(--color-primary);
507
+ }
508
+
509
+ .q-btn-outline:hover:not(:disabled) {
510
+ background-color: var(--color-primary);
511
+ color: white;
512
+ }
513
+
514
+ .q-input {
515
+ display: block;
516
+ width: 100%;
517
+ padding: var(--space-3) var(--space-4);
518
+ border: 1px solid var(--color-neutral);
519
+ border-radius: var(--radius-md);
520
+ font-size: 0.875rem;
521
+ line-height: 1.25rem;
522
+ transition: all var(--duration-150) var(--ease-in-out);
523
+ background-color: white;
524
+ }
525
+
526
+ .q-input:focus {
527
+ outline: none;
528
+ border-color: var(--color-primary);
529
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
530
+ }
531
+
532
+ .q-input-error {
533
+ border-color: var(--color-error);
534
+ }
535
+
536
+ .q-input-error:focus {
537
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
538
+ }
539
+
540
+ .q-badge {
541
+ display: inline-flex;
542
+ align-items: center;
543
+ padding: var(--space-1) var(--space-3);
544
+ border-radius: var(--radius-full);
545
+ font-size: 0.75rem;
546
+ font-weight: 500;
547
+ text-transform: uppercase;
548
+ letter-spacing: 0.05em;
549
+ }
550
+
551
+ .q-badge-primary {
552
+ background-color: var(--color-primary-100);
553
+ color: var(--color-primary-800);
554
+ }
555
+
556
+ .q-badge-success {
557
+ background-color: #dcfce7;
558
+ color: #166534;
559
+ }
560
+
561
+ .q-badge-warning {
562
+ background-color: #fef3c7;
563
+ color: #92400e;
564
+ }
565
+
566
+ .q-badge-error {
567
+ background-color: #fee2e2;
568
+ color: #991b1b;
569
+ }
570
+
571
+ /* Advanced Layout Patterns */
572
+ .q-center {
573
+ display: flex;
574
+ align-items: center;
575
+ justify-content: center;
576
+ }
577
+
578
+ .q-stack {
579
+ display: flex;
580
+ flex-direction: column;
581
+ gap: var(--space-4);
582
+ }
583
+
584
+ .q-cluster {
585
+ display: flex;
586
+ flex-wrap: wrap;
587
+ gap: var(--space-4);
588
+ align-items: flex-start;
589
+ }
590
+
591
+ .q-switcher {
592
+ display: flex;
593
+ flex-wrap: wrap;
594
+ gap: var(--space-2);
595
+ }
596
+
597
+ .q-sidebar {
598
+ display: grid;
599
+ grid-template-columns: auto 1fr;
600
+ gap: var(--space-6);
601
+ }
602
+
603
+ .q-cover {
604
+ position: absolute;
605
+ inset: 0;
606
+ width: 100%;
607
+ height: 100%;
608
+ object-fit: cover;
609
+ }
610
+
611
+ .q-frame {
612
+ position: relative;
613
+ overflow: hidden;
614
+ }
615
+
616
+ /* Smart Spacing - Logical Properties */
617
+ .q-space-y > * + * {
618
+ margin-top: var(--space-4);
619
+ }
620
+
621
+ .q-space-y-2 > * + * {
622
+ margin-top: var(--space-2);
623
+ }
624
+
625
+ .q-space-y-6 > * + * {
626
+ margin-top: var(--space-6);
627
+ }
628
+
629
+ .q-space-x > * + * {
630
+ margin-left: var(--space-4);
631
+ }
632
+
633
+ .q-space-x-2 > * + * {
634
+ margin-left: var(--space-2);
635
+ }
636
+
637
+ .q-space-x-6 > * + * {
638
+ margin-left: var(--space-6);
639
+ }
640
+
641
+ /* Animation Utilities */
642
+ .q-animate-fade-in {
643
+ animation: fadeIn var(--duration-300) var(--ease-out);
644
+ }
645
+
646
+ .q-animate-slide-up {
647
+ animation: slideUp var(--duration-300) var(--ease-out);
648
+ }
649
+
650
+ .q-animate-slide-down {
651
+ animation: slideDown var(--duration-300) var(--ease-out);
652
+ }
653
+
654
+ .q-animate-scale-in {
655
+ animation: scaleIn var(--duration-200) var(--ease-out);
656
+ }
657
+
658
+ .q-animate-spin {
659
+ animation: spin 1s linear infinite;
660
+ }
661
+
662
+ .q-animate-ping {
663
+ animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
664
+ }
665
+
666
+ .q-animate-pulse {
667
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
668
+ }
669
+
670
+ .q-animate-bounce {
671
+ animation: bounce 1s infinite;
672
+ }
673
+
674
+ /* Keyframes */
675
+ @keyframes fadeIn {
676
+ from { opacity: 0; }
677
+ to { opacity: 1; }
678
+ }
679
+
680
+ @keyframes slideUp {
681
+ from { opacity: 0; transform: translateY(20px); }
682
+ to { opacity: 1; transform: translateY(0); }
683
+ }
684
+
685
+ @keyframes slideDown {
686
+ from { opacity: 0; transform: translateY(-20px); }
687
+ to { opacity: 1; transform: translateY(0); }
688
+ }
689
+
690
+ @keyframes scaleIn {
691
+ from { opacity: 0; transform: scale(0.95); }
692
+ to { opacity: 1; transform: scale(1); }
693
+ }
694
+
695
+ @keyframes spin {
696
+ from { transform: rotate(0deg); }
697
+ to { transform: rotate(360deg); }
698
+ }
699
+
700
+ @keyframes ping {
701
+ 75%, 100% {
702
+ transform: scale(2);
703
+ opacity: 0;
704
+ }
705
+ }
706
+
707
+ @keyframes pulse {
708
+ 0%, 100% { opacity: 1; }
709
+ 50% { opacity: 0.5; }
710
+ }
711
+
712
+ @keyframes bounce {
713
+ 0%, 100% {
714
+ transform: translateY(-25%);
715
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
716
+ }
717
+ 50% {
718
+ transform: none;
719
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
720
+ }
721
+ }
722
+
723
+ /* Interactive States */
724
+ .q-hover-lift:hover {
725
+ transform: translateY(-4px);
726
+ box-shadow: var(--shadow-lg);
727
+ }
728
+
729
+ .q-hover-scale:hover {
730
+ transform: scale(1.05);
731
+ }
732
+
733
+ .q-hover-rotate:hover {
734
+ transform: rotate(1deg);
735
+ }
736
+
737
+ .q-hover-glow:hover {
738
+ box-shadow: 0 0 20px rgba(59, 130, 246, 0.5);
739
+ }
740
+
741
+ .q-active:active {
742
+ transform: scale(0.98);
743
+ }
744
+
745
+ .q-focus-ring:focus {
746
+ outline: 2px solid var(--color-primary);
747
+ outline-offset: 2px;
748
+ }
749
+
750
+ /* Form States */
751
+ .q-required::after {
752
+ content: " *";
753
+ color: var(--color-error);
754
+ }
755
+
756
+ .q-disabled {
757
+ opacity: 0.5;
758
+ cursor: not-allowed;
759
+ pointer-events: none;
760
+ }
761
+
762
+ .q-loading {
763
+ position: relative;
764
+ overflow: hidden;
765
+ }
766
+
767
+ .q-loading::after {
768
+ content: "";
769
+ position: absolute;
770
+ top: 0;
771
+ left: -100%;
772
+ width: 100%;
773
+ height: 100%;
774
+ background: linear-gradient(
775
+ 90deg,
776
+ transparent,
777
+ rgba(255, 255, 255, 0.2),
778
+ transparent
779
+ );
780
+ animation: loading 1.5s infinite;
781
+ }
782
+
783
+ @keyframes loading {
784
+ to { left: 100%; }
785
+ }
786
+
787
+ /* Visual Feedback */
788
+ .q-success {
789
+ border-color: var(--color-success) !important;
790
+ box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.1) !important;
791
+ }
792
+
793
+ .q-warning {
794
+ border-color: var(--color-warning) !important;
795
+ box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1) !important;
796
+ }
797
+
798
+ .q-error {
799
+ border-color: var(--color-error) !important;
800
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1) !important;
801
+ }
802
+
803
+ .q-info {
804
+ border-color: var(--color-primary) !important;
805
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important;
806
+ }
807
+
808
+ /* Dark Mode Enhancements */
809
+ @media (prefers-color-scheme: dark) {
810
+ .q-card {
811
+ background-color: #1f2937;
812
+ border-color: #374151;
813
+ }
814
+
815
+ .q-input {
816
+ background-color: #1f2937;
817
+ border-color: #374151;
818
+ color: #f9fafb;
819
+ }
820
+
821
+ .q-dark\:text-white { color: #ffffff !important; }
822
+ .q-dark\:bg-gray-800 { background-color: #1f2937 !important; }
823
+ .q-dark\:bg-gray-900 { background-color: #111827 !important; }
824
+ .q-dark\:border-gray-700 { border-color: #374151 !important; }
825
+ }
826
+
827
+ /* Print Styles */
828
+ @media print {
829
+ .q-print-hidden {
830
+ display: none !important;
831
+ }
832
+
833
+ .q-print-block {
834
+ display: block !important;
835
+ }
836
+
837
+ .q-no-shadow {
838
+ box-shadow: none !important;
839
+ }
840
+
841
+ .q-black-text {
842
+ color: black !important;
843
+ }
844
+ }
845
+
846
+ /* Utility for Quick Prototyping */
847
+ .q-prose {
848
+ max-width: 65ch;
849
+ line-height: 1.75;
850
+ }
851
+
852
+ .q-prose h1 {
853
+ font-size: 2.25rem;
854
+ font-weight: 700;
855
+ line-height: 1.25;
856
+ margin-bottom: 1rem;
857
+ }
858
+
859
+ .q-prose h2 {
860
+ font-size: 1.875rem;
861
+ font-weight: 600;
862
+ line-height: 1.25;
863
+ margin-top: 2rem;
864
+ margin-bottom: 1rem;
865
+ }
866
+
867
+ .q-prose p {
868
+ margin-bottom: 1rem;
869
+ }
870
+
871
+ .q-prose a {
872
+ color: var(--color-primary);
873
+ text-decoration: underline;
874
+ }
875
+
876
+ .q-prose a:hover {
877
+ color: var(--color-primary-600);
878
+ }
879
+
880
+ /* Performance Optimizations */
881
+ .q-will-change-transform {
882
+ will-change: transform;
883
+ }
884
+
885
+ .q-will-change-opacity {
886
+ will-change: opacity;
887
+ }
888
+
889
+ .q-gpu-accelerated {
890
+ transform: translateZ(0);
891
+ backface-visibility: hidden;
892
+ perspective: 1000px;
893
+ }
894
+
895
+ /* Container Queries - Future Ready */
896
+ @container (min-width: 320px) {
897
+ .q-cq-sm\:flex { display: flex; }
898
+ }
899
+
900
+ @container (min-width: 640px) {
901
+ .q-cq-md\:grid { display: grid; }
902
+ }
903
+
904
+ @container (min-width: 1024px) {
905
+ .q-cq-lg\:block { display: block; }
906
+ }
907
+
908
+ /* Reduced Motion Support */
909
+ @media (prefers-reduced-motion: reduce) {
910
+ *,
911
+ *::before,
912
+ *::after {
913
+ animation-duration: 0.01ms !important;
914
+ animation-iteration-count: 1 !important;
915
+ transition-duration: 0.01ms !important;
916
+ scroll-behavior: auto !important;
917
+ }
918
+ }
919
+
920
+ /* High Contrast Mode Support */
921
+ @media (prefers-contrast: high) {
922
+ .q-card {
923
+ border-width: 2px;
924
+ }
925
+
926
+ .q-btn {
927
+ border: 2px solid;
928
+ }
929
+ }
930
+
931
+ /* Focus Visible Support */
932
+ .q-focus-visible:focus-visible {
933
+ outline: 2px solid var(--color-primary);
934
+ outline-offset: 2px;
935
+ }
936
+
937
+ /* Modern CSS Features */
938
+ .q-backdrop-blur-sm {
939
+ backdrop-filter: blur(4px);
940
+ }
941
+
942
+ .q-backdrop-blur {
943
+ backdrop-filter: blur(8px);
944
+ }
945
+
946
+ .q-backdrop-blur-md {
947
+ backdrop-filter: blur(12px);
948
+ }
949
+
950
+ .q-backdrop-blur-lg {
951
+ backdrop-filter: blur(16px);
952
+ }
953
+
954
+ .q-text-shadow-sm {
955
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
956
+ }
957
+
958
+ .q-text-shadow {
959
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
960
+ }
961
+
962
+ .q-text-shadow-lg {
963
+ text-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
964
+ }
965
+
966
+ /* Gradient Utilities */
967
+ .q-gradient-primary {
968
+ background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-600) 100%);
969
+ }
970
+
971
+ .q-gradient-secondary {
972
+ background: linear-gradient(135deg, var(--color-secondary) 0%, #475569 100%);
973
+ }
974
+
975
+ .q-gradient-radial {
976
+ background: radial-gradient(circle at center, var(--color-primary) 0%, var(--color-primary-600) 100%);
977
+ }
978
+
979
+ .q-gradient-text {
980
+ background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-600) 100%);
981
+ -webkit-background-clip: text;
982
+ -webkit-text-fill-color: transparent;
983
+ background-clip: text;
984
+ }
985
+
986
+ /* Scrollbar Styling */
987
+ .q-scrollbar-thin {
988
+ scrollbar-width: thin;
989
+ scrollbar-color: var(--color-neutral) transparent;
990
+ }
991
+
992
+ .q-scrollbar-thin::-webkit-scrollbar {
993
+ width: 6px;
994
+ }
995
+
996
+ .q-scrollbar-thin::-webkit-scrollbar-track {
997
+ background: transparent;
998
+ }
999
+
1000
+ .q-scrollbar-thin::-webkit-scrollbar-thumb {
1001
+ background-color: var(--color-neutral);
1002
+ border-radius: 3px;
1003
+ }
1004
+
1005
+ .q-scrollbar-none {
1006
+ -ms-overflow-style: none;
1007
+ scrollbar-width: none;
1008
+ }
1009
+
1010
+ .q-scrollbar-none::-webkit-scrollbar {
1011
+
1012
+ display: none;
1013
+
1014
+ }
1015
+
1016
+
1017
+
1018
+ /* --- Restored Core Styles --- */
1019
+
1020
+
1021
+
1022
+ /* Nebula Scrollbar */
1023
+
1024
+ ::-webkit-scrollbar { width: 8px; }
1025
+
1026
+ ::-webkit-scrollbar-track { background: var(--color-starlight-deep); }
1027
+
1028
+ body.light-mode ::-webkit-scrollbar-track { background: var(--light-bg); }
1029
+
1030
+
1031
+
1032
+ ::-webkit-scrollbar-thumb {
1033
+
1034
+ background: linear-gradient(to bottom, var(--color-starlight-peach), var(--color-starlight-blue));
1035
+
1036
+ border-radius: 10px;
1037
+
1038
+ border: 2px solid var(--color-starlight-deep);
1039
+
1040
+ }
1041
+
1042
+ body.light-mode ::-webkit-scrollbar-thumb { border-color: var(--light-bg); }
1043
+
1044
+
1045
+
1046
+ /* Starlight Focus Ring */
1047
+
1048
+ :focus-visible {
1049
+
1050
+ outline: none;
1051
+
1052
+ box-shadow: 0 0 0 2px var(--color-starlight-deep), 0 0 0 4px var(--color-starlight-blue);
1053
+
1054
+ transition: box-shadow var(--transition-fast);
1055
+
1056
+ }
1057
+
1058
+
1059
+
1060
+ body.light-mode :focus-visible {
1061
+
1062
+ box-shadow: 0 0 0 2px var(--light-bg), 0 0 0 4px var(--color-starlight-blue);
1063
+
1064
+ }
1065
+
1066
+
1067
+
1068
+ /* Body defaults */
1069
+
1070
+
1071
+
1072
+ body {
1073
+
1074
+
1075
+
1076
+ margin: 0;
1077
+
1078
+
1079
+
1080
+ min-height: 100vh;
1081
+
1082
+
1083
+
1084
+ background-color: var(--color-starlight-deep);
1085
+
1086
+
1087
+
1088
+ color: var(--text-primary);
1089
+
1090
+
1091
+
1092
+ transition: background-color var(--transition-slow), color var(--transition-slow);
1093
+
1094
+
1095
+
1096
+ }
1097
+
1098
+
1099
+
1100
+
1101
+
1102
+
1103
+
1104
+ body.light-mode {
1105
+ background-color: var(--light-bg);
1106
+ color: var(--light-text);
1107
+ --text-primary: var(--light-text);
1108
+ --text-secondary: var(--light-text-muted);
1109
+ --text-muted: var(--light-text-muted);
1110
+ }
1111
+
1112
+ /* Tactile Active State for all interactive elements */
1113
+ button:active,
1114
+ input:active,
1115
+ .active-scale:active {
1116
+ transform: scale(0.96);
1117
+ }