@lolmath/ui 9.5.0 → 9.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.
package/dist/index.css CHANGED
@@ -1,185 +1,3 @@
1
- @layer lol {
2
- /* ----- CSS reset ----- */
3
- *,
4
- *::before,
5
- *::after {
6
- box-sizing: border-box;
7
- }
8
-
9
- /* ----- Default CSS variables ----- */
10
-
11
- :root {
12
- color-scheme: dark;
13
-
14
- --lol-z-index-app: 100;
15
- --lol-z-index-modal: 200;
16
- --lol-z-index-popover: 300;
17
- --lol-z-index-overlay: 400;
18
- --lol-z-index-max: 9999;
19
-
20
- --lol-scale: 1;
21
-
22
- --lol-color-blue-100: #cdfafa;
23
- --lol-color-blue-200: #0ac8b9;
24
- --lol-color-blue-300: #0397ab;
25
- --lol-color-blue-400: #005a82;
26
- --lol-color-blue-500: #0a323c;
27
- --lol-color-blue-600: #091428;
28
- --lol-color-blue-700: #0a1428;
29
-
30
- --lol-color-grey-100: #a09b8c;
31
- --lol-color-grey-150: #5b5a56;
32
- --lol-color-grey-200: #3c3c41;
33
- --lol-color-grey-300: #1e2328;
34
- --lol-color-grey-cool: #1e282d;
35
-
36
- --lol-color-hextech-black: #010a13;
37
-
38
- --lol-color-gold-100: #f0e6d2;
39
- --lol-color-gold-200: #c8aa6e;
40
- --lol-color-gold-300: #cdbe91;
41
- --lol-color-gold-400: #c89b3c;
42
- --lol-color-gold-500: #785a28;
43
- --lol-color-gold-600: #463714;
44
- --lol-color-gold-700: #32281e;
45
-
46
- --lol-font-size-h1: 3.3333rem;
47
- --lol-line-height-h1: 3.5rem;
48
- --lol-letter-spacing-h1: 0.05em;
49
- --lol-font-weight-h1: 700;
50
-
51
- --lol-font-size-h2: 2.3333rem;
52
- --lol-line-height-h2: 2.6667rem;
53
- --lol-letter-spacing-h2: 0.05em;
54
- --lol-font-weight-h2: 700;
55
-
56
- --lol-font-size-h3: 1.9167rem;
57
- --lol-line-height-h3: 2.3333rem;
58
- --lol-letter-spacing-h3: 0.05em;
59
- --lol-font-weight-h3: 700;
60
-
61
- --lol-font-size-h4: 1.5rem;
62
- --lol-line-height-h4: 1.8333rem;
63
- --lol-letter-spacing-h4: 0.05em;
64
- --lol-font-weight-h4: 700;
65
-
66
- --lol-font-size-h5: 1.1667rem;
67
- --lol-line-height-h5: 1.5rem;
68
- --lol-letter-spacing-h5: 0.075em;
69
- --lol-font-weight-h5: 700;
70
-
71
- --lol-font-size-label: 0.9167rem;
72
- --lol-line-height-label: 1.3333rem;
73
- --lol-letter-spacing-label: 0.05em;
74
- --lol-font-weight-label: 700;
75
-
76
- --lol-font-size-stat: 1.1667rem;
77
- --lol-line-height-stat: 1.6667rem;
78
- --lol-letter-spacing-stat: 0.05em;
79
- --lol-font-weight-stat: 700;
80
-
81
- --lol-font-size-large-number: 4.75rem;
82
- --lol-line-height-large-number: 5.1667rem;
83
- --lol-letter-spacing-large-number: 0.025em;
84
- --lol-font-weight-large-number: 500;
85
-
86
- --lol-font-size-xs: 0.75rem;
87
- --lol-line-height-xs: 1rem;
88
- --lol-letter-spacing-xs: 0.025em;
89
- --lol-font-weight-xs: 400;
90
-
91
- --lol-font-size-sm: 0.875rem;
92
- --lol-line-height-sm: 1.1025rem;
93
- --lol-letter-spacing-sm: 0.02em;
94
- --lol-font-weight-sm: 400;
95
-
96
- --lol-font-size-base: 1rem;
97
- --lol-line-height-base: 1.24rem;
98
- --lol-letter-spacing-base: 0.01em;
99
- --lol-font-weight-base: 400;
100
-
101
- --lol-font-size-md: 1.1667rem;
102
- --lol-line-height-md: 1.6667rem;
103
- --lol-letter-spacing-md: 0.025em;
104
- --lol-font-weight-md: 400;
105
-
106
- --lol-font-size-lg: 1.5rem;
107
- --lol-line-height-lg: 1.875rem;
108
- --lol-letter-spacing-lg: 0.025em;
109
- --lol-font-weight-lg: 400;
110
-
111
- --lol-font-family-beaufort: "beaufort";
112
- --lol-font-family-spiegel: "spiegel";
113
-
114
- --lol-gradient-gold: linear-gradient(
115
- to top,
116
- var(--lol-color-gold-500),
117
- var(--lol-color-gold-400),
118
- var(--lol-color-gold-200)
119
- );
120
- --lol-gradient-gold-hover: linear-gradient(
121
- to top,
122
- var(--lol-color-gold-400),
123
- var(--lol-color-gold-200),
124
- var(--lol-color-gold-100)
125
- );
126
- --lol-gradient-gold-press: linear-gradient(
127
- to top,
128
- var(--lol-color-gold-600),
129
- var(--lol-color-gold-600),
130
- var(--lol-color-gold-500)
131
- );
132
-
133
- --lol-gradient-grey-300: linear-gradient(
134
- to top,
135
- var(--lol-color-grey-300),
136
- var(--lol-color-grey-300),
137
- var(--lol-color-grey-300)
138
- );
139
- --lol-gradient-grey-focus: linear-gradient(
140
- to top,
141
- var(--lol-color-grey-200),
142
- var(--lol-color-grey-300),
143
- var(--lol-color-grey-300)
144
- );
145
- --lol-gradient-hextech-black: linear-gradient(
146
- to top,
147
- var(--lol-color-hextech-black),
148
- var(--lol-color-hextech-black)
149
- );
150
- --lol-gradient-disabled: linear-gradient(
151
- to top,
152
- var(--lol-color-grey-150),
153
- var(--lol-color-grey-150),
154
- var(--lol-color-grey-150)
155
- );
156
- --lol-gradient-transparent: linear-gradient(
157
- to top,
158
- transparent,
159
- transparent
160
- );
161
-
162
- --lol-gradient-hextech: linear-gradient(
163
- to top,
164
- var(--lol-color-blue-200),
165
- var(--lol-color-blue-400)
166
- );
167
- --lol-gradient-hextech-hover: linear-gradient(
168
- to top,
169
- var(--lol-color-blue-100),
170
- var(--lol-color-blue-300)
171
- );
172
- --lol-gradient-hextech-press: linear-gradient(
173
- to top,
174
- var(--lol-color-blue-500),
175
- var(--lol-color-blue-400)
176
- );
177
-
178
- --lol-form-height-small: 2rem;
179
- --lol-form-height-medium: 2.25rem;
180
- --lol-form-height-large: 2.5rem;
181
- }
182
- }
183
1
  @layer lol {
184
2
  ._breadcrumbs_1gzfl_2 {
185
3
  display: flex;
@@ -1828,6 +1646,83 @@
1828
1646
  }
1829
1647
  }
