@stnd/styles 0.5.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,1117 @@
1
+ @use "standard-00-variables" as *;
2
+
3
+ /**
4
+ * @component Utility Classes
5
+ * @category Utilities
6
+ * @description Hybrid utility system supporting both Industrial T-shirt sizes
7
+ * and Mathematical units (1-12).
8
+ */
9
+
10
+ /* ============================================================ */
11
+ /* MIXIN: Generate Scale */
12
+ /* ============================================================ */
13
+
14
+ @mixin generate-scale($prefix, $property) {
15
+ $scales: (
16
+ "full": 100%,
17
+ "0": 0,
18
+ "auto": auto,
19
+
20
+ /* Industrial T-shirt Scale */ "3xs": var(--size-3xs),
21
+ "2xs": var(--size-2xs),
22
+ "xs": var(--size-xs),
23
+ "sm": var(--size-sm),
24
+ "base": var(--size-base),
25
+ "lg": var(--size-lg),
26
+ "xl": var(--size-xl),
27
+ "2xl": var(--size-2xl),
28
+ "3xl": var(--size-3xl),
29
+ "4xl": var(--size-4xl),
30
+ "5xl": var(--size-5xl),
31
+ "6xl": var(--size-6xl),
32
+ /* Mathematical Unit Scale (1-12) */ "": var(--space),
33
+ "2": var(--space-2),
34
+ "3": var(--space-3),
35
+ "4": var(--space-4),
36
+ "5": var(--space-5),
37
+ "6": var(--space-6),
38
+ "7": var(--space-7),
39
+ "8": var(--space-8),
40
+ "9": var(--space-9),
41
+ "10": var(--space-10),
42
+ "11": var(--space-11),
43
+ "12": var(--space-12),
44
+ "half": var(--space-d2),
45
+ "trim": var(--size-2xs),
46
+ "leading": var(--size-xs),
47
+ );
48
+
49
+ // Loop through and generate classes
50
+ @each $suffix, $value in $scales {
51
+ @if $suffix == "" {
52
+ .#{$prefix} {
53
+ #{$property}: $value !important;
54
+ }
55
+ } @else {
56
+ .#{$prefix}-#{$suffix} {
57
+ #{$property}: $value !important;
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ .w-auto {
64
+ width: auto !important;
65
+ }
66
+
67
+ .w-full {
68
+ width: 100% !important;
69
+ }
70
+
71
+ .w-screen {
72
+ width: 100vw !important;
73
+ }
74
+
75
+ .w-min {
76
+ width: min-content !important;
77
+ }
78
+
79
+ .w-max {
80
+ width: max-content !important;
81
+ }
82
+
83
+ .w-fit {
84
+ width: fit-content !important;
85
+ }
86
+
87
+ /* Min-width */
88
+ @include generate-scale(min-w, min-width);
89
+
90
+ .min-w-full {
91
+ min-width: 100% !important;
92
+ }
93
+
94
+ .min-w-screen {
95
+ min-width: 100vw !important;
96
+ }
97
+
98
+ /* Max-width */
99
+ @include generate-scale(max-w, max-width);
100
+
101
+ .max-w-none {
102
+ max-width: none !important;
103
+ }
104
+
105
+ .max-w-full {
106
+ max-width: 100% !important;
107
+ }
108
+
109
+ .max-w-screen {
110
+ max-width: 100vw !important;
111
+ }
112
+
113
+ .max-w-mobile {
114
+ max-width: var(--mobile) !important;
115
+ }
116
+
117
+ .max-w-small {
118
+ max-width: var(--small) !important;
119
+ }
120
+
121
+ .max-w-large {
122
+ max-width: var(--large) !important;
123
+ }
124
+
125
+ .max-w-wide {
126
+ max-width: var(--wide) !important;
127
+ }
128
+
129
+ /* ============================================================ */
130
+ /* HEIGHT */
131
+ /* ============================================================ */
132
+
133
+ @include generate-scale(h, height);
134
+
135
+ .h-auto {
136
+ height: auto !important;
137
+ }
138
+
139
+ .h-full {
140
+ height: 100% !important;
141
+ }
142
+
143
+ .h-screen {
144
+ height: 100vh !important;
145
+ }
146
+
147
+ .h-min {
148
+ height: min-content !important;
149
+ }
150
+
151
+ .h-max {
152
+ height: max-content !important;
153
+ }
154
+
155
+ .h-fit {
156
+ height: fit-content !important;
157
+ }
158
+
159
+ /* Min-height */
160
+ @include generate-scale(min-h, min-height);
161
+
162
+ .min-h-full {
163
+ min-height: 100% !important;
164
+ }
165
+
166
+ .min-h-screen {
167
+ min-height: 100vh !important;
168
+ }
169
+
170
+ /* Max-height */
171
+ @include generate-scale(max-h, max-height);
172
+
173
+ .max-h-none {
174
+ max-height: none !important;
175
+ }
176
+
177
+ .max-h-full {
178
+ max-height: 100% !important;
179
+ }
180
+
181
+ .max-h-screen {
182
+ max-height: 100vh !important;
183
+ }
184
+
185
+ .m-gap-header {
186
+ margin-top: var(--gap-header);
187
+ }
188
+
189
+ .p-gap-header {
190
+ padding-top: var(--gap-header);
191
+ }
192
+
193
+ .m-gap-footer {
194
+ margin-bottom: var(--gap-footer);
195
+ }
196
+
197
+ .p-gap-footer {
198
+ padding-bottom: var(--gap-footer);
199
+ }
200
+
201
+ /* ============================================================ */
202
+ /* DISPLAY */
203
+ /* ============================================================ */
204
+
205
+ .block {
206
+ display: block !important;
207
+ }
208
+
209
+ .inline {
210
+ display: inline !important;
211
+ }
212
+
213
+ .inline-block {
214
+ display: inline-block !important;
215
+ }
216
+
217
+ .grid {
218
+ display: grid !important;
219
+ }
220
+
221
+ .hidden {
222
+ display: none !important;
223
+ }
224
+
225
+ /* ============================================================ */
226
+ /* POSITION */
227
+ /* ============================================================ */
228
+
229
+ .relative {
230
+ position: relative !important;
231
+ }
232
+
233
+ .absolute {
234
+ position: absolute !important;
235
+ }
236
+
237
+ .fixed {
238
+ position: fixed !important;
239
+ }
240
+
241
+ .sticky {
242
+ position: sticky !important;
243
+ }
244
+
245
+ /* ============================================================ */
246
+ /* FLEXBOX */
247
+ /* ============================================================ */
248
+
249
+ .flex,
250
+ .flex-row,
251
+ .flex-col {
252
+ display: flex !important;
253
+ gap: var(--gap);
254
+
255
+ & :not(.rhythm) * {
256
+ margin-top: 0;
257
+ }
258
+ }
259
+
260
+ .flex-1 {
261
+ flex: 1 1 0% !important;
262
+ }
263
+
264
+ .flex-row {
265
+ flex-direction: row !important;
266
+ }
267
+
268
+ .flex-col {
269
+ flex-direction: column !important;
270
+ }
271
+
272
+ .flex-wrap {
273
+ flex-wrap: wrap !important;
274
+ }
275
+
276
+ .flex-nowrap {
277
+ flex-wrap: nowrap !important;
278
+ }
279
+
280
+ .flex-far {
281
+ display: flex;
282
+ align-items: center;
283
+ justify-content: space-between;
284
+ }
285
+
286
+ /* Align items */
287
+ .items-start {
288
+ align-items: flex-start !important;
289
+ }
290
+
291
+ .items-center {
292
+ align-items: center !important;
293
+ }
294
+
295
+ .items-end {
296
+ align-items: flex-end !important;
297
+ }
298
+
299
+ .items-baseline {
300
+ align-items: baseline !important;
301
+ }
302
+
303
+ .items-stretch {
304
+ align-items: stretch !important;
305
+ }
306
+
307
+ /* Justify content */
308
+ .justify-start {
309
+ justify-content: flex-start !important;
310
+ }
311
+
312
+ .justify-center {
313
+ justify-content: center !important;
314
+ }
315
+
316
+ .justify-end {
317
+ justify-content: flex-end !important;
318
+ }
319
+
320
+ .justify-between {
321
+ justify-content: space-between !important;
322
+ }
323
+
324
+ .justify-around {
325
+ justify-content: space-around !important;
326
+ }
327
+
328
+ .justify-evenly {
329
+ justify-content: space-evenly !important;
330
+ }
331
+
332
+ /* ============================================================ */
333
+ /* LAYOUT HELPERS */
334
+ /* ============================================================ */
335
+
336
+ .center-content {
337
+ display: flex;
338
+ align-items: center;
339
+ justify-content: center;
340
+ }
341
+
342
+ .center-horizontally,
343
+ .mh-auto {
344
+ margin-left: auto;
345
+ margin-right: auto;
346
+ }
347
+
348
+ .center-vertically {
349
+ display: flex;
350
+ align-items: center;
351
+ }
352
+
353
+ .no-body-margin {
354
+ margin-inline: calc((var(--gap-body) * -1)) !important;
355
+ }
356
+
357
+ /* ============================================================ */
358
+ /* TYPOGRAPHY — Size */
359
+ /* ============================================================ */
360
+
361
+ .text-3xs {
362
+ font-size: var(--size-3xs) !important;
363
+ }
364
+
365
+ .text-2xs {
366
+ font-size: var(--size-2xs) !important;
367
+ }
368
+
369
+ .text-xs {
370
+ font-size: var(--size-xs) !important;
371
+ }
372
+
373
+ .text-sm {
374
+ font-size: var(--size-sm) !important;
375
+ }
376
+
377
+ .text-base {
378
+ font-size: var(--size-base) !important;
379
+ }
380
+
381
+ .text-lg {
382
+ font-size: var(--size-lg) !important;
383
+ }
384
+
385
+ .text-xl {
386
+ font-size: var(--size-xl) !important;
387
+ }
388
+
389
+ .text-2xl {
390
+ font-size: var(--size-2xl) !important;
391
+ }
392
+
393
+ .text-3xl {
394
+ font-size: var(--size-3xl) !important;
395
+ }
396
+
397
+ .text-4xl {
398
+ font-size: var(--size-4xl) !important;
399
+ }
400
+
401
+ .text-5xl {
402
+ font-size: var(--size-5xl) !important;
403
+ }
404
+
405
+ .text-6xl {
406
+ font-size: var(--size-6xl) !important;
407
+ }
408
+
409
+ /* ============================================================ */
410
+ /* TYPOGRAPHY — Weight */
411
+ /* ============================================================ */
412
+
413
+ .font-bold {
414
+ font-weight: var(--font-weight-bold) !important;
415
+ }
416
+
417
+ .font-normal {
418
+ font-weight: var(--font-weight) !important;
419
+ }
420
+
421
+ .font-light {
422
+ font-weight: 300 !important;
423
+ }
424
+
425
+ /* ============================================================ */
426
+ /* TYPOGRAPHY — Line Height */
427
+ /* ============================================================ */
428
+
429
+ .compact {
430
+ line-height: var(--line-height-compact) !important;
431
+ }
432
+
433
+ .relaxed {
434
+ line-height: var(--line-height-relaxed) !important;
435
+ }
436
+
437
+ /* ============================================================ */
438
+ /* TYPOGRAPHY — Alignment */
439
+ /* ============================================================ */
440
+
441
+ .text-left {
442
+ text-align: left !important;
443
+ & > * {
444
+ margin-inline: 0 auto !important;
445
+ }
446
+ }
447
+
448
+ .text-center {
449
+ text-align: center !important;
450
+ & > * {
451
+ margin-inline: auto !important;
452
+ }
453
+ }
454
+
455
+ .text-right {
456
+ text-align: right !important;
457
+ & > * {
458
+ margin-inline: auto 0 !important;
459
+ }
460
+ }
461
+
462
+ .text-justify {
463
+ text-align: justify !important;
464
+ }
465
+
466
+ /* ============================================================ */
467
+ /* TYPOGRAPHY — Transform */
468
+ /* ============================================================ */
469
+
470
+ .uppercase {
471
+ text-transform: uppercase !important;
472
+ letter-spacing: 0.05em;
473
+ }
474
+
475
+ .lowercase {
476
+ text-transform: lowercase !important;
477
+ }
478
+
479
+ .capitalize {
480
+ text-transform: capitalize !important;
481
+ }
482
+
483
+ .text-transform-none {
484
+ text-transform: none !important;
485
+ }
486
+
487
+ /* ============================================================ */
488
+ /* TYPOGRAPHY — Wrapping & Overflow */
489
+ /* ============================================================ */
490
+
491
+ .no-wrap {
492
+ white-space: nowrap !important;
493
+ }
494
+
495
+ .no-trim {
496
+ text-box-trim: none !important;
497
+
498
+ * {
499
+ text-box-trim: none !important;
500
+ }
501
+ }
502
+
503
+ .ellipsis,
504
+ .ellipsis li {
505
+ overflow: hidden;
506
+ text-overflow: ellipsis;
507
+ white-space: nowrap;
508
+ display: block;
509
+ text-box-trim: inherit;
510
+ text-box-edge: inherit;
511
+ }
512
+
513
+ /* ============================================================ */
514
+ /* READING WIDTH (line-width constraints) */
515
+ /* ============================================================ */
516
+
517
+ .line-xs {
518
+ max-width: var(--line-width-xs) !important;
519
+ }
520
+
521
+ .line-s {
522
+ max-width: var(--line-width-s) !important;
523
+ }
524
+
525
+ .line {
526
+ max-width: var(--line-width) !important;
527
+ }
528
+
529
+ .line-l {
530
+ max-width: var(--line-width-l) !important;
531
+ }
532
+
533
+ .line-xl {
534
+ max-width: var(--line-width-xl) !important;
535
+ }
536
+
537
+ .line-full {
538
+ max-width: var(--line-width-full) !important;
539
+ }
540
+
541
+ /* ============================================================ */
542
+ /* COLORS — Text (semantic) */
543
+ /* ============================================================ */
544
+
545
+ .text-primary {
546
+ color: var(--color-foreground) !important;
547
+ }
548
+
549
+ .text-muted {
550
+ color: var(--color-muted) !important;
551
+ }
552
+
553
+ .text-subtle {
554
+ color: var(--color-subtle) !important;
555
+ }
556
+
557
+ .text-accent {
558
+ color: var(--color-accent) !important;
559
+ }
560
+
561
+ .font-text {
562
+ font-family: var(--font-text) !important;
563
+ }
564
+
565
+ .font-monospace {
566
+ font-family: var(--font-monospace) !important;
567
+ }
568
+
569
+ .font-serif {
570
+ font-family: var(--font-serif) !important;
571
+ }
572
+
573
+ .font-sans {
574
+ font-family: var(--font-sans) !important;
575
+ }
576
+
577
+ /* ============================================================ */
578
+ /* COLORS — Status */
579
+ /* ============================================================ */
580
+
581
+ .success {
582
+ --color-msg: var(--color-success);
583
+ color: var(--color-success) !important;
584
+ }
585
+
586
+ .warning {
587
+ --color-msg: var(--color-warning);
588
+ color: var(--color-warning) !important;
589
+ }
590
+
591
+ .error {
592
+ --color-msg: var(--color-error);
593
+ color: var(--color-error) !important;
594
+ }
595
+
596
+ .info {
597
+ --color-msg: var(--color-info);
598
+ color: var(--color-info) !important;
599
+ }
600
+
601
+ /* ============================================================ */
602
+ /* COLORS — Named spectrum (text) */
603
+ /* ============================================================ */
604
+
605
+ .red {
606
+ color: var(--color-red) !important;
607
+ }
608
+
609
+ .orange {
610
+ color: var(--color-orange) !important;
611
+ }
612
+
613
+ .yellow {
614
+ color: var(--color-yellow) !important;
615
+ }
616
+
617
+ .green {
618
+ color: var(--color-green) !important;
619
+ }
620
+
621
+ .cyan {
622
+ color: var(--color-cyan) !important;
623
+ }
624
+
625
+ .blue {
626
+ color: var(--color-blue) !important;
627
+ }
628
+
629
+ .purple {
630
+ color: var(--color-magenta) !important;
631
+ }
632
+
633
+ .pink {
634
+ color: var(--color-magenta) !important;
635
+ }
636
+
637
+ /* ============================================================ */
638
+ /* BACKGROUNDS — Semantic */
639
+ /* ============================================================ */
640
+
641
+ .bg-background {
642
+ background-color: var(--color-background) !important;
643
+ }
644
+
645
+ .bg-surface {
646
+ background-color: var(--color-surface) !important;
647
+ }
648
+
649
+ .bg-surface {
650
+ background-color: var(--color-surface) !important;
651
+ }
652
+
653
+ .bg-accent {
654
+ background-color: var(--color-accent) !important;
655
+ }
656
+
657
+ .bg-foreground {
658
+ background-color: var(--color-foreground) !important;
659
+ }
660
+
661
+ .bg-transparent {
662
+ background-color: transparent !important;
663
+ }
664
+
665
+ .bg-glass {
666
+ backdrop-filter: var(--filter-glass);
667
+ background-color: var(--color-glass);
668
+ }
669
+
670
+ .bg-surface-lowest {
671
+ background-color: var(--color-surface-lowest) !important;
672
+ }
673
+
674
+ .bg-surface-low {
675
+ background-color: var(--color-surface-low) !important;
676
+ }
677
+
678
+ .bg-surface {
679
+ background-color: var(--color-surface) !important;
680
+ }
681
+
682
+ .bg-surface-high {
683
+ background-color: var(--color-surface-high) !important;
684
+ }
685
+
686
+ .bg-surface-highest {
687
+ background-color: var(--color-surface-highest) !important;
688
+ }
689
+
690
+ /* ============================================================ */
691
+ /* BACKGROUNDS — Named spectrum */
692
+ /* ============================================================ */
693
+
694
+ .bg-red {
695
+ background-color: var(--color-red) !important;
696
+ }
697
+
698
+ .bg-orange {
699
+ background-color: var(--color-orange) !important;
700
+ }
701
+
702
+ .bg-yellow {
703
+ background-color: var(--color-yellow) !important;
704
+ }
705
+
706
+ .bg-green {
707
+ background-color: var(--color-green) !important;
708
+ }
709
+
710
+ .bg-cyan {
711
+ background-color: var(--color-cyan) !important;
712
+ }
713
+
714
+ .bg-blue {
715
+ background-color: var(--color-blue) !important;
716
+ }
717
+
718
+ .bg-purple {
719
+ background-color: var(--color-magenta) !important;
720
+ }
721
+
722
+ .bg-pink {
723
+ background-color: var(--color-magenta) !important;
724
+ }
725
+
726
+ /* ============================================================ */
727
+ /* INVERT */
728
+ /* ============================================================ */
729
+
730
+ .invert {
731
+ color: var(--color-background);
732
+ background: var(--color-foreground);
733
+
734
+ * {
735
+ color: var(--color-background) !important;
736
+ }
737
+ }
738
+
739
+ @media (prefers-color-scheme: dark) {
740
+ .invert {
741
+ color: var(--color-foreground) !important;
742
+ background: color-mix(
743
+ in srgb,
744
+ var(--color-foreground) 15%,
745
+ transparent
746
+ ) !important;
747
+ }
748
+ }
749
+
750
+ /* ============================================================ */
751
+ /* SHADOWS */
752
+ /* ============================================================ */
753
+
754
+ .shadow {
755
+ box-shadow: var(--shadow) !important;
756
+ }
757
+
758
+ .shadow-raised {
759
+ box-shadow: var(--shadow-raised) !important;
760
+ }
761
+
762
+ .shadow-inset {
763
+ box-shadow: var(--shadow-inset) !important;
764
+ }
765
+
766
+ .shadow-lg {
767
+ box-shadow: var(--shadow-lg) !important;
768
+ }
769
+
770
+ .shadow-xl {
771
+ box-shadow: var(--shadow-xl) !important;
772
+ }
773
+
774
+ .shadow-glow {
775
+ box-shadow: var(--shadow-glow) !important;
776
+ }
777
+
778
+ .shadow-ring {
779
+ box-shadow: var(--shadow-ring) !important;
780
+ }
781
+
782
+ .shadow-inset-ring {
783
+ box-shadow: var(--shadow-inset), var(--shadow-ring) !important;
784
+ }
785
+
786
+ .no-shadow {
787
+ box-shadow: none !important;
788
+ }
789
+
790
+ /* ============================================================ */
791
+ /* BORDERS */
792
+ /* ============================================================ */
793
+
794
+ .border-0 {
795
+ border: 0 !important;
796
+ }
797
+
798
+ .border {
799
+ border: var(--border) !important;
800
+ }
801
+
802
+ .border-accent {
803
+ border: var(--border-accent) !important;
804
+ }
805
+
806
+ .border-t {
807
+ border-top: var(--border) !important;
808
+ }
809
+
810
+ .border-b {
811
+ border-bottom: var(--border) !important;
812
+ }
813
+
814
+ .border-l {
815
+ border-left: var(--border) !important;
816
+ }
817
+
818
+ .border-r {
819
+ border-right: var(--border) !important;
820
+ }
821
+
822
+ /* ============================================================ */
823
+ /* BORDER RADIUS */
824
+ /* ============================================================ */
825
+
826
+ .rounded-sm {
827
+ border-radius: calc(var(--radius) / 2) !important;
828
+ }
829
+
830
+ .rounded {
831
+ border-radius: var(--radius) !important;
832
+ }
833
+
834
+ .rounded-lg {
835
+ border-radius: calc(var(--radius) * 1.5) !important;
836
+ }
837
+
838
+ .rounded-xl {
839
+ border-radius: calc(var(--radius) * 2) !important;
840
+ }
841
+
842
+ .rounded-full {
843
+ border-radius: 9999px !important;
844
+ }
845
+
846
+ .rounded-50,
847
+ .rounded-50 img {
848
+ border-radius: 50%;
849
+ }
850
+
851
+ .no-rounded {
852
+ border-radius: 0 !important;
853
+ }
854
+
855
+ /* ============================================================ */
856
+ /* RHYTHM */
857
+ /* ============================================================ */
858
+
859
+ .rhythm-compact {
860
+ --base-gap: var(--leading);
861
+ }
862
+
863
+ .rhythm-relaxed {
864
+ --base-gap: var(--space-2);
865
+ }
866
+
867
+ @supports not (display: grid) {
868
+ .rhythm {
869
+ display: block;
870
+
871
+ > * {
872
+ margin-block-end: calc(var(--space-block-gap) * var(--space-gap));
873
+ }
874
+
875
+ > :last-child {
876
+ margin-block-end: 0;
877
+ }
878
+ }
879
+ }
880
+
881
+ /* ============================================================ */
882
+ /* MULTI-COLUMN FLOW */
883
+ /* ============================================================ */
884
+
885
+ .columns,
886
+ .columns-2 {
887
+ columns: 2;
888
+ column-gap: var(--space);
889
+ }
890
+
891
+ .columns-3 {
892
+ columns: 3;
893
+ column-gap: var(--space);
894
+ }
895
+
896
+ .columns-4 {
897
+ columns: 4;
898
+ column-gap: var(--space);
899
+ }
900
+
901
+ .columns-auto {
902
+ columns: auto;
903
+ column-width: var(--line-width-s);
904
+ column-gap: var(--space);
905
+ }
906
+
907
+ [class|="columns"].compact {
908
+ column-gap: var(--leading);
909
+ }
910
+
911
+ [class|="columns"].relaxed {
912
+ column-gap: var(--space-2);
913
+ }
914
+
915
+ .columns-gap-compact {
916
+ column-gap: var(--leading);
917
+ }
918
+
919
+ .columns-gap-wide {
920
+ column-gap: var(--space-2);
921
+ }
922
+
923
+ .columns-keep {
924
+ break-inside: avoid;
925
+ page-break-inside: avoid;
926
+ }
927
+
928
+ .columns-rule {
929
+ column-rule: var(--border);
930
+ }
931
+
932
+ .columns-rule-accent {
933
+ column-rule: 1px solid var(--color-accent);
934
+ }
935
+
936
+ @media (max-width: $small) {
937
+ .columns-2,
938
+ .columns-3,
939
+ .columns-4 {
940
+ columns: 1;
941
+ }
942
+ }
943
+
944
+ @media (min-width: calc($small + 1px)) and (max-width: $large) {
945
+ .columns-3,
946
+ .columns-4 {
947
+ columns: 2;
948
+ }
949
+ }
950
+
951
+ /* ============================================================ */
952
+ /* ACCESSIBILITY & RESETS */
953
+ /* ============================================================ */
954
+
955
+ .visually-hidden {
956
+ position: absolute;
957
+ width: 1px;
958
+ height: 1px;
959
+ padding: 0;
960
+ margin: -1px;
961
+ overflow: hidden;
962
+ clip: rect(0, 0, 0, 0);
963
+ white-space: nowrap;
964
+ border-width: 0;
965
+ }
966
+
967
+ .no-decoration,
968
+ .no-decoration * {
969
+ text-decoration: none !important;
970
+ }
971
+
972
+ .no-mouse {
973
+ pointer-events: none;
974
+ user-select: none;
975
+ }
976
+
977
+ .no-bullet {
978
+ list-style: none;
979
+ padding-inline-start: 0;
980
+
981
+ li::before {
982
+ display: none;
983
+ }
984
+ }
985
+
986
+ .no-wrap {
987
+ white-space: nowrap;
988
+ }
989
+ .keep-words {
990
+ word-break: keep-all;
991
+ }
992
+ .no-hyphen {
993
+ hyphens: none;
994
+ }
995
+
996
+ /* ============================================================ */
997
+ /* SPACING — Margins */
998
+ /* ============================================================ */
999
+
1000
+ @include generate-scale(m, margin);
1001
+ @include generate-scale(my, margin-block);
1002
+ @include generate-scale(mx, margin-inline);
1003
+ @include generate-scale(mt, margin-top);
1004
+ @include generate-scale(mr, margin-right);
1005
+ @include generate-scale(mb, margin-bottom);
1006
+ @include generate-scale(ml, margin-left);
1007
+
1008
+ /* ============================================================ */
1009
+ /* SPACING — Paddings */
1010
+ /* ============================================================ */
1011
+
1012
+ @include generate-scale(p, padding);
1013
+ @include generate-scale(py, padding-block);
1014
+ @include generate-scale(px, padding-inline);
1015
+ @include generate-scale(pt, padding-top);
1016
+ @include generate-scale(pr, padding-right);
1017
+ @include generate-scale(pb, padding-bottom);
1018
+ @include generate-scale(pl, padding-left);
1019
+
1020
+ /* ============================================================ */
1021
+ /* SPACING — Gaps */
1022
+ /* ============================================================ */
1023
+
1024
+ @include generate-scale(gap, gap);
1025
+ @include generate-scale(gap-x, column-gap);
1026
+ @include generate-scale(gap-y, row-gap);
1027
+
1028
+ /* ============================================================ */
1029
+ /* WIDTH */
1030
+ /* ============================================================ */
1031
+
1032
+ @include generate-scale(w, width);
1033
+
1034
+ /* ============================================================ */
1035
+ /* RESPONSIVE BREAKPOINTS */
1036
+ /* ============================================================ */
1037
+
1038
+ /* Small screens (mobile): ≤ $small */
1039
+ @media (max-width: $small) {
1040
+ .sm\:hidden {
1041
+ display: none !important;
1042
+ }
1043
+
1044
+ .sm\:only {
1045
+ display: inherit !important;
1046
+ }
1047
+
1048
+ .md\:only {
1049
+ display: none !important;
1050
+ }
1051
+
1052
+ .lg\:only {
1053
+ display: none !important;
1054
+ }
1055
+
1056
+ .sm\:text-center {
1057
+ text-align: center !important;
1058
+ margin-inline: auto !important;
1059
+ & > * {
1060
+ margin-inline: auto !important;
1061
+ }
1062
+ }
1063
+
1064
+ @include generate-scale(sm\:mt, margin-top);
1065
+ @include generate-scale(sm\:mr, margin-right);
1066
+ @include generate-scale(sm\:mb, margin-bottom);
1067
+ @include generate-scale(sm\:ml, margin-left);
1068
+ @include generate-scale(sm\:my, margin-block);
1069
+ @include generate-scale(sm\:mx, margin-inline);
1070
+ @include generate-scale(sm\:m, margin);
1071
+
1072
+ @include generate-scale(sm\:pt, padding-top);
1073
+ @include generate-scale(sm\:pr, padding-right);
1074
+ @include generate-scale(sm\:pb, padding-bottom);
1075
+ @include generate-scale(sm\:pl, padding-left);
1076
+ @include generate-scale(sm\:py, padding-block);
1077
+ @include generate-scale(sm\:px, padding-inline);
1078
+ @include generate-scale(sm\:p, padding);
1079
+ }
1080
+
1081
+ /* Medium screens (tablet): $small+1 → $large */
1082
+ @media (min-width: calc($small + 1px)) and (max-width: $large) {
1083
+ .md\:hidden {
1084
+ display: none !important;
1085
+ }
1086
+
1087
+ .sm\:only {
1088
+ display: none !important;
1089
+ }
1090
+
1091
+ .md\:only {
1092
+ display: inherit !important;
1093
+ }
1094
+
1095
+ .lg\:only {
1096
+ display: none !important;
1097
+ }
1098
+ }
1099
+
1100
+ /* Large screens (desktop): > $large */
1101
+ @media (min-width: calc($large + 1px)) {
1102
+ .lg\:hidden {
1103
+ display: none !important;
1104
+ }
1105
+
1106
+ .sm\:only {
1107
+ display: none !important;
1108
+ }
1109
+
1110
+ .md\:only {
1111
+ display: none !important;
1112
+ }
1113
+
1114
+ .lg\:only {
1115
+ display: inherit !important;
1116
+ }
1117
+ }