mnfst 0.5.192 → 0.5.193

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/lib/manifest.css CHANGED
@@ -271,13 +271,7 @@
271
271
 
272
272
  :where(::placeholder) {
273
273
  opacity: 1;
274
- color: #9ca3af
275
- }
276
-
277
- @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
278
- :where(::placeholder) {
279
- color: color-mix(in oklab, currentcolor 50%, transparent)
280
- }
274
+ color: color-mix(in oklab, currentcolor 50%, transparent)
281
275
  }
282
276
 
283
277
  @keyframes mnfst-popover-in {
@@ -290,13 +284,13 @@
290
284
  }
291
285
  }
292
286
 
293
- :where([popover]) {
287
+ :where([popover]):not(.unstyle):not(:popover-open) {
294
288
  display: none;
289
+ }
295
290
 
296
- &:popover-open {
297
- display: flex;
298
- animation: mnfst-popover-in .15s ease-in both;
299
- }
291
+ :where([popover]):not(.unstyle):popover-open {
292
+ display: flex;
293
+ animation: mnfst-popover-in .15s ease-in both;
300
294
  }
301
295
 
302
296
  :where(progress) {
@@ -435,11 +429,8 @@
435
429
  width: 1rem;
436
430
  height: 1rem;
437
431
  background-color: color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 50%, var(--color-field-inverse, oklch(43.9% 0 0)));
438
- -webkit-mask-image: var(--icon-accordion, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 256 256'%3E%3Cpath fill='%23000' d='m184.49 136.49l-80 80a12 12 0 0 1-17-17L159 128L87.51 56.49a12 12 0 1 1 17-17l80 80a12 12 0 0 1-.02 17'/%3E%3C/svg%3E"));
439
432
  mask-image: var(--icon-accordion, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 256 256'%3E%3Cpath fill='%23000' d='m184.49 136.49l-80 80a12 12 0 0 1-17-17L159 128L87.51 56.49a12 12 0 1 1 17-17l80 80a12 12 0 0 1-.02 17'/%3E%3C/svg%3E"));
440
- -webkit-mask-repeat: no-repeat;
441
433
  mask-repeat: no-repeat;
442
- -webkit-mask-size: 100% 100%;
443
434
  mask-size: 100% 100%;
444
435
  transform: rotate(0);
445
436
  transition: 0.25s transform ease
@@ -666,11 +657,13 @@
666
657
  appearance: base-select;
667
658
 
668
659
  &::picker-icon {
669
- content: "⌄";
670
- height: calc(var(--spacing-field-height, 2.25rem) * 0.5);
671
- transform: scaleY(0.7);
672
- font-size: 20px;
673
- line-height: 0.4
660
+ content: "";
661
+ width: 1rem;
662
+ height: 1rem;
663
+ background-color: currentColor;
664
+ mask-repeat: no-repeat;
665
+ mask-size: 100% 100%;
666
+ mask-image: var(--icon-chevron-down, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9 6 6 6-6'/%3E%3C/svg%3E"))
674
667
  }
675
668
  }
676
669
  }
@@ -861,9 +854,9 @@
861
854
 
862
855
  /* On a filled segment (bar/slice center) — read against the fill */
863
856
  &.inverse {
864
- fill: black;
857
+ fill: var(--color-content-stark, oklch(20.5% 0 0));
865
858
  paint-order: stroke;
866
- stroke: rgba(255, 255, 255, 0.75);
859
+ stroke: color-mix(in oklch, var(--color-page, oklch(98.5% 0 0)) 75%, transparent);
867
860
  stroke-width: 1.5px
868
861
  }
869
862
  }
@@ -985,7 +978,6 @@
985
978
  flex-direction: column;
986
979
  width: 100%;
987
980
  height: 100%;
988
- box-shadow: var(--shadow);
989
981
  overflow: hidden;
990
982
 
991
983
  /* Chat log scroll container */
@@ -1134,6 +1126,8 @@
1134
1126
 
1135
1127
  @layer components {
1136
1128
 
1129
+ /* Deliberately unflattened: manifest.input.css supplies the field chrome via
1130
+ a lower-specificity rule that sorts later, so this must outrank it. */
1137
1131
  input[type=checkbox]:not([role=switch], .unstyle) {
1138
1132
  position: relative;
1139
1133
  min-width: calc(var(--spacing-field-height, 2.25rem) * 0.6);
@@ -1167,11 +1161,8 @@
1167
1161
  width: 60%;
1168
1162
  height: 60%;
1169
1163
  background-color: var(--color-field-inverse, oklch(43.9% 0 0));
1170
- -webkit-mask-image: var(--icon-check, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='currentColor' d='m0 11l2-2l5 5L18 3l2 2L7 18z'/%3E%3C/svg%3E"));
1171
1164
  mask-image: var(--icon-check, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='currentColor' d='m0 11l2-2l5 5L18 3l2 2L7 18z'/%3E%3C/svg%3E"));
1172
- -webkit-mask-repeat: no-repeat;
1173
1165
  mask-repeat: no-repeat;
1174
- -webkit-mask-size: 100% 100%;
1175
1166
  mask-size: 100% 100%;
1176
1167
  transform-origin: center;
1177
1168
  transition: var(--transition, all .05s ease-in-out);
@@ -1875,7 +1866,7 @@
1875
1866
  height: 1em;
1876
1867
  margin-inline-start: auto;
1877
1868
  background-color: var(--color-content-subtle, oklch(55.6% 0 0));
1878
- mask: var(--icon-chevron-down, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9 6 6 6-6'/%3E%3C/svg%3E")) center / contain no-repeat
1869
+ mask: var(--icon-chevron-down, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9 6 6 6-6'/%3E%3C/svg%3E")) center / contain no-repeat
1879
1870
  }
1880
1871
  }
1881
1872
 
@@ -2297,11 +2288,13 @@
2297
2288
  }
2298
2289
 
2299
2290
  &::before {
2300
- content: "⌄";
2301
- height: calc(var(--spacing-field-height, 2.25rem) * 0.5);
2302
- transform: scaleY(0.7);
2303
- font-size: 20px;
2304
- line-height: 0.4
2291
+ content: "";
2292
+ width: 1rem;
2293
+ height: 1rem;
2294
+ background-color: currentColor;
2295
+ mask-repeat: no-repeat;
2296
+ mask-size: 100% 100%;
2297
+ mask-image: var(--icon-chevron-down, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9 6 6 6-6'/%3E%3C/svg%3E"))
2305
2298
  }
2306
2299
  }
2307
2300
  }
@@ -2470,11 +2463,9 @@
2470
2463
  }
2471
2464
 
2472
2465
  /* Manifest Dialogs */
2466
+
2473
2467
  @layer base, components, utilities;
2474
2468
 
2475
- [popover]:not(.unstyle):not(:popover-open) {
2476
- display: none;
2477
- }
2478
2469
 
2479
2470
 
2480
2471
  @layer components {
@@ -2493,7 +2484,7 @@
2493
2484
  background-color: var(--color-popover-surface, oklch(98.5% 0 0));
2494
2485
  border: 0 none;
2495
2486
  border-radius: calc(var(--radius, 0.5rem) * 2);
2496
- box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
2487
+ box-shadow: var(--shadow-lg, 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1));
2497
2488
 
2498
2489
  &::backdrop {
2499
2490
  background-color: rgba(0, 0, 0, 0.2);
@@ -2709,19 +2700,15 @@
2709
2700
  }
2710
2701
 
2711
2702
  /* Active item — a hook, not a look (bind :aria-current="$route === '/x' ? 'page' : null') */
2712
- [dock] > a[aria-current="page"],
2713
- [dock] > button[aria-current="page"],
2714
- [dock] > .selected {
2703
+ :where([dock] > a[aria-current="page"], [dock] > button[aria-current="page"], [dock] > .selected) {
2715
2704
  color: var(--color-content-stark, oklch(14.5% 0 0))
2716
2705
  }
2717
2706
  }
2718
2707
 
2719
2708
  /* Manifest Dropdowns */
2709
+
2720
2710
  @layer base, components, utilities;
2721
2711
 
2722
- [popover]:not(.unstyle):not(:popover-open) {
2723
- display: none;
2724
- }
2725
2712
 
2726
2713
 
2727
2714
  @layer components {
@@ -2864,109 +2851,17 @@
2864
2851
  margin: 0 var(--spacing-popover-offset, 0.5rem)
2865
2852
  }
2866
2853
 
2867
- /* Center alignment */
2854
+ /* Center alignment (dropdown-only; tooltips have no .center) */
2868
2855
  :where(menu.center) {
2869
2856
  position-area: center
2870
2857
  }
2858
+ }
2871
2859
 
2872
- /* Top alignment */
2873
- :where(menu.top) {
2874
- position-area: top;
2875
- margin: var(--spacing-popover-offset, 0.5rem) 0
2876
- }
2877
-
2878
- /* Bottom alignment */
2879
- :where(menu.bottom) {
2880
- position-area: bottom;
2881
- margin: var(--spacing-popover-offset, 0.5rem) 0
2882
- }
2883
-
2884
- /* Start alignment */
2885
- :where(menu.start) {
2886
- position-area: center start;
2887
- margin: 0 var(--spacing-popover-offset, 0.5rem)
2888
- }
2889
-
2890
- /* End alignment */
2891
- :where(menu.end) {
2892
- position-area: center end;
2893
- margin: 0 var(--spacing-popover-offset, 0.5rem)
2894
- }
2895
-
2896
- /* Top start alignment */
2897
- :where(menu.top-start) {
2898
- position-area: start span-end;
2899
- margin: var(--spacing-popover-offset, 0.5rem) 0
2900
- }
2901
-
2902
- /* Top end alignment */
2903
- :where(menu.top-end) {
2904
- position-area: start span-start;
2905
- margin: var(--spacing-popover-offset, 0.5rem) 0
2906
- }
2907
-
2908
- /* Bottom start alignment */
2909
- :where(menu.bottom-start) {
2910
- position-area: end span-end;
2911
- margin: var(--spacing-popover-offset, 0.5rem) 0
2912
- }
2913
-
2914
- /* Bottom end alignment */
2915
- :where(menu.bottom-end) {
2916
- position-area: end span-start;
2917
- margin: var(--spacing-popover-offset, 0.5rem) 0
2918
- }
2919
-
2920
- /* Start top alignment */
2921
- :where(menu.start-top) {
2922
- position-area: span-end start;
2923
- margin: 0 var(--spacing-popover-offset, 0.5rem)
2924
- }
2925
-
2926
- /* Start bottom alignment */
2927
- :where(menu.start-bottom) {
2928
- position-area: span-start start;
2929
- margin: 0 var(--spacing-popover-offset, 0.5rem)
2930
- }
2931
-
2932
-
2933
- /* End top alignment */
2934
- :where(menu.end-top) {
2935
- position-area: span-end end;
2936
- margin: 0 var(--spacing-popover-offset, 0.5rem)
2937
- }
2938
-
2939
- /* End bottom alignment */
2940
- :where(menu.end-bottom) {
2941
- position-area: span-start end;
2942
- margin: 0 var(--spacing-popover-offset, 0.5rem)
2943
- }
2944
-
2945
- /* Top start corner alignment */
2946
- :where(menu.top-start-corner, menu.start-top-corner) {
2947
- position-area: start start;
2948
- margin: var(--spacing-popover-offset, 0.5rem)
2949
- }
2950
-
2951
- /* Top end corner alignment */
2952
- :where(menu.top-end-corner, menu.end-top-corner) {
2953
- position-area: start end;
2954
- margin: var(--spacing-popover-offset, 0.5rem)
2955
- }
2860
+ /* Directional alignment lives in styles/snippets/manifest.alignment.css */
2956
2861
 
2957
- /* Bottom start corner alignment */
2958
- :where(menu.bottom-start-corner, menu.start-bottom-corner) {
2959
- position-area: end start;
2960
- margin: var(--spacing-popover-offset, 0.5rem)
2961
- }
2962
-
2963
- /* Bottom end corner alignment */
2964
- :where(menu.bottom-end-corner, menu.end-bottom-corner) {
2965
- position-area: end end;
2966
- margin: var(--spacing-popover-offset, 0.5rem)
2967
- }
2862
+ @layer utilities {
2968
2863
 
2969
- /* Touchscreen version */
2864
+ /* Touchscreen version — outranks the shared alignment table on specificity */
2970
2865
  @media (pointer: coarse) {
2971
2866
  menu[popover]:not(.unstyle) {
2972
2867
  position: fixed;
@@ -3064,7 +2959,7 @@
3064
2959
  /* ---- Size (resize handles) — injected overlay children, fully stylable ---- */
3065
2960
  /* The element keeps its own markup untouched, so its native :hover/:focus still
3066
2961
  fire. Handles are separate elements with pointer-events; the body of the
3067
- element stays interactive. */
2962
+ element stays interactive. Geometry: styles/snippets/manifest.handles.css. */
3068
2963
  :where([data-edit-sizable]) {
3069
2964
  position: relative;
3070
2965
 
@@ -3090,28 +2985,11 @@
3090
2985
  }
3091
2986
  }
3092
2987
 
3093
- .edit-handle-top, .edit-handle-bottom { left: 0; width: 100%; height: var(--h); cursor: ns-resize; &::before { width: 100%; } }
3094
- .edit-handle-left, .edit-handle-right, .edit-handle-start, .edit-handle-end { top: 0; height: 100%; width: var(--h); cursor: ew-resize; &::before { height: 100%; } }
3095
- .edit-handle-top { top: calc(var(--h) * -0.5); }
3096
- .edit-handle-bottom { bottom: calc(var(--h) * -0.5); }
3097
- .edit-handle-left { left: calc(var(--h) * -0.5); }
3098
- .edit-handle-right { right: calc(var(--h) * -0.5); }
3099
- /* Logical edges — inset-inline-* auto-flips for RTL */
3100
- .edit-handle-start { inset-inline-start: calc(var(--h) * -0.5); }
3101
- .edit-handle-end { inset-inline-end: calc(var(--h) * -0.5); }
3102
-
3103
- .edit-handle-top-left, .edit-handle-top-right, .edit-handle-bottom-left, .edit-handle-bottom-right,
3104
- .edit-handle-top-start, .edit-handle-top-end, .edit-handle-bottom-start, .edit-handle-bottom-end {
3105
- width: var(--h); height: var(--h);
3106
- }
3107
- .edit-handle-top-left { top: calc(var(--h) * -0.5); left: calc(var(--h) * -0.5); cursor: nwse-resize; }
3108
- .edit-handle-top-right { top: calc(var(--h) * -0.5); right: calc(var(--h) * -0.5); cursor: nesw-resize; }
3109
- .edit-handle-bottom-left { bottom: calc(var(--h) * -0.5); left: calc(var(--h) * -0.5); cursor: nesw-resize; }
3110
- .edit-handle-bottom-right { bottom: calc(var(--h) * -0.5); right: calc(var(--h) * -0.5); cursor: nwse-resize; }
3111
- .edit-handle-top-start { top: calc(var(--h) * -0.5); inset-inline-start: calc(var(--h) * -0.5); cursor: nwse-resize; }
3112
- .edit-handle-top-end { top: calc(var(--h) * -0.5); inset-inline-end: calc(var(--h) * -0.5); cursor: nesw-resize; }
3113
- .edit-handle-bottom-start { bottom: calc(var(--h) * -0.5); inset-inline-start: calc(var(--h) * -0.5); cursor: nesw-resize; }
3114
- .edit-handle-bottom-end { bottom: calc(var(--h) * -0.5); inset-inline-end: calc(var(--h) * -0.5); cursor: nwse-resize; }
2988
+ /* Corner cursors (geometry is shared; resize handles use nw/ne/sw/se) */
2989
+ .edit-handle-top-left, .edit-handle-bottom-right,
2990
+ .edit-handle-top-start, .edit-handle-bottom-end { cursor: nwse-resize; }
2991
+ .edit-handle-top-right, .edit-handle-bottom-left,
2992
+ .edit-handle-top-end, .edit-handle-bottom-start { cursor: nesw-resize; }
3115
2993
  }
3116
2994
 
3117
2995
  /* Collapsed state (size dropped below --edit-size-collapse-*) — authors restyle freely */
@@ -3157,7 +3035,7 @@
3157
3035
  box-shadow: 0 8px 30px rgb(0 0 0 / 0.2);
3158
3036
  }
3159
3037
  :where(.edit-classes)[hidden] { display: none; }
3160
- :where(.edit-classes) input { width: 100%; font-family: ui-monospace, Menlo, monospace; font-size: 0.75rem; }
3038
+ :where(.edit-classes) input { width: 100%; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 0.75rem; }
3161
3039
  :where(.edit-classes) .muted { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-content-subtle); }
