ui-style-kit-css 2.0.3 → 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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,25 @@
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
+
5
24
  ## [2.0.3] - 2026-07-11
6
25
 
7
26
  ### Added
package/README.md CHANGED
@@ -9,7 +9,7 @@ It is separate from, but complementary to, **Interactive Surface CSS**. Use **UI
9
9
 
10
10
  ## Current Release
11
11
 
12
- `v2.0.3` is the current v2 patch release. It keeps the `v2.0.1` shared color-scheme and native-element model, adds a demo theme-override workbench, improves copyable documentation examples, and refreshes release metadata 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
 
@@ -44,13 +44,27 @@ flowchart TB
44
44
 
45
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
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
+
47
61
  ## Features
48
62
 
49
63
  - 11 UI style systems
50
64
  - 10 shared color schemes
51
65
  - `light`, `dark`, and `contrast` modes
52
66
  - Combined CSS bundle and per-style production imports
53
- - 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
54
68
  - Scoped native HTML element coverage, including semantic containers and inline text elements
55
69
  - Visible `:focus-visible` defaults
56
70
  - Skip-link and visually-hidden helpers per style prefix
@@ -77,11 +91,12 @@ Use a single style import for production apps that use one visual system:
77
91
  import "ui-style-kit-css/minimal-saas.css";
78
92
  ```
79
93
 
80
- In `v2.0.3`, 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:
81
95
 
82
96
  ```js
83
97
  import "ui-style-kit-css/theme-colors.css";
84
98
  import "ui-style-kit-css/native-elements.css";
99
+ import "ui-style-kit-css/content-overflow.css";
85
100
  import "ui-style-kit-css/minimal-saas.css";
86
101
  ```
87
102
 
@@ -119,21 +134,22 @@ When the bridge is attached, add `.interactive-surface` to interactable elements
119
134
 
120
135
  | Import | Raw | Gzip | Best for |
121
136
  |---|---:|---:|---|
122
- | `ui-style-kit-css/dist/ui-style-kit.min.css` | ~269 KB | ~34 KB | Runtime UI-system switchers and demos |
123
- | `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 |
124
139
  | `ui-style-kit-css/theme-colors.css` | ~25 KB | ~3 KB | Shared color schemes for standalone style imports |
125
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 |
126
142
  | Single style imports | ~26-28 KB | ~5-6 KB | Production apps with one visual system |
127
143
 
128
144
  ## CDN usage
129
145
 
130
- After publishing to NPM:
146
+ Use the latest published NPM package:
131
147
 
132
148
  ```html
133
149
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui-style-kit-css@latest/dist/ui-style-kit.min.css" />
134
150
  ```
135
151
 
136
- 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:
137
153
 
138
154
  ```html
139
155
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ui-style-kit-css@2.0.3/dist/ui-style-kit.min.css" />
@@ -209,6 +225,8 @@ contrast
209
225
 
210
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.
211
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
+
212
230
  The shared native layer covers common native elements, including:
213
231
 
214
232
  - semantic containers: `main`, `section`, `header`, `footer`, `nav`, `article`, `aside`, `address`
@@ -308,6 +326,7 @@ ui-style-kit-css/
308
326
  styles/
309
327
  theme-colors.css
310
328
  native-elements.css
329
+ content-overflow.css
311
330
  minimal-saas.css
312
331
  bento.css
313
332
  maximalist.css
@@ -343,7 +362,7 @@ The `v2.0.1` release line removes duplicated per-UI color-scheme blocks. Color s
343
362
 
344
363
  - Use `--usk-*-rgb` when defining or overriding a color scheme.
345
364
  - Continue using prefixed functional tokens such as `--saas-primary`, `--neo-card-bg`, and `--rg-on-primary` inside components.
346
- - 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`.
347
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.
348
367
 
349
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.3
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; }