astralkit 0.2.0 → 0.3.0

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,1819 @@
1
+
2
+
3
+ /* Sidebar / Rail / Panel / Flyout / Section primitives */
4
+
5
+
6
+
7
+ /* ================================================================
8
+ Sidebar / Rail / Panel / Flyout primitives
9
+ Width transitions, parent-state child selectors, tooltips,
10
+ collapsible sections, and rail+panel interactions.
11
+ ================================================================ */
12
+
13
+ /* -- Data-attribute sidebar width transition -- */
14
+ [data-ak-sidebar] {
15
+ width: var(--width-ak-sidebar-collapsed);
16
+ transition: width 240ms cubic-bezier(0.4, 0, 0.2, 1);
17
+ }
18
+ [data-ak-sidebar][data-expanded] {
19
+ width: var(--width-ak-sidebar-expanded);
20
+ align-items: stretch;
21
+ }
22
+
23
+ /* Expanded: nav items go full-width left-aligned */
24
+ [data-expanded] .ak-nav-item {
25
+ width: 100%;
26
+ justify-content: flex-start;
27
+ padding-left: 1rem;
28
+ padding-right: 0.75rem;
29
+ gap: 0.75rem;
30
+ }
31
+ [data-expanded] .ak-nav-item.ak-logo-item {
32
+ padding-left: 0.5rem;
33
+ padding-right: 0.5rem;
34
+ gap: 0.5rem;
35
+ }
36
+
37
+ /* Nav labels: hidden collapsed, shown expanded */
38
+ .ak-nav-label {
39
+ display: none;
40
+ font-size: 1rem;
41
+ line-height: 1.5;
42
+ white-space: nowrap;
43
+ overflow: hidden;
44
+ text-overflow: ellipsis;
45
+ flex: 1;
46
+ min-width: 0;
47
+ text-align: left;
48
+ }
49
+ [data-expanded] .ak-nav-label { display: block; }
50
+
51
+ /* Nav item base + active state */
52
+ .ak-nav-item {
53
+ display: flex;
54
+ align-items: center;
55
+ justify-content: center;
56
+ min-height: 2.5rem;
57
+ border-radius: var(--radius-ak-md);
58
+ color: var(--color-ak-text-secondary);
59
+ cursor: pointer;
60
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default),
61
+ color var(--duration-ak-fast) var(--ease-ak-default);
62
+ }
63
+ .ak-nav-item:hover { background: var(--color-ak-hover); }
64
+ .ak-nav-item-active {
65
+ background: var(--color-ak-active);
66
+ color: var(--color-ak-text);
67
+ }
68
+ .ak-nav-item-active:hover { background: var(--color-ak-active); }
69
+
70
+ /* Collapse button */
71
+ .ak-collapse-btn {
72
+ display: flex;
73
+ align-items: center;
74
+ justify-content: center;
75
+ border: none;
76
+ background: none;
77
+ cursor: pointer;
78
+ color: var(--color-ak-text-muted);
79
+ transition: color var(--duration-ak-fast) var(--ease-ak-default);
80
+ }
81
+ .ak-collapse-btn:hover {
82
+ color: var(--color-ak-text);
83
+ }
84
+
85
+ /* Data-attribute tooltips (CSS pseudo-elements) */
86
+ [data-ak-tooltip] { position: relative; }
87
+ [data-ak-tooltip]::before {
88
+ content: '';
89
+ position: absolute;
90
+ left: 100%; top: 50%; transform: translateY(-50%);
91
+ width: 0.75rem; height: 100%;
92
+ pointer-events: none;
93
+ }
94
+ [data-ak-tooltip]::after {
95
+ content: attr(data-ak-tooltip);
96
+ position: absolute;
97
+ left: calc(100% + 0.5rem); top: 50%;
98
+ transform: translateY(-50%);
99
+ background: var(--color-ak-text);
100
+ color: var(--color-ak-text-inverse);
101
+ font-size: var(--size-ak-icon-sm);
102
+ line-height: 1.25;
103
+ padding: 0.375rem 0.75rem;
104
+ border-radius: var(--radius-ak-md);
105
+ white-space: nowrap;
106
+ pointer-events: none;
107
+ opacity: 0;
108
+ transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
109
+ z-index: var(--z-ak-modal);
110
+ }
111
+ [data-ak-tooltip]:hover::after,
112
+ [data-ak-tooltip]:focus-visible::after { opacity: 1; }
113
+ [data-ak-tooltip]:hover::before { pointer-events: auto; }
114
+ [data-expanded] [data-ak-tooltip]::after,
115
+ [data-expanded] [data-ak-tooltip]::before { display: none; }
116
+ @media (max-width: 767px) {
117
+ [data-ak-tooltip]::before,
118
+ [data-ak-tooltip]::after { display: none; }
119
+ }
120
+
121
+ /* Class-based tooltips (rail icons when panel is closed) */
122
+ .ak-tooltip {
123
+ position: absolute;
124
+ left: calc(100% + 0.5rem);
125
+ top: 50%;
126
+ transform: translateY(-50%) translateX(-4px);
127
+ background: #171717;
128
+ color: #ffffff;
129
+ font-size: var(--text-ak-sm);
130
+ font-weight: 600;
131
+ line-height: var(--leading-ak-tight);
132
+ letter-spacing: var(--tracking-ak-normal);
133
+ white-space: nowrap;
134
+ padding: 0.375rem 0.75rem;
135
+ border: 1px solid rgba(255,255,255,0.12);
136
+ border-radius: var(--radius-ak-md);
137
+ box-shadow: none;
138
+ pointer-events: none;
139
+ opacity: 0;
140
+ transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1),
141
+ transform 150ms cubic-bezier(0.4, 0, 0.2, 1);
142
+ z-index: var(--z-ak-modal);
143
+ }
144
+ [data-ak-panel-closed] .ak-rail-btn:hover .ak-tooltip,
145
+ [data-ak-panel-closed] .ak-rail-btn:focus-visible .ak-tooltip {
146
+ opacity: 1;
147
+ transform: translateY(-50%) translateX(0);
148
+ }
149
+ @media (max-width: 767px) {
150
+ .ak-tooltip { display: none !important; }
151
+ }
152
+
153
+ /* Rail button micro-interactions */
154
+ .ak-rail-btn {
155
+ position: relative;
156
+ transition: background-color var(--duration-ak-base) var(--ease-ak-default),
157
+ transform var(--duration-ak-fast) var(--ease-ak-default),
158
+ box-shadow var(--duration-ak-base) var(--ease-ak-default);
159
+ }
160
+ .ak-rail-btn i {
161
+ transition: transform var(--duration-ak-base) var(--ease-ak-default),
162
+ color var(--duration-ak-base) var(--ease-ak-default);
163
+ }
164
+ .ak-rail-btn:hover i { transform: scale(1.1); }
165
+ .ak-rail-btn:active { transform: scale(0.92); }
166
+ /* hover background is set per-element via Tailwind hover:bg-ak-hover,
167
+ NOT globally — active items must NOT get hover override */
168
+
169
+ /* Rail layout items */
170
+ .ak-rail {
171
+ display: flex;
172
+ flex-direction: column;
173
+ align-items: center;
174
+ }
175
+ .ak-rail-avatar {
176
+ display: flex;
177
+ align-items: center;
178
+ justify-content: center;
179
+ border-radius: var(--radius-ak-full);
180
+ cursor: pointer;
181
+ transition: transform var(--duration-ak-fast) var(--ease-ak-default);
182
+ }
183
+ .ak-rail-avatar:hover {
184
+ transform: scale(1.08);
185
+ }
186
+ .ak-rail-avatar:focus-visible {
187
+ outline: 2px solid var(--color-ak-border-focus);
188
+ outline-offset: 2px;
189
+ }
190
+ .ak-rail-brand {
191
+ display: flex;
192
+ align-items: center;
193
+ justify-content: center;
194
+ }
195
+ .ak-rail-brand i {
196
+ font-size: var(--size-ak-icon-xl);
197
+ }
198
+ .ak-rail-cell {
199
+ display: flex;
200
+ flex-direction: column;
201
+ align-items: center;
202
+ gap: 0.25rem;
203
+ padding: 0.5rem;
204
+ border-radius: var(--radius-ak-md);
205
+ cursor: pointer;
206
+ color: var(--color-ak-text-secondary);
207
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default);
208
+ }
209
+ .ak-rail-cell:hover { background: var(--color-ak-hover); }
210
+ .ak-rail-cell-active {
211
+ background: var(--color-ak-active);
212
+ color: var(--color-ak-text);
213
+ }
214
+ .ak-rail-cell-active:hover { background: var(--color-ak-active); }
215
+ .ak-rail-divider {
216
+ width: 1.5rem;
217
+ height: 1px;
218
+ background: var(--color-ak-border);
219
+ }
220
+ .ak-rail-icon {
221
+ display: flex;
222
+ align-items: center;
223
+ justify-content: center;
224
+ width: 2.5rem;
225
+ height: 2.5rem;
226
+ border-radius: var(--radius-ak-md);
227
+ cursor: pointer;
228
+ color: var(--color-ak-text-secondary);
229
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default),
230
+ color var(--duration-ak-fast) var(--ease-ak-default);
231
+ }
232
+ .ak-rail-icon:hover { background: var(--color-ak-hover); }
233
+ .ak-rail-icon-active {
234
+ background: var(--color-ak-active);
235
+ color: var(--color-ak-text);
236
+ }
237
+ .ak-rail-icon-active:hover { background: var(--color-ak-active); }
238
+ .ak-rail-item {
239
+ position: relative;
240
+ display: flex;
241
+ align-items: center;
242
+ justify-content: center;
243
+ width: 2.5rem;
244
+ height: 2.5rem;
245
+ border-radius: var(--radius-ak-md);
246
+ cursor: pointer;
247
+ color: var(--color-ak-text-secondary);
248
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default);
249
+ }
250
+ .ak-rail-item:hover { background: var(--color-ak-hover); }
251
+ .ak-rail-item-active {
252
+ background: var(--color-ak-active);
253
+ color: var(--color-ak-text);
254
+ }
255
+ .ak-rail-item-active:hover { background: var(--color-ak-active); }
256
+ .ak-rail-item:hover .ak-tooltip,
257
+ .ak-rail-item:focus-visible .ak-tooltip {
258
+ opacity: 1;
259
+ transform: translateY(-50%) translateX(0);
260
+ }
261
+ .ak-rail-label {
262
+ font-size: var(--text-ak-xs);
263
+ color: var(--color-ak-text-muted);
264
+ white-space: nowrap;
265
+ }
266
+ .ak-rail-link {
267
+ position: relative;
268
+ display: flex;
269
+ align-items: center;
270
+ justify-content: center;
271
+ width: 2.5rem;
272
+ height: 2.5rem;
273
+ border-radius: var(--radius-ak-md);
274
+ color: var(--color-ak-text-secondary);
275
+ cursor: pointer;
276
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default),
277
+ color var(--duration-ak-fast) var(--ease-ak-default);
278
+ }
279
+ .ak-rail-link i {
280
+ font-size: var(--size-ak-icon-lg);
281
+ transition: transform var(--duration-ak-fast) var(--ease-ak-default);
282
+ }
283
+ .ak-rail-link:hover {
284
+ background: var(--color-ak-hover);
285
+ color: var(--color-ak-text);
286
+ }
287
+ .ak-rail-link:hover i { transform: scale(1.08); }
288
+ .ak-rail-link:active { transform: scale(0.96); }
289
+ .ak-rail-link:focus { outline: none; }
290
+ .ak-rail-link:focus-visible {
291
+ outline: 2px solid var(--color-ak-border-focus);
292
+ outline-offset: -2px;
293
+ }
294
+ .ak-rail-link[aria-current="page"] {
295
+ background: var(--color-ak-active);
296
+ color: var(--color-ak-text);
297
+ }
298
+ .ak-rail-link[aria-current="page"] i { transform: scale(1.08); }
299
+ .ak-rail-profile {
300
+ display: flex;
301
+ align-items: center;
302
+ justify-content: center;
303
+ }
304
+ .ak-rail-profile-trigger {
305
+ display: flex;
306
+ align-items: center;
307
+ justify-content: center;
308
+ border-radius: var(--radius-ak-full);
309
+ cursor: pointer;
310
+ transition: transform var(--duration-ak-fast) var(--ease-ak-default);
311
+ }
312
+ .ak-rail-profile-trigger:hover { transform: scale(1.08); }
313
+ .ak-rail-profile-trigger:focus { outline: none; }
314
+ .ak-rail-profile-trigger:focus-visible {
315
+ outline: 2px solid var(--color-ak-border-focus);
316
+ outline-offset: 2px;
317
+ }
318
+ .ak-rail-spacer { flex: 1; }
319
+ .ak-rail-status-dot {
320
+ position: absolute;
321
+ bottom: 0;
322
+ right: 0;
323
+ width: 8px;
324
+ height: 8px;
325
+ border-radius: var(--radius-ak-full);
326
+ border: 2px solid var(--color-ak-bg);
327
+ }
328
+
329
+ /* Panel slide animation */
330
+ .ak-panel-slide {
331
+ width: var(--size-ak-panel-width, 260px);
332
+ min-width: var(--size-ak-panel-width, 260px);
333
+ opacity: 1;
334
+ overflow: hidden;
335
+ transition: width var(--duration-ak-slow) var(--ease-ak-default),
336
+ min-width var(--duration-ak-slow) var(--ease-ak-default),
337
+ opacity var(--duration-ak-base) var(--ease-ak-default),
338
+ padding-left var(--duration-ak-slow) var(--ease-ak-default),
339
+ padding-right var(--duration-ak-slow) var(--ease-ak-default),
340
+ border-left-width var(--duration-ak-slow) var(--ease-ak-default),
341
+ border-right-width var(--duration-ak-slow) var(--ease-ak-default);
342
+ }
343
+ .ak-panel-closed {
344
+ width: 0;
345
+ min-width: 0;
346
+ opacity: 0;
347
+ padding-left: 0;
348
+ padding-right: 0;
349
+ border-left-width: 0;
350
+ border-right-width: 0;
351
+ }
352
+
353
+ /* Collapsible sections inside panel */
354
+ .ak-section-content {
355
+ overflow: hidden;
356
+ visibility: visible;
357
+ max-height: 600px;
358
+ transition: max-height var(--duration-ak-slow) var(--ease-ak-default),
359
+ opacity var(--duration-ak-base) var(--ease-ak-default);
360
+ opacity: 1;
361
+ }
362
+ .ak-section-content:not(.ak-section-collapsed) {
363
+ padding-top: 0.25rem;
364
+ padding-bottom: 0.25rem;
365
+ }
366
+ .ak-section-collapsed {
367
+ max-height: 0;
368
+ opacity: 0;
369
+ visibility: hidden;
370
+ }
371
+
372
+ /* Section toggle */
373
+ .ak-section-toggle {
374
+ display: flex;
375
+ align-items: center;
376
+ justify-content: space-between;
377
+ width: 100%;
378
+ padding: 0.5rem 0.75rem;
379
+ border: none;
380
+ background: none;
381
+ cursor: pointer;
382
+ font-family: inherit;
383
+ color: var(--color-ak-text-muted);
384
+ transition: color var(--duration-ak-fast) var(--ease-ak-default);
385
+ }
386
+ .ak-section-toggle:hover { color: var(--color-ak-text); }
387
+ .ak-section-toggle:focus { outline: none; }
388
+ .ak-section-toggle:focus-visible {
389
+ outline: 2px solid var(--color-ak-border-focus);
390
+ outline-offset: -2px;
391
+ }
392
+ .ak-section-toggle-icon {
393
+ transition: transform var(--duration-ak-base) var(--ease-ak-default);
394
+ }
395
+ .ak-section-toggle[aria-expanded="true"] .ak-section-toggle-icon {
396
+ transform: rotate(180deg);
397
+ }
398
+ .ak-section-toggle[aria-expanded="false"] .ak-section-toggle-icon {
399
+ transform: rotate(0deg);
400
+ }
401
+ .ak-section-label {
402
+ font-size: var(--text-ak-xs);
403
+ font-weight: 600;
404
+ letter-spacing: 0.05em;
405
+ text-transform: uppercase;
406
+ color: var(--color-ak-text-muted);
407
+ }
408
+
409
+ /* Panel header / actions */
410
+ .ak-panel-header {
411
+ display: flex;
412
+ align-items: center;
413
+ justify-content: space-between;
414
+ }
415
+ .ak-panel-action {
416
+ display: flex;
417
+ align-items: center;
418
+ justify-content: center;
419
+ width: 1.75rem;
420
+ height: 1.75rem;
421
+ border-radius: var(--radius-ak-md);
422
+ border: none;
423
+ background: none;
424
+ color: var(--color-ak-text-muted);
425
+ cursor: pointer;
426
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default),
427
+ color var(--duration-ak-fast) var(--ease-ak-default);
428
+ }
429
+ .ak-panel-action:hover {
430
+ background: var(--color-ak-hover);
431
+ color: var(--color-ak-text);
432
+ }
433
+ .ak-panel-action:focus { outline: none; }
434
+ .ak-panel-action:focus-visible {
435
+ outline: 2px solid var(--color-ak-border-focus);
436
+ outline-offset: 2px;
437
+ }
438
+ .ak-panel-divider {
439
+ height: 1px;
440
+ background: var(--color-ak-border);
441
+ }
442
+ .ak-panel-label {
443
+ font-size: var(--text-ak-xs);
444
+ font-weight: 600;
445
+ letter-spacing: 0.05em;
446
+ text-transform: uppercase;
447
+ color: var(--color-ak-text-muted);
448
+ }
449
+
450
+ /* Flyout menu family */
451
+ .ak-flyout {
452
+ position: absolute;
453
+ background: var(--color-ak-bg);
454
+ border: 1px solid var(--color-ak-border);
455
+ border-radius: var(--radius-ak-lg);
456
+ box-shadow: var(--shadow-ak-lg);
457
+ opacity: 0;
458
+ visibility: hidden;
459
+ transform: translateY(4px);
460
+ transition: opacity var(--duration-ak-base) var(--ease-ak-default),
461
+ transform var(--duration-ak-base) var(--ease-ak-default),
462
+ visibility 0s linear var(--duration-ak-base);
463
+ z-index: var(--z-ak-dropdown);
464
+ }
465
+ .ak-flyout.ak-open,
466
+ .ak-flyout.ak-flyout-open {
467
+ opacity: 1;
468
+ visibility: visible;
469
+ transform: translateY(0);
470
+ transition-delay: 0s;
471
+ }
472
+ .ak-flyout-anchor { position: relative; }
473
+ .ak-flyout-body {
474
+ display: flex;
475
+ flex-direction: column;
476
+ }
477
+ .ak-flyout-header {
478
+ display: flex;
479
+ align-items: center;
480
+ gap: 0.75rem;
481
+ padding: 1rem;
482
+ border-bottom: 1px solid var(--color-ak-border);
483
+ }
484
+ .ak-flyout-header-name {
485
+ font-size: var(--text-ak-sm);
486
+ font-weight: 600;
487
+ color: var(--color-ak-text);
488
+ }
489
+ .ak-flyout-header-email {
490
+ font-size: var(--text-ak-xs);
491
+ color: var(--color-ak-text-muted);
492
+ }
493
+ .ak-flyout-item {
494
+ display: flex;
495
+ align-items: center;
496
+ gap: 0.75rem;
497
+ padding: 0.5rem 1rem;
498
+ min-height: 2.25rem;
499
+ border: none;
500
+ background: none;
501
+ width: 100%;
502
+ text-align: left;
503
+ font-family: inherit;
504
+ font-size: var(--text-ak-sm);
505
+ color: var(--color-ak-text-secondary);
506
+ cursor: pointer;
507
+ text-decoration: none;
508
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default),
509
+ color var(--duration-ak-fast) var(--ease-ak-default);
510
+ }
511
+ .ak-flyout-item i {
512
+ font-size: var(--size-ak-icon-md);
513
+ color: var(--color-ak-text-muted);
514
+ }
515
+ .ak-flyout-item:hover {
516
+ background: var(--color-ak-hover);
517
+ color: var(--color-ak-text);
518
+ }
519
+ .ak-flyout-item:focus { outline: none; }
520
+ .ak-flyout-item:focus-visible {
521
+ outline: 2px solid var(--color-ak-border-focus);
522
+ outline-offset: -2px;
523
+ }
524
+ .ak-flyout-item--danger {
525
+ color: var(--color-ak-danger-text);
526
+ }
527
+ .ak-flyout-item--danger i {
528
+ color: var(--color-ak-danger-text);
529
+ }
530
+ .ak-flyout-item--danger:hover {
531
+ background: var(--color-ak-danger-subtle);
532
+ }
533
+ .ak-flyout-divider {
534
+ height: 1px;
535
+ background: var(--color-ak-border);
536
+ margin: 0.25rem 0;
537
+ }
538
+ .ak-flyout-separator {
539
+ height: 1px;
540
+ background: var(--color-ak-border);
541
+ margin: 0.25rem 0;
542
+ }
543
+ .ak-flyout-name {
544
+ font-size: var(--text-ak-sm);
545
+ font-weight: 600;
546
+ color: var(--color-ak-text);
547
+ }
548
+ .ak-flyout-email {
549
+ font-size: var(--text-ak-xs);
550
+ color: var(--color-ak-text-muted);
551
+ }
552
+ .ak-flyout-user {
553
+ display: flex;
554
+ align-items: center;
555
+ gap: 0.75rem;
556
+ padding: 0.75rem 1rem;
557
+ }
558
+ .ak-flyout-user-avatar {
559
+ width: 2rem;
560
+ height: 2rem;
561
+ border-radius: var(--radius-ak-full);
562
+ flex-shrink: 0;
563
+ }
564
+ .ak-flyout-user-name {
565
+ font-size: var(--text-ak-sm);
566
+ font-weight: 600;
567
+ color: var(--color-ak-text);
568
+ }
569
+ .ak-flyout-user-email {
570
+ font-size: var(--text-ak-xs);
571
+ color: var(--color-ak-text-muted);
572
+ }
573
+ .ak-flyout-panel {
574
+ position: absolute;
575
+ background: var(--color-ak-bg);
576
+ border: 1px solid var(--color-ak-border);
577
+ border-radius: var(--radius-ak-lg);
578
+ box-shadow: var(--shadow-ak-lg);
579
+ opacity: 0;
580
+ visibility: hidden;
581
+ transform: translateY(4px);
582
+ transition: opacity var(--duration-ak-base) var(--ease-ak-default),
583
+ transform var(--duration-ak-base) var(--ease-ak-default),
584
+ visibility 0s linear var(--duration-ak-base);
585
+ z-index: var(--z-ak-dropdown);
586
+ }
587
+ .ak-flyout-panel.ak-open {
588
+ opacity: 1;
589
+ visibility: visible;
590
+ transform: translateY(0);
591
+ transition-delay: 0s;
592
+ }
593
+ .ak-flyout-rail {
594
+ display: flex;
595
+ flex-direction: column;
596
+ align-items: center;
597
+ }
598
+
599
+ /* Flyout theme controls */
600
+ .ak-flyout-theme {
601
+ display: flex;
602
+ flex-direction: column;
603
+ gap: 0.5rem;
604
+ padding: 0.75rem 1rem;
605
+ }
606
+ .ak-flyout-theme-row {
607
+ display: flex;
608
+ gap: 0.5rem;
609
+ }
610
+ .ak-flyout-theme-label {
611
+ font-size: var(--text-ak-xs);
612
+ color: var(--color-ak-text-muted);
613
+ }
614
+ .ak-flyout-theme-btn {
615
+ display: flex;
616
+ align-items: center;
617
+ justify-content: center;
618
+ width: 2rem;
619
+ height: 2rem;
620
+ border-radius: var(--radius-ak-md);
621
+ border: 1px solid var(--color-ak-border);
622
+ background: none;
623
+ color: var(--color-ak-text-secondary);
624
+ cursor: pointer;
625
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default),
626
+ border-color var(--duration-ak-fast) var(--ease-ak-default);
627
+ }
628
+ .ak-flyout-theme-btn i {
629
+ font-size: var(--size-ak-icon-sm);
630
+ }
631
+ .ak-flyout-theme-btn:hover {
632
+ background: var(--color-ak-hover);
633
+ border-color: var(--color-ak-border-strong);
634
+ }
635
+ .ak-flyout-theme-btn:focus { outline: none; }
636
+ .ak-flyout-theme-btn:focus-visible {
637
+ outline: 2px solid var(--color-ak-border-focus);
638
+ outline-offset: 2px;
639
+ }
640
+ .ak-flyout-theme-btn[aria-pressed="true"] {
641
+ background: var(--color-ak-active);
642
+ border-color: var(--color-ak-text);
643
+ color: var(--color-ak-text);
644
+ }
645
+ .ak-flyout-danger {
646
+ color: var(--color-ak-danger-text);
647
+ }
648
+ .ak-flyout-danger i {
649
+ color: var(--color-ak-danger-text);
650
+ }
651
+
652
+ /* ── Light rail — EXHAUSTIVE token override (blocks dark parent inheritance) ──
653
+ Applied to any [data-ak-rail] that is NOT explicitly dark.
654
+ These come after [data-theme="dark"] in source order, so they win. */
655
+ [data-ak-rail]:not([data-ak-dark-rail]) {
656
+ /* Surfaces */
657
+ --color-ak-bg: #ffffff;
658
+ --color-ak-surface: #fafafa;
659
+ --color-ak-surface-2: #f5f5f5;
660
+ --color-ak-hover: #f7f7f7;
661
+ --color-ak-active: #f0f0f0;
662
+ --color-ak-elevated: #171717; /* Rail-specific: dark active highlight */
663
+ --color-ak-surface-raised: #ffffff;
664
+ --color-ak-surface-raised-soft: rgba(255,255,255,0.78);
665
+ --color-ak-surface-glass: rgba(255,255,255,0.72);
666
+ --color-ak-surface-glass-strong: rgba(255,255,255,0.84);
667
+ --color-ak-highlight-soft: rgba(255,255,255,0.45);
668
+ --color-ak-highlight-strong: rgba(255,255,255,0.72);
669
+ --color-ak-skeleton-base: #ededed;
670
+ --color-ak-skeleton-shine: rgba(255,255,255,0.72);
671
+ --color-ak-overlay: rgba(0,0,0,0.5);
672
+ --color-ak-on-primary: #ffffff;
673
+ --color-ak-primary-subtle: #f5f5f5;
674
+ /* Text */
675
+ --color-ak-text: #18181b;
676
+ --color-ak-text-secondary: #52525b;
677
+ --color-ak-text-muted: #a1a1aa;
678
+ --color-ak-text-disabled: #d4d4d8;
679
+ --color-ak-text-inverse: #fafafa;
680
+ --color-ak-text-link: #09090b;
681
+ --color-ak-text-placeholder: #71717a;
682
+ /* Borders */
683
+ --color-ak-border: #e4e4e7;
684
+ --color-ak-border-subtle: #f4f4f5;
685
+ --color-ak-border-strong: #d4d4d8;
686
+ --color-ak-border-focus: #09090b;
687
+ /* Primary */
688
+ --color-ak-primary: #000000;
689
+ --color-ak-primary-hover: #1a1a1a;
690
+ --color-ak-primary-active: #333333;
691
+ /* Status */
692
+ --color-ak-success: #16a34a;
693
+ --color-ak-success-subtle: #f0fdf4;
694
+ --color-ak-success-text: #15803d;
695
+ --color-ak-warning: #d97706;
696
+ --color-ak-warning-subtle: #fffbeb;
697
+ --color-ak-warning-text: #b45309;
698
+ --color-ak-danger: #dc2626;
699
+ --color-ak-danger-subtle: #fef2f2;
700
+ --color-ak-danger-text: #b91c1c;
701
+ --color-ak-info: #2563eb;
702
+ --color-ak-info-subtle: #eff6ff;
703
+ --color-ak-info-text: #1d4ed8;
704
+ --color-ak-pink: #db2777;
705
+ --color-ak-pink-subtle: #fdf2f8;
706
+ /* Neutral scale */
707
+ --color-ak-neutral-0: #ffffff;
708
+ --color-ak-neutral-50: #fafafa;
709
+ --color-ak-neutral-100: #f5f5f5;
710
+ --color-ak-neutral-200: #e5e5e5;
711
+ --color-ak-neutral-300: #d4d4d4;
712
+ --color-ak-neutral-400: #a3a3a3;
713
+ --color-ak-neutral-500: #737373;
714
+ --color-ak-neutral-600: #525252;
715
+ --color-ak-neutral-700: #404040;
716
+ --color-ak-neutral-800: #262626;
717
+ --color-ak-neutral-900: #171717;
718
+ --color-ak-neutral-950: #0a0a0a;
719
+ /* Primary scale */
720
+ --color-ak-primary-50: #f5f5f5;
721
+ --color-ak-primary-100: #e5e5e5;
722
+ --color-ak-primary-200: #cccccc;
723
+ --color-ak-primary-300: #a3a3a3;
724
+ --color-ak-primary-400: #737373;
725
+ --color-ak-primary-500: #525252;
726
+ --color-ak-primary-600: #404040;
727
+ --color-ak-primary-700: #333333;
728
+ --color-ak-primary-800: #1a1a1a;
729
+ --color-ak-primary-900: #000000;
730
+ --color-ak-primary-950: #000000;
731
+ /* Shadows */
732
+ --shadow-ak-xs: 0 1px 2px rgba(0,0,0,0.04);
733
+ --shadow-ak-sm: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
734
+ --shadow-ak-md: 0 4px 12px rgba(0,0,0,0.06), 0 2px 4px rgba(0,0,0,0.04);
735
+ --shadow-ak-lg: 0 8px 30px rgba(0,0,0,0.08), 0 4px 8px rgba(0,0,0,0.04);
736
+ --shadow-ak-xl: 0 16px 50px rgba(0,0,0,0.1), 0 8px 16px rgba(0,0,0,0.05);
737
+ --shadow-ak-2xl: 0 24px 60px rgba(0,0,0,0.14);
738
+ --shadow-ak-focus: 0 0 0 3px rgba(0,0,0,0.08);
739
+ --shadow-ak-focus-primary: 0 0 0 3px rgba(0,0,0,0.15);
740
+ --shadow-ak-focus-danger: 0 0 0 3px rgba(220,38,38,0.08);
741
+ --shadow-ak-focus-success: 0 0 0 3px rgba(22,163,74,0.08);
742
+ }
743
+ [data-ak-rail]:not([data-ak-dark-rail]) .ak-on-elevated {
744
+ --color-ak-text: #ffffff;
745
+ --color-ak-text-secondary: #e5e5e5;
746
+ }
747
+
748
+ /* ── Light panel — EXHAUSTIVE token override (blocks dark parent inheritance) ── */
749
+ [data-ak-panel]:not([data-ak-dark-panel]) {
750
+ /* Surfaces */
751
+ --color-ak-bg: #ffffff;
752
+ --color-ak-surface: #fafafa;
753
+ --color-ak-surface-2: #f5f5f5;
754
+ --color-ak-hover: #f7f7f7;
755
+ --color-ak-active: #f0f0f0;
756
+ --color-ak-elevated: #f5f5f5; /* Panel-specific: subtle raised surface */
757
+ --color-ak-surface-raised: #ffffff;
758
+ --color-ak-surface-raised-soft: rgba(255,255,255,0.78);
759
+ --color-ak-surface-glass: rgba(255,255,255,0.72);
760
+ --color-ak-surface-glass-strong: rgba(255,255,255,0.84);
761
+ --color-ak-highlight-soft: rgba(255,255,255,0.45);
762
+ --color-ak-highlight-strong: rgba(255,255,255,0.72);
763
+ --color-ak-skeleton-base: #ededed;
764
+ --color-ak-skeleton-shine: rgba(255,255,255,0.72);
765
+ --color-ak-overlay: rgba(0,0,0,0.5);
766
+ --color-ak-on-primary: #ffffff;
767
+ --color-ak-primary-subtle: #f5f5f5;
768
+ /* Text */
769
+ --color-ak-text: #18181b;
770
+ --color-ak-text-secondary: #52525b;
771
+ --color-ak-text-muted: #a1a1aa;
772
+ --color-ak-text-disabled: #d4d4d8;
773
+ --color-ak-text-inverse: #fafafa;
774
+ --color-ak-text-link: #09090b;
775
+ --color-ak-text-placeholder: #71717a;
776
+ /* Borders */
777
+ --color-ak-border: #e4e4e7;
778
+ --color-ak-border-subtle: #f4f4f5;
779
+ --color-ak-border-strong: #d4d4d8;
780
+ --color-ak-border-focus: #09090b;
781
+ /* Primary */
782
+ --color-ak-primary: #000000;
783
+ --color-ak-primary-hover: #1a1a1a;
784
+ --color-ak-primary-active: #333333;
785
+ /* Status */
786
+ --color-ak-success: #16a34a;
787
+ --color-ak-success-subtle: #f0fdf4;
788
+ --color-ak-success-text: #15803d;
789
+ --color-ak-warning: #d97706;
790
+ --color-ak-warning-subtle: #fffbeb;
791
+ --color-ak-warning-text: #b45309;
792
+ --color-ak-danger: #dc2626;
793
+ --color-ak-danger-subtle: #fef2f2;
794
+ --color-ak-danger-text: #b91c1c;
795
+ --color-ak-info: #2563eb;
796
+ --color-ak-info-subtle: #eff6ff;
797
+ --color-ak-info-text: #1d4ed8;
798
+ --color-ak-pink: #db2777;
799
+ --color-ak-pink-subtle: #fdf2f8;
800
+ /* Neutral scale */
801
+ --color-ak-neutral-0: #ffffff;
802
+ --color-ak-neutral-50: #fafafa;
803
+ --color-ak-neutral-100: #f5f5f5;
804
+ --color-ak-neutral-200: #e5e5e5;
805
+ --color-ak-neutral-300: #d4d4d4;
806
+ --color-ak-neutral-400: #a3a3a3;
807
+ --color-ak-neutral-500: #737373;
808
+ --color-ak-neutral-600: #525252;
809
+ --color-ak-neutral-700: #404040;
810
+ --color-ak-neutral-800: #262626;
811
+ --color-ak-neutral-900: #171717;
812
+ --color-ak-neutral-950: #0a0a0a;
813
+ /* Primary scale */
814
+ --color-ak-primary-50: #f5f5f5;
815
+ --color-ak-primary-100: #e5e5e5;
816
+ --color-ak-primary-200: #cccccc;
817
+ --color-ak-primary-300: #a3a3a3;
818
+ --color-ak-primary-400: #737373;
819
+ --color-ak-primary-500: #525252;
820
+ --color-ak-primary-600: #404040;
821
+ --color-ak-primary-700: #333333;
822
+ --color-ak-primary-800: #1a1a1a;
823
+ --color-ak-primary-900: #000000;
824
+ --color-ak-primary-950: #000000;
825
+ /* Shadows */
826
+ --shadow-ak-xs: 0 1px 2px rgba(0,0,0,0.04);
827
+ --shadow-ak-sm: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
828
+ --shadow-ak-md: 0 4px 12px rgba(0,0,0,0.06), 0 2px 4px rgba(0,0,0,0.04);
829
+ --shadow-ak-lg: 0 8px 30px rgba(0,0,0,0.08), 0 4px 8px rgba(0,0,0,0.04);
830
+ --shadow-ak-xl: 0 16px 50px rgba(0,0,0,0.1), 0 8px 16px rgba(0,0,0,0.05);
831
+ --shadow-ak-2xl: 0 24px 60px rgba(0,0,0,0.14);
832
+ --shadow-ak-focus: 0 0 0 3px rgba(0,0,0,0.08);
833
+ --shadow-ak-focus-primary: 0 0 0 3px rgba(0,0,0,0.15);
834
+ --shadow-ak-focus-danger: 0 0 0 3px rgba(220,38,38,0.08);
835
+ --shadow-ak-focus-success: 0 0 0 3px rgba(22,163,74,0.08);
836
+ }
837
+ [data-ak-panel]:not([data-ak-dark-panel]) .ak-on-elevated {
838
+ --color-ak-text: #18181b;
839
+ --color-ak-text-secondary: #52525b;
840
+ }
841
+ /* ── Dark rail — EXHAUSTIVE token override (0 inheritance gaps) ── */
842
+ [data-ak-dark-rail] {
843
+ --color-ak-bg: #0a0a0a;
844
+ --color-ak-surface: rgba(255,255,255,0.03);
845
+ --color-ak-surface-2: rgba(255,255,255,0.05);
846
+ --color-ak-hover: rgba(255,255,255,0.08);
847
+ --color-ak-active: rgba(255,255,255,0.14);
848
+ --color-ak-elevated: #ffffff;
849
+ --color-ak-surface-raised: rgba(255,255,255,0.05);
850
+ --color-ak-surface-raised-soft: rgba(255,255,255,0.03);
851
+ --color-ak-surface-glass: rgba(255,255,255,0.05);
852
+ --color-ak-surface-glass-strong: rgba(255,255,255,0.08);
853
+ --color-ak-highlight-soft: rgba(255,255,255,0.06);
854
+ --color-ak-highlight-strong: rgba(255,255,255,0.12);
855
+ --color-ak-skeleton-base: rgba(255,255,255,0.05);
856
+ --color-ak-skeleton-shine: rgba(255,255,255,0.08);
857
+ --color-ak-overlay: rgba(0,0,0,0.7);
858
+ --color-ak-on-primary: #000000;
859
+ --color-ak-primary-subtle: rgba(255,255,255,0.05);
860
+ --color-ak-text: #f5f5f5;
861
+ --color-ak-text-secondary: #b5b5b5;
862
+ --color-ak-text-muted: #737373;
863
+ --color-ak-text-disabled: #525252;
864
+ --color-ak-text-inverse: #0a0a0a;
865
+ --color-ak-text-link: #ffffff;
866
+ --color-ak-text-placeholder: #525252;
867
+ --color-ak-border: rgba(255,255,255,0.08);
868
+ --color-ak-border-subtle: rgba(255,255,255,0.06);
869
+ --color-ak-border-strong: rgba(255,255,255,0.15);
870
+ --color-ak-border-focus: #ffffff;
871
+ --color-ak-primary: #ffffff;
872
+ --color-ak-primary-hover: #e5e5e5;
873
+ --color-ak-primary-active: #d4d4d4;
874
+ --color-ak-success: #22c55e;
875
+ --color-ak-success-subtle: rgba(34,197,94,0.12);
876
+ --color-ak-success-text: #4ade80;
877
+ --color-ak-danger: #ef4444;
878
+ --color-ak-danger-subtle: rgba(239,68,68,0.12);
879
+ --color-ak-danger-text: #f87171;
880
+ --color-ak-info: #60a5fa;
881
+ --color-ak-info-subtle: rgba(96,165,250,0.12);
882
+ --color-ak-info-text: #93bbfd;
883
+ --color-ak-pink: #f472b6;
884
+ --color-ak-pink-subtle: rgba(244,114,182,0.12);
885
+ --color-ak-warning: #f59e0b;
886
+ --color-ak-warning-subtle: rgba(245,158,11,0.12);
887
+ --color-ak-warning-text: #fbbf24;
888
+ /* Neutral scale (inverted for dark) */
889
+ --color-ak-neutral-0: #111113;
890
+ --color-ak-neutral-50: #18191b;
891
+ --color-ak-neutral-100: #1e1f21;
892
+ --color-ak-neutral-200: #252628;
893
+ --color-ak-neutral-300: #333436;
894
+ --color-ak-neutral-400: #52525b;
895
+ --color-ak-neutral-500: #71717a;
896
+ --color-ak-neutral-600: #a1a1aa;
897
+ --color-ak-neutral-700: #d4d4d8;
898
+ --color-ak-neutral-800: #e4e4e7;
899
+ --color-ak-neutral-900: #f4f4f5;
900
+ --color-ak-neutral-950: #fafafa;
901
+ /* Primary scale (dark) */
902
+ --color-ak-primary-50: rgba(255,255,255,0.04);
903
+ --color-ak-primary-100: rgba(255,255,255,0.06);
904
+ --color-ak-primary-200: rgba(255,255,255,0.10);
905
+ --color-ak-primary-300: rgba(255,255,255,0.16);
906
+ --color-ak-primary-400: rgba(255,255,255,0.24);
907
+ --color-ak-primary-500: #a3a3a3;
908
+ --color-ak-primary-600: #d4d4d4;
909
+ --color-ak-primary-700: #e5e5e5;
910
+ --color-ak-primary-800: #f5f5f5;
911
+ --color-ak-primary-900: #ffffff;
912
+ --color-ak-primary-950: #ffffff;
913
+ /* Shadows (dark) */
914
+ --shadow-ak-xs: 0 1px 2px rgba(0,0,0,0.3);
915
+ --shadow-ak-sm: 0 1px 3px rgba(0,0,0,0.4);
916
+ --shadow-ak-md: 0 4px 12px rgba(0,0,0,0.4);
917
+ --shadow-ak-lg: 0 8px 30px rgba(0,0,0,0.5);
918
+ --shadow-ak-xl: 0 16px 50px rgba(0,0,0,0.6);
919
+ --shadow-ak-2xl: 0 24px 60px rgba(0,0,0,0.7);
920
+ --shadow-ak-focus: 0 0 0 3px rgba(255,255,255,0.20);
921
+ --shadow-ak-focus-primary: 0 0 0 3px rgba(129,140,248,0.30);
922
+ --shadow-ak-focus-danger: 0 0 0 3px rgba(248,113,113,0.25);
923
+ --shadow-ak-focus-success: 0 0 0 3px rgba(74,222,128,0.25);
924
+ }
925
+
926
+ /* ── Dark panel — EXHAUSTIVE (Radix portals, flyouts) ── */
927
+ [data-ak-dark-panel] {
928
+ --color-ak-bg: #171717;
929
+ --color-ak-surface: #171717;
930
+ --color-ak-surface-2: #262626;
931
+ --color-ak-hover: rgba(255,255,255,0.08);
932
+ --color-ak-active: rgba(255,255,255,0.14);
933
+ --color-ak-elevated: #ffffff;
934
+ --color-ak-surface-raised: rgba(255,255,255,0.05);
935
+ --color-ak-surface-raised-soft: rgba(255,255,255,0.03);
936
+ --color-ak-surface-glass: rgba(255,255,255,0.05);
937
+ --color-ak-surface-glass-strong: rgba(255,255,255,0.08);
938
+ --color-ak-highlight-soft: rgba(255,255,255,0.06);
939
+ --color-ak-highlight-strong: rgba(255,255,255,0.12);
940
+ --color-ak-skeleton-base: rgba(255,255,255,0.05);
941
+ --color-ak-skeleton-shine: rgba(255,255,255,0.08);
942
+ --color-ak-overlay: rgba(0,0,0,0.7);
943
+ --color-ak-on-primary: #000000;
944
+ --color-ak-primary-subtle: rgba(255,255,255,0.05);
945
+ --color-ak-text: #ffffff;
946
+ --color-ak-text-secondary: #b0b0b0;
947
+ --color-ak-text-muted: #737373;
948
+ --color-ak-text-disabled: #525252;
949
+ --color-ak-text-inverse: #0a0a0a;
950
+ --color-ak-text-link: #ffffff;
951
+ --color-ak-text-placeholder: #525252;
952
+ --color-ak-border: rgba(255,255,255,0.1);
953
+ --color-ak-border-subtle: rgba(255,255,255,0.06);
954
+ --color-ak-border-strong: rgba(255,255,255,0.15);
955
+ --color-ak-border-focus: #ffffff;
956
+ --color-ak-primary: #ffffff;
957
+ --color-ak-primary-hover: #e5e5e5;
958
+ --color-ak-primary-active: #d4d4d4;
959
+ --color-ak-success: #22c55e;
960
+ --color-ak-success-subtle: rgba(34,197,94,0.12);
961
+ --color-ak-success-text: #4ade80;
962
+ --color-ak-danger: #ef4444;
963
+ --color-ak-danger-subtle: rgba(239,68,68,0.12);
964
+ --color-ak-danger-text: #f87171;
965
+ --color-ak-info: #60a5fa;
966
+ --color-ak-info-subtle: rgba(96,165,250,0.12);
967
+ --color-ak-info-text: #93bbfd;
968
+ --color-ak-pink: #f472b6;
969
+ --color-ak-pink-subtle: rgba(244,114,182,0.12);
970
+ --color-ak-warning: #f59e0b;
971
+ --color-ak-warning-subtle: rgba(245,158,11,0.12);
972
+ --color-ak-warning-text: #fbbf24;
973
+ /* Neutral scale (inverted for dark) */
974
+ --color-ak-neutral-0: #111113;
975
+ --color-ak-neutral-50: #18191b;
976
+ --color-ak-neutral-100: #1e1f21;
977
+ --color-ak-neutral-200: #252628;
978
+ --color-ak-neutral-300: #333436;
979
+ --color-ak-neutral-400: #52525b;
980
+ --color-ak-neutral-500: #71717a;
981
+ --color-ak-neutral-600: #a1a1aa;
982
+ --color-ak-neutral-700: #d4d4d8;
983
+ --color-ak-neutral-800: #e4e4e7;
984
+ --color-ak-neutral-900: #f4f4f5;
985
+ --color-ak-neutral-950: #fafafa;
986
+ /* Primary scale (dark) */
987
+ --color-ak-primary-50: rgba(255,255,255,0.04);
988
+ --color-ak-primary-100: rgba(255,255,255,0.06);
989
+ --color-ak-primary-200: rgba(255,255,255,0.10);
990
+ --color-ak-primary-300: rgba(255,255,255,0.16);
991
+ --color-ak-primary-400: rgba(255,255,255,0.24);
992
+ --color-ak-primary-500: #a3a3a3;
993
+ --color-ak-primary-600: #d4d4d4;
994
+ --color-ak-primary-700: #e5e5e5;
995
+ --color-ak-primary-800: #f5f5f5;
996
+ --color-ak-primary-900: #ffffff;
997
+ --color-ak-primary-950: #ffffff;
998
+ /* Shadows (dark) */
999
+ --shadow-ak-xs: 0 1px 2px rgba(0,0,0,0.3);
1000
+ --shadow-ak-sm: 0 1px 3px rgba(0,0,0,0.4);
1001
+ --shadow-ak-md: 0 4px 12px rgba(0,0,0,0.4);
1002
+ --shadow-ak-lg: 0 8px 30px rgba(0,0,0,0.5);
1003
+ --shadow-ak-xl: 0 16px 50px rgba(0,0,0,0.6);
1004
+ --shadow-ak-2xl: 0 24px 60px rgba(0,0,0,0.7);
1005
+ --shadow-ak-focus: 0 0 0 3px rgba(255,255,255,0.20);
1006
+ --shadow-ak-focus-primary: 0 0 0 3px rgba(129,140,248,0.30);
1007
+ --shadow-ak-focus-danger: 0 0 0 3px rgba(248,113,113,0.25);
1008
+ --shadow-ak-focus-success: 0 0 0 3px rgba(74,222,128,0.25);
1009
+ }
1010
+
1011
+ /* ── Light mobile — EXHAUSTIVE (blocks dark parent inheritance) ── */
1012
+ [data-ak-mobile-sheet]:not([data-ak-dark-mobile]) {
1013
+ /* Surfaces */
1014
+ --color-ak-bg: #ffffff;
1015
+ --color-ak-surface: #fafafa;
1016
+ --color-ak-surface-2: #f5f5f5;
1017
+ --color-ak-hover: #f7f7f7;
1018
+ --color-ak-active: #f0f0f0;
1019
+ --color-ak-elevated: #f5f5f5;
1020
+ --color-ak-surface-raised: #ffffff;
1021
+ --color-ak-surface-raised-soft: rgba(255,255,255,0.78);
1022
+ --color-ak-surface-glass: rgba(255,255,255,0.72);
1023
+ --color-ak-surface-glass-strong: rgba(255,255,255,0.84);
1024
+ --color-ak-highlight-soft: rgba(255,255,255,0.45);
1025
+ --color-ak-highlight-strong: rgba(255,255,255,0.72);
1026
+ --color-ak-skeleton-base: #ededed;
1027
+ --color-ak-skeleton-shine: rgba(255,255,255,0.72);
1028
+ --color-ak-overlay: rgba(0,0,0,0.5);
1029
+ --color-ak-on-primary: #ffffff;
1030
+ --color-ak-primary-subtle: #f5f5f5;
1031
+ /* Text */
1032
+ --color-ak-text: #18181b;
1033
+ --color-ak-text-secondary: #52525b;
1034
+ --color-ak-text-muted: #a1a1aa;
1035
+ --color-ak-text-disabled: #d4d4d8;
1036
+ --color-ak-text-inverse: #fafafa;
1037
+ --color-ak-text-link: #09090b;
1038
+ --color-ak-text-placeholder: #71717a;
1039
+ /* Borders */
1040
+ --color-ak-border: #e4e4e7;
1041
+ --color-ak-border-subtle: #f4f4f5;
1042
+ --color-ak-border-strong: #d4d4d8;
1043
+ --color-ak-border-focus: #09090b;
1044
+ /* Primary */
1045
+ --color-ak-primary: #000000;
1046
+ --color-ak-primary-hover: #1a1a1a;
1047
+ --color-ak-primary-active: #333333;
1048
+ /* Status */
1049
+ --color-ak-success: #16a34a;
1050
+ --color-ak-success-subtle: #f0fdf4;
1051
+ --color-ak-success-text: #15803d;
1052
+ --color-ak-warning: #d97706;
1053
+ --color-ak-warning-subtle: #fffbeb;
1054
+ --color-ak-warning-text: #b45309;
1055
+ --color-ak-danger: #dc2626;
1056
+ --color-ak-danger-subtle: #fef2f2;
1057
+ --color-ak-danger-text: #b91c1c;
1058
+ --color-ak-info: #2563eb;
1059
+ --color-ak-info-subtle: #eff6ff;
1060
+ --color-ak-info-text: #1d4ed8;
1061
+ --color-ak-pink: #db2777;
1062
+ --color-ak-pink-subtle: #fdf2f8;
1063
+ /* Neutral scale */
1064
+ --color-ak-neutral-0: #ffffff;
1065
+ --color-ak-neutral-50: #fafafa;
1066
+ --color-ak-neutral-100: #f5f5f5;
1067
+ --color-ak-neutral-200: #e5e5e5;
1068
+ --color-ak-neutral-300: #d4d4d4;
1069
+ --color-ak-neutral-400: #a3a3a3;
1070
+ --color-ak-neutral-500: #737373;
1071
+ --color-ak-neutral-600: #525252;
1072
+ --color-ak-neutral-700: #404040;
1073
+ --color-ak-neutral-800: #262626;
1074
+ --color-ak-neutral-900: #171717;
1075
+ --color-ak-neutral-950: #0a0a0a;
1076
+ /* Primary scale */
1077
+ --color-ak-primary-50: #f5f5f5;
1078
+ --color-ak-primary-100: #e5e5e5;
1079
+ --color-ak-primary-200: #cccccc;
1080
+ --color-ak-primary-300: #a3a3a3;
1081
+ --color-ak-primary-400: #737373;
1082
+ --color-ak-primary-500: #525252;
1083
+ --color-ak-primary-600: #404040;
1084
+ --color-ak-primary-700: #333333;
1085
+ --color-ak-primary-800: #1a1a1a;
1086
+ --color-ak-primary-900: #000000;
1087
+ --color-ak-primary-950: #000000;
1088
+ /* Shadows */
1089
+ --shadow-ak-xs: 0 1px 2px rgba(0,0,0,0.04);
1090
+ --shadow-ak-sm: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
1091
+ --shadow-ak-md: 0 4px 12px rgba(0,0,0,0.06), 0 2px 4px rgba(0,0,0,0.04);
1092
+ --shadow-ak-lg: 0 8px 30px rgba(0,0,0,0.08), 0 4px 8px rgba(0,0,0,0.04);
1093
+ --shadow-ak-xl: 0 16px 50px rgba(0,0,0,0.1), 0 8px 16px rgba(0,0,0,0.05);
1094
+ --shadow-ak-2xl: 0 24px 60px rgba(0,0,0,0.14);
1095
+ --shadow-ak-focus: 0 0 0 3px rgba(0,0,0,0.08);
1096
+ --shadow-ak-focus-primary: 0 0 0 3px rgba(0,0,0,0.15);
1097
+ --shadow-ak-focus-danger: 0 0 0 3px rgba(220,38,38,0.08);
1098
+ --shadow-ak-focus-success: 0 0 0 3px rgba(22,163,74,0.08);
1099
+ }
1100
+
1101
+ /* ── Dark mobile — EXHAUSTIVE (bottom sheets, overlays) ── */
1102
+ [data-ak-dark-mobile] {
1103
+ --color-ak-bg: #171717;
1104
+ --color-ak-surface: #171717;
1105
+ --color-ak-surface-2: #262626;
1106
+ --color-ak-hover: rgba(255,255,255,0.08);
1107
+ --color-ak-active: rgba(255,255,255,0.14);
1108
+ --color-ak-elevated: #ffffff;
1109
+ --color-ak-surface-raised: rgba(255,255,255,0.05);
1110
+ --color-ak-surface-raised-soft: rgba(255,255,255,0.03);
1111
+ --color-ak-surface-glass: rgba(255,255,255,0.05);
1112
+ --color-ak-surface-glass-strong: rgba(255,255,255,0.08);
1113
+ --color-ak-highlight-soft: rgba(255,255,255,0.06);
1114
+ --color-ak-highlight-strong: rgba(255,255,255,0.12);
1115
+ --color-ak-skeleton-base: rgba(255,255,255,0.05);
1116
+ --color-ak-skeleton-shine: rgba(255,255,255,0.08);
1117
+ --color-ak-overlay: rgba(0,0,0,0.7);
1118
+ --color-ak-on-primary: #000000;
1119
+ --color-ak-primary-subtle: rgba(255,255,255,0.05);
1120
+ --color-ak-text: #ffffff;
1121
+ --color-ak-text-secondary: #b0b0b0;
1122
+ --color-ak-text-muted: #737373;
1123
+ --color-ak-text-disabled: #525252;
1124
+ --color-ak-text-inverse: #0a0a0a;
1125
+ --color-ak-text-link: #ffffff;
1126
+ --color-ak-text-placeholder: #525252;
1127
+ --color-ak-border: rgba(255,255,255,0.1);
1128
+ --color-ak-border-subtle: rgba(255,255,255,0.06);
1129
+ --color-ak-border-strong: rgba(255,255,255,0.15);
1130
+ --color-ak-border-focus: #ffffff;
1131
+ --color-ak-primary: #ffffff;
1132
+ --color-ak-primary-hover: #e5e5e5;
1133
+ --color-ak-primary-active: #d4d4d4;
1134
+ --color-ak-success: #22c55e;
1135
+ --color-ak-success-subtle: rgba(34,197,94,0.12);
1136
+ --color-ak-success-text: #4ade80;
1137
+ --color-ak-danger: #ef4444;
1138
+ --color-ak-danger-subtle: rgba(239,68,68,0.12);
1139
+ --color-ak-danger-text: #f87171;
1140
+ --color-ak-info: #60a5fa;
1141
+ --color-ak-info-subtle: rgba(96,165,250,0.12);
1142
+ --color-ak-info-text: #93bbfd;
1143
+ --color-ak-pink: #f472b6;
1144
+ --color-ak-pink-subtle: rgba(244,114,182,0.12);
1145
+ --color-ak-warning: #f59e0b;
1146
+ --color-ak-warning-subtle: rgba(245,158,11,0.12);
1147
+ --color-ak-warning-text: #fbbf24;
1148
+ /* Neutral scale (inverted for dark) */
1149
+ --color-ak-neutral-0: #111113;
1150
+ --color-ak-neutral-50: #18191b;
1151
+ --color-ak-neutral-100: #1e1f21;
1152
+ --color-ak-neutral-200: #252628;
1153
+ --color-ak-neutral-300: #333436;
1154
+ --color-ak-neutral-400: #52525b;
1155
+ --color-ak-neutral-500: #71717a;
1156
+ --color-ak-neutral-600: #a1a1aa;
1157
+ --color-ak-neutral-700: #d4d4d8;
1158
+ --color-ak-neutral-800: #e4e4e7;
1159
+ --color-ak-neutral-900: #f4f4f5;
1160
+ --color-ak-neutral-950: #fafafa;
1161
+ /* Primary scale (dark) */
1162
+ --color-ak-primary-50: rgba(255,255,255,0.04);
1163
+ --color-ak-primary-100: rgba(255,255,255,0.06);
1164
+ --color-ak-primary-200: rgba(255,255,255,0.10);
1165
+ --color-ak-primary-300: rgba(255,255,255,0.16);
1166
+ --color-ak-primary-400: rgba(255,255,255,0.24);
1167
+ --color-ak-primary-500: #a3a3a3;
1168
+ --color-ak-primary-600: #d4d4d4;
1169
+ --color-ak-primary-700: #e5e5e5;
1170
+ --color-ak-primary-800: #f5f5f5;
1171
+ --color-ak-primary-900: #ffffff;
1172
+ --color-ak-primary-950: #ffffff;
1173
+ /* Shadows (dark) */
1174
+ --shadow-ak-xs: 0 1px 2px rgba(0,0,0,0.3);
1175
+ --shadow-ak-sm: 0 1px 3px rgba(0,0,0,0.4);
1176
+ --shadow-ak-md: 0 4px 12px rgba(0,0,0,0.4);
1177
+ --shadow-ak-lg: 0 8px 30px rgba(0,0,0,0.5);
1178
+ --shadow-ak-xl: 0 16px 50px rgba(0,0,0,0.6);
1179
+ --shadow-ak-2xl: 0 24px 60px rgba(0,0,0,0.7);
1180
+ --shadow-ak-focus: 0 0 0 3px rgba(255,255,255,0.20);
1181
+ --shadow-ak-focus-primary: 0 0 0 3px rgba(129,140,248,0.30);
1182
+ --shadow-ak-focus-danger: 0 0 0 3px rgba(248,113,113,0.25);
1183
+ --shadow-ak-focus-success: 0 0 0 3px rgba(74,222,128,0.25);
1184
+ }
1185
+
1186
+ /* Dark rail/panel/mobile: restore dark text on white elevated items */
1187
+ [data-ak-dark-rail] .ak-on-elevated,
1188
+ [data-ak-dark-panel] .ak-on-elevated,
1189
+ [data-ak-dark-mobile] .ak-on-elevated {
1190
+ --color-ak-text: #18181b;
1191
+ --color-ak-text-secondary: #52525b;
1192
+ }
1193
+
1194
+ /* ── Panel count badge — primary-colored circle for nav item counts ──
1195
+ Use instead of ak-badge (which is red/danger for notifications). */
1196
+ .ak-panel-badge {
1197
+ position: static;
1198
+ display: flex;
1199
+ align-items: center;
1200
+ justify-content: center;
1201
+ border-radius: var(--radius-ak-full);
1202
+ background: var(--color-ak-primary);
1203
+ color: var(--color-ak-on-primary);
1204
+ font-weight: 700;
1205
+ }
1206
+ /* Dark contexts: white badge, dark text */
1207
+ [data-ak-dark-panel] .ak-panel-badge,
1208
+ [data-ak-dark-rail] .ak-panel-badge {
1209
+ background: #ffffff;
1210
+ color: #18181b;
1211
+ }
1212
+ /* Active (elevated) row in dark context: flip back */
1213
+ [data-ak-dark-panel] .ak-on-elevated .ak-panel-badge,
1214
+ [data-ak-dark-rail] .ak-on-elevated .ak-panel-badge {
1215
+ background: #171717;
1216
+ color: #ffffff;
1217
+ }
1218
+
1219
+ /* Sidebar component shell */
1220
+ .ak-sidebar-expanded {
1221
+ width: 18rem;
1222
+ align-items: stretch;
1223
+ }
1224
+ .ak-sidebar-expanded .ak-nav-item {
1225
+ width: 100%;
1226
+ justify-content: flex-start;
1227
+ padding-left: 1rem;
1228
+ padding-right: 0.75rem;
1229
+ gap: 0.75rem;
1230
+ }
1231
+ .ak-sidebar-expanded .ak-nav-item.ak-logo-item {
1232
+ padding-left: 0.5rem;
1233
+ padding-right: 0.5rem;
1234
+ gap: 0.5rem;
1235
+ }
1236
+ .ak-sidebar-expanded .ak-nav-label { display: block; }
1237
+ .ak-sidebar-expanded .ak-profile-info { display: flex; }
1238
+ .ak-sidebar-expanded .ak-account-chevron { display: flex; }
1239
+ .ak-sidebar-expanded .ak-collapse-icon { display: block; }
1240
+ .ak-sidebar-expanded .ak-expand-icon { display: none; }
1241
+ .ak-sidebar-expanded [data-ak-tooltip]::after,
1242
+ .ak-sidebar-expanded [data-ak-tooltip]::before { display: none; }
1243
+
1244
+ /* Account switcher: collapsed vs expanded (complex child selectors) */
1245
+ [data-expanded] .ak-profile-info { display: flex; }
1246
+ [data-expanded] .ak-account-chevron { display: flex; }
1247
+ [data-expanded] .ak-account-trigger {
1248
+ justify-content: space-between;
1249
+ border: 1px solid var(--color-ak-border);
1250
+ border-radius: var(--radius-ak-lg);
1251
+ padding: 0.625rem 0.75rem;
1252
+ gap: 0.625rem;
1253
+ min-height: auto;
1254
+ }
1255
+ [data-expanded] .ak-account-left { gap: 0.625rem; }
1256
+
1257
+ /* Dividers */
1258
+ .ak-divider {
1259
+ height: 1px;
1260
+ background: var(--color-ak-border);
1261
+ }
1262
+ .ak-divider-bleed {
1263
+ margin-left: -0.75rem;
1264
+ margin-right: -0.75rem;
1265
+ }
1266
+
1267
+ /* Sub-items (sidebar tree sub-navigation) */
1268
+ .ak-sub-item {
1269
+ display: flex;
1270
+ align-items: center;
1271
+ gap: 0.5rem;
1272
+ padding: 0.375rem 0.75rem;
1273
+ border-radius: var(--radius-ak-md);
1274
+ font-size: var(--text-ak-sm);
1275
+ color: var(--color-ak-text-secondary);
1276
+ cursor: pointer;
1277
+ text-decoration: none;
1278
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default),
1279
+ color var(--duration-ak-fast) var(--ease-ak-default);
1280
+ }
1281
+ .ak-sub-item::before {
1282
+ content: '';
1283
+ width: 6px;
1284
+ height: 6px;
1285
+ border-radius: var(--radius-ak-full);
1286
+ background: var(--color-ak-border);
1287
+ flex-shrink: 0;
1288
+ }
1289
+ .ak-sub-item:hover { background: var(--color-ak-hover); }
1290
+ .ak-sub-item:hover::before { background: var(--color-ak-text-muted); }
1291
+ .ak-sub-item-active {
1292
+ color: var(--color-ak-text);
1293
+ background: var(--color-ak-active);
1294
+ }
1295
+ .ak-sub-item-active::before {
1296
+ background: var(--color-ak-primary);
1297
+ }
1298
+
1299
+ /* Listing links (sidebar project/item lists) */
1300
+ .ak-listing-link {
1301
+ position: relative;
1302
+ display: flex;
1303
+ align-items: center;
1304
+ gap: 0.75rem;
1305
+ padding: 0.5rem 0.75rem;
1306
+ border-radius: var(--radius-ak-md);
1307
+ color: var(--color-ak-text-secondary);
1308
+ cursor: pointer;
1309
+ text-decoration: none;
1310
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default),
1311
+ color var(--duration-ak-fast) var(--ease-ak-default);
1312
+ }
1313
+ .ak-listing-link:hover { background: var(--color-ak-hover); }
1314
+ .ak-listing-link:focus { outline: none; }
1315
+ .ak-listing-link:focus-visible {
1316
+ outline: 2px solid var(--color-ak-border-focus);
1317
+ outline-offset: -2px;
1318
+ }
1319
+ .ak-listing-link[aria-current="page"] {
1320
+ background: var(--color-ak-active);
1321
+ color: var(--color-ak-text);
1322
+ }
1323
+ .ak-listing-list {
1324
+ display: flex;
1325
+ flex-direction: column;
1326
+ gap: 0.125rem;
1327
+ }
1328
+
1329
+ /* Library tree / collapsible sections */
1330
+ .ak-lib-panel {
1331
+ overflow: hidden;
1332
+ max-height: 600px;
1333
+ transition: max-height var(--duration-ak-slow) var(--ease-ak-default),
1334
+ opacity var(--duration-ak-base) var(--ease-ak-default);
1335
+ opacity: 1;
1336
+ }
1337
+ .ak-lib-panel.ak-collapsed {
1338
+ max-height: 0;
1339
+ opacity: 0;
1340
+ }
1341
+ .ak-lib-trigger {
1342
+ display: flex;
1343
+ align-items: center;
1344
+ justify-content: space-between;
1345
+ width: 100%;
1346
+ padding: 0.5rem 0.75rem;
1347
+ border: none;
1348
+ background: none;
1349
+ cursor: pointer;
1350
+ font-family: inherit;
1351
+ font-size: var(--text-ak-sm);
1352
+ font-weight: 600;
1353
+ color: var(--color-ak-text-muted);
1354
+ text-transform: uppercase;
1355
+ letter-spacing: 0.05em;
1356
+ transition: color var(--duration-ak-fast) var(--ease-ak-default);
1357
+ }
1358
+ .ak-lib-trigger:hover { color: var(--color-ak-text); }
1359
+ .ak-lib-trigger:focus { outline: none; }
1360
+ .ak-lib-trigger:focus-visible {
1361
+ outline: 2px solid var(--color-ak-border-focus);
1362
+ outline-offset: -2px;
1363
+ }
1364
+ .ak-lib-chevron {
1365
+ transition: transform var(--duration-ak-base) var(--ease-ak-default);
1366
+ }
1367
+ .ak-lib-trigger[aria-expanded="false"] .ak-lib-chevron {
1368
+ transform: rotate(-90deg);
1369
+ }
1370
+ .ak-lib-link {
1371
+ display: flex;
1372
+ align-items: center;
1373
+ gap: 0.5rem;
1374
+ padding: 0.375rem 0.75rem;
1375
+ border-radius: var(--radius-ak-md);
1376
+ font-size: var(--text-ak-sm);
1377
+ color: var(--color-ak-text-secondary);
1378
+ cursor: pointer;
1379
+ text-decoration: none;
1380
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default),
1381
+ color var(--duration-ak-fast) var(--ease-ak-default);
1382
+ }
1383
+ .ak-lib-link:hover { background: var(--color-ak-hover); }
1384
+ .ak-lib-link:focus { outline: none; }
1385
+ .ak-lib-link:focus-visible {
1386
+ outline: 2px solid var(--color-ak-border-focus);
1387
+ outline-offset: -2px;
1388
+ }
1389
+ .ak-lib-link[aria-current="page"] {
1390
+ background: var(--color-ak-active);
1391
+ color: var(--color-ak-text);
1392
+ }
1393
+
1394
+ /* Pinned links */
1395
+ .ak-pinned-link {
1396
+ display: flex;
1397
+ align-items: center;
1398
+ gap: 0.75rem;
1399
+ padding: 0.5rem 0.75rem;
1400
+ border-radius: var(--radius-ak-md);
1401
+ color: var(--color-ak-text-secondary);
1402
+ cursor: pointer;
1403
+ text-decoration: none;
1404
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default);
1405
+ }
1406
+ .ak-pinned-link:hover { background: var(--color-ak-hover); }
1407
+ .ak-pinned-link:focus { outline: none; }
1408
+ .ak-pinned-link:focus-visible {
1409
+ outline: 2px solid var(--color-ak-border-focus);
1410
+ outline-offset: -2px;
1411
+ }
1412
+ .ak-pinned-link[aria-current="page"] {
1413
+ background: var(--color-ak-active);
1414
+ color: var(--color-ak-text);
1415
+ }
1416
+ .ak-pinned-dot {
1417
+ width: 8px;
1418
+ height: 8px;
1419
+ border-radius: var(--radius-ak-full);
1420
+ flex-shrink: 0;
1421
+ }
1422
+
1423
+ /* Logo items */
1424
+ .ak-logo-wordmark {
1425
+ font-size: 1.25rem;
1426
+ font-weight: 700;
1427
+ line-height: 1;
1428
+ }
1429
+
1430
+ /* Workspace / store branding */
1431
+ .ak-workspace-header {
1432
+ display: flex;
1433
+ align-items: center;
1434
+ gap: 0.75rem;
1435
+ }
1436
+ .ak-workspace-logo {
1437
+ width: 2rem;
1438
+ height: 2rem;
1439
+ border-radius: var(--radius-ak-md);
1440
+ display: flex;
1441
+ align-items: center;
1442
+ justify-content: center;
1443
+ flex-shrink: 0;
1444
+ }
1445
+ .ak-ws-dropdown {
1446
+ position: absolute;
1447
+ background: var(--color-ak-bg);
1448
+ border: 1px solid var(--color-ak-border);
1449
+ border-radius: var(--radius-ak-lg);
1450
+ box-shadow: var(--shadow-ak-lg);
1451
+ opacity: 0;
1452
+ visibility: hidden;
1453
+ transform: translateY(4px);
1454
+ transition: opacity var(--duration-ak-base) var(--ease-ak-default),
1455
+ transform var(--duration-ak-base) var(--ease-ak-default),
1456
+ visibility 0s linear var(--duration-ak-base);
1457
+ z-index: var(--z-ak-dropdown);
1458
+ }
1459
+ .ak-ws-dropdown-open {
1460
+ opacity: 1;
1461
+ visibility: visible;
1462
+ transform: translateY(0);
1463
+ transition-delay: 0s;
1464
+ }
1465
+ .ak-ws-item {
1466
+ display: flex;
1467
+ align-items: center;
1468
+ gap: 0.75rem;
1469
+ padding: 0.625rem 0.75rem;
1470
+ cursor: pointer;
1471
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default);
1472
+ }
1473
+ .ak-ws-item:hover { background: var(--color-ak-hover); }
1474
+ .ak-ws-item:focus { outline: none; }
1475
+ .ak-ws-item:focus-visible {
1476
+ outline: 2px solid var(--color-ak-border-focus);
1477
+ outline-offset: -2px;
1478
+ }
1479
+ .ak-ws-icon {
1480
+ width: 2rem;
1481
+ height: 2rem;
1482
+ border-radius: var(--radius-ak-md);
1483
+ display: flex;
1484
+ align-items: center;
1485
+ justify-content: center;
1486
+ flex-shrink: 0;
1487
+ }
1488
+
1489
+ /* Brand / store header */
1490
+ .ak-brand {
1491
+ display: flex;
1492
+ align-items: center;
1493
+ gap: 0.75rem;
1494
+ }
1495
+ .ak-brand-logo {
1496
+ display: flex;
1497
+ align-items: center;
1498
+ justify-content: center;
1499
+ flex-shrink: 0;
1500
+ }
1501
+ .ak-brand-logo i {
1502
+ font-size: var(--size-ak-icon-xl);
1503
+ }
1504
+ .ak-brand-name {
1505
+ font-size: 1.125rem;
1506
+ font-weight: 700;
1507
+ color: var(--color-ak-text);
1508
+ }
1509
+ .ak-sidebar-brand {
1510
+ display: flex;
1511
+ align-items: center;
1512
+ gap: 0.75rem;
1513
+ }
1514
+ .ak-sidebar-brand-name {
1515
+ font-size: 1rem;
1516
+ font-weight: 700;
1517
+ color: var(--color-ak-text);
1518
+ }
1519
+ .ak-sidebar-brand-plan {
1520
+ font-size: var(--text-ak-xs);
1521
+ color: var(--color-ak-text-muted);
1522
+ }
1523
+ .ak-sidebar-header {
1524
+ display: flex;
1525
+ align-items: center;
1526
+ justify-content: space-between;
1527
+ }
1528
+ .ak-sidebar-collapse {
1529
+ display: flex;
1530
+ align-items: center;
1531
+ justify-content: center;
1532
+ width: 1.75rem;
1533
+ height: 1.75rem;
1534
+ border-radius: var(--radius-ak-md);
1535
+ border: none;
1536
+ background: none;
1537
+ color: var(--color-ak-text-muted);
1538
+ cursor: pointer;
1539
+ transition: background-color var(--duration-ak-fast) var(--ease-ak-default),
1540
+ color var(--duration-ak-fast) var(--ease-ak-default);
1541
+ }
1542
+ .ak-sidebar-collapse i {
1543
+ font-size: var(--size-ak-icon-md);
1544
+ transition: transform var(--duration-ak-base) var(--ease-ak-default);
1545
+ }
1546
+ .ak-sidebar-collapse:hover {
1547
+ background: var(--color-ak-hover);
1548
+ color: var(--color-ak-text);
1549
+ }
1550
+ .ak-sidebar-collapse:focus { outline: none; }
1551
+ .ak-sidebar-collapse:focus-visible {
1552
+ outline: 2px solid var(--color-ak-border-focus);
1553
+ outline-offset: 2px;
1554
+ }
1555
+ .ak-sidebar-divider {
1556
+ height: 1px;
1557
+ background: var(--color-ak-border);
1558
+ }
1559
+ .ak-sidebar-logo {
1560
+ display: flex;
1561
+ align-items: center;
1562
+ gap: 0.5rem;
1563
+ text-decoration: none;
1564
+ }
1565
+ .ak-sidebar-title {
1566
+ font-size: var(--text-ak-sm);
1567
+ font-weight: 600;
1568
+ letter-spacing: 0.05em;
1569
+ text-transform: uppercase;
1570
+ color: var(--color-ak-text-muted);
1571
+ }
1572
+ .ak-sidebar-nav {
1573
+ display: flex;
1574
+ flex-direction: column;
1575
+ gap: 0.125rem;
1576
+ }
1577
+ .ak-accent-bar {
1578
+ width: 3px;
1579
+ border-radius: var(--radius-ak-full);
1580
+ }
1581
+
1582
+ /* Panel link transitions */
1583
+ [data-ak-panel-link] {
1584
+ transition: background-color var(--duration-ak-base) var(--ease-ak-default),
1585
+ color var(--duration-ak-base) var(--ease-ak-default),
1586
+ box-shadow var(--duration-ak-base) var(--ease-ak-default);
1587
+ }
1588
+ [data-ak-panel-link] .text-ak-base {
1589
+ letter-spacing: var(--tracking-ak-normal);
1590
+ line-height: var(--leading-ak-tight);
1591
+ }
1592
+
1593
+ /* Team switcher typography */
1594
+ [data-ak-team-switcher] .text-left p:first-child,
1595
+ [data-ak-team-dropdown] .text-left p:first-child {
1596
+ font-size: var(--text-ak-base);
1597
+ font-weight: 600;
1598
+ line-height: var(--leading-ak-tight);
1599
+ letter-spacing: var(--tracking-ak-normal);
1600
+ }
1601
+ [data-ak-team-switcher] .text-left p:last-child,
1602
+ [data-ak-team-dropdown] .text-left p:last-child {
1603
+ font-size: var(--text-ak-base);
1604
+ line-height: var(--leading-ak-tight);
1605
+ letter-spacing: var(--tracking-ak-normal);
1606
+ }
1607
+
1608
+
1609
+ /* ══════════════════════════════════════════════════════════
1610
+ Sidebar Panel — BEM dark/light modifiers
1611
+ These re-declare ALL color+shadow tokens exhaustively.
1612
+ Being in @layer ak-components, they ALWAYS beat
1613
+ [data-theme="dark"] in @layer ak-tokens.
1614
+ No inheritance gaps — every token is explicitly set.
1615
+ ══════════════════════════════════════════════════════════ */
1616
+
1617
+ /* ── Sidebar panel container ── */
1618
+ .ak-sidebar-panel {
1619
+ width: var(--ak-sidebar-width, 18rem);
1620
+ min-height: 52rem;
1621
+ background: var(--color-ak-bg);
1622
+ border-radius: var(--radius-ak-md);
1623
+ display: flex;
1624
+ flex-direction: column;
1625
+ font-family: var(--font-ak-sans);
1626
+ overflow: hidden;
1627
+ border: 1px solid var(--color-ak-border);
1628
+ }
1629
+
1630
+ /* ── Force dark (BEM modifier) ──
1631
+ Use: <aside class="ak-sidebar-panel ak-sidebar-panel--dark">
1632
+ Ignores global theme. Component is always dark. */
1633
+ .ak-sidebar-panel--dark {
1634
+ /* Surfaces */
1635
+ --color-ak-bg: #0a0a0a;
1636
+ --color-ak-surface: rgba(255,255,255,0.03);
1637
+ --color-ak-surface-2: rgba(255,255,255,0.05);
1638
+ --color-ak-hover: rgba(255,255,255,0.08);
1639
+ --color-ak-active: rgba(255,255,255,0.14);
1640
+ --color-ak-elevated: #ffffff;
1641
+ --color-ak-surface-raised: rgba(255,255,255,0.05);
1642
+ --color-ak-surface-raised-soft: rgba(255,255,255,0.03);
1643
+ --color-ak-surface-glass: rgba(255,255,255,0.05);
1644
+ --color-ak-surface-glass-strong: rgba(255,255,255,0.08);
1645
+ --color-ak-highlight-soft: rgba(255,255,255,0.06);
1646
+ --color-ak-highlight-strong: rgba(255,255,255,0.12);
1647
+ --color-ak-skeleton-base: rgba(255,255,255,0.05);
1648
+ --color-ak-skeleton-shine: rgba(255,255,255,0.08);
1649
+ --color-ak-overlay: rgba(0,0,0,0.7);
1650
+ --color-ak-on-primary: #000000;
1651
+ --color-ak-primary-subtle: rgba(255,255,255,0.05);
1652
+ /* Text */
1653
+ --color-ak-text: #f5f5f5;
1654
+ --color-ak-text-secondary: #b5b5b5;
1655
+ --color-ak-text-muted: #737373;
1656
+ --color-ak-text-disabled: #525252;
1657
+ --color-ak-text-inverse: #0a0a0a;
1658
+ --color-ak-text-link: #ffffff;
1659
+ --color-ak-text-placeholder: #71717a;
1660
+ /* Borders */
1661
+ --color-ak-border: rgba(255,255,255,0.08);
1662
+ --color-ak-border-subtle: rgba(255,255,255,0.06);
1663
+ --color-ak-border-strong: rgba(255,255,255,0.15);
1664
+ --color-ak-border-focus: #ffffff;
1665
+ /* Primary */
1666
+ --color-ak-primary: #ffffff;
1667
+ --color-ak-primary-hover: #e5e5e5;
1668
+ --color-ak-primary-active: #d4d4d4;
1669
+ /* Status */
1670
+ --color-ak-success: #22c55e;
1671
+ --color-ak-success-subtle: rgba(34,197,94,0.12);
1672
+ --color-ak-success-text: #4ade80;
1673
+ --color-ak-warning: #f59e0b;
1674
+ --color-ak-warning-subtle: rgba(245,158,11,0.12);
1675
+ --color-ak-warning-text: #fbbf24;
1676
+ --color-ak-danger: #ef4444;
1677
+ --color-ak-danger-subtle: rgba(239,68,68,0.12);
1678
+ --color-ak-danger-text: #f87171;
1679
+ --color-ak-info: #60a5fa;
1680
+ --color-ak-info-subtle: rgba(96,165,250,0.12);
1681
+ --color-ak-info-text: #93bbfd;
1682
+ --color-ak-pink: #f472b6;
1683
+ --color-ak-pink-subtle: rgba(244,114,182,0.12);
1684
+ /* Neutral scale (inverted for dark) */
1685
+ --color-ak-neutral-0: #111113;
1686
+ --color-ak-neutral-50: #18191b;
1687
+ --color-ak-neutral-100: #1e1f21;
1688
+ --color-ak-neutral-200: #252628;
1689
+ --color-ak-neutral-300: #333436;
1690
+ --color-ak-neutral-400: #52525b;
1691
+ --color-ak-neutral-500: #71717a;
1692
+ --color-ak-neutral-600: #a1a1aa;
1693
+ --color-ak-neutral-700: #d4d4d8;
1694
+ --color-ak-neutral-800: #e4e4e7;
1695
+ --color-ak-neutral-900: #f4f4f5;
1696
+ --color-ak-neutral-950: #fafafa;
1697
+ /* Primary scale (dark) */
1698
+ --color-ak-primary-50: rgba(255,255,255,0.04);
1699
+ --color-ak-primary-100: rgba(255,255,255,0.06);
1700
+ --color-ak-primary-200: rgba(255,255,255,0.10);
1701
+ --color-ak-primary-300: rgba(255,255,255,0.16);
1702
+ --color-ak-primary-400: rgba(255,255,255,0.24);
1703
+ --color-ak-primary-500: #a3a3a3;
1704
+ --color-ak-primary-600: #d4d4d4;
1705
+ --color-ak-primary-700: #e5e5e5;
1706
+ --color-ak-primary-800: #f5f5f5;
1707
+ --color-ak-primary-900: #ffffff;
1708
+ --color-ak-primary-950: #ffffff;
1709
+ /* Shadows */
1710
+ --shadow-ak-xs: 0 1px 2px rgba(0,0,0,0.3);
1711
+ --shadow-ak-sm: 0 1px 3px rgba(0,0,0,0.4);
1712
+ --shadow-ak-md: 0 4px 12px rgba(0,0,0,0.4);
1713
+ --shadow-ak-lg: 0 8px 30px rgba(0,0,0,0.5);
1714
+ --shadow-ak-xl: 0 16px 50px rgba(0,0,0,0.6);
1715
+ --shadow-ak-2xl: 0 24px 60px rgba(0,0,0,0.7);
1716
+ --shadow-ak-focus: 0 0 0 3px rgba(255,255,255,0.20);
1717
+ --shadow-ak-focus-primary: 0 0 0 3px rgba(129,140,248,0.30);
1718
+ --shadow-ak-focus-danger: 0 0 0 3px rgba(248,113,113,0.25);
1719
+ --shadow-ak-focus-success: 0 0 0 3px rgba(74,222,128,0.25);
1720
+ /* Visual treatment */
1721
+ border: none;
1722
+ box-shadow: var(--shadow-ak-lg);
1723
+ }
1724
+
1725
+ /* ── Force light (BEM modifier) ──
1726
+ Use: <aside class="ak-sidebar-panel ak-sidebar-panel--light">
1727
+ Ignores global theme. Component is always light. */
1728
+ .ak-sidebar-panel--light {
1729
+ /* Surfaces */
1730
+ --color-ak-bg: #ffffff;
1731
+ --color-ak-surface: #fafafa;
1732
+ --color-ak-surface-2: #f5f5f5;
1733
+ --color-ak-hover: #f7f7f7;
1734
+ --color-ak-active: #f0f0f0;
1735
+ --color-ak-elevated: #000000;
1736
+ --color-ak-surface-raised: #ffffff;
1737
+ --color-ak-surface-raised-soft: rgba(255,255,255,0.78);
1738
+ --color-ak-surface-glass: rgba(255,255,255,0.72);
1739
+ --color-ak-surface-glass-strong: rgba(255,255,255,0.84);
1740
+ --color-ak-highlight-soft: rgba(255,255,255,0.45);
1741
+ --color-ak-highlight-strong: rgba(255,255,255,0.72);
1742
+ --color-ak-skeleton-base: #ededed;
1743
+ --color-ak-skeleton-shine: rgba(255,255,255,0.72);
1744
+ --color-ak-overlay: rgba(0,0,0,0.5);
1745
+ --color-ak-on-primary: #ffffff;
1746
+ --color-ak-primary-subtle: #f5f5f5;
1747
+ /* Text */
1748
+ --color-ak-text: #18181b;
1749
+ --color-ak-text-secondary: #52525b;
1750
+ --color-ak-text-muted: #a1a1aa;
1751
+ --color-ak-text-disabled: #d4d4d8;
1752
+ --color-ak-text-inverse: #fafafa;
1753
+ --color-ak-text-link: #09090b;
1754
+ --color-ak-text-placeholder: #71717a;
1755
+ /* Borders */
1756
+ --color-ak-border: #e4e4e7;
1757
+ --color-ak-border-subtle: #f4f4f5;
1758
+ --color-ak-border-strong: #d4d4d8;
1759
+ --color-ak-border-focus: #09090b;
1760
+ /* Primary */
1761
+ --color-ak-primary: #000000;
1762
+ --color-ak-primary-hover: #1a1a1a;
1763
+ --color-ak-primary-active: #333333;
1764
+ /* Status */
1765
+ --color-ak-success: #16a34a;
1766
+ --color-ak-success-subtle: #f0fdf4;
1767
+ --color-ak-success-text: #15803d;
1768
+ --color-ak-warning: #d97706;
1769
+ --color-ak-warning-subtle: #fffbeb;
1770
+ --color-ak-warning-text: #b45309;
1771
+ --color-ak-danger: #dc2626;
1772
+ --color-ak-danger-subtle: #fef2f2;
1773
+ --color-ak-danger-text: #b91c1c;
1774
+ --color-ak-info: #2563eb;
1775
+ --color-ak-info-subtle: #eff6ff;
1776
+ --color-ak-info-text: #1d4ed8;
1777
+ --color-ak-pink: #db2777;
1778
+ --color-ak-pink-subtle: #fdf2f8;
1779
+ /* Neutral scale */
1780
+ --color-ak-neutral-0: #ffffff;
1781
+ --color-ak-neutral-50: #fafafa;
1782
+ --color-ak-neutral-100: #f5f5f5;
1783
+ --color-ak-neutral-200: #e5e5e5;
1784
+ --color-ak-neutral-300: #d4d4d4;
1785
+ --color-ak-neutral-400: #a3a3a3;
1786
+ --color-ak-neutral-500: #737373;
1787
+ --color-ak-neutral-600: #525252;
1788
+ --color-ak-neutral-700: #404040;
1789
+ --color-ak-neutral-800: #262626;
1790
+ --color-ak-neutral-900: #171717;
1791
+ --color-ak-neutral-950: #0a0a0a;
1792
+ /* Primary scale */
1793
+ --color-ak-primary-50: #f5f5f5;
1794
+ --color-ak-primary-100: #e5e5e5;
1795
+ --color-ak-primary-200: #cccccc;
1796
+ --color-ak-primary-300: #a3a3a3;
1797
+ --color-ak-primary-400: #737373;
1798
+ --color-ak-primary-500: #525252;
1799
+ --color-ak-primary-600: #404040;
1800
+ --color-ak-primary-700: #333333;
1801
+ --color-ak-primary-800: #1a1a1a;
1802
+ --color-ak-primary-900: #000000;
1803
+ --color-ak-primary-950: #000000;
1804
+ /* Shadows */
1805
+ --shadow-ak-xs: 0 1px 2px rgba(0,0,0,0.04);
1806
+ --shadow-ak-sm: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
1807
+ --shadow-ak-md: 0 4px 12px rgba(0,0,0,0.06), 0 2px 4px rgba(0,0,0,0.04);
1808
+ --shadow-ak-lg: 0 8px 30px rgba(0,0,0,0.08), 0 4px 8px rgba(0,0,0,0.04);
1809
+ --shadow-ak-xl: 0 16px 50px rgba(0,0,0,0.1), 0 8px 16px rgba(0,0,0,0.05);
1810
+ --shadow-ak-2xl: 0 24px 60px rgba(0,0,0,0.14);
1811
+ --shadow-ak-focus: 0 0 0 3px rgba(0,0,0,0.08);
1812
+ --shadow-ak-focus-primary: 0 0 0 3px rgba(0,0,0,0.15);
1813
+ --shadow-ak-focus-danger: 0 0 0 3px rgba(220,38,38,0.08);
1814
+ --shadow-ak-focus-success: 0 0 0 3px rgba(22,163,74,0.08);
1815
+ /* Visual treatment */
1816
+ border: 1px solid var(--color-ak-border);
1817
+ box-shadow: none;
1818
+ }
1819
+