3162
3040
 
3163
3041
  :where(.edit-toolbar) button[disabled] { opacity: 0.35; pointer-events: none; }
@@ -3251,7 +3129,7 @@
3251
3129
  &>:is(.selected, [aria-selected=true], [aria-current]) {
3252
3130
  color: var(--color-field-inverse, oklch(20.5% 0 0));
3253
3131
  background-color: var(--color-field-surface, oklch(87% 0 0));
3254
- box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)
3132
+ box-shadow: var(--shadow-sm, 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1))
3255
3133
  }
3256
3134
 
3257
3135
  /* Background slider for selected tab) */
@@ -3276,7 +3154,7 @@
3276
3154
  height: anchor-size(height);
3277
3155
  background-color: var(--color-page, oklch(98.5% 0 0));
3278
3156
  border-radius: max(calc(var(--radius, 0.5rem) - var(--spacing, 0.25rem) / 2), 0px);
3279
- box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
3157
+ box-shadow: var(--shadow-sm, 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1));
3280
3158
  transition: var(--tab-slide-transition, all 0.15s ease-in-out)
3281
3159
  }
3282
3160
 
@@ -3431,7 +3309,7 @@
3431
3309
  height: calc(var(--spacing-field-height, 2.5rem) / 2);
3432
3310
  padding: 0;
