@lolmath/ui 9.1.2 → 9.2.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
@@ -515,7 +515,692 @@
515
515
  }
516
516
  }
517
517
  @layer lol {
518
- ._checkbox_1rldq_2 {
518
+ ._text_1tvjr_2 {
519
+ font-family: var(--lol-font-family-spiegel);
520
+ }
521
+
522
+ ._label_1tvjr_6 {
523
+ font-size: var(--lol-font-size-label);
524
+ line-height: var(--lol-line-height-label);
525
+ letter-spacing: var(--lol-letter-spacing-label);
526
+ font-weight: var(--lol-font-weight-label);
527
+ }
528
+
529
+ ._stat_1tvjr_13 {
530
+ font-size: var(--lol-font-size-stat);
531
+ line-height: var(--lol-line-height-stat);
532
+ letter-spacing: var(--lol-letter-spacing-stat);
533
+ font-weight: var(--lol-font-weight-stat);
534
+ }
535
+
536
+ ._largeNumber_1tvjr_20 {
537
+ font-size: var(--lol-font-size-large-number);
538
+ line-height: var(--lol-line-height-large-number);
539
+ letter-spacing: var(--lol-letter-spacing-large-number);
540
+ font-weight: var(--lol-font-weight-large-number);
541
+ }
542
+
543
+ ._sm_1tvjr_27 {
544
+ font-size: var(--lol-font-size-sm);
545
+ line-height: var(--lol-line-height-sm);
546
+ letter-spacing: var(--lol-letter-spacing-sm);
547
+ font-weight: var(--lol-font-weight-sm);
548
+ }
549
+
550
+ ._base_1tvjr_34 {
551
+ font-size: var(--lol-font-size-base);
552
+ line-height: var(--lol-line-height-base);
553
+ letter-spacing: var(--lol-letter-spacing-base);
554
+ font-weight: var(--lol-font-weight-base);
555
+ }
556
+
557
+ ._md_1tvjr_41 {
558
+ font-size: var(--lol-font-size-md);
559
+ line-height: var(--lol-line-height-md);
560
+ letter-spacing: var(--lol-letter-spacing-md);
561
+ font-weight: var(--lol-font-weight-md);
562
+ }
563
+
564
+ ._lg_1tvjr_48 {
565
+ font-size: var(--lol-font-size-lg);
566
+ line-height: var(--lol-line-height-lg);
567
+ letter-spacing: var(--lol-letter-spacing-lg);
568
+ font-weight: var(--lol-font-weight-lg);
569
+ }
570
+
571
+ ._grey100_1tvjr_55 {
572
+ color: var(--lol-color-grey-100);
573
+ }
574
+
575
+ ._grey150_1tvjr_59 {
576
+ color: var(--lol-color-grey-150);
577
+ }
578
+
579
+ ._gold100_1tvjr_63 {
580
+ color: var(--lol-color-gold-100);
581
+ }
582
+ }
583
+ @layer lol {
584
+ ._button_2pv2a_2 {
585
+ /* A <button>; the trigger's whole look is drawn below. */
586
+ appearance: none;
587
+ margin: 0;
588
+ font-family: var(--lol-font-family-spiegel);
589
+ display: inline-block;
590
+ min-width: 200px;
591
+ outline: none;
592
+
593
+ border: 1px solid transparent;
594
+
595
+ color: var(--lol-color-grey-100);
596
+ padding: 0 1.5rem 0 0.5rem;
597
+
598
+ font-size: 0.75rem;
599
+ font-weight: 500;
600
+ line-height: 1rem;
601
+ letter-spacing: 0.025em;
602
+ text-align: left;
603
+
604
+ --lol-select-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAASCAYAAACAa1QyAAAAiUlEQVR42mL8//8/A6mAiYEMQJYmFnSBk6vzYcwmIP4LxI0gjnnoRNyaoKAViKuQ+I14bQKCTiAuA+I6IGYG4gZ0jSw4nFwB1QwDjIRsKkbjNwxckFNNUw8QlyLx66EYb0D8A+IuIGaDyjcQE0+gOPoDxC1I8dNASBMDNDX8hWKMIGcc3FkDIMAA1n8bpHnZDOAAAAAASUVORK5CYII=");
605
+ --lol-select-border-gradient: var(--lol-gradient-gold);
606
+ --lol-select-background-gradient: var(--lol-gradient-hextech-black);
607
+
608
+ &[data-open] {
609
+ --lol-select-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAASCAYAAACAa1QyAAAA90lEQVR42mL8//8/A6mAiYEMwILVJG4RNiAlDcQgZzz79/XNL2R5RnTnATWwAyn5BEfBaqDUv4UH3rcD+Q+QNaJoAmrgAFJyiY6CdWL8LNEgsRcf/ixA14juJ6kkJ8FGkIbn7//MB2pYKCHAkhDvIFgJksPlJ0ZGRgbmp+9+z1py6EMvSACoASyO009A53FCTfwNCgCoS2A2wAOEcWDiCcl5v6DOY8bmPBYsodf28/f/90sPf+iDBgQo5BiAwd4ICnZcKeKfjDBrepy9IAsoJEFBDgp6fKGHLXIXAm1pQ45cfMmoBpqM2vAmIzSNUkQnWJrFE0CAAQCQxYvehN8YFAAAAABJRU5ErkJggg==");
610
+ color: var(--lol-color-gold-600);
611
+ --lol-select-background-gradient: var(--lol-gradient-grey-300);
612
+ --lol-select-border-gradient: var(--lol-gradient-gold-press);
613
+ }
614
+
615
+ &[data-pressed] {
616
+ --lol-select-border-gradient: var(--lol-gradient-gold-press);
617
+ }
618
+
619
+ &[data-hovered] {
620
+ --lol-select-border-gradient: var(--lol-gradient-gold-hover);
621
+ }
622
+
623
+ &[data-disabled] {
624
+ --lol-select-border-gradient: var(--lol-gradient-disabled);
625
+ /* make the image gray */
626
+ filter: grayscale(100%);
627
+ }
628
+
629
+ &._small_2pv2a_47 {
630
+ min-height: var(--lol-form-height-small);
631
+ }
632
+
633
+ &._medium_2pv2a_51 {
634
+ min-height: var(--lol-form-height-medium);
635
+ }
636
+
637
+ &._large_2pv2a_55 {
638
+ min-height: var(--lol-form-height-large);
639
+ }
640
+ }
641
+
642
+ ._singleSelect_2pv2a_60 {
643
+ background:
644
+ var(--lol-select-image) no-repeat right 0.5rem center,
645
+ var(--lol-select-background-gradient) padding-box,
646
+ var(--lol-select-border-gradient) border-box;
647
+ }
648
+
649
+ ._multiSelect_2pv2a_67 {
650
+ background:
651
+ var(--lol-select-background-gradient) padding-box,
652
+ var(--lol-select-border-gradient) border-box;
653
+ }
654
+
655
+ ._listBox_2pv2a_73 {
656
+ background-color: var(--lol-color-hextech-black);
657
+ border: 1px solid var(--lol-color-gold-600);
658
+ outline: none;
659
+ overflow-y: auto;
660
+ }
661
+
662
+ ._item_2pv2a_80 {
663
+ border-bottom: 1px solid var(--lol-color-grey-300);
664
+ color: var(--lol-color-gold-300);
665
+ font-size: var(--lol-font-size-sm);
666
+ font-weight: var(--lol-font-weight-sm);
667
+ line-height: var(--lol-line-height-sm);
668
+ letter-spacing: var(--lol-letter-spacing-sm);
669
+ padding: 0.375rem 0.5rem;
670
+ outline: none;
671
+ cursor: pointer;
672
+
673
+ &[data-hovered] {
674
+ background-color: var(--lol-color-grey-300);
675
+ color: var(--lol-color-gold-100);
676
+ }
677
+
678
+ &[data-pressed],
679
+ &._focus_2pv2a_97 {
680
+ background-color: color-mix(
681
+ in srgb,
682
+ var(--lol-color-grey-300),
683
+ transparent 50%
684
+ );
685
+ color: var(--lol-color-gold-600);
686
+ }
687
+
688
+ &._selected_2pv2a_106 {
689
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAALCAYAAABPhbxiAAAAsElEQVR42pTQXQoBURTA8ZmbdxuxAi/WgfLmQb4pYgMi36QUJUuxBIvw7FEi/qfOrds0NPfW7+We85+mG95v18DjhGjglPKMNqjibTyilUYTbE3CaIE65ujLZZJQlptYomsvJUyjp1+Oi1pYo+MOjA7GmEWiKdrY6c7HHcqrjpDRpQeGGslv7VGLRjZ8Ii9PjAFyyOKISlxkQzkvFDUu4Izyr8gNA41KuODwL5LzFWAAUJ8mTIVblvcAAAAASUVORK5CYII=);
690
+ background-position: right 0.5rem center;
691
+ background-repeat: no-repeat;
692
+ }
693
+ }
694
+
695
+ ._popover_2pv2a_113 {
696
+ width: var(--trigger-width);
697
+ display: flex;
698
+ flex-direction: column;
699
+ }
700
+
701
+ ._emptyList_2pv2a_119 {
702
+ padding: 0.5rem 0.25rem;
703
+ text-align: left;
704
+ }
705
+ }
706
+ @layer lol {
707
+ ._calendar_dpi4c_2,
708
+ ._rangeCalendar_dpi4c_3 {
709
+ --lol-calendar-cell-size: 2.5rem;
710
+
711
+ display: flex;
712
+ flex-direction: column;
713
+ /*
714
+ * A flex column is still a normal block box for its own sizing: with
715
+ * no explicit width it fills its parent (a popover, a wide form)
716
+ * rather than shrinking to its content. `fit-content` makes the
717
+ * calendar itself only as wide as its widest child (the grid), and
718
+ * `align-items: stretch` (the default, kept intentionally) then
719
+ * stretches every other child — including the `header="picker"` nav
720
+ * row, which sits directly in this container rather than inside
721
+ * `.month` — to match that same width, instead of each shrinking
722
+ * independently to its own content.
723
+ */
724
+ width: fit-content;
725
+ gap: 0.75rem;
726
+ outline: none;
727
+
728
+ &[data-disabled] {
729
+ opacity: 0.6;
730
+ }
731
+ }
732
+
733
+ ._months_dpi4c_28 {
734
+ display: flex;
735
+ gap: 1.5rem;
736
+ }
737
+
738
+ ._month_dpi4c_16 {
739
+ display: flex;
740
+ flex-direction: column;
741
+ gap: 0.5rem;
742
+ }
743
+
744
+ ._nav_dpi4c_39 {
745
+ display: flex;
746
+ align-items: center;
747
+ justify-content: space-between;
748
+ gap: 0.5rem;
749
+ }
750
+
751
+ ._pickerGroup_dpi4c_46 {
752
+ display: flex;
753
+ align-items: center;
754
+ justify-content: center;
755
+ gap: 0.375rem;
756
+ flex: 1;
757
+ }
758
+
759
+ ._chevronFlipped_dpi4c_54 {
760
+ transform: rotate(180deg);
761
+ }
762
+
763
+ ._heading_dpi4c_58 {
764
+ flex: 1;
765
+ margin: 0;
766
+ text-align: center;
767
+ color: var(--lol-color-gold-100);
768
+ font-family: var(--lol-font-family-beaufort);
769
+ text-transform: uppercase;
770
+ font-size: var(--lol-font-size-sm);
771
+ font-weight: var(--lol-font-weight-h5);
772
+ letter-spacing: var(--lol-letter-spacing-h5);
773
+ }
774
+
775
+ ._grid_dpi4c_70 {
776
+ /*
777
+ * `separate` (not `collapse`) is what makes the continuous-selection
778
+ * border below work at all: `collapse` merges each pair of adjacent
779
+ * cells' touching borders into one, picking a winner between a
780
+ * selected row's colored edge and its unselected neighbor's
781
+ * transparent one — which silently erases every other segment of the
782
+ * "continuous" line. `separate` keeps each cell's border independent.
783
+ *
784
+ * The table is sized to exactly 7 cells wide rather than `100%`: with
785
+ * no intrinsic width, it stretches to fill whatever it's placed in
786
+ * (a popover, a wide form), dragging the popover along with it and
787
+ * spacing the 7 columns far enough apart that `.cell`'s fixed size
788
+ * reads as small islands with visible gaps instead of a tight grid.
789
+ *
790
+ * `border-spacing` is 0 horizontally (columns within a week must
791
+ * touch, or the continuous selection border above breaks into
792
+ * islands again) but 3px vertically: with no gap between rows, two
793
+ * consecutive fully-selected weeks touch top-border-to-bottom-border
794
+ * and read as one tall block instead of two separate rounded bars.
795
+ */
796
+ border-collapse: separate;
797
+ border-spacing: 0 3px;
798
+ table-layout: fixed;
799
+ width: calc(var(--lol-calendar-cell-size) * 7);
800
+ }
801
+
802
+ ._gridHeader_dpi4c_97 {
803
+ /* thead: no visual treatment of its own beyond the cells within it. */
804
+ }
805
+
806
+ ._headerCell_dpi4c_101 {
807
+ padding: 0 0 0.5rem 0;
808
+ font-family: var(--lol-font-family-spiegel);
809
+ font-size: var(--lol-font-size-xs);
810
+ font-weight: 700;
811
+ letter-spacing: 0.05em;
812
+ text-transform: uppercase;
813
+ text-align: center;
814
+ color: var(--lol-color-grey-100);
815
+ }
816
+
817
+ ._cell_dpi4c_82 {
818
+ position: relative;
819
+ z-index: 0;
820
+ width: 100%;
821
+ height: var(--lol-calendar-cell-size);
822
+ display: flex;
823
+ align-items: center;
824
+ justify-content: center;
825
+
826
+ font-family: var(--lol-font-family-spiegel);
827
+ font-size: var(--lol-font-size-sm);
828
+ font-weight: 500;
829
+ color: var(--lol-color-gold-100);
830
+
831
+ border-radius: 9999px;
832
+ outline: none;
833
+ cursor: default;
834
+ -webkit-tap-highlight-color: transparent;
835
+
836
+ &[data-outside-month] {
837
+ color: var(--lol-color-grey-150);
838
+ }
839
+
840
+ &[data-outside-visible-range] {
841
+ visibility: hidden;
842
+ }
843
+
844
+ &[data-unavailable] {
845
+ color: var(--lol-color-grey-150);
846
+ text-decoration: line-through;
847
+ }
848
+
849
+ &[data-disabled] {
850
+ color: var(--lol-color-grey-150);
851
+ }
852
+
853
+ &[data-hovered]:not([data-disabled], [data-selected]) {
854
+ background-color: var(--lol-color-grey-300);
855
+ }
856
+
857
+ &[data-pressed]:not([data-disabled]) {
858
+ background-color: var(--lol-color-grey-200);
859
+ }
860
+
861
+ &[data-focus-visible] {
862
+ z-index: 2;
863
+ outline: 2px solid var(--lol-color-gold-400);
864
+ outline-offset: 2px;
865
+ }
866
+
867
+ &[data-invalid] {
868
+ color: var(--lol-color-gold-400);
869
+ }
870
+
871
+ &[data-today]:not([data-selected]) {
872
+ color: var(--lol-color-gold-400);
873
+ font-weight: 700;
874
+
875
+ &::after {
876
+ content: "";
877
+ position: absolute;
878
+ bottom: 0.25rem;
879
+ width: 3px;
880
+ height: 3px;
881
+ border-radius: 9999px;
882
+ background-color: var(--lol-color-gold-400);
883
+ }
884
+ }
885
+ }
886
+
887
+ /*
888
+ * `border-color` can't be a gradient, and `border-image` (which can) turns
889
+ * out not to clip to `border-radius` — it paints a sharp rectangular frame
890
+ * regardless, which is exactly wrong for a rounded pill. So the ring is
891
+ * drawn the other way around: the cell's own `background` is the gold
892
+ * gradient, filling its full (possibly rounded) shape, and a `::before`
893
+ * sits on top with the hextech fill, inset by the ring's 2px thickness —
894
+ * the same `--lol-gradient-hextech` a selected `ToggleButton` fills itself
895
+ * with, so a selected date reads as the same "active" surface as
896
+ * everywhere else in the library. `border-radius: inherit` copies
897
+ * whatever radius the cell itself ends up with, so the hextech layer's
898
+ * corners always match the gold shape's. Where its inset is 0 on a given
899
+ * side, it covers that side's gold completely — which is how a
900
+ * RangeCalendar's row-interior cells (below) suppress the ring on their
901
+ * left/right and stay open into their neighbors, so the hextech fill
902
+ * (identical in every selected cell) reads as one continuous surface
903
+ * running the length of the range, across as many rows as it spans.
904
+ * `z-index: -1` keeps it behind the day number: an absolutely-positioned
905
+ * box otherwise paints above plain in-flow text regardless of source
906
+ * order, which would bury the digit under it. No inset `box-shadow` here
907
+ * (unlike the selected `ToggleButton` it borrows the fill from): a
908
+ * per-cell shadow is a per-cell seam, visible at every date within a
909
+ * selected run instead of once around the whole shape.
910
+ */
911
+ ._calendar_dpi4c_2 ._cell_dpi4c_82[data-selected],
912
+ ._rangeCalendar_dpi4c_3 ._cell_dpi4c_82[data-selected] {
913
+ position: relative;
914
+ background: var(--lol-gradient-gold);
915
+ color: var(--lol-color-blue-100);
916
+
917
+ &::before {
918
+ content: "";
919
+ position: absolute;
920
+ z-index: -1;
921
+ top: 2px;
922
+ bottom: 2px;
923
+ left: 0;
924
+ right: 0;
925
+ background: var(--lol-gradient-hextech);
926
+ border-radius: inherit;
927
+ }
928
+ }
929
+
930
+ /*
931
+ * Single-selection Calendar: exactly one date can be selected, so it's
932
+ * always drawn as a standalone rounded pill — there's no row to stay
933
+ * continuous with.
934
+ */
935
+ ._calendar_dpi4c_2 ._cell_dpi4c_82[data-selected] {
936
+ border-radius: 9999px;
937
+
938
+ &::before {
939
+ left: 2px;
940
+ right: 2px;
941
+ }
942
+ }
943
+
944
+ /*
945
+ * RangeCalendar: the selection is a run of adjacent cells, and the ring
946
+ * needs to read as one continuous gold outline around that whole shape
947
+ * rather than a stack of separate pills. By default a selected cell is
948
+ * square and open on both sides (the black layer covers left/right
949
+ * completely), so the gold shows only along the top/bottom and one cell's
950
+ * fill runs straight into the next. Only the actual start/end of the
951
+ * range, or a cell sitting at the edge of its own week row (the range
952
+ * wraps there), opens up a side and rounds that corner — capping the bar
953
+ * at the true ends and at every row break. The two rules below only ever
954
+ * touch their own side, so a single-day range (both start and end) still
955
+ * gets both sides capped.
956
+ *
957
+ * A multi-month display (`visibleDuration: {months: 2+}`) adds a second
958
+ * way a row can "break": when one calendar week straddles two displayed
959
+ * months, each month's own grid still renders all 7 columns for that
960
+ * week, padding out with the days that belong to the *other* grid. Those
961
+ * padding days are dimmed (`data-outside-month`) but very much still in
962
+ * the DOM and, crucially, never carry `data-selected` themselves — even
963
+ * when the date they show *is* selected in its own home grid — to avoid
964
+ * two different interactive elements both claiming to be the selected
965
+ * Sept 1st. So `td:last-child`/`td:first-child` land on those always-
966
+ * unselected padding cells, not on the last/first cell that's actually
967
+ * part of the run, and the real edge (e.g. the 31st, sitting right next
968
+ * to a dimmed, unselected "1") never matches either selector — left
969
+ * square instead of capped. The two extra rules below cap a selected
970
+ * cell whenever its neighbor plainly isn't selected, for whatever
971
+ * reason: this padding, an unavailable date, or anything else that
972
+ * breaks the run — which is the same condition `td:first-child`/
973
+ * `td:last-child` are really standing in for at a genuine row edge.
974
+ */
975
+ ._rangeCalendar_dpi4c_3 ._cell_dpi4c_82[data-selected] {
976
+ border-radius: 0;
977
+ }
978
+
979
+ ._rangeCalendar_dpi4c_3 ._cell_dpi4c_82[data-selected][data-selection-start],
980
+ ._rangeCalendar_dpi4c_3 td:first-child > ._cell_dpi4c_82[data-selected],
981
+ ._rangeCalendar_dpi4c_3
982
+ td:has(._cell_dpi4c_82:not([data-selected]))
983
+ + td
984
+ > ._cell_dpi4c_82[data-selected] {
985
+ border-top-left-radius: 9999px;
986
+ border-bottom-left-radius: 9999px;
987
+
988
+ &::before {
989
+ left: 2px;
990
+ }
991
+ }
992
+
993
+ ._rangeCalendar_dpi4c_3 ._cell_dpi4c_82[data-selected][data-selection-end],
994
+ ._rangeCalendar_dpi4c_3 td:last-child > ._cell_dpi4c_82[data-selected],
995
+ ._rangeCalendar_dpi4c_3
996
+ td:has(+ td ._cell_dpi4c_82:not([data-selected]))
997
+ > ._cell_dpi4c_82[data-selected] {
998
+ border-top-right-radius: 9999px;
999
+ border-bottom-right-radius: 9999px;
1000
+
1001
+ &::before {
1002
+ right: 2px;
1003
+ }
1004
+ }
1005
+ }
1006
+ @layer lol {
1007
+ ._dateInput_qxz9d_2 {
1008
+ background:
1009
+ var(--lol-input-background-gradient) padding-box,
1010
+ var(--lol-input-border-gradient) border-box;
1011
+
1012
+ --lol-input-border-gradient: var(--lol-gradient-gold);
1013
+ --lol-input-background-gradient: var(--lol-gradient-hextech-black);
1014
+
1015
+ border: 1px solid transparent;
1016
+ display: flex;
1017
+ align-items: center;
1018
+ width: 100%;
1019
+ margin: 0;
1020
+ padding: 0 0.75rem;
1021
+ outline: none;
1022
+
1023
+ font-family: var(--lol-font-family-spiegel);
1024
+
1025
+ &[data-disabled] {
1026
+ --lol-input-border-gradient: var(--lol-gradient-disabled);
1027
+ }
1028
+
1029
+ &[data-focus-within] {
1030
+ --lol-input-border-gradient: var(--lol-gradient-gold-hover);
1031
+ --lol-input-background-gradient: var(--lol-gradient-grey-focus);
1032
+ }
1033
+
1034
+ &._small_qxz9d_29 {
1035
+ min-height: var(--lol-form-height-small);
1036
+ }
1037
+
1038
+ &._medium_qxz9d_33 {
1039
+ min-height: var(--lol-form-height-medium);
1040
+ }
1041
+
1042
+ &._large_qxz9d_37 {
1043
+ min-height: var(--lol-form-height-large);
1044
+ }
1045
+ }
1046
+
1047
+ ._segment_qxz9d_42 {
1048
+ padding: 0 0.125rem;
1049
+ border-radius: 2px;
1050
+ font-size: 0.75rem;
1051
+ line-height: 1rem;
1052
+ font-weight: 500;
1053
+ letter-spacing: 0.025em;
1054
+ color: var(--lol-color-gold-100);
1055
+ font-variant-numeric: tabular-nums;
1056
+ outline: none;
1057
+ caret-color: transparent;
1058
+
1059
+ /* Literal separators ("/", ":", ",") sit between segments; they are not
1060
+ editable so they shouldn't pick up hover/focus affordances. */
1061
+ &[data-type="literal"] {
1062
+ padding: 0 0.125rem;
1063
+ color: var(--lol-color-grey-100);
1064
+ }
1065
+
1066
+ &[data-placeholder] {
1067
+ color: var(--lol-color-grey-100);
1068
+ }
1069
+
1070
+ &[data-hovered]:not([data-type="literal"]) {
1071
+ background-color: var(--lol-color-grey-300);
1072
+ }
1073
+
1074
+ &[data-focused]:not([data-type="literal"]) {
1075
+ background-color: var(--lol-color-gold-600);
1076
+ color: var(--lol-color-gold-100);
1077
+ }
1078
+
1079
+ &[data-disabled] {
1080
+ color: var(--lol-color-grey-150);
1081
+ }
1082
+
1083
+ &[data-readonly] {
1084
+ color: var(--lol-color-grey-100);
1085
+ }
1086
+ }
1087
+ }
1088
+ @layer lol {
1089
+ ._group_xtlnv_2 {
1090
+ display: flex;
1091
+ align-items: stretch;
1092
+ gap: 1px;
1093
+ padding: 1px;
1094
+ outline: none;
1095
+
1096
+ background-image: var(--lol-gradient-gold);
1097
+
1098
+ &[data-disabled] {
1099
+ background-image: var(--lol-gradient-disabled);
1100
+ }
1101
+
1102
+ &[data-focus-within] {
1103
+ background-image: var(--lol-gradient-gold-hover);
1104
+ }
1105
+
1106
+ &._small_xtlnv_19 {
1107
+ min-height: var(--lol-form-height-small);
1108
+ }
1109
+
1110
+ &._medium_xtlnv_23 {
1111
+ min-height: var(--lol-form-height-medium);
1112
+ }
1113
+
1114
+ &._large_xtlnv_27 {
1115
+ min-height: var(--lol-form-height-large);
1116
+ }
1117
+ }
1118
+
1119
+ ._input_xtlnv_32 {
1120
+ flex: 1;
1121
+ display: flex;
1122
+ align-items: center;
1123
+ min-width: 0;
1124
+ background-color: var(--lol-color-hextech-black);
1125
+ padding: 0 0.75rem;
1126
+ outline: none;
1127
+ font-family: var(--lol-font-family-spiegel);
1128
+
1129
+ &[data-disabled] {
1130
+ background-color: var(--lol-color-grey-300);
1131
+ }
1132
+ }
1133
+
1134
+ ._separator_xtlnv_47 {
1135
+ display: flex;
1136
+ align-items: center;
1137
+ background-color: var(--lol-color-hextech-black);
1138
+ color: var(--lol-color-grey-100);
1139
+ padding: 0 0.125rem;
1140
+ font-family: var(--lol-font-family-spiegel);
1141
+ /*
1142
+ * `.group`'s `gap` is what shows its gold background between every
1143
+ * pair of children — including the two 1px slivers flanking this
1144
+ * dash, which reads as the dash sitting in its own gold-bordered box
1145
+ * rather than as a plain separator between the two dates. Negative
1146
+ * margin pulls it 1px into each neighboring gap, so its own opaque
1147
+ * fill covers those two slivers instead.
1148
+ */
1149
+ margin: 0 -1px;
1150
+
1151
+ &[data-disabled] {
1152
+ background-color: var(--lol-color-grey-300);
1153
+ color: var(--lol-color-grey-150);
1154
+ }
1155
+ }
1156
+
1157
+ ._button_xtlnv_70 {
1158
+ /* A <button> we never paint: without this it falls back to the UA's
1159
+ `buttonface` slab, which is grey under `color-scheme: dark`. */
1160
+ appearance: none;
1161
+ border: 0;
1162
+ margin: 0;
1163
+
1164
+ display: flex;
1165
+ align-items: center;
1166
+ justify-content: center;
1167
+ padding: 0 0.625rem;
1168
+
1169
+ color: var(--lol-color-gold-300);
1170
+ background-color: var(--lol-color-hextech-black);
1171
+
1172
+ &[data-hovered] {
1173
+ color: var(--lol-color-gold-100);
1174
+ }
1175
+
1176
+ &[data-pressed] {
1177
+ color: var(--lol-color-gold-600);
1178
+ }
1179
+
1180
+ &[data-disabled] {
1181
+ color: var(--lol-color-grey-150);
1182
+ background-color: var(--lol-color-grey-300);
1183
+ }
1184
+ }
1185
+
1186
+ /*
1187
+ * The gold border + hextech-black fill are drawn once, on the popover
1188
+ * itself, and cover it edge to edge — the header and grid inside stay
1189
+ * transparent so it reads as one continuous surface rather than a stack
1190
+ * of separately-filled sections. The visible "hextech" gradient lives on
1191
+ * selected dates themselves (see calendar.module.css), not the popover.
1192
+ */
1193
+ ._popover_xtlnv_106 {
1194
+ padding: 0.75rem;
1195
+ border: 2px solid transparent;
1196
+ box-shadow: 0 2px 4px 0 var(--lol-color-grey-300);
1197
+ background:
1198
+ var(--lol-gradient-hextech-black) padding-box,
1199
+ var(--lol-gradient-gold) border-box;
1200
+ }
1201
+ }
1202
+ @layer lol {
1203
+ ._checkbox_6xifu_2 {
519
1204
  font-family: var(--lol-font-family-spiegel);
520
1205
  color: var(--lol-color-grey-100);
521
1206
  display: flex;
@@ -535,10 +1220,10 @@
535
1220
  }
536
1221
  }