1830
1648
  }
1649
+ @layer lol {
1650
+ ._previewButton_sepr8_2 {
1651
+ appearance: none;
1652
+ margin: 0;
1653
+ padding: 0;
1654
+ border: 0;
1655
+ background: none;
1656
+
1657
+ /*
1658
+ * Not `pointer`: the preview opens on hover, so a hand would promise a
1659
+ * click that does nothing, and the term is not a link. This is the arrow
1660
+ * a `<button>` gets from the browser anyway, spelled out because a host's
1661
+ * CSS reset may have decided otherwise.
1662
+ */
1663
+ cursor: default;
1664
+
1665
+ /*
1666
+ * The term belongs to the sentence around it, so everything but the face
1667
+ * is inherited: size, weight, leading and colour come from the paragraph.
1668
+ * `font: inherit` also resets the family, hence the override after it.
1669
+ */
1670
+ font: inherit;
1671
+ font-family: var(--lol-font-family-spiegel);
1672
+ /* A button is an inline-block; without this it rides above the text. */
1673
+ vertical-align: baseline;
1674
+ text-align: inherit;
1675
+
1676
+ color: var(--lol-color-gold-100);
1677
+
1678
+ /*
1679
+ * An underline rather than a border-bottom: it follows the term when it
1680
+ * wraps, sits under the descenders instead of clipping them, and can go
1681
+ * from dashed to solid without moving anything on the line.
1682
+ */
1683
+ text-decoration: underline dashed var(--lol-preview-underline-color);
1684
+ text-decoration-thickness: 1px;
1685
+ text-underline-offset: 0.25em;
1686
+
1687
+ --lol-preview-underline-color: var(--lol-color-gold-400);
1688
+
1689
+ transition: color, text-decoration-color;
1690
+ transition-duration: 0.3s;
1691
+
1692
+ outline-style: solid;
1693
+ outline-color: var(--lol-color-gold-400);
1694
+ outline-offset: 2px;
1695
+
1696
+ &:not(:focus-visible) {
1697
+ outline: none;
1698
+ }
1699
+
1700
+ &:hover,
1701
+ &:focus-visible {
1702
+ --lol-preview-underline-color: var(--lol-color-gold-200);
1703
+ }
1704
+
1705
+ /*
1706
+ * Once the preview is open the dashes have done their job — they hint that
1707
+ * there is more to read, and there now is — so they close up into a rule.
1708
+ * `aria-expanded` is set by whichever trigger wraps the button, so this
1709
+ * also covers a `DialogTrigger` used as a toggle tip.
1710
+ */
1711
+ &[aria-expanded="true"] {
1712
+ --lol-preview-underline-color: var(--lol-color-gold-200);
1713
+ text-decoration-style: solid;
1714
+ }
1715
+
1716
+ &:active {
1717
+ color: var(--lol-color-gold-300);
1718
+ }
1719
+
1720
+ &:disabled {
1721
+ color: var(--lol-color-grey-150);
1722
+ --lol-preview-underline-color: var(--lol-color-grey-150);
1723
+ }
1724
+ }
1725
+ }
1831
1726
  @layer lol {
1832
1727
  ._wrapper_1jgc6_2 {
1833
1728
  display: flex;
@@ -3388,3 +3283,502 @@
3388
3283
  text-align: end;
3389
3284
  }
3390
3285
  }
