ui-style-kit-css 2.3.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/CHANGELOG.md +57 -2
  2. package/CONTRIBUTING.md +8 -1
  3. package/README.md +102 -44
  4. package/STYLE-MAP.md +14 -5
  5. package/dist/assets/bauhaus-barlow-OFL.txt +93 -0
  6. package/dist/assets/bauhaus-barlow-semibold.ttf +0 -0
  7. package/dist/assets/bauhaus-barlow.ttf +0 -0
  8. package/dist/assets/bauhaus-condensed-OFL.txt +93 -0
  9. package/dist/assets/bauhaus-condensed-bold.ttf +0 -0
  10. package/dist/assets/bauhaus-condensed-extrabold.ttf +0 -0
  11. package/dist/assets/bento-manrope-OFL.txt +93 -0
  12. package/dist/assets/bento-manrope.ttf +0 -0
  13. package/dist/assets/clay-grain.png +0 -0
  14. package/dist/assets/clay-rounded-OFL.txt +93 -0
  15. package/dist/assets/clay-rounded.ttf +0 -0
  16. package/dist/assets/neo-noir-corner-dark.png +0 -0
  17. package/dist/assets/neo-noir-corner-light.png +0 -0
  18. package/dist/assets/neo-noir-texture-dark.png +0 -0
  19. package/dist/assets/neo-noir-texture-light.png +0 -0
  20. package/dist/assets/organic-display-OFL.txt +93 -0
  21. package/dist/assets/organic-display.ttf +0 -0
  22. package/dist/assets/organic-icons-LICENSE.txt +21 -0
  23. package/dist/assets/organic-sans-OFL.txt +93 -0
  24. package/dist/assets/organic-sans.ttf +0 -0
  25. package/dist/ui-style-kit.css +47898 -15121
  26. package/dist/ui-style-kit.min.css +2 -2
  27. package/dist/ui-style-kit.visual.css +47771 -15122
  28. package/dist/ui-style-kit.visual.min.css +2 -2
  29. package/dist/ui-style-kit.with-bridge.css +47932 -15145
  30. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  31. package/dist/visual/art-deco.css +3247 -295
  32. package/dist/visual/bauhaus.css +2 -4692
  33. package/dist/visual/bento.css +2 -4708
  34. package/dist/visual/brutalism.css +1229 -231
  35. package/dist/visual/clay.css +2 -4786
  36. package/dist/visual/cyberpunk.css +2663 -282
  37. package/dist/visual/data-terminal.css +2064 -276
  38. package/dist/visual/editorial-luxe.css +2315 -259
  39. package/dist/visual/industrial-utility.css +3142 -270
  40. package/dist/visual/maximalist.css +2185 -454
  41. package/dist/visual/minimal-saas.css +1503 -398
  42. package/dist/visual/neo-noir.css +2 -4787
  43. package/dist/visual/neumorphism.css +1690 -402
  44. package/dist/visual/organic-modern.css +2 -4764
  45. package/dist/visual/paper-editorial.css +2977 -292
  46. package/dist/visual/retro-glass.css +2625 -299
  47. package/dist/visual/retrofuturism.css +1885 -397
  48. package/dist/visual/tactile.css +2716 -498
  49. package/dist/visual/technical-blueprint.css +2599 -267
  50. package/dist/visual/y2k.css +1906 -309
  51. package/docs/ART-DECO.md +80 -0
  52. package/docs/BAUHAUS.md +152 -0
  53. package/docs/BENTO.md +121 -0
  54. package/docs/CLAY.md +127 -0
  55. package/docs/COLOR-THEMES.md +63 -0
  56. package/docs/DEMO-SHOWCASE.md +65 -0
  57. package/docs/ECOSYSTEM.md +4 -4
  58. package/docs/EDITORIAL-LUX.md +75 -0
  59. package/docs/INDUSTRIAL-UTILITY.md +131 -0
  60. package/docs/NATIVE-ELEMENTS.md +23 -17
  61. package/docs/NEO-NOIR.md +94 -0
  62. package/docs/ORGANIC-MODERN.md +91 -0
  63. package/docs/PAPER-EDITORIAL.md +63 -0
  64. package/docs/PUBLISHING.md +31 -10
  65. package/docs/RELEASE-2.4.0.md +88 -0
  66. package/docs/RELEASE-2.4.1.md +35 -0
  67. package/docs/RETRO-GLASS.md +105 -0
  68. package/docs/STYLE-GUIDE.md +41 -26
  69. package/docs/TACTILE.md +38 -0
  70. package/docs/TECHNICAL-BLUEPRINT.md +60 -0
  71. package/docs/TOKENS.md +80 -3
  72. package/docs/superpowers/plans/2026-09-04-library-wide-theme-fallback-and-fidelity.md +331 -0
  73. package/docs/superpowers/specs/2026-09-04-library-wide-theme-fallback-and-fidelity-design.md +113 -0
  74. package/manifest.json +624 -28
  75. package/package.json +20 -11
  76. package/styles/art-deco.css +1402 -17
  77. package/styles/assets/bauhaus-barlow-OFL.txt +93 -0
  78. package/styles/assets/bauhaus-barlow-semibold.ttf +0 -0
  79. package/styles/assets/bauhaus-barlow.ttf +0 -0
  80. package/styles/assets/bauhaus-condensed-OFL.txt +93 -0
  81. package/styles/assets/bauhaus-condensed-bold.ttf +0 -0
  82. package/styles/assets/bauhaus-condensed-extrabold.ttf +0 -0
  83. package/styles/assets/bento-manrope-OFL.txt +93 -0
  84. package/styles/assets/bento-manrope.ttf +0 -0
  85. package/styles/assets/clay-grain.png +0 -0
  86. package/styles/assets/clay-rounded-OFL.txt +93 -0
  87. package/styles/assets/clay-rounded.ttf +0 -0
  88. package/styles/assets/neo-noir-corner-dark.png +0 -0
  89. package/styles/assets/neo-noir-corner-light.png +0 -0
  90. package/styles/assets/neo-noir-texture-dark.png +0 -0
  91. package/styles/assets/neo-noir-texture-light.png +0 -0
  92. package/styles/assets/organic-display-OFL.txt +93 -0
  93. package/styles/assets/organic-display.ttf +0 -0
  94. package/styles/assets/organic-icons-LICENSE.txt +21 -0
  95. package/styles/assets/organic-sans-OFL.txt +93 -0
  96. package/styles/assets/organic-sans.ttf +0 -0
  97. package/styles/bauhaus.css +881 -110
  98. package/styles/bento.css +1182 -113
  99. package/styles/brutalism.css +266 -15
  100. package/styles/clay.css +1307 -72
  101. package/styles/compat-layout.css +1 -2
  102. package/styles/components.css +107 -36
  103. package/styles/content-overflow.css +11 -5
  104. package/styles/cyberpunk.css +1856 -51
  105. package/styles/data-terminal.css +1122 -18
  106. package/styles/editorial-luxe.css +581 -17
  107. package/styles/industrial-utility.css +1775 -16
  108. package/styles/interactive-surface-bridge.css +30 -20
  109. package/styles/interactive-surface-theme.css +21 -11
  110. package/styles/maximalist.css +1215 -133
  111. package/styles/minimal-saas.css +465 -93
  112. package/styles/native-elements.css +347 -171
  113. package/styles/neo-noir.css +661 -19
  114. package/styles/neumorphism.css +1021 -149
  115. package/styles/organic-modern.css +693 -23
  116. package/styles/paper-editorial.css +1053 -17
  117. package/styles/retro-glass.css +639 -50
  118. package/styles/retrofuturism.css +948 -60
  119. package/styles/tactile.css +1813 -111
  120. package/styles/technical-blueprint.css +673 -22
  121. package/styles/theme-colors.css +412 -2
  122. package/styles/y2k.css +954 -46
@@ -42,6 +42,29 @@
42
42
 
