ui-style-kit-css 2.2.0 → 2.4.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.
Files changed (122) hide show
  1. package/CHANGELOG.md +77 -1
  2. package/CONTRIBUTING.md +8 -1
  3. package/README.md +171 -53
  4. package/STYLE-MAP.md +28 -5
  5. package/dist/assets/bauhaus-barlow-OFL.txt +93 -0
  6. package/dist/assets/bauhaus-barlow-semibold.ttf +0 -0
  7. package/dist/assets/bauhaus-barlow.ttf +0 -0
  8. package/dist/assets/bauhaus-condensed-OFL.txt +93 -0
  9. package/dist/assets/bauhaus-condensed-bold.ttf +0 -0
  10. package/dist/assets/bauhaus-condensed-extrabold.ttf +0 -0
  11. package/dist/assets/bento-manrope-OFL.txt +93 -0
  12. package/dist/assets/bento-manrope.ttf +0 -0
  13. package/dist/assets/clay-grain.png +0 -0
  14. package/dist/assets/clay-rounded-OFL.txt +93 -0
  15. package/dist/assets/clay-rounded.ttf +0 -0
  16. package/dist/assets/neo-noir-corner-dark.png +0 -0
  17. package/dist/assets/neo-noir-corner-light.png +0 -0
  18. package/dist/assets/neo-noir-texture-dark.png +0 -0
  19. package/dist/assets/neo-noir-texture-light.png +0 -0
  20. package/dist/assets/organic-display-OFL.txt +93 -0
  21. package/dist/assets/organic-display.ttf +0 -0
  22. package/dist/assets/organic-icons-LICENSE.txt +21 -0
  23. package/dist/assets/organic-sans-OFL.txt +93 -0
  24. package/dist/assets/organic-sans.ttf +0 -0
  25. package/dist/ui-style-kit.css +55604 -6525
  26. package/dist/ui-style-kit.min.css +2 -2
  27. package/dist/ui-style-kit.visual.css +55443 -6942
  28. package/dist/ui-style-kit.visual.min.css +2 -2
  29. package/dist/ui-style-kit.with-bridge.css +55646 -6551
  30. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  31. package/dist/visual/art-deco.css +7318 -0
  32. package/dist/visual/bauhaus.css +2 -2961
  33. package/dist/visual/bento.css +2 -2980
  34. package/dist/visual/brutalism.css +2679 -352
  35. package/dist/visual/clay.css +5 -0
  36. package/dist/visual/cyberpunk.css +4482 -781
  37. package/dist/visual/data-terminal.css +6182 -0
  38. package/dist/visual/editorial-luxe.css +6450 -0
  39. package/dist/visual/industrial-utility.css +7259 -0
  40. package/dist/visual/maximalist.css +4080 -1025
  41. package/dist/visual/minimal-saas.css +3305 -888
  42. package/dist/visual/neo-noir.css +5 -0
  43. package/dist/visual/neumorphism.css +3582 -975
  44. package/dist/visual/organic-modern.css +5 -0
  45. package/dist/visual/paper-editorial.css +7074 -0
  46. package/dist/visual/retro-glass.css +4426 -760
  47. package/dist/visual/retrofuturism.css +3676 -875
  48. package/dist/visual/tactile.css +4568 -1036
  49. package/dist/visual/technical-blueprint.css +6713 -0
  50. package/dist/visual/y2k.css +3672 -753
  51. package/docs/ART-DECO.md +80 -0
  52. package/docs/BAUHAUS.md +152 -0
  53. package/docs/BENTO.md +121 -0
  54. package/docs/CLAY.md +127 -0
  55. package/docs/DEMO-SHOWCASE.md +65 -0
  56. package/docs/ECOSYSTEM.md +9 -5
  57. package/docs/EDITORIAL-LUX.md +75 -0
  58. package/docs/INDUSTRIAL-UTILITY.md +131 -0
  59. package/docs/NATIVE-ELEMENTS.md +23 -17
  60. package/docs/NEO-NOIR.md +94 -0
  61. package/docs/ORGANIC-MODERN.md +91 -0
  62. package/docs/PAPER-EDITORIAL.md +63 -0
  63. package/docs/PUBLISHING.md +36 -11
  64. package/docs/RELEASE-2.4.0.md +88 -0
  65. package/docs/RETRO-GLASS.md +105 -0
  66. package/docs/STYLE-GUIDE.md +68 -13
  67. package/docs/TACTILE.md +38 -0
  68. package/docs/TECHNICAL-BLUEPRINT.md +60 -0
  69. package/docs/TOKENS.md +90 -4
  70. package/docs/superpowers/plans/2026-08-29-preset-identity-system-refinement.md +649 -0
  71. package/docs/superpowers/plans/2026-09-04-library-wide-theme-fallback-and-fidelity.md +331 -0
  72. package/docs/superpowers/specs/2026-08-29-preset-identity-system-refinement-design.md +212 -0
  73. package/docs/superpowers/specs/2026-09-04-library-wide-theme-fallback-and-fidelity-design.md +113 -0
  74. package/manifest.json +769 -20
  75. package/package.json +79 -14
  76. package/styles/art-deco.css +2068 -0
  77. package/styles/assets/bauhaus-barlow-OFL.txt +93 -0
  78. package/styles/assets/bauhaus-barlow-semibold.ttf +0 -0
  79. package/styles/assets/bauhaus-barlow.ttf +0 -0
  80. package/styles/assets/bauhaus-condensed-OFL.txt +93 -0
  81. package/styles/assets/bauhaus-condensed-bold.ttf +0 -0
  82. package/styles/assets/bauhaus-condensed-extrabold.ttf +0 -0
  83. package/styles/assets/bento-manrope-OFL.txt +93 -0
  84. package/styles/assets/bento-manrope.ttf +0 -0
  85. package/styles/assets/clay-grain.png +0 -0
  86. package/styles/assets/clay-rounded-OFL.txt +93 -0
  87. package/styles/assets/clay-rounded.ttf +0 -0
  88. package/styles/assets/neo-noir-corner-dark.png +0 -0
  89. package/styles/assets/neo-noir-corner-light.png +0 -0
  90. package/styles/assets/neo-noir-texture-dark.png +0 -0
  91. package/styles/assets/neo-noir-texture-light.png +0 -0
  92. package/styles/assets/organic-display-OFL.txt +93 -0
  93. package/styles/assets/organic-display.ttf +0 -0
  94. package/styles/assets/organic-icons-LICENSE.txt +21 -0
  95. package/styles/assets/organic-sans-OFL.txt +93 -0
  96. package/styles/assets/organic-sans.ttf +0 -0
  97. package/styles/bauhaus.css +1092 -87
  98. package/styles/bento.css +1413 -86
  99. package/styles/brutalism.css +493 -10
  100. package/styles/clay.css +1927 -0
  101. package/styles/compat-layout.css +1 -2
  102. package/styles/components.css +698 -33
  103. package/styles/content-overflow.css +434 -9
  104. package/styles/cyberpunk.css +2082 -46
  105. package/styles/data-terminal.css +1795 -0
  106. package/styles/editorial-luxe.css +1251 -0
  107. package/styles/industrial-utility.css +2449 -0
  108. package/styles/interactive-surface-bridge.css +40 -24
  109. package/styles/interactive-surface-theme.css +31 -13
  110. package/styles/maximalist.css +1410 -94
  111. package/styles/minimal-saas.css +675 -73
  112. package/styles/native-elements.css +396 -168
  113. package/styles/neo-noir.css +1332 -0
  114. package/styles/neumorphism.css +1155 -52
  115. package/styles/organic-modern.css +1353 -0
  116. package/styles/paper-editorial.css +1724 -0
  117. package/styles/retro-glass.css +870 -42
  118. package/styles/retrofuturism.css +1173 -55
  119. package/styles/tactile.css +2018 -84
  120. package/styles/technical-blueprint.css +1337 -0
  121. package/styles/theme-colors.css +796 -5
  122. package/styles/y2k.css +1182 -40
