@kolkrabbi/kol-theme 0.6.0 → 0.7.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,1225 @@
1
+ /* Chess-Specific Styles */
2
+
3
+ .chess-board-wrapper {
4
+ display: flex;
5
+ flex-direction: column;
6
+ align-items: center;
7
+ gap: 8px;
8
+ }
9
+
10
+ .chess-board__files {
11
+ display: grid;
12
+ grid-template-columns: repeat(8, minmax(0, 1fr));
13
+ gap: 8px;
14
+ width: 760px;
15
+ }
16
+
17
+ .chess-board__files.top {
18
+ margin-bottom: -4px;
19
+ }
20
+
21
+ .chess-board__files.bottom {
22
+ margin-top: -4px;
23
+ grid-template-columns: minmax(0, 1fr) repeat(8, minmax(0, 1fr)) minmax(0, 1fr);
24
+ }
25
+
26
+ .chess-board-row {
27
+ display: flex;
28
+ align-items: center;
29
+ gap: 8px;
30
+ }
31
+
32
+ .chess-board__ranks {
33
+ display: grid;
34
+ grid-template-rows: repeat(8, minmax(0, 1fr));
35
+ gap: 8px;
36
+ }
37
+
38
+ .chess-board {
39
+ width: 760px;
40
+ height: 760px;
41
+ border-radius: 4px;
42
+ }
43
+
44
+ .chess-board--fluid {
45
+ width: 100%;
46
+ height: auto;
47
+ aspect-ratio: 1;
48
+ max-width: 760px;
49
+ min-width: 280px;
50
+ }
51
+
52
+
53
+ .chess-board__grid {
54
+ display: grid;
55
+ grid-template-columns: repeat(8, 1fr);
56
+ grid-template-rows: repeat(8, 1fr);
57
+ width: 100%;
58
+ height: 100%;
59
+ }
60
+
61
+ .chess-square {
62
+ display: flex;
63
+ align-items: center;
64
+ justify-content: center;
65
+ position: relative;
66
+ }
67
+
68
+ .chess-square--light {
69
+ background-color: #ffffff;
70
+ color: #0f0f0f;
71
+ }
72
+
73
+ .chess-square--dark {
74
+ background-color: #0a682a;
75
+ color: #f5fff4;
76
+ }
77
+
78
+ .chess-square--highlighted {
79
+ position: relative;
80
+ }
81
+
82
+ .chess-square--highlighted::after {
83
+ content: '';
84
+ position: absolute;
85
+ inset: 0;
86
+ background-color: rgba(251, 191, 36, 0.4);
87
+ pointer-events: none;
88
+ z-index: 1;
89
+ }
90
+
91
+ .chess-board__coordinate-label {
92
+ display: inline-flex;
93
+ align-items: center;
94
+ justify-content: center;
95
+ padding: 4px;
96
+ border-radius: 4px;
97
+ background: color-mix(in srgb, var(--kol-surface-on-primary) 12%, transparent);
98
+ color: var(--kol-surface-primary);
99
+ min-width: 24px;
100
+ min-height: 24px;
101
+ font-family: var(--kol-font-family-mono);
102
+ font-size: 0.65rem;
103
+ letter-spacing: 0.12em;
104
+ text-transform: uppercase;
105
+ }
106
+
107
+ .chess-board__corner-label {
108
+ display: inline-flex;
109
+ align-items: center;
110
+ justify-content: center;
111
+ padding: 4px;
112
+ border-radius: 4px;
113
+ background: color-mix(in srgb, var(--kol-surface-on-primary) 12%, transparent);
114
+ color: var(--kol-surface-primary);
115
+ min-width: 24px;
116
+ min-height: 24px;
117
+ font-family: var(--kol-font-family-mono);
118
+ font-size: 0.65rem;
119
+ letter-spacing: 0.12em;
120
+ text-transform: uppercase;
121
+ }
122
+
123
+ .board-playback {
124
+ display: grid;
125
+ grid-template-columns: repeat(2, minmax(0, auto));
126
+ grid-template-rows: auto auto;
127
+ gap: 20px 40px;
128
+ justify-content: center;
129
+ color: var(--kol-surface-on-secondary);
130
+ --board-sidebar-width: minmax(320px, 420px);
131
+ }
132
+
133
+ .board-playback--sidebar-360 {
134
+ --board-sidebar-width: 360px;
135
+ }
136
+
137
+ .board-playback__toolbar {
138
+ display: flex;
139
+ gap: 12px;
140
+ }
141
+
142
+ .board-playback__toolbar--left {
143
+ grid-column: 1 / 2;
144
+ justify-self: start;
145
+ }
146
+
147
+ .board-playback__toolbar--right {
148
+ grid-column: 2 / 3;
149
+ justify-self: end;
150
+ }
151
+
152
+ .board-toolbar__button {
153
+ border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 12%, transparent);
154
+ background: color-mix(in srgb, var(--kol-surface-on-secondary) 6%, transparent);
155
+ color: var(--kol-surface-on-secondary);
156
+ border-radius: 10px;
157
+ padding: 10px 14px;
158
+ font-family: var(--kol-font-family-mono);
159
+ font-size: 0.75rem;
160
+ letter-spacing: 0.12em;
161
+ text-transform: uppercase;
162
+ transition: border-color 120ms ease, background 120ms ease;
163
+ }
164
+
165
+ .board-toolbar__button--compact {
166
+ padding: 8px 12px;
167
+ font-size: 0.68rem;
168
+ }
169
+
170
+ .board-toolbar__button:hover {
171
+ border-color: color-mix(in srgb, var(--kol-accent-primary) 35%, transparent);
172
+ background: color-mix(in srgb, var(--kol-accent-primary) 14%, transparent);
173
+ }
174
+
175
+ .board-toolbar__button:active {
176
+ transform: translateY(1px);
177
+ }
178
+
179
+ .board-toolbar__button--active {
180
+ border-color: color-mix(in srgb, var(--kol-accent-primary) 50%, transparent);
181
+ background: color-mix(in srgb, var(--kol-accent-primary) 18%, transparent);
182
+ color: var(--kol-accent-primary);
183
+ }
184
+
185
+ .board-playback__content {
186
+ grid-column: 1 / -1;
187
+ display: grid;
188
+ grid-template-columns: 1fr var(--board-sidebar-width);
189
+ gap: 32px;
190
+ }
191
+
192
+ .board-playback__board {
193
+ position: relative;
194
+ }
195
+
196
+ .board-playback__coordinates {
197
+ position: absolute;
198
+ display: flex;
199
+ gap: 6px;
200
+ font-family: var(--kol-font-family-mono);
201
+ font-size: 0.75rem;
202
+ letter-spacing: 0.12em;
203
+ text-transform: uppercase;
204
+ opacity: 0.7;
205
+ }
206
+
207
+ .board-playback__coordinates--files {
208
+ inset-inline: 0;
209
+ bottom: -24px;
210
+ justify-content: space-between;
211
+ }
212
+
213
+ .board-playback__coordinates--ranks {
214
+ inset-block: 0;
215
+ right: -24px;
216
+ flex-direction: column;
217
+ justify-content: space-between;
218
+ align-items: center;
219
+ }
220
+
221
+ .board-playback__sidebar {
222
+ background: var(--kol-surface-secondary);
223
+ border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 8%, transparent);
224
+ border-radius: 4px;
225
+ padding: 8px;
226
+ display: flex;
227
+ flex-direction: column;
228
+ gap: 20px;
229
+ height: 100%;
230
+ flex: 1 1 auto;
231
+ }
232
+
233
+ .board-playback__sidebar--plain {
234
+ background: var(--kol-surface-secondary);
235
+ border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 8%, transparent);
236
+ border-radius: 4px;
237
+ padding: 0;
238
+ display: flex;
239
+ flex-direction: column;
240
+ gap: 20px;
241
+ height: 100%;
242
+ flex: 1 1 auto;
243
+ }
244
+
245
+ .board-playback__sidebar--minimal {
246
+ background: transparent;
247
+ border: none;
248
+ border-radius: 0;
249
+ padding: 24px;
250
+ display: flex;
251
+ flex-direction: column;
252
+ gap: 20px;
253
+ overflow: visible;
254
+ height: 100%;
255
+ flex: 1 1 auto;
256
+ }
257
+
258
+ .board-playback__sidebar-header {
259
+ display: flex;
260
+ flex-direction: column;
261
+ gap: 16px;
262
+ }
263
+
264
+
265
+ .board-playback__badge {
266
+ display: inline-flex;
267
+ align-items: center;
268
+ gap: 6px;
269
+ padding: 6px 10px;
270
+ border-radius: 999px;
271
+ background: color-mix(in srgb, var(--kol-accent-primary) 24%, transparent);
272
+ color: var(--kol-accent-primary);
273
+ font-family: var(--kol-font-family-mono);
274
+ font-size: 0.7rem;
275
+ letter-spacing: 0.12em;
276
+ text-transform: uppercase;
277
+ }
278
+
279
+ .board-playback__title {
280
+ font-family: var(--kol-font-family-heading);
281
+ font-size: 1.2rem;
282
+ letter-spacing: 0.06em;
283
+ margin: 6px 0 4px;
284
+ }
285
+
286
+ .board-playback__meta {
287
+ font-family: var(--kol-font-family-mono);
288
+ font-size: 0.75rem;
289
+ letter-spacing: 0.12em;
290
+ text-transform: uppercase;
291
+ opacity: 0.6;
292
+ }
293
+
294
+ .board-playback__select {
295
+ appearance: none;
296
+ border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 12%, transparent);
297
+ background: color-mix(in srgb, var(--kol-surface-on-secondary) 6%, transparent);
298
+ border-radius: 999px;
299
+ padding: 10px 16px;
300
+ font-family: var(--kol-font-family-mono);
301
+ font-size: 0.75rem;
302
+ letter-spacing: 0.1em;
303
+ color: var(--kol-surface-on-secondary);
304
+ text-transform: uppercase;
305
+ }
306
+
307
+ .board-playback__controls {
308
+ display: flex;
309
+ gap: 8px;
310
+ justify-content: space-between;
311
+ }
312
+
313
+ .board-playback__controls button {
314
+ flex: 1;
315
+ border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 10%, transparent);
316
+ background: color-mix(in srgb, var(--kol-surface-on-secondary) 4%, transparent);
317
+ border-radius: 10px;
318
+ padding: 10px;
319
+ font-family: var(--kol-font-family-mono);
320
+ font-size: 0.75rem;
321
+ letter-spacing: 0.12em;
322
+ text-transform: uppercase;
323
+ color: var(--kol-surface-on-secondary);
324
+ transition: background 120ms ease, border-color 120ms ease;
325
+ }
326
+
327
+ .board-playback__controls button:hover {
328
+ background: color-mix(in srgb, var(--kol-accent-primary) 18%, transparent);
329
+ border-color: color-mix(in srgb, var(--kol-accent-primary) 35%, transparent);
330
+ }
331
+
332
+ .board-playback__panel {
333
+ display: grid;
334
+ grid-template-columns: repeat(3, minmax(0, 1fr));
335
+ gap: 12px;
336
+ }
337
+
338
+ .board-playback__label {
339
+ font-family: var(--kol-font-family-mono);
340
+ font-size: 0.7rem;
341
+ letter-spacing: 0.12em;
342
+ text-transform: uppercase;
343
+ opacity: 0.6;
344
+ }
345
+
346
+ .board-playback__value {
347
+ font-family: var(--kol-font-family-heading);
348
+ font-size: 1.1rem;
349
+ letter-spacing: 0.04em;
350
+ }
351
+
352
+ .board-playback__moves {
353
+ display: flex;
354
+ flex-direction: column;
355
+ gap: 8px;
356
+ font-family: var(--kol-font-family-mono);
357
+ font-size: 0.8rem;
358
+ letter-spacing: 0.08em;
359
+ text-transform: uppercase;
360
+ }
361
+
362
+ .board-playback__moves ol {
363
+ list-style: decimal;
364
+ margin: 0;
365
+ padding-left: 18px;
366
+ display: grid;
367
+ gap: 4px;
368
+ }
369
+
370
+ .board-playback__palette {
371
+ display: flex;
372
+ flex-direction: column;
373
+ gap: 10px;
374
+ padding: 12px 16px;
375
+ border-radius: 12px;
376
+ background: color-mix(in srgb, var(--kol-surface-on-secondary) 4%, transparent);
377
+ border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 8%, transparent);
378
+ }
379
+
380
+ .board-playback__palette-row {
381
+ display: grid;
382
+ grid-template-columns: repeat(8, minmax(0, 1fr));
383
+ justify-items: center;
384
+ }
385
+
386
+ .board-playback__section {
387
+ background: color-mix(in srgb, var(--kol-surface-on-secondary) 3%, transparent);
388
+ border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 8%, transparent);
389
+ border-radius: 10px;
390
+ padding: 14px 16px;
391
+ display: flex;
392
+ flex-direction: column;
393
+ gap: 12px;
394
+ }
395
+
396
+ .board-playback__section-header {
397
+ display: flex;
398
+ justify-content: space-between;
399
+ align-items: center;
400
+ font-family: var(--kol-font-family-mono);
401
+ letter-spacing: 0.1em;
402
+ text-transform: uppercase;
403
+ font-size: 0.75rem;
404
+ }
405
+
406
+ .board-playback__section-body--two-col {
407
+ display: grid;
408
+ grid-template-columns: repeat(2, minmax(0, 1fr));
409
+ gap: 12px;
410
+ }
411
+
412
+ .board-playback__notation {
413
+ font-family: var(--kol-font-family-mono);
414
+ font-size: 0.75rem;
415
+ letter-spacing: 0.1em;
416
+ }
417
+
418
+ .board-playback__notes {
419
+ min-height: 110px;
420
+ border-radius: 10px;
421
+ padding: 16px;
422
+ background: color-mix(in srgb, var(--kol-surface-on-secondary) 4%, transparent);
423
+ font-family: var(--kol-font-family-mono);
424
+ font-size: 0.8rem;
425
+ letter-spacing: 0.08em;
426
+ text-transform: uppercase;
427
+ }
428
+
429
+ .board-playback__footer {
430
+ margin-top: auto;
431
+ display: flex;
432
+ align-items: center;
433
+ justify-content: space-between;
434
+ font-family: var(--kol-font-family-mono);
435
+ font-size: 0.7rem;
436
+ letter-spacing: 0.12em;
437
+ text-transform: uppercase;
438
+ opacity: 0.7;
439
+ }
440
+
441
+ .board-playback__avatar {
442
+ display: flex;
443
+ align-items: center;
444
+ gap: 10px;
445
+ }
446
+
447
+ .board-playback__avatar-img {
448
+ width: 36px;
449
+ height: 36px;
450
+ border-radius: 999px;
451
+ background: color-mix(in srgb, var(--kol-surface-on-secondary) 12%, transparent);
452
+ }
453
+
454
+ .board-playback__avatar-name {
455
+ font-family: var(--kol-font-family-heading);
456
+ font-size: 0.9rem;
457
+ letter-spacing: 0.06em;
458
+ }
459
+
460
+ .board-playback__avatar-meta {
461
+ font-size: 0.65rem;
462
+ letter-spacing: 0.12em;
463
+ }
464
+
465
+ .analysis-controls {
466
+ display: flex;
467
+ flex-wrap: wrap;
468
+ align-items: center;
469
+ gap: 16px;
470
+ justify-content: space-between;
471
+ }
472
+
473
+ .analysis-control {
474
+ flex: 0 1 auto;
475
+ min-width: 200px;
476
+ }
477
+
478
+ .analysis-control-group {
479
+ display: flex;
480
+ flex-wrap: wrap;
481
+ gap: 16px;
482
+ }
483
+
484
+ .analysis-control--search {
485
+ flex: 0 0 320px;
486
+ max-width: 320px;
487
+ }
488
+
489
+ .analysis-table-wrapper {
490
+ display: flex;
491
+ flex-direction: column;
492
+ gap: 16px;
493
+ }
494
+
495
+ .analysis-table-empty {
496
+ padding: 32px;
497
+ text-align: center;
498
+ border-radius: 16px;
499
+ border: 1px solid var(--kol-border-default);
500
+ background: color-mix(in srgb, var(--kol-surface-secondary) 92%, transparent);
501
+ color: var(--kol-surface-on-secondary);
502
+ }
503
+
504
+ .analysis-table__cell {
505
+ white-space: normal;
506
+ }
507
+
508
+ .analysis-table__stack {
509
+ display: flex;
510
+ flex-direction: column;
511
+ gap: 4px;
512
+ }
513
+
514
+ .analysis-table__result {
515
+ font-family: var(--kol-font-family-heading);
516
+ font-size: 0.85rem;
517
+ letter-spacing: 0.08em;
518
+ text-transform: uppercase;
519
+ }
520
+
521
+ .analysis-table__result--win {
522
+ color: var(--kol-accent-primary);
523
+ }
524
+
525
+ .analysis-table__result--draw,
526
+ .analysis-table__result--stalemate {
527
+ color: color-mix(in srgb, var(--kol-surface-on-primary) 70%, transparent);
528
+ }
529
+
530
+ .analysis-table__result--loss,
531
+ .analysis-table__result--resigned,
532
+ .analysis-table__result--timeout,
533
+ .analysis-table__result--checkmated,
534
+ .analysis-table__result--abandoned {
535
+ color: var(--kol-status-danger);
536
+ }
537
+
538
+ .analysis-table__link {
539
+ display: inline-flex;
540
+ align-items: center;
541
+ gap: 6px;
542
+ font-family: var(--kol-font-family-mono);
543
+ font-size: 0.7rem;
544
+ letter-spacing: 0.12em;
545
+ text-transform: uppercase;
546
+ color: var(--kol-accent-primary);
547
+ }
548
+
549
+ .analysis-table__link:hover {
550
+ text-decoration: underline;
551
+ }
552
+
553
+ .analysis-table__actions {
554
+ display: inline-flex;
555
+ align-items: center;
556
+ gap: 12px;
557
+ }
558
+
559
+ .analysis-table__link-button {
560
+ background: none;
561
+ border: none;
562
+ padding: 0;
563
+ cursor: pointer;
564
+ font: inherit;
565
+ }
566
+
567
+ .analysis-table__actions-cell {
568
+ text-align: right;
569
+ white-space: nowrap;
570
+ }
571
+
572
+ .analysis-table__actions-header {
573
+ text-align: right;
574
+ }
575
+
576
+ .analysis-table__toggle {
577
+ margin-top: 16px;
578
+ align-self: flex-end;
579
+ font-family: var(--kol-font-family-mono);
580
+ font-size: 0.7rem;
581
+ letter-spacing: 0.12em;
582
+ text-transform: uppercase;
583
+ color: var(--kol-accent-primary);
584
+ background: none;
585
+ border: none;
586
+ cursor: pointer;
587
+ }
588
+
589
+ .analysis-table__toggle:hover {
590
+ text-decoration: underline;
591
+ }
592
+
593
+ @media (max-width: 1024px) {
594
+ .analysis-controls {
595
+ gap: 12px;
596
+ }
597
+
598
+ .analysis-control-group {
599
+ flex: 1 1 100%;
600
+ }
601
+
602
+ .analysis-control--search {
603
+ flex: 1 1 100%;
604
+ max-width: none;
605
+ }
606
+
607
+ .analysis-table-wrapper {
608
+ gap: 12px;
609
+ }
610
+ }
611
+
612
+ /* Chess Hero Dashboard */
613
+ .chess-hero {
614
+ display: flex;
615
+ flex-direction: column;
616
+ gap: 20px;
617
+ width: 100%;
618
+ }
619
+
620
+ .chess-hero__metrics {
621
+ display: grid;
622
+ grid-template-columns: repeat(4, 1fr);
623
+ gap: 20px;
624
+ width: 100%;
625
+ }
626
+
627
+ .chess-hero-metric {
628
+ background: var(--kol-surface-secondary);
629
+ border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 8%, transparent);
630
+ border-radius: 12px;
631
+ padding: 20px;
632
+ display: flex;
633
+ flex-direction: column;
634
+ gap: 8px;
635
+ min-height: 140px;
636
+ }
637
+
638
+ .chess-hero-metric__header {
639
+ display: flex;
640
+ align-items: center;
641
+ justify-content: space-between;
642
+ margin-bottom: 4px;
643
+ }
644
+
645
+ .chess-hero-metric__icon {
646
+ font-size: 1.25rem;
647
+ opacity: 0.7;
648
+ }
649
+
650
+ .chess-hero-metric__menu {
651
+ background: none;
652
+ border: none;
653
+ color: var(--kol-surface-on-secondary);
654
+ opacity: 0.4;
655
+ cursor: pointer;
656
+ font-size: 1.25rem;
657
+ padding: 0;
658
+ transition: opacity 0.2s;
659
+ }
660
+
661
+ .chess-hero-metric__menu:hover {
662
+ opacity: 0.7;
663
+ }
664
+
665
+ .chess-hero-metric__label {
666
+ font-family: var(--kol-font-family-mono);
667
+ font-size: 0.85rem;
668
+ letter-spacing: 0.08em;
669
+ opacity: 0.7;
670
+ }
671
+
672
+ .chess-hero-metric__value {
673
+ font-family: var(--kol-font-family-heading);
674
+ font-size: 2rem;
675
+ font-weight: 600;
676
+ letter-spacing: -0.02em;
677
+ margin-top: auto;
678
+ }
679
+
680
+ .chess-hero-metric__delta {
681
+ display: inline-flex;
682
+ align-items: center;
683
+ gap: 6px;
684
+ font-family: var(--kol-font-family-mono);
685
+ font-size: 0.75rem;
686
+ letter-spacing: 0.08em;
687
+ padding: 4px 10px;
688
+ border-radius: 6px;
689
+ align-self: flex-start;
690
+ }
691
+
692
+ .chess-hero-metric__delta--up {
693
+ background: color-mix(in srgb, #0a682a 20%, transparent);
694
+ color: #5dd27f;
695
+ }
696
+
697
+ .chess-hero-metric__delta--down {
698
+ background: color-mix(in srgb, #d25d5d 20%, transparent);
699
+ color: #f59090;
700
+ }
701
+
702
+ .chess-hero-metric__delta--neutral {
703
+ background: color-mix(in srgb, var(--kol-surface-on-secondary) 12%, transparent);
704
+ opacity: 0.7;
705
+ }
706
+
707
+ .chess-hero__card {
708
+ background: var(--kol-surface-secondary);
709
+ border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 8%, transparent);
710
+ border-radius: 12px;
711
+ padding: 24px;
712
+ display: grid;
713
+ grid-template-columns: 1fr 320px;
714
+ gap: 24px;
715
+ width: 100%;
716
+ height: 600px;
717
+ }
718
+
719
+ .chess-hero__main {
720
+ display: flex;
721
+ flex-direction: column;
722
+ gap: 16px;
723
+ height: 100%;
724
+ }
725
+
726
+ .chess-hero__header {
727
+ display: flex;
728
+ align-items: flex-start;
729
+ justify-content: space-between;
730
+ }
731
+
732
+ .chess-hero__title {
733
+ font-family: var(--kol-font-family-heading);
734
+ font-size: 1rem;
735
+ letter-spacing: 0.08em;
736
+ text-transform: uppercase;
737
+ margin: 0 0 8px 0;
738
+ opacity: 0.8;
739
+ }
740
+
741
+ .chess-hero__subtitle {
742
+ display: flex;
743
+ align-items: baseline;
744
+ gap: 12px;
745
+ }
746
+
747
+ .chess-hero__value {
748
+ font-family: var(--kol-font-family-heading);
749
+ font-size: 2.25rem;
750
+ font-weight: 600;
751
+ letter-spacing: -0.02em;
752
+ }
753
+
754
+ .chess-hero__delta {
755
+ font-family: var(--kol-font-family-mono);
756
+ font-size: 0.85rem;
757
+ letter-spacing: 0.08em;
758
+ padding: 4px 10px;
759
+ border-radius: 6px;
760
+ background: color-mix(in srgb, #0a682a 20%, transparent);
761
+ color: #5dd27f;
762
+ }
763
+
764
+ .chess-hero__legend {
765
+ display: flex;
766
+ gap: 20px;
767
+ font-family: var(--kol-font-family-mono);
768
+ font-size: 0.75rem;
769
+ letter-spacing: 0.08em;
770
+ opacity: 0.7;
771
+ }
772
+
773
+ .chess-hero__legend-item {
774
+ display: flex;
775
+ align-items: center;
776
+ gap: 8px;
777
+ }
778
+
779
+ .chess-hero__legend-dot {
780
+ width: 10px;
781
+ height: 10px;
782
+ border-radius: 50%;
783
+ }
784
+
785
+ .chess-hero__legend-dot--primary {
786
+ background: rgba(255, 140, 60, 0.9);
787
+ }
788
+
789
+ .chess-hero__legend-dot--secondary {
790
+ background: rgba(245, 210, 69, 0.7);
791
+ }
792
+
793
+ .chess-hero__chart {
794
+ position: relative;
795
+ flex: 1;
796
+ min-height: 0;
797
+ display: flex;
798
+ flex-direction: column;
799
+ }
800
+
801
+ .chess-hero__chart-grid {
802
+ position: absolute;
803
+ inset: 0;
804
+ background-image:
805
+ linear-gradient(to right, currentColor 1px, transparent 1px),
806
+ linear-gradient(to top, currentColor 1px, transparent 1px);
807
+ background-size: calc(100% / 12) 100%, 100% calc(100% / 5);
808
+ opacity: 0.08;
809
+ pointer-events: none;
810
+ }
811
+
812
+ .chess-hero__chart-svg {
813
+ flex: 1;
814
+ width: 100%;
815
+ }
816
+
817
+ .chess-hero__chart-axis {
818
+ display: flex;
819
+ justify-content: space-between;
820
+ padding-top: 12px;
821
+ font-family: var(--kol-font-family-mono);
822
+ font-size: 0.7rem;
823
+ letter-spacing: 0.08em;
824
+ text-transform: uppercase;
825
+ opacity: 0.5;
826
+ }
827
+
828
+ .chess-hero__chart-label {
829
+ flex: 1;
830
+ text-align: center;
831
+ }
832
+
833
+ .chess-hero__side {
834
+ display: flex;
835
+ flex-direction: column;
836
+ gap: 16px;
837
+ border-left: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 8%, transparent);
838
+ padding-left: 28px;
839
+ height: 100%;
840
+ }
841
+
842
+ .chess-hero__side-metric {
843
+ display: flex;
844
+ flex-direction: column;
845
+ gap: 6px;
846
+ }
847
+
848
+ .chess-hero__side-icon {
849
+ font-size: 1.125rem;
850
+ opacity: 0.6;
851
+ margin-bottom: 2px;
852
+ }
853
+
854
+ .chess-hero__side-label {
855
+ font-family: var(--kol-font-family-mono);
856
+ font-size: 0.75rem;
857
+ letter-spacing: 0.08em;
858
+ opacity: 0.6;
859
+ }
860
+
861
+ .chess-hero__side-value {
862
+ font-family: var(--kol-font-family-heading);
863
+ font-size: 1.75rem;
864
+ font-weight: 600;
865
+ letter-spacing: -0.02em;
866
+ }
867
+
868
+ .chess-hero__side-delta {
869
+ font-family: var(--kol-font-family-mono);
870
+ font-size: 0.7rem;
871
+ letter-spacing: 0.08em;
872
+ padding: 3px 8px;
873
+ border-radius: 4px;
874
+ background: color-mix(in srgb, #0a682a 20%, transparent);
875
+ color: #5dd27f;
876
+ align-self: flex-start;
877
+ }
878
+
879
+ .chess-hero__bar-chart {
880
+ display: flex;
881
+ align-items: flex-end;
882
+ gap: 8px;
883
+ height: 80px;
884
+ padding: 8px 0;
885
+ }
886
+
887
+ .chess-hero__bar {
888
+ flex: 1;
889
+ display: flex;
890
+ align-items: flex-end;
891
+ height: 100%;
892
+ }
893
+
894
+ .chess-hero__bar-fill {
895
+ width: 100%;
896
+ background: linear-gradient(180deg, rgba(245, 210, 69, 0.9) 0%, rgba(255, 140, 60, 0.8) 100%);
897
+ border-radius: 4px 4px 0 0;
898
+ min-height: 8px;
899
+ transition: opacity 0.2s;
900
+ }
901
+
902
+ .chess-hero__bar-fill:hover {
903
+ opacity: 0.8;
904
+ }
905
+
906
+ .chess-hero__line-chart {
907
+ height: 60px;
908
+ background: color-mix(in srgb, var(--kol-surface-on-secondary) 4%, transparent);
909
+ border-radius: 8px;
910
+ padding: 12px;
911
+ }
912
+
913
+ .chess-hero__line-chart svg {
914
+ width: 100%;
915
+ height: 100%;
916
+ }
917
+
918
+ .chess-hero__side-footer {
919
+ display: flex;
920
+ align-items: center;
921
+ justify-content: space-between;
922
+ font-family: var(--kol-font-family-mono);
923
+ font-size: 0.7rem;
924
+ letter-spacing: 0.08em;
925
+ padding-top: 4px;
926
+ }
927
+
928
+ .chess-hero__side-period {
929
+ opacity: 0.5;
930
+ }
931
+
932
+ .chess-hero__side-status {
933
+ display: flex;
934
+ align-items: center;
935
+ gap: 6px;
936
+ opacity: 0.6;
937
+ }
938
+
939
+ .chess-hero__side-status-dot {
940
+ width: 6px;
941
+ height: 6px;
942
+ border-radius: 50%;
943
+ background: #5dd27f;
944
+ animation: pulse 2s ease-in-out infinite;
945
+ }
946
+
947
+ @keyframes pulse {
948
+ 0%, 100% {
949
+ opacity: 1;
950
+ }
951
+ 50% {
952
+ opacity: 0.4;
953
+ }
954
+ }
955
+
956
+ @keyframes fadeIn {
957
+ from {
958
+ opacity: 0;
959
+ transform: translateY(10px);
960
+ }
961
+ to {
962
+ opacity: 1;
963
+ transform: translateY(0);
964
+ }
965
+ }
966
+
967
+ @keyframes numberTick {
968
+ from {
969
+ transform: translateY(-2px);
970
+ opacity: 0.8;
971
+ }
972
+ to {
973
+ transform: translateY(0);
974
+ opacity: 1;
975
+ }
976
+ }
977
+
978
+ @keyframes lineDraw {
979
+ from {
980
+ stroke-dashoffset: 100;
981
+ }
982
+ to {
983
+ stroke-dashoffset: 0;
984
+ }
985
+ }
986
+
987
+ .animate-fade-in {
988
+ animation: fadeIn 0.6s ease-out forwards;
989
+ }
990
+
991
+ .animate-number-tick {
992
+ animation: numberTick 0.3s ease-out;
993
+ }
994
+
995
+ .chess-hero__side-link {
996
+ background: none;
997
+ border: none;
998
+ color: var(--kol-accent-primary);
999
+ font-family: var(--kol-font-family-mono);
1000
+ font-size: 0.7rem;
1001
+ letter-spacing: 0.08em;
1002
+ cursor: pointer;
1003
+ padding: 0;
1004
+ transition: opacity 0.2s;
1005
+ }
1006
+
1007
+ .chess-hero__side-link:hover {
1008
+ opacity: 0.7;
1009
+ text-decoration: underline;
1010
+ }
1011
+
1012
+ /* Donut Chart */
1013
+ .chess-donut-chart {
1014
+ display: flex;
1015
+ flex-direction: column;
1016
+ gap: 16px;
1017
+ width: 100%;
1018
+ }
1019
+
1020
+ .chess-donut-chart__header {
1021
+ display: flex;
1022
+ align-items: center;
1023
+ justify-content: space-between;
1024
+ }
1025
+
1026
+ .chess-donut-chart__title {
1027
+ font-family: var(--kol-font-family-heading);
1028
+ font-size: 0.85rem;
1029
+ letter-spacing: 0.08em;
1030
+ text-transform: capitalize;
1031
+ opacity: 0.8;
1032
+ }
1033
+
1034
+ .chess-donut-chart__legend {
1035
+ display: flex;
1036
+ gap: 16px;
1037
+ font-family: var(--kol-font-family-mono);
1038
+ font-size: 0.7rem;
1039
+ letter-spacing: 0.08em;
1040
+ opacity: 0.7;
1041
+ }
1042
+
1043
+ .chess-donut-chart__legend-item {
1044
+ display: flex;
1045
+ align-items: center;
1046
+ gap: 6px;
1047
+ }
1048
+
1049
+ .chess-donut-chart__legend-dot {
1050
+ width: 8px;
1051
+ height: 8px;
1052
+ border-radius: 50%;
1053
+ display: inline-block;
1054
+ }
1055
+
1056
+ .chess-donut-chart__container {
1057
+ display: flex;
1058
+ flex-direction: column;
1059
+ gap: 12px;
1060
+ align-items: center;
1061
+ }
1062
+
1063
+ .chess-donut-chart__svg {
1064
+ width: 100%;
1065
+ max-width: 400px;
1066
+ height: auto;
1067
+ aspect-ratio: 1;
1068
+ }
1069
+
1070
+ .chess-donut-chart__legend-list {
1071
+ display: flex;
1072
+ flex-direction: column;
1073
+ gap: 8px;
1074
+ width: 100%;
1075
+ max-width: 240px;
1076
+ font-family: var(--kol-font-family-mono);
1077
+ font-size: 0.75rem;
1078
+ letter-spacing: 0.08em;
1079
+ }
1080
+
1081
+ .chess-donut-chart__legend-row {
1082
+ display: flex;
1083
+ align-items: center;
1084
+ gap: 12px;
1085
+ padding: 6px 0;
1086
+ border-bottom: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 6%, transparent);
1087
+ }
1088
+
1089
+ .chess-donut-chart__legend-row input[type="checkbox"] {
1090
+ width: 14px;
1091
+ height: 14px;
1092
+ cursor: pointer;
1093
+ }
1094
+
1095
+ .chess-donut-chart__legend-label {
1096
+ flex: 1;
1097
+ opacity: 0.8;
1098
+ }
1099
+
1100
+ .chess-donut-chart__legend-value {
1101
+ font-weight: 600;
1102
+ opacity: 0.9;
1103
+ }
1104
+
1105
+ /* Stacked Bar Chart */
1106
+ .chess-stacked-bar-chart {
1107
+ display: flex;
1108
+ flex-direction: column;
1109
+ gap: 12px;
1110
+ padding: 16px;
1111
+ border-radius: 12px;
1112
+ background: var(--kol-surface-secondary);
1113
+ border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 8%, transparent);
1114
+ min-height: 200px;
1115
+ }
1116
+
1117
+ .chess-stacked-bar-chart__header {
1118
+ display: flex;
1119
+ flex-direction: column;
1120
+ gap: 4px;
1121
+ }
1122
+
1123
+ .chess-stacked-bar-chart__header-top {
1124
+ display: flex;
1125
+ justify-content: space-between;
1126
+ align-items: center;
1127
+ margin-bottom: 8px;
1128
+ }
1129
+
1130
+ .chess-stacked-bar-chart__icon {
1131
+ font-size: 1rem;
1132
+ opacity: 0.4;
1133
+ letter-spacing: -2px;
1134
+ }
1135
+
1136
+ .chess-stacked-bar-chart__menu {
1137
+ background: none;
1138
+ border: none;
1139
+ color: var(--kol-surface-on-secondary);
1140
+ font-size: 1.2rem;
1141
+ opacity: 0.4;
1142
+ cursor: pointer;
1143
+ padding: 0;
1144
+ line-height: 1;
1145
+ transition: opacity 0.2s;
1146
+ }
1147
+
1148
+ .chess-stacked-bar-chart__menu:hover {
1149
+ opacity: 0.7;
1150
+ }
1151
+
1152
+ .chess-stacked-bar-chart__label {
1153
+ font-family: var(--kol-font-family-mono);
1154
+ font-size: 0.7rem;
1155
+ letter-spacing: 0.12em;
1156
+ text-transform: uppercase;
1157
+ opacity: 0.6;
1158
+ }
1159
+
1160
+ .chess-stacked-bar-chart__title {
1161
+ font-family: var(--kol-font-family-heading);
1162
+ font-size: 1.5rem;
1163
+ font-weight: 600;
1164
+ letter-spacing: -0.02em;
1165
+ margin: 0;
1166
+ }
1167
+
1168
+ .chess-stacked-bar-chart__subtitle {
1169
+ font-family: var(--kol-font-family-mono);
1170
+ font-size: 0.7rem;
1171
+ letter-spacing: 0.08em;
1172
+ opacity: 0.5;
1173
+ }
1174
+
1175
+ .chess-stacked-bar-chart__bars {
1176
+ flex: 1;
1177
+ min-height: 100px;
1178
+ }
1179
+
1180
+ .chess-stacked-bar-chart__bars svg {
1181
+ width: 100%;
1182
+ height: 100%;
1183
+ }
1184
+
1185
+ /* Time Class Colors for Chess Data */
1186
+ .chart-color-blitz {
1187
+ --chart-color-value: var(--kol-palette-blue);
1188
+ }
1189
+
1190
+ .chart-color-bullet {
1191
+ --chart-color-value: var(--kol-palette-yellow);
1192
+ }
1193
+
1194
+ .chart-color-daily {
1195
+ --chart-color-value: var(--kol-palette-green);
1196
+ }
1197
+
1198
+ .chart-color-rapid {
1199
+ --chart-color-value: var(--kol-palette-orange);
1200
+ }
1201
+
1202
+ /* Time class dot helpers */
1203
+ .time-class-dot-blitz {
1204
+ background-color: var(--kol-accent-primary);
1205
+ }
1206
+
1207
+ .time-class-dot-bullet {
1208
+ background-color: var(--kol-status-danger);
1209
+ }
1210
+
1211
+ .time-class-dot-rapid {
1212
+ background-color: var(--kol-accent-primary-strong);
1213
+ }
1214
+
1215
+ .time-class-dot-daily {
1216
+ background-color: var(--kol-status-danger-muted);
1217
+ }
1218
+
1219
+ .time-class-dot-classical {
1220
+ background-color: var(--kol-surface-on-primary);
1221
+ }
1222
+
1223
+ .time-class-dot-default {
1224
+ background-color: color-mix(in srgb, var(--kol-surface-on-primary) 60%, transparent);
1225
+ }