astralkit 0.2.0 → 0.3.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.
- package/CHANGELOG.md +37 -0
- package/ai-rules.md +481 -100
- package/astralkit-theme-v4.css +612 -0
- package/astralkit-theme.css +272 -32
- package/astralkit-utilities.css +516 -540
- package/lib/utils.js +23 -1
- package/package.json +23 -4
- package/palettes.css +299 -0
- package/primitives/accounts.css +435 -0
- package/primitives/animations.css +136 -0
- package/primitives/avatar.css +410 -0
- package/primitives/badges.css +231 -0
- package/primitives/effects.css +388 -0
- package/primitives/focus.css +25 -0
- package/primitives/forms.css +2155 -0
- package/primitives/icons.css +90 -0
- package/primitives/layout.css +217 -0
- package/primitives/mobile.css +557 -0
- package/primitives/navigation.css +1057 -0
- package/primitives/sidebar.css +1819 -0
- package/primitives/typography.css +324 -0
- package/tailwind.cjs +416 -0
- package/tailwind.js +491 -0
package/astralkit-theme.css
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
:root {
|
|
2
2
|
/* ══════════════════════════════════════════════════════════
|
|
3
|
-
AstralKit Design Tokens
|
|
3
|
+
AstralKit Design Tokens — Tailwind v3 (LEGACY)
|
|
4
|
+
|
|
5
|
+
Imported via `astralkit/theme-v3`. For new projects on
|
|
6
|
+
Tailwind v4, use `astralkit/theme` (which resolves to the
|
|
7
|
+
@theme-based v4 file). This file uses :root CSS variables
|
|
8
|
+
because Tailwind v3 doesn't support the @theme directive.
|
|
9
|
+
|
|
4
10
|
Default: Black & white neutral theme.
|
|
5
|
-
Override any variable in your
|
|
11
|
+
Override any variable in your own :root block to brand it.
|
|
6
12
|
══════════════════════════════════════════════════════════ */
|
|
7
13
|
|
|
8
14
|
/* ── Neutral scale (full 11-shade ramp) ── */
|
|
@@ -63,12 +69,12 @@
|
|
|
63
69
|
--color-ak-text-disabled: #d4d4d4;
|
|
64
70
|
--color-ak-text-inverse: #ffffff;
|
|
65
71
|
--color-ak-text-link: #000000;
|
|
66
|
-
--color-ak-text-placeholder:#
|
|
72
|
+
--color-ak-text-placeholder:#525252;
|
|
67
73
|
|
|
68
74
|
/* ── Semantic border ── */
|
|
69
|
-
--color-ak-border: #
|
|
70
|
-
--color-ak-border-subtle: #
|
|
71
|
-
--color-ak-border-strong: #
|
|
75
|
+
--color-ak-border: #dee2e6;
|
|
76
|
+
--color-ak-border-subtle: #e5e5e5;
|
|
77
|
+
--color-ak-border-strong: #525252;
|
|
72
78
|
--color-ak-border-focus: #000000;
|
|
73
79
|
|
|
74
80
|
/* ── Status colors ── */
|
|
@@ -83,6 +89,8 @@
|
|
|
83
89
|
--color-ak-danger-text: #b91c1c;
|
|
84
90
|
--color-ak-info: #2563eb;
|
|
85
91
|
--color-ak-info-subtle: #eff6ff;
|
|
92
|
+
--color-ak-pink: #db2777;
|
|
93
|
+
--color-ak-pink-subtle: #fdf2f8;
|
|
86
94
|
--color-ak-info-text: #1d4ed8;
|
|
87
95
|
|
|
88
96
|
/* ── Font families ── */
|
|
@@ -98,8 +106,8 @@
|
|
|
98
106
|
--text-ak-lg: 1.125rem;
|
|
99
107
|
--text-ak-xl: 1.25rem;
|
|
100
108
|
--text-ak-2xl: 1.5rem;
|
|
101
|
-
--text-ak-3xl:
|
|
102
|
-
--text-ak-4xl: 2.
|
|
109
|
+
--text-ak-3xl: 2rem;
|
|
110
|
+
--text-ak-4xl: 2.5rem;
|
|
103
111
|
--text-ak-5xl: 3rem;
|
|
104
112
|
--text-ak-6xl: 3.75rem;
|
|
105
113
|
--text-ak-7xl: 4.5rem;
|
|
@@ -151,13 +159,16 @@
|
|
|
151
159
|
--leading-ak-snug: 1.375;
|
|
152
160
|
--leading-ak-normal: 1.5;
|
|
153
161
|
--leading-ak-relaxed: 1.625;
|
|
162
|
+
--leading-ak-prose: 1.75;
|
|
154
163
|
--leading-ak-loose: 2;
|
|
155
164
|
|
|
156
165
|
/* ── Letter Spacing ── */
|
|
157
166
|
--tracking-ak-tighter: -0.05em;
|
|
158
167
|
--tracking-ak-tight: -0.025em;
|
|
168
|
+
--tracking-ak-subtle: -0.01em;
|
|
159
169
|
--tracking-ak-normal: 0em;
|
|
160
170
|
--tracking-ak-wide: 0.025em;
|
|
171
|
+
--tracking-ak-section: 0.08em;
|
|
161
172
|
--tracking-ak-wider: 0.05em;
|
|
162
173
|
--tracking-ak-widest: 0.1em;
|
|
163
174
|
|
|
@@ -178,8 +189,11 @@
|
|
|
178
189
|
--spacing-ak-6: 3rem;
|
|
179
190
|
--spacing-ak-7: 3.5rem;
|
|
180
191
|
--spacing-ak-8: 4rem;
|
|
192
|
+
--spacing-ak-9: 4.5rem;
|
|
181
193
|
--spacing-ak-10: 5rem;
|
|
194
|
+
--spacing-ak-11: 5.5rem;
|
|
182
195
|
--spacing-ak-12: 6rem;
|
|
196
|
+
--spacing-ak-14: 7rem;
|
|
183
197
|
--spacing-ak-16: 8rem;
|
|
184
198
|
--spacing-ak-20: 10rem;
|
|
185
199
|
--spacing-ak-24: 12rem;
|
|
@@ -206,6 +220,14 @@
|
|
|
206
220
|
--height-ak-control-lg: 3rem; /* 48px — prominent CTAs */
|
|
207
221
|
--height-ak-control-xl: 3.5rem; /* 56px — hero CTAs */
|
|
208
222
|
|
|
223
|
+
/* ── Table row heights ── */
|
|
224
|
+
--height-ak-row-compact: 2.5rem; /* 40px */
|
|
225
|
+
--height-ak-row-default: 3rem; /* 48px */
|
|
226
|
+
--height-ak-row-comfortable: 3.25rem; /* 52px */
|
|
227
|
+
|
|
228
|
+
/* ── Fluid page margin (16px mobile → 80px desktop) ── */
|
|
229
|
+
--spacing-ak-fl-page-margin: clamp(1rem, 0.26rem + 3.7vw, 5rem);
|
|
230
|
+
|
|
209
231
|
/* ── Fluid spacing (viewport: 320px → 1400px) ──
|
|
210
232
|
Scales smoothly. Use p-ak-fl-*, gap-ak-fl-*, m-ak-fl-*, etc.
|
|
211
233
|
Named sizes (xs → 3xl) for intuitive selection. ── */
|
|
@@ -232,6 +254,7 @@
|
|
|
232
254
|
--spacing-ak-fl-xl-3xl: clamp(3rem, 0.57rem + 8.33vw, 9rem);
|
|
233
255
|
|
|
234
256
|
/* ── Border Radius ── */
|
|
257
|
+
--radius-ak-xs: 0.125rem;
|
|
235
258
|
--radius-ak-none: 0;
|
|
236
259
|
--radius-ak-sm: 0.25rem;
|
|
237
260
|
--radius-ak-md: 0.5rem;
|
|
@@ -249,6 +272,25 @@
|
|
|
249
272
|
--shadow-ak-xl: 0 16px 50px rgba(0,0,0,0.1), 0 8px 16px rgba(0,0,0,0.05);
|
|
250
273
|
--shadow-ak-2xl: 0 24px 60px rgba(0,0,0,0.14);
|
|
251
274
|
|
|
275
|
+
/* ── Neobrutalist ──
|
|
276
|
+
B&W brutalism toolkit. The core rule: face color is NEVER the same
|
|
277
|
+
as shadow/ink color. This prevents "invisible shadow" bugs where a
|
|
278
|
+
black button on a black shadow disappears. */
|
|
279
|
+
--color-ak-brutal-ink: #000000;
|
|
280
|
+
--color-ak-brutal-face: #ffffff;
|
|
281
|
+
--color-ak-brutal-face-dark: #262626;
|
|
282
|
+
--color-ak-brutal-on-face: #000000;
|
|
283
|
+
--color-ak-brutal-on-face-dark: #ffffff;
|
|
284
|
+
--shadow-ak-brutal-xs: 2px 2px 0 0 var(--color-ak-brutal-ink);
|
|
285
|
+
--shadow-ak-brutal-sm: 3px 3px 0 0 var(--color-ak-brutal-ink);
|
|
286
|
+
--shadow-ak-brutal: 4px 4px 0 0 var(--color-ak-brutal-ink);
|
|
287
|
+
--shadow-ak-brutal-lg: 6px 6px 0 0 var(--color-ak-brutal-ink);
|
|
288
|
+
--shadow-ak-brutal-xl: 8px 8px 0 0 var(--color-ak-brutal-ink);
|
|
289
|
+
--border-ak-brutal: 2px;
|
|
290
|
+
--border-ak-brutal-lg: 3px;
|
|
291
|
+
--radius-ak-brutal: 0.5rem;
|
|
292
|
+
--radius-ak-brutal-sm: 0.25rem;
|
|
293
|
+
|
|
252
294
|
/* ── Component sizes ──
|
|
253
295
|
--size-* namespace → size-* utility (sets both width AND height).
|
|
254
296
|
Use: size-ak-icon-lg, size-ak-avatar-md, etc. ── */
|
|
@@ -262,7 +304,11 @@
|
|
|
262
304
|
--size-ak-icon-2xl: 2rem;
|
|
263
305
|
--size-ak-icon-3xl: 3rem;
|
|
264
306
|
|
|
307
|
+
/* Panel width (sidebar flyout panels) */
|
|
308
|
+
--size-ak-panel-width: 260px;
|
|
309
|
+
|
|
265
310
|
/* Avatars */
|
|
311
|
+
--size-ak-avatar-xs: 1.5rem;
|
|
266
312
|
--size-ak-avatar-sm: 2rem;
|
|
267
313
|
--size-ak-avatar-md: 2.5rem;
|
|
268
314
|
--size-ak-avatar-lg: 3rem;
|
|
@@ -271,6 +317,7 @@
|
|
|
271
317
|
--size-ak-avatar-3xl: 8rem;
|
|
272
318
|
|
|
273
319
|
/* Avatar initials font size */
|
|
320
|
+
--text-ak-avatar-xs: 0.625rem;
|
|
274
321
|
--text-ak-avatar-sm: 0.6875rem;
|
|
275
322
|
--text-ak-avatar-md: 0.8125rem;
|
|
276
323
|
--text-ak-avatar-lg: 1rem;
|
|
@@ -279,25 +326,29 @@
|
|
|
279
326
|
--text-ak-avatar-3xl: 2.25rem;
|
|
280
327
|
|
|
281
328
|
/* Status dots */
|
|
329
|
+
/* Status dots scale with avatar; smaller avatars keep a more
|
|
330
|
+
subtle indicator, larger avatars match count-badge weight.
|
|
331
|
+
Target ~28-35% of avatar size for a refined "hero" ratio. */
|
|
282
332
|
--size-ak-status-md: 12px;
|
|
283
333
|
--size-ak-status-lg: 14px;
|
|
284
|
-
--size-ak-status-xl:
|
|
285
|
-
--size-ak-status-2xl:
|
|
286
|
-
--size-ak-status-3xl:
|
|
334
|
+
--size-ak-status-xl: 20px;
|
|
335
|
+
--size-ak-status-2xl: 28px;
|
|
336
|
+
--size-ak-status-3xl: 36px;
|
|
287
337
|
|
|
288
|
-
/* Badges (count/notification)
|
|
338
|
+
/* Badges (count/notification) — must accommodate 1-2 digit counts
|
|
339
|
+
while keeping the circle shape. Min-width is applied via CSS. */
|
|
289
340
|
--size-ak-badge-md: 18px;
|
|
290
341
|
--size-ak-badge-lg: 20px;
|
|
291
|
-
--size-ak-badge-xl:
|
|
292
|
-
--size-ak-badge-2xl:
|
|
293
|
-
--size-ak-badge-3xl:
|
|
342
|
+
--size-ak-badge-xl: 24px;
|
|
343
|
+
--size-ak-badge-2xl: 32px;
|
|
344
|
+
--size-ak-badge-3xl: 40px;
|
|
294
345
|
|
|
295
346
|
/* Badge border widths */
|
|
296
347
|
--size-ak-badge-border-md: 2px;
|
|
297
348
|
--size-ak-badge-border-lg: 2px;
|
|
298
|
-
--size-ak-badge-border-xl:
|
|
299
|
-
--size-ak-badge-border-2xl:
|
|
300
|
-
--size-ak-badge-border-3xl:
|
|
349
|
+
--size-ak-badge-border-xl: 3px;
|
|
350
|
+
--size-ak-badge-border-2xl: 3.5px;
|
|
351
|
+
--size-ak-badge-border-3xl: 4px;
|
|
301
352
|
|
|
302
353
|
/* Icon badges (larger badge with icon inside) */
|
|
303
354
|
--size-ak-icon-badge-md: 22px;
|
|
@@ -309,20 +360,20 @@
|
|
|
309
360
|
/* Badge text sizes */
|
|
310
361
|
--text-ak-badge-md: 0.625rem;
|
|
311
362
|
--text-ak-badge-lg: 0.6875rem;
|
|
312
|
-
--text-ak-badge-xl: 0.
|
|
313
|
-
--text-ak-badge-2xl: 0.
|
|
314
|
-
--text-ak-badge-3xl:
|
|
363
|
+
--text-ak-badge-xl: 0.8125rem;
|
|
364
|
+
--text-ak-badge-2xl: 0.9375rem;
|
|
365
|
+
--text-ak-badge-3xl: 1.125rem;
|
|
315
366
|
|
|
316
367
|
/* ── Avatar positioning offsets ──
|
|
317
368
|
Used for absolute-positioned status dots, badges, and icon badges.
|
|
318
369
|
Negative values pull elements inward; positive push outward. ── */
|
|
319
370
|
|
|
320
371
|
/* Status dot offsets (bottom-right corner) */
|
|
321
|
-
--offset-ak-status-md: 1px;
|
|
322
|
-
--offset-ak-status-lg: 1px;
|
|
323
|
-
--offset-ak-status-xl:
|
|
324
|
-
--offset-ak-status-2xl:
|
|
325
|
-
--offset-ak-status-3xl:
|
|
372
|
+
--offset-ak-status-md: -1px;
|
|
373
|
+
--offset-ak-status-lg: -1px;
|
|
374
|
+
--offset-ak-status-xl: -1px;
|
|
375
|
+
--offset-ak-status-2xl: 2px;
|
|
376
|
+
--offset-ak-status-3xl: 3px;
|
|
326
377
|
|
|
327
378
|
/* Status ring offsets (with ring decoration) */
|
|
328
379
|
--offset-ak-status-ring-md: -2px;
|
|
@@ -332,6 +383,15 @@
|
|
|
332
383
|
--offset-ak-status-ring-3xl: 4px;
|
|
333
384
|
|
|
334
385
|
/* Badge offsets (top-right corner) */
|
|
386
|
+
/* Count badges are rectangular (99+ grows wider than tall) so top/right
|
|
387
|
+
tune independently. Smaller avatars poke out at the corner; larger
|
|
388
|
+
avatars sit flush-right and inset slightly from the top. */
|
|
389
|
+
--offset-ak-badge-md-top: -3px; --offset-ak-badge-md-right: -3px;
|
|
390
|
+
--offset-ak-badge-lg-top: -3px; --offset-ak-badge-lg-right: -3px;
|
|
391
|
+
--offset-ak-badge-xl-top: -2px; --offset-ak-badge-xl-right: -2px;
|
|
392
|
+
--offset-ak-badge-2xl-top: 2px; --offset-ak-badge-2xl-right: 0px;
|
|
393
|
+
--offset-ak-badge-3xl-top: 5px; --offset-ak-badge-3xl-right: 0px;
|
|
394
|
+
/* Legacy single-value token kept for backward compat (equal to -top) */
|
|
335
395
|
--offset-ak-badge-md: -3px;
|
|
336
396
|
--offset-ak-badge-lg: -3px;
|
|
337
397
|
--offset-ak-badge-xl: -2px;
|
|
@@ -368,9 +428,189 @@
|
|
|
368
428
|
--ease-ak-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
369
429
|
--ease-ak-bounce: cubic-bezier(0.25, 1, 0.5, 1);
|
|
370
430
|
|
|
371
|
-
/* ── Z-index ── */
|
|
372
|
-
--z-ak-
|
|
373
|
-
--z-ak-
|
|
374
|
-
--z-ak-
|
|
375
|
-
--z-ak-
|
|
431
|
+
/* ── Z-index (Chakra-inspired scale) ── */
|
|
432
|
+
--z-ak-base: 0;
|
|
433
|
+
--z-ak-docked: 10;
|
|
434
|
+
--z-ak-dropdown: 1000;
|
|
435
|
+
--z-ak-sticky: 1100;
|
|
436
|
+
--z-ak-banner: 1200;
|
|
437
|
+
--z-ak-overlay: 1300;
|
|
438
|
+
--z-ak-modal: 1400;
|
|
439
|
+
--z-ak-popover: 1500;
|
|
440
|
+
--z-ak-toast: 1700;
|
|
441
|
+
--z-ak-tooltip: 1800;
|
|
442
|
+
|
|
443
|
+
/* ── Control sizes (legacy --size-ak-control-* aliases) ── */
|
|
444
|
+
--size-ak-control-sm: 2rem;
|
|
445
|
+
--size-ak-control-md: 2.5rem;
|
|
446
|
+
--size-ak-control-lg: 3rem;
|
|
447
|
+
|
|
448
|
+
/* ── Touch target minimum ── */
|
|
449
|
+
--size-ak-touch-min: 3rem;
|
|
450
|
+
|
|
451
|
+
/* ── Focus ring style ── */
|
|
452
|
+
--shadow-ak-focus: 0 0 0 3px rgba(0, 0, 0, 0.08);
|
|
453
|
+
--shadow-ak-focus-primary: 0 0 0 3px rgba(0, 0, 0, 0.15);
|
|
454
|
+
--shadow-ak-focus-danger: 0 0 0 3px rgba(220, 38, 38, 0.08);
|
|
455
|
+
--shadow-ak-focus-success: 0 0 0 3px rgba(22, 163, 74, 0.08);
|
|
456
|
+
|
|
457
|
+
/* ── Chart colors (colorblind-safe, Tableau 10 derived) ── */
|
|
458
|
+
--color-ak-chart-1: #4e79a7;
|
|
459
|
+
--color-ak-chart-2: #f28e2c;
|
|
460
|
+
--color-ak-chart-3: #e15759;
|
|
461
|
+
--color-ak-chart-4: #76b7b2;
|
|
462
|
+
--color-ak-chart-5: #59a14f;
|
|
463
|
+
--color-ak-chart-6: #edc949;
|
|
464
|
+
|
|
465
|
+
/* ── Form input border radius ── */
|
|
466
|
+
--radius-ak-input: 0.625rem;
|
|
467
|
+
|
|
468
|
+
/* ── Sidebar widths ── */
|
|
469
|
+
--width-ak-sidebar-collapsed: 5rem;
|
|
470
|
+
--width-ak-sidebar-expanded: 18rem;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/* ══════════════════════════════════════════════════════════
|
|
474
|
+
Density Modes
|
|
475
|
+
Wrap any container with data-ak-density="compact|spacious"
|
|
476
|
+
to override spacing and control sizes within it.
|
|
477
|
+
Default (comfortable) uses the base tokens above.
|
|
478
|
+
══════════════════════════════════════════════════════════ */
|
|
479
|
+
|
|
480
|
+
[data-ak-density="compact"] {
|
|
481
|
+
--spacing-ak-1: 0.375rem; /* 6px (was 8px) */
|
|
482
|
+
--spacing-ak-1_5: 0.5rem; /* 8px (was 12px) */
|
|
483
|
+
--spacing-ak-2: 0.75rem; /* 12px (was 16px) */
|
|
484
|
+
--spacing-ak-2_5: 1rem; /* 16px (was 20px) */
|
|
485
|
+
--spacing-ak-3: 1.125rem; /* 18px (was 24px) */
|
|
486
|
+
--height-ak-control-sm: 1.75rem; /* 28px (was 32px) */
|
|
487
|
+
--height-ak-control-md: 2rem; /* 32px (was 40px) */
|
|
488
|
+
--height-ak-control-lg: 2.5rem; /* 40px (was 48px) */
|
|
489
|
+
--height-ak-row-default: 2.5rem; /* 40px (was 48px) */
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
[data-ak-density="spacious"] {
|
|
493
|
+
--spacing-ak-1: 0.625rem; /* 10px (was 8px) */
|
|
494
|
+
--spacing-ak-1_5: 1rem; /* 16px (was 12px) */
|
|
495
|
+
--spacing-ak-2: 1.25rem; /* 20px (was 16px) */
|
|
496
|
+
--spacing-ak-2_5: 1.5rem; /* 24px (was 20px) */
|
|
497
|
+
--spacing-ak-3: 1.875rem; /* 30px (was 24px) */
|
|
498
|
+
--height-ak-control-sm: 2.25rem; /* 36px (was 32px) */
|
|
499
|
+
--height-ak-control-md: 3rem; /* 48px (was 40px) */
|
|
500
|
+
--height-ak-control-lg: 3.5rem; /* 56px (was 48px) */
|
|
501
|
+
--height-ak-row-default: 3.5rem; /* 56px (was 48px) */
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/* ══════════════════════════════════════════════════════════
|
|
505
|
+
Dark Mode
|
|
506
|
+
Apply with .dark class on <html> (next-themes standard)
|
|
507
|
+
or via @media (prefers-color-scheme: dark) — both supported.
|
|
508
|
+
Neutral base — works with any accent. For branded dark,
|
|
509
|
+
override --color-ak-primary-* after this block.
|
|
510
|
+
══════════════════════════════════════════════════════════ */
|
|
511
|
+
|
|
512
|
+
.dark,
|
|
513
|
+
[data-theme="dark"] {
|
|
514
|
+
/* ── Surfaces ── */
|
|
515
|
+
--color-ak-neutral-0: #111113;
|
|
516
|
+
--color-ak-neutral-50: #18191b;
|
|
517
|
+
--color-ak-neutral-100: #1e1f21;
|
|
518
|
+
--color-ak-neutral-200: #252628;
|
|
519
|
+
--color-ak-neutral-300: #333436;
|
|
520
|
+
--color-ak-neutral-400: #52525b;
|
|
521
|
+
--color-ak-neutral-500: #71717a;
|
|
522
|
+
--color-ak-neutral-600: #a1a1aa;
|
|
523
|
+
--color-ak-neutral-700: #d4d4d8;
|
|
524
|
+
--color-ak-neutral-800: #e4e4e7;
|
|
525
|
+
--color-ak-neutral-900: #f4f4f5;
|
|
526
|
+
--color-ak-neutral-950: #fafafa;
|
|
527
|
+
|
|
528
|
+
--color-ak-bg: #111113;
|
|
529
|
+
--color-ak-surface: #18191b;
|
|
530
|
+
--color-ak-surface-2: #1e1f21;
|
|
531
|
+
--color-ak-hover: rgba(255,255,255,0.04);
|
|
532
|
+
--color-ak-active: rgba(255,255,255,0.08);
|
|
533
|
+
--color-ak-elevated: #252628;
|
|
534
|
+
--color-ak-surface-raised: #1e1f21;
|
|
535
|
+
--color-ak-surface-raised-soft: rgba(255,255,255,0.04);
|
|
536
|
+
--color-ak-surface-glass: rgba(255,255,255,0.05);
|
|
537
|
+
--color-ak-surface-glass-strong: rgba(255,255,255,0.08);
|
|
538
|
+
--color-ak-highlight-soft: rgba(255,255,255,0.06);
|
|
539
|
+
--color-ak-highlight-strong: rgba(255,255,255,0.12);
|
|
540
|
+
--color-ak-skeleton-base: #1e1f21;
|
|
541
|
+
--color-ak-skeleton-shine: rgba(255,255,255,0.06);
|
|
542
|
+
--color-ak-overlay: rgba(0,0,0,0.7);
|
|
543
|
+
--color-ak-on-primary: #111113;
|
|
544
|
+
--color-ak-primary-subtle: rgba(129, 140, 248, 0.15);
|
|
545
|
+
|
|
546
|
+
/* ── Text ── */
|
|
547
|
+
--color-ak-text: #f4f4f5;
|
|
548
|
+
--color-ak-text-secondary: #a1a1aa;
|
|
549
|
+
--color-ak-text-muted: #71717a;
|
|
550
|
+
--color-ak-text-disabled: #52525b;
|
|
551
|
+
--color-ak-text-inverse: #111113;
|
|
552
|
+
--color-ak-text-link: #818cf8;
|
|
553
|
+
--color-ak-text-placeholder:#a1a1aa;
|
|
554
|
+
|
|
555
|
+
/* ── Borders (alpha — adapts to any surface) ── */
|
|
556
|
+
--color-ak-border: rgba(255, 255, 255, 0.10);
|
|
557
|
+
--color-ak-border-subtle: rgba(255, 255, 255, 0.06);
|
|
558
|
+
--color-ak-border-strong: rgba(255, 255, 255, 0.16);
|
|
559
|
+
--color-ak-border-focus: #ffffff;
|
|
560
|
+
|
|
561
|
+
/* ── Primary (lightened for contrast on dark bg) ── */
|
|
562
|
+
--color-ak-primary: #818cf8;
|
|
563
|
+
--color-ak-primary-hover: #a5b4fc;
|
|
564
|
+
--color-ak-primary-active: #6366f1;
|
|
565
|
+
|
|
566
|
+
--color-ak-primary-50: rgba(129, 140, 248, 0.06);
|
|
567
|
+
--color-ak-primary-100: rgba(129, 140, 248, 0.10);
|
|
568
|
+
--color-ak-primary-200: rgba(129, 140, 248, 0.16);
|
|
569
|
+
--color-ak-primary-300: rgba(129, 140, 248, 0.24);
|
|
570
|
+
--color-ak-primary-400: #6366f1;
|
|
571
|
+
--color-ak-primary-500: #818cf8;
|
|
572
|
+
--color-ak-primary-600: #a5b4fc;
|
|
573
|
+
--color-ak-primary-700: #c7d2fe;
|
|
574
|
+
--color-ak-primary-800: #e0e7ff;
|
|
575
|
+
--color-ak-primary-900: #eef2ff;
|
|
576
|
+
--color-ak-primary-950: #f5f7ff;
|
|
577
|
+
|
|
578
|
+
/* ── Status (lighter for dark bg readability) ── */
|
|
579
|
+
--color-ak-success: #4ade80;
|
|
580
|
+
--color-ak-success-subtle: rgba(34, 197, 94, 0.12);
|
|
581
|
+
--color-ak-success-text: #4ade80;
|
|
582
|
+
--color-ak-warning: #fbbf24;
|
|
583
|
+
--color-ak-warning-subtle: rgba(251, 191, 36, 0.12);
|
|
584
|
+
--color-ak-warning-text: #fbbf24;
|
|
585
|
+
--color-ak-danger: #f87171;
|
|
586
|
+
--color-ak-danger-subtle: rgba(248, 113, 113, 0.12);
|
|
587
|
+
--color-ak-danger-text: #f87171;
|
|
588
|
+
--color-ak-info: #60a5fa;
|
|
589
|
+
--color-ak-info-subtle: rgba(96, 165, 250, 0.12);
|
|
590
|
+
--color-ak-info-text: #60a5fa;
|
|
591
|
+
|
|
592
|
+
/* ── Shadows (mostly invisible on dark — reduce or remove) ── */
|
|
593
|
+
--shadow-ak-xs: none;
|
|
594
|
+
--shadow-ak-sm: none;
|
|
595
|
+
--shadow-ak-md: 0 4px 12px rgba(0,0,0,0.3);
|
|
596
|
+
--shadow-ak-lg: 0 8px 30px rgba(0,0,0,0.4);
|
|
597
|
+
--shadow-ak-xl: 0 16px 50px rgba(0,0,0,0.5);
|
|
598
|
+
--shadow-ak-2xl: 0 24px 60px rgba(0,0,0,0.6);
|
|
599
|
+
|
|
600
|
+
/* ── Focus rings (solid for AAA 2.4.13 compliance) ── */
|
|
601
|
+
--color-ak-border-focus: #ffffff;
|
|
602
|
+
--shadow-ak-focus: 0 0 0 3px rgba(255, 255, 255, 0.20);
|
|
603
|
+
--shadow-ak-focus-primary: 0 0 0 3px rgba(129, 140, 248, 0.30);
|
|
604
|
+
--shadow-ak-focus-danger: 0 0 0 3px rgba(248, 113, 113, 0.25);
|
|
605
|
+
--shadow-ak-focus-success: 0 0 0 3px rgba(74, 222, 128, 0.25);
|
|
606
|
+
|
|
607
|
+
/* ── Neobrutalist (dark mode — everything flips) ── */
|
|
608
|
+
--color-ak-brutal-ink: #ffffff;
|
|
609
|
+
--color-ak-brutal-face: #0a0a0a;
|
|
610
|
+
--color-ak-brutal-face-dark: #e5e5e5;
|
|
611
|
+
--color-ak-brutal-on-face: #ffffff;
|
|
612
|
+
--color-ak-brutal-on-face-dark: #000000;
|
|
613
|
+
|
|
614
|
+
/* ── Sheet handle ── */
|
|
615
|
+
--color-ak-sheet-handle: #52525b;
|
|
376
616
|
}
|