@@ -1,7 +1,7 @@
1
1
  /* =========================================================
2
2
  Glassmorphism + Retrofuturism Hybrid Theme System
3
3
  Includes:
4
- - 10 color schemes
4
+ - 20 color schemes
5
5
  - light / dark / contrast modes
6
6
  - themed UI components and utilities
7
7
 
@@ -37,16 +37,39 @@
37
37
  --rg-transition-base: 220ms ease;
38
38
  --rg-transition-slow: 360ms ease;
39
39
 
40
- --rg-font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
41
- --rg-font-display: Orbitron, Rajdhani, Eurostile, "Bank Gothic", var(--rg-font-sans);
40
+ --rg-font-sans: "DejaVu Sans", Arial, sans-serif;
41
+ --rg-font-display: var(--rg-font-sans);
42
42
  --rg-font-body: var(--rg-font-sans);
43
43
  --rg-font-heading: var(--rg-font-display);
44
44
  --rg-font-control: var(--rg-font-display);
45
- --rg-font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
45
+ --rg-font-mono: "DejaVu Sans Mono", Consolas, monospace;
46
46
  }
47
47
 
48
48
  [data-ui="retro-glass"][data-mode="light"] {
49
49
  color-scheme: light;
50
+ --rg-fallback-bg-rgb: 216 222 229;
51
+ --rg-fallback-surface-rgb: 246 249 252;
52
+ --rg-fallback-surface-strong-rgb: 255 255 255;
53
+ --rg-fallback-surface-soft-rgb: 223 229 235;
54
+ --rg-fallback-text-rgb: 28 39 49;
55
+ --rg-fallback-text-muted-rgb: 68 81 94;
56
+ --rg-fallback-border-rgb: 110 120 130;
57
+ --rg-fallback-primary-rgb: 11 99 216;
58
+ --rg-fallback-primary-hover-rgb: 8 85 190;
59
+ --rg-fallback-primary-text-rgb: 255 255 255;
60
+ --rg-fallback-secondary-rgb: 223 229 235;
61
+ --rg-fallback-secondary-hover-rgb: 207 216 224;
62
+ --rg-fallback-secondary-text-rgb: 28 39 49;
63
+ --rg-fallback-accent-rgb: 216 137 0;
64
+ --rg-fallback-accent-text-rgb: 0 0 0;
65
+ --rg-fallback-success-rgb: 76 147 0;
66
+ --rg-fallback-success-text-rgb: 0 0 0;
67
+ --rg-fallback-warning-rgb: 216 137 0;
68
+ --rg-fallback-warning-text-rgb: 0 0 0;
69
+ --rg-fallback-danger-rgb: 216 61 50;
70
+ --rg-fallback-danger-text-rgb: 0 0 0;
71
+ --rg-fallback-link-rgb: 8 75 158;
72
+ --rg-fallback-focus-rgb: 20 120 233;
50
73
  --rg-panel-alpha: 0.92;
51
74
  --rg-panel-strong-alpha: 0.98;
52
75
  --rg-panel-soft-alpha: 0.74;
@@ -54,10 +77,41 @@
54
77
  --rg-glow-alpha: 0.24;
55
78
  --rg-shadow-alpha: 0.18;
56
79
  --rg-grid-alpha: 0.075;
80
+ --rg-brush-line: rgb(var(--rg-text-rgb) / .035);
81
+ --rg-glass-highlight: rgb(255 255 255 / .88);
82
+ --rg-glass-midlight: rgb(255 255 255 / .36);
83
+ --rg-material-shadow: rgb(var(--rg-text-rgb) / .2);
84
+ --rg-control-text-shadow: 0 1px 0 rgb(255 255 255 / .92);
85
+ --rg-dock-top: rgb(var(--rg-text-rgb) / .88);
86
+ --rg-dock-bottom: rgb(var(--rg-text-rgb) / .98);
87
+ --rg-dock-text: rgb(248 250 252);
57
88
  }
58
89
 
59
90
  [data-ui="retro-glass"][data-mode="dark"] {
60
91
  color-scheme: dark;
92
+ --rg-fallback-bg-rgb: 6 16 23;
93
+ --rg-fallback-surface-rgb: 8 23 31;
94
+ --rg-fallback-surface-strong-rgb: 18 38 48;
95
+ --rg-fallback-surface-soft-rgb: 39 52 60;
96
+ --rg-fallback-text-rgb: 240 244 246;
97
+ --rg-fallback-text-muted-rgb: 192 203 209;
98
+ --rg-fallback-border-rgb: 110 126 135;
99
+ --rg-fallback-primary-rgb: 22 119 232;
100
+ --rg-fallback-primary-hover-rgb: 39 136 243;
101
+ --rg-fallback-primary-text-rgb: 0 0 0;
102
+ --rg-fallback-secondary-rgb: 39 52 60;
103
+ --rg-fallback-secondary-hover-rgb: 53 67 77;
104
+ --rg-fallback-secondary-text-rgb: 240 244 246;
105
+ --rg-fallback-accent-rgb: 255 173 0;
106
+ --rg-fallback-accent-text-rgb: 0 0 0;
107
+ --rg-fallback-success-rgb: 114 201 15;
108
+ --rg-fallback-success-text-rgb: 0 0 0;
109
+ --rg-fallback-warning-rgb: 255 173 0;
110
+ --rg-fallback-warning-text-rgb: 0 0 0;
111
+ --rg-fallback-danger-rgb: 239 69 57;
112
+ --rg-fallback-danger-text-rgb: 0 0 0;
113
+ --rg-fallback-link-rgb: 133 194 255;
114
+ --rg-fallback-focus-rgb: 59 156 255;
61
115
  --rg-panel-alpha: 0.82;
62
116
  --rg-panel-strong-alpha: 0.94;
63
117
  --rg-panel-soft-alpha: 0.58;
@@ -65,10 +119,41 @@
65
119
  --rg-glow-alpha: 0.42;
66
120
  --rg-shadow-alpha: 0.42;
67
121
  --rg-grid-alpha: 0.12;
122
+ --rg-brush-line: rgb(255 255 255 / .028);
123
+ --rg-glass-highlight: rgb(255 255 255 / .22);
124
+ --rg-glass-midlight: rgb(255 255 255 / .08);
125
+ --rg-material-shadow: rgb(0 0 0 / .62);
126
+ --rg-control-text-shadow: 0 -1px 0 rgb(0 0 0 / .86);
127
+ --rg-dock-top: rgb(var(--rg-bg-rgb) / .88);
128
+ --rg-dock-bottom: rgb(0 0 0 / .96);
129
+ --rg-dock-text: rgb(229 235 241);
68
130
  }
69
131
 
70
132
  [data-ui="retro-glass"][data-mode="contrast"] {
71
133
  color-scheme: dark;
134
+ --rg-fallback-bg-rgb: 0 0 0;
135
+ --rg-fallback-surface-rgb: 5 8 12;
136
+ --rg-fallback-surface-strong-rgb: 10 19 32;
137
+ --rg-fallback-surface-soft-rgb: 0 0 0;
138
+ --rg-fallback-text-rgb: 255 255 255;
139
+ --rg-fallback-text-muted-rgb: 242 247 255;
140
+ --rg-fallback-border-rgb: 255 255 255;
141
+ --rg-fallback-primary-rgb: 156 197 240;
142
+ --rg-fallback-primary-hover-rgb: 255 255 255;
143
+ --rg-fallback-primary-text-rgb: 0 0 0;
144
+ --rg-fallback-secondary-rgb: 0 230 255;
145
+ --rg-fallback-secondary-hover-rgb: 255 255 255;
146
+ --rg-fallback-secondary-text-rgb: 0 0 0;
147
+ --rg-fallback-accent-rgb: 230 240 255;
148
+ --rg-fallback-accent-text-rgb: 0 0 0;
149
+ --rg-fallback-success-rgb: 0 255 144;
150
+ --rg-fallback-success-text-rgb: 0 0 0;
151
+ --rg-fallback-warning-rgb: 255 212 0;
152
+ --rg-fallback-warning-text-rgb: 0 0 0;
153
+ --rg-fallback-danger-rgb: 255 92 92;
154
+ --rg-fallback-danger-text-rgb: 0 0 0;
155
+ --rg-fallback-link-rgb: 156 197 240;
156
+ --rg-fallback-focus-rgb: 255 255 255;
72
157
  --rg-panel-alpha: 1;
73
158
  --rg-panel-strong-alpha: 1;
74
159
  --rg-panel-soft-alpha: 0.92;
@@ -76,10 +161,18 @@
76
161
  --rg-glow-alpha: 0.68;
77
162
  --rg-shadow-alpha: 0.56;
78
163
  --rg-grid-alpha: 0.18;
164
+ --rg-brush-line: rgb(255 255 255 / .08);
165
+ --rg-glass-highlight: rgb(255 255 255 / .3);
166
+ --rg-glass-midlight: rgb(255 255 255 / .12);
167
+ --rg-material-shadow: rgb(0 0 0 / .82);
168
+ --rg-control-text-shadow: 0 -1px 0 #000;
169
+ --rg-dock-top: #111;
170
+ --rg-dock-bottom: #000;
171
+ --rg-dock-text: #fff;
79
172
  }
80
173
 
174
+ /** Preserves direct aliases for static extraction when a scheme is selected. */
81
175
  [data-ui="retro-glass"][data-theme][data-mode] {
82
- /* Shared scheme aliases preserve the existing prefixed token API. */
83
176
  --rg-bg-rgb: var(--usk-bg-rgb);
84
177
  --rg-surface-rgb: var(--usk-surface-rgb);
85
178
  --rg-surface-strong-rgb: var(--usk-surface-strong-rgb);
@@ -94,15 +187,43 @@
94
187
  --rg-secondary-hover-rgb: var(--usk-secondary-hover-rgb);
95
188
  --rg-secondary-text-rgb: var(--usk-secondary-text-rgb);
96
189
  --rg-accent-rgb: var(--usk-accent-rgb);
97
- --rg-success-rgb: var(--usk-success-rgb);
98
- --rg-warning-rgb: var(--usk-warning-rgb);
99
- --rg-danger-rgb: var(--usk-danger-rgb);
100
- --rg-link-rgb: var(--usk-link-rgb);
101
190
  --rg-accent-text-rgb: var(--usk-accent-text-rgb);
191
+ --rg-success-rgb: var(--usk-success-rgb);
102
192
  --rg-success-text-rgb: var(--usk-success-text-rgb);
193
+ --rg-warning-rgb: var(--usk-warning-rgb);
103
194
  --rg-warning-text-rgb: var(--usk-warning-text-rgb);
195
+ --rg-danger-rgb: var(--usk-danger-rgb);
104
196
  --rg-danger-text-rgb: var(--usk-danger-text-rgb);
197
+ --rg-link-rgb: var(--usk-link-rgb);
105
198
  --rg-focus-rgb: var(--usk-focus-rgb);
199
+ }
200
+
201
+ [data-ui="retro-glass"][data-mode] {
202
+ --usk-native-bg: var(--rg-bg);
203
+ /* Explicit schemes win; reference colors are used only when no scheme exists. */
204
+ --rg-bg-rgb: var(--usk-bg-rgb, var(--rg-fallback-bg-rgb));
205
+ --rg-surface-rgb: var(--usk-surface-rgb, var(--rg-fallback-surface-rgb));
206
+ --rg-surface-strong-rgb: var(--usk-surface-strong-rgb, var(--rg-fallback-surface-strong-rgb));
207
+ --rg-surface-soft-rgb: var(--usk-surface-soft-rgb, var(--rg-fallback-surface-soft-rgb));
208
+ --rg-text-rgb: var(--usk-text-rgb, var(--rg-fallback-text-rgb));
209
+ --rg-text-muted-rgb: var(--usk-text-muted-rgb, var(--rg-fallback-text-muted-rgb));
210
+ --rg-border-rgb: var(--usk-border-rgb, var(--rg-fallback-border-rgb));
211
+ --rg-primary-rgb: var(--usk-primary-rgb, var(--rg-fallback-primary-rgb));
212
+ --rg-primary-hover-rgb: var(--usk-primary-hover-rgb, var(--rg-fallback-primary-hover-rgb));
213
+ --rg-primary-text-rgb: var(--usk-primary-text-rgb, var(--rg-fallback-primary-text-rgb));
214
+ --rg-secondary-rgb: var(--usk-secondary-rgb, var(--rg-fallback-secondary-rgb));
215
+ --rg-secondary-hover-rgb: var(--usk-secondary-hover-rgb, var(--rg-fallback-secondary-hover-rgb));
216
+ --rg-secondary-text-rgb: var(--usk-secondary-text-rgb, var(--rg-fallback-secondary-text-rgb));
217
+ --rg-accent-rgb: var(--usk-accent-rgb, var(--rg-fallback-accent-rgb));
218
+ --rg-accent-text-rgb: var(--usk-accent-text-rgb, var(--rg-fallback-accent-text-rgb));
219
+ --rg-success-rgb: var(--usk-success-rgb, var(--rg-fallback-success-rgb));
220
+ --rg-success-text-rgb: var(--usk-success-text-rgb, var(--rg-fallback-success-text-rgb));
221
+ --rg-warning-rgb: var(--usk-warning-rgb, var(--rg-fallback-warning-rgb));
222
+ --rg-warning-text-rgb: var(--usk-warning-text-rgb, var(--rg-fallback-warning-text-rgb));
223
+ --rg-danger-rgb: var(--usk-danger-rgb, var(--rg-fallback-danger-rgb));
224
+ --rg-danger-text-rgb: var(--usk-danger-text-rgb, var(--rg-fallback-danger-text-rgb));
225
+ --rg-link-rgb: var(--usk-link-rgb, var(--rg-fallback-link-rgb));
226
+ --rg-focus-rgb: var(--usk-focus-rgb, var(--rg-fallback-focus-rgb));
106
227
  /* Native fallback selectors inherit visual identity through shared tokens. */
107
228
  --usk-native-surface: var(--rg-surface);
108
229
  --usk-native-surface-strong: var(--rg-surface-strong);
@@ -133,6 +254,61 @@
133
254
  --usk-native-border-width: 1px;
134
255
  --usk-native-field-gap: .5rem;
135
256
  --usk-native-panel-padding: var(--rg-space-5);
257
+ --usk-native-control-min-block-size: 3rem;
258
+ --usk-native-control-padding-block: .74rem;
259
+ --usk-native-control-padding-inline: .95rem;
260
+ --usk-native-subcontrol-padding-block: .58rem;
261
+ --usk-native-subcontrol-padding-inline: .72rem;
262
+ --usk-native-choice-size: 1.5rem;
263
+ --usk-native-choice-background: var(--rg-control-bg);
264
+ --usk-native-choice-border: 1px solid var(--rg-border);
265
+ --usk-native-checkbox-radius: .28rem;
266
+ --usk-native-radio-radius: 50%;
267
+ --usk-native-choice-shadow: inset 0 1px rgb(255 255 255 / .55);
268
+ --usk-native-choice-checked-background: var(--rg-primary);
269
+ --usk-native-choice-mark-color: var(--rg-on-primary);
270
+ --usk-native-track: var(--rg-glass-inset);
271
+ --usk-native-track-fill: linear-gradient(180deg, var(--rg-primary-hover), var(--rg-primary));
272
+ --usk-native-thumb: radial-gradient(circle at 42% 30%, var(--rg-glass-highlight), transparent 32%), var(--rg-control-material);
273
+ --usk-native-thumb-border: var(--rg-border);
274
+ --usk-native-select-indicator-image: linear-gradient(57deg, transparent 50%, var(--rg-primary) 50%), linear-gradient(123deg, var(--rg-primary) 50%, transparent 50%);
275
+ --usk-native-select-indicator-size: 0.34rem 0.34rem, 0.34rem 0.34rem;
276
+ --usk-native-select-indicator-position: calc(100% - 1.16rem) 50%, calc(100% - 0.84rem) 50%;
277
+ --usk-native-select-padding-inline-end: 2.55rem;
278
+ --usk-native-range-track-size: .54rem;
279
+ --usk-native-range-track-background: var(--rg-surface-soft);
280
+ --usk-native-range-track-border: 1px solid var(--rg-border);
281
+ --usk-native-range-track-radius: .2rem;
282
+ --usk-native-range-track-shadow: inset 0 1px rgb(255 255 255 / .55);
283
+ --usk-native-range-progress-background: var(--rg-primary);
284
+ --usk-native-range-thumb-size: 1.35rem;
285
+ --usk-native-range-thumb-background: var(--rg-surface-strong);
286
+ --usk-native-range-thumb-border: 1px solid var(--rg-border);
287
+ --usk-native-range-thumb-radius: 50%;
288
+ --usk-native-range-thumb-shadow: inset 0 1px rgb(255 255 255 / .55);
289
+ --usk-native-progress-size: .72rem;
290
+ --usk-native-progress-track-background: var(--rg-surface-soft);
291
+ --usk-native-progress-track-border: 1px solid var(--rg-border);
292
+ --usk-native-progress-track-radius: .2rem;
293
+ --usk-native-progress-track-shadow: inset 0 1px rgb(255 255 255 / .55);
294
+ --usk-native-progress-value-background: var(--rg-primary);
295
+ --usk-native-progress-value-radius: .2rem;
296
+ --usk-native-progress-value-shadow: inset 0 1px rgb(255 255 255 / .55);
297
+ --usk-native-meter-optimum-background: var(--rg-success);
298
+ --usk-native-meter-suboptimum-background: var(--rg-warning);
299
+ --usk-native-meter-critical-background: var(--rg-danger);
300
+ --usk-native-file-button-background: var(--rg-primary);
301
+ --usk-native-file-button-border: 1px solid var(--rg-border);
302
+ --usk-native-file-button-radius: .28rem;
303
+ --usk-native-file-button-shadow: inset 0 1px rgb(255 255 255 / .55);
304
+ --usk-native-color-swatch-border: 1px solid var(--rg-border);
305
+ --usk-native-color-swatch-radius: .28rem;
306
+ --usk-native-indicator-opacity: 0.72;
307
+ --usk-native-indicator-filter: none;
308
+ --usk-native-scrollbar-size: .72rem;
309
+ --usk-native-scrollbar-track: var(--rg-surface-soft);
310
+ --usk-native-scrollbar-thumb: var(--rg-primary);
311
+ --usk-native-scrollbar-radius: .2rem;
136
312
  --usk-native-shadow: 0 10px 30px rgb(0 0 0 / calc(var(--rg-shadow-alpha) * .72));
137
313
  --rg-bg: rgb(var(--rg-bg-rgb));
138
314
  --rg-surface: rgb(var(--rg-surface-rgb) / var(--rg-panel-alpha));
@@ -143,7 +319,7 @@
143
319
  --rg-fg: var(--rg-text);
144
320
  --rg-surface-fg: var(--rg-text);
145
321
  --rg-muted: var(--rg-text-muted);
146
- --rg-border: rgb(var(--rg-border-rgb) / var(--rg-border-alpha));
322
+ --rg-border: rgb(var(--rg-border-rgb) / max(var(--rg-border-alpha), var(--usk-border-min-alpha)));
147
323
  --rg-control-fg: var(--rg-text);
148
324
  --rg-primary: rgb(var(--rg-primary-rgb));
149
325
  --rg-primary-hover: rgb(var(--rg-primary-hover-rgb));
@@ -169,15 +345,23 @@
169
345
  --rg-shadow-sm: 0 2px 8px rgb(0 0 0 / var(--rg-shadow-alpha));
170
346
  --rg-shadow-md: 0 10px 28px rgb(0 0 0 / calc(var(--rg-shadow-alpha) + 0.05));
171
347
  --rg-shadow-lg: 0 22px 60px rgb(0 0 0 / calc(var(--rg-shadow-alpha) + 0.12));
172
- --rg-theme-bg-size: auto, auto, auto, 52px 52px, 52px 52px, auto;
173
- --rg-theme-bg: radial-gradient(circle at 15% 15%, rgb(var(--rg-primary-rgb) / .18), transparent 28rem), radial-gradient(circle at 85% 10%, rgb(var(--rg-secondary-rgb) / .16), transparent 26rem), radial-gradient(circle at 50% 110%, rgb(var(--rg-accent-rgb) / .14), transparent 34rem), linear-gradient(90deg, rgb(var(--rg-border-rgb) / var(--rg-grid-alpha)) 1px, transparent 1px), linear-gradient(rgb(var(--rg-border-rgb) / var(--rg-grid-alpha)) 1px, transparent 1px), var(--rg-bg);
174
- --rg-card-bg: linear-gradient(135deg, rgb(var(--rg-primary-rgb) / .10), rgb(var(--rg-accent-rgb) / .055) 42%, rgb(var(--rg-surface-strong-rgb) / var(--rg-panel-alpha)) 100%), var(--rg-surface);
175
- --rg-control-bg: linear-gradient(180deg, rgb(var(--rg-surface-strong-rgb) / var(--rg-panel-alpha)), rgb(var(--rg-surface-soft-rgb) / var(--rg-panel-soft-alpha)));
348
+ --rg-theme-bg-size: auto;
349
+ --rg-theme-bg: repeating-linear-gradient(0deg, transparent 0 1px, var(--rg-brush-line) 1px 2px), linear-gradient(90deg, rgb(var(--rg-primary-rgb) / .025), transparent 18%, transparent 82%, rgb(var(--rg-secondary-rgb) / .025)), var(--rg-bg);
350
+ --rg-brushed-chrome: repeating-linear-gradient(0deg, transparent 0 1px, var(--rg-brush-line) 1px 2px), linear-gradient(180deg, var(--rg-glass-highlight), var(--rg-glass-midlight) 46%, rgb(var(--rg-surface-soft-rgb) / .54) 52%, rgb(var(--rg-surface-rgb) / .88));
351
+ --rg-glass-pane: linear-gradient(180deg, var(--rg-glass-highlight), rgb(var(--rg-surface-strong-rgb) / .28) 10%, rgb(var(--rg-surface-rgb) / .82) 100%);
352
+ --rg-glass-inset: linear-gradient(180deg, rgb(var(--rg-text-rgb) / .075), rgb(var(--rg-surface-rgb) / .7) 22%, rgb(var(--rg-surface-strong-rgb) / .68));
353
+ --rg-control-material: linear-gradient(180deg, var(--rg-glass-highlight), rgb(var(--rg-surface-strong-rgb) / .9) 12%, rgb(var(--rg-surface-rgb) / .72) 52%, rgb(var(--rg-surface-soft-rgb) / .9));
354
+ --rg-card-bg: var(--rg-glass-pane);
355
+ --rg-control-bg: var(--rg-control-material);
176
356
  --rg-spinner-track: rgb(var(--rg-border-rgb) / max(.28, calc(var(--rg-border-alpha) * .7)));
177
357
  --rg-spinner-stroke: var(--rg-primary);
178
358
  --rg-spinner-accent: var(--rg-accent);
179
359
  }
