@keenmate/pure-css 1.0.0-rc01

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,759 @@
1
+ // Pure Admin Visual - Utility Classes
2
+ // Spacing utilities similar to Bootstrap/Tailwind
3
+ // Based on rem units: 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 2, 2.5, 3, 4, 5
4
+
5
+ @use './variables' as *;
6
+
7
+ // Generic font-family utility classes (.font-family-system/-sans/-serif/-mono).
8
+ // pure-css addition: in pure-admin-core these live in a standalone _fonts.scss
9
+ // pulled in per-component; here they belong with the other utilities.
10
+ @use 'fonts';
11
+
12
+ // Spacing scale
13
+ $spacers: (
14
+ 0: 0,
15
+ 1: 0.25rem, // 4px
16
+ 2: 0.5rem, // 8px
17
+ 3: 0.75rem, // 12px
18
+ 4: 1rem, // 16px
19
+ 5: 1.25rem, // 20px
20
+ 6: 1.5rem, // 24px
21
+ 8: 2rem, // 32px
22
+ 10: 2.5rem, // 40px
23
+ 12: 3rem, // 48px
24
+ 16: 4rem, // 64px
25
+ 20: 5rem // 80px
26
+ );
27
+
28
+ // Margin utilities
29
+ @each $name, $value in $spacers {
30
+ // All sides
31
+ .m-#{$name} {
32
+ margin: #{$value} !important;
33
+ }
34
+
35
+ // Top
36
+ .mt-#{$name} {
37
+ margin-top: #{$value} !important;
38
+ }
39
+
40
+ // Right
41
+ .mr-#{$name} {
42
+ margin-right: #{$value} !important;
43
+ }
44
+
45
+ // Bottom
46
+ .mb-#{$name} {
47
+ margin-bottom: #{$value} !important;
48
+ }
49
+
50
+ // Left
51
+ .ml-#{$name} {
52
+ margin-left: #{$value} !important;
53
+ }
54
+
55
+ // X-axis (left + right)
56
+ .mx-#{$name} {
57
+ margin-left: #{$value} !important;
58
+ margin-right: #{$value} !important;
59
+ }
60
+
61
+ // Y-axis (top + bottom)
62
+ .my-#{$name} {
63
+ margin-top: #{$value} !important;
64
+ margin-bottom: #{$value} !important;
65
+ }
66
+ }
67
+
68
+ // Padding utilities
69
+ @each $name, $value in $spacers {
70
+ // All sides
71
+ .p-#{$name} {
72
+ padding: #{$value} !important;
73
+ }
74
+
75
+ // Top
76
+ .pt-#{$name} {
77
+ padding-top: #{$value} !important;
78
+ }
79
+
80
+ // Right
81
+ .pr-#{$name} {
82
+ padding-right: #{$value} !important;
83
+ }
84
+
85
+ // Bottom
86
+ .pb-#{$name} {
87
+ padding-bottom: #{$value} !important;
88
+ }
89
+
90
+ // Left
91
+ .pl-#{$name} {
92
+ padding-left: #{$value} !important;
93
+ }
94
+
95
+ // X-axis (left + right)
96
+ .px-#{$name} {
97
+ padding-left: #{$value} !important;
98
+ padding-right: #{$value} !important;
99
+ }
100
+
101
+ // Y-axis (top + bottom)
102
+ .py-#{$name} {
103
+ padding-top: #{$value} !important;
104
+ padding-bottom: #{$value} !important;
105
+ }
106
+ }
107
+
108
+ // Auto margin utilities
109
+ .m-auto {
110
+ margin: auto !important;
111
+ }
112
+
113
+ .mt-auto {
114
+ margin-top: auto !important;
115
+ }
116
+
117
+ .mr-auto {
118
+ margin-right: auto !important;
119
+ }
120
+
121
+ .mb-auto {
122
+ margin-bottom: auto !important;
123
+ }
124
+
125
+ .ml-auto {
126
+ margin-left: auto !important;
127
+ }
128
+
129
+ .mx-auto {
130
+ margin-left: auto !important;
131
+ margin-right: auto !important;
132
+ }
133
+
134
+ .my-auto {
135
+ margin-top: auto !important;
136
+ margin-bottom: auto !important;
137
+ }
138
+
139
+ // Semantic margin utilities (using spacing variables)
140
+ @each $name, $value in $semantic-spacers {
141
+ .m-#{$name} { margin: #{$value} !important; }
142
+ .mt-#{$name} { margin-top: #{$value} !important; }
143
+ .mr-#{$name} { margin-right: #{$value} !important; }
144
+ .mb-#{$name} { margin-bottom: #{$value} !important; }
145
+ .ml-#{$name} { margin-left: #{$value} !important; }
146
+ .mx-#{$name} { margin-left: #{$value} !important; margin-right: #{$value} !important; }
147
+ .my-#{$name} { margin-top: #{$value} !important; margin-bottom: #{$value} !important; }
148
+ }
149
+
150
+ // Semantic padding utilities (using spacing variables)
151
+ @each $name, $value in $semantic-spacers {
152
+ .p-#{$name} { padding: #{$value} !important; }
153
+ .pt-#{$name} { padding-top: #{$value} !important; }
154
+ .pr-#{$name} { padding-right: #{$value} !important; }
155
+ .pb-#{$name} { padding-bottom: #{$value} !important; }
156
+ .pl-#{$name} { padding-left: #{$value} !important; }
157
+ .px-#{$name} { padding-left: #{$value} !important; padding-right: #{$value} !important; }
158
+ .py-#{$name} { padding-top: #{$value} !important; padding-bottom: #{$value} !important; }
159
+ }
160
+
161
+ // Display utilities
162
+ .d-none {
163
+ display: none !important;
164
+ }
165
+
166
+ .d-inline {
167
+ display: inline !important;
168
+ }
169
+
170
+ .d-inline-block {
171
+ display: inline-block !important;
172
+ }
173
+
174
+ .d-block {
175
+ display: block !important;
176
+ }
177
+
178
+ .d-flex {
179
+ display: flex !important;
180
+ }
181
+
182
+ .d-inline-flex {
183
+ display: inline-flex !important;
184
+ }
185
+
186
+ // Flexbox utilities
187
+ .flex-row {
188
+ flex-direction: row !important;
189
+ }
190
+
191
+ .flex-column {
192
+ flex-direction: column !important;
193
+ }
194
+
195
+ .flex-wrap {
196
+ flex-wrap: wrap !important;
197
+ }
198
+
199
+ .flex-nowrap {
200
+ flex-wrap: nowrap !important;
201
+ }
202
+
203
+ .justify-content-start {
204
+ justify-content: flex-start !important;
205
+ }
206
+
207
+ .justify-content-end {
208
+ justify-content: flex-end !important;
209
+ }
210
+
211
+ .justify-content-center {
212
+ justify-content: center !important;
213
+ }
214
+
215
+ .justify-content-between {
216
+ justify-content: space-between !important;
217
+ }
218
+
219
+ .justify-content-around {
220
+ justify-content: space-around !important;
221
+ }
222
+
223
+ .align-items-start {
224
+ align-items: flex-start !important;
225
+ }
226
+
227
+ .align-items-end {
228
+ align-items: flex-end !important;
229
+ }
230
+
231
+ .align-items-center {
232
+ align-items: center !important;
233
+ }
234
+
235
+ .align-items-baseline {
236
+ align-items: baseline !important;
237
+ }
238
+
239
+ .align-items-stretch {
240
+ align-items: stretch !important;
241
+ }
242
+
243
+ .flex-fill {
244
+ flex: 1 1 auto !important;
245
+ }
246
+
247
+ .flex-grow-0 {
248
+ flex-grow: 0 !important;
249
+ }
250
+
251
+ .flex-grow-1 {
252
+ flex-grow: 1 !important;
253
+ }
254
+
255
+ .flex-shrink-0 {
256
+ flex-shrink: 0 !important;
257
+ }
258
+
259
+ .flex-shrink-1 {
260
+ flex-shrink: 1 !important;
261
+ }
262
+
263
+ // Text utilities
264
+ .text-center {
265
+ text-align: center !important;
266
+ }
267
+
268
+ .text-nowrap {
269
+ white-space: nowrap !important;
270
+ }
271
+
272
+ .text-truncate {
273
+ overflow: hidden !important;
274
+ text-overflow: ellipsis !important;
275
+ white-space: nowrap !important;
276
+ }
277
+
278
+ // Width utilities (5% increments)
279
+ .w-5 { width: 5% !important; }
280
+ .w-10 { width: 10% !important; }
281
+ .w-15 { width: 15% !important; }
282
+ .w-20 { width: 20% !important; }
283
+ .w-25 { width: 25% !important; }
284
+ .w-30 { width: 30% !important; }
285
+ .w-35 { width: 35% !important; }
286
+ .w-40 { width: 40% !important; }
287
+ .w-45 { width: 45% !important; }
288
+ .w-50 { width: 50% !important; }
289
+ .w-55 { width: 55% !important; }
290
+ .w-60 { width: 60% !important; }
291
+ .w-65 { width: 65% !important; }
292
+ .w-70 { width: 70% !important; }
293
+ .w-75 { width: 75% !important; }
294
+ .w-80 { width: 80% !important; }
295
+ .w-85 { width: 85% !important; }
296
+ .w-90 { width: 90% !important; }
297
+ .w-95 { width: 95% !important; }
298
+ .w-100 { width: 100% !important; }
299
+ .w-auto { width: auto !important; }
300
+
301
+ // Width utilities (fractions) - matches grid naming
302
+ .w-1-2 { width: 50% !important; }
303
+ .w-1-3 { width: 33.333333% !important; }
304
+ .w-2-3 { width: 66.666667% !important; }
305
+ .w-1-4 { width: 25% !important; }
306
+ .w-3-4 { width: 75% !important; }
307
+
308
+ // Min-width utilities
309
+ .mw-25 { min-width: 25% !important; }
310
+ .mw-50 { min-width: 50% !important; }
311
+ .mw-75 { min-width: 75% !important; }
312
+ .mw-100 { min-width: 100% !important; }
313
+ .mw-auto { min-width: auto !important; }
314
+ .mw-1-2 { min-width: 50% !important; }
315
+ .mw-1-3 { min-width: 33.333333% !important; }
316
+ .mw-2-3 { min-width: 66.666667% !important; }
317
+ .mw-1-4 { min-width: 25% !important; }
318
+ .mw-3-4 { min-width: 75% !important; }
319
+
320
+ // Fixed width utilities (min-width + width locked)
321
+ .w-25-fixed { min-width: 25% !important; width: 25% !important; }
322
+ .w-50-fixed { min-width: 50% !important; width: 50% !important; }
323
+ .w-75-fixed { min-width: 75% !important; width: 75% !important; }
324
+ .w-100-fixed { min-width: 100% !important; width: 100% !important; }
325
+ .w-1-2-fixed { min-width: 50% !important; width: 50% !important; }
326
+ .w-1-3-fixed { min-width: 33.333333% !important; width: 33.333333% !important; }
327
+ .w-2-3-fixed { min-width: 66.666667% !important; width: 66.666667% !important; }
328
+ .w-1-4-fixed { min-width: 25% !important; width: 25% !important; }
329
+ .w-3-4-fixed { min-width: 75% !important; width: 75% !important; }
330
+
331
+ // Height utilities
332
+ .h-25 {
333
+ height: 25% !important;
334
+ }
335
+
336
+ .h-50 {
337
+ height: 50% !important;
338
+ }
339
+
340
+ .h-75 {
341
+ height: 75% !important;
342
+ }
343
+
344
+ .h-100 {
345
+ height: 100% !important;
346
+ }
347
+
348
+ .h-auto {
349
+ height: auto !important;
350
+ }
351
+
352
+ // Height utilities (fractions)
353
+ .h-1-2 { height: 50% !important; }
354
+ .h-1-3 { height: 33.333333% !important; }
355
+ .h-2-3 { height: 66.666667% !important; }
356
+ .h-1-4 { height: 25% !important; }
357
+ .h-3-4 { height: 75% !important; }
358
+
359
+ // ============================================================================
360
+ // REM-BASED SIZING UTILITIES
361
+ // Use 'r' suffix to distinguish from percentage-based utilities
362
+ // Values: 1-10, 15, 20, 25, 30, 35, 40, 45, 50 (rem)
363
+ // ============================================================================
364
+
365
+ // Width (rem)
366
+ .wr-1 { width: 1rem !important; }
367
+ .wr-2 { width: 2rem !important; }
368
+ .wr-3 { width: 3rem !important; }
369
+ .wr-4 { width: 4rem !important; }
370
+ .wr-5 { width: 5rem !important; }
371
+ .wr-6 { width: 6rem !important; }
372
+ .wr-7 { width: 7rem !important; }
373
+ .wr-8 { width: 8rem !important; }
374
+ .wr-9 { width: 9rem !important; }
375
+ .wr-10 { width: 10rem !important; }
376
+ .wr-15 { width: 15rem !important; }
377
+ .wr-20 { width: 20rem !important; }
378
+ .wr-25 { width: 25rem !important; }
379
+ .wr-30 { width: 30rem !important; }
380
+ .wr-35 { width: 35rem !important; }
381
+ .wr-40 { width: 40rem !important; }
382
+ .wr-45 { width: 45rem !important; }
383
+ .wr-50 { width: 50rem !important; }
384
+
385
+ // Min-width (rem)
386
+ .minwr-1 { min-width: 1rem !important; }
387
+ .minwr-2 { min-width: 2rem !important; }
388
+ .minwr-3 { min-width: 3rem !important; }
389
+ .minwr-4 { min-width: 4rem !important; }
390
+ .minwr-5 { min-width: 5rem !important; }
391
+ .minwr-6 { min-width: 6rem !important; }
392
+ .minwr-7 { min-width: 7rem !important; }
393
+ .minwr-8 { min-width: 8rem !important; }
394
+ .minwr-9 { min-width: 9rem !important; }
395
+ .minwr-10 { min-width: 10rem !important; }
396
+ .minwr-15 { min-width: 15rem !important; }
397
+ .minwr-20 { min-width: 20rem !important; }
398
+ .minwr-25 { min-width: 25rem !important; }
399
+ .minwr-30 { min-width: 30rem !important; }
400
+ .minwr-35 { min-width: 35rem !important; }
401
+ .minwr-40 { min-width: 40rem !important; }
402
+ .minwr-45 { min-width: 45rem !important; }
403
+ .minwr-50 { min-width: 50rem !important; }
404
+
405
+ // Max-width (rem)
406
+ .maxwr-1 { max-width: 1rem !important; }
407
+ .maxwr-2 { max-width: 2rem !important; }
408
+ .maxwr-3 { max-width: 3rem !important; }
409
+ .maxwr-4 { max-width: 4rem !important; }
410
+ .maxwr-5 { max-width: 5rem !important; }
411
+ .maxwr-6 { max-width: 6rem !important; }
412
+ .maxwr-7 { max-width: 7rem !important; }
413
+ .maxwr-8 { max-width: 8rem !important; }
414
+ .maxwr-9 { max-width: 9rem !important; }
415
+ .maxwr-10 { max-width: 10rem !important; }
416
+ .maxwr-15 { max-width: 15rem !important; }
417
+ .maxwr-20 { max-width: 20rem !important; }
418
+ .maxwr-25 { max-width: 25rem !important; }
419
+ .maxwr-30 { max-width: 30rem !important; }
420
+ .maxwr-35 { max-width: 35rem !important; }
421
+ .maxwr-40 { max-width: 40rem !important; }
422
+ .maxwr-45 { max-width: 45rem !important; }
423
+ .maxwr-50 { max-width: 50rem !important; }
424
+
425
+ // Height (rem)
426
+ .hr-1 { height: 1rem !important; }
427
+ .hr-2 { height: 2rem !important; }
428
+ .hr-3 { height: 3rem !important; }
429
+ .hr-4 { height: 4rem !important; }
430
+ .hr-5 { height: 5rem !important; }
431
+ .hr-6 { height: 6rem !important; }
432
+ .hr-7 { height: 7rem !important; }
433
+ .hr-8 { height: 8rem !important; }
434
+ .hr-9 { height: 9rem !important; }
435
+ .hr-10 { height: 10rem !important; }
436
+ .hr-15 { height: 15rem !important; }
437
+ .hr-20 { height: 20rem !important; }
438
+ .hr-25 { height: 25rem !important; }
439
+ .hr-30 { height: 30rem !important; }
440
+ .hr-35 { height: 35rem !important; }
441
+ .hr-40 { height: 40rem !important; }
442
+ .hr-45 { height: 45rem !important; }
443
+ .hr-50 { height: 50rem !important; }
444
+
445
+ // Min-height (rem)
446
+ .minhr-1 { min-height: 1rem !important; }
447
+ .minhr-2 { min-height: 2rem !important; }
448
+ .minhr-3 { min-height: 3rem !important; }
449
+ .minhr-4 { min-height: 4rem !important; }
450
+ .minhr-5 { min-height: 5rem !important; }
451
+ .minhr-6 { min-height: 6rem !important; }
452
+ .minhr-7 { min-height: 7rem !important; }
453
+ .minhr-8 { min-height: 8rem !important; }
454
+ .minhr-9 { min-height: 9rem !important; }
455
+ .minhr-10 { min-height: 10rem !important; }
456
+ .minhr-15 { min-height: 15rem !important; }
457
+ .minhr-20 { min-height: 20rem !important; }
458
+ .minhr-25 { min-height: 25rem !important; }
459
+ .minhr-30 { min-height: 30rem !important; }
460
+ .minhr-35 { min-height: 35rem !important; }
461
+ .minhr-40 { min-height: 40rem !important; }
462
+ .minhr-45 { min-height: 45rem !important; }
463
+ .minhr-50 { min-height: 50rem !important; }
464
+ .minhr-60 { min-height: 60rem !important; }
465
+ .minhr-70 { min-height: 70rem !important; }
466
+ .minhr-80 { min-height: 80rem !important; }
467
+ .minhr-90 { min-height: 90rem !important; }
468
+ .minhr-100 { min-height: 100rem !important; }
469
+
470
+ // Max-height (rem)
471
+ .maxhr-1 { max-height: 1rem !important; }
472
+ .maxhr-2 { max-height: 2rem !important; }
473
+ .maxhr-3 { max-height: 3rem !important; }
474
+ .maxhr-4 { max-height: 4rem !important; }
475
+ .maxhr-5 { max-height: 5rem !important; }
476
+ .maxhr-6 { max-height: 6rem !important; }
477
+ .maxhr-7 { max-height: 7rem !important; }
478
+ .maxhr-8 { max-height: 8rem !important; }
479
+ .maxhr-9 { max-height: 9rem !important; }
480
+ .maxhr-10 { max-height: 10rem !important; }
481
+ .maxhr-15 { max-height: 15rem !important; }
482
+ .maxhr-20 { max-height: 20rem !important; }
483
+ .maxhr-25 { max-height: 25rem !important; }
484
+ .maxhr-30 { max-height: 30rem !important; }
485
+ .maxhr-35 { max-height: 35rem !important; }
486
+ .maxhr-40 { max-height: 40rem !important; }
487
+ .maxhr-45 { max-height: 45rem !important; }
488
+ .maxhr-50 { max-height: 50rem !important; }
489
+
490
+ // ============================================================================
491
+ // PERCENTAGE-BASED MIN/MAX UTILITIES
492
+ // Extends existing w-* and h-* utilities with min/max variants
493
+ // ============================================================================
494
+
495
+ // Min-width (percentage) - 5% increments
496
+ .minw-5 { min-width: 5% !important; }
497
+ .minw-10 { min-width: 10% !important; }
498
+ .minw-15 { min-width: 15% !important; }
499
+ .minw-20 { min-width: 20% !important; }
500
+ .minw-25 { min-width: 25% !important; }
501
+ .minw-30 { min-width: 30% !important; }
502
+ .minw-35 { min-width: 35% !important; }
503
+ .minw-40 { min-width: 40% !important; }
504
+ .minw-45 { min-width: 45% !important; }
505
+ .minw-50 { min-width: 50% !important; }
506
+ .minw-55 { min-width: 55% !important; }
507
+ .minw-60 { min-width: 60% !important; }
508
+ .minw-65 { min-width: 65% !important; }
509
+ .minw-70 { min-width: 70% !important; }
510
+ .minw-75 { min-width: 75% !important; }
511
+ .minw-80 { min-width: 80% !important; }
512
+ .minw-85 { min-width: 85% !important; }
513
+ .minw-90 { min-width: 90% !important; }
514
+ .minw-95 { min-width: 95% !important; }
515
+ .minw-100 { min-width: 100% !important; }
516
+ .minw-1-3 { min-width: 33.333333% !important; }
517
+ .minw-2-3 { min-width: 66.666667% !important; }
518
+
519
+ // Max-width (percentage) - 5% increments
520
+ .maxw-5 { max-width: 5% !important; }
521
+ .maxw-10 { max-width: 10% !important; }
522
+ .maxw-15 { max-width: 15% !important; }
523
+ .maxw-20 { max-width: 20% !important; }
524
+ .maxw-25 { max-width: 25% !important; }
525
+ .maxw-30 { max-width: 30% !important; }
526
+ .maxw-35 { max-width: 35% !important; }
527
+ .maxw-40 { max-width: 40% !important; }
528
+ .maxw-45 { max-width: 45% !important; }
529
+ .maxw-50 { max-width: 50% !important; }
530
+ .maxw-55 { max-width: 55% !important; }
531
+ .maxw-60 { max-width: 60% !important; }
532
+ .maxw-65 { max-width: 65% !important; }
533
+ .maxw-70 { max-width: 70% !important; }
534
+ .maxw-75 { max-width: 75% !important; }
535
+ .maxw-80 { max-width: 80% !important; }
536
+ .maxw-85 { max-width: 85% !important; }
537
+ .maxw-90 { max-width: 90% !important; }
538
+ .maxw-95 { max-width: 95% !important; }
539
+ .maxw-100 { max-width: 100% !important; }
540
+ .maxw-1-2 { max-width: 50% !important; }
541
+ .maxw-1-3 { max-width: 33.333333% !important; }
542
+ .maxw-2-3 { max-width: 66.666667% !important; }
543
+ .maxw-1-4 { max-width: 25% !important; }
544
+ .maxw-3-4 { max-width: 75% !important; }
545
+
546
+ // Min-height (percentage)
547
+ .minh-5 { min-height: 5% !important; }
548
+ .minh-10 { min-height: 10% !important; }
549
+ .minh-15 { min-height: 15% !important; }
550
+ .minh-20 { min-height: 20% !important; }
551
+ .minh-25 { min-height: 25% !important; }
552
+ .minh-30 { min-height: 30% !important; }
553
+ .minh-35 { min-height: 35% !important; }
554
+ .minh-40 { min-height: 40% !important; }
555
+ .minh-45 { min-height: 45% !important; }
556
+ .minh-50 { min-height: 50% !important; }
557
+ .minh-55 { min-height: 55% !important; }
558
+ .minh-60 { min-height: 60% !important; }
559
+ .minh-65 { min-height: 65% !important; }
560
+ .minh-70 { min-height: 70% !important; }
561
+ .minh-75 { min-height: 75% !important; }
562
+ .minh-80 { min-height: 80% !important; }
563
+ .minh-85 { min-height: 85% !important; }
564
+ .minh-90 { min-height: 90% !important; }
565
+ .minh-95 { min-height: 95% !important; }
566
+ .minh-100 { min-height: 100% !important; }
567
+ .minh-1-2 { min-height: 50% !important; }
568
+ .minh-1-3 { min-height: 33.333333% !important; }
569
+ .minh-2-3 { min-height: 66.666667% !important; }
570
+ .minh-1-4 { min-height: 25% !important; }
571
+ .minh-3-4 { min-height: 75% !important; }
572
+
573
+ // Max-height (percentage)
574
+ .maxh-5 { max-height: 5% !important; }
575
+ .maxh-10 { max-height: 10% !important; }
576
+ .maxh-15 { max-height: 15% !important; }
577
+ .maxh-20 { max-height: 20% !important; }
578
+ .maxh-25 { max-height: 25% !important; }
579
+ .maxh-30 { max-height: 30% !important; }
580
+ .maxh-35 { max-height: 35% !important; }
581
+ .maxh-40 { max-height: 40% !important; }
582
+ .maxh-45 { max-height: 45% !important; }
583
+ .maxh-50 { max-height: 50% !important; }
584
+ .maxh-55 { max-height: 55% !important; }
585
+ .maxh-60 { max-height: 60% !important; }
586
+ .maxh-65 { max-height: 65% !important; }
587
+ .maxh-70 { max-height: 70% !important; }
588
+ .maxh-75 { max-height: 75% !important; }
589
+ .maxh-80 { max-height: 80% !important; }
590
+ .maxh-85 { max-height: 85% !important; }
591
+ .maxh-90 { max-height: 90% !important; }
592
+ .maxh-95 { max-height: 95% !important; }
593
+ .maxh-100 { max-height: 100% !important; }
594
+ .maxh-1-2 { max-height: 50% !important; }
595
+ .maxh-1-3 { max-height: 33.333333% !important; }
596
+ .maxh-2-3 { max-height: 66.666667% !important; }
597
+ .maxh-1-4 { max-height: 25% !important; }
598
+ .maxh-3-4 { max-height: 75% !important; }
599
+
600
+ // Position utilities
601
+ .position-static {
602
+ position: static !important;
603
+ }
604
+
605
+ .position-relative {
606
+ position: relative !important;
607
+ }
608
+
609
+ .position-absolute {
610
+ position: absolute !important;
611
+ }
612
+
613
+ .position-fixed {
614
+ position: fixed !important;
615
+ }
616
+
617
+ .position-sticky {
618
+ position: sticky !important;
619
+ }
620
+
621
+ // Border / rounded utilities consume the framework's emitted --pa-border-* variables
622
+ // (themed from --base-*). They previously referenced bare --border-color / --border-radius,
623
+ // which the variable output never emits — so the utilities resolved to nothing (currentColor
624
+ // border, no radius). Pointing them at --pa-* makes the foundation self-sufficient: base.css +
625
+ // utilities.css work standalone, no host shim required.
626
+ .border {
627
+ border: 1px solid var(--pa-border-color) !important;
628
+ }
629
+
630
+ .border-top {
631
+ border-top: 1px solid var(--pa-border-color) !important;
632
+ }
633
+
634
+ .border-right {
635
+ border-right: 1px solid var(--pa-border-color) !important;
636
+ }
637
+
638
+ .border-bottom {
639
+ border-bottom: 1px solid var(--pa-border-color) !important;
640
+ }
641
+
642
+ .border-left {
643
+ border-left: 1px solid var(--pa-border-color) !important;
644
+ }
645
+
646
+ .border-0 {
647
+ border: 0 !important;
648
+ }
649
+
650
+ .border-top-0 {
651
+ border-top: 0 !important;
652
+ }
653
+
654
+ .border-right-0 {
655
+ border-right: 0 !important;
656
+ }
657
+
658
+ .border-bottom-0 {
659
+ border-bottom: 0 !important;
660
+ }
661
+
662
+ .border-left-0 {
663
+ border-left: 0 !important;
664
+ }
665
+
666
+ // Border style utilities
667
+ .border-solid { border-style: solid !important; }
668
+ .border-dashed { border-style: dashed !important; }
669
+ .border-dotted { border-style: dotted !important; }
670
+ .border-none { border-style: none !important; }
671
+
672
+ // Text color utilities (semantic colors)
673
+ .text-primary { color: var(--pa-accent) !important; }
674
+ .text-success { color: var(--pa-success-text) !important; }
675
+ .text-danger { color: var(--pa-danger-text) !important; }
676
+ .text-warning { color: var(--pa-warning-text) !important; }
677
+ .text-info { color: var(--pa-info-text) !important; }
678
+
679
+ // Text color utilities (theme custom colors 1-9)
680
+ .text-color-1 { color: var(--pa-color-1) !important; }
681
+ .text-color-2 { color: var(--pa-color-2) !important; }
682
+ .text-color-3 { color: var(--pa-color-3) !important; }
683
+ .text-color-4 { color: var(--pa-color-4) !important; }
684
+ .text-color-5 { color: var(--pa-color-5) !important; }
685
+ .text-color-6 { color: var(--pa-color-6) !important; }
686
+ .text-color-7 { color: var(--pa-color-7) !important; }
687
+ .text-color-8 { color: var(--pa-color-8) !important; }
688
+ .text-color-9 { color: var(--pa-color-9) !important; }
689
+
690
+ // Rounded utilities
691
+ .rounded {
692
+ border-radius: var(--pa-border-radius) !important;
693
+ }
694
+
695
+ .rounded-lg {
696
+ border-radius: var(--pa-border-radius-lg) !important;
697
+ }
698
+
699
+ .rounded-circle {
700
+ border-radius: 50% !important;
701
+ }
702
+
703
+ .rounded-0 {
704
+ border-radius: 0 !important;
705
+ }
706
+
707
+ .rounded-top {
708
+ border-top-left-radius: var(--pa-border-radius) !important;
709
+ border-top-right-radius: var(--pa-border-radius) !important;
710
+ }
711
+
712
+ .rounded-bottom {
713
+ border-bottom-left-radius: var(--pa-border-radius) !important;
714
+ border-bottom-right-radius: var(--pa-border-radius) !important;
715
+ }
716
+
717
+ .rounded-left {
718
+ border-top-left-radius: var(--pa-border-radius) !important;
719
+ border-bottom-left-radius: var(--pa-border-radius) !important;
720
+ }
721
+
722
+ .rounded-right {
723
+ border-top-right-radius: var(--pa-border-radius) !important;
724
+ border-bottom-right-radius: var(--pa-border-radius) !important;
725
+ }
726
+
727
+ // Shadow utilities
728
+ .shadow-none {
729
+ box-shadow: none !important;
730
+ }
731
+
732
+ .shadow-sm {
733
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075) !important;
734
+ }
735
+
736
+ .shadow {
737
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
738
+ }
739
+
740
+ .shadow-lg {
741
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15) !important;
742
+ }
743
+
744
+ // ============================================================================
745
+ // Gap utilities (flex/grid) — same scale as spacing
746
+ // ============================================================================
747
+ @each $name, $value in $spacers {
748
+ .gap-#{$name} { gap: $value !important; }
749
+ .gap-x-#{$name} { column-gap: $value !important; }
750
+ .gap-y-#{$name} { row-gap: $value !important; }
751
+ }
752
+
753
+ // ============================================================================
754
+ // Container queries
755
+ // ============================================================================
756
+
757
+ .pa-cq {
758
+ container-type: inline-size;
759
+ }