3433
3311
  border-radius: var(--spacing-field-height, 2.5rem);
3434
- box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
3312
+ box-shadow: var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1));
3435
3313
  opacity: 0;
3436
3314
  transition: var(--transition);
3437
3315
 
@@ -3703,9 +3581,7 @@
3703
3581
  /* Hide search input cancel button */
3704
3582
  :where(input[type=search]):not(.unstyle)::-webkit-search-cancel-button {
3705
3583
  appearance: none;
3706
- -webkit-appearance: none;
3707
- -moz-appearance: none;
3708
- appearance: none
3584
+ -webkit-appearance: none
3709
3585
  }
3710
3586
 
3711
3587
  /* Textarea-specific styles */
@@ -3722,6 +3598,8 @@
3722
3598
 
3723
3599
  @layer components {
3724
3600
 
3601
+ /* Deliberately unflattened: manifest.input.css supplies the field chrome via
3602
+ a lower-specificity rule that sorts later, so this must outrank it. */
3725
3603
  input[type=radio]:not(.unstyle) {
3726
3604
  position: relative;
3727
3605
  min-width: calc(var(--spacing-field-height, 2.25rem) * 0.625);
@@ -3763,7 +3641,7 @@
3763
3641
 
3764
3642
  @layer components {
3765
3643
 
3766
- input[type=range]:not(.unstyle) {
3644
+ :where(input[type=range]):not(.unstyle) {
3767
3645
  appearance: none;
3768
3646
  background-color: transparent;
3769
3647
  border-radius: var(--radius, 0.5rem);
@@ -3790,7 +3668,7 @@
3790
3668
  transform: translateY(-50%);
3791
3669
  background-color: color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 60%, var(--color-field-inverse, oklch(43.9% 0 0)));
3792
3670
  border-radius: 200px;
3793
- box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
3671
+ box-shadow: var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1));
3794
3672
  cursor: pointer;
3795
3673
  transition: var(--transition, all .05s ease-in-out)
3796
3674
  }
@@ -3815,7 +3693,7 @@
3815
3693
  }