180
360
 
361
+ @supports (color: color-mix(in srgb, black, white)) {
362
+ [data-ui="retro-glass"][data-mode] { --rg-border: color-mix(in srgb, rgb(var(--rg-border-rgb) / max(var(--rg-border-alpha), var(--usk-border-min-alpha))), var(--rg-text) var(--usk-border-text-mix)); }
363
+ }
364
+
181
365
  /* =========================================================
182
366
  1. Midnight Gold
183
367
  ========================================================= */
@@ -254,26 +438,20 @@
254
438
 
255
439
  [data-ui="retro-glass"] {
256
440
  min-height: 100vh;
257
- background:
258
- radial-gradient(circle at 15% 15%, rgb(var(--rg-primary-rgb) / 0.18), transparent 28rem),
259
- radial-gradient(circle at 85% 10%, rgb(var(--rg-secondary-rgb) / 0.16), transparent 26rem),
260
- radial-gradient(circle at 50% 110%, rgb(var(--rg-accent-rgb) / 0.14), transparent 34rem),
261
- linear-gradient(90deg, rgb(var(--rg-border-rgb) / var(--rg-grid-alpha)) 1px, transparent 1px),
262
- linear-gradient(rgb(var(--rg-border-rgb) / var(--rg-grid-alpha)) 1px, transparent 1px),
263
- var(--rg-bg);
264
- background-size: auto, auto, auto, 52px 52px, 52px 52px, auto;
441
+ background: var(--rg-theme-bg, var(--rg-bg));
442
+ background-size: var(--rg-theme-bg-size, auto);
265
443
  color: var(--rg-text);
266
444
  font-family: var(--rg-font-body);
267
445
  }
268
446
  [data-ui="retro-glass"] *, [data-ui="retro-glass"] *::before, [data-ui="retro-glass"] *::after { box-sizing: border-box; }
269
- [data-ui="retro-glass"][data-theme][data-mode] { background: var(--rg-theme-bg); background-size: var(--rg-theme-bg-size); }
270
- [data-ui="retro-glass"] a { color: var(--rg-link); text-underline-offset: 0.18em; } [data-ui="retro-glass"] ::selection { background: var(--rg-primary); color: var(--rg-on-primary); }
447
+ [data-ui="retro-glass"][data-mode] { background: var(--rg-theme-bg); background-size: var(--rg-theme-bg-size); }
448
+ [data-ui="retro-glass"] :where(a) { color: var(--rg-link); text-underline-offset: 0.18em; } [data-ui="retro-glass"] ::selection { background: var(--rg-primary); color: var(--rg-on-primary); }
271
449
 
272
450
  .rg-page { min-height: 100vh; padding: clamp(1rem, 4vw, 3rem); } .rg-container { width: min(100% - 2rem, 1200px); margin-inline: auto; } .rg-stack { display: flex; flex-direction: column; gap: var(--rg-space-4); } .rg-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--rg-space-3); } .rg-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: var(--rg-space-5); } .rg-section { padding: clamp(1.25rem, 4vw, 2.5rem); }
273
451
  .rg-title, .rg-heading, .rg-kicker, .rg-button, .rg-badge, .rg-nav-link { font-family: var(--rg-font-heading); text-transform: uppercase; } .rg-title { margin: 0; font-size: clamp(2rem, 5vw, 3.8rem); line-height: 1.02; letter-spacing: .06em; text-shadow: 0 0 14px var(--rg-glow-primary), 0 0 34px var(--rg-glow-accent); } .rg-heading { margin: 0; font-size: clamp(1.25rem, 3vw, 2rem); letter-spacing: .06em; } .rg-kicker { margin: 0; color: var(--rg-primary); font-size: .8rem; font-weight: 900; letter-spacing: .18em; } .rg-subtitle, .rg-copy { margin: 0; color: var(--rg-text-muted); line-height: 1.65; } .rg-text-muted { color: var(--rg-text-muted); }
274
452
 
275
- .rg-card, .rg-panel, .rg-console, .rg-toolbar, .rg-table-wrap { position: relative; background: linear-gradient(135deg, rgb(255 255 255 / .18), rgb(255 255 255 / .04)), linear-gradient(135deg, rgb(var(--rg-primary-rgb) / .06), transparent 52%), var(--rg-surface); color: var(--rg-text); border: 1px solid var(--rg-border); border-top-color: rgb(255 255 255 / .28); border-left-color: rgb(255 255 255 / .2); border-radius: var(--rg-radius-xl); box-shadow: var(--rg-shadow-md), 0 0 28px var(--rg-glow-primary); -webkit-backdrop-filter: blur(18px) saturate(150%); backdrop-filter: blur(18px) saturate(150%); overflow: hidden; transition: transform var(--rg-transition-base), box-shadow var(--rg-transition-base), border-color var(--rg-transition-base); }
276
- .rg-card::before, .rg-panel::before, .rg-console::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgb(255 255 255 / .1), transparent 30%), linear-gradient(90deg, transparent, rgb(var(--rg-accent-rgb) / .08), transparent); } .rg-card, .rg-panel, .rg-console { padding: var(--rg-space-6); } .rg-console { border-radius: var(--rg-radius-lg); box-shadow: var(--rg-shadow-lg), inset 0 0 28px rgb(var(--rg-primary-rgb) / .08), 0 0 32px var(--rg-glow-primary); } .rg-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--rg-space-4); padding: var(--rg-space-4); } .rg-hover-lift:hover { transform: translateY(-3px); border-color: rgb(var(--rg-primary-rgb) / .68); box-shadow: var(--rg-shadow-lg), 0 0 44px var(--rg-glow-primary), 0 0 60px var(--rg-glow-secondary); }
453
+ .rg-card, .rg-panel, .rg-console, .rg-toolbar, .rg-table-wrap { position: relative; background: linear-gradient(135deg, rgb(255 255 255 / .18), rgb(255 255 255 / .04)), linear-gradient(135deg, rgb(var(--rg-primary-rgb) / .06), transparent 52%), var(--rg-surface); color: var(--rg-text); border: 1px solid var(--rg-border); border-top-color: rgb(255 255 255 / .28); border-left-color: rgb(255 255 255 / .2); border-radius: var(--rg-radius-xl); box-shadow: var(--rg-shadow-md), 0 0 28px var(--rg-glow-primary); -webkit-backdrop-filter: blur(18px) saturate(150%); backdrop-filter: blur(18px) saturate(150%); transition: transform var(--rg-transition-base), box-shadow var(--rg-transition-base), border-color var(--rg-transition-base); }
454
+ .rg-card::before, .rg-panel::before, .rg-console::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgb(255 255 255 / .1), transparent 30%), linear-gradient(90deg, transparent, rgb(var(--rg-accent-rgb) / .08), transparent); border-radius: inherit; } .rg-card, .rg-panel, .rg-console { padding: var(--rg-space-6); } .rg-console { border-radius: var(--rg-radius-lg); box-shadow: var(--rg-shadow-lg), inset 0 0 28px rgb(var(--rg-primary-rgb) / .08), 0 0 32px var(--rg-glow-primary); } .rg-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--rg-space-4); padding: var(--rg-space-4); } .rg-hover-lift:hover { transform: translateY(-3px); border-color: rgb(var(--rg-primary-rgb) / .68); box-shadow: var(--rg-shadow-lg), 0 0 44px var(--rg-glow-primary), 0 0 60px var(--rg-glow-secondary); }
277
455
  .rg-inset, .rg-well { background: linear-gradient(180deg, rgb(0 0 0 / .08), rgb(255 255 255 / .04)), var(--rg-surface-soft); border: 1px solid rgb(var(--rg-border-rgb) / .36); border-radius: var(--rg-radius-lg); box-shadow: inset 0 8px 22px rgb(0 0 0 / .16); -webkit-backdrop-filter: blur(12px) saturate(140%); backdrop-filter: blur(12px) saturate(140%); } .rg-well { padding: var(--rg-space-5); }
278
456
 
279
457
  .rg-button, .rg-icon-button { appearance: none; display: inline-flex; align-items: center; justify-content: center; gap: var(--rg-space-2); min-height: 2.85rem; padding: .75rem 1.1rem; background: linear-gradient(135deg, rgb(255 255 255 / .24), rgb(255 255 255 / .04)), var(--rg-surface); color: var(--rg-text); border: 1px solid rgb(var(--rg-border-rgb) / .56); border-top-color: rgb(255 255 255 / .32); border-radius: var(--rg-radius-md); box-shadow: var(--rg-shadow-sm); -webkit-backdrop-filter: blur(14px) saturate(150%); backdrop-filter: blur(14px) saturate(150%); font: inherit; font-family: var(--rg-font-display); font-weight: 900; letter-spacing: .08em; cursor: pointer; text-decoration: none; transition: transform var(--rg-transition-fast), box-shadow var(--rg-transition-fast), background var(--rg-transition-fast), border-color var(--rg-transition-fast); }
@@ -298,41 +476,412 @@
298
476
  /* Theme-responsive component defaults */
299
477
  .rg-card, .rg-panel { background: var(--rg-card-bg); }
300
478
  .rg-toolbar, .rg-table-wrap { background: var(--rg-control-bg); }
301
- .rg-button:not(.rg-button-primary):not(.rg-button-secondary):not(.rg-button-danger):not(.rg-button-ghost), .rg-icon-button { background: var(--rg-control-bg); }
479
+ .rg-button:not(.rg-button-primary):not(.rg-button-secondary):not(.rg-button-danger):not(.rg-button-warning):not(.rg-button-ghost), .rg-icon-button { background: var(--rg-control-bg); }
302
480
  .rg-button, .rg-icon-button, .rg-badge, .rg-nav-link { font-family: var(--rg-font-control); }
303
481
 