43
43
  [data-ui="data-terminal"][data-mode="light"] {
44
44
  color-scheme: light;
45
+ --terminal-fallback-bg-rgb: 250 250 246;
46
+ --terminal-fallback-surface-rgb: 255 255 252;
47
+ --terminal-fallback-surface-strong-rgb: 255 255 252;
48
+ --terminal-fallback-surface-soft-rgb: 246 246 241;
49
+ --terminal-fallback-text-rgb: 20 22 21;
50
+ --terminal-fallback-text-muted-rgb: 84 87 84;
51
+ --terminal-fallback-border-rgb: 137 140 136;
52
+ --terminal-fallback-primary-rgb: 22 82 190;
53
+ --terminal-fallback-primary-hover-rgb: 15 66 158;
54
+ --terminal-fallback-primary-text-rgb: 255 255 255;
55
+ --terminal-fallback-secondary-rgb: 24 111 138;
56
+ --terminal-fallback-secondary-hover-rgb: 16 86 108;
57
+ --terminal-fallback-secondary-text-rgb: 255 255 255;
58
+ --terminal-fallback-accent-rgb: 190 111 0;
59
+ --terminal-fallback-accent-text-rgb: 20 22 21;
60
+ --terminal-fallback-success-rgb: 36 132 55;
61
+ --terminal-fallback-success-text-rgb: 255 255 255;
62
+ --terminal-fallback-warning-rgb: 190 111 0;
63
+ --terminal-fallback-warning-text-rgb: 20 22 21;
64
+ --terminal-fallback-danger-rgb: 211 43 50;
65
+ --terminal-fallback-danger-text-rgb: 255 255 255;
66
+ --terminal-fallback-link-rgb: 22 82 190;
67
+ --terminal-fallback-focus-rgb: 22 82 190;
45
68
  --terminal-panel-alpha: .98;
46
69
  --terminal-panel-soft-alpha: .78;
47
70
  --terminal-border-alpha: .58;
@@ -51,6 +74,29 @@
51
74
 
52
75
  [data-ui="data-terminal"][data-mode="dark"] {
53
76
  color-scheme: dark;
77
+ --terminal-fallback-bg-rgb: 2 4 3;
78
+ --terminal-fallback-surface-rgb: 0 0 0;
79
+ --terminal-fallback-surface-strong-rgb: 0 0 0;
80
+ --terminal-fallback-surface-soft-rgb: 8 10 9;
81
+ --terminal-fallback-text-rgb: 236 237 232;
82
+ --terminal-fallback-text-muted-rgb: 164 166 160;
83
+ --terminal-fallback-border-rgb: 163 116 0;
84
+ --terminal-fallback-primary-rgb: 52 125 255;
85
+ --terminal-fallback-primary-hover-rgb: 100 156 255;
86
+ --terminal-fallback-primary-text-rgb: 0 0 0;
87
+ --terminal-fallback-secondary-rgb: 52 171 213;
88
+ --terminal-fallback-secondary-hover-rgb: 93 199 235;
89
+ --terminal-fallback-secondary-text-rgb: 0 0 0;
90
+ --terminal-fallback-accent-rgb: 255 176 0;
91
+ --terminal-fallback-accent-text-rgb: 0 0 0;
92
+ --terminal-fallback-success-rgb: 74 205 84;
93
+ --terminal-fallback-success-text-rgb: 0 0 0;
94
+ --terminal-fallback-warning-rgb: 255 176 0;
95
+ --terminal-fallback-warning-text-rgb: 0 0 0;
96
+ --terminal-fallback-danger-rgb: 255 71 78;
97
+ --terminal-fallback-danger-text-rgb: 0 0 0;
98
+ --terminal-fallback-link-rgb: 82 151 255;
99
+ --terminal-fallback-focus-rgb: 82 151 255;
54
100
  --terminal-panel-alpha: .92;
55
101
  --terminal-panel-soft-alpha: .64;
56
102
  --terminal-border-alpha: .52;
@@ -60,6 +106,29 @@
60
106
 
61
107
  [data-ui="data-terminal"][data-mode="contrast"] {
62
108
  color-scheme: dark;
109
+ --terminal-fallback-bg-rgb: 0 0 0;
110
+ --terminal-fallback-surface-rgb: 0 0 0;
111
+ --terminal-fallback-surface-strong-rgb: 0 0 0;
112
+ --terminal-fallback-surface-soft-rgb: 0 0 0;
113
+ --terminal-fallback-text-rgb: 255 255 255;
114
+ --terminal-fallback-text-muted-rgb: 224 224 224;
115
+ --terminal-fallback-border-rgb: 255 212 0;
116
+ --terminal-fallback-primary-rgb: 92 153 255;
117
+ --terminal-fallback-primary-hover-rgb: 132 179 255;
118
+ --terminal-fallback-primary-text-rgb: 0 0 0;
119
+ --terminal-fallback-secondary-rgb: 78 224 255;
120
+ --terminal-fallback-secondary-hover-rgb: 130 235 255;
121
+ --terminal-fallback-secondary-text-rgb: 0 0 0;
122
+ --terminal-fallback-accent-rgb: 255 212 0;
123
+ --terminal-fallback-accent-text-rgb: 0 0 0;
124
+ --terminal-fallback-success-rgb: 92 255 105;
125
+ --terminal-fallback-success-text-rgb: 0 0 0;
126
+ --terminal-fallback-warning-rgb: 255 212 0;
127
+ --terminal-fallback-warning-text-rgb: 0 0 0;
128
+ --terminal-fallback-danger-rgb: 255 96 102;
129
+ --terminal-fallback-danger-text-rgb: 0 0 0;
130
+ --terminal-fallback-link-rgb: 126 176 255;
131
+ --terminal-fallback-focus-rgb: 255 255 255;
63
132
  --terminal-panel-alpha: 1;
64
133
  --terminal-panel-soft-alpha: .92;
65
134
  --terminal-border-alpha: 1;
@@ -67,8 +136,8 @@
67
136
  --terminal-focus-alpha: .72;
68
137
  }
69
138
 
139
+ /** Preserves direct aliases for static extraction when a scheme is selected. */
70
140
  [data-ui="data-terminal"][data-theme][data-mode] {
71
- /* Shared scheme aliases preserve the existing prefixed token API. */
72
141
  --terminal-bg-rgb: var(--usk-bg-rgb);
73
142
  --terminal-surface-rgb: var(--usk-surface-rgb);
74
143
  --terminal-surface-strong-rgb: var(--usk-surface-strong-rgb);
@@ -83,15 +152,43 @@
83
152
  --terminal-secondary-hover-rgb: var(--usk-secondary-hover-rgb);
84
153
  --terminal-secondary-text-rgb: var(--usk-secondary-text-rgb);
85
154
  --terminal-accent-rgb: var(--usk-accent-rgb);
86
- --terminal-success-rgb: var(--usk-success-rgb);
87
- --terminal-warning-rgb: var(--usk-warning-rgb);
88
- --terminal-danger-rgb: var(--usk-danger-rgb);
89
- --terminal-link-rgb: var(--usk-link-rgb);
90
155
  --terminal-accent-text-rgb: var(--usk-accent-text-rgb);
156
+ --terminal-success-rgb: var(--usk-success-rgb);
91
157
  --terminal-success-text-rgb: var(--usk-success-text-rgb);
158
+ --terminal-warning-rgb: var(--usk-warning-rgb);
92
159
  --terminal-warning-text-rgb: var(--usk-warning-text-rgb);
160
+ --terminal-danger-rgb: var(--usk-danger-rgb);
93
161
  --terminal-danger-text-rgb: var(--usk-danger-text-rgb);
162
+ --terminal-link-rgb: var(--usk-link-rgb);
94
163
  --terminal-focus-rgb: var(--usk-focus-rgb);
164
+ }
165
+
166
+ [data-ui="data-terminal"][data-mode] {
167
+ --usk-native-bg: var(--terminal-bg);
168
+ /* Explicit schemes win; reference colors are used only when no scheme exists. */
169
+ --terminal-bg-rgb: var(--usk-bg-rgb, var(--terminal-fallback-bg-rgb));
170
+ --terminal-surface-rgb: var(--usk-surface-rgb, var(--terminal-fallback-surface-rgb));
171
+ --terminal-surface-strong-rgb: var(--usk-surface-strong-rgb, var(--terminal-fallback-surface-strong-rgb));
172
+ --terminal-surface-soft-rgb: var(--usk-surface-soft-rgb, var(--terminal-fallback-surface-soft-rgb));
173
+ --terminal-text-rgb: var(--usk-text-rgb, var(--terminal-fallback-text-rgb));
174
+ --terminal-text-muted-rgb: var(--usk-text-muted-rgb, var(--terminal-fallback-text-muted-rgb));
175
+ --terminal-border-rgb: var(--usk-border-rgb, var(--terminal-fallback-border-rgb));
176
+ --terminal-primary-rgb: var(--usk-primary-rgb, var(--terminal-fallback-primary-rgb));
177
+ --terminal-primary-hover-rgb: var(--usk-primary-hover-rgb, var(--terminal-fallback-primary-hover-rgb));
178
+ --terminal-primary-text-rgb: var(--usk-primary-text-rgb, var(--terminal-fallback-primary-text-rgb));
179
+ --terminal-secondary-rgb: var(--usk-secondary-rgb, var(--terminal-fallback-secondary-rgb));
180
+ --terminal-secondary-hover-rgb: var(--usk-secondary-hover-rgb, var(--terminal-fallback-secondary-hover-rgb));
181
+ --terminal-secondary-text-rgb: var(--usk-secondary-text-rgb, var(--terminal-fallback-secondary-text-rgb));
182
+ --terminal-accent-rgb: var(--usk-accent-rgb, var(--terminal-fallback-accent-rgb));
183
+ --terminal-accent-text-rgb: var(--usk-accent-text-rgb, var(--terminal-fallback-accent-text-rgb));
184
+ --terminal-success-rgb: var(--usk-success-rgb, var(--terminal-fallback-success-rgb));
185
+ --terminal-success-text-rgb: var(--usk-success-text-rgb, var(--terminal-fallback-success-text-rgb));
186
+ --terminal-warning-rgb: var(--usk-warning-rgb, var(--terminal-fallback-warning-rgb));
187
+ --terminal-warning-text-rgb: var(--usk-warning-text-rgb, var(--terminal-fallback-warning-text-rgb));
188
+ --terminal-danger-rgb: var(--usk-danger-rgb, var(--terminal-fallback-danger-rgb));
189
+ --terminal-danger-text-rgb: var(--usk-danger-text-rgb, var(--terminal-fallback-danger-text-rgb));
190
+ --terminal-link-rgb: var(--usk-link-rgb, var(--terminal-fallback-link-rgb));
191
+ --terminal-focus-rgb: var(--usk-focus-rgb, var(--terminal-fallback-focus-rgb));
95
192
  /* Native fallback selectors inherit visual identity through shared tokens. */
96
193
  --usk-native-surface: var(--terminal-surface);
97
194
  --usk-native-surface-strong: var(--terminal-surface-strong);
@@ -122,6 +219,57 @@
122
219
  --usk-native-border-width: 1px;
123
220
  --usk-native-field-gap: .5rem;
124
221
  --usk-native-panel-padding: var(--terminal-space-5);
222
+ --usk-native-control-min-block-size: 2.65rem;
223
+ --usk-native-control-padding-block: .74rem;
224
+ --usk-native-control-padding-inline: 1rem;
225
+ --usk-native-subcontrol-padding-block: .58rem;
226
+ --usk-native-subcontrol-padding-inline: .8rem;
227
+ --usk-native-choice-size: 1.3rem;
228
+ --usk-native-choice-background: var(--terminal-control-bg);
229
+ --usk-native-choice-border: 1px solid var(--terminal-border);
230
+ --usk-native-checkbox-radius: 0;
231
+ --usk-native-radio-radius: 0;
232
+ --usk-native-choice-shadow: 0 0 9px var(--terminal-primary);
233
+ --usk-native-choice-checked-background: var(--terminal-primary);
234
+ --usk-native-choice-mark-color: var(--terminal-on-primary);
235
+ --usk-native-select-indicator-image: linear-gradient(78deg, transparent 50%, var(--terminal-primary) 50%), linear-gradient(102deg, var(--terminal-primary) 50%, transparent 50%);
236
+ --usk-native-select-indicator-size: 0.42000000000000004rem 0.42000000000000004rem, 0.42000000000000004rem 0.42000000000000004rem;
237
+ --usk-native-select-indicator-position: calc(100% - 1.08rem) 50%, calc(100% - 0.78rem) 50%;
238
+ --usk-native-select-padding-inline-end: 2.4rem;
239
+ --usk-native-range-track-size: .5rem;
240
+ --usk-native-range-track-background: var(--terminal-surface-soft);
241
+ --usk-native-range-track-border: 1px solid var(--terminal-border);
242
+ --usk-native-range-track-radius: 0;
243
+ --usk-native-range-track-shadow: 0 0 9px var(--terminal-primary);
244
+ --usk-native-range-progress-background: var(--terminal-primary);
245
+ --usk-native-range-thumb-size: 1.1rem;
246
+ --usk-native-range-thumb-background: var(--terminal-surface-strong);
247
+ --usk-native-range-thumb-border: 1px solid var(--terminal-border);
248
+ --usk-native-range-thumb-radius: 0;
249
+ --usk-native-range-thumb-shadow: 0 0 9px var(--terminal-primary);
250
+ --usk-native-progress-size: .62rem;
251
+ --usk-native-progress-track-background: var(--terminal-surface-soft);
252
+ --usk-native-progress-track-border: 1px solid var(--terminal-border);
253
+ --usk-native-progress-track-radius: 0;
254
+ --usk-native-progress-track-shadow: 0 0 9px var(--terminal-primary);
255
+ --usk-native-progress-value-background: var(--terminal-primary);
256
+ --usk-native-progress-value-radius: 0;
257
+ --usk-native-progress-value-shadow: 0 0 9px var(--terminal-primary);
258
+ --usk-native-meter-optimum-background: var(--terminal-success);
259
+ --usk-native-meter-suboptimum-background: var(--terminal-warning);
260
+ --usk-native-meter-critical-background: var(--terminal-danger);
261
+ --usk-native-file-button-background: var(--terminal-primary);
262
+ --usk-native-file-button-border: 1px solid var(--terminal-border);
263
+ --usk-native-file-button-radius: 0;
264
+ --usk-native-file-button-shadow: 0 0 9px var(--terminal-primary);
265
+ --usk-native-color-swatch-border: 1px solid var(--terminal-border);
266
+ --usk-native-color-swatch-radius: 0;
267
+ --usk-native-indicator-opacity: 0.82;
268
+ --usk-native-indicator-filter: none;
269
+ --usk-native-scrollbar-size: .65rem;
270
+ --usk-native-scrollbar-track: var(--terminal-surface-soft);
271
+ --usk-native-scrollbar-thumb: var(--terminal-primary);
272
+ --usk-native-scrollbar-radius: 0;
125
273
  --terminal-bg: rgb(var(--terminal-bg-rgb));
126
274
  --terminal-surface: rgb(var(--terminal-surface-rgb) / var(--terminal-panel-alpha));
127
275
  --terminal-surface-strong: rgb(var(--terminal-surface-strong-rgb) / var(--terminal-panel-alpha));
@@ -162,7 +310,7 @@
162
310
  }
163
311
 
164
312
  @supports (color: color-mix(in srgb, black, white)) {
165
- [data-ui="data-terminal"][data-theme][data-mode] { --terminal-border: color-mix(in srgb, rgb(var(--terminal-border-rgb) / max(var(--terminal-border-alpha), var(--usk-border-min-alpha))), var(--terminal-text) var(--usk-border-text-mix)); }
313
+ [data-ui="data-terminal"][data-mode] { --terminal-border: color-mix(in srgb, rgb(var(--terminal-border-rgb) / max(var(--terminal-border-alpha), var(--usk-border-min-alpha))), var(--terminal-text) var(--usk-border-text-mix)); }
166
314
  }
167
315
 
168
316
 
@@ -214,7 +362,7 @@
214
362
  [data-ui="data-terminal"] *::before,
215
363
  [data-ui="data-terminal"] *::after { box-sizing: border-box; }
216
364
 
217
- [data-ui="data-terminal"][data-theme][data-mode] { background: var(--terminal-theme-bg); background-size: var(--terminal-theme-bg-size); }
365
+ [data-ui="data-terminal"][data-mode] { background: var(--terminal-theme-bg); background-size: var(--terminal-theme-bg-size); }
218
366
 
219
367
  .terminal-page { min-height: 100vh; padding: clamp(1rem, 4vw, 3rem); }
220
368
  .terminal-container { width: min(100% - 2rem, 1200px); margin-inline: auto; }
@@ -231,7 +379,7 @@
231
379
  .terminal-title, .terminal-heading, .terminal-kicker, .terminal-button, .terminal-badge, .terminal-nav-link { font-family: var(--terminal-font-heading); }
232
380
  .terminal-title { margin: 0; color: var(--terminal-text); font-size: clamp(2rem, 5vw, 3.7rem); line-height: 1.02; letter-spacing: -0.045em; }
233
381
  .terminal-heading { margin: 0; color: var(--terminal-text); font-size: clamp(1.2rem, 2.5vw, 2rem); line-height: 1.15; letter-spacing: -0.03em; }
234
- .terminal-kicker { margin: 0; color: var(--terminal-primary); font-size: .82rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
382
+ .terminal-kicker { margin: 0; color: var(--usk-primary-ink, var(--terminal-primary)); font-size: .82rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
235
383
  .terminal-subtitle, .terminal-copy { margin: 0; color: var(--terminal-text-muted); line-height: 1.65; }
236
384
  .terminal-text-muted { color: var(--terminal-text-muted); }
237
385
  .terminal-divider { width: 100%; height: 1px; border: 0; background: var(--terminal-border); }
@@ -281,7 +429,8 @@
281
429
  /* Theme-responsive component defaults */
282
430
  .terminal-card, .terminal-panel { background: var(--terminal-card-bg); }
283
431
  .terminal-toolbar, .terminal-table-wrap { background: var(--terminal-control-bg); }
284
- .terminal-button:not(.terminal-button-primary):not(.terminal-button-secondary):not(.terminal-button-danger):not(.terminal-button-ghost), .terminal-icon-button { background: var(--terminal-control-bg); }
432
+ .terminal-button:not(.terminal-button-primary):not(.terminal-button-secondary):not(.terminal-button-danger):not(.terminal-button-warning):not(.terminal-button-ghost):not(.is-active):not([aria-pressed="true"]),
433
+ .terminal-icon-button:not(.is-active):not([aria-pressed="true"]) { background: var(--terminal-control-bg); }
285
434
  .terminal-button, .terminal-icon-button, .terminal-badge, .terminal-nav-link { font-family: var(--terminal-font-control); }
286
435
 
287
436
 
@@ -365,7 +514,7 @@
365
514
  Utilities
366
515
  ========================================================= */
367
516
 
368
- .terminal-text-primary { color: var(--terminal-primary); } .terminal-text-secondary { color: var(--terminal-secondary); } .terminal-text-accent { color: var(--terminal-accent); } .terminal-text-success { color: var(--terminal-success); } .terminal-text-warning { color: var(--terminal-warning); } .terminal-text-danger { color: var(--terminal-danger); }
517
+ .terminal-text-primary { color: var(--usk-primary-ink, var(--terminal-primary)); } .terminal-text-secondary { color: var(--terminal-secondary); } .terminal-text-accent { color: var(--usk-accent-ink, var(--terminal-accent)); } .terminal-text-success { color: var(--terminal-success); } .terminal-text-warning { color: var(--terminal-warning); } .terminal-text-danger { color: var(--terminal-danger); }
369
518
  .terminal-bg-primary { background: var(--terminal-primary); color: var(--terminal-on-primary); } .terminal-bg-secondary { background: var(--terminal-secondary); color: var(--terminal-on-secondary); }
370
519
  .terminal-border { border: 1px solid var(--terminal-border); } .terminal-rounded { border-radius: var(--terminal-radius-md); } .terminal-rounded-lg { border-radius: var(--terminal-radius-lg); } .terminal-rounded-xl { border-radius: var(--terminal-radius-xl); } .terminal-pill { border-radius: var(--terminal-radius-pill); }
371
520
  .terminal-sr-only, .terminal-visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
@@ -473,7 +622,7 @@
473
622
  .terminal-button.terminal-button-outline-heavy,
474
623
  .terminal-button-outline-heavy {
475
624
  background: transparent;
476
- color: var(--terminal-primary);
625
+ color: var(--usk-primary-ink, var(--terminal-primary));
477
626
  border-style: solid;
478
627
  border-width: 2px;
479
628
  border-color: var(--terminal-primary);
@@ -509,7 +658,6 @@
509
658
  .terminal-feature-strip {
510
659
  display: grid;
511
660
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
512
- overflow: hidden;
513
661
  background: var(--terminal-card-bg);
514
662
  color: var(--terminal-text);
515
663
  border: 1px solid var(--terminal-border);
@@ -544,7 +692,7 @@
544
692
 
545
693
  .terminal-eyebrow {
546
694
  margin: 0;
547
- color: var(--terminal-primary);
695
+ color: var(--usk-primary-ink, var(--terminal-primary));
548
696
  font-family: var(--terminal-font-heading);
549
697
  font-size: .76rem;
550
698
  font-weight: 900;
@@ -609,7 +757,7 @@
609
757
  --terminal-radius-xl: .2rem;
610
758
  }
611
759
  [data-ui="data-terminal"] { font-family: var(--terminal-font-body); font-size: .94rem; }
612
- [data-ui="data-terminal"][data-theme][data-mode] {
760
+ [data-ui="data-terminal"][data-mode] {
613
761
  --terminal-theme-bg: linear-gradient(rgb(var(--terminal-primary-rgb) / .035) 1px, transparent 1px), linear-gradient(90deg, rgb(var(--terminal-border-rgb) / .07) 1px, transparent 1px), var(--terminal-bg);
614
762
  --terminal-theme-bg-size: 4px 4px, 3rem 3rem, auto;
615
763
  --terminal-card-bg: rgb(var(--terminal-surface-rgb) / calc(var(--terminal-panel-alpha) * .84));
@@ -618,6 +766,7 @@
618
766
  .terminal-title { font-size: clamp(1.8rem, 4vw, 3.3rem); line-height: 1; font-weight: 700; }
619
767
  .terminal-heading { font-size: clamp(1rem, 2vw, 1.45rem); font-weight: 700; }
620
768
  .terminal-subtitle, .terminal-copy { line-height: 1.45; }
769
+ .terminal-copy a { display: inline-flex; align-items: center; min-block-size: 1.5rem; }
621
770
  .terminal-surface, .terminal-card, .terminal-panel, .terminal-toolbar, .terminal-table-wrap { border-radius: 0; box-shadow: none; background: var(--terminal-card-bg); }
622
771
  .terminal-card, .terminal-panel { padding: var(--terminal-space-4); }
623
772
  .terminal-button, .terminal-icon-button { border-radius: 0; box-shadow: none; font-family: var(--terminal-font-mono); text-transform: uppercase; font-size: .76rem; letter-spacing: .055em; }
@@ -626,15 +775,16 @@
626
775
  .terminal-input, .terminal-textarea, .terminal-select, .terminal-badge, .terminal-alert, .terminal-metric, .terminal-well, .terminal-inset { border-radius: 0; font-family: var(--terminal-font-mono); }
627
776
  .terminal-table { font-family: var(--terminal-font-mono); font-size: .78rem; }
628
777
  .terminal-table th, .terminal-table td { padding: .5rem .6rem; }
629
- .terminal-metric-value { font-family: var(--terminal-font-mono); font-size: clamp(1.35rem, 2.6vw, 2rem); color: var(--terminal-primary); }
778
+ .terminal-metric-value { font-family: var(--terminal-font-mono); font-size: clamp(1.35rem, 2.6vw, 2rem); color: var(--usk-primary-ink, var(--terminal-primary)); }
630
779
  .terminal-text-primary, .terminal-kicker, .terminal-eyebrow { text-shadow: 0 0 .75rem rgb(var(--terminal-primary-rgb) / .28); }
631
780
  .terminal-card-media, .terminal-media-scrim, .terminal-feature-strip, .terminal-callout-bar { border-radius: 0; }
632
- .terminal-icon-medallion, .terminal-badge-seal { border-radius: 0; background: transparent; color: var(--terminal-primary); font-family: var(--terminal-font-mono); box-shadow: none; }
781
+ .terminal-icon-medallion, .terminal-badge-seal { border-radius: 0; background: transparent; color: var(--usk-primary-ink, var(--terminal-primary)); font-family: var(--terminal-font-mono); box-shadow: none; }
633
782
  .terminal-feature-item { padding: .75rem; }
634
783
  .terminal-card-accent-edge { border-inline-start-width: 2px; }
635
784
 
636
785
  /* Filled and framed actions share command brackets and restrained terminal glow. */
637
786
  .terminal-button.terminal-button-cut, .terminal-button-cut {
787
+ min-block-size: 2.75rem;
638
788
  min-inline-size: 6rem;
639
789
  max-inline-size: 100%;
640
790
  justify-self: start;
@@ -654,12 +804,12 @@
654
804
  border-radius: 0;
655
805
  box-shadow: inset .25rem 0 0 rgb(var(--terminal-primary-rgb) / .22), 0 0 .75rem rgb(var(--terminal-primary-rgb) / .2);
656
806
  }
657
- [data-ui="data-terminal"][data-theme][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
807
+ [data-ui="data-terminal"][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
658
808
  border: 1px solid var(--terminal-primary);
659
809
  border-radius: 0;
660
810
  box-shadow: inset .2rem 0 0 rgb(var(--terminal-primary-rgb) / .22), 0 0 .6rem rgb(var(--terminal-primary-rgb) / .24);
661
811
  }
662
- [data-ui="data-terminal"][data-theme][data-mode] :where(dialog) {
812
+ [data-ui="data-terminal"][data-mode] :where(dialog) {
663
813
  border: 1px solid var(--terminal-primary);
664
814
  border-radius: 0;
665
815
  box-shadow: inset .28rem 0 0 rgb(var(--terminal-primary-rgb) / .24), 0 0 .9rem rgb(var(--terminal-primary-rgb) / .24), 0 1rem 2rem rgb(var(--terminal-text-rgb) / .22);
@@ -673,6 +823,153 @@
673
823
  border: .09em solid currentColor; border-radius: 0; background: conic-gradient(currentColor 0 20%, transparent 0 32%, currentColor 0 46%, transparent 0 72%, currentColor 0 84%, transparent 0); box-shadow: 0 0 .38em currentColor; clip-path: polygon(0 0, 45% 0, 45% 18%, 18% 18%, 18% 45%, 0 45%, 0 0, 100% 0, 100% 100%, 55% 100%, 55% 82%, 82% 82%, 82% 55%, 100% 55%); animation: terminal-spin .76s steps(4, end) infinite;
674
824
  }
675
825
 
826
+ /**
827
+ * Final Data Terminal fidelity layer.
828
+ * Keeps every control on the same dense one-pixel command grid.
829
+ */
830
+ [data-ui="data-terminal"][data-mode] {
831
+ --terminal-command-plane:
832
+ repeating-linear-gradient(0deg, rgb(var(--terminal-primary-rgb) / .1) 0 1px, transparent 1px 4px),
833
+ linear-gradient(145deg, rgb(var(--terminal-primary-rgb) / .22), rgb(var(--terminal-surface-rgb) / .94) 52%, rgb(var(--terminal-secondary-rgb) / .16));
834
+ --terminal-card-bg: var(--terminal-command-plane);
835
+ --usk-native-card-bg: var(--terminal-command-plane);
836
+ --usk-native-font-control: ui-monospace, Consolas, "Liberation Mono", monospace;
837
+ --usk-native-control-min-block-size: 2.2rem;
838
+ --usk-native-control-padding-block: .31rem;
839
+ --usk-native-control-padding-inline: .62rem;
840
+ --usk-native-border-width: 1px;
841
+ --usk-native-radius-sm: 0;
842
+ --usk-native-radius: 0;
843
+ --usk-native-radius-lg: 0;
844
+ --usk-native-shadow: none;
845
+ --usk-native-shadow-md: none;
846
+ --usk-native-focus-ring: 0 0 0 1px var(--terminal-focus);
847
+ --usk-native-subcontrol-padding-block: .28rem;
848
+ --usk-native-subcontrol-padding-inline: .48rem;
849
+ --usk-native-choice-size: 1rem;
850
+ --usk-native-choice-background: var(--terminal-control-bg);
851
+ --usk-native-choice-border: 1px solid var(--terminal-text-muted);
852
+ --usk-native-checkbox-radius: 0;
853
+ --usk-native-radio-radius: 0;
854
+ --usk-native-choice-shadow: inset 0 0 0 1px var(--terminal-surface);
855
+ --usk-native-choice-checked-background: linear-gradient(var(--terminal-primary), var(--terminal-primary));
856
+ --usk-native-choice-mark-color: var(--terminal-on-primary);
857
+ --usk-native-select-indicator-image: linear-gradient(90deg, transparent 38%, var(--terminal-primary) 38% 62%, transparent 62%);
858
+ --usk-native-select-indicator-size: .72rem .5rem;
859
+ --usk-native-select-indicator-position: calc(100% - .66rem) 50%;
860
+ --usk-native-select-padding-inline-end: 1.65rem;
861
+ --usk-native-range-track-size: .32rem;
862
+ --usk-native-range-track-background: repeating-linear-gradient(90deg, var(--terminal-primary) 0 1px, transparent 1px .5rem), var(--terminal-surface-soft);
863
+ --usk-native-range-track-border: 1px solid var(--terminal-text-muted);
864
+ --usk-native-range-track-radius: 0;
865
+ --usk-native-range-track-shadow: none;
866
+ --usk-native-range-progress-background: linear-gradient(90deg, var(--terminal-success), var(--terminal-warning), var(--terminal-danger));
867
+ --usk-native-range-thumb-size: .9rem;
868
+ --usk-native-range-thumb-background: var(--terminal-text);
869
+ --usk-native-range-thumb-border: 1px solid var(--terminal-surface);
870
+ --usk-native-range-thumb-radius: 0;
871
+ --usk-native-range-thumb-shadow: 0 0 0 1px var(--terminal-primary);
872
+ --usk-native-progress-size: .58rem;
873
+ --usk-native-progress-track-background: repeating-linear-gradient(90deg, var(--terminal-surface-soft) 0 .48rem, var(--terminal-border) .48rem .54rem);
874
+ --usk-native-progress-track-border: 1px solid var(--terminal-text-muted);
875
+ --usk-native-progress-track-radius: 0;
876
+ --usk-native-progress-track-shadow: none;
877
+ --usk-native-progress-value-background: repeating-linear-gradient(90deg, var(--terminal-primary) 0 .48rem, transparent .48rem .54rem);
878
+ --usk-native-progress-value-radius: 0;
879
+ --usk-native-progress-value-shadow: none;
880
+ --usk-native-scrollbar-size: .6rem;
881
+ --usk-native-scrollbar-track: var(--terminal-surface);
882
+ --usk-native-scrollbar-thumb: linear-gradient(var(--terminal-primary), var(--terminal-primary));
883
+ --usk-native-scrollbar-radius: 0;
884
+ }
885
+
886
+ .terminal-title { margin-block: .75rem;
887
+ font-weight: 700;
888
+ letter-spacing: max(.05em, .5px);
889
+ }
890
+
891
+ .terminal-label {
892
+ font-size: .7rem;
893
+ font-weight: 700;
894
+ }
895
+
896
+ .terminal-card,
897
+ .terminal-panel {
898
+ padding: .78rem;
899
+ background: var(--terminal-card-bg);
900
+ border: 1px solid var(--terminal-border);
901
+ border-radius: 0;
902
+ box-shadow: none;
903
+ }
904
+
905
+ .terminal-well,
906
+ .terminal-inset {
907
+ padding: .58rem;
908
+ background: var(--terminal-control-bg);
909
+ border: 1px dashed var(--terminal-border);
910
+ border-radius: 0;
911
+ box-shadow: inset .2rem 0 0 rgb(var(--terminal-primary-rgb) / .22);
912
+ }
913
+
914
+ .terminal-button,
915
+ .terminal-icon-button {
916
+ min-height: 2.2rem;
917
+ padding: .38rem .62rem;
918
+ background: var(--terminal-control-bg);
919
+ border: 1px solid var(--terminal-primary);
920
+ border-radius: 0;
921
+ box-shadow: none;
922
+ font-weight: 700;
923
+ }
924
+
925
+ .terminal-button::before { content: "["; margin-inline-end: .38em; }
926
+ .terminal-button::after { content: "]"; margin-inline-start: .38em; }
927
+ .terminal-button:active, .terminal-button[aria-pressed="true"], .terminal-button.is-active { color: var(--terminal-on-primary); background: var(--terminal-primary); }
928
+ .terminal-button:disabled, .terminal-disabled { color: var(--terminal-text-muted); border-color: var(--terminal-text-muted); box-shadow: none; }
929
+
930
+ .terminal-input,
931
+ .terminal-textarea,
932
+ .terminal-select {
933
+ min-height: 2.1rem;
934
+ padding: .34rem .52rem;
935
+ background: var(--terminal-control-bg);
936
+ border: 1px solid var(--terminal-text-muted);
937
+ border-radius: 0;
938
+ box-shadow: inset .16rem 0 0 rgb(var(--terminal-primary-rgb) / .28);
939
+ }
940
+
941
+ .terminal-nav, .terminal-toolbar, .terminal-feature-strip { gap: 1px; padding: 1px; border: 1px solid var(--terminal-border); border-radius: 0; box-shadow: none; }
942
+ .terminal-nav-link { min-height: 1.9rem; padding: .3rem .52rem; border-radius: 0; }
943
+ .terminal-badge { min-height: 1.3rem; padding: .18rem .38rem; border: 1px solid currentColor; border-radius: 0; font-family: var(--terminal-font-mono); }
944
+ .terminal-alert { padding: .52rem .62rem; background: var(--terminal-control-bg); border: 1px solid currentColor; border-radius: 0; box-shadow: none; }
945
+ .terminal-progress { height: .58rem; background: repeating-linear-gradient(90deg, var(--terminal-surface-soft) 0 .48rem, var(--terminal-border) .48rem .54rem); border-radius: 0; }
946
+ .terminal-progress-bar { background: repeating-linear-gradient(90deg, var(--terminal-primary) 0 .48rem, transparent .48rem .54rem); border-radius: 0; box-shadow: none; }
947
+ .terminal-table-wrap { background: var(--terminal-surface); border: 1px solid var(--terminal-border); border-radius: 0; box-shadow: none; }
948
+ .terminal-table { border-collapse: collapse; font-variant-numeric: tabular-nums; }
949
+ .terminal-table th { padding: .38rem .46rem; background: var(--terminal-control-bg); border: 1px solid var(--terminal-border); font-weight: 700; }
950
+ .terminal-table td { padding: .34rem .46rem; border: 1px solid var(--terminal-border); }
951
+ .terminal-table tr:hover td { color: var(--terminal-on-primary); background: var(--terminal-primary); }
952
+ .terminal-tooltip, [data-ui="data-terminal"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) { border: 1px dashed var(--terminal-warning); border-radius: 0; box-shadow: none; }
953
+ .terminal-card-service, .terminal-card-feature, .terminal-media-scrim, .terminal-callout-bar { border-radius: 0; box-shadow: none; }
954
+
955
+ /* Command planes use compact signal rails instead of broad decorative striping. */
956
+ @supports (color: color-mix(in srgb, black, white)) {
957
+ [data-ui="data-terminal"][data-mode] {
958
+ --usk-native-card-bg: var(--terminal-card-bg);
959
+ --usk-native-control-bg: color-mix(in srgb, var(--terminal-surface-soft) 88%, var(--terminal-primary));
960
+ }
961
+ .terminal-panel,
962
+ .terminal-card-service,
963
+ .terminal-feature-strip,
964
+ .terminal-callout-bar {
965
+ background:
966
+ linear-gradient(90deg, var(--terminal-primary) 0 28%, var(--terminal-warning) 28% 38%, transparent 38%) top / 100% 2px no-repeat,
967
+ var(--terminal-card-bg);
968
+ }
969
+ }
970
+ .terminal-input { border-radius: .01rem; }
971
+ .terminal-alert { border-radius: .015rem; }
972
+
676
973
  @media (prefers-reduced-motion: reduce) {
677
974
  [data-ui="data-terminal"] *, [data-ui="data-terminal"] *::before, [data-ui="data-terminal"] *::after { scroll-behavior: auto !important; transition-duration: 1ms !important; animation-duration: 1ms !important; animation-iteration-count: 1 !important; }
678
975
  }
@@ -689,3 +986,810 @@
689
986
  [data-ui="data-terminal"] a { color: #000 !important; text-decoration: underline; }
690
987
  }
691
988
  }
989
+
990
+ @layer ui-style-kit.data_terminal {
991
+ /* Keeps semantic field states above preset-specific material paint. */
992
+ .terminal-input[aria-invalid="true"], .terminal-textarea[aria-invalid="true"], .terminal-select[aria-invalid="true"] { border-color: var(--terminal-danger); box-shadow: 0 0 0 2px rgb(var(--terminal-danger-rgb) / .2); }
993
+ .terminal-input[readonly], .terminal-textarea[readonly] { border-style: dashed; filter: saturate(.72); opacity: .78; }
994
+ /* Restores semantic action paint after identity-specific geometry. */
995
+ .terminal-button-primary { background: var(--terminal-primary); color: var(--terminal-on-primary); border-color: var(--terminal-primary); }
996
+ .terminal-button-secondary { background: var(--terminal-secondary); color: var(--terminal-on-secondary); border-color: var(--terminal-secondary); }
997
+ .terminal-button-danger { background: var(--terminal-danger); color: var(--terminal-on-danger); border-color: var(--terminal-danger); }
998
+ .terminal-button-ghost { background: transparent; color: var(--usk-primary-ink, var(--terminal-primary)); border-color: transparent; }
999
+ }
1000
+
1001
+ @layer ui-style-kit.data_terminal {
1002
+ /* Shared annotation fidelity: readable display rhythm and appropriately scaled text icons. */
1003
+ .terminal-feature-item > .terminal-icon-medallion { font-size: 1.5rem; line-height: 1; }
1004
+ .terminal-callout-bar > .terminal-icon-medallion { min-inline-size: 4.5rem; min-block-size: 4.5rem; font-size: 2rem; font-weight: 800; line-height: 1; }
1005
+ }
1006
+
1007
+ @layer ui-style-kit.data_terminal {
1008
+ /**
1009
+ * Establishes the paired neutral command planes from the retained Data
1010
+ * Terminal references while keeping interactive and semantic color roles
1011
+ * connected to the active library theme.
1012
+ */
1013
+ [data-ui="data-terminal"]:not([data-theme])[data-mode="light"] {
1014
+ --terminal-text-rgb: 20 22 21;
1015
+ --terminal-text-muted-rgb: 84 87 84;
1016
+ --terminal-border-rgb: 137 140 136;
1017
+ --terminal-primary-rgb: 22 82 190;
1018
+ --terminal-primary-hover-rgb: 15 66 158;
1019
+ --terminal-primary-text-rgb: 255 255 255;
1020
+ --terminal-secondary-rgb: 24 111 138;
1021
+ --terminal-secondary-hover-rgb: 16 86 108;
1022
+ --terminal-secondary-text-rgb: 255 255 255;
1023
+ --terminal-accent-rgb: 190 111 0;
1024
+ --terminal-accent-text-rgb: 20 22 21;
1025
+ --terminal-success-rgb: 36 132 55;
1026
+ --terminal-success-text-rgb: 255 255 255;
1027
+ --terminal-warning-rgb: 190 111 0;
1028
+ --terminal-warning-text-rgb: 20 22 21;
1029
+ --terminal-danger-rgb: 211 43 50;
1030
+ --terminal-danger-text-rgb: 255 255 255;
1031
+ --terminal-link-rgb: 22 82 190;
1032
+ --terminal-focus-rgb: 22 82 190;
1033
+ }
1034
+
1035
+ [data-ui="data-terminal"]:not([data-theme])[data-mode="dark"] {
1036
+ --terminal-text-rgb: 236 237 232;
1037
+ --terminal-text-muted-rgb: 164 166 160;
1038
+ --terminal-border-rgb: 163 116 0;
1039
+ --terminal-primary-rgb: 52 125 255;
1040
+ --terminal-primary-hover-rgb: 100 156 255;
1041
+ --terminal-primary-text-rgb: 0 0 0;
1042
+ --terminal-secondary-rgb: 52 171 213;
1043
+ --terminal-secondary-hover-rgb: 93 199 235;
1044
+ --terminal-secondary-text-rgb: 0 0 0;
1045
+ --terminal-accent-rgb: 255 176 0;
1046
+ --terminal-accent-text-rgb: 0 0 0;
1047
+ --terminal-success-rgb: 74 205 84;
1048
+ --terminal-success-text-rgb: 0 0 0;
1049
+ --terminal-warning-rgb: 255 176 0;
1050
+ --terminal-warning-text-rgb: 0 0 0;
1051
+ --terminal-danger-rgb: 255 71 78;
1052
+ --terminal-danger-text-rgb: 0 0 0;
1053
+ --terminal-link-rgb: 82 151 255;
1054
+ --terminal-focus-rgb: 82 151 255;
1055
+ }
1056
+
1057
+ [data-ui="data-terminal"]:not([data-theme])[data-mode="contrast"] {
1058
+ --terminal-text-rgb: 255 255 255;
1059
+ --terminal-text-muted-rgb: 224 224 224;
1060
+ --terminal-border-rgb: 255 212 0;
1061
+ --terminal-primary-rgb: 92 153 255;
1062
+ --terminal-primary-hover-rgb: 132 179 255;
1063
+ --terminal-primary-text-rgb: 0 0 0;
1064
+ --terminal-secondary-rgb: 78 224 255;
1065
+ --terminal-secondary-hover-rgb: 130 235 255;
1066
+ --terminal-secondary-text-rgb: 0 0 0;
1067
+ --terminal-accent-rgb: 255 212 0;
1068
+ --terminal-accent-text-rgb: 0 0 0;
1069
+ --terminal-success-rgb: 92 255 105;
1070
+ --terminal-success-text-rgb: 0 0 0;
1071
+ --terminal-warning-rgb: 255 212 0;
1072
+ --terminal-warning-text-rgb: 0 0 0;
1073
+ --terminal-danger-rgb: 255 96 102;
1074
+ --terminal-danger-text-rgb: 0 0 0;
1075
+ --terminal-link-rgb: 126 176 255;
1076
+ --terminal-focus-rgb: 255 255 255;
1077
+ }
1078
+
1079
+ [data-ui="data-terminal"][data-mode="light"] {
1080
+ --terminal-document-bg-rgb: 250 250 246;
1081
+ --terminal-document-cell-rgb: 255 255 252;
1082
+ --terminal-document-cell-muted-rgb: 246 246 241;
1083
+ }
1084
+
1085
+ [data-ui="data-terminal"][data-mode="dark"] {
1086
+ --terminal-document-bg-rgb: 2 4 3;
1087
+ --terminal-document-cell-rgb: 0 0 0;
1088
+ --terminal-document-cell-muted-rgb: 8 10 9;
1089
+ }
1090
+
1091
+ [data-ui="data-terminal"][data-mode="contrast"] {
1092
+ --terminal-document-bg-rgb: 0 0 0;
1093
+ --terminal-document-cell-rgb: 0 0 0;
1094
+ --terminal-document-cell-muted-rgb: 0 0 0;
1095
+ }
1096
+
1097
+ [data-ui="data-terminal"]:not([data-theme])[data-mode] {
1098
+ --terminal-bg: rgb(var(--terminal-document-bg-rgb));
1099
+ --terminal-surface: rgb(var(--terminal-document-cell-rgb));
1100
+ --terminal-surface-strong: var(--terminal-surface);
1101
+ --terminal-surface-soft: rgb(var(--terminal-document-cell-muted-rgb));
1102
+ --terminal-border: rgb(var(--terminal-border-rgb) / max(var(--terminal-border-alpha), var(--usk-border-min-alpha)));
1103
+ --terminal-theme-bg: var(--terminal-bg);
1104
+ --terminal-theme-bg-size: auto;
1105
+ --terminal-card-bg: var(--terminal-surface);
1106
+ --terminal-control-bg: var(--terminal-surface);
1107
+ --usk-native-surface: var(--terminal-surface);
1108
+ --usk-native-surface-strong: var(--terminal-surface);
1109
+ --usk-native-surface-soft: var(--terminal-surface-soft);
1110
+ --usk-native-card-bg: var(--terminal-surface);
1111
+ --usk-native-control-bg: var(--terminal-control-bg);
1112
+ --usk-native-control-min-block-size: 1.75rem;
1113
+ --usk-native-control-padding-block: .16rem;
1114
+ --usk-native-control-padding-inline: .45rem;
1115
+ --usk-native-subcontrol-padding-block: .2rem;
1116
+ --usk-native-subcontrol-padding-inline: .4rem;
1117
+ --usk-native-field-gap: .35rem;
1118
+ --usk-native-panel-padding: .5rem;
1119
+ --usk-native-choice-size: .875rem;
1120
+ --usk-native-shadow: none;
1121
+ --usk-native-shadow-md: none;
1122
+ }
1123
+
1124
+ /**
1125
+ * Resolves the bundled fallback channels for standalone consumers. Explicit
1126
+ * theme selectors are more specific and therefore replace these defaults.
1127
+ */
1128
+ [data-ui="data-terminal"]:not([data-theme])[data-mode] {
1129
+ --terminal-text: rgb(var(--terminal-text-rgb));
1130
+ --terminal-text-muted: rgb(var(--terminal-text-muted-rgb));
1131
+ --terminal-fg: var(--terminal-text);
1132
+ --terminal-surface-fg: var(--terminal-text);
1133
+ --terminal-muted: var(--terminal-text-muted);
1134
+ --terminal-border: rgb(var(--terminal-border-rgb));
1135
+ --terminal-control-fg: var(--terminal-text);
1136
+ --terminal-primary: rgb(var(--terminal-primary-rgb));
1137
+ --terminal-primary-hover: rgb(var(--terminal-primary-hover-rgb));
1138
+ --terminal-primary-text: rgb(var(--terminal-primary-text-rgb));
1139
+ --terminal-secondary: rgb(var(--terminal-secondary-rgb));
1140
+ --terminal-secondary-hover: rgb(var(--terminal-secondary-hover-rgb));
1141
+ --terminal-secondary-text: rgb(var(--terminal-secondary-text-rgb));
1142
+ --terminal-on-primary: var(--terminal-primary-text);
1143
+ --terminal-on-secondary: var(--terminal-secondary-text);
1144
+ --terminal-on-accent: rgb(var(--terminal-accent-text-rgb));
1145
+ --terminal-on-success: rgb(var(--terminal-success-text-rgb));
1146
+ --terminal-on-warning: rgb(var(--terminal-warning-text-rgb));
1147
+ --terminal-on-danger: rgb(var(--terminal-danger-text-rgb));
1148
+ --terminal-accent: rgb(var(--terminal-accent-rgb));
1149
+ --terminal-success: rgb(var(--terminal-success-rgb));
1150
+ --terminal-warning: rgb(var(--terminal-warning-rgb));
1151
+ --terminal-danger: rgb(var(--terminal-danger-rgb));
1152
+ --terminal-link: rgb(var(--terminal-link-rgb));
1153
+ --terminal-focus: rgb(var(--terminal-focus-rgb));
1154
+ --terminal-focus-ring: 0 0 0 2px var(--terminal-focus);
1155
+ --terminal-bg: rgb(var(--terminal-document-bg-rgb));
1156
+ --terminal-surface: rgb(var(--terminal-document-cell-rgb));
1157
+ --terminal-surface-strong: var(--terminal-surface);
1158
+ --terminal-surface-soft: rgb(var(--terminal-document-cell-muted-rgb));
1159
+ --terminal-theme-bg: var(--terminal-bg);
1160
+ --terminal-card-bg: var(--terminal-surface);
1161
+ --terminal-control-bg: var(--terminal-surface);
1162
+ --terminal-spinner-track: var(--terminal-border);
1163
+ --terminal-spinner-stroke: var(--terminal-primary);
1164
+ --terminal-spinner-accent: var(--terminal-accent);
1165
+ --usk-native-surface: var(--terminal-surface);
1166
+ --usk-native-surface-strong: var(--terminal-surface);
1167
+ --usk-native-surface-soft: var(--terminal-surface-soft);
1168
+ --usk-native-card-bg: var(--terminal-surface);
1169
+ --usk-native-control-bg: var(--terminal-surface);
1170
+ --usk-native-text: var(--terminal-text);
1171
+ --usk-native-text-muted: var(--terminal-text-muted);
1172
+ --usk-native-border: var(--terminal-border);
1173
+ --usk-native-primary: var(--terminal-primary);
1174
+ --usk-native-primary-hover: var(--terminal-primary-hover);
1175
+ --usk-native-on-primary: var(--terminal-on-primary);
1176
+ --usk-native-focus: var(--terminal-focus);
1177
+ --usk-native-success: var(--terminal-success);
1178
+ --usk-native-warning: var(--terminal-warning);
1179
+ --usk-native-danger: var(--terminal-danger);
1180
+ --usk-native-link: var(--terminal-link);
1181
+ --usk-native-font-body: var(--terminal-font-body);
1182
+ --usk-native-font-heading: var(--terminal-font-heading);
1183
+ --usk-native-font-control: var(--terminal-font-control);
1184
+ --usk-native-font-mono: var(--terminal-font-mono);
1185
+ --usk-native-shadow: none;
1186
+ --usk-native-shadow-md: none;
1187
+ }
1188
+
1189
+ [data-ui="data-terminal"] {
1190
+ --demo-component-heading-size: .75rem;
1191
+ background: var(--terminal-bg);
1192
+ font-family: "Cascadia Mono", Consolas, "Liberation Mono", ui-monospace, monospace;
1193
+ font-size: .8125rem;
1194
+ line-height: 1.35;
1195
+ }
1196
+
1197
+ .terminal-title {
1198
+ margin-block: .5rem;
1199
+ font-size: clamp(1.25rem, 2vw, 1.5rem);
1200
+ line-height: 1.05;
1201
+ letter-spacing: .025em;
1202
+ }
1203
+
1204
+ .terminal-heading {
1205
+ font-size: .75rem;
1206
+ line-height: 1.2;
1207
+ letter-spacing: .025em;
1208
+ }
1209
+
1210
+ .terminal-kicker,
1211
+ .terminal-eyebrow {
1212
+ font-size: .6875rem;
1213
+ line-height: 1.2;
1214
+ letter-spacing: .035em;
1215
+ text-shadow: none;
1216
+ }
1217
+
1218
+ .terminal-surface,
1219
+ .terminal-card,
1220
+ .terminal-panel,
1221
+ .terminal-toolbar,
1222
+ .terminal-table-wrap,
1223
+ .terminal-well,
1224
+ .terminal-inset,
1225
+ .terminal-input,
1226
+ .terminal-textarea,
1227
+ .terminal-select {
1228
+ background: var(--terminal-surface);
1229
+ border-radius: 0;
1230
+ box-shadow: none;
1231
+ }
1232
+
1233
+ /** Uses the signal channel as the one-pixel cell frame without adding elevation. */
1234
+ .terminal-card,
1235
+ .terminal-panel {
1236
+ padding: .5rem;
1237
+ border: 1px solid var(--terminal-primary);
1238
+ }
1239
+
1240
+ /**
1241
+ * Recreates the compact bracket-and-cell grammar used by the component
1242
+ * laboratory without changing the semantic action tokens supplied by themes.
1243
+ */
1244
+ .terminal-button,
1245
+ .terminal-icon-button {
1246
+ min-height: 1.875rem;
1247
+ padding: .3rem .65rem;
1248
+ background: var(--terminal-surface);
1249
+ border: 1px solid var(--terminal-border);
1250
+ border-radius: 0;
1251
+ box-shadow: none;
1252
+ font-size: .75rem;
1253
+ font-weight: 500;
1254
+ letter-spacing: .025em;
1255
+ line-height: 1;
1256
+ transform: none;
1257
+ }
1258
+
1259
+ .terminal-button:hover,
1260
+ .terminal-icon-button:hover {
1261
+ color: var(--usk-primary-ink, var(--terminal-primary));
1262
+ background: var(--terminal-surface);
1263
+ border-color: var(--terminal-primary);
1264
+ box-shadow: none;
1265
+ transform: none;
1266
+ }
1267
+
1268
+ .terminal-button-primary {
1269
+ color: var(--terminal-on-primary);
1270
+ background: var(--terminal-primary);
1271
+ border-color: var(--terminal-primary);
1272
+ }
1273
+
1274
+ .terminal-button-primary:hover {
1275
+ color: var(--terminal-on-primary);
1276
+ background: var(--terminal-primary-hover);
1277
+ border-color: var(--terminal-primary-hover);
1278
+ }
1279
+
1280
+ .terminal-button-secondary,
1281
+ .terminal-button-secondary:hover {
1282
+ color: var(--terminal-text);
1283
+ background: var(--terminal-surface);
1284
+ border-color: var(--terminal-border);
1285
+ }
1286
+
1287
+ .terminal-button-danger,
1288
+ .terminal-button-danger:hover {
1289
+ color: var(--terminal-danger);
1290
+ background: var(--terminal-surface);
1291
+ border-color: var(--terminal-danger);
1292
+ }
1293
+
1294
+ .terminal-button-ghost,
1295
+ .terminal-button-ghost:hover {
1296
+ color: var(--usk-primary-ink, var(--terminal-primary));
1297
+ background: transparent;
1298
+ border-color: transparent;
1299
+ }
1300
+
1301
+ .terminal-button:active,
1302
+ .terminal-button[aria-pressed="true"],
1303
+ .terminal-button.is-active {
1304
+ color: var(--terminal-on-primary);
1305
+ background: var(--terminal-primary);
1306
+ border-color: var(--terminal-primary);
1307
+ box-shadow: none;
1308
+ transform: none;
1309
+ }
1310
+
1311
+ .terminal-icon-button {
1312
+ display: inline-grid;
1313
+ place-items: center;
1314
+ inline-size: 1.875rem;
1315
+ block-size: 1.875rem;
1316
+ padding: 0;
1317
+ font-size: .875rem;
1318
+ font-weight: 500;
1319
+ line-height: 1;
1320
+ text-align: center;
1321
+ }
1322
+
1323
+ .terminal-label,
1324
+ .terminal-help-text {
1325
+ font-size: .6875rem;
1326
+ font-weight: 500;
1327
+ line-height: 1.25;
1328
+ }
1329
+
1330
+ .terminal-field { gap: .3rem; }
1331
+
1332
+ .terminal-input,
1333
+ .terminal-select {
1334
+ min-height: 1.875rem;
1335
+ padding: .25rem .45rem;
1336
+ border: 1px solid var(--terminal-border);
1337
+ box-shadow: none;
1338
+ font-size: .75rem;
1339
+ }
1340
+
1341
+ .terminal-select {
1342
+ -webkit-appearance: none;
1343
+ appearance: none;
1344
+ padding-inline-end: var(--usk-native-select-padding-inline-end);
1345
+ background-image: var(--usk-native-select-indicator-image);
1346
+ background-position: var(--usk-native-select-indicator-position);
1347
+ background-repeat: no-repeat;
1348
+ background-size: var(--usk-native-select-indicator-size);
1349
+ }
1350
+
1351
+ /**
1352
+ * Suppresses the browser-provided select affordance so native demo fields use
1353
+ * the same single terminal chevron as the class-based select component.
1354
+ */
1355
+ [data-ui="data-terminal"][data-mode] select:not([multiple]) {
1356
+ -webkit-appearance: none;
1357
+ appearance: none;
1358
+ }
1359
+
1360
+ .terminal-textarea {
1361
+ min-height: 4.5rem;
1362
+ padding: .35rem .45rem;
1363
+ border: 1px solid var(--terminal-border);
1364
+ box-shadow: none;
1365
+ font-size: .75rem;
1366
+ line-height: 1.3;
1367
+ }
1368
+
1369
+ [data-ui="data-terminal"][data-mode] {
1370
+ --usk-native-select-indicator-image:
1371
+ linear-gradient(45deg, transparent 50%, var(--terminal-text) 50%),
1372
+ linear-gradient(135deg, var(--terminal-text) 50%, transparent 50%);
1373
+ --usk-native-select-indicator-size: .35rem .35rem, .35rem .35rem;
1374
+ --usk-native-select-indicator-position: calc(100% - .8rem) 50%, calc(100% - .55rem) 50%;
1375
+ --usk-native-select-padding-inline-end: 1.6rem;
1376
+ }
1377
+
1378
+ .terminal-check,
1379
+ .terminal-radio,
1380
+ .terminal-switch {
1381
+ gap: .4rem;
1382
+ font-size: .75rem;
1383
+ }
1384
+
1385
+ .terminal-check-control,
1386
+ .terminal-radio-control {
1387
+ position: relative;
1388
+ display: inline-grid;
1389
+ place-items: center;
1390
+ inline-size: 1rem;
1391
+ block-size: 1rem;
1392
+ flex: 0 0 1rem;
1393
+ background: var(--terminal-surface);
1394
+ border: 1px solid var(--terminal-border);
1395
+ border-radius: 0;
1396
+ box-shadow: none;
1397
+ }
1398
+
1399
+ .terminal-check input:checked + .terminal-check-control,
1400
+ .terminal-radio input:checked + .terminal-radio-control {
1401
+ background: var(--terminal-surface);
1402
+ border-color: var(--terminal-primary);
1403
+ box-shadow: none;
1404
+ }
1405
+
1406
+ .terminal-check input:checked + .terminal-check-control::after {
1407
+ position: absolute;
1408
+ inset: 0;
1409
+ display: grid;
1410
+ place-items: center;
1411
+ color: var(--usk-primary-ink, var(--terminal-primary));
1412
+ font-family: "Segoe UI Symbol", sans-serif;
1413
+ font-size: .7rem;
1414
+ font-weight: 700;
1415
+ line-height: 1;
1416
+ }
1417
+
1418
+ .terminal-radio input:checked + .terminal-radio-control::after {
1419
+ inline-size: .38rem;
1420
+ block-size: .38rem;
1421
+ background: var(--terminal-primary);
1422
+ border-radius: 0;
1423
+ }
1424
+
1425
+ .terminal-switch-track {
1426
+ display: inline-grid;
1427
+ place-items: center;
1428
+ inline-size: 3.75rem;
1429
+ block-size: 1.25rem;
1430
+ color: var(--terminal-text);
1431
+ background: var(--terminal-surface);
1432
+ border: 1px solid var(--terminal-border);
1433
+ border-radius: 0;
1434
+ box-shadow: none;
1435
+ }
1436
+
1437
+ .terminal-switch-track::before {
1438
+ content: "[ OFF ]";
1439
+ font-family: var(--terminal-font-mono);
1440
+ font-size: .625rem;
1441
+ line-height: 1;
1442
+ }
1443
+
1444
+ .terminal-switch-thumb {
1445
+ display: none;
1446
+ border-radius: 0;
1447
+ }
1448
+
1449
+ .terminal-switch input:checked + .terminal-switch-track {
1450
+ color: var(--terminal-success);
1451
+ background: var(--terminal-surface);
1452
+ border-color: var(--terminal-success);
1453
+ }
1454
+
1455
+ .terminal-switch input:checked + .terminal-switch-track::before { content: "[ ON ]"; }
1456
+
1457
+ .terminal-tooltip,
1458
+ [data-ui="data-terminal"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) {
1459
+ padding: .45rem .6rem;
1460
+ color: var(--terminal-warning);
1461
+ background: var(--terminal-surface);
1462
+ border: 1px dashed var(--terminal-warning);
1463
+ border-radius: 0;
1464
+ box-shadow: none;
1465
+ font-size: .75rem;
1466
+ font-weight: 400;
1467
+ line-height: 1.35;
1468
+ }
1469
+
1470
+ .terminal-tooltip-arrow {
1471
+ align-self: center;
1472
+ background: var(--terminal-surface);
1473
+ border: 1px solid var(--terminal-warning);
1474
+ border-inline-end: 0;
1475
+ border-block-end: 0;
1476
+ border-radius: 0;
1477
+ transform: translateY(.17rem) rotate(45deg);
1478
+ }
1479
+
1480
+ /**
1481
+ * Builds a five-cell activity track with a single signal cell that advances
1482
+ * from left to right. The real inline width keeps the loader inside flex and
1483
+ * grid calculations instead of relying on visually overflowing shadows.
1484
+ */
1485
+ .terminal-spinner,
1486
+ .terminal-loading-spinner,
1487
+ [data-ui="data-terminal"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]) {
1488
+ --terminal-loader-cell: .48rem;
1489
+ --terminal-loader-gap: .14rem;
1490
+ position: relative;
1491
+ display: inline-block;
1492
+ inline-size: calc((var(--terminal-loader-cell) * 5) + (var(--terminal-loader-gap) * 4));
1493
+ block-size: var(--terminal-loader-cell);
1494
+ overflow: hidden;
1495
+ vertical-align: -.05em;
1496
+ background: repeating-linear-gradient(
1497
+ 90deg,
1498
+ rgb(var(--terminal-primary-rgb) / .25) 0 var(--terminal-loader-cell),
1499
+ transparent var(--terminal-loader-cell) calc(var(--terminal-loader-cell) + var(--terminal-loader-gap))
1500
+ );
1501
+ border: 0;
1502
+ border-radius: 0;
1503
+ clip-path: none;
1504
+ box-shadow: none;
1505
+ animation: none;
1506
+ }
1507
+
1508
+ .terminal-spinner::after,
1509
+ .terminal-loading-spinner::after,
1510
+ [data-ui="data-terminal"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner])::after {
1511
+ content: "";
1512
+ position: absolute;
1513
+ inset-block: 0;
1514
+ inset-inline-start: 0;
1515
+ inline-size: var(--terminal-loader-cell);
1516
+ background: var(--terminal-primary);
1517
+ animation: terminal-signal-scan .8s steps(4, end) infinite;
1518
+ }
1519
+
1520
+ .terminal-spinner-sm { --terminal-loader-cell: .34rem; --terminal-loader-gap: .1rem; }
1521
+ .terminal-spinner-lg { --terminal-loader-cell: .62rem; --terminal-loader-gap: .18rem; }
1522
+
1523
+ /**
1524
+ * Gives busy buttons a compact version of the same segmented status scan so
1525
+ * their readable label remains stable while work is in progress.
1526
+ */
1527
+ .terminal-button[aria-busy="true"]::after,
1528
+ .terminal-icon-button[aria-busy="true"]::after,
1529
+ [data-ui="data-terminal"] :where(button[aria-busy="true"], input[type="button"][aria-busy="true"], input[type="submit"][aria-busy="true"], input[type="reset"][aria-busy="true"])::after {
1530
+ --terminal-loader-cell: .24rem;
1531
+ content: "]";
1532
+ display: inline-block;
1533
+ inline-size: 2.25rem;
1534
+ flex: 0 0 2.25rem;
1535
+ block-size: 1em;
1536
+ box-sizing: border-box;
1537
+ padding-inline-start: 1.7rem;
1538
+ line-height: 1;
1539
+ text-align: end;
1540
+ background-image:
1541
+ repeating-linear-gradient(90deg, currentColor 0 .22rem, transparent .22rem .31rem),
1542
+ linear-gradient(90deg, transparent 0 36%, currentColor 36% 52%, transparent 52% 100%);
1543
+ background-position: 0 50%, -100% 50%;
1544
+ background-repeat: no-repeat;
1545
+ background-size: 1.5rem .38rem, 3rem .38rem;
1546
+ border: 0;
1547
+ border-radius: 0;
1548
+ box-shadow: none;
1549
+ clip-path: none;
1550
+ animation: terminal-signal-scan .8s steps(4, end) infinite;
1551
+ }
1552
+
1553
+ .terminal-card-service > .terminal-icon-medallion {
1554
+ font-size: 1.5rem;
1555
+ font-weight: 500;
1556
+ line-height: 1;
1557
+ }
1558
+
1559
+ .terminal-feature-item > .terminal-icon-medallion {
1560
+ display: inline-grid;
1561
+ place-items: center;
1562
+ inline-size: 2rem;
1563
+ block-size: 2rem;
1564
+ min-inline-size: 2rem;
1565
+ min-block-size: 2rem;
1566
+ padding: 0;
1567
+ font-size: 1rem;
1568
+ font-weight: 500;
1569
+ line-height: 1;
1570
+ text-align: center;
1571
+ }
1572
+
1573
+ .terminal-callout-bar > .terminal-icon-medallion {
1574
+ display: inline-grid;
1575
+ place-items: center;
1576
+ inline-size: 2.25rem;
1577
+ block-size: 2.25rem;
1578
+ min-inline-size: 2.25rem;
1579
+ min-block-size: 2.25rem;
1580
+ padding: 0;
1581
+ font-size: 1.5rem;
1582
+ font-weight: 500;
1583
+ line-height: 1;
1584
+ text-align: center;
1585
+ }
1586
+
1587
+ /**
1588
+ * Keeps feature and callout rows structural and neutral; theme accent colors
1589
+ * remain reserved for status and selection semantics rather than rails.
1590
+ */
1591
+ .terminal-feature-strip,
1592
+ .terminal-callout-bar {
1593
+ background: var(--terminal-surface);
1594
+ border: 1px solid var(--terminal-border);
1595
+ box-shadow: none;
1596
+ }
1597
+
1598
+ /** Aligns the commercial secondary CTA with the shared terminal command grammar. */
1599
+ .terminal-button.terminal-button-outline-heavy,
1600
+ .terminal-button-outline-heavy {
1601
+ background: var(--terminal-surface);
1602
+ border-width: 1px;
1603
+ clip-path: none;
1604
+ box-shadow: none;
1605
+ }
1606
+
1607
+ @keyframes terminal-signal-scan {
1608
+ from {
1609
+ inset-inline-start: 0;
1610
+ background-position: 0 50%, -100% 50%;
1611
+ }
1612
+
1613
+ to {
1614
+ inset-inline-start: calc(100% - var(--terminal-loader-cell));
1615
+ background-position: 0 50%, 100% 50%;
1616
+ }
1617
+ }
1618
+
1619
+ /**
1620
+ * Keeps status information outline-led and reserves filled theme color for
1621
+ * selection, progress, and active table rows as shown in the references.
1622
+ */
1623
+ .terminal-badge {
1624
+ min-height: 1.35rem;
1625
+ padding: .18rem .45rem;
1626
+ color: var(--terminal-text);
1627
+ background: var(--terminal-surface);
1628
+ border: 1px solid currentColor;
1629
+ border-radius: 0;
1630
+ font-size: .6875rem;
1631
+ font-weight: 500;
1632
+ }
1633
+
1634
+ .terminal-badge-primary { color: var(--usk-primary-ink, var(--terminal-primary)); background: var(--terminal-surface); border-color: currentColor; }
1635
+ .terminal-badge-secondary { color: var(--terminal-secondary); background: var(--terminal-surface); border-color: currentColor; }
1636
+ .terminal-badge-success { color: var(--terminal-success); background: var(--terminal-surface); border-color: currentColor; }
1637
+ .terminal-badge-warning { color: var(--terminal-warning); background: var(--terminal-surface); border-color: currentColor; }
1638
+ .terminal-badge-danger { color: var(--terminal-danger); background: var(--terminal-surface); border-color: currentColor; }
1639
+
1640
+ .terminal-alert {
1641
+ gap: .15rem;
1642
+ padding: .42rem .55rem;
1643
+ color: var(--terminal-text);
1644
+ background: var(--terminal-surface);
1645
+ border: 1px solid currentColor;
1646
+ border-radius: 0;
1647
+ box-shadow: none;
1648
+ font-size: .75rem;
1649
+ }
1650
+
1651
+ .terminal-alert-success { color: var(--terminal-success); border-color: currentColor; }
1652
+ .terminal-alert-warning { color: var(--terminal-warning); border-color: currentColor; }
1653
+ .terminal-alert-danger { color: var(--terminal-danger); border-color: currentColor; }
1654
+ .terminal-alert-title { color: inherit; font-weight: 500; }
1655
+ .terminal-alert-body { color: inherit; line-height: 1.3; }
1656
+
1657
+ .terminal-progress {
1658
+ block-size: .5rem;
1659
+ background: repeating-linear-gradient(90deg, var(--terminal-surface-soft) 0 .7rem, var(--terminal-bg) .7rem .78rem);
1660
+ border: 0;
1661
+ border-radius: 0;
1662
+ }
1663
+
1664
+ .terminal-progress-bar {
1665
+ background: repeating-linear-gradient(90deg, var(--terminal-primary) 0 .7rem, transparent .7rem .78rem);
1666
+ border-radius: 0;
1667
+ box-shadow: none;
1668
+ }
1669
+
1670
+ /** Keeps dialog copy inside the preset's one-pixel command frame. */
1671
+ [data-ui="data-terminal"][data-mode] :where(dialog > form) {
1672
+ padding: .625rem;
1673
+ }
1674
+
1675
+ [data-ui="data-terminal"][data-mode] {
1676
+ --usk-native-range-track-size: .7rem;
1677
+ --usk-native-range-track-background:
1678
+ repeating-linear-gradient(90deg, rgb(var(--terminal-text-rgb) / .62) 0 1px, transparent 1px .75rem) top / 100% 55% no-repeat,
1679
+ linear-gradient(90deg, var(--terminal-success) 0 58%, var(--terminal-warning) 58% 78%, var(--terminal-danger) 78% 100%) bottom / 100% 3px no-repeat,
1680
+ transparent;
1681
+ --usk-native-range-track-border: 0 solid transparent;
1682
+ --usk-native-range-track-radius: 0;
1683
+ --usk-native-range-track-shadow: none;
1684
+ --usk-native-range-progress-background: linear-gradient(var(--terminal-primary), var(--terminal-primary));
1685
+ --usk-native-range-thumb-size: .75rem;
1686
+ --usk-native-range-thumb-background: var(--terminal-surface);
1687
+ --usk-native-range-thumb-border: 2px solid var(--terminal-text);
1688
+ --usk-native-range-thumb-radius: 0;
1689
+ --usk-native-range-thumb-shadow: none;
1690
+ }
1691
+
1692
+ .terminal-nav {
1693
+ gap: 0;
1694
+ padding: 0;
1695
+ background: var(--terminal-surface);
1696
+ border: 1px solid var(--terminal-border);
1697
+ border-radius: 0;
1698
+ box-shadow: none;
1699
+ }
1700
+
1701
+ .terminal-nav-link {
1702
+ min-height: 1.75rem;
1703
+ padding: .28rem .6rem;
1704
+ color: var(--terminal-text);
1705
+ border-inline-end: 1px solid var(--terminal-border);
1706
+ border-radius: 0;
1707
+ font-size: .6875rem;
1708
+ font-weight: 500;
1709
+ }
1710
+
1711
+ .terminal-nav-link:hover { color: var(--usk-primary-ink, var(--terminal-primary)); background: var(--terminal-surface); }
1712
+ .terminal-nav-link[aria-current="page"], .terminal-nav-link.is-active { color: var(--terminal-on-primary); background: var(--terminal-primary); }
1713
+
1714
+ .terminal-table { font-size: .6875rem; }
1715
+ .terminal-table th,
1716
+ .terminal-table td {
1717
+ padding: .2rem .4rem;
1718
+ color: var(--terminal-text);
1719
+ background: var(--terminal-surface);
1720
+ border: 0;
1721
+ border-block-end: 1px solid var(--terminal-border);
1722
+ }
1723
+
1724
+ .terminal-table th {
1725
+ font-size: .625rem;
1726
+ font-weight: 500;
1727
+ line-height: 1.15;
1728
+ letter-spacing: .025em;
1729
+ }
1730
+
1731
+ .terminal-table tr:hover td {
1732
+ color: var(--terminal-on-primary);
1733
+ background: var(--terminal-primary);
1734
+ }
1735
+
1736
+ /** Keeps hovered data rows on the same filled signal channel as active navigation. */
1737
+ [data-ui="data-terminal"][data-mode] .terminal-table tbody tr:hover > td {
1738
+ color: var(--terminal-on-primary);
1739
+ background: var(--terminal-primary);
1740
+ transition: none;
1741
+ }
1742
+
1743
+ .terminal-pill,
1744
+ .terminal-rounded,
1745
+ .terminal-rounded-lg,
1746
+ .terminal-rounded-xl { border-radius: 0; }
1747
+
1748
+ .terminal-metric {
1749
+ gap: .2rem;
1750
+ padding: .5rem;
1751
+ background: var(--terminal-surface);
1752
+ border: 1px solid var(--terminal-border);
1753
+ border-radius: 0;
1754
+ }
1755
+
1756
+ .terminal-metric-value { font-size: 1rem; letter-spacing: .025em; }
1757
+ .terminal-metric-label { font-size: .6875rem; font-weight: 500; }
1758
+ /** Warning actions inherit preset geometry and use the paired semantic warning colors. */
1759
+ [data-ui="data-terminal"][data-mode] .terminal-button.terminal-button-warning {
1760
+ background: var(--terminal-warning);
1761
+ color: var(--terminal-on-warning);
1762
+ border-color: var(--terminal-warning);
1763
+ text-shadow: none;
1764
+ }
1765
+
1766
+ }
1767
+
1768
+ /**
1769
+ * Preserves shared annotation fixture spacing and icon weight after reference
1770
+ * overrides append their compact source rules.
1771
+ */
1772
+ [data-ui="data-terminal"][data-mode] .terminal-title {
1773
+ margin-block: max(.75rem, 12px);
1774
+ letter-spacing: max(.03em, .5px);
1775
+ }
1776
+
1777
+ [data-ui="data-terminal"][data-mode] .terminal-feature-item > .terminal-icon-medallion {
1778
+ font-size: 1.5rem;
1779
+ line-height: 1;
1780
+ }
1781
+
1782
+ /** Centers Firefox text glyph bounds inside the compact square medallion. */
1783
+ @supports (-moz-appearance: none) {
1784
+ [data-ui="data-terminal"][data-mode] .terminal-feature-item > .terminal-icon-medallion {
1785
+ line-height: 2rem;
1786
+ }
1787
+ }
1788
+
1789
+ [data-ui="data-terminal"][data-mode] .terminal-callout-bar > .terminal-icon-medallion {
1790
+ min-inline-size: 4.5rem;
1791
+ min-block-size: 4.5rem;
1792
+ font-size: 2rem;
1793
+ font-weight: 800;
1794
+ line-height: 1;
1795
+ }