3816
3694
  }
3817
3695
 
3818
- label:has(input[type=range]):not(.unstyle) {
3696
+ :where(label:has(input[type=range])):not(.unstyle) {
3819
3697
  cursor: default;
3820
3698
  }
3821
3699
  }
@@ -3829,16 +3707,17 @@
3829
3707
  :where([x-resize]) {
3830
3708
  position: relative;
3831
3709
 
3832
- /* Resize handle area */
3710
+ /* Resize handle area (geometry: styles/snippets/manifest.handles.css) */
3833
3711
  .resize-handle {
3834
3712
  position: absolute;
3835
3713
  display: block;
3836
- width: var(--spacing-resize-handle, 1rem);
3837
- height: var(--spacing-resize-handle, 1rem);
3714
+ width: var(--h);
3715
+ height: var(--h);
3838
3716
  z-index: 100;
3839
3717
  background: transparent;
3840
3718
  border: none;
3841
3719
  outline: none;
3720
+ --h: var(--spacing-resize-handle, 1rem);
3842
3721
 
3843
3722
  /* Visible handle */
3844
3723
  &::before {
@@ -3860,113 +3739,24 @@
3860
3739
  }
3861
3740
  }
3862
3741
 
3863
- /* Edge handles */
3864
- .resize-handle-top,
3865
- .resize-handle-bottom {
3866
- width: 100%;
3867
- left: 0;
3868
- cursor: ns-resize;
3869
-
3870
- &::before {
3871
- width: 100%;
3872
- }
3873
- }
3874
-
3875
- .resize-handle-left,
3876
- .resize-handle-right,
3877
- .resize-handle-start,
3878
- .resize-handle-end {
3879
- height: 100%;
3880
- top: 0;
3881
- cursor: ew-resize;
3882
-
3883
- &::before {
3884
- height: 100%;
3885
- }
3886
- }
3887
-
3888
- .resize-handle-top {
3889
- top: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3890
- }
3891
-
3892
- .resize-handle-bottom {
3893
- top: auto;
3894
- bottom: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3895
- }
3896
-
3897
- .resize-handle-left,
3898
- .resize-handle-start {
3899
- left: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3900
- }
3901
-
3902
- .resize-handle-right,
3903
- .resize-handle-end {
3904
- right: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3905
- }
3906
-
3907
- /* Corner handles */
3908
- .resize-handle-top-left {
3909
- width: var(--spacing-resize-handle, 1rem);
3910
- height: var(--spacing-resize-handle, 1rem);
3911
- top: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3912
- left: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3913
- cursor: nw-resize;
3914
- }
3915
-
3916
- .resize-handle-top-right {
3917
- width: var(--spacing-resize-handle, 1rem);
3918
- height: var(--spacing-resize-handle, 1rem);
3919
- top: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3920
- right: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3921
- cursor: ne-resize;
3922
- }
3923
-
3924
- .resize-handle-bottom-left {
3925
- width: var(--spacing-resize-handle, 1rem);
3926
- height: var(--spacing-resize-handle, 1rem);
3927
- bottom: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3928
- left: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3929
- cursor: sw-resize;
3930
- }
3931
-
3932
- .resize-handle-bottom-right {
3933
- width: var(--spacing-resize-handle, 1rem);
3934
- height: var(--spacing-resize-handle, 1rem);
3935
- bottom: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3936
- right: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3937
- cursor: se-resize;
3938
- }
3939
-
3940
- /* Logical direction handles */
3742
+ /* Corner cursors (geometry is shared; edit handles use nwse/nesw) */
3743
+ .resize-handle-top-left,
3941
3744
  .resize-handle-top-start {
3942
- width: var(--spacing-resize-handle, 1rem);
3943
- height: var(--spacing-resize-handle, 1rem);
3944
- top: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3945
- left: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3946
3745
  cursor: nw-resize;
3947
3746
  }
3948
3747
 
3748
+ .resize-handle-top-right,
3949
3749
  .resize-handle-top-end {
3950
- width: var(--spacing-resize-handle, 1rem);
3951
- height: var(--spacing-resize-handle, 1rem);
3952
- top: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3953
- right: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3954
3750
  cursor: ne-resize;
3955
3751
  }
3956
3752
 
3753
+ .resize-handle-bottom-left,
3957
3754
  .resize-handle-bottom-start {
3958
- width: var(--spacing-resize-handle, 1rem);
3959
- height: var(--spacing-resize-handle, 1rem);
3960
- bottom: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3961
- left: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3962
3755
  cursor: sw-resize;
3963
3756
  }
3964
3757
 
3758
+ .resize-handle-bottom-right,
3965
3759
  .resize-handle-bottom-end {
3966
- width: var(--spacing-resize-handle, 1rem);
3967
- height: var(--spacing-resize-handle, 1rem);
3968
- bottom: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3969
- right: calc(var(--spacing-resize-handle, 1rem) * -0.5);
3970
3760
  cursor: se-resize;
3971
3761
  }
3972
3762
 
@@ -3992,76 +3782,44 @@
3992
3782
  display: none !important
3993
3783
  }
