ui-style-kit-css 2.0.2 → 2.0.4

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 (44) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +61 -14
  3. package/STYLE-MAP.md +9 -1
  4. package/dist/ui-style-kit.css +311 -15
  5. package/dist/ui-style-kit.min.css +6 -1
  6. package/dist/ui-style-kit.with-bridge.css +311 -15
  7. package/dist/ui-style-kit.with-bridge.min.css +6 -1
  8. package/docs/ECOSYSTEM.md +58 -0
  9. package/docs/PUBLISHING.md +10 -3
  10. package/package.json +9 -4
  11. package/styles/bauhaus.css +1 -0
  12. package/styles/bento.css +1 -0
  13. package/styles/brutalism.css +6 -5
  14. package/styles/content-overflow.css +292 -0
  15. package/styles/cyberpunk.css +3 -2
  16. package/styles/maximalist.css +1 -0
  17. package/styles/minimal-saas.css +1 -0
  18. package/styles/native-elements.css +3 -2
  19. package/styles/neumorphism.css +1 -0
  20. package/styles/retro-glass.css +3 -2
  21. package/styles/retrofuturism.css +1 -0
  22. package/styles/tactile.css +1 -0
  23. package/styles/y2k.css +3 -2
  24. package/demo/assets/README.md +0 -23
  25. package/demo/assets/android-chrome-192x192.png +0 -0
  26. package/demo/assets/android-chrome-512x512.png +0 -0
  27. package/demo/assets/apple-touch-icon.png +0 -0
  28. package/demo/assets/browserconfig.xml +0 -9
  29. package/demo/assets/favicon-128x128.png +0 -0
  30. package/demo/assets/favicon-16x16.png +0 -0
  31. package/demo/assets/favicon-256x256.png +0 -0
  32. package/demo/assets/favicon-32x32.png +0 -0
  33. package/demo/assets/favicon-384x384.png +0 -0
  34. package/demo/assets/favicon-48x48.png +0 -0
  35. package/demo/assets/favicon-64x64.png +0 -0
  36. package/demo/assets/favicon-96x96.png +0 -0
  37. package/demo/assets/favicon-head-snippet.html +0 -11
  38. package/demo/assets/favicon-master-1024.png +0 -0
  39. package/demo/assets/favicon.ico +0 -0
  40. package/demo/assets/favicon.svg +0 -26
  41. package/demo/assets/mstile-150x150.png +0 -0
  42. package/demo/assets/safari-pinned-tab.svg +0 -3
  43. package/demo/assets/site.webmanifest +0 -25
  44. package/demo/index.html +0 -1135
package/CHANGELOG.md CHANGED
@@ -2,6 +2,46 @@
2
2
 
3
3
  All notable changes to **UI Style Kit CSS** will be documented here.
4
4
 
5
+ ## [2.0.4] - 2026-07-20
6
+
7
+ ### Added
8
+
9
+ - Restored the exported `content-overflow.css` shared layer for standalone style imports.
10
+ - Added rendered regression coverage for long text containment and responsive orientation checks across mobile, tablet, desktop, portrait, and landscape viewports.
11
+
12
+ ### Changed
13
+
14
+ - Replaced the regex minifier with exactly pinned Lightning CSS parsing while preserving generated bundle banners and entry points.
15
+ - Aligned package metadata, generated bundle banners, demo structured data, and release documentation to `2.0.4`.
16
+ - Reconnected every standalone UI preset to the shared content-overflow layer so long words, URLs, and token strings stay inside layout wrappers.
17
+
18
+ ### Fixed
19
+
20
+ - Preserved descendant combinators and required whitespace around binary operators in generated `calc()` values.
21
+ - Moved `::file-selector-button` and `::backdrop` outside `:where()` arguments so Chromium accepts and applies the native rules.
22
+ - Routed Brutalism, Cyberpunk, Y2K, and Retro Glass status foregrounds through their documented `on-success`, `on-warning`, and `on-danger` tokens.
23
+
24
+ ## [2.0.3] - 2026-07-11
25
+
26
+ ### Added
27
+
28
+ - Added an active theme and mode token workbench to the demo for editing concrete `--usk-*-rgb` values live and copying drop-in theme override CSS.
29
+ - Added copy buttons with clipboard icons and tooltips to demo code blocks.
30
+ - Added README Mermaid diagrams for the three-library ecosystem and the shared token flow.
31
+ - Added demo resource links for GitHub, GitHub Wiki, npm, Interactive Surface CSS, and Layout Style CSS.
32
+ - Added search, social sharing, web manifest, sitemap, and structured-data metadata for the published demo.
33
+
34
+ ### Changed
35
+
36
+ - Aligned package metadata for `2.0.3` after the manual `2.0.2` npm release.
37
+ - Split duplicated demo CSS and JavaScript into shared `demo/demo.css` and `demo/demo.js` entrypoint assets.
38
+ - Expanded stylelint coverage to include extracted demo CSS.
39
+ - Updated the demo HTML with static fallback content so crawlers and no-JavaScript users can read the core library description before JavaScript renders the interactive showcase.
40
+
41
+ ### Removed
42
+
43
+ - Removed unused tracked image assets and stale local release/test artifacts from the repo.
44
+
5
45
  ## [2.0.2] - 2026-07-08
6
46
 
7
47
  ### Added
package/README.md CHANGED
@@ -9,17 +9,62 @@ It is separate from, but complementary to, **Interactive Surface CSS**. Use **UI
9
9
 
10
10
  ## Current Release
11
11
 
12
- `v2.0.2` is the current v2 patch release. It keeps the `v2.0.1` shared color-scheme and native-element model, documents the public UI-system contracts more clearly, and refreshes development tooling without changing the CSS API.
12
+ `v2.0.4` is the current v2 correctness patch. It adds parser-based minification, restores valid native file-button and modal-backdrop styling, routes status foregrounds through semantic `on-*` tokens, and retains the shared content-overflow and responsive coverage work without changing the CSS API.
13
13
 