3286
+ @layer lol {
3287
+ /*
3288
+ * "Metal linework as a framing element to support and draw focus towards
3289
+ * key pieces of information." The frame is a one-pixel hairline and nothing
3290
+ * more: a gradient painted into the border box, the plot painted into the
3291
+ * padding box. Anything heavier would compete with the data.
3292
+ */
3293
+ ._frame_7dkb0_8 {
3294
+ display: flex;
3295
+ flex-direction: column;
3296
+ position: relative;
3297
+ border: 1px solid transparent;
3298
+ background:
3299
+ var(--lol-chart-frame-fill) padding-box,
3300
+ var(--lol-chart-frame-border) border-box;
3301
+ color: var(--lol-chart-foreground);
3302
+ font-family: var(--lol-chart-font-body);
3303
+ /* A <figure>: the UA gives it 1em block and 40px inline margins. */
3304
+ margin: 0;
3305
+ padding: 1rem 1.125rem 1.125rem;
3306
+ gap: 0.75rem;
3307
+ }
3308
+
3309
+ /* Unframed: the same type and colours, no metal. For charts that already
3310
+ * sit inside a panel of their own. */
3311
+ ._bare_7dkb0_26 {
3312
+ border-color: transparent;
3313
+ background: none;
3314
+ padding: 0;
3315
+ }
3316
+
3317
+ /*
3318
+ * The diamond is the language's accent piece — it "guides attention toward
3319
+ * key information". Four of them pin the frame's corners to the grid the
3320
+ * square establishes. They are decoration, so they are hidden from the
3321
+ * accessibility tree by the component.
3322
+ */
3323
+ ._corner_7dkb0_38 {
3324
+ position: absolute;
3325
+ width: 5px;
3326
+ height: 5px;
3327
+ rotate: 45deg;
3328
+ border: 1px solid var(--lol-chart-frame-accent);
3329
+ background: var(--lol-chart-surface);
3330
+ }
3331
+
3332
+ ._bare_7dkb0_26 ._corner_7dkb0_38 {
3333
+ display: none;
3334
+ }
3335
+
3336
+ ._cornerTopLeft_7dkb0_51 {
3337
+ top: -3px;
3338
+ left: -3px;
3339
+ }
3340
+
3341
+ ._cornerTopRight_7dkb0_56 {
3342
+ top: -3px;
3343
+ right: -3px;
3344
+ }
3345
+
3346
+ ._cornerBottomLeft_7dkb0_61 {
3347
+ bottom: -3px;
3348
+ left: -3px;
3349
+ }
3350
+
3351
+ ._cornerBottomRight_7dkb0_66 {
3352
+ bottom: -3px;
3353
+ right: -3px;
3354
+ }
3355
+
3356
+ ._header_7dkb0_71 {
3357
+ display: flex;
3358
+ align-items: flex-start;
3359
+ justify-content: space-between;
3360
+ gap: 1rem;
3361
+ }
3362
+
3363
+ ._headings_7dkb0_78 {
3364
+ display: flex;
3365
+ flex-direction: column;
3366
+ gap: 0.125rem;
3367
+ min-width: 0;
3368
+ }
3369
+
3370
+ /* Beaufort, spaced and uppercased — the client's voice for anything that
3371
+ * names a thing rather than measures it. */
3372
+ ._title_7dkb0_87 {
3373
+ margin: 0;
3374
+ font-family: var(--lol-chart-font-display);
3375
+ font-size: var(--lol-font-size-h5, 1.1667rem);
3376
+ line-height: var(--lol-line-height-h5, 1.5);
3377
+ letter-spacing: var(--lol-letter-spacing-h5, 0.075em);
3378
+ font-weight: var(--lol-font-weight-h5, 700);
3379
+ text-transform: uppercase;
3380
+ color: var(--lol-chart-foreground);
3381
+ }
3382
+
3383
+ ._subtitle_7dkb0_98 {
3384
+ margin: 0;
3385
+ font-size: var(--lol-font-size-sm, 0.875rem);
3386
+ line-height: var(--lol-line-height-sm, 1.1025rem);
3387
+ letter-spacing: var(--lol-letter-spacing-sm, 0.02em);
3388
+ color: var(--lol-chart-muted);
3389
+ }
3390
+
3391
+ ._actions_7dkb0_106 {
3392
+ display: flex;
3393
+ align-items: center;
3394
+ gap: 0.5rem;
3395
+ flex-shrink: 0;
3396
+ }
3397
+
3398
+ /* A rule terminated at both ends by a diamond: the same figure the client
3399
+ * draws under every panel heading. */
3400
+ ._rule_7dkb0_115 {
3401
+ display: flex;
3402
+ align-items: center;
3403
+ gap: 0.375rem;
3404
+ }
3405
+
3406
+ ._ruleLine_7dkb0_121 {
3407
+ height: 1px;
3408
+ flex-grow: 1;
3409
+ border: none;
3410
+ margin: 0;
3411
+ background-image: linear-gradient(
3412
+ to right,
3413
+ transparent,
3414
+ var(--lol-chart-frame-rule) 15%,
3415
+ var(--lol-chart-frame-rule) 85%,
3416
+ transparent
3417
+ );
3418
+ }
3419
+
3420
+ ._ruleDiamond_7dkb0_135 {
3421
+ width: 4px;
3422
+ height: 4px;
3423
+ rotate: 45deg;
3424
+ border: 1px solid var(--lol-chart-frame-rule);
3425
+ flex-shrink: 0;
3426
+ }
3427
+
3428
+ ._body_7dkb0_143 {
3429
+ display: flex;
3430
+ flex-direction: column;
3431
+ min-width: 0;
3432
+ }
3433
+
3434
+ ._footer_7dkb0_149 {
3435
+ display: flex;
3436
+ flex-wrap: wrap;
3437
+ align-items: center;
3438
+ justify-content: space-between;
3439
+ gap: 0.5rem 1rem;
3440
+ }
3441
+ }
3442
+ @layer lol {
3443
+ ._legend_1rk8r_2 {
3444
+ display: flex;
3445
+ flex-wrap: wrap;
3446
+ align-items: center;
3447
+ gap: 0.375rem 1.25rem;
3448
+ /* A <ul>: the UA gives it block margins and a list marker. */
3449
+ margin: 0;
3450
+ padding: 0;
3451
+ list-style: none;
3452
+ }
3453
+
3454
+ ._item_1rk8r_13 {
3455
+ display: inline-flex;
3456
+ align-items: center;
3457
+ gap: 0.5rem;
3458
+ /* Never the series colour. Identity comes from the swatch beside the
3459
+ * label; a light teal or gold set as text would not clear contrast. */
3460
+ color: var(--lol-chart-muted);
3461
+ font-size: var(--lol-font-size-sm, 0.875rem);
3462
+ line-height: var(--lol-line-height-sm, 1.1025rem);
3463
+ letter-spacing: var(--lol-letter-spacing-sm, 0.02em);
3464
+ }
3465
+
3466
+ /* The diamond again, at series scale, lit by the hue it stands for. */
3467
+ ._swatch_1rk8r_26 {
3468
+ width: 0.5rem;
3469
+ height: 0.5rem;
3470
+ flex-shrink: 0;
3471
+ rotate: 45deg;
3472
+ background: var(--lol-chart-legend-color);
3473
+ box-shadow: 0 0 5px var(--lol-chart-legend-color);
3474
+ }
3475
+
3476
+ ._square_1rk8r_35 {
3477
+ rotate: none;
3478
+ }
3479
+
3480
+ ._line_1rk8r_39 {
3481
+ width: 0.875rem;
3482
+ height: 2px;
3483
+ rotate: none;
3484
+ box-shadow: none;
3485
+ }
3486
+ }
3487
+ @layer lol {
3488
+ ._chart_1mnqy_2 {
3489
+ width: 100%;
3490
+ min-width: 0;
3491
+ }
3492
+ }
3493
+ @layer lol {
3494
+ /* ----- CSS reset ----- */
3495
+ *,
3496
+ *::before,
3497
+ *::after {
3498
+ box-sizing: border-box;
3499
+ }
3500
+
3501
+ /* ----- Default CSS variables ----- */
3502
+
3503
+ :root {
3504
+ color-scheme: dark;
3505
+
3506
+ --lol-z-index-app: 100;
3507
+ --lol-z-index-modal: 200;
3508
+ --lol-z-index-popover: 300;
3509
+ --lol-z-index-overlay: 400;
3510
+ --lol-z-index-max: 9999;
3511
+
3512
+ --lol-scale: 1;
3513
+
3514
+ --lol-color-blue-100: #cdfafa;
3515
+ --lol-color-blue-200: #0ac8b9;
3516
+ --lol-color-blue-300: #0397ab;
3517
+ --lol-color-blue-400: #005a82;
3518
+ --lol-color-blue-500: #0a323c;
3519
+ --lol-color-blue-600: #091428;
3520
+ --lol-color-blue-700: #0a1428;
3521
+
3522
+ --lol-color-grey-100: #a09b8c;
3523
+ --lol-color-grey-150: #5b5a56;
3524
+ --lol-color-grey-200: #3c3c41;
3525
+ --lol-color-grey-300: #1e2328;
3526
+ --lol-color-grey-cool: #1e282d;
3527
+
3528
+ --lol-color-hextech-black: #010a13;
3529
+
3530
+ --lol-color-gold-100: #f0e6d2;
3531
+ --lol-color-gold-200: #c8aa6e;
3532
+ --lol-color-gold-300: #cdbe91;
3533
+ --lol-color-gold-400: #c89b3c;
3534
+ --lol-color-gold-500: #785a28;
3535
+ --lol-color-gold-600: #463714;
3536
+ --lol-color-gold-700: #32281e;
3537
+
3538
+ --lol-font-size-h1: 3.3333rem;
3539
+ --lol-line-height-h1: 3.5rem;
3540
+ --lol-letter-spacing-h1: 0.05em;
3541
+ --lol-font-weight-h1: 700;
3542
+
3543
+ --lol-font-size-h2: 2.3333rem;
3544
+ --lol-line-height-h2: 2.6667rem;
3545
+ --lol-letter-spacing-h2: 0.05em;
3546
+ --lol-font-weight-h2: 700;
3547
+
3548
+ --lol-font-size-h3: 1.9167rem;
3549
+ --lol-line-height-h3: 2.3333rem;
3550
+ --lol-letter-spacing-h3: 0.05em;
3551
+ --lol-font-weight-h3: 700;
3552
+
3553
+ --lol-font-size-h4: 1.5rem;
3554
+ --lol-line-height-h4: 1.8333rem;
3555
+ --lol-letter-spacing-h4: 0.05em;
3556
+ --lol-font-weight-h4: 700;
3557
+
3558
+ --lol-font-size-h5: 1.1667rem;
3559
+ --lol-line-height-h5: 1.5rem;
3560
+ --lol-letter-spacing-h5: 0.075em;
3561
+ --lol-font-weight-h5: 700;
3562
+
3563
+ --lol-font-size-label: 0.9167rem;
3564
+ --lol-line-height-label: 1.3333rem;
3565
+ --lol-letter-spacing-label: 0.05em;
3566
+ --lol-font-weight-label: 700;
3567
+
3568
+ --lol-font-size-stat: 1.1667rem;
3569
+ --lol-line-height-stat: 1.6667rem;
3570
+ --lol-letter-spacing-stat: 0.05em;
3571
+ --lol-font-weight-stat: 700;
3572
+
3573
+ --lol-font-size-large-number: 4.75rem;
3574
+ --lol-line-height-large-number: 5.1667rem;
3575
+ --lol-letter-spacing-large-number: 0.025em;
3576
+ --lol-font-weight-large-number: 500;
3577
+
3578
+ --lol-font-size-xs: 0.75rem;
3579
+ --lol-line-height-xs: 1rem;
3580
+ --lol-letter-spacing-xs: 0.025em;
3581
+ --lol-font-weight-xs: 400;
3582
+
3583
+ --lol-font-size-sm: 0.875rem;
3584
+ --lol-line-height-sm: 1.1025rem;
3585
+ --lol-letter-spacing-sm: 0.02em;
3586
+ --lol-font-weight-sm: 400;
3587
+
3588
+ --lol-font-size-base: 1rem;
3589
+ --lol-line-height-base: 1.24rem;
3590
+ --lol-letter-spacing-base: 0.01em;
3591
+ --lol-font-weight-base: 400;
3592
+
3593
+ --lol-font-size-md: 1.1667rem;
3594
+ --lol-line-height-md: 1.6667rem;
3595
+ --lol-letter-spacing-md: 0.025em;
3596
+ --lol-font-weight-md: 400;
3597
+
3598
+ --lol-font-size-lg: 1.5rem;
3599
+ --lol-line-height-lg: 1.875rem;
3600
+ --lol-letter-spacing-lg: 0.025em;
3601
+ --lol-font-weight-lg: 400;
3602
+
3603
+ --lol-font-family-beaufort: "beaufort";
3604
+ --lol-font-family-spiegel: "spiegel";
3605
+
3606
+ --lol-gradient-gold: linear-gradient(
3607
+ to top,
3608
+ var(--lol-color-gold-500),
3609
+ var(--lol-color-gold-400),
3610
+ var(--lol-color-gold-200)
3611
+ );
3612
+ --lol-gradient-gold-hover: linear-gradient(
3613
+ to top,
3614
+ var(--lol-color-gold-400),
3615
+ var(--lol-color-gold-200),
3616
+ var(--lol-color-gold-100)
3617
+ );
3618
+ --lol-gradient-gold-press: linear-gradient(
3619
+ to top,
3620
+ var(--lol-color-gold-600),
3621
+ var(--lol-color-gold-600),
3622
+ var(--lol-color-gold-500)
3623
+ );
3624
+
3625
+ --lol-gradient-grey-300: linear-gradient(
3626
+ to top,
3627
+ var(--lol-color-grey-300),
3628
+ var(--lol-color-grey-300),
3629
+ var(--lol-color-grey-300)
3630
+ );
3631
+ --lol-gradient-grey-focus: linear-gradient(
3632
+ to top,
3633
+ var(--lol-color-grey-200),
3634
+ var(--lol-color-grey-300),
3635
+ var(--lol-color-grey-300)
3636
+ );
3637
+ --lol-gradient-hextech-black: linear-gradient(
3638
+ to top,
3639
+ var(--lol-color-hextech-black),
3640
+ var(--lol-color-hextech-black)
3641
+ );
3642
+ --lol-gradient-disabled: linear-gradient(
3643
+ to top,
3644
+ var(--lol-color-grey-150),
3645
+ var(--lol-color-grey-150),
3646
+ var(--lol-color-grey-150)
3647
+ );
3648
+ --lol-gradient-transparent: linear-gradient(
3649
+ to top,
3650
+ transparent,
3651
+ transparent
3652
+ );
3653
+
3654
+ --lol-gradient-hextech: linear-gradient(
3655
+ to top,
3656
+ var(--lol-color-blue-200),
3657
+ var(--lol-color-blue-400)
3658
+ );
3659
+ --lol-gradient-hextech-hover: linear-gradient(
3660
+ to top,
3661
+ var(--lol-color-blue-100),
3662
+ var(--lol-color-blue-300)
3663
+ );
3664
+ --lol-gradient-hextech-press: linear-gradient(
3665
+ to top,
3666
+ var(--lol-color-blue-500),
3667
+ var(--lol-color-blue-400)
3668
+ );
3669
+
3670
+ --lol-form-height-small: 2rem;
3671
+ --lol-form-height-medium: 2.25rem;
3672
+ --lol-form-height-large: 2.5rem;
3673
+
3674
+ /* ----- Charts -----
3675
+ *
3676
+ * Hextech separates the interface into two materials: metal linework
3677
+ * that *frames* information, and hextech magic that *is* it. A chart
3678
+ * maps onto that split exactly — gold for the frame, the axes and the
3679
+ * grid; the magic palette for the marks — so the ink and frame tokens
3680
+ * below are gold and the series tokens are not.
3681
+ *
3682
+ * Used by `@lolmath/ui/charts`, but defined here so a host page can
3683
+ * retune them from one place, and so a chart built by hand against
3684
+ * TanStack Charts picks them up too. */
3685
+
3686
+ /* Parchment gold for what you read, dimmer gold for what merely
3687
+ * orients you. The chart engine paints tick labels at 0.68 opacity on
3688
+ * top of these, so `muted` is deliberately brighter than it looks. */
3689
+ --lol-chart-foreground: var(--lol-color-gold-100);
3690
+ --lol-chart-muted: var(--lol-color-gold-300);
3691
+ /* The grid is painted at 0.11 opacity — it has to start bright to
3692
+ * survive that and still read as gold rather than grey. */
3693
+ --lol-chart-grid: var(--lol-color-gold-200);
3694
+ --lol-chart-surface: var(--lol-color-hextech-black);
3695
+
3696
+ --lol-chart-frame-fill: linear-gradient(
3697
+ 180deg,
3698
+ var(--lol-color-blue-600) 0%,
3699
+ var(--lol-color-hextech-black) 100%
3700
+ );
3701
+ --lol-chart-frame-border: linear-gradient(
3702
+ 180deg,
3703
+ var(--lol-color-gold-500) 0%,
3704
+ var(--lol-color-gold-600) 55%,
3705
+ var(--lol-color-gold-500) 100%
3706
+ );
3707
+ --lol-chart-frame-accent: var(--lol-color-gold-400);
3708
+ --lol-chart-frame-rule: var(--lol-color-gold-500);
3709
+
3710
+ /* Six categorical slots in a fixed order, assigned in sequence and
3711
+ * never cycled. Slots 1 and 2 are the Hextech signature (teal energy,
3712
+ * Piltover gold); the rest reach into the wider Runeterra palette,
3713
+ * because a palette that stayed inside gold and teal could not be told
3714
+ * apart. The set is validated on the hextech-black surface for the
3715
+ * OKLCH lightness band, the chroma floor, protan/deutan separation and
3716
+ * contrast — see the readme before changing a value. */
3717
+ --lol-chart-series-1: #0aa89b;
3718
+ --lol-chart-series-2: #ba8c2e;
3719
+ --lol-chart-series-3: #8e6be8;
3720
+ --lol-chart-series-4: #e8574f;
3721
+ --lol-chart-series-5: #1e8fd5;
3722
+ --lol-chart-series-6: #4fa83a;
3723
+
3724
+ /* Reserved meanings. Never spend these on "series 4". */
3725
+ --lol-chart-positive: #2e9e63;
3726
+ --lol-chart-negative: #d6453c;
3727
+
3728
+ --lol-chart-font-display:
3729
+ var(--lol-font-family-beaufort), "Times New Roman", serif;
3730
+ --lol-chart-font-body:
3731
+ var(--lol-font-family-spiegel), system-ui, sans-serif;
3732
+
3733
+ /* Bridge to TanStack Charts' own defaults, so a chart definition
3734
+ * written by hand — one that never sets a theme — still picks up the
3735
+ * Hextech palette and tooltip. */
3736
+ --ts-chart-1: var(--lol-chart-series-1);
3737
+ --ts-chart-2: var(--lol-chart-series-2);
3738
+ --ts-chart-3: var(--lol-chart-series-3);
3739
+ --ts-chart-4: var(--lol-chart-series-4);
3740
+ --ts-chart-5: var(--lol-chart-series-5);
3741
+ --ts-chart-6: var(--lol-chart-series-6);
3742
+ --ts-chart-focus-fill: var(--lol-chart-surface);
3743
+ --ts-chart-crosshair-marker-fill: var(--lol-chart-surface);
3744
+ --ts-chart-crosshair-label-halo: var(--lol-chart-surface);
3745
+
3746
+ --ts-chart-tooltip-background: var(--lol-chart-surface);
3747
+ --ts-chart-tooltip-border: 1px solid var(--lol-color-gold-500);
3748
+ --ts-chart-tooltip-border-radius: 0;
3749
+ --ts-chart-tooltip-color: var(--lol-chart-foreground);
3750
+ --ts-chart-tooltip-padding: 0.5rem 0.7rem;
3751
+ --ts-chart-tooltip-shadow:
3752
+ 0 0 0 1px var(--lol-color-hextech-black), 0 8px 24px rgb(1 10 19 / 0.75);
3753
+ --ts-chart-tooltip-font: 400 0.8125rem / 1.35 var(--lol-chart-font-body);
3754
+ }
3755
+
3756
+ /*
3757
+ * The scene TanStack Charts paints is plain SVG with stable class names on
3758
+ * it, so the parts CSS does better than JS — line caps, the magic glow —
3759
+ * are done here. `[data-lol-chart]` is set by `HextechChart`; nothing
3760
+ * outside a Hextech chart is touched.
3761
+ */
3762
+ [data-lol-chart] {
3763
+ font-family: var(--lol-chart-font-body);
3764
+ color: var(--lol-chart-foreground);
3765
+ }
3766
+
3767
+ [data-lol-chart] .ts-chart__line {
3768
+ stroke-linecap: round;
3769
+ stroke-linejoin: round;
3770
+ }
3771
+
3772
+ /*
3773
+ * "Its brightest executions are reserved for pivotal moments." The glow is
3774
+ * the one place the marks are allowed to be loud, so it stays faint.
3775
+ */
3776
+ [data-lol-chart-glow="true"] .ts-chart__line,
3777
+ [data-lol-chart-glow="true"] .ts-chart__area {
3778
+ filter: drop-shadow(0 0 3px rgb(10 168 155 / 0.18));
3779
+ }
3780
+
3781
+ [data-lol-chart] .ts-chart__crosshair {
3782
+ pointer-events: none;
3783
+ }
3784
+ }