3994
3784
 
3995
- /* Focus states for accessibility */
3785
+ /* Focus states for accessibility — framework ring (manifest.theme.css) */
3996
3786
  .resize-handle:focus {
3997
- outline: 2px solid rgba(59, 130, 246, 0.5);
3998
- outline-offset: 2px
3999
- }
4000
-
4001
- /* High contrast mode support */
4002
- @media (prefers-contrast: high) {
4003
- :where(.resize-handle:hover .resize-handle-inner) {
4004
- background: rgba(0, 0, 0, 0.3)
4005
- }
4006
-
4007
- :where(.resize-handle:active .resize-handle-inner) {
4008
- background: rgba(0, 0, 0, 0.5)
4009
- }
3787
+ outline: none;
3788
+ box-shadow: 0 0 0 2px color-mix(in oklch, var(--color-content-stark) 30%, transparent)
4010
3789
  }
4011
3790
 
4012
3791
  /* Reduced motion support */
4013
3792
  @media (prefers-reduced-motion: reduce) {
4014
3793
 
4015
- :where(.resize-handle-inner,
4016
- .resizable-closing,
3794
+ :where(.resizable-closing,
4017
3795
  .resize-handle) {
4018
3796
  transition: none
4019
3797
  }
4020
3798
  }
4021
3799
  }
4022
3800
 
4023
- /* RTL overrides - more specific than :where([x-resize]) */
4024
- [dir=rtl] :where([x-resize]) .resize-handle-start {
4025
- left: auto;
4026
- right: calc(var(--spacing-resize-handle, 1rem) * -0.5);
4027
- }
4028
-
4029
- [dir=rtl] :where([x-resize]) .resize-handle-end {
4030
- right: auto;
4031
- left: calc(var(--spacing-resize-handle, 1rem) * -0.5);
4032
- }
4033
-
3801
+ /* RTL cursor flips — placement follows the logical insets in the shared geometry */
4034
3802
  [dir=rtl] :where([x-resize]) .resize-handle-top-start {
4035
- left: auto;
4036
- right: calc(var(--spacing-resize-handle, 1rem) * -0.5);
4037
3803
  cursor: ne-resize;
4038
3804
  }
4039
3805
 
4040
3806
  [dir=rtl] :where([x-resize]) .resize-handle-top-end {
4041
- right: auto;
4042
- left: calc(var(--spacing-resize-handle, 1rem) * -0.5);
4043
3807
  cursor: nw-resize;
4044
3808
  }
4045
3809
 
4046
3810
  [dir=rtl] :where([x-resize]) .resize-handle-bottom-start {
4047
- left: auto;
4048
- right: calc(var(--spacing-resize-handle, 1rem) * -0.5);
4049
3811
  cursor: se-resize;
4050
3812
  }
4051
3813
 
4052
3814
  [dir=rtl] :where([x-resize]) .resize-handle-bottom-end {
4053
- right: auto;
4054
- left: calc(var(--spacing-resize-handle, 1rem) * -0.5);
4055
3815
  cursor: sw-resize;
4056
3816
  }
4057
3817
  }
4058
3818
 
4059
3819
  /* Manifest Sidebars */
3820
+
4060
3821
  @layer base, components, utilities;
4061
3822
 
4062
- [popover]:not(.unstyle):not(:popover-open) {
4063
- display: none;
4064
- }
4065
3823
 
4066
3824
 