14
14
  [Showcase website](https://foscat.github.io/ui-style-kit-css/)
15
15
 
16
+ ## How the library fits together
17
+
18
+ UI Style Kit CSS owns visual identity: themes, component paint, native HTML styling, and the prefixed class API. It can be used alone, or paired with the sibling libraries when a project needs structural layout primitives or richer interaction-state behavior.
19
+
20
+ ```mermaid
21
+ flowchart LR
22
+ App["Application markup"] --> Attrs["data-ui + data-theme + data-mode"]
23
+ Attrs --> USK["ui-style-kit-css"]
24
+ USK --> Themes["Shared --usk-* theme roles"]
25
+ USK --> Components["Prefixed component classes"]
26
+ USK --> Native["Scoped native HTML fallback"]
27
+ Layout["layout-style-css"] --> App
28
+ Surface["interactive-surface-css"] --> Bridge["Optional bridge bundle"]
29
+ Bridge --> USK
30
+ Components --> UI["Branded UI surface"]
31
+ Native --> UI
32
+ Themes --> UI
33
+ ```
34
+
35
+ ```mermaid
36
+ flowchart TB
37
+ Theme["styles/theme-colors.css"] --> Rgb["Concrete --usk-*-rgb channels"]
38
+ Rgb --> Modes["Light, dark, and contrast modes"]
39
+ Modes --> Prefixes["Per-style prefixed aliases"]
40
+ Prefixes --> Rules["Component, utility, and native rules"]
41
+ Demo["Demo token workbench"] --> Overrides["Copyable :where([data-ui][data-theme][data-mode]) override block"]
42
+ Overrides --> Rgb
43
+ ```
44
+
45
+ The demo page documents this flow directly: it shows computed RGB color tokens for the active theme and mode, lets developers edit them live, and copies the exact override block to drop into an app stylesheet.
46
+
47
+ ## Ecosystem compatibility
48
+
49
+ These libraries stay standalone, but the current aligned set is:
50
+
51
+ | Library | Aligned version | Owns |
52
+ |---|---:|---|
53
+ | `ui-style-kit-css@2.0.4` | source release target | visual identity, color themes, UI paint, native HTML styling, content wrapping, and bridge tokens |
54
+ | `interactive-surface-css@1.3.0` | latest published sibling | interaction-state primitives, surface behavior, state layers, and input affordances |
55
+ | `layout-style-css@1.1.2` | latest published sibling | structural wrappers, grids, sections, app shells, and layout recipes |
56
+
57
+ Use one, two, or all three depending on the project. UI Style Kit does not require the sibling libraries, and the optional bridge only maps shared `--usk-*` roles into Interactive Surface tokens when consumers import it.
58
+
59
+ For import order, ownership boundaries, and adoption paths, see the [Ecosystem guide](docs/ECOSYSTEM.md).
60
+
16
61
  ## Features
17
62
 
18
63
  - 11 UI style systems
19
64
  - 10 shared color schemes
20
65
  - `light`, `dark`, and `contrast` modes
21
66
  - Combined CSS bundle and per-style production imports
22
- - Shared `theme-colors.css` scheme layer and `native-elements.css` fallback layer for all UI systems
67
+ - Shared `theme-colors.css`, `native-elements.css`, and `content-overflow.css` layers for all UI systems
23
68
  - Scoped native HTML element coverage, including semantic containers and inline text elements
24
69
  - Visible `:focus-visible` defaults
25
70
  - Skip-link and visually-hidden helpers per style prefix
@@ -46,11 +91,12 @@ Use a single style import for production apps that use one visual system:
46
91
  import "ui-style-kit-css/minimal-saas.css";
47
92
  ```
48
93
 
49
- In `v2.0.2`, standalone style files import the shared color-scheme layer from `styles/theme-colors.css` and the shared native-element fallback layer from `styles/native-elements.css`. Bundlers that understand CSS `@import` will resolve them automatically. If your build pipeline does not resolve CSS imports, import the shared dependencies before the style file:
94
+ In `v2.0.4`, standalone style files import the shared color-scheme layer from `styles/theme-colors.css`, the shared native-element fallback layer from `styles/native-elements.css`, and the shared content-overflow layer from `styles/content-overflow.css`. Bundlers that understand CSS `@import` will resolve them automatically. If your build pipeline does not resolve CSS imports, import the shared dependencies before the style file:
50
95
 
51
96
  ```js
52
97
  import "ui-style-kit-css/theme-colors.css";
53
98
  import "ui-style-kit-css/native-elements.css";
99
+ import "ui-style-kit-css/content-overflow.css";
54
100
  import "ui-style-kit-css/minimal-saas.css";
55
101
  ```
56
102
 
@@ -88,24 +134,25 @@ When the bridge is attached, add `.interactive-surface` to interactable elements
88
134
 
89
135
  | Import | Raw | Gzip | Best for |
90
136
  |---|---:|---:|---|
91
- | `ui-style-kit-css/dist/ui-style-kit.min.css` | ~269 KB | ~34 KB | Runtime UI-system switchers and demos |
92
- | `ui-style-kit-css/with-bridge.css` | ~331 KB | ~39 KB | Runtime switchers plus Interactive Surface bridge |
137
+ | `ui-style-kit-css/dist/ui-style-kit.min.css` | ~271 KB | ~35 KB | Runtime UI-system switchers and demos |
138
+ | `ui-style-kit-css/with-bridge.css` | ~339 KB | ~40 KB | Runtime switchers plus Interactive Surface bridge |
93
139
  | `ui-style-kit-css/theme-colors.css` | ~25 KB | ~3 KB | Shared color schemes for standalone style imports |
94
140
  | `ui-style-kit-css/native-elements.css` | ~13 KB | ~2 KB | Shared native HTML fallback styling |
141
+ | `ui-style-kit-css/content-overflow.css` | ~7 KB | ~1 KB | Shared long-text containment for standalone style imports |
95
142
  | Single style imports | ~26-28 KB | ~5-6 KB | Production apps with one visual system |
96
143
 
97
144
  ## CDN usage
98
145
 
99
- After publishing to NPM:
146
+ Use the latest published NPM package:
100
147
 
101
148
  ```html
102
149
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui-style-kit-css@latest/dist/ui-style-kit.min.css" />
103
150
  ```
104
151
 
105
- For production, pin a version:
152
+ For production today, pin the latest published patch. Update this pin to `2.0.4` after that release is published:
106
153
 
107
154
  ```html
108
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui-style-kit-css@2.0.2/dist/ui-style-kit.min.css" />
155
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui-style-kit-css@2.0.3/dist/ui-style-kit.min.css" />
109
156
  ```
110
157
 
111
158
  ## Basic usage
@@ -178,6 +225,8 @@ contrast
178
225
 
179
226
  `styles/native-elements.css` owns the shared native selectors under `[data-ui][data-theme][data-mode]`. Each style system maps those selectors to its visual identity through `--usk-native-*` tokens, so native controls keep the same coverage while inheriting each preset's radius, shadows, borders, typography, and color surfaces.
180
227
 
228
+ `styles/content-overflow.css` owns the shared text containment contract under `[data-ui][data-theme][data-mode]`. It keeps headings, paragraphs, links, table cells, controls, badges, nav links, and common UI wrappers from widening their parent wrapper when content contains long words, hashes, URLs, or copyable tokens.
229
+
181
230
  The shared native layer covers common native elements, including:
182
231
 
183
232
  - semantic containers: `main`, `section`, `header`, `footer`, `nav`, `article`, `aside`, `address`
@@ -277,6 +326,7 @@ ui-style-kit-css/
277
326
  styles/
278
327
  theme-colors.css
279
328
  native-elements.css
329
+ content-overflow.css
280
330
  minimal-saas.css
281
331
  bento.css
282
332
  maximalist.css
@@ -293,13 +343,10 @@ ui-style-kit-css/
293
343
  TOKENS.md
294
344
  STYLE-GUIDE.md
295
345
  PUBLISHING.md
296
- demo/
297
- index.html
298
- assets/
299
- favicon.svg
300
- site.webmanifest
301
346
  ```
302
347
 
348
+ The checked-in demo, favicon pack, and social preview image stay in the repository for GitHub Pages, but they are intentionally excluded from the npm tarball so installs only receive the CSS library, docs, and metadata.
349
+
303
350
  ## Development checks
304
351
 
305
352
  ```bash
@@ -315,7 +362,7 @@ The `v2.0.1` release line removes duplicated per-UI color-scheme blocks. Color s
315
362
 
316
363
  - Use `--usk-*-rgb` when defining or overriding a color scheme.
317
364
  - Continue using prefixed functional tokens such as `--saas-primary`, `--neo-card-bg`, and `--rg-on-primary` inside components.
318
- - Import `ui-style-kit-css/theme-colors.css` and `ui-style-kit-css/native-elements.css` before standalone style files if your bundler does not follow CSS `@import`.
365
+ - Import `ui-style-kit-css/theme-colors.css`, `ui-style-kit-css/native-elements.css`, and `ui-style-kit-css/content-overflow.css` before standalone style files if your bundler does not follow CSS `@import`.
319
366
  - Keep using `ui-style-kit-css/interactive-surface-bridge` or `ui-style-kit-css/with-bridge.css` for the opt-in bridge. The bridge now inherits shared `--usk-*` roles and exposes three `data-surface-level` visual states while the default bundle remains bridge-free.
320
367
 
321
368
  ## License
package/STYLE-MAP.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## UI systems
4
4
 
5
- Color schemes are defined once in `styles/theme-colors.css`. Native HTML fallback selectors are defined once in `styles/native-elements.css`. Each UI system file imports both shared layers, aliases `--usk-*` RGB roles back to its prefix, and maps `--usk-native-*` tokens into the preset's visual identity.
5
+ Color schemes are defined once in `styles/theme-colors.css`. Native HTML fallback selectors are defined once in `styles/native-elements.css`. Long-text containment rules are defined once in `styles/content-overflow.css`. Each UI system file imports all shared layers, aliases `--usk-*` RGB roles back to its prefix, and maps `--usk-native-*` tokens into the preset's visual identity.
6
6
 
7
7
  | UI style | `data-ui` | Prefix | File |
8
8
  |---|---:|---:|---|
@@ -32,6 +32,14 @@ Color schemes are defined once in `styles/theme-colors.css`. Native HTML fallbac
32
32
 
33
33
  Native selectors stay generic under `[data-ui][data-theme][data-mode]`. Presets only provide token mappings such as `--usk-native-surface`, `--usk-native-radius`, and `--usk-native-shadow`, which avoids repeating the same fieldset, table, dialog, details, form, and semantic-element rules in every UI file.
34
34
 
35
+ ## Shared overflow layer
36
+
37
+ | Purpose | Import |
38
+ |---|---|
39
+ | Shared long-text containment for UI wrappers and controls | `styles/content-overflow.css` |
40
+
41
+ The overflow layer keeps headings, paragraphs, links, table cells, controls, badges, nav links, and common layout wrappers from widening the page when content includes long tokens or URLs.
42
+
35
43
  ## Bridge bundle
36
44
 
37
45
  | Purpose | Import |
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * UI Style Kit CSS v2.0.2
2
+ * UI Style Kit CSS v2.0.4
3
3
  * CSS theme and UI style preset library.
4
4
  * License: MIT
5
5
  */
6
6
 
7
- @layer ui-style-kit.theme_colors, ui-style-kit.native_elements, ui-style-kit.minimal_saas, ui-style-kit.bento, ui-style-kit.maximalist, ui-style-kit.bauhaus, ui-style-kit.tactile, ui-style-kit.neumorphism, ui-style-kit.retrofuturism, ui-style-kit.brutalism, ui-style-kit.cyberpunk, ui-style-kit.y2k, ui-style-kit.retro_glass;
7
+ @layer ui-style-kit.theme_colors, ui-style-kit.native_elements, ui-style-kit.content_overflow, ui-style-kit.minimal_saas, ui-style-kit.bento, ui-style-kit.maximalist, ui-style-kit.bauhaus, ui-style-kit.tactile, ui-style-kit.neumorphism, ui-style-kit.retrofuturism, ui-style-kit.brutalism, ui-style-kit.cyberpunk, ui-style-kit.y2k, ui-style-kit.retro_glass;
8
8
 
9
9
  /* styles/theme-colors.css */
10
10
  /* =========================================================
@@ -1038,7 +1038,8 @@
1038
1038
 
1039
1039
  [data-ui][data-theme][data-mode] :where(input[type="file"]) { color: var(--usk-native-text-muted); }
1040
1040
 
1041
- [data-ui][data-theme][data-mode] :where(input[type="file"]::file-selector-button) {
1041
+ /* Keep pseudo-elements outside :where() because engines reject them inside selector-list arguments. */
1042
+ [data-ui][data-theme][data-mode] :where(input[type="file"])::file-selector-button {
1042
1043
  margin-inline-end: .75rem;
1043
1044
  padding: .55rem .8rem;
1044
1045
  color: var(--usk-native-on-primary);
@@ -1113,7 +1114,7 @@
1113
1114
  box-shadow: var(--usk-native-shadow-md), 0 30px 80px rgb(0 0 0 / .42);
1114
1115
  }
1115
1116
 
1116
- [data-ui][data-theme][data-mode] :where(dialog::backdrop) { background: rgb(0 0 0 / .62); }
1117
+ [data-ui][data-theme][data-mode] :where(dialog)::backdrop { background: rgb(0 0 0 / .62); }
1117
1118
 
1118
1119
  [data-ui][data-theme][data-mode] :where(progress, meter) {
1119
1120
  width: 100%;
@@ -1173,6 +1174,301 @@
1173
1174
  }
1174
1175
 
1175
1176
 
1177
+ /* styles/content-overflow.css */
1178
+ /* =========================================================
1179
+ UI Style Kit CSS - Shared Content Overflow Contract
1180
+
1181
+ Text-bearing layout wrappers and controls must shrink within
1182
+ their parent wrapper instead of widening the page.
1183
+ ========================================================= */
1184
+
1185
+ @layer ui-style-kit.content_overflow {
1186
+ [data-ui][data-theme][data-mode] :where(
1187
+ h1,
1188
+ h2,
1189
+ h3,
1190
+ h4,
1191
+ h5,
1192
+ h6,
1193
+ p,
1194
+ a,
1195
+ li,
1196
+ dt,
1197
+ dd,
1198
+ figcaption,
1199
+ blockquote,
1200
+ label,
1201
+ legend,
1202
+ summary,
1203
+ code,
1204
+ kbd,
1205
+ samp,
1206
+ pre,
1207
+ th,
1208
+ td
1209
+ ) {
1210
+ max-inline-size: 100%;
1211
+ min-inline-size: 0;
1212
+ overflow-wrap: anywhere;
1213
+ }
1214
+
1215
+ [data-ui][data-theme][data-mode] :where(
1216
+ [class~="saas-page"],
1217
+ [class~="saas-container"],
1218
+ [class~="saas-section"],
1219
+ [class~="saas-stack"],
1220
+ [class~="saas-cluster"],
1221
+ [class~="saas-grid"],
1222
+ [class~="saas-split"],
1223
+ [class~="saas-surface"],
1224
+ [class~="saas-surface-sm"],
1225
+ [class~="saas-surface-lg"],
1226
+ [class~="saas-card"],
1227
+ [class~="saas-panel"],
1228
+ [class~="saas-toolbar"],
1229
+ [class~="saas-well"],
1230
+ [class~="saas-inset"],
1231
+ [class~="saas-field"],
1232
+ [class~="saas-alert"],
1233
+ [class~="saas-table-wrap"],
1234
+ [class~="saas-nav"],
1235
+ [class~="bento-page"],
1236
+ [class~="bento-container"],
1237
+ [class~="bento-section"],
1238
+ [class~="bento-stack"],
1239
+ [class~="bento-cluster"],
1240
+ [class~="bento-grid"],
1241
+ [class~="bento-split"],
1242
+ [class~="bento-surface"],
1243
+ [class~="bento-surface-sm"],
1244
+ [class~="bento-surface-lg"],
1245
+ [class~="bento-card"],
1246
+ [class~="bento-panel"],
1247
+ [class~="bento-toolbar"],
1248
+ [class~="bento-well"],
1249
+ [class~="bento-inset"],
1250
+ [class~="bento-field"],
1251
+ [class~="bento-alert"],
1252
+ [class~="bento-table-wrap"],
1253
+ [class~="bento-nav"],
1254
+ [class~="max-page"],
1255
+ [class~="max-container"],
1256
+ [class~="max-section"],
1257
+ [class~="max-stack"],
1258
+ [class~="max-cluster"],
1259
+ [class~="max-grid"],
1260
+ [class~="max-split"],
1261
+ [class~="max-surface"],
1262
+ [class~="max-surface-sm"],
1263
+ [class~="max-surface-lg"],
1264
+ [class~="max-card"],
1265
+ [class~="max-panel"],
1266
+ [class~="max-toolbar"],
1267
+ [class~="max-well"],
1268
+ [class~="max-inset"],
1269
+ [class~="max-field"],
1270
+ [class~="max-alert"],
1271
+ [class~="max-table-wrap"],
1272
+ [class~="max-nav"],
1273
+ [class~="bau-page"],
1274
+ [class~="bau-container"],
1275
+ [class~="bau-section"],
1276
+ [class~="bau-stack"],
1277
+ [class~="bau-cluster"],
1278
+ [class~="bau-grid"],
1279
+ [class~="bau-split"],
1280
+ [class~="bau-surface"],
1281
+ [class~="bau-surface-sm"],
1282
+ [class~="bau-surface-lg"],
1283
+ [class~="bau-card"],
1284
+ [class~="bau-panel"],
1285
+ [class~="bau-toolbar"],
1286
+ [class~="bau-well"],
1287
+ [class~="bau-inset"],
1288
+ [class~="bau-field"],
1289
+ [class~="bau-alert"],
1290
+ [class~="bau-table-wrap"],
1291
+ [class~="bau-nav"],
1292
+ [class~="tactile-page"],
1293
+ [class~="tactile-container"],
1294
+ [class~="tactile-section"],
1295
+ [class~="tactile-stack"],
1296
+ [class~="tactile-cluster"],
1297
+ [class~="tactile-grid"],
1298
+ [class~="tactile-split"],
1299
+ [class~="tactile-surface"],
1300
+ [class~="tactile-surface-sm"],
1301
+ [class~="tactile-surface-lg"],
1302
+ [class~="tactile-card"],
1303
+ [class~="tactile-panel"],
1304
+ [class~="tactile-toolbar"],
1305
+ [class~="tactile-well"],
1306
+ [class~="tactile-inset"],
1307
+ [class~="tactile-field"],
1308
+ [class~="tactile-alert"],
1309
+ [class~="tactile-table-wrap"],
1310
+ [class~="tactile-nav"],
1311
+ [class~="neo-page"],
1312
+ [class~="neo-container"],
1313
+ [class~="neo-section"],
1314
+ [class~="neo-stack"],
1315
+ [class~="neo-cluster"],
1316
+ [class~="neo-grid"],
1317
+ [class~="neo-split"],
1318
+ [class~="neo-surface"],
1319
+ [class~="neo-surface-sm"],
1320
+ [class~="neo-surface-lg"],
1321
+ [class~="neo-card"],
1322
+ [class~="neo-panel"],
1323
+ [class~="neo-toolbar"],
1324
+ [class~="neo-well"],
1325
+ [class~="neo-inset"],
1326
+ [class~="neo-field"],
1327
+ [class~="neo-alert"],
1328
+ [class~="neo-table-wrap"],
1329
+ [class~="neo-nav"],
1330
+ [class~="retro-page"],
1331
+ [class~="retro-container"],
1332
+ [class~="retro-section"],
1333
+ [class~="retro-stack"],
1334
+ [class~="retro-cluster"],
1335
+ [class~="retro-grid"],
1336
+ [class~="retro-split"],
1337
+ [class~="retro-surface"],
1338
+ [class~="retro-surface-sm"],
1339
+ [class~="retro-surface-lg"],
1340
+ [class~="retro-card"],
1341
+ [class~="retro-panel"],
1342
+ [class~="retro-toolbar"],
1343
+ [class~="retro-well"],
1344
+ [class~="retro-inset"],
1345
+ [class~="retro-field"],
1346
+ [class~="retro-alert"],
1347
+ [class~="retro-table-wrap"],
1348
+ [class~="retro-nav"],
1349
+ [class~="brutal-page"],
1350
+ [class~="brutal-container"],
1351
+ [class~="brutal-section"],
1352
+ [class~="brutal-stack"],
1353
+ [class~="brutal-cluster"],
1354
+ [class~="brutal-grid"],
1355
+ [class~="brutal-surface"],
1356
+ [class~="brutal-card"],
1357
+ [class~="brutal-panel"],
1358
+ [class~="brutal-toolbar"],
1359
+ [class~="brutal-well"],
1360
+ [class~="brutal-inset"],
1361
+ [class~="brutal-field"],
1362
+ [class~="brutal-alert"],
1363
+ [class~="brutal-table-wrap"],
1364
+ [class~="brutal-nav"],
1365
+ [class~="cyber-page"],
1366
+ [class~="cyber-container"],
1367
+ [class~="cyber-section"],
1368
+ [class~="cyber-stack"],
1369
+ [class~="cyber-cluster"],
1370
+ [class~="cyber-grid"],
1371
+ [class~="cyber-surface"],
1372
+ [class~="cyber-card"],
1373
+ [class~="cyber-panel"],
1374
+ [class~="cyber-toolbar"],
1375
+ [class~="cyber-well"],
1376
+ [class~="cyber-inset"],
1377
+ [class~="cyber-field"],
1378
+ [class~="cyber-alert"],
1379
+ [class~="cyber-table-wrap"],
1380
+ [class~="cyber-nav"],
1381
+ [class~="y2k-page"],
1382
+ [class~="y2k-container"],
1383
+ [class~="y2k-section"],
1384
+ [class~="y2k-stack"],
1385
+ [class~="y2k-cluster"],
1386
+ [class~="y2k-grid"],
1387
+ [class~="y2k-surface"],
1388
+ [class~="y2k-card"],
1389
+ [class~="y2k-panel"],
1390
+ [class~="y2k-toolbar"],
1391
+ [class~="y2k-well"],
1392
+ [class~="y2k-inset"],
1393
+ [class~="y2k-field"],
1394
+ [class~="y2k-alert"],
1395
+ [class~="y2k-table-wrap"],
1396
+ [class~="y2k-nav"],
1397
+ [class~="rg-page"],
1398
+ [class~="rg-container"],
1399
+ [class~="rg-section"],
1400
+ [class~="rg-stack"],
1401
+ [class~="rg-cluster"],
1402
+ [class~="rg-grid"],
1403
+ [class~="rg-surface"],
1404
+ [class~="rg-card"],
1405
+ [class~="rg-panel"],
1406
+ [class~="rg-toolbar"],
1407
+ [class~="rg-well"],
1408
+ [class~="rg-inset"],
1409
+ [class~="rg-field"],
1410
+ [class~="rg-alert"],
1411
+ [class~="rg-table-wrap"],
1412
+ [class~="rg-nav"]
1413
+ ) {
1414
+ max-inline-size: 100%;
1415
+ min-inline-size: 0;
1416
+ overflow-wrap: anywhere;
1417
+ }
1418
+
1419
+ [data-ui][data-theme][data-mode] :where(
1420
+ [class~="saas-button"],
1421
+ [class~="saas-icon-button"],
1422
+ [class~="saas-badge"],
1423
+ [class~="saas-nav-link"],
1424
+ [class~="bento-button"],
1425
+ [class~="bento-icon-button"],
1426
+ [class~="bento-badge"],
1427
+ [class~="bento-nav-link"],
1428
+ [class~="max-button"],
1429
+ [class~="max-icon-button"],
1430
+ [class~="max-badge"],
1431
+ [class~="max-nav-link"],
1432
+ [class~="bau-button"],
1433
+ [class~="bau-icon-button"],
1434
+ [class~="bau-badge"],
1435
+ [class~="bau-nav-link"],
1436
+ [class~="tactile-button"],
1437
+ [class~="tactile-icon-button"],
1438
+ [class~="tactile-badge"],
1439
+ [class~="tactile-nav-link"],
1440
+ [class~="neo-button"],
1441
+ [class~="neo-icon-button"],
1442
+ [class~="neo-badge"],
1443
+ [class~="neo-nav-link"],
1444
+ [class~="retro-button"],
1445
+ [class~="retro-icon-button"],
1446
+ [class~="retro-badge"],
1447
+ [class~="retro-nav-link"],
1448
+ [class~="brutal-button"],
1449
+ [class~="brutal-icon-button"],
1450
+ [class~="brutal-badge"],
1451
+ [class~="brutal-nav-link"],
1452
+ [class~="cyber-button"],
1453
+ [class~="cyber-icon-button"],
1454
+ [class~="cyber-badge"],
1455
+ [class~="cyber-nav-link"],
1456
+ [class~="y2k-button"],
1457
+ [class~="y2k-icon-button"],
1458
+ [class~="y2k-badge"],
1459
+ [class~="y2k-nav-link"],
1460
+ [class~="rg-button"],
1461
+ [class~="rg-icon-button"],
1462
+ [class~="rg-badge"],
1463
+ [class~="rg-nav-link"]
1464
+ ) {
1465
+ max-inline-size: 100%;
1466
+ min-inline-size: 0;
1467
+ white-space: normal;
1468
+ }
1469
+ }
1470
+
1471
+
1176
1472
  /* styles/minimal-saas.css */
1177
1473
  /* =========================================================
1178
1474
  UI Style Kit CSS — Minimal SaaS Theme System
@@ -4546,7 +4842,7 @@
4546
4842
  .brutal-button-primary:hover { background: var(--brutal-primary-hover); }
4547
4843
  .brutal-button-secondary { background: var(--brutal-secondary); color: var(--brutal-on-secondary); box-shadow: 6px 6px 0 var(--brutal-primary); }
4548
4844
  .brutal-button-secondary:hover { background: var(--brutal-secondary-hover); }
4549
- .brutal-button-danger { background: var(--brutal-danger); color: #fff; }
4845
+ .brutal-button-danger { background: var(--brutal-danger); color: var(--brutal-on-danger); }
4550
4846
  .brutal-icon-button { width: 2.85rem; padding: 0; }
4551
4847
  .brutal-button:disabled, .brutal-icon-button:disabled, .brutal-disabled { opacity: 0.55; cursor: not-allowed; transform: none; }
4552
4848
 
@@ -4567,9 +4863,9 @@
4567
4863
  .brutal-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: 0.35rem 0.75rem; background: var(--brutal-surface-strong); color: var(--brutal-text); border: 3px solid var(--brutal-border); box-shadow: 4px 4px 0 var(--brutal-accent); font-size: 0.8rem; font-weight: 900; }
4568
4864
  .brutal-badge-primary { background: var(--brutal-primary); color: var(--brutal-on-primary); }
4569
4865
  .brutal-badge-secondary { background: var(--brutal-secondary); color: var(--brutal-on-secondary); }
4570
- .brutal-badge-success { background: var(--brutal-success); color: #fff; }
4571
- .brutal-badge-warning { background: var(--brutal-warning); color: #111; }
4572
- .brutal-badge-danger { background: var(--brutal-danger); color: #fff; }
4866
+ .brutal-badge-success { background: var(--brutal-success); color: var(--brutal-on-success); }
4867
+ .brutal-badge-warning { background: var(--brutal-warning); color: var(--brutal-on-warning); }
4868
+ .brutal-badge-danger { background: var(--brutal-danger); color: var(--brutal-on-danger); }
4573
4869
 
4574
4870
  .brutal-nav { display: flex; flex-wrap: wrap; gap: var(--brutal-space-2); padding: var(--brutal-space-2); background: var(--brutal-surface-strong); border: 3px solid var(--brutal-border); box-shadow: 8px 8px 0 var(--brutal-primary); }
4575
4871
  .brutal-nav-link { display: inline-flex; min-height: 2.5rem; align-items: center; padding: 0.65rem 1rem; color: var(--brutal-text); border: 3px solid transparent; font-weight: 900; text-decoration: none; }
@@ -4579,7 +4875,7 @@
4579
4875
  /* Tooltips use compact contrast surfaces that stay readable across theme modes. */
4580
4876
  .brutal-tooltip, [data-ui="brutalism"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) {
4581
4877
  display: inline-flex; align-items: center; gap: .45rem; max-inline-size: 16rem; padding: .58rem .78rem;
4582
- background: var(--brutal-warning); color: #111; border: 3px solid var(--brutal-border); border-radius: 0; box-shadow: .28rem .28rem 0 var(--brutal-primary);
4878
+ background: var(--brutal-warning); color: var(--brutal-on-warning); border: 3px solid var(--brutal-border); border-radius: 0; box-shadow: .28rem .28rem 0 var(--brutal-primary);
4583
4879
  font-size: .82rem; font-weight: 950; line-height: 1.2; text-transform: uppercase; letter-spacing: .04em;
4584
4880
  }
4585
4881
  .brutal-tooltip-arrow { inline-size: .6rem; block-size: .6rem; flex: 0 0 auto; background: var(--brutal-danger); border: 3px solid var(--brutal-border); transform: rotate(45deg); }
@@ -4909,14 +5205,14 @@
4909
5205
 
4910
5206
  .cyber-button, .cyber-icon-button { appearance: none; display: inline-flex; align-items: center; justify-content: center; gap: var(--cyber-space-2); min-height: 2.85rem; padding: 0.75rem 1.1rem; background: linear-gradient(135deg, rgb(var(--cyber-primary-rgb) / 0.22), rgb(var(--cyber-accent-rgb) / 0.1)), var(--cyber-surface); color: var(--cyber-text); border: 1px solid rgb(var(--cyber-primary-rgb) / 0.7); border-radius: var(--cyber-radius-xs); box-shadow: var(--cyber-shadow-sm), 0 0 18px var(--cyber-glow-primary); font: inherit; font-family: var(--cyber-font-display); font-weight: 900; letter-spacing: 0.09em; cursor: pointer; text-decoration: none; clip-path: polygon(0 0, calc(100% - .75rem) 0, 100% .75rem, 100% 100%, .75rem 100%, 0 calc(100% - .75rem)); transition: transform var(--cyber-transition-fast), box-shadow var(--cyber-transition-fast), background var(--cyber-transition-fast); }
4911
5207
  .cyber-button:hover, .cyber-icon-button:hover { transform: translateY(-1px); box-shadow: var(--cyber-shadow-md), 0 0 26px var(--cyber-glow-primary); } .cyber-button:active, .cyber-icon-button:active, .cyber-button.is-active, .cyber-button[aria-pressed="true"] { transform: translateY(1px); box-shadow: inset 0 0 18px rgb(0 0 0 / 0.22), 0 0 18px var(--cyber-glow-primary); }
4912
- .cyber-button-primary { background: linear-gradient(135deg, rgb(255 255 255 / 0.14), transparent), var(--cyber-primary); color: var(--cyber-on-primary); } .cyber-button-primary:hover { background: var(--cyber-primary-hover); } .cyber-button-secondary { background: linear-gradient(135deg, rgb(255 255 255 / 0.14), transparent), var(--cyber-secondary); color: var(--cyber-on-secondary); border-color: rgb(var(--cyber-secondary-rgb) / 0.7); } .cyber-button-secondary:hover { background: var(--cyber-secondary-hover); } .cyber-button-danger { background: var(--cyber-danger); color: #fff; } .cyber-icon-button { width: 2.85rem; padding: 0; }
5208
+ .cyber-button-primary { background: linear-gradient(135deg, rgb(255 255 255 / 0.14), transparent), var(--cyber-primary); color: var(--cyber-on-primary); } .cyber-button-primary:hover { background: var(--cyber-primary-hover); } .cyber-button-secondary { background: linear-gradient(135deg, rgb(255 255 255 / 0.14), transparent), var(--cyber-secondary); color: var(--cyber-on-secondary); border-color: rgb(var(--cyber-secondary-rgb) / 0.7); } .cyber-button-secondary:hover { background: var(--cyber-secondary-hover); } .cyber-button-danger { background: var(--cyber-danger); color: var(--cyber-on-danger); } .cyber-icon-button { width: 2.85rem; padding: 0; }
4913
5209
 
4914
5210
  .cyber-field { display: flex; flex-direction: column; gap: var(--cyber-space-2); } .cyber-label { font-family: var(--cyber-font-heading); text-transform: uppercase; letter-spacing: 0.14em; font-weight: 800; font-size: 0.8rem; }
4915
5211
  .cyber-input, .cyber-textarea, .cyber-select { width: 100%; min-height: 2.9rem; padding: 0.8rem 1rem; background: var(--cyber-surface-soft); color: var(--cyber-text); border: 1px solid rgb(var(--cyber-border-rgb) / 0.58); border-radius: var(--cyber-radius-xs); box-shadow: inset 0 0 18px rgb(0 0 0 / 0.2); font: inherit; outline: none; } .cyber-textarea { min-height: 8rem; resize: vertical; }
4916
5212
  .cyber-input:focus, .cyber-textarea:focus, .cyber-select:focus { border-color: var(--cyber-focus); box-shadow: 0 0 0 2px rgb(var(--cyber-focus-rgb) / 0.24), 0 0 24px rgb(var(--cyber-focus-rgb) / 0.24), inset 0 0 18px rgb(0 0 0 / 0.2); } .cyber-help-text { color: var(--cyber-text-muted); font-size: 0.9rem; }
4917
5213
 
4918
5214
  .cyber-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: 0.35rem 0.75rem; background: var(--cyber-surface); color: var(--cyber-text); border: 1px solid rgb(var(--cyber-primary-rgb) / 0.7); box-shadow: 0 0 16px var(--cyber-glow-primary); font-size: 0.78rem; font-weight: 900; letter-spacing: 0.1em; clip-path: polygon(.5rem 0, 100% 0, calc(100% - .5rem) 100%, 0 100%); }
4919
- .cyber-badge-primary { background: var(--cyber-primary); color: var(--cyber-on-primary); } .cyber-badge-secondary { background: var(--cyber-secondary); color: var(--cyber-on-secondary); } .cyber-badge-success { background: var(--cyber-success); color: #fff; } .cyber-badge-warning { background: var(--cyber-warning); color: #111; } .cyber-badge-danger { background: var(--cyber-danger); color: #fff; }
5215
+ .cyber-badge-primary { background: var(--cyber-primary); color: var(--cyber-on-primary); } .cyber-badge-secondary { background: var(--cyber-secondary); color: var(--cyber-on-secondary); } .cyber-badge-success { background: var(--cyber-success); color: var(--cyber-on-success); } .cyber-badge-warning { background: var(--cyber-warning); color: var(--cyber-on-warning); } .cyber-badge-danger { background: var(--cyber-danger); color: var(--cyber-on-danger); }
4920
5216
 
4921
5217
  .cyber-nav { display: flex; flex-wrap: wrap; gap: var(--cyber-space-2); padding: var(--cyber-space-2); background: var(--cyber-surface); border: 1px solid var(--cyber-border); border-radius: var(--cyber-radius-md); box-shadow: var(--cyber-shadow-md), 0 0 22px var(--cyber-glow-primary); } .cyber-nav-link { display: inline-flex; min-height: 2.5rem; align-items: center; padding: 0.65rem 1rem; color: var(--cyber-text-muted); border: 1px solid transparent; border-radius: var(--cyber-radius-xs); text-decoration: none; font-weight: 900; letter-spacing: 0.08em; } .cyber-nav-link:hover { color: var(--cyber-text); border-color: rgb(var(--cyber-primary-rgb) / 0.48); } .cyber-nav-link.is-active, .cyber-nav-link[aria-current="page"] { background: var(--cyber-primary); color: var(--cyber-on-primary); border-color: var(--cyber-primary); box-shadow: 0 0 18px var(--cyber-glow-primary); }
4922
5218
  /* Tooltips use compact contrast surfaces that stay readable across theme modes. */
@@ -5260,11 +5556,11 @@
5260
5556
 
5261
5557
  .y2k-button, .y2k-icon-button { appearance: none; display: inline-flex; align-items: center; justify-content: center; gap: var(--y2k-space-2); min-height: 2.85rem; padding: .75rem 1.15rem; background: linear-gradient(180deg, rgb(255 255 255 / .42), rgb(255 255 255 / .08)), var(--y2k-surface-strong); color: var(--y2k-text); border: 1px solid rgb(255 255 255 / .42); border-radius: var(--y2k-radius-pill); box-shadow: var(--y2k-shadow-sm), inset 0 1px 0 rgb(255 255 255 / .5); font: inherit; font-family: var(--y2k-font-display); font-weight: 900; letter-spacing: .02em; cursor: pointer; text-decoration: none; transition: transform var(--y2k-transition-fast), box-shadow var(--y2k-transition-fast), background var(--y2k-transition-fast); }
5262
5558
  .y2k-button:hover, .y2k-icon-button:hover { transform: translateY(-2px); box-shadow: var(--y2k-shadow-md), 0 0 26px var(--y2k-glow-accent); } .y2k-button:active, .y2k-icon-button:active, .y2k-button.is-active, .y2k-button[aria-pressed="true"] { transform: translateY(1px) scale(.99); box-shadow: inset 0 8px 16px rgb(0 0 0 / .14); }
5263
- .y2k-button-primary { background: linear-gradient(180deg, rgb(255 255 255 / .46), rgb(255 255 255 / .08)), var(--y2k-primary); color: var(--y2k-on-primary); } .y2k-button-primary:hover { background: linear-gradient(180deg, rgb(255 255 255 / .5), rgb(255 255 255 / .1)), var(--y2k-primary-hover); } .y2k-button-secondary { background: linear-gradient(180deg, rgb(255 255 255 / .46), rgb(255 255 255 / .08)), var(--y2k-secondary); color: var(--y2k-on-secondary); } .y2k-button-secondary:hover { background: var(--y2k-secondary-hover); } .y2k-button-danger { background: var(--y2k-danger); color: #fff; } .y2k-icon-button { width: 2.85rem; padding: 0; }
5559
+ .y2k-button-primary { background: linear-gradient(180deg, rgb(255 255 255 / .46), rgb(255 255 255 / .08)), var(--y2k-primary); color: var(--y2k-on-primary); } .y2k-button-primary:hover { background: linear-gradient(180deg, rgb(255 255 255 / .5), rgb(255 255 255 / .1)), var(--y2k-primary-hover); } .y2k-button-secondary { background: linear-gradient(180deg, rgb(255 255 255 / .46), rgb(255 255 255 / .08)), var(--y2k-secondary); color: var(--y2k-on-secondary); } .y2k-button-secondary:hover { background: var(--y2k-secondary-hover); } .y2k-button-danger { background: var(--y2k-danger); color: var(--y2k-on-danger); } .y2k-icon-button { width: 2.85rem; padding: 0; }
5264
5560
 
5265
5561
  .y2k-field { display: flex; flex-direction: column; gap: var(--y2k-space-2); } .y2k-label { font-weight: 900; letter-spacing: .04em; } .y2k-input, .y2k-textarea, .y2k-select { width: 100%; min-height: 2.9rem; padding: .8rem 1rem; background: linear-gradient(180deg, rgb(255 255 255 / .22), rgb(0 0 0 / .05)), var(--y2k-surface-soft); color: var(--y2k-text); border: 1px solid rgb(255 255 255 / .38); border-radius: var(--y2k-radius-lg); box-shadow: inset 0 6px 14px rgb(0 0 0 / .12); font: inherit; outline: none; } .y2k-textarea { min-height: 8rem; resize: vertical; } .y2k-input:focus, .y2k-textarea:focus, .y2k-select:focus { border-color: var(--y2k-focus); box-shadow: inset 0 6px 14px rgb(0 0 0 / .12), 0 0 0 3px rgb(var(--y2k-focus-rgb) / .25), 0 0 24px rgb(var(--y2k-focus-rgb) / .22); } .y2k-help-text { color: var(--y2k-text-muted); font-size: .9rem; }
5266
5562
 
5267
- .y2k-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: .35rem .8rem; background: linear-gradient(180deg, rgb(255 255 255 / .4), rgb(255 255 255 / .08)), var(--y2k-surface-strong); color: var(--y2k-text); border: 1px solid rgb(255 255 255 / .42); border-radius: var(--y2k-radius-pill); box-shadow: var(--y2k-shadow-sm); font-size: .78rem; font-weight: 900; } .y2k-badge-primary { background: var(--y2k-primary); color: var(--y2k-on-primary); } .y2k-badge-secondary { background: var(--y2k-secondary); color: var(--y2k-on-secondary); } .y2k-badge-success { background: var(--y2k-success); color: #fff; } .y2k-badge-warning { background: var(--y2k-warning); color: #111; } .y2k-badge-danger { background: var(--y2k-danger); color: #fff; }
5563
+ .y2k-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: .35rem .8rem; background: linear-gradient(180deg, rgb(255 255 255 / .4), rgb(255 255 255 / .08)), var(--y2k-surface-strong); color: var(--y2k-text); border: 1px solid rgb(255 255 255 / .42); border-radius: var(--y2k-radius-pill); box-shadow: var(--y2k-shadow-sm); font-size: .78rem; font-weight: 900; } .y2k-badge-primary { background: var(--y2k-primary); color: var(--y2k-on-primary); } .y2k-badge-secondary { background: var(--y2k-secondary); color: var(--y2k-on-secondary); } .y2k-badge-success { background: var(--y2k-success); color: var(--y2k-on-success); } .y2k-badge-warning { background: var(--y2k-warning); color: var(--y2k-on-warning); } .y2k-badge-danger { background: var(--y2k-danger); color: var(--y2k-on-danger); }
5268
5564
  .y2k-nav { display: flex; flex-wrap: wrap; gap: var(--y2k-space-2); padding: var(--y2k-space-2); background: linear-gradient(180deg, rgb(255 255 255 / .38), rgb(255 255 255 / .08)), var(--y2k-surface); border: 1px solid rgb(255 255 255 / .42); border-radius: var(--y2k-radius-pill); box-shadow: var(--y2k-shadow-md); } .y2k-nav-link { display: inline-flex; min-height: 2.5rem; align-items: center; padding: .65rem 1rem; color: var(--y2k-text-muted); border-radius: var(--y2k-radius-pill); text-decoration: none; font-weight: 900; } .y2k-nav-link:hover { color: var(--y2k-text); background: rgb(255 255 255 / .16); } .y2k-nav-link.is-active, .y2k-nav-link[aria-current="page"] { background: var(--y2k-primary); color: var(--y2k-on-primary); box-shadow: 0 0 20px var(--y2k-glow-primary); }
5269
5565
  /* Tooltips use compact contrast surfaces that stay readable across theme modes. */
5270
5566
  .y2k-tooltip, [data-ui="y2k"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) { display: inline-flex; align-items: center; gap: .45rem; max-inline-size: 16rem; padding: .62rem .9rem; background: radial-gradient(circle at 28% 18%, rgb(255 255 255 / .76), transparent 26%), linear-gradient(135deg, var(--y2k-primary), var(--y2k-secondary)); color: var(--y2k-on-primary); border: 1px solid rgb(255 255 255 / .54); border-radius: var(--y2k-radius-pill); box-shadow: var(--y2k-shadow-md), 0 0 1.1rem var(--y2k-glow-primary); font-size: .82rem; font-weight: 900; line-height: 1.3; }
@@ -5607,11 +5903,11 @@
5607
5903
  .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); }
5608
5904
 
5609
5905
  .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); }
5610
- .rg-button:hover, .rg-icon-button:hover { transform: translateY(-2px); border-color: rgb(var(--rg-primary-rgb) / .68); box-shadow: var(--rg-shadow-md), 0 0 24px var(--rg-glow-primary); } .rg-button:active, .rg-icon-button:active, .rg-button.is-active, .rg-button[aria-pressed="true"] { transform: translateY(1px); box-shadow: inset 0 8px 18px rgb(0 0 0 / .18), 0 0 18px var(--rg-glow-primary); } .rg-button-primary { background: linear-gradient(135deg, rgb(255 255 255 / .22), rgb(255 255 255 / .04)), var(--rg-primary); color: var(--rg-on-primary); border-color: rgb(var(--rg-primary-rgb) / .72); } .rg-button-primary:hover { background: var(--rg-primary-hover); } .rg-button-secondary { background: linear-gradient(135deg, rgb(255 255 255 / .22), rgb(255 255 255 / .04)), var(--rg-secondary); color: var(--rg-on-secondary); border-color: rgb(var(--rg-secondary-rgb) / .72); } .rg-button-secondary:hover { background: var(--rg-secondary-hover); } .rg-button-danger { background: var(--rg-danger); color: #fff; } .rg-icon-button { width: 2.85rem; padding: 0; }
5906
+ .rg-button:hover, .rg-icon-button:hover { transform: translateY(-2px); border-color: rgb(var(--rg-primary-rgb) / .68); box-shadow: var(--rg-shadow-md), 0 0 24px var(--rg-glow-primary); } .rg-button:active, .rg-icon-button:active, .rg-button.is-active, .rg-button[aria-pressed="true"] { transform: translateY(1px); box-shadow: inset 0 8px 18px rgb(0 0 0 / .18), 0 0 18px var(--rg-glow-primary); } .rg-button-primary { background: linear-gradient(135deg, rgb(255 255 255 / .22), rgb(255 255 255 / .04)), var(--rg-primary); color: var(--rg-on-primary); border-color: rgb(var(--rg-primary-rgb) / .72); } .rg-button-primary:hover { background: var(--rg-primary-hover); } .rg-button-secondary { background: linear-gradient(135deg, rgb(255 255 255 / .22), rgb(255 255 255 / .04)), var(--rg-secondary); color: var(--rg-on-secondary); border-color: rgb(var(--rg-secondary-rgb) / .72); } .rg-button-secondary:hover { background: var(--rg-secondary-hover); } .rg-button-danger { background: var(--rg-danger); color: var(--rg-on-danger); } .rg-icon-button { width: 2.85rem; padding: 0; }
5611
5907
 
5612
5908
  .rg-field { display: flex; flex-direction: column; gap: var(--rg-space-2); } .rg-label { font-family: var(--rg-font-heading); text-transform: uppercase; letter-spacing: .12em; font-weight: 900; font-size: .8rem; } .rg-input, .rg-textarea, .rg-select { width: 100%; min-height: 2.9rem; padding: .8rem 1rem; background: linear-gradient(180deg, rgb(255 255 255 / .06), rgb(0 0 0 / .08)), var(--rg-surface-soft); color: var(--rg-text); border: 1px solid rgb(var(--rg-border-rgb) / .44); border-radius: var(--rg-radius-md); box-shadow: inset 0 8px 18px rgb(0 0 0 / .14); font: inherit; outline: none; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } .rg-textarea { min-height: 8rem; resize: vertical; } .rg-input:focus, .rg-textarea:focus, .rg-select:focus { border-color: var(--rg-focus); box-shadow: inset 0 8px 18px rgb(0 0 0 / .14), 0 0 0 3px rgb(var(--rg-focus-rgb) / .24), 0 0 26px rgb(var(--rg-focus-rgb) / .22); } .rg-help-text { color: var(--rg-text-muted); font-size: .9rem; }
5613
5909
 
5614
- .rg-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: .35rem .75rem; background: linear-gradient(135deg, rgb(255 255 255 / .2), rgb(255 255 255 / .04)), var(--rg-surface); color: var(--rg-text); border: 1px solid rgb(var(--rg-border-rgb) / .5); border-radius: var(--rg-radius-pill); box-shadow: var(--rg-shadow-sm); font-size: .78rem; font-weight: 900; letter-spacing: .08em; -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); } .rg-badge-primary { background: var(--rg-primary); color: var(--rg-on-primary); } .rg-badge-secondary { background: var(--rg-secondary); color: var(--rg-on-secondary); } .rg-badge-success { background: var(--rg-success); color: #fff; } .rg-badge-warning { background: var(--rg-warning); color: #111; } .rg-badge-danger { background: var(--rg-danger); color: #fff; }
5910
+ .rg-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: .35rem .75rem; background: linear-gradient(135deg, rgb(255 255 255 / .2), rgb(255 255 255 / .04)), var(--rg-surface); color: var(--rg-text); border: 1px solid rgb(var(--rg-border-rgb) / .5); border-radius: var(--rg-radius-pill); box-shadow: var(--rg-shadow-sm); font-size: .78rem; font-weight: 900; letter-spacing: .08em; -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); } .rg-badge-primary { background: var(--rg-primary); color: var(--rg-on-primary); } .rg-badge-secondary { background: var(--rg-secondary); color: var(--rg-on-secondary); } .rg-badge-success { background: var(--rg-success); color: var(--rg-on-success); } .rg-badge-warning { background: var(--rg-warning); color: var(--rg-on-warning); } .rg-badge-danger { background: var(--rg-danger); color: var(--rg-on-danger); }
5615
5911
  .rg-nav { display: flex; flex-wrap: wrap; gap: var(--rg-space-2); padding: var(--rg-space-2); background: linear-gradient(135deg, rgb(255 255 255 / .18), rgb(255 255 255 / .04)), var(--rg-surface); border: 1px solid var(--rg-border); border-radius: var(--rg-radius-xl); box-shadow: var(--rg-shadow-md), 0 0 24px var(--rg-glow-primary); -webkit-backdrop-filter: blur(18px) saturate(150%); backdrop-filter: blur(18px) saturate(150%); } .rg-nav-link { display: inline-flex; min-height: 2.5rem; align-items: center; padding: .65rem 1rem; color: var(--rg-text-muted); border: 1px solid transparent; border-radius: var(--rg-radius-pill); text-decoration: none; font-weight: 900; letter-spacing: .08em; } .rg-nav-link:hover { color: var(--rg-text); background: rgb(255 255 255 / .1); border-color: rgb(var(--rg-primary-rgb) / .36); } .rg-nav-link.is-active, .rg-nav-link[aria-current="page"] { background: var(--rg-primary); color: var(--rg-on-primary); box-shadow: 0 0 22px var(--rg-glow-primary); }
5616
5912
  /* Tooltips use compact contrast surfaces that stay readable across theme modes. */
5617
5913
  .rg-tooltip, [data-ui="retro-glass"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) { display: inline-flex; align-items: center; gap: .45rem; max-inline-size: 16rem; padding: .62rem .88rem; background: linear-gradient(135deg, rgb(255 255 255 / .28), rgb(255 255 255 / .06)), var(--rg-surface); color: var(--rg-text); border: 1px solid rgb(255 255 255 / .34); border-radius: 38% 62% 48% 52% / 52% 42% 58% 48%; box-shadow: var(--rg-shadow-md), 0 0 1.25rem var(--rg-glow-primary); -webkit-backdrop-filter: blur(14px) saturate(145%); backdrop-filter: blur(14px) saturate(145%); font-size: .82rem; font-weight: 900; line-height: 1.3; letter-spacing: .04em; }