304
- /* Spinner geometry follows the retro glass preset's translucent lens shape. */
482
+ /** All loader APIs share a complete circular track with one rotating accent. */
305
483
  .rg-spinner, .rg-loading-spinner, [data-ui="retro-glass"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]) {
484
+ box-sizing: border-box;
306
485
  display: inline-block;
307
486
  inline-size: 2rem;
308
487
  block-size: 2rem;
309
- border: .12rem solid rgb(255 255 255 / .32);
310
- border-block-start-color: var(--rg-spinner-stroke);
311
- border-inline-end-color: var(--rg-spinner-accent);
312
- border-radius: 38% 62% 48% 52%;
313
- background: linear-gradient(135deg, rgb(255 255 255 / .32), transparent 46%), conic-gradient(from 35deg, var(--rg-spinner-stroke), transparent 40%, var(--rg-spinner-accent), var(--rg-spinner-track));
314
- box-shadow: 0 0 1.35rem var(--rg-glow-primary), inset 0 0 .85rem rgb(255 255 255 / .18);
315
- -webkit-backdrop-filter: blur(.4rem);
316
- backdrop-filter: blur(.4rem);
488
+ flex-shrink: 0;
489
+ padding: 0;
490
+ color: var(--rg-spinner-stroke);
491
+ border: 2px solid var(--rg-spinner-track);
492
+ border-block-start-color: currentColor;
493
+ border-radius: 50%;
494
+ background: none;
495
+ box-shadow: none;
496
+ -webkit-backdrop-filter: none;
497
+ backdrop-filter: none;
317
498
  vertical-align: -.2em;
318
- animation: rg-spin .95s linear infinite;
499
+ animation: rg-spin .85s linear infinite;
319
500
  }
320
501
  .rg-spinner-sm { inline-size: 1rem; block-size: 1rem; border-width: .08rem; }
321
502
  .rg-spinner-lg { inline-size: 3rem; block-size: 3rem; border-width: .2rem; }
322
503
  .rg-button[aria-busy="true"], .rg-icon-button[aria-busy="true"], [data-ui="retro-glass"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"]) { gap: .55rem; cursor: progress; }
323
504
  .rg-button[aria-busy="true"]::after, .rg-icon-button[aria-busy="true"]::after, [data-ui="retro-glass"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"])::after {
324
505
  content: "";
506
+ box-sizing: border-box;
325
507
  display: inline-block;
326
- inline-size: 1em;
327
- block-size: 1em;
328
- border: .16em solid rgb(var(--rg-primary-text-rgb) / .42);
508
+ inline-size: 16px;
509
+ block-size: 16px;
510
+ flex: 0 0 16px;
511
+ padding: 0;
512
+ border: 2px solid var(--rg-spinner-track);
329
513
  border-block-start-color: currentColor;
330
514
  border-radius: 50%;
331
- animation: rg-spin .75s linear infinite;
515
+ background: none;
516
+ box-shadow: none;
517
+ clip-path: none;
518
+ animation: rg-spin .85s linear infinite;
519
+ }
520
+ /** Match the track to its foreground when color mixing is supported. */
521
+ @supports (color: color-mix(in srgb, black, white)) {
522
+ .rg-spinner, .rg-loading-spinner,
523
+ [data-ui="retro-glass"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]),
524
+ .rg-button[aria-busy="true"]::after, .rg-icon-button[aria-busy="true"]::after,
525
+ [data-ui="retro-glass"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"])::after {
526
+ border-color: color-mix(in srgb, currentColor 28%, transparent);
527
+ border-block-start-color: currentColor;
528
+ }
332
529
  }
333
530
  @keyframes rg-spin { to { transform: rotate(360deg); } }
334
531
 
335
532
 