4067
3825
  @layer components {
@@ -4143,7 +3901,7 @@
4143
3901
 
4144
3902
  @layer components {
4145
3903
 
4146
- [x-carousel] {
3904
+ :where([x-carousel]) {
4147
3905
  position: relative;
4148
3906
  display: flex;
4149
3907
  flex-direction: column;
@@ -4151,16 +3909,16 @@
4151
3909
  overflow: hidden;
4152
3910
 
4153
3911
  /* Slides container */
4154
- .carousel-slides {
3912
+ :where(.carousel-slides) {
4155
3913
  display: flex;
4156
3914
  transition: transform 300ms ease-in-out;
4157
3915
  width: 100%;
4158
3916
  aspect-ratio: 16 / 9
4159
3917
  }
4160
3918
 
4161
- /* Previous & next buttons */
4162
- & button[\@click="prev()"],
4163
- & button[\@click="next()"] {
3919
+ /* Previous & next buttons. Arrow markup is author-written; the
3920
+ @click="prev()" selectors are deprecated aliases for the hooks. */
3921
+ & :where([data-carousel-prev], [data-carousel-next], button[\@click="prev()"], button[\@click="next()"]) {
4164
3922
  position: absolute;
4165
3923
  top: 50%;
4166
3924
  transform: translateY(-50%);
@@ -4171,17 +3929,17 @@
4171
3929
  }
4172
3930
  }
4173
3931
 
4174
- & button[\@click="prev()"] {
3932
+ & :where([data-carousel-prev], button[\@click="prev()"]) {
4175
3933
  left: calc(var(--spacing, 0.25rem) * 4)
4176
3934
  }
4177
3935
 
4178
- & button[\@click="next()"] {
3936
+ & :where([data-carousel-next], button[\@click="next()"]) {
4179
3937
  left: auto;
4180
3938
  right: calc(var(--spacing, 0.25rem) * 4)
4181
3939
  }
4182
3940
 
4183
- /* Dots container */
4184
- .carousel-dots {
3941
+ /* Dots container (author markup, driven by the plugin's `dots` getter) */
3942
+ :where(.carousel-dots) {
4185
3943
  position: absolute;
4186
3944
  bottom: calc(var(--spacing, 0.25rem) * 4);
4187
3945
  left: 50%;
@@ -4191,7 +3949,6 @@
4191
3949
  max-width: 100%;
4192
3950
  padding: 0 calc(var(--spacing, 0.25rem) * 4);
4193
3951
  overflow-x: auto;
4194
- -webkit-overflow-scrolling: touch;
4195
3952
  scrollbar-width: none;
4196
3953
 
4197
3954
  &::-webkit-scrollbar {
@@ -4199,7 +3956,7 @@
4199
3956
  }
4200
3957
 
4201
3958
  /* Dot button */
4202
- & span {
3959
+ & :where(span) {
4203
3960
  flex-shrink: 0;
4204
3961
  width: 0.625rem;
4205
3962
  height: 0.625rem;
@@ -4246,7 +4003,7 @@
4246
4003
  height: calc(var(--spacing-field-height, 2.25rem) * 0.65 - 0.125rem * 2);
4247
4004
  border-radius: 50%;
4248
4005
  background-color: color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 60%, var(--color-field-inverse, oklch(43.9% 0 0)));
4249
- box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
4006
+ box-shadow: var(--shadow-sm, 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1));
4250
4007
  transition: var(--transition, all .05s ease-in-out)
4251
4008
  }
4252
4009
 
@@ -4381,7 +4138,7 @@
4381
4138
  background-color: var(--color-popover-surface, oklch(98.5% 0 0));
4382
4139
  border: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
4383
4140
  border-radius: calc(var(--radius, 0.5rem) * 2);
4384
- box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
4141
+ box-shadow: var(--shadow-lg, 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1));
4385
4142
  overflow: hidden;
4386
4143
  opacity: 0;
4387
4144
  transform: translateY(1rem);
@@ -4455,11 +4212,9 @@
4455
4212
  }
4456
4213
 
4457
4214
  /* Manifest Tooltips */
4215
+
4458
4216
  @layer base, components, utilities;
4459
4217
 
4460
- [popover]:not(.unstyle):not(:popover-open) {
4461
- display: none;
4462
- }
4463
4218
 
4464
4219
 
4465
4220
  @layer utilities {
@@ -4474,7 +4229,7 @@
4474
4229
  background-color: var(--color-content-stark, oklch(43.9% 0 0));
4475
4230
  border: 0 none;
4476
4231
  border-radius: var(--radius, 0.5rem);
4477
- box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
4232
+ box-shadow: var(--shadow-sm, 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1));
4478
4233
 
4479
4234
  /* Leading icon */
4480
4235
  & [x-icon]:first-child {
@@ -4520,103 +4275,10 @@
4520
4275
  }
4521
4276
  }
4522
4277
 
4523
- /* Top alignment */
4524
- :where(.tooltip.top) {
4525
- position-area: top;
4526
- margin: var(--spacing-popover-offset, 0.5rem) 0
4527
- }
4528
-
4529
- /* Bottom alignment */
4530
- :where(.tooltip.bottom) {
4531
- position-area: bottom;
4532
- margin: var(--spacing-popover-offset, 0.5rem) 0
4533
- }
4534
-
4535
- /* Start alignment */
4536
- :where(.tooltip.start) {
4537
- position-area: center start;
4538
- margin: 0 var(--spacing-popover-offset, 0.5rem)
4539
- }
4540
-
4541
- /* End alignment */
4542
- :where(.tooltip.end) {
4543
- position-area: center end;
4544
- margin: 0 var(--spacing-popover-offset, 0.5rem)
4545
- }
4546
-
4547
- /* Top start alignment */
4548
- :where(.tooltip.top-start) {
4549
- position-area: start span-end;
4550
- margin: var(--spacing-popover-offset, 0.5rem) 0
4551
- }
4552
-
4553
- /* Top end alignment */
4554
- :where(.tooltip.top-end) {
4555
- position-area: start span-start;
4556
- margin: var(--spacing-popover-offset, 0.5rem) 0
4557
- }
4558
-
4559
- /* Bottom start alignment */
4560
- :where(.tooltip.bottom-start) {
4561
- position-area: end span-end;
4562
- margin: var(--spacing-popover-offset, 0.5rem) 0
4563
- }
4564
-
4565
- /* Bottom end alignment */
4566
- :where(.tooltip.bottom-end) {
4567
- position-area: end span-start;
4568
- margin: var(--spacing-popover-offset, 0.5rem) 0
4569
- }
4570
-
4571
- /* Start top alignment */
4572
- :where(.tooltip.start-top) {
4573
- position-area: span-end start;
4574
- margin: 0 var(--spacing-popover-offset, 0.5rem)
4575
- }
4576
-
4577
- /* Start bottom alignment */
4578
- :where(.tooltip.start-bottom) {
4579
- position-area: span-start start;
4580
- margin: 0 var(--spacing-popover-offset, 0.5rem)
4581
- }
4582
-
4583
- /* End top alignment */
4584
- :where(.tooltip.end-top) {
4585
- position-area: span-end end;
4586
- margin: 0 var(--spacing-popover-offset, 0.5rem)
4587
- }
4588
-
4589
- /* End bottom alignment */
4590
- :where(.tooltip.end-bottom) {
4591
- position-area: span-start end;
4592
- margin: 0 var(--spacing-popover-offset, 0.5rem)
4593
- }
4594
-
4595
- /* Top start corner alignment */
4596
- :where(.tooltip.top-start-corner, .tooltip.start-top-corner) {
4597
- position-area: start start;
4598
- margin: var(--spacing-popover-offset, 0.5rem)
4599
- }
4600
-
4601
- /* Top end corner alignment */
4602
- :where(.tooltip.top-end-corner, .tooltip.end-top-corner) {
4603
- position-area: start end;
4604
- margin: var(--spacing-popover-offset, 0.5rem)
4605
- }
4606
-
4607
- /* Bottom start corner alignment */
4608
- :where(.tooltip.bottom-start-corner, .tooltip.start-bottom-corner) {
4609
- position-area: end start;
4610
- margin: var(--spacing-popover-offset, 0.5rem)
4611
- }
4612
-
4613
- /* Bottom end corner alignment */
4614
- :where(.tooltip.bottom-end-corner, .tooltip.end-bottom-corner) {
4615
- position-area: end end;
4616
- margin: var(--spacing-popover-offset, 0.5rem)
4617
- }
4618
4278
  }
4619
4279
 
4280
+ /* Directional alignment lives in styles/snippets/manifest.alignment.css */
4281
+
4620
4282
  /* Manifest Typography */
4621
4283
 
4622
4284
  @layer base, components, utilities;
@@ -4876,7 +4538,6 @@
4876
4538
  /* Labels */
4877
4539
  :where(label):not(.unstyle),
4878
4540
  .label {
4879
- width: -moz-fit-content;
4880
4541
  width: fit-content;
4881
4542
  user-select: none
4882
4543
  }
@@ -5004,7 +4665,6 @@
5004
4665
  tab-size: 4;
5005
4666
  white-space: pre;
5006
4667
  white-space-collapse: preserve;
5007
- overflow: hidden;
5008
4668
 
5009
4669
  &>code {
5010
4670
  flex-grow: 1;
@@ -5032,6 +4692,229 @@
5032
4692
  }
5033
4693
  }
5034
4694
 
4695
+ /* Anchored popover alignment — single source shared by dropdowns and tooltips.
4696
+ The build appends this to standalone copies and adds it once to the bundle.
4697
+ Zero specificity throughout, so the coarse-pointer sheet and author rules
4698
+ still win. Dropdown-only variants (.center) stay in manifest.dropdown.css. */
4699
+
4700
+ @layer base, components, utilities;
4701
+
4702
+ @layer utilities {
4703
+
4704
+ /* Top alignment */
4705
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).top) {
4706
+ position-area: top;
4707
+ margin: var(--spacing-popover-offset, 0.5rem) 0
4708
+ }
4709
+
4710
+ /* Bottom alignment */
4711
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).bottom) {
4712
+ position-area: bottom;
4713
+ margin: var(--spacing-popover-offset, 0.5rem) 0
4714
+ }
4715
+
4716
+ /* Start alignment */
4717
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).start) {
4718
+ position-area: center start;
4719
+ margin: 0 var(--spacing-popover-offset, 0.5rem)
4720
+ }
4721
+
4722
+ /* End alignment */
4723
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).end) {
4724
+ position-area: center end;
4725
+ margin: 0 var(--spacing-popover-offset, 0.5rem)
4726
+ }
4727
+
4728
+ /* Top start alignment */
4729
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).top-start) {
4730
+ position-area: start span-end;
4731
+ margin: var(--spacing-popover-offset, 0.5rem) 0
4732
+ }
4733
+
4734
+ /* Top end alignment */
4735
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).top-end) {
4736
+ position-area: start span-start;
4737
+ margin: var(--spacing-popover-offset, 0.5rem) 0
4738
+ }
4739
+
4740
+ /* Bottom start alignment */
4741
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).bottom-start) {
4742
+ position-area: end span-end;
4743
+ margin: var(--spacing-popover-offset, 0.5rem) 0
4744
+ }
4745
+
4746
+ /* Bottom end alignment */
4747
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).bottom-end) {
4748
+ position-area: end span-start;
4749
+ margin: var(--spacing-popover-offset, 0.5rem) 0
4750
+ }
4751
+
4752
+ /* Start top alignment */
4753
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).start-top) {
4754
+ position-area: span-end start;
4755
+ margin: 0 var(--spacing-popover-offset, 0.5rem)
4756
+ }
4757
+
4758
+ /* Start bottom alignment */
4759
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).start-bottom) {
4760
+ position-area: span-start start;
4761
+ margin: 0 var(--spacing-popover-offset, 0.5rem)
4762
+ }
4763
+
4764
+ /* End top alignment */
4765
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).end-top) {
4766
+ position-area: span-end end;
4767
+ margin: 0 var(--spacing-popover-offset, 0.5rem)
4768
+ }
4769
+
4770
+ /* End bottom alignment */
4771
+ :where(:is(menu[popover], .dropdown-menu, .tooltip).end-bottom) {
4772
+ position-area: span-start end;
4773
+ margin: 0 var(--spacing-popover-offset, 0.5rem)
4774
+ }
4775
+
4776
+ /* Top start corner alignment */
4777
+ :where(:is(menu[popover], .dropdown-menu, .tooltip):is(.top-start-corner, .start-top-corner)) {
4778
+ position-area: start start;
4779
+ margin: var(--spacing-popover-offset, 0.5rem)
4780
+ }
4781
+
4782
+ /* Top end corner alignment */
4783
+ :where(:is(menu[popover], .dropdown-menu, .tooltip):is(.top-end-corner, .end-top-corner)) {
4784
+ position-area: start end;
4785
+ margin: var(--spacing-popover-offset, 0.5rem)
4786
+ }
4787
+
4788
+ /* Bottom start corner alignment */
4789
+ :where(:is(menu[popover], .dropdown-menu, .tooltip):is(.bottom-start-corner, .start-bottom-corner)) {
4790
+ position-area: end start;
4791
+ margin: var(--spacing-popover-offset, 0.5rem)
4792
+ }
4793
+
4794
+ /* Bottom end corner alignment */
4795
+ :where(:is(menu[popover], .dropdown-menu, .tooltip):is(.bottom-end-corner, .end-bottom-corner)) {
4796
+ position-area: end end;
4797
+ margin: var(--spacing-popover-offset, 0.5rem)
4798
+ }
4799
+ }
4800
+
4801
+ /* Drag-handle geometry — single source for x-resize and x-edit handles.
4802
+ The build appends this to standalone copies and adds it once to the bundle.
4803
+ Hosts set --h (handle thickness) and keep their own chrome: hairline colour,
4804
+ transition, and corner cursors (resize uses nw/ne/sw/se, edit nwse/nesw). */
4805
+
4806
+ @layer base, components, utilities;
4807
+
4808
+ @layer utilities {
4809
+
4810
+ /* Horizontal edges */
4811
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-top, .resize-handle-bottom, .edit-handle-top, .edit-handle-bottom) {
4812
+ left: 0;
4813
+ width: 100%;
4814
+ height: var(--h);
4815
+ cursor: ns-resize;
4816
+
4817
+ &::before {
4818
+ width: 100%
4819
+ }
4820
+ }
4821
+
4822
+ /* Vertical edges */
4823
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-left, .resize-handle-right, .resize-handle-start, .resize-handle-end, .edit-handle-left, .edit-handle-right, .edit-handle-start, .edit-handle-end) {
4824
+ top: 0;
4825
+ width: var(--h);
4826
+ height: 100%;
4827
+ cursor: ew-resize;
4828
+
4829
+ &::before {
4830
+ height: 100%
4831
+ }
4832
+ }
4833
+
4834
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-top, .edit-handle-top) {
4835
+ top: calc(var(--h) * -0.5)
4836
+ }
4837
+
4838
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-bottom, .edit-handle-bottom) {
4839
+ bottom: calc(var(--h) * -0.5)
4840
+ }
4841
+
4842
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-left, .edit-handle-left) {
4843
+ left: calc(var(--h) * -0.5)
4844
+ }
4845
+
4846
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-right, .edit-handle-right) {
4847
+ right: calc(var(--h) * -0.5)
4848
+ }
4849
+
4850
+ /* Logical edges — inset-inline-* auto-flips for RTL */
4851
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-start, .edit-handle-start) {
4852
+ inset-inline-start: calc(var(--h) * -0.5)
4853
+ }
4854
+
4855
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-end, .edit-handle-end) {
4856
+ inset-inline-end: calc(var(--h) * -0.5)
4857
+ }
4858
+
4859
+ /* Corners — square and inset; cursors stay with each host */
4860
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-top-left, .edit-handle-top-left) {
4861
+ width: var(--h);
4862
+ height: var(--h);
4863
+ top: calc(var(--h) * -0.5);
4864
+ left: calc(var(--h) * -0.5)
4865
+ }
4866
+
4867
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-top-right, .edit-handle-top-right) {
4868
+ width: var(--h);
4869
+ height: var(--h);
4870
+ top: calc(var(--h) * -0.5);
4871
+ right: calc(var(--h) * -0.5)
4872
+ }
4873
+
4874
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-bottom-left, .edit-handle-bottom-left) {
4875
+ width: var(--h);
4876
+ height: var(--h);
4877
+ bottom: calc(var(--h) * -0.5);
4878
+ left: calc(var(--h) * -0.5)
4879
+ }
4880
+
4881
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-bottom-right, .edit-handle-bottom-right) {
4882
+ width: var(--h);
4883
+ height: var(--h);
4884
+ bottom: calc(var(--h) * -0.5);
4885
+ right: calc(var(--h) * -0.5)
4886
+ }
4887
+
4888
+ /* Logical corners — inset-inline-* auto-flips for RTL */
4889
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-top-start, .edit-handle-top-start) {
4890
+ width: var(--h);
4891
+ height: var(--h);
4892
+ top: calc(var(--h) * -0.5);
4893
+ inset-inline-start: calc(var(--h) * -0.5)
4894
+ }
4895
+
4896
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-top-end, .edit-handle-top-end) {
4897
+ width: var(--h);
4898
+ height: var(--h);
4899
+ top: calc(var(--h) * -0.5);
4900
+ inset-inline-end: calc(var(--h) * -0.5)
4901
+ }
4902
+
4903
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-bottom-start, .edit-handle-bottom-start) {
4904
+ width: var(--h);
4905
+ height: var(--h);
4906
+ bottom: calc(var(--h) * -0.5);
4907
+ inset-inline-start: calc(var(--h) * -0.5)
4908
+ }
4909
+
4910
+ :where([x-resize], [data-edit-sizable]) :is(.resize-handle-bottom-end, .edit-handle-bottom-end) {
4911
+ width: var(--h);
4912
+ height: var(--h);
4913
+ bottom: calc(var(--h) * -0.5);
4914
+ inset-inline-end: calc(var(--h) * -0.5)
4915
+ }
4916
+ }
4917
+
5035
4918
  :root,
5036
4919
  ::selection {
5037
4920
 
@@ -5495,7 +5378,6 @@
5495
5378
 
5496
5379
  /* No spinners */
5497
5380
  .no-spinner {
5498
- -moz-appearance: textfield !important;
5499
5381
  appearance: textfield !important;
5500
5382
 
5501
5383
  &::-webkit-inner-spin-button,