537
1222
 
538
- ._icon_1rldq_22 {
1223
+ ._icon_6xifu_22 {
539
1224
  /* Off the text baseline, so the box is the glyph. */
540
1225
  display: block;
541
- max-width: 100%;
1226
+ flex-shrink: 0;
542
1227
  width: 0.875rem;
543
1228
  height: 0.875rem;
544
1229
  }
@@ -980,7 +1665,7 @@
980
1665
  }
981
1666
  }
982
1667
  @layer lol {
983
- ._popover_uemk0_2 {
1668
+ ._popover_18zyh_2 {
984
1669
  padding: 2px;
985
1670
  box-shadow: 0 2px 4px 0 var(--lol-color-grey-300);
986
1671
  border: 2px solid transparent;
@@ -990,24 +1675,28 @@
990
1675
  --lol-button-border-gradient: var(--lol-gradient-gold-press);
991
1676
  --lol-button-background-gradient: var(--lol-gradient-grey-300);
992
1677
 
993
- &._top_uemk0_12 {
1678
+ &._top_18zyh_12 {
994
1679
  margin-bottom: 0.5rem;
995
1680
  }
996
1681
 
997
- &._bottom_uemk0_16 {
1682
+ &._bottom_18zyh_16 {
998
1683
  margin-top: 0.5rem;
999
1684
  }
1000
1685
 
1001
- &._left_uemk0_20 {
1686
+ &._left_18zyh_20 {
1002
1687
  margin-right: 0.5rem;
1003
1688
  }
1004
1689
 
1005
- &._right_uemk0_24 {
1690
+ &._right_18zyh_24 {
1006
1691
  margin-left: 0.5rem;
1007
1692
  }
1008
1693
  }
1009
1694
 
1010
- ._arrow_uemk0_29 {
1695
+ ._body_18zyh_29 {
1696
+ padding: 1rem;
1697
+ }
1698
+
1699
+ ._arrow_18zyh_33 {
1011
1700
  /*
1012
1701
  * React aria anchors the arrow's wrapper with `bottom: 100%`, so the
1013
1702
  * wrapper's box has to *be* the glyph. Left inline the svg sits on a text
@@ -1016,31 +1705,31 @@
1016
1705
  */
1017
1706
  display: block;
1018
1707
 
1019
- ._outer_uemk0_38 {
1708
+ ._outer_18zyh_42 {
1020
1709
  fill: var(--lol-color-gold-600);
1021
1710
  }
1022
1711
 
1023
- ._inner_uemk0_42 {
1712
+ ._inner_18zyh_46 {
1024
1713
  fill: var(--lol-color-grey-300);
1025
1714
  }
1026
1715
 
1027
- &._top_uemk0_12 {
1716
+ &._top_18zyh_12 {
1028
1717
  transform: translateX(-1.5px);
1029
1718
  }
1030
1719
 
1031
- &._bottom_uemk0_16 {
1720
+ &._bottom_18zyh_16 {
1032
1721
  transform: translateX(-1.5px) rotate(180deg);
1033
1722
 
1034
- ._outer_uemk0_38 {
1723
+ ._outer_18zyh_42 {
1035
1724
  fill: var(--lol-color-gold-500);
1036
1725
  }
1037
1726
  }
1038
1727
 
1039
- &._left_uemk0_20 {
1728
+ &._left_18zyh_20 {
1040
1729
  transform: translateY(-2px) translateX(-5px) rotate(-90deg);
1041
1730
  }
1042
1731
 
1043
- &._right_uemk0_24 {
1732
+ &._right_18zyh_24 {
1044
1733
  transform: translateY(-2px) translateX(5px) rotate(90deg);
1045
1734
  }
1046
1735
  }
@@ -1243,7 +1932,7 @@
1243
1932
  }
1244
1933
  @layer lol {
1245
1934
  /* Base tag sets up CSS variables; variants (gold/hextech) define actual gradients */
1246
- ._tag_baprz_3 {
1935
+ ._tag_1db70_3 {
1247
1936
  background:
1248
1937
  var(--lol-multiple-select-background-gradient) padding-box,
1249
1938
  var(--lol-multiple-select-border-gradient) border-box;
@@ -1264,32 +1953,32 @@
1264
1953
  padding: 0 0.3rem 0 0.5rem;
1265
1954
  }
1266
1955
 
1267
- ._gold_baprz_24 {
1956
+ ._gold_1db70_24 {
1268
1957
  border-width: 1px;
1269
1958
  --lol-multiple-select-border-gradient: var(--lol-gradient-gold);
1270
1959
  --lol-multiple-select-background-gradient: var(--lol-gradient-grey-300);
1271
1960
  color: var(--lol-color-gold-300);
1272
1961
  }
1273
1962
 
1274
- ._hextech_baprz_31 {
1963
+ ._hextech_1db70_31 {
1275
1964
  border-width: 1px;
1276
1965
  --lol-multiple-select-border-gradient: var(--lol-gradient-hextech);
1277
1966
  --lol-multiple-select-background-gradient: var(--lol-gradient-grey-300);
1278
1967
  color: var(--lol-color-blue-100);
1279
1968
  }
1280
1969
 
1281
- ._grey_baprz_38 {
1970
+ ._grey_1db70_38 {
1282
1971
  border-width: 1px;
1283
1972
  --lol-multiple-select-border-gradient: var(--lol-color-grey-100);
1284
1973
  --lol-multiple-select-background-gradient: var(--lol-gradient-grey-300);
1285
1974
  color: var(--lol-color-gold-100);
1286
1975
  }
1287
1976
 
1288
- ._text_baprz_45 {
1977
+ ._text_1db70_45 {
1289
1978
  padding: 0.25rem 0;
1290
1979
  }
1291
1980
 
1292
- ._remove_baprz_49 {
1981
+ ._remove_1db70_49 {
1293
1982
  /* A <button> we never paint: without this it falls back to the UA's
1294
1983
  `buttonface` slab, which is grey under `color-scheme: dark`. The mask is
1295
1984
  filled with `currentColor`, so the inherited colour matters too. */
@@ -1316,13 +2005,13 @@
1316
2005
  }
1317
2006
  }
1318
2007
 
1319
- ._tagGroup_baprz_76 {
2008
+ ._tagGroup_1db70_76 {
1320
2009
  padding: 0.25rem;
1321
2010
  display: flex;
1322
- justify-content: center;
2011
+ justify-content: flex-start;
1323
2012
  }
1324
2013
 
1325
- ._tagList_baprz_82 {
2014
+ ._tagList_1db70_82 {
1326
2015
  display: flex;
1327
2016
  flex-wrap: wrap;
1328
2017
  gap: 0.25rem;
@@ -1330,209 +2019,27 @@
1330
2019
  }
1331
2020
  }
1332
2021
  @layer lol {
1333
- ._popover_1bri3_2 {
2022
+ ._popover_1gisa_2 {
1334
2023
  width: 250px;
1335
2024
  display: flex;
1336
2025
  flex-direction: column;
1337
2026
  }
1338
2027
 
1339
- ._select_1bri3_8 {
1340
- border-right: none;
1341
- display: flex;
1342
- align-items: center;
1343
- }
1344
-
1345
- ._triggerContainer_1bri3_14 {
2028
+ ._triggerContainer_1gisa_8 {
1346
2029
  display: inline-flex;
1347
2030
  }
1348
- }
1349
- @layer lol {
1350
- ._text_1tvjr_2 {
1351
- font-family: var(--lol-font-family-spiegel);
1352
- }
1353
-
1354
- ._label_1tvjr_6 {
1355
- font-size: var(--lol-font-size-label);
1356
- line-height: var(--lol-line-height-label);
1357
- letter-spacing: var(--lol-letter-spacing-label);
1358
- font-weight: var(--lol-font-weight-label);
1359
- }
1360
-
1361
- ._stat_1tvjr_13 {
1362
- font-size: var(--lol-font-size-stat);
1363
- line-height: var(--lol-line-height-stat);
1364
- letter-spacing: var(--lol-letter-spacing-stat);
1365
- font-weight: var(--lol-font-weight-stat);
1366
- }
1367
-
1368
- ._largeNumber_1tvjr_20 {
1369
- font-size: var(--lol-font-size-large-number);
1370
- line-height: var(--lol-line-height-large-number);
1371
- letter-spacing: var(--lol-letter-spacing-large-number);
1372
- font-weight: var(--lol-font-weight-large-number);
1373
- }
1374
-
1375
- ._sm_1tvjr_27 {
1376
- font-size: var(--lol-font-size-sm);
1377
- line-height: var(--lol-line-height-sm);
1378
- letter-spacing: var(--lol-letter-spacing-sm);
1379
- font-weight: var(--lol-font-weight-sm);
1380
- }
1381
-
1382
- ._base_1tvjr_34 {
1383
- font-size: var(--lol-font-size-base);
1384
- line-height: var(--lol-line-height-base);
1385
- letter-spacing: var(--lol-letter-spacing-base);
1386
- font-weight: var(--lol-font-weight-base);
1387
- }
1388
-
1389
- ._md_1tvjr_41 {
1390
- font-size: var(--lol-font-size-md);
1391
- line-height: var(--lol-line-height-md);
1392
- letter-spacing: var(--lol-letter-spacing-md);
1393
- font-weight: var(--lol-font-weight-md);
1394
- }
1395
-
1396
- ._lg_1tvjr_48 {
1397
- font-size: var(--lol-font-size-lg);
1398
- line-height: var(--lol-line-height-lg);
1399
- letter-spacing: var(--lol-letter-spacing-lg);
1400
- font-weight: var(--lol-font-weight-lg);
1401
- }
1402
-
1403
- ._grey100_1tvjr_55 {
1404
- color: var(--lol-color-grey-100);
1405
- }
1406
-
1407
- ._grey150_1tvjr_59 {
1408
- color: var(--lol-color-grey-150);
1409
- }
1410
-
1411
- ._gold100_1tvjr_63 {
1412
- color: var(--lol-color-gold-100);
1413
- }
1414
- }
1415
- @layer lol {
1416
- ._button_y5tgp_2 {
1417
- /* A <button>; the trigger's whole look is drawn below. */
1418
- appearance: none;
1419
- margin: 0;
1420
- font-family: var(--lol-font-family-spiegel);
1421
- display: inline-block;
1422
- min-width: 200px;
1423
- outline: none;
1424
-
1425
- border: 1px solid transparent;
1426
-
1427
- color: var(--lol-color-grey-100);
1428
- padding: 0 1.5rem 0 0.5rem;
1429
-
1430
- font-size: 0.75rem;
1431
- font-weight: 500;
1432
- line-height: 1rem;
1433
- letter-spacing: 0.025em;
1434
- text-align: left;
1435
-
1436
- --lol-select-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAASCAYAAACAa1QyAAAAiUlEQVR42mL8//8/A6mAiYEMQJYmFnSBk6vzYcwmIP4LxI0gjnnoRNyaoKAViKuQ+I14bQKCTiAuA+I6IGYG4gZ0jSw4nFwB1QwDjIRsKkbjNwxckFNNUw8QlyLx66EYb0D8A+IuIGaDyjcQE0+gOPoDxC1I8dNASBMDNDX8hWKMIGcc3FkDIMAA1n8bpHnZDOAAAAAASUVORK5CYII=");
1437
- --lol-select-border-gradient: var(--lol-gradient-gold);
1438
- --lol-select-background-gradient: var(--lol-gradient-hextech-black);
1439
-
1440
- &[data-open] {
1441
- --lol-select-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAASCAYAAACAa1QyAAAA90lEQVR42mL8//8/A6mAiYEMwILVJG4RNiAlDcQgZzz79/XNL2R5RnTnATWwAyn5BEfBaqDUv4UH3rcD+Q+QNaJoAmrgAFJyiY6CdWL8LNEgsRcf/ixA14juJ6kkJ8FGkIbn7//MB2pYKCHAkhDvIFgJksPlJ0ZGRgbmp+9+z1py6EMvSACoASyO009A53FCTfwNCgCoS2A2wAOEcWDiCcl5v6DOY8bmPBYsodf28/f/90sPf+iDBgQo5BiAwd4ICnZcKeKfjDBrepy9IAsoJEFBDgp6fKGHLXIXAm1pQ45cfMmoBpqM2vAmIzSNUkQnWJrFE0CAAQCQxYvehN8YFAAAAABJRU5ErkJggg==");
1442
- color: var(--lol-color-gold-600);
1443
- --lol-select-background-gradient: var(--lol-gradient-grey-300);
1444
- --lol-select-border-gradient: var(--lol-gradient-gold-press);
1445
- }
1446
-
1447
- &[data-pressed] {
1448
- --lol-select-border-gradient: var(--lol-gradient-gold-press);
1449
- }
1450
-
1451
- &[data-hovered] {
1452
- --lol-select-border-gradient: var(--lol-gradient-gold-hover);
1453
- }
1454
-
1455
- &[data-disabled] {
1456
- --lol-select-border-gradient: var(--lol-gradient-disabled);
1457
- /* make the image gray */
1458
- filter: grayscale(100%);
1459
- }
1460
-
1461
- &._small_y5tgp_47 {
1462
- min-height: var(--lol-form-height-small);
1463
- }
1464
-
1465
- &._medium_y5tgp_51 {
1466
- min-height: var(--lol-form-height-medium);
1467
- }
1468
-
1469
- &._large_y5tgp_55 {
1470
- min-height: var(--lol-form-height-large);
1471
- }
1472
- }
1473
-
1474
- ._singleSelect_y5tgp_60 {
1475
- background:
1476
- var(--lol-select-image) no-repeat right 0.5rem center,
1477
- var(--lol-select-background-gradient) padding-box,
1478
- var(--lol-select-border-gradient) border-box;
1479
- }
1480
-
1481
- ._multiSelect_y5tgp_67 {
1482
- background:
1483
- var(--lol-select-background-gradient) padding-box,
1484
- var(--lol-select-border-gradient) border-box;
1485
- }
1486
-
1487
- ._listBox_y5tgp_73 {
1488
- background-color: var(--lol-color-hextech-black);
1489
- border: 1px solid var(--lol-color-gold-600);
1490
- outline: none;
1491
- overflow-y: auto;
1492
- }
1493
-
1494
- ._item_y5tgp_80 {
1495
- border-bottom: 1px solid var(--lol-color-grey-300);
1496
- color: var(--lol-color-gold-300);
1497
- font-size: var(--lol-font-size-sm);
1498
- font-weight: var(--lol-font-weight-sm);
1499
- line-height: var(--lol-line-height-sm);
1500
- letter-spacing: var(--lol-letter-spacing-sm);
1501
- padding: 0.375rem 0.5rem;
1502
- outline: none;
1503
- cursor: pointer;
1504
-
1505
- &[data-hovered] {
1506
- background-color: var(--lol-color-grey-300);
1507
- color: var(--lol-color-gold-100);
1508
- }
1509
-
1510
- &[data-pressed],
1511
- &._focus_y5tgp_97 {
1512
- background-color: color-mix(
1513
- in srgb,
1514
- var(--lol-color-grey-300),
1515
- transparent 50%
1516
- );
1517
- color: var(--lol-color-gold-600);
1518
- }
1519
-
1520
- &._selected_y5tgp_106 {
1521
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAALCAYAAABPhbxiAAAAsElEQVR42pTQXQoBURTA8ZmbdxuxAi/WgfLmQb4pYgMi36QUJUuxBIvw7FEi/qfOrds0NPfW7+We85+mG95v18DjhGjglPKMNqjibTyilUYTbE3CaIE65ujLZZJQlptYomsvJUyjp1+Oi1pYo+MOjA7GmEWiKdrY6c7HHcqrjpDRpQeGGslv7VGLRjZ8Ii9PjAFyyOKISlxkQzkvFDUu4Izyr8gNA41KuODwL5LzFWAAUJ8mTIVblvcAAAAASUVORK5CYII=);
1522
- background-position: right 0.5rem center;
1523
- background-repeat: no-repeat;
1524
- }
1525
- }
1526
2031
 
1527
- ._popover_y5tgp_113 {
1528
- width: var(--trigger-width);
2032
+ /* Descendant selector, not just `.select`: needs higher specificity than
2033
+ `.button`'s `display: inline-block` (select.module.css), since equal-
2034
+ specificity rules would otherwise resolve by CSS source order — which
2035
+ depends on unrelated bundling details, not intent. Losing that race
2036
+ blockifies to `display: block` (this is a flex item) and silently
2037
+ drops `align-items`, so tags/empty text stick to the top instead of
2038
+ centering. */
2039
+ ._triggerContainer_1gisa_8 ._select_1gisa_12 {
2040
+ border-right: none;
1529
2041
  display: flex;
1530
- flex-direction: column;
1531
- }
1532
-
1533
- ._emptyList_y5tgp_119 {
1534
- padding: 0.5rem 0.25rem;
1535
- text-align: center;
2042
+ align-items: center;
1536
2043
  }
1537
2044
  }
1538
2045
  @layer lol {