533
+
534
+ /* =========================================================
535
+ Marketing / Commercial Component Modifiers
536
+ Reusable visual patterns derived from service-oriented brand systems.
537
+ ========================================================= */
538
+
539
+ .rg-card-media {
540
+ display: block;
541
+ inline-size: 100%;
542
+ aspect-ratio: 16 / 9;
543
+ object-fit: cover;
544
+ border: 1px solid rgb(var(--rg-border-rgb) / .72);
545
+ border-radius: var(--rg-radius-lg);
546
+ }
547
+
548
+ .rg-card-service {
549
+ position: relative;
550
+ display: grid;
551
+ gap: var(--rg-space-3);
552
+ align-content: start;
553
+ text-align: center;
554
+ overflow: visible;
555
+ }
556
+ .rg-card-service > .rg-icon-medallion {
557
+ justify-self: center;
558
+ margin-block-start: -2.15rem;
559
+ position: relative;
560
+ z-index: 2;
561
+ }
562
+ .rg-card-service > .rg-card-media + .rg-icon-medallion { margin-block-start: -2.15rem; }
563
+
564
+ .rg-card-feature {
565
+ display: grid;
566
+ grid-template-columns: auto minmax(0, 1fr);
567
+ gap: var(--rg-space-4);
568
+ align-items: start;
569
+ }
570
+
571
+ .rg-card-accent-edge {
572
+ border-inline-start: .35rem solid var(--rg-primary);
573
+ }
574
+
575
+ .rg-icon-medallion {
576
+ display: inline-grid;
577
+ place-items: center;
578
+ inline-size: 3.75rem;
579
+ block-size: 3.75rem;
580
+ flex: 0 0 auto;
581
+ padding: .7rem;
582
+ background: var(--rg-primary);
583
+ color: var(--rg-on-primary);
584
+ border: 2px solid rgb(var(--rg-border-rgb) / .82);
585
+ border-radius: 50%;
586
+ line-height: 1;
587
+ }
588
+ .rg-icon-medallion > :where(svg, img) { inline-size: 100%; block-size: 100%; object-fit: contain; }
589
+
590
+ .rg-button.rg-button-cut,
591
+ .rg-button-cut {
592
+ border-radius: 0;
593
+ clip-path: polygon(.6rem 0, 100% 0, 100% calc(100% - .6rem), calc(100% - .6rem) 100%, 0 100%, 0 .6rem);
594
+ }
595
+ .rg-button.rg-button-cut:focus-visible,
596
+ .rg-button-cut:focus-visible { outline-offset: -3px; }
597
+
598
+ .rg-button.rg-button-outline-heavy,
599
+ .rg-button-outline-heavy {
600
+ background: transparent;
601
+ color: var(--rg-primary);
602
+ border-style: solid;
603
+ border-width: 2px;
604
+ border-color: var(--rg-primary);
605
+ box-shadow: none;
606
+ }
607
+ .rg-button.rg-button-outline-heavy:hover,
608
+ .rg-button-outline-heavy:hover {
609
+ background: var(--rg-primary);
610
+ color: var(--rg-on-primary);
611
+ border-color: var(--rg-primary-hover);
612
+ }
613
+
614
+ .rg-badge-seal {
615
+ display: inline-grid;
616
+ place-items: center;
617
+ align-content: center;
618
+ inline-size: 5rem;
619
+ min-inline-size: 5rem;
620
+ aspect-ratio: 1;
621
+ padding: .65rem;
622
+ background: var(--rg-surface-strong);
623
+ color: var(--rg-text);
624
+ border: 2px solid var(--rg-primary);
625
+ border-radius: 50%;
626
+ text-align: center;
627
+ font-family: var(--rg-font-heading);
628
+ font-size: .72rem;
629
+ font-weight: 900;
630
+ line-height: 1.05;
631
+ letter-spacing: .04em;
632
+ }
633
+
634
+ .rg-feature-strip {
635
+ display: grid;
636
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
637
+ background: var(--rg-card-bg);
638
+ color: var(--rg-text);
639
+ border: 1px solid var(--rg-border);
640
+ border-radius: var(--rg-radius-lg);
641
+ }
642
+
643
+ .rg-feature-item {
644
+ display: grid;
645
+ grid-template-columns: auto minmax(0, 1fr);
646
+ align-items: center;
647
+ gap: var(--rg-space-3);
648
+ min-inline-size: 0;
649
+ padding: var(--rg-space-4);
650
+ border-inline-end: 1px solid rgb(var(--rg-border-rgb) / .62);
651
+ }
652
+ .rg-feature-item:last-child { border-inline-end: 0; }
653
+ .rg-feature-item > :where(p, small) { margin: 0; color: var(--rg-text-muted); }
654
+
655
+ .rg-callout-bar {
656
+ display: grid;
657
+ grid-template-columns: auto minmax(0, 1fr) auto;
658
+ align-items: center;
659
+ gap: var(--rg-space-4);
660
+ padding: var(--rg-space-4) var(--rg-space-5);
661
+ background: var(--rg-card-bg);
662
+ color: var(--rg-text);
663
+ border: 1px solid var(--rg-border);
664
+ border-radius: var(--rg-radius-lg);
665
+ }
666
+ .rg-callout-bar > :where(p, div) { min-inline-size: 0; }
667
+ .rg-callout-bar > :where(.rg-button, a, button):last-child { justify-self: end; }
668
+
669
+ .rg-eyebrow {
670
+ margin: 0;
671
+ color: var(--rg-primary);
672
+ font-family: var(--rg-font-heading);
673
+ font-size: .76rem;
674
+ font-weight: 900;
675
+ line-height: 1.2;
676
+ letter-spacing: .14em;
677
+ text-transform: uppercase;
678
+ }
679
+
680
+ .rg-media-scrim {
681
+ position: relative;
682
+ overflow: hidden;
683
+ isolation: isolate;
684
+ min-block-size: 12rem;
685
+ background: var(--rg-surface-soft);
686
+ border: 1px solid var(--rg-border);
687
+ border-radius: var(--rg-radius-lg);
688
+ }
689
+ .rg-media-scrim > :where(img, picture, video) {
690
+ display: block;
691
+ inline-size: 100%;
692
+ block-size: 100%;
693
+ min-block-size: inherit;
694
+ object-fit: cover;
695
+ }
696
+ .rg-media-scrim > :where(figcaption, [data-media-caption]) {
697
+ position: absolute;
698
+ z-index: 1;
699
+ inset-inline: 0;
700
+ inset-block-end: 0;
701
+ padding: clamp(1rem, 4vw, 2rem);
702
+ color: #fff;
703
+ background: linear-gradient(to top, rgb(0 0 0 / .9), rgb(0 0 0 / .58) 56%, transparent);
704
+ }
705
+ .rg-media-scrim > :where(figcaption, [data-media-caption]) * {
706
+ color: inherit;
707
+ }
708
+
709
+ @media (max-width: 42rem) {
710
+ .rg-callout-bar { grid-template-columns: 1fr; align-items: start; }
711
+ .rg-callout-bar > :where(.rg-button, a, button):last-child { justify-self: stretch; }
712
+ .rg-feature-item { border-inline-end: 0; border-block-end: 1px solid rgb(var(--rg-border-rgb) / .62); }
713
+ .rg-feature-item:last-child { border-block-end: 0; }
714
+ }
715
+
716
+ .rg-card-service, .rg-card-feature, .rg-feature-strip, .rg-callout-bar { background: linear-gradient(135deg, rgb(255 255 255 / .16), rgb(255 255 255 / .03)), var(--rg-card-bg); -webkit-backdrop-filter: blur(18px) saturate(150%); backdrop-filter: blur(18px) saturate(150%); box-shadow: var(--rg-shadow-md), 0 0 1.8rem rgb(var(--rg-primary-rgb) / .18); }
717
+ .rg-icon-medallion, .rg-badge-seal { background: linear-gradient(145deg, rgb(255 255 255 / .3), rgb(255 255 255 / .05)), rgb(var(--rg-primary-rgb) / .72); border-color: rgb(255 255 255 / .32); -webkit-backdrop-filter: blur(12px) saturate(150%); backdrop-filter: blur(12px) saturate(150%); box-shadow: 0 0 1.35rem rgb(var(--rg-primary-rgb) / .28); }
718
+ .rg-button-outline-heavy { background: rgb(255 255 255 / .06); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
719
+
720
+ /* Filled and framed actions use complementary frosted tabs and inner highlights. */
721
+ .rg-button.rg-button-cut, .rg-button-cut {
722
+ inline-size: min(100%, 16rem);
723
+ min-block-size: 2.75rem;
724
+ min-inline-size: 6rem;
725
+ max-inline-size: 100%;
726
+ justify-self: center;
727
+ justify-content: center;
728
+ clip-path: polygon(.8rem 0, 100% 0, 100% calc(100% - .35rem), calc(100% - .8rem) 100%, 0 100%, 0 .35rem);
729
+ }
730
+ .rg-button.rg-button-outline-heavy, .rg-button-outline-heavy {
731
+ border-width: 1px;
732
+ border-radius: 0;
733
+ background: rgb(var(--rg-surface-strong-rgb) / .2);
734
+ clip-path: polygon(0 0, calc(100% - .8rem) 0, 100% .35rem, 100% 100%, .8rem 100%, 0 calc(100% - .35rem));
735
+ box-shadow: inset 0 1px 0 rgb(var(--rg-surface-strong-rgb) / .78), 0 .45rem 1rem rgb(var(--rg-primary-rgb) / .14);
736
+ }
737
+
738
+ /* Marketing and native surfaces repeat the frosted shell and inner highlight. */
739
+ .rg-card-service, .rg-media-scrim, .rg-feature-strip, .rg-callout-bar, .rg-well {
740
+ background: rgb(var(--rg-surface-strong-rgb) / .34);
741
+ border: 1px solid rgb(var(--rg-border-rgb) / .72);
742
+ border-radius: .75rem 1.35rem .75rem 1.15rem;
743
+ box-shadow: inset 0 1px 0 rgb(var(--rg-surface-strong-rgb) / .78), 0 .8rem 1.6rem rgb(var(--rg-primary-rgb) / .14);
744
+ -webkit-backdrop-filter: blur(12px);
745
+ backdrop-filter: blur(12px);
746
+ }
747
+ [data-ui="retro-glass"][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
748
+ color: var(--rg-text);
749
+ background: rgb(var(--rg-surface-strong-rgb) / .24);
750
+ border: 1px solid var(--rg-primary);
751
+ border-radius: .55rem .9rem .55rem .78rem;
752
+ box-shadow: inset 0 1px 0 rgb(var(--rg-surface-strong-rgb) / .78), 0 .35rem .85rem rgb(var(--rg-primary-rgb) / .14);
753
+ }
754
+ [data-ui="retro-glass"][data-mode] :where(dialog) {
755
+ background: rgb(var(--rg-surface-strong-rgb) / .72);
756
+ border: 1px solid rgb(var(--rg-border-rgb) / .78);
757
+ border-radius: .85rem 1.45rem .85rem 1.2rem;
758
+ box-shadow: inset 0 1px 0 rgb(var(--rg-surface-strong-rgb) / .8), 0 1rem 2.2rem rgb(var(--rg-primary-rgb) / .18);
759
+ -webkit-backdrop-filter: blur(14px);
760
+ backdrop-filter: blur(14px);
761
+ }
762
+
763
+ /**
764
+ * Final Retro Glass fidelity layer.
765
+ * Recreates the reference application's brushed chrome, glossy navigation,
766
+ * shallow glass panes, compact bevels, and dark dock treatment in every mode.
767
+ */
768
+ [data-ui="retro-glass"][data-mode] {
769
+ --usk-native-font-control: "Segoe UI", Tahoma, Geneva, sans-serif;
770
+ --usk-native-control-min-block-size: 2.5rem;
771
+ --usk-native-control-padding-block: .52rem;
772
+ --usk-native-control-padding-inline: .86rem;
773
+ --usk-native-border-width: 1px;
774
+ --usk-native-radius-sm: .34rem;
775
+ --usk-native-radius: .52rem;
776
+ --usk-native-radius-lg: .72rem;
777
+ --usk-native-shadow: inset 0 1px 0 rgb(var(--rg-surface-strong-rgb) / .9), 0 .22rem .5rem rgb(var(--rg-text-rgb) / .18);
778
+ --usk-native-shadow-md: inset 0 1px 0 rgb(var(--rg-surface-strong-rgb) / .92), 0 .7rem 1.35rem rgb(var(--rg-text-rgb) / .22);
779
+ --usk-native-focus-ring: 0 0 0 1px var(--rg-surface-strong), 0 0 0 3px var(--rg-focus), 0 0 .65rem rgb(var(--rg-focus-rgb) / .34);
780
+ --usk-native-subcontrol-padding-block: .4rem;
781
+ --usk-native-subcontrol-padding-inline: .62rem;
782
+ --usk-native-choice-size: 1.16rem;
783
+ --usk-native-choice-background: var(--rg-control-material);
784
+ --usk-native-choice-border: 1px solid var(--rg-border);
785
+ --usk-native-checkbox-radius: .28rem;
786
+ --usk-native-radio-radius: 50%;
787
+ --usk-native-choice-shadow: inset 0 1px 0 rgb(var(--rg-surface-strong-rgb) / .9), 0 1px 3px rgb(var(--rg-text-rgb) / .22);
788
+ --usk-native-choice-checked-background: linear-gradient(180deg, var(--rg-primary-hover), var(--rg-primary));
789
+ --usk-native-choice-mark-color: var(--rg-on-primary);
790
+ --usk-native-select-indicator-image: linear-gradient(55deg, transparent 46%, var(--rg-text) 46% 56%, transparent 56%), linear-gradient(125deg, transparent 46%, var(--rg-text) 46% 56%, transparent 56%);
791
+ --usk-native-select-indicator-size: .44rem .44rem, .44rem .44rem;
792
+ --usk-native-select-indicator-position: calc(100% - 1.02rem) 50%, calc(100% - .72rem) 50%;
793
+ --usk-native-select-padding-inline-end: 2.2rem;
794
+ --usk-native-range-track-size: .42rem;
795
+ --usk-native-range-track-background: var(--rg-glass-inset);
796
+ --usk-native-range-track-border: 1px inset var(--rg-border);
797
+ --usk-native-range-track-radius: .35rem;
798
+ --usk-native-range-track-shadow: inset 0 2px 4px rgb(var(--rg-text-rgb) / .22);
799
+ --usk-native-range-progress-background: linear-gradient(180deg, var(--rg-primary-hover), var(--rg-primary));
800
+ --usk-native-range-thumb-size: 1.2rem;
801
+ --usk-native-range-thumb-background: radial-gradient(circle at 42% 32%, var(--rg-glass-highlight), transparent 28%), var(--rg-control-material);
802
+ --usk-native-range-thumb-border: 1px solid var(--rg-border);
803
+ --usk-native-range-thumb-radius: 50%;
804
+ --usk-native-range-thumb-shadow: inset 0 1px 0 var(--rg-surface-strong), 0 2px 4px rgb(var(--rg-text-rgb) / .28);
805
+ --usk-native-progress-size: .74rem;
806
+ --usk-native-progress-track-background: var(--rg-glass-inset);
807
+ --usk-native-progress-track-border: 1px inset var(--rg-border);
808
+ --usk-native-progress-track-radius: .42rem;
809
+ --usk-native-progress-track-shadow: inset 0 2px 4px rgb(var(--rg-text-rgb) / .25);
810
+ --usk-native-progress-value-background: repeating-linear-gradient(120deg, var(--rg-primary) 0 .5rem, var(--rg-primary-hover) .5rem .7rem);
811
+ --usk-native-progress-value-radius: .36rem;
812
+ --usk-native-progress-value-shadow: inset 0 1px 0 rgb(var(--rg-surface-strong-rgb) / .7), 0 0 .45rem rgb(var(--rg-primary-rgb) / .35);
813
+ --usk-native-scrollbar-size: .8rem;
814
+ --usk-native-scrollbar-track: linear-gradient(90deg, var(--rg-surface-soft), var(--rg-surface));
815
+ --usk-native-scrollbar-thumb: linear-gradient(90deg, var(--rg-surface-strong), var(--rg-primary), var(--rg-surface-strong));
816
+ --usk-native-scrollbar-radius: .48rem;
817
+ }
818
+
819
+ .rg-title { margin-block: .75rem; font-family: var(--rg-font-display); font-weight: 800; letter-spacing: max(.06em, .5px); text-transform: none; text-shadow: 0 1px 0 var(--rg-glass-highlight), 0 2px 2px rgb(var(--rg-text-rgb) / .28); }
820
+ .rg-heading { font-size: clamp(1.16rem, 2.4vw, 1.72rem); font-weight: 700; letter-spacing: .015em; text-shadow: var(--rg-control-text-shadow); }
821
+ .rg-kicker, .rg-label { font-size: .76rem; font-weight: 700; letter-spacing: .055em; }
822
+ .rg-copy, .rg-subtitle { line-height: 1.48; }
823
+ .rg-card, .rg-panel { padding: 1rem; background: var(--rg-glass-pane); border: 1px solid var(--rg-border); border-radius: .46rem; box-shadow: inset 0 1px 0 var(--rg-glass-highlight), 0 .35rem .8rem var(--rg-material-shadow); -webkit-backdrop-filter: blur(14px) saturate(135%); backdrop-filter: blur(14px) saturate(135%); }
824
+ .rg-card::before, .rg-panel::before, .rg-console::before { background: linear-gradient(180deg, var(--rg-glass-midlight), transparent 24%); }
825
+ .rg-well, .rg-inset { padding: .82rem; background: var(--rg-glass-inset); border: 1px inset var(--rg-border); border-radius: .34rem; box-shadow: inset 0 2px 5px var(--rg-material-shadow), inset 0 1px 0 var(--rg-glass-midlight); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
826
+ .rg-button, .rg-icon-button { min-height: 2.5rem; padding: .5rem .82rem; background: var(--rg-control-material); border: 1px solid var(--rg-border); border-radius: .34rem; box-shadow: inset 0 1px 0 var(--rg-glass-highlight), inset 0 -1px 0 rgb(var(--rg-text-rgb) / .08), 0 .16rem .38rem var(--rg-material-shadow); font-weight: 650; letter-spacing: .01em; text-shadow: var(--rg-control-text-shadow); text-transform: none; }
827
+ .rg-button:hover, .rg-icon-button:hover { transform: none; border-color: var(--rg-primary); box-shadow: inset 0 1px 0 var(--rg-glass-highlight), 0 .2rem .48rem var(--rg-material-shadow), 0 0 .5rem rgb(var(--rg-primary-rgb) / .24); }
828
+ .rg-button:active, .rg-icon-button:active, .rg-button[aria-pressed="true"], .rg-button.is-active { transform: translateY(1px); background: var(--rg-glass-inset); box-shadow: inset 0 2px 5px var(--rg-material-shadow), 0 1px 0 var(--rg-glass-midlight); }
829
+ .rg-input, .rg-textarea, .rg-select { min-height: 2.32rem; padding: .44rem .64rem; background: var(--rg-glass-inset); border: 1px inset var(--rg-border); border-radius: .28rem; box-shadow: inset 0 2px 5px var(--rg-material-shadow), 0 1px 0 var(--rg-glass-highlight); }
830
+ .rg-nav { gap: 0; padding: .2rem; background: linear-gradient(180deg, var(--rg-primary-hover), var(--rg-primary) 44%, rgb(var(--rg-primary-rgb) / .82) 50%, rgb(var(--rg-primary-rgb) / .68)); border: 1px solid rgb(var(--rg-primary-rgb) / .92); border-radius: .34rem; box-shadow: inset 0 1px 0 rgb(255 255 255 / .48), inset 0 -1px 0 rgb(0 0 0 / .34), 0 .24rem .54rem var(--rg-material-shadow); }
831
+ .rg-nav-link { min-height: 2.7rem; padding: .58rem .92rem; border-inline-end: 1px solid rgb(0 0 0 / .22); border-radius: .2rem; color: var(--rg-on-primary); font-size: .82rem; letter-spacing: .015em; text-shadow: 0 -1px 0 rgb(0 0 0 / .62); }
832
+ .rg-nav-link:hover { color: var(--rg-on-primary); background: linear-gradient(180deg, rgb(255 255 255 / .24), rgb(255 255 255 / .04)); border-color: rgb(255 255 255 / .3); }
833
+ .rg-nav-link.is-active, .rg-nav-link[aria-current="page"] { background: linear-gradient(180deg, rgb(255 255 255 / .34), rgb(var(--rg-primary-rgb) / .04) 48%, rgb(0 0 0 / .14)); color: var(--rg-on-primary); box-shadow: inset 0 1px 0 rgb(255 255 255 / .58), inset 0 0 0 1px rgb(255 255 255 / .14), 0 0 .6rem rgb(var(--rg-primary-rgb) / .32); }
834
+ .rg-toolbar { background: var(--rg-brushed-chrome); border-radius: .34rem; box-shadow: inset 0 1px 0 var(--rg-glass-highlight), inset 0 -1px 0 rgb(var(--rg-text-rgb) / .18), 0 .22rem .5rem var(--rg-material-shadow); }
835
+ .rg-badge { min-height: 1.46rem; padding: .24rem .52rem; border: 1px solid var(--rg-border); border-radius: .72rem; box-shadow: inset 0 1px 0 rgb(var(--rg-surface-strong-rgb) / .85), 0 1px 3px rgb(var(--rg-text-rgb) / .2); }
836
+ .rg-alert { padding: .7rem .86rem; background: var(--rg-glass-pane); border: 1px solid var(--rg-border); border-radius: .38rem; box-shadow: inset 0 1px 0 var(--rg-glass-highlight), 0 .28rem .6rem var(--rg-material-shadow); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
837
+ .rg-alert-success { background: linear-gradient(180deg, rgb(var(--rg-success-rgb) / .2), rgb(var(--rg-success-rgb) / .08)), var(--rg-glass-pane); }
838
+ .rg-alert-warning { background: linear-gradient(180deg, rgb(var(--rg-warning-rgb) / .2), rgb(var(--rg-warning-rgb) / .08)), var(--rg-glass-pane); }
839
+ .rg-alert-danger { background: linear-gradient(180deg, rgb(var(--rg-danger-rgb) / .2), rgb(var(--rg-danger-rgb) / .08)), var(--rg-glass-pane); }
840
+ .rg-progress { height: .74rem; background: var(--rg-glass-inset); border-radius: .42rem; box-shadow: inset 0 2px 4px var(--rg-material-shadow), 0 1px 0 var(--rg-glass-highlight); }
841
+ .rg-progress-bar { background: repeating-linear-gradient(120deg, var(--rg-primary) 0 .5rem, var(--rg-primary-hover) .5rem .7rem); border-radius: .36rem; box-shadow: inset 0 1px 0 rgb(var(--rg-surface-strong-rgb) / .7), 0 0 .45rem rgb(var(--rg-primary-rgb) / .35); }
842
+ .rg-table-wrap { background: var(--rg-glass-inset); border: 1px solid var(--rg-border); border-radius: .42rem; box-shadow: inset 0 1px 0 var(--rg-glass-highlight), 0 .35rem .72rem var(--rg-material-shadow); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
843
+ .rg-table { border-collapse: separate; border-spacing: 0; }
844
+ .rg-table th { padding: .58rem .72rem; background: linear-gradient(180deg, rgb(var(--rg-primary-rgb) / .92), var(--rg-primary-hover) 48%, var(--rg-primary)); color: var(--rg-on-primary); font-weight: 700; text-shadow: 0 -1px 0 rgb(0 0 0 / .52); }
845
+ .rg-table td { padding: .64rem .76rem; }
846
+ .rg-tooltip, [data-ui="retro-glass"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) { background: linear-gradient(180deg, rgb(54 61 68 / .96), rgb(8 12 15 / .98)); color: rgb(245 248 250); border: 1px solid rgb(255 255 255 / .28); border-radius: .36rem; box-shadow: inset 0 1px 0 rgb(255 255 255 / .22), 0 .55rem 1rem rgb(0 0 0 / .48); }
847
+ .rg-card-service, .rg-card-feature, .rg-media-scrim, .rg-feature-strip, .rg-callout-bar { border-radius: .46rem; background: var(--rg-glass-pane); box-shadow: inset 0 1px 0 var(--rg-glass-highlight), 0 .35rem .72rem var(--rg-material-shadow); -webkit-backdrop-filter: blur(12px) saturate(118%); backdrop-filter: blur(12px) saturate(118%); clip-path: none; }
848
+ .rg-callout-bar { background: linear-gradient(180deg, rgb(255 255 255 / .16), transparent 12%), linear-gradient(180deg, rgb(var(--rg-text-rgb) / .88), rgb(var(--rg-bg-rgb) / .96)); color: var(--rg-dock-text); border-color: rgb(255 255 255 / .18); box-shadow: inset 0 1px 0 rgb(255 255 255 / .26), inset 0 -1px 0 rgb(0 0 0 / .7), 0 .45rem .92rem var(--rg-material-shadow); }
849
+
850
+ /**
851
+ * Carries the same desktop-application material through semantic choice controls.
852
+ * Native controls consume the matching custom properties declared above.
853
+ */
854
+ .rg-check-control, .rg-radio-control, .rg-switch-track, .rg-switch-thumb {
855
+ background: var(--rg-control-material);
856
+ border: 1px solid var(--rg-border);
857
+ box-shadow: inset 0 1px 0 var(--rg-glass-highlight), inset 0 -1px 0 rgb(var(--rg-text-rgb) / .12), 0 1px 3px var(--rg-material-shadow);
858
+ }
859
+ .rg-check-control { border-radius: .22rem; }
860
+ .rg-radio-control { border-radius: 50%; }
861
+ .rg-switch-track { background: var(--rg-glass-inset); border-radius: var(--rg-radius-pill); box-shadow: inset 0 2px 4px var(--rg-material-shadow), 0 1px 0 var(--rg-glass-highlight); }
862
+ .rg-switch-thumb { background: radial-gradient(circle at 42% 30%, var(--rg-glass-highlight), transparent 32%), var(--rg-control-material); border-radius: 50%; }
863
+ .rg-check:has(input:checked) .rg-check-control, .rg-radio:has(input:checked) .rg-radio-control, .rg-switch:has(input:checked) .rg-switch-track { background: linear-gradient(180deg, var(--rg-primary-hover), var(--rg-primary)); border-color: var(--rg-primary); }
864
+
865
+ [data-ui="retro-glass"][data-mode] :where(fieldset) {
866
+ background: var(--rg-glass-pane);
867
+ border: 1px solid var(--rg-border);
868
+ border-radius: .42rem;
869
+ box-shadow: inset 0 1px 0 var(--rg-glass-highlight), 0 .32rem .7rem var(--rg-material-shadow);
870
+ }
871
+ [data-ui="retro-glass"][data-mode] :where(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="button"]):not([type="submit"]):not([type="reset"]), textarea, select) {
872
+ background: var(--rg-glass-inset);
873
+ border: 1px inset var(--rg-border);
874
+ border-radius: .28rem;
875
+ box-shadow: inset 0 2px 5px var(--rg-material-shadow), 0 1px 0 var(--rg-glass-highlight);
876
+ }
877
+ [data-ui="retro-glass"][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
878
+ background: var(--rg-control-material);
879
+ border: 1px solid var(--rg-border);
880
+ border-radius: .34rem;
881
+ box-shadow: inset 0 1px 0 var(--rg-glass-highlight), inset 0 -1px 0 rgb(var(--rg-text-rgb) / .08), 0 .16rem .38rem var(--rg-material-shadow);
882
+ text-shadow: var(--rg-control-text-shadow);
883
+ }
884
+
336
885
  @media (prefers-reduced-motion: reduce) {
337
886
  [data-ui="retro-glass"] *, [data-ui="retro-glass"] *::before, [data-ui="retro-glass"] *::after { scroll-behavior: auto !important; transition-duration: 1ms !important; animation-duration: 1ms !important; animation-iteration-count: 1 !important; }
338
887
  }
@@ -340,7 +889,7 @@
340
889
  [data-ui="retro-glass"] { --rg-border-alpha: 1; }
341
890
  }
342
891
  @media (forced-colors: active) {
343
- [data-ui="retro-glass"] * { forced-color-adjust: auto; }
892
+ @supports (forced-color-adjust: auto) { [data-ui="retro-glass"] * { forced-color-adjust: auto; } }
344
893
  [data-ui="retro-glass"] :where(:focus-visible) { outline: 3px solid CanvasText; box-shadow: none; }
345
894
  }
346
895
  @media print {
@@ -349,3 +898,282 @@
349
898
  [data-ui="retro-glass"] a { color: #000 !important; text-decoration: underline; }
350
899
  }
351
900
  }
901
+
902
+ @layer ui-style-kit.retro_glass {
903
+ /* Keeps semantic field states above preset-specific material paint. */
904
+ .rg-input[aria-invalid="true"], .rg-textarea[aria-invalid="true"], .rg-select[aria-invalid="true"] { border-color: var(--rg-danger); box-shadow: 0 0 0 2px rgb(var(--rg-danger-rgb) / .2); }
905
+ .rg-input[readonly], .rg-textarea[readonly] { border-style: dashed; filter: saturate(.72); opacity: .78; }
906
+ /* Restores semantic action paint after identity-specific geometry. */
907
+ .rg-button-primary { background: linear-gradient(180deg, rgb(var(--rg-surface-strong-rgb) / .55), transparent 52%), var(--rg-primary); color: var(--rg-on-primary); border-color: var(--rg-primary); }
908
+ .rg-button-secondary { background: linear-gradient(180deg, rgb(var(--rg-surface-strong-rgb) / .48), transparent 52%), var(--rg-secondary); color: var(--rg-on-secondary); border-color: var(--rg-secondary); }
909
+ .rg-button-danger { background: linear-gradient(180deg, rgb(var(--rg-surface-strong-rgb) / .42), transparent 52%), var(--rg-danger); color: var(--rg-on-danger); border-color: var(--rg-danger); }
910
+ .rg-button-ghost { background: transparent; color: var(--rg-primary); border-color: transparent; }
911
+ }
912
+
913
+ @layer ui-style-kit.retro_glass {
914
+ /* Shared annotation fidelity: readable display rhythm and appropriately scaled text icons. */
915
+ .rg-feature-item > .rg-icon-medallion { font-size: 1.5rem; line-height: 1; }
916
+ .rg-callout-bar > .rg-icon-medallion { min-inline-size: 4.5rem; min-block-size: 4.5rem; font-size: 2rem; font-weight: 800; line-height: 1; }
917
+ }
918
+
919
+ @layer ui-style-kit.retro_glass {
920
+ /**
921
+ * Implements the retained RetroGlass board's final material layer. Scheme colors
922
+ * remain semantic; reference lighting and dimensions belong to this preset.
923
+ */
924
+ [data-ui="retro-glass"][data-mode] {
925
+ --rg-radius-sm: 6px;
926
+ --rg-radius-md: 10px;
927
+ --rg-radius-lg: 14px;
928
+ --rg-space-5: 24px;
929
+ --rg-space-6: 32px;
930
+ --rg-control-height: 36px;
931
+ --rg-line-color: rgb(var(--rg-border-rgb) / .65);
932
+ --rg-line-strong: var(--rg-border);
933
+ --rg-surface-input: rgb(var(--usk-surface-strong-rgb, var(--rg-input-fallback-rgb)));
934
+ --rg-surface-raised: rgb(var(--rg-surface-strong-rgb));
935
+ --rg-canvas: var(--rg-bg);
936
+ --rg-text-soft: var(--rg-text-muted);
937
+ --rg-muted: var(--rg-text-muted);
938
+ --rg-highlight: var(--rg-glass-highlight);
939
+ --rg-recess: var(--rg-material-shadow);
940
+ --rg-glass-pane: linear-gradient(180deg, var(--rg-glass-midlight), transparent 18%), rgb(var(--rg-surface-rgb));
941
+ --rg-brushed-chrome: repeating-linear-gradient(0deg, transparent 0 1px, var(--rg-brush-line) 1px 2px), linear-gradient(180deg, var(--rg-glass-highlight), var(--rg-glass-midlight) 48%, rgb(var(--rg-border-rgb) / .48) 52%, rgb(var(--rg-surface-soft-rgb) / .5));
942
+ --rg-glass-inset: linear-gradient(180deg, rgb(0 0 0 / .12), transparent 18%), var(--rg-surface-input);
943
+ --rg-control-material: linear-gradient(180deg, var(--rg-glass-highlight), var(--rg-glass-midlight) 46%, rgb(0 0 0 / .16) 52%, transparent), var(--rg-surface-soft);
944
+ --rg-gloss-rgb: var(--rg-primary-rgb);
945
+ --rg-progress-stripe: rgb(255 255 255 / .24);
946
+ --rg-gloss-ink: rgb(var(--usk-primary-text-rgb, 255 255 255));
947
+ --rg-gloss: linear-gradient(180deg, rgb(255 255 255 / .4), transparent 18%, rgb(0 0 0 / .15) 46%, rgb(0 0 0 / .42) 52%, rgb(0 0 0 / .22)), rgb(var(--rg-gloss-rgb));
948
+ --rg-danger-gloss: linear-gradient(180deg, rgb(255 255 255 / .4), transparent 18%, rgb(0 0 0 / .15) 46%, rgb(0 0 0 / .42) 52%, rgb(0 0 0 / .22)), var(--rg-danger);
949
+ --rg-floating-shadow: inset 0 1px 0 var(--rg-highlight), 0 7px 18px rgb(0 0 0 / .24);
950
+ --usk-native-font-control: var(--rg-font-body);
951
+ --usk-native-control-min-block-size: var(--rg-control-height);
952
+ --usk-native-radius-sm: var(--rg-radius-sm);
953
+ --usk-native-radius: var(--rg-radius-md);
954
+ --usk-native-card-bg: var(--rg-glass-pane);
955
+ --usk-native-control-bg: var(--rg-glass-inset);
956
+ }
957
+ [data-ui="retro-glass"][data-mode="light"] { --rg-input-fallback-rgb: 248 250 252; }
958
+ [data-ui="retro-glass"][data-mode="dark"] { --rg-input-fallback-rgb: 7 21 29; }
959
+ [data-ui="retro-glass"][data-mode="contrast"] { --rg-input-fallback-rgb: 0 0 0; --rg-gloss-ink: var(--rg-on-primary); --rg-gloss: rgb(var(--rg-gloss-rgb)); --rg-line-color: var(--rg-border); }
960
+
961
+ /** Keep custom themes contrast-safe by restricting reflections to the edge. */
962
+ [data-ui="retro-glass"][data-theme][data-mode] {
963
+ --rg-gloss: linear-gradient(180deg, rgb(255 255 255 / .3), transparent 12%, transparent 48%, rgb(0 0 0 / .04) 52%, transparent), rgb(var(--rg-gloss-rgb));
964
+ --rg-danger-gloss: linear-gradient(180deg, rgb(255 255 255 / .3), transparent 12%, transparent 48%, rgb(0 0 0 / .04) 52%, transparent), var(--rg-danger);
965
+ }
966
+ .rg-title, .rg-heading { letter-spacing: 0; text-shadow: none; }
967
+ .rg-heading { font-size: 1.25rem; }
968
+ .rg-title { font-size: 2rem; }
969
+ .rg-kicker, .rg-label, .rg-overline { font: 700 12px/1.4 var(--rg-font-mono); letter-spacing: 0; text-transform: uppercase; color: var(--rg-text-soft); }
970
+ .rg-label { display: block; margin-block-end: 4px; }
971
+ .rg-overline { display: block; margin: 0 0 8px; }
972
+ .rg-section-title { display: flex; align-items: center; gap: 8px; margin: 0 0 16px; color: var(--rg-text); font: 800 14px/1.3 var(--rg-font-body); letter-spacing: 0; text-transform: uppercase; }
973
+ .rg-section-title::before { content: ""; flex: 0 0 10px; inline-size: 10px; block-size: 10px; border: 1px solid var(--rg-primary); border-radius: 50%; background: var(--rg-gloss); box-shadow: inset 0 1px 0 var(--rg-highlight); }
974
+ .rg-section-title::after { content: ""; flex: 0 0 34px; inline-size: 34px; block-size: 8px; margin-inline-start: auto; background: repeating-linear-gradient(90deg, var(--rg-line-color) 0 9px, transparent 9px 13px); }
975
+ .rg-card, .rg-panel { background: var(--rg-glass-pane); border: 1px solid var(--rg-line-color); border-radius: var(--rg-radius-md); box-shadow: inset 0 1px 0 var(--rg-highlight), 0 4px 0 rgb(0 0 0 / .12); clip-path: none; }
976
+ .rg-card::before, .rg-panel::before { content: none; }
977
+ .rg-toolbar { background: var(--rg-brushed-chrome), var(--rg-surface-soft); border-radius: var(--rg-radius-lg); }
978
+ .rg-button, .rg-icon-button, .rg-segment, .rg-pagination-page {
979
+ display: inline-flex; align-items: center; justify-content: center; gap: 8px;
980
+ min-height: var(--rg-control-height); min-block-size: var(--rg-control-height); padding: 8px 12px;
981
+ background: var(--rg-control-material); color: var(--rg-text); border: 1px solid var(--rg-line-strong);
982
+ border-radius: var(--rg-radius-sm); box-shadow: inset 0 1px 0 var(--rg-highlight), inset 0 -1px 0 rgb(0 0 0 / .18), 0 1px 2px rgb(0 0 0 / .22);
983
+ font: 700 14px/1.2 var(--rg-font-body); letter-spacing: 0; text-shadow: none; text-decoration: none;
984
+ cursor: pointer; clip-path: none; transition: background 150ms ease, box-shadow 150ms ease, transform 80ms ease;
985
+ }
986
+ .rg-icon-button { inline-size: var(--rg-control-height); padding: 8px; aspect-ratio: 1; }
987
+ .rg-button-primary { background: var(--rg-gloss); color: var(--rg-gloss-ink); border-color: var(--rg-primary); }
988
+ .rg-button-secondary { background: var(--rg-control-material); color: var(--rg-text); border-color: var(--rg-line-strong); }
989
+ .rg-button-danger { background: var(--rg-danger-gloss); color: rgb(var(--usk-danger-text-rgb, 255 255 255)); border-color: var(--rg-danger); }
990
+ /**
991
+ * Lets explicit runtime foreground edits win without changing the default
992
+ * Retro Glass danger gloss treatment used by the reference specimen.
993
+ */
994
+ [data-ui="retro-glass"][data-mode][style*="--rg-on-danger"] .rg-button-danger { color: var(--rg-on-danger); }
995
+ .rg-button-ghost { background: transparent; color: var(--rg-text-soft); border-color: var(--rg-line-color); box-shadow: none; }
996
+ .rg-button:hover, .rg-icon-button:hover, .rg-button.is-hover, .rg-segment:hover, .rg-pagination-page:hover { transform: none; border-color: var(--rg-focus); box-shadow: inset 0 1px 0 var(--rg-highlight), 0 0 0 1px var(--rg-focus); }
997
+ .rg-button:active, .rg-icon-button:active, .rg-button.is-pressed, .rg-button[aria-pressed="true"] { background: linear-gradient(180deg, rgb(0 0 0 / .22), rgb(255 255 255 / .1)), var(--rg-surface-soft); color: var(--rg-text); box-shadow: inset 0 2px 5px var(--rg-recess); transform: translateY(1px); }
998
+ .rg-button:disabled, .rg-icon-button:disabled, .rg-button.is-disabled { opacity: .4; filter: saturate(.45); cursor: not-allowed; box-shadow: none; }
999
+ .rg-field { display: block; min-inline-size: 0; }
1000
+ .rg-input, .rg-select, .rg-textarea { inline-size: 100%; min-block-size: var(--rg-control-height); padding: 8px 11px; background: var(--rg-glass-inset); color: var(--rg-text); border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-sm); box-shadow: inset 0 1px 3px var(--rg-recess), 0 1px 0 var(--rg-highlight); font: 14px/1.3 var(--rg-font-body); }
1001
+ .rg-select { padding-inline-end: 32px; background-image: var(--usk-native-select-indicator-image), linear-gradient(180deg, rgb(0 0 0 / .12), transparent 18%); background-size: var(--usk-native-select-indicator-size), auto; background-position: var(--usk-native-select-indicator-position), center; background-repeat: no-repeat; }
1002
+ .rg-textarea { min-block-size: 64px; resize: vertical; }
1003
+ .rg-input::placeholder, .rg-textarea::placeholder { color: var(--rg-muted); opacity: 1; }
1004
+ .rg-input-wrap { display: flex; align-items: center; position: relative; }
1005
+ .rg-input-wrap .rg-input { padding-inline-end: 36px; }
1006
+ .rg-input-icon { position: absolute; inset-inline-end: 11px; color: var(--rg-link); pointer-events: none; }
1007
+ .rg-helper, .rg-error-text { display: block; margin-block-start: 4px; color: var(--rg-text-soft); font: 12px/1.4 var(--rg-font-mono); }
1008
+ .rg-error-text { border-inline-start: 3px solid var(--rg-danger); padding-inline-start: 6px; }
1009
+ .rg-input.is-error, .rg-input[aria-invalid="true"], .rg-select[aria-invalid="true"], .rg-textarea[aria-invalid="true"] { border-color: var(--rg-danger); box-shadow: inset 0 1px 3px var(--rg-recess), 0 0 0 1px var(--rg-danger); }
1010
+ .rg-input.is-hover { border-color: var(--rg-focus); }
1011
+ .rg-input.is-focus { outline: 2px solid var(--rg-focus); outline-offset: 2px; }
1012
+ .rg-dropdown, .rg-popover, .rg-modal { padding: 12px; color: var(--rg-text); background: var(--rg-glass-pane); border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-md); box-shadow: var(--rg-floating-shadow); font: 14px/1.4 var(--rg-font-body); }
1013
+ .rg-dropdown { padding: 6px; border-color: var(--rg-focus); border-radius: var(--rg-radius-sm); }
1014
+ .rg-option { display: flex; align-items: center; justify-content: space-between; inline-size: 100%; min-block-size: 32px; padding: 6px 8px; background: transparent; border: 1px solid transparent; border-radius: 4px; color: var(--rg-text-soft); font: 14px/1.3 var(--rg-font-body); text-align: start; cursor: pointer; }
1015
+ .rg-option:hover, .rg-option.is-selected, .rg-option[aria-selected="true"] { background: var(--rg-gloss); color: var(--rg-gloss-ink); border-color: var(--rg-primary); }
1016
+ .rg-option:disabled { opacity: .4; cursor: not-allowed; }
1017
+ .rg-tags { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; min-block-size: 48px; padding: 8px; background: var(--rg-glass-inset); border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-sm); box-shadow: inset 0 1px 3px var(--rg-recess); }
1018
+ .rg-chip, .rg-badge { display: inline-flex; align-items: center; gap: 6px; min-block-size: 24px; padding: 4px 10px; border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-pill); background: var(--rg-surface-soft); color: var(--rg-text); box-shadow: inset 0 1px 0 var(--rg-highlight); font: 700 12px/1.2 var(--rg-font-body); letter-spacing: 0; text-transform: none; }
1019
+ /** Badges use the same saturated top-lit material as the matching action buttons. */
1020
+ .rg-badge { background: var(--rg-control-material); box-shadow: inset 0 1px 0 var(--rg-highlight), inset 0 -1px 0 rgb(0 0 0 / .18), 0 1px 2px rgb(0 0 0 / .22); }
1021
+ .rg-chip, .rg-badge-primary { background: var(--rg-gloss); border-color: var(--rg-primary); color: var(--rg-gloss-ink); }
1022
+ .rg-chip-danger { background: linear-gradient(rgb(var(--rg-danger-rgb) / .18), rgb(var(--rg-danger-rgb) / .18)), var(--rg-surface-raised); border-color: var(--rg-danger); color: var(--rg-text); }
1023
+ .rg-chip-warning { background: linear-gradient(rgb(var(--rg-warning-rgb) / .18), rgb(var(--rg-warning-rgb) / .18)), var(--rg-surface-raised); border-color: var(--rg-warning); color: var(--rg-text); }
1024
+ .rg-badge-success { background: linear-gradient(180deg, rgb(255 255 255 / .4), transparent 18%, rgb(0 0 0 / .15) 46%, rgb(0 0 0 / .42) 52%, rgb(0 0 0 / .22)), var(--rg-success); border-color: var(--rg-success); color: var(--rg-on-success); }
1025
+ .rg-badge-warning { background: linear-gradient(180deg, rgb(255 255 255 / .4), transparent 18%, rgb(0 0 0 / .15) 46%, rgb(0 0 0 / .42) 52%, rgb(0 0 0 / .22)), var(--rg-warning); border-color: var(--rg-warning); color: var(--rg-on-warning); }
1026
+ .rg-badge-danger { background: linear-gradient(180deg, rgb(255 255 255 / .4), transparent 18%, rgb(0 0 0 / .15) 46%, rgb(0 0 0 / .42) 52%, rgb(0 0 0 / .22)), var(--rg-danger); border-color: var(--rg-danger); color: var(--rg-on-danger); }
1027
+ .rg-chip { cursor: pointer; }
1028
+ .rg-file { display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 8px; position: relative; min-block-size: 112px; padding: 16px; border: 1px dashed var(--rg-line-strong); border-radius: var(--rg-radius-md); background: var(--rg-glass-inset); color: var(--rg-text-soft); box-shadow: inset 0 1px 3px var(--rg-recess); text-align: center; font: 14px/1.4 var(--rg-font-body); cursor: pointer; }
1029
+ .rg-file strong { color: var(--rg-link); }
1030
+ .rg-file input[type="file"] { position: absolute; inset: 0; inline-size: 100%; block-size: 100%; opacity: 0; cursor: pointer; }
1031
+ .rg-file:focus-within { outline: 2px solid var(--rg-focus); outline-offset: 2px; }
1032
+ .rg-choice, .rg-switch { display: inline-flex; align-items: center; gap: 8px; position: relative; min-block-size: 32px; color: var(--rg-text-soft); font: 14px/1.3 var(--rg-font-body); cursor: pointer; }
1033
+ .rg-choice input { accent-color: var(--rg-primary); inline-size: 18px; block-size: 18px; flex: 0 0 18px; margin: 0; }
1034
+ /** Disabled labels stay readable; the native state and dashed edge carry the distinction. */
1035
+ .rg-choice:has(:disabled), .rg-switch:has(:disabled) { opacity: 1; color: var(--rg-text-soft); cursor: not-allowed; }
1036
+ .rg-choice input:disabled { opacity: 1; border: 1px dashed var(--rg-line-strong); background: var(--rg-surface-soft); box-shadow: none; }
1037
+ .rg-choice input:disabled:not(:checked) { appearance: none; }
1038
+ .rg-choice input.is-focus { outline: 2px solid var(--rg-focus); outline-offset: 2px; }
1039
+ .rg-switch input { position: absolute; inset: 0; inline-size: 100%; block-size: 100%; opacity: 0; z-index: 1; cursor: inherit; }
1040
+ .rg-switch-track { display: inline-flex; align-items: center; inline-size: 42px; block-size: 22px; padding: 2px; border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-pill); background: var(--rg-glass-inset); box-shadow: inset 0 1px 3px var(--rg-recess); }
1041
+ .rg-switch-thumb { inline-size: 16px; block-size: 16px; border-radius: 50%; border: 1px solid var(--rg-line-strong); background: var(--rg-control-material); box-shadow: inset 0 1px 0 var(--rg-highlight), 0 1px 2px rgb(0 0 0 / .35); transition: transform 150ms ease; }
1042
+ .rg-switch input:checked + .rg-switch-track { background: var(--rg-gloss); border-color: var(--rg-primary); }
1043
+ .rg-switch input:checked + .rg-switch-track .rg-switch-thumb { transform: translateX(18px); }
1044
+ .rg-switch:has(input:disabled) .rg-switch-track { background: var(--rg-surface-soft); border: 1px dashed var(--rg-line-strong); box-shadow: none; filter: saturate(.35); }
1045
+ .rg-switch:has(input:disabled) .rg-switch-thumb { opacity: .58; box-shadow: none; }
1046
+ .rg-switch input:focus-visible + .rg-switch-track { outline: 2px solid var(--rg-focus); outline-offset: 2px; }
1047
+ .rg-segmented { display: inline-flex; flex-wrap: wrap; gap: 4px; }
1048
+ .rg-segment { font-size: 12px; }
1049
+ .rg-segment.is-active, .rg-segment[aria-pressed="true"], .rg-pagination-page[aria-current="page"] { background: var(--rg-gloss); color: var(--rg-gloss-ink); border-color: var(--rg-primary); }
1050
+ .rg-range { --usk-native-range-track-background: linear-gradient(90deg, var(--rg-primary) 0 var(--rg-value, 58%), var(--rg-surface-input) var(--rg-value, 58%) 100%); inline-size: 100%; min-block-size: 32px; padding: 0; margin: 0; appearance: none; background: transparent; border: 0; }
1051
+ .rg-range-critical { --usk-native-range-track-background: linear-gradient(90deg, var(--rg-success) 0 45%, var(--rg-warning) 45% 72%, var(--rg-danger) 72% 100%); }
1052
+ .rg-range::-webkit-slider-runnable-track { height: 7px; border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-pill); background: var(--usk-native-range-track-background); box-shadow: inset 0 1px 2px var(--rg-recess); }
1053
+ .rg-range::-moz-range-track { height: 7px; border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-pill); background: var(--usk-native-range-track-background); box-shadow: inset 0 1px 2px var(--rg-recess); }
1054
+ .rg-range::-moz-range-progress { background: transparent; }
1055
+ .rg-range::-webkit-slider-thumb { appearance: none; inline-size: 19px; block-size: 19px; margin-top: -7px; border: 1px solid var(--rg-line-strong); border-radius: 50%; background: var(--rg-control-material); box-shadow: inset 0 1px 0 var(--rg-highlight), 0 1px 3px rgb(0 0 0 / .4); }
1056
+ .rg-range::-moz-range-thumb { inline-size: 19px; block-size: 19px; border: 1px solid var(--rg-line-strong); border-radius: 50%; background: var(--rg-control-material); box-shadow: inset 0 1px 0 var(--rg-highlight), 0 1px 3px rgb(0 0 0 / .4); }
1057
+ .rg-progress { block-size: 12px; padding: 2px; border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-pill); background: var(--rg-glass-inset); box-shadow: inset 0 1px 3px var(--rg-recess); overflow: hidden; }
1058
+ .rg-progress-bar { display: block; block-size: 100%; inline-size: var(--rg-progress-value, 64%); border-radius: inherit; background: repeating-linear-gradient(125deg, var(--rg-progress-stripe) 0 1px, transparent 1px 16px), var(--rg-progress-fill, var(--rg-gloss)); box-shadow: inset 0 1px 0 var(--rg-highlight); }
1059
+ .rg-progress-danger { --rg-progress-fill: var(--rg-danger-gloss); }
1060
+ .rg-meter { position: relative; block-size: 8px; margin-block: 12px; border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-pill); background: linear-gradient(90deg, var(--rg-success) 0 46%, var(--rg-warning) 46% 72%, var(--rg-danger) 72% 100%); }
1061
+ .rg-meter::after { content: ""; position: absolute; inset-inline-start: clamp(0%, var(--rg-value, 72%), 100%); inset-block-start: 50%; inline-size: 18px; block-size: 18px; transform: translate(-50%, -50%); border: 1px solid var(--rg-line-strong); border-radius: 50%; background: var(--rg-control-material); box-shadow: inset 0 1px 0 var(--rg-highlight), 0 1px 3px rgb(0 0 0 / .4); }
1062
+ .rg-stepper { display: flex; align-items: start; justify-content: space-between; position: relative; list-style: none; margin: 16px 0 0; padding: 0; }
1063
+ /** Centers the connector after the list item's compact line leading is applied. */
1064
+ .rg-stepper::before { content: ""; position: absolute; inset-inline: 12%; inset-block-start: 15px; block-size: 2px; background: var(--rg-line-strong); }
1065
+ .rg-step { position: relative; flex: 1; color: var(--rg-text-soft); text-align: center; font: 12px/1.4 var(--rg-font-mono); }
1066
+ .rg-step b { display: flex; align-items: center; justify-content: center; inline-size: 24px; block-size: 24px; margin: 0 auto 8px; background: var(--rg-surface-soft); border: 1px solid var(--rg-line-strong); border-radius: 50%; }
1067
+ .rg-step.is-complete b { background: var(--rg-gloss); color: var(--rg-gloss-ink); border-color: var(--rg-primary); }
1068
+ .rg-step.is-active b { background: var(--rg-surface-input); color: var(--rg-link); border: 2px solid var(--rg-primary); }
1069
+ .rg-alert { display: flex; align-items: center; gap: 8px; min-block-size: 40px; padding: 8px; border: 1px solid var(--rg-primary); border-radius: var(--rg-radius-sm); background: var(--rg-glass-pane); color: var(--rg-text-soft); box-shadow: inset 0 1px 0 var(--rg-highlight); font: 14px/1.4 var(--rg-font-body); }
1070
+ .rg-alert-body { margin: 0; }
1071
+ .rg-alert-success { border-color: var(--rg-success); }
1072
+ .rg-alert-warning { border-color: var(--rg-warning); }
1073
+ .rg-alert-danger { border-color: var(--rg-danger); }
1074
+ .rg-alert > [aria-hidden="true"] { color: var(--rg-primary); }
1075
+ .rg-alert-success > [aria-hidden="true"] { color: var(--rg-success); }
1076
+ .rg-alert-warning > [aria-hidden="true"] { color: var(--rg-warning); }
1077
+ .rg-alert-danger > [aria-hidden="true"] { color: var(--rg-danger); }
1078
+ .rg-toast { display: flex; align-items: center; gap: 12px; padding: 12px; border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-md); background: var(--rg-glass-pane); color: var(--rg-text); box-shadow: inset 0 1px 0 var(--rg-highlight); }
1079
+ .rg-toast strong { display: block; font: 700 14px/1.4 var(--rg-font-mono); }
1080
+ .rg-toast p { margin: 4px 0 0; color: var(--rg-text-soft); font: 14px/1.4 var(--rg-font-body); }
1081
+ .rg-skeleton { display: block; block-size: 10px; inline-size: 100%; border-radius: var(--rg-radius-pill); background: linear-gradient(90deg, var(--rg-surface-soft), rgb(var(--rg-text-rgb) / .12), var(--rg-surface-soft)); background-size: 200% 100%; animation: rg-template-pulse 1.5s ease-in-out infinite; }
1082
+ .rg-breadcrumb, .rg-tabs, .rg-pagination { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
1083
+ .rg-breadcrumb { color: var(--rg-text-soft); font: 12px/1.4 var(--rg-font-mono); }
1084
+ .rg-breadcrumb a { color: var(--rg-text-soft); }
1085
+ .rg-breadcrumb [aria-current] { color: var(--rg-link); font-weight: 700; }
1086
+ .rg-tab { min-block-size: var(--rg-control-height); padding: 8px 12px; background: transparent; border: 0; border-bottom: 2px solid var(--rg-line-strong); border-radius: 6px 6px 0 0; color: var(--rg-text-soft); font: 700 12px/1.4 var(--rg-font-mono); cursor: pointer; }
1087
+ .rg-tab:hover, .rg-tab.is-active, .rg-tab[aria-selected="true"] { background: linear-gradient(rgb(var(--rg-primary-rgb) / .2), rgb(var(--rg-primary-rgb) / .2)), var(--rg-surface-input); border-bottom-color: var(--rg-primary); color: var(--rg-text); }
1088
+ .rg-pagination-page { min-inline-size: 36px; padding: 8px; font-size: 12px; }
1089
+ .rg-nav { padding: 0; background: transparent; border: 0; box-shadow: none; gap: 6px; }
1090
+ .rg-nav-link { min-block-size: var(--rg-control-height); padding: 8px 12px; background: var(--rg-control-material); border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-sm); color: var(--rg-text-soft); text-shadow: none; letter-spacing: 0; }
1091
+ .rg-nav-link:hover { color: var(--rg-text); background: var(--rg-control-material); }
1092
+ .rg-nav-link.is-active, .rg-nav-link[aria-current="page"] { background: var(--rg-gloss); color: var(--rg-gloss-ink); box-shadow: inset 0 1px 0 var(--rg-highlight); }
1093
+ .rg-table-wrap { background: transparent; border: 0; box-shadow: none; }
1094
+ .rg-table { border-collapse: collapse; color: var(--rg-text-soft); font: 14px/1.4 var(--rg-font-body); }
1095
+ .rg-table th { padding: 8px; background: linear-gradient(180deg, rgb(var(--rg-surface-strong-rgb) / .15), transparent); color: var(--rg-text-soft); font: 700 12px/1.4 var(--rg-font-mono); text-shadow: none; }
1096
+ .rg-table td { padding: 8px; border-block-start: 1px solid var(--rg-line-color); }
1097
+ .rg-avatar { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 34px; inline-size: 34px; block-size: 34px; border: 2px solid var(--rg-surface-raised); border-radius: 50%; background: var(--rg-gloss); color: var(--rg-gloss-ink); box-shadow: 0 1px 3px rgb(0 0 0 / .3); font: 700 12px/1 var(--rg-font-body); }
1098
+ .rg-avatar-danger { background: var(--rg-danger-gloss); color: rgb(var(--usk-danger-text-rgb, 255 255 255)); }
1099
+ .rg-avatar-neutral { background: var(--rg-surface-soft); color: var(--rg-text); }
1100
+ .rg-avatar-group { display: flex; padding-inline-start: 7px; }
1101
+ .rg-avatar-group .rg-avatar { margin-inline-start: -7px; }
1102
+ .rg-list { padding-inline-start: 20px; margin: 0; color: var(--rg-text-soft); font: 14px/1.5 var(--rg-font-body); }
1103
+ .rg-list li { padding: 4px 0; }
1104
+ .rg-list li::marker { color: var(--rg-link); }
1105
+ .rg-tooltip, [data-ui="retro-glass"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) { padding: 12px; max-inline-size: 100%; background: var(--rg-text); color: var(--rg-bg); border: 1px solid var(--rg-focus); border-radius: var(--rg-radius-sm); box-shadow: none; font: 700 12px/1.4 var(--rg-font-mono); letter-spacing: 0; }
1106
+ .rg-modal { max-inline-size: min(440px, calc(100vw - 32px)); }
1107
+ .rg-modal::backdrop { background: rgb(var(--rg-bg-rgb) / .7); }
1108
+ .rg-modal h3, .rg-popover strong { margin: 0 0 8px; color: var(--rg-text); font: 700 14px/1.4 var(--rg-font-mono); }
1109
+ .rg-modal p, .rg-popover p { margin: 0 0 12px; color: var(--rg-text-soft); }
1110
+ .rg-modal-actions { display: flex; flex-wrap: wrap; justify-content: end; gap: 8px; }
1111
+ .rg-accordion { margin: 0; padding: 0; background: var(--rg-glass-inset); border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-sm); color: var(--rg-text); }
1112
+ .rg-accordion summary { min-block-size: 36px; padding: 10px 12px; font: 700 12px/1.4 var(--rg-font-mono); cursor: pointer; }
1113
+ .rg-accordion p { margin: 0; padding: 4px 12px 12px; color: var(--rg-text-soft); font: 14px/1.4 var(--rg-font-body); }
1114
+ .rg-code { display: block; margin: 0; padding: 12px; border-inline-start: 3px solid var(--rg-primary); border-radius: var(--rg-radius-sm); background: var(--rg-glass-inset); color: var(--rg-text-soft); white-space: pre-wrap; overflow-wrap: break-word; font: 12px/1.5 var(--rg-font-mono); }
1115
+ .rg-quote { margin: 0; padding: 8px 12px; border-inline-start: 3px solid var(--rg-primary); color: var(--rg-text-soft); font: italic 14px/1.5 var(--rg-font-body); }
1116
+ .rg-token-swatch { display: inline-flex; flex-direction: column; gap: 6px; min-inline-size: 46px; color: var(--rg-text-soft); font: 12px/1.3 var(--rg-font-mono); }
1117
+ .rg-token-swatch i { display: block; inline-size: 46px; block-size: 28px; border: 1px solid var(--rg-line-strong); border-radius: var(--rg-radius-sm); background: var(--rg-token-swatch-color, var(--rg-primary)); box-shadow: inset 0 1px 0 rgb(255 255 255 / .5), 0 1px 3px rgb(0 0 0 / .22); }
1118
+ .rg-spinner::before, .rg-spinner::after, .rg-loading-spinner::before, .rg-loading-spinner::after { content: none; }
1119
+ /** Marketing surfaces keep an opaque material and their own foreground pair. */
1120
+ .rg-icon-medallion { background: var(--rg-gloss); color: var(--rg-gloss-ink); border-color: var(--rg-line-strong); box-shadow: inset 0 1px 0 var(--rg-highlight), 0 2px 4px var(--rg-recess); }
1121
+ .rg-card-service > .rg-icon-medallion { font-size: 32px; font-weight: 800; }
1122
+ .rg-badge-seal { background: var(--rg-control-material); color: var(--rg-text); border-color: var(--rg-line-strong); box-shadow: inset 0 1px 0 var(--rg-highlight), 0 2px 4px var(--rg-recess); font-size: .78rem; }
1123
+ .rg-badge-seal > :where(strong, small) { color: inherit; opacity: 1; }
1124
+ [data-ui="retro-glass"][data-mode] :where(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="button"]):not([type="submit"]):not([type="reset"]), textarea, select) { border-radius: var(--rg-radius-sm); }
1125
+ [data-ui="retro-glass"][data-mode] :where(input[aria-invalid="true"], textarea[aria-invalid="true"], select[aria-invalid="true"]) { border-color: var(--rg-danger); box-shadow: inset 0 2px 5px var(--rg-material-shadow), 0 0 0 1px var(--rg-danger); }
1126
+ [data-ui="retro-glass"][data-mode] :where(input[readonly]:not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]), textarea[readonly]) { border-style: dashed; filter: saturate(.72); opacity: .78; }
1127
+ .rg-choice input[type="checkbox"] { appearance: auto; }
1128
+ .rg-choice input[type="checkbox"]::before, .rg-choice input[type="checkbox"]::after { content: none; }
1129
+ [data-ui="retro-glass"] :focus-visible { outline: 2px solid var(--rg-focus); outline-offset: 2px; }
1130
+ @keyframes rg-template-pulse { 50% { background-position: -100% 0; } }
1131
+ @media (any-pointer: coarse) {
1132
+ .rg-button, .rg-icon-button, .rg-segment, .rg-pagination-page, .rg-option, .rg-tab, .rg-choice, .rg-switch, .rg-range, .rg-chip { min-block-size: 44px; }
1133
+ .rg-icon-button, .rg-pagination-page { min-inline-size: 44px; }
1134
+ .rg-accordion summary { min-block-size: 44px; }
1135
+ }
1136
+ @media (prefers-reduced-motion: reduce) {
1137
+ .rg-skeleton, .rg-spinner, .rg-loading-spinner,
1138
+ [data-ui="retro-glass"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]),
1139
+ .rg-button[aria-busy="true"]::after, .rg-icon-button[aria-busy="true"]::after,
1140
+ [data-ui="retro-glass"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"])::after { animation: none; }
1141
+ }
1142
+ @media (forced-colors: active) {
1143
+ .rg-switch input { position: static; opacity: 1; inline-size: 20px; block-size: 20px; }
1144
+ .rg-switch-track { display: none; }
1145
+ .rg-range { appearance: auto; }
1146
+ .rg-step b, .rg-progress { border-color: CanvasText; }
1147
+ .rg-step.is-complete b, .rg-progress-bar { background: Highlight; color: HighlightText; }
1148
+ }
1149
+ /** Warning actions inherit preset geometry and use the paired semantic warning colors. */
1150
+ [data-ui="retro-glass"][data-mode] .rg-button.rg-button-warning {
1151
+ background: var(--rg-warning);
1152
+ color: var(--rg-on-warning);
1153
+ border-color: var(--rg-warning);
1154
+ text-shadow: none;
1155
+ }
1156
+
1157
+ }
1158
+
1159
+ /**
1160
+ * Preserves shared annotation fixture spacing and icon weight after reference
1161
+ * overrides append their compact source rules.
1162
+ */
1163
+ [data-ui="retro-glass"][data-mode] .rg-title {
1164
+ margin-block: max(.75rem, 12px);
1165
+ letter-spacing: max(.06em, .5px);
1166
+ }
1167
+
1168
+ [data-ui="retro-glass"][data-mode] .rg-feature-item > .rg-icon-medallion {
1169
+ font-size: 1.5rem;
1170
+ line-height: 1;
1171
+ }
1172
+
1173
+ [data-ui="retro-glass"][data-mode] .rg-callout-bar > .rg-icon-medallion {
1174
+ min-inline-size: 4.5rem;
1175
+ min-block-size: 4.5rem;
1176
+ font-size: 2rem;
1177
+ font-weight: 800;
1178
+ line-height: 1;
1179
+ }