ui-style-kit-css 2.2.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/CHANGELOG.md +77 -1
  2. package/CONTRIBUTING.md +8 -1
  3. package/README.md +171 -53
  4. package/STYLE-MAP.md +28 -5
  5. package/dist/assets/bauhaus-barlow-OFL.txt +93 -0
  6. package/dist/assets/bauhaus-barlow-semibold.ttf +0 -0
  7. package/dist/assets/bauhaus-barlow.ttf +0 -0
  8. package/dist/assets/bauhaus-condensed-OFL.txt +93 -0
  9. package/dist/assets/bauhaus-condensed-bold.ttf +0 -0
  10. package/dist/assets/bauhaus-condensed-extrabold.ttf +0 -0
  11. package/dist/assets/bento-manrope-OFL.txt +93 -0
  12. package/dist/assets/bento-manrope.ttf +0 -0
  13. package/dist/assets/clay-grain.png +0 -0
  14. package/dist/assets/clay-rounded-OFL.txt +93 -0
  15. package/dist/assets/clay-rounded.ttf +0 -0
  16. package/dist/assets/neo-noir-corner-dark.png +0 -0
  17. package/dist/assets/neo-noir-corner-light.png +0 -0
  18. package/dist/assets/neo-noir-texture-dark.png +0 -0
  19. package/dist/assets/neo-noir-texture-light.png +0 -0
  20. package/dist/assets/organic-display-OFL.txt +93 -0
  21. package/dist/assets/organic-display.ttf +0 -0
  22. package/dist/assets/organic-icons-LICENSE.txt +21 -0
  23. package/dist/assets/organic-sans-OFL.txt +93 -0
  24. package/dist/assets/organic-sans.ttf +0 -0
  25. package/dist/ui-style-kit.css +55604 -6525
  26. package/dist/ui-style-kit.min.css +2 -2
  27. package/dist/ui-style-kit.visual.css +55443 -6942
  28. package/dist/ui-style-kit.visual.min.css +2 -2
  29. package/dist/ui-style-kit.with-bridge.css +55646 -6551
  30. package/dist/ui-style-kit.with-bridge.min.css +2 -2
  31. package/dist/visual/art-deco.css +7318 -0
  32. package/dist/visual/bauhaus.css +2 -2961
  33. package/dist/visual/bento.css +2 -2980
  34. package/dist/visual/brutalism.css +2679 -352
  35. package/dist/visual/clay.css +5 -0
  36. package/dist/visual/cyberpunk.css +4482 -781
  37. package/dist/visual/data-terminal.css +6182 -0
  38. package/dist/visual/editorial-luxe.css +6450 -0
  39. package/dist/visual/industrial-utility.css +7259 -0
  40. package/dist/visual/maximalist.css +4080 -1025
  41. package/dist/visual/minimal-saas.css +3305 -888
  42. package/dist/visual/neo-noir.css +5 -0
  43. package/dist/visual/neumorphism.css +3582 -975
  44. package/dist/visual/organic-modern.css +5 -0
  45. package/dist/visual/paper-editorial.css +7074 -0
  46. package/dist/visual/retro-glass.css +4426 -760
  47. package/dist/visual/retrofuturism.css +3676 -875
  48. package/dist/visual/tactile.css +4568 -1036
  49. package/dist/visual/technical-blueprint.css +6713 -0
  50. package/dist/visual/y2k.css +3672 -753
  51. package/docs/ART-DECO.md +80 -0
  52. package/docs/BAUHAUS.md +152 -0
  53. package/docs/BENTO.md +121 -0
  54. package/docs/CLAY.md +127 -0
  55. package/docs/DEMO-SHOWCASE.md +65 -0
  56. package/docs/ECOSYSTEM.md +9 -5
  57. package/docs/EDITORIAL-LUX.md +75 -0
  58. package/docs/INDUSTRIAL-UTILITY.md +131 -0
  59. package/docs/NATIVE-ELEMENTS.md +23 -17
  60. package/docs/NEO-NOIR.md +94 -0
  61. package/docs/ORGANIC-MODERN.md +91 -0
  62. package/docs/PAPER-EDITORIAL.md +63 -0
  63. package/docs/PUBLISHING.md +36 -11
  64. package/docs/RELEASE-2.4.0.md +88 -0
  65. package/docs/RETRO-GLASS.md +105 -0
  66. package/docs/STYLE-GUIDE.md +68 -13
  67. package/docs/TACTILE.md +38 -0
  68. package/docs/TECHNICAL-BLUEPRINT.md +60 -0
  69. package/docs/TOKENS.md +90 -4
  70. package/docs/superpowers/plans/2026-08-29-preset-identity-system-refinement.md +649 -0
  71. package/docs/superpowers/plans/2026-09-04-library-wide-theme-fallback-and-fidelity.md +331 -0
  72. package/docs/superpowers/specs/2026-08-29-preset-identity-system-refinement-design.md +212 -0
  73. package/docs/superpowers/specs/2026-09-04-library-wide-theme-fallback-and-fidelity-design.md +113 -0
  74. package/manifest.json +769 -20
  75. package/package.json +79 -14
  76. package/styles/art-deco.css +2068 -0
  77. package/styles/assets/bauhaus-barlow-OFL.txt +93 -0
  78. package/styles/assets/bauhaus-barlow-semibold.ttf +0 -0
  79. package/styles/assets/bauhaus-barlow.ttf +0 -0
  80. package/styles/assets/bauhaus-condensed-OFL.txt +93 -0
  81. package/styles/assets/bauhaus-condensed-bold.ttf +0 -0
  82. package/styles/assets/bauhaus-condensed-extrabold.ttf +0 -0
  83. package/styles/assets/bento-manrope-OFL.txt +93 -0
  84. package/styles/assets/bento-manrope.ttf +0 -0
  85. package/styles/assets/clay-grain.png +0 -0
  86. package/styles/assets/clay-rounded-OFL.txt +93 -0
  87. package/styles/assets/clay-rounded.ttf +0 -0
  88. package/styles/assets/neo-noir-corner-dark.png +0 -0
  89. package/styles/assets/neo-noir-corner-light.png +0 -0
  90. package/styles/assets/neo-noir-texture-dark.png +0 -0
  91. package/styles/assets/neo-noir-texture-light.png +0 -0
  92. package/styles/assets/organic-display-OFL.txt +93 -0
  93. package/styles/assets/organic-display.ttf +0 -0
  94. package/styles/assets/organic-icons-LICENSE.txt +21 -0
  95. package/styles/assets/organic-sans-OFL.txt +93 -0
  96. package/styles/assets/organic-sans.ttf +0 -0
  97. package/styles/bauhaus.css +1092 -87
  98. package/styles/bento.css +1413 -86
  99. package/styles/brutalism.css +493 -10
  100. package/styles/clay.css +1927 -0
  101. package/styles/compat-layout.css +1 -2
  102. package/styles/components.css +698 -33
  103. package/styles/content-overflow.css +434 -9
  104. package/styles/cyberpunk.css +2082 -46
  105. package/styles/data-terminal.css +1795 -0
  106. package/styles/editorial-luxe.css +1251 -0
  107. package/styles/industrial-utility.css +2449 -0
  108. package/styles/interactive-surface-bridge.css +40 -24
  109. package/styles/interactive-surface-theme.css +31 -13
  110. package/styles/maximalist.css +1410 -94
  111. package/styles/minimal-saas.css +675 -73
  112. package/styles/native-elements.css +396 -168
  113. package/styles/neo-noir.css +1332 -0
  114. package/styles/neumorphism.css +1155 -52
  115. package/styles/organic-modern.css +1353 -0
  116. package/styles/paper-editorial.css +1724 -0
  117. package/styles/retro-glass.css +870 -42
  118. package/styles/retrofuturism.css +1173 -55
  119. package/styles/tactile.css +2018 -84
  120. package/styles/technical-blueprint.css +1337 -0
  121. package/styles/theme-colors.css +796 -5
  122. package/styles/y2k.css +1182 -40
@@ -0,0 +1,1795 @@
1
+ /* =========================================================
2
+ UI Style Kit CSS — Data Terminal Theme System
3
+ Includes 20 color schemes, light/dark/contrast modes,
4
+ component classes, native element coverage, and CSS-only
5
+ accessibility presentation helpers.
6
+
7
+ Usage:
8
+ <body data-ui="data-terminal" data-theme="midnight-gold" data-mode="light">
9
+ <body data-ui="data-terminal" data-theme="arctic-indigo" data-mode="dark">
10
+ <body data-ui="data-terminal" data-theme="cyber-lime" data-mode="contrast">
11
+ ========================================================= */
12
+
13
+
14
+ @import url("./theme-colors.css");
15
+ @import url("./native-elements.css");
16
+ @import url("./content-overflow.css");
17
+
18
+ @layer ui-style-kit.data_terminal {
19
+ :root {
20
+ --terminal-font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
21
+ --terminal-font-display: Inter, ui-sans-serif, system-ui, sans-serif;
22
+ --terminal-font-body: var(--terminal-font-sans);
23
+ --terminal-font-heading: var(--terminal-font-display);
24
+ --terminal-font-control: var(--terminal-font-display);
25
+ --terminal-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
26
+ --terminal-radius-xs: .25rem;
27
+ --terminal-radius-sm: .5rem;
28
+ --terminal-radius-md: 0.75rem;
29
+ --terminal-radius-lg: 1.125rem;
30
+ --terminal-radius-xl: calc(1.125rem + .5rem);
31
+ --terminal-radius-pill: 999px;
32
+ --terminal-space-1: .25rem;
33
+ --terminal-space-2: .5rem;
34
+ --terminal-space-3: .75rem;
35
+ --terminal-space-4: 1rem;
36
+ --terminal-space-5: 1.25rem;
37
+ --terminal-space-6: 1.5rem;
38
+ --terminal-space-8: 2rem;
39
+ --terminal-transition-fast: 150ms ease;
40
+ --terminal-transition-base: 240ms ease;
41
+ }
42
+
43
+ [data-ui="data-terminal"][data-mode="light"] {
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;
68
+ --terminal-panel-alpha: .98;
69
+ --terminal-panel-soft-alpha: .78;
70
+ --terminal-border-alpha: .58;
71
+ --terminal-shadow-alpha: .12;
72
+ --terminal-focus-alpha: .34;
73
+ }
74
+
75
+ [data-ui="data-terminal"][data-mode="dark"] {
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;
100
+ --terminal-panel-alpha: .92;
101
+ --terminal-panel-soft-alpha: .64;
102
+ --terminal-border-alpha: .52;
103
+ --terminal-shadow-alpha: .34;
104
+ --terminal-focus-alpha: .42;
105
+ }
106
+
107
+ [data-ui="data-terminal"][data-mode="contrast"] {
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;
132
+ --terminal-panel-alpha: 1;
133
+ --terminal-panel-soft-alpha: .92;
134
+ --terminal-border-alpha: 1;
135
+ --terminal-shadow-alpha: .5;
136
+ --terminal-focus-alpha: .72;
137
+ }
138
+
139
+ /** Preserves direct aliases for static extraction when a scheme is selected. */
140
+ [data-ui="data-terminal"][data-theme][data-mode] {
141
+ --terminal-bg-rgb: var(--usk-bg-rgb);
142
+ --terminal-surface-rgb: var(--usk-surface-rgb);
143
+ --terminal-surface-strong-rgb: var(--usk-surface-strong-rgb);
144
+ --terminal-surface-soft-rgb: var(--usk-surface-soft-rgb);
145
+ --terminal-text-rgb: var(--usk-text-rgb);
146
+ --terminal-text-muted-rgb: var(--usk-text-muted-rgb);
147
+ --terminal-border-rgb: var(--usk-border-rgb);
148
+ --terminal-primary-rgb: var(--usk-primary-rgb);
149
+ --terminal-primary-hover-rgb: var(--usk-primary-hover-rgb);
150
+ --terminal-primary-text-rgb: var(--usk-primary-text-rgb);
151
+ --terminal-secondary-rgb: var(--usk-secondary-rgb);
152
+ --terminal-secondary-hover-rgb: var(--usk-secondary-hover-rgb);
153
+ --terminal-secondary-text-rgb: var(--usk-secondary-text-rgb);
154
+ --terminal-accent-rgb: var(--usk-accent-rgb);
155
+ --terminal-accent-text-rgb: var(--usk-accent-text-rgb);
156
+ --terminal-success-rgb: var(--usk-success-rgb);
157
+ --terminal-success-text-rgb: var(--usk-success-text-rgb);
158
+ --terminal-warning-rgb: var(--usk-warning-rgb);
159
+ --terminal-warning-text-rgb: var(--usk-warning-text-rgb);
160
+ --terminal-danger-rgb: var(--usk-danger-rgb);
161
+ --terminal-danger-text-rgb: var(--usk-danger-text-rgb);
162
+ --terminal-link-rgb: var(--usk-link-rgb);
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));
192
+ /* Native fallback selectors inherit visual identity through shared tokens. */
193
+ --usk-native-surface: var(--terminal-surface);
194
+ --usk-native-surface-strong: var(--terminal-surface-strong);
195
+ --usk-native-surface-soft: var(--terminal-surface-soft);
196
+ --usk-native-card-bg: var(--terminal-card-bg);
197
+ --usk-native-control-bg: var(--terminal-control-bg);
198
+ --usk-native-text: var(--terminal-text);
199
+ --usk-native-text-muted: var(--terminal-text-muted);
200
+ --usk-native-border: var(--terminal-border);
201
+ --usk-native-primary: var(--terminal-primary);
202
+ --usk-native-primary-hover: var(--terminal-primary-hover);
203
+ --usk-native-on-primary: var(--terminal-on-primary);
204
+ --usk-native-focus: var(--terminal-focus);
205
+ --usk-native-success: var(--terminal-success);
206
+ --usk-native-warning: var(--terminal-warning);
207
+ --usk-native-danger: var(--terminal-danger);
208
+ --usk-native-link: var(--terminal-link);
209
+ --usk-native-font-body: var(--terminal-font-body);
210
+ --usk-native-font-heading: var(--terminal-font-heading);
211
+ --usk-native-font-control: var(--terminal-font-control);
212
+ --usk-native-font-mono: var(--terminal-font-mono);
213
+ --usk-native-radius-sm: var(--terminal-radius-sm);
214
+ --usk-native-radius: var(--terminal-radius-md);
215
+ --usk-native-radius-lg: var(--terminal-radius-lg);
216
+ --usk-native-shadow: var(--terminal-shadow-sm, none);
217
+ --usk-native-shadow-md: var(--terminal-shadow-md, var(--usk-native-shadow));
218
+ --usk-native-focus-ring: var(--terminal-focus-ring, 0 0 0 3px rgb(var(--terminal-focus-rgb) / .28));
219
+ --usk-native-border-width: 1px;
220
+ --usk-native-field-gap: .5rem;
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;
273
+ --terminal-bg: rgb(var(--terminal-bg-rgb));
274
+ --terminal-surface: rgb(var(--terminal-surface-rgb) / var(--terminal-panel-alpha));
275
+ --terminal-surface-strong: rgb(var(--terminal-surface-strong-rgb) / var(--terminal-panel-alpha));
276
+ --terminal-surface-soft: rgb(var(--terminal-surface-soft-rgb) / var(--terminal-panel-soft-alpha));
277
+ --terminal-text: rgb(var(--terminal-text-rgb));
278
+ --terminal-text-muted: rgb(var(--terminal-text-muted-rgb));
279
+ --terminal-fg: var(--terminal-text);
280
+ --terminal-surface-fg: var(--terminal-text);
281
+ --terminal-muted: var(--terminal-text-muted);
282
+ --terminal-border: rgb(var(--terminal-border-rgb) / max(var(--terminal-border-alpha), var(--usk-border-min-alpha)));
283
+ --terminal-control-fg: var(--terminal-text);
284
+ --terminal-primary: rgb(var(--terminal-primary-rgb));
285
+ --terminal-primary-hover: rgb(var(--terminal-primary-hover-rgb));
286
+ --terminal-primary-text: rgb(var(--terminal-primary-text-rgb));
287
+ --terminal-secondary: rgb(var(--terminal-secondary-rgb));
288
+ --terminal-secondary-hover: rgb(var(--terminal-secondary-hover-rgb));
289
+ --terminal-secondary-text: rgb(var(--terminal-secondary-text-rgb));
290
+ --terminal-on-primary: var(--terminal-primary-text);
291
+ --terminal-on-secondary: var(--terminal-secondary-text);
292
+ --terminal-on-accent: rgb(var(--terminal-accent-text-rgb));
293
+ --terminal-on-success: rgb(var(--terminal-success-text-rgb));
294
+ --terminal-on-warning: rgb(var(--terminal-warning-text-rgb));
295
+ --terminal-on-danger: rgb(var(--terminal-danger-text-rgb));
296
+ --terminal-accent: rgb(var(--terminal-accent-rgb));
297
+ --terminal-success: rgb(var(--terminal-success-rgb));
298
+ --terminal-warning: rgb(var(--terminal-warning-rgb));
299
+ --terminal-danger: rgb(var(--terminal-danger-rgb));
300
+ --terminal-link: rgb(var(--terminal-link-rgb));
301
+ --terminal-focus: rgb(var(--terminal-focus-rgb));
302
+ --terminal-focus-ring: 0 0 0 3px rgb(var(--terminal-focus-rgb) / var(--terminal-focus-alpha));
303
+ --terminal-theme-bg-size: auto;
304
+ --terminal-theme-bg: radial-gradient(circle at 0% 0%, rgb(var(--terminal-primary-rgb) / .16), transparent 32rem), radial-gradient(circle at 100% 0%, rgb(var(--terminal-accent-rgb) / .12), transparent 30rem), radial-gradient(circle at 50% 100%, rgb(var(--terminal-secondary-rgb) / .10), transparent 34rem), var(--terminal-bg);
305
+ --terminal-card-bg: linear-gradient(135deg, rgb(var(--terminal-primary-rgb) / .10), rgb(var(--terminal-accent-rgb) / .055) 42%, rgb(var(--terminal-surface-strong-rgb) / var(--terminal-panel-alpha)) 100%), var(--terminal-surface);
306
+ --terminal-control-bg: linear-gradient(180deg, rgb(var(--terminal-surface-strong-rgb) / var(--terminal-panel-alpha)), rgb(var(--terminal-surface-soft-rgb) / var(--terminal-panel-soft-alpha)));
307
+ --terminal-spinner-track: rgb(var(--terminal-border-rgb) / max(.28, calc(var(--terminal-border-alpha) * .7)));
308
+ --terminal-spinner-stroke: var(--terminal-primary);
309
+ --terminal-spinner-accent: var(--terminal-accent);
310
+ }
311
+
312
+ @supports (color: color-mix(in srgb, black, white)) {
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)); }
314
+ }
315
+
316
+
317
+
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
+
340
+
341
+
342
+
343
+
344
+
345
+
346
+ /* =========================================================
347
+ Base Page + Layout
348
+ ========================================================= */
349
+
350
+ [data-ui="data-terminal"] {
351
+ min-height: 100vh;
352
+ background: linear-gradient(180deg, rgb(var(--terminal-primary-rgb) / .04), transparent 22rem), var(--terminal-bg);
353
+ color: var(--terminal-text);
354
+ font-family: var(--terminal-font-body);
355
+ line-height: 1.5;
356
+ text-rendering: optimizeLegibility;
357
+ -webkit-font-smoothing: antialiased;
358
+ -moz-osx-font-smoothing: grayscale;
359
+ }
360
+
361
+ [data-ui="data-terminal"] *,
362
+ [data-ui="data-terminal"] *::before,
363
+ [data-ui="data-terminal"] *::after { box-sizing: border-box; }
364
+
365
+ [data-ui="data-terminal"][data-mode] { background: var(--terminal-theme-bg); background-size: var(--terminal-theme-bg-size); }
366
+
367
+ .terminal-page { min-height: 100vh; padding: clamp(1rem, 4vw, 3rem); }
368
+ .terminal-container { width: min(100% - 2rem, 1200px); margin-inline: auto; }
369
+ .terminal-section { display: grid; gap: var(--terminal-space-5); padding: clamp(1rem, 3vw, 2rem); }
370
+ .terminal-stack { display: flex; flex-direction: column; gap: var(--terminal-space-4); }
371
+ .terminal-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--terminal-space-3); }
372
+ .terminal-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: var(--terminal-space-5); }
373
+ .terminal-split { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr)); gap: var(--terminal-space-6); align-items: start; }
374
+
375
+ /* =========================================================
376
+ Typography
377
+ ========================================================= */
378
+
379
+ .terminal-title, .terminal-heading, .terminal-kicker, .terminal-button, .terminal-badge, .terminal-nav-link { font-family: var(--terminal-font-heading); }
380
+ .terminal-title { margin: 0; color: var(--terminal-text); font-size: clamp(2rem, 5vw, 3.7rem); line-height: 1.02; letter-spacing: -0.045em; }
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; }
382
+ .terminal-kicker { margin: 0; color: var(--terminal-primary); font-size: .82rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
383
+ .terminal-subtitle, .terminal-copy { margin: 0; color: var(--terminal-text-muted); line-height: 1.65; }
384
+ .terminal-text-muted { color: var(--terminal-text-muted); }
385
+ .terminal-divider { width: 100%; height: 1px; border: 0; background: var(--terminal-border); }
386
+
387
+ /* =========================================================
388
+ Surfaces
389
+ ========================================================= */
390
+
391
+ .terminal-surface, .terminal-card, .terminal-panel, .terminal-toolbar, .terminal-table-wrap {
392
+ position: relative;
393
+ background: linear-gradient(180deg, rgb(255 255 255 / .05), rgb(255 255 255 / 0)), var(--terminal-surface);
394
+ color: var(--terminal-text);
395
+ border: 1px solid var(--terminal-border);
396
+ border-radius: var(--terminal-radius-lg);
397
+ box-shadow: 0 10px 30px rgb(15 23 42 / var(--terminal-shadow-alpha));
398
+ transition: transform var(--terminal-transition-base), box-shadow var(--terminal-transition-base), border-color var(--terminal-transition-base), background var(--terminal-transition-base);
399
+ }
400
+ .terminal-card, .terminal-panel { padding: var(--terminal-space-6); }
401
+ .terminal-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--terminal-space-4); padding: var(--terminal-space-4); }
402
+ .terminal-surface-sm { border-radius: var(--terminal-radius-md); box-shadow: 0 6px 18px rgb(0 0 0 / calc(var(--terminal-shadow-alpha) * .72)); }
403
+ .terminal-surface-lg { border-radius: var(--terminal-radius-xl); box-shadow: 0 22px 60px rgb(0 0 0 / calc(var(--terminal-shadow-alpha) + .08)); }
404
+ .terminal-well, .terminal-inset { background: var(--terminal-surface-soft); color: var(--terminal-text); border: 1px solid rgb(var(--terminal-border-rgb) / calc(var(--terminal-border-alpha) * .7)); border-radius: var(--terminal-radius-md); padding: var(--terminal-space-5); box-shadow: inset 0 1px 3px rgb(0 0 0 / .08); }
405
+ .terminal-hover-lift:hover { transform: translateY(-2px); box-shadow: 0 22px 60px rgb(0 0 0 / calc(var(--terminal-shadow-alpha) + .12)); }
406
+
407
+ /* =========================================================
408
+ Buttons
409
+ ========================================================= */
410
+
411
+ .terminal-button, .terminal-icon-button {
412
+ appearance: none; display: inline-flex; align-items: center; justify-content: center; gap: var(--terminal-space-2);
413
+ min-height: 2.75rem; padding: .75rem 1.1rem; background: var(--terminal-surface); color: var(--terminal-text);
414
+ border: 1px solid var(--terminal-border); border-radius: var(--terminal-radius-md); box-shadow: 0 6px 18px rgb(0 0 0 / var(--terminal-shadow-alpha));
415
+ font: inherit; font-weight: 800; line-height: 1; text-decoration: none; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; user-select: none;
416
+ transition: color var(--terminal-transition-fast), background var(--terminal-transition-fast), border-color var(--terminal-transition-fast), box-shadow var(--terminal-transition-fast), transform var(--terminal-transition-fast);
417
+ }
418
+ .terminal-button:hover, .terminal-icon-button:hover { transform: translateY(-1px); border-color: var(--terminal-primary); }
419
+ .terminal-button:active, .terminal-icon-button:active, .terminal-button[aria-pressed="true"], .terminal-icon-button[aria-pressed="true"], .terminal-button.is-active, .terminal-icon-button.is-active { transform: translateY(1px); box-shadow: inset 0 3px 10px rgb(0 0 0 / .18); }
420
+ .terminal-button-primary { background: var(--terminal-primary); color: var(--terminal-on-primary); border-color: var(--terminal-primary); }
421
+ .terminal-button-primary:hover { background: var(--terminal-primary-hover); border-color: var(--terminal-primary-hover); }
422
+ .terminal-button-secondary { background: var(--terminal-secondary); color: var(--terminal-on-secondary); border-color: var(--terminal-secondary); }
423
+ .terminal-button-secondary:hover { background: var(--terminal-secondary-hover); border-color: var(--terminal-secondary-hover); }
424
+ .terminal-button-danger { background: var(--terminal-danger); color: var(--terminal-on-danger); border-color: var(--terminal-danger); }
425
+ .terminal-button-ghost { background: transparent; color: var(--terminal-text); box-shadow: none; }
426
+ .terminal-icon-button { width: 2.75rem; padding: 0; border-radius: var(--terminal-radius-pill); }
427
+ .terminal-button:disabled, .terminal-icon-button:disabled, .terminal-disabled { opacity: .55; cursor: not-allowed; transform: none; }
428
+
429
+ /* Theme-responsive component defaults */
430
+ .terminal-card, .terminal-panel { background: var(--terminal-card-bg); }
431
+ .terminal-toolbar, .terminal-table-wrap { 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); }
434
+ .terminal-button, .terminal-icon-button, .terminal-badge, .terminal-nav-link { font-family: var(--terminal-font-control); }
435
+
436
+
437
+ /* =========================================================
438
+ Forms
439
+ ========================================================= */
440
+
441
+ .terminal-field { display: flex; flex-direction: column; gap: var(--terminal-space-2); }
442
+ .terminal-label { color: var(--terminal-text); font-size: .925rem; font-weight: 800; }
443
+ .terminal-input, .terminal-textarea, .terminal-select {
444
+ width: 100%; min-height: 2.875rem; padding: .75rem 1rem; background: var(--terminal-surface-soft); color: var(--terminal-text);
445
+ border: 1px solid var(--terminal-border); border-radius: var(--terminal-radius-md); font: inherit; outline: none;
446
+ transition: background var(--terminal-transition-fast), border-color var(--terminal-transition-fast), box-shadow var(--terminal-transition-fast);
447
+ }
448
+ .terminal-textarea { min-height: 8rem; resize: vertical; }
449
+ .terminal-input::placeholder, .terminal-textarea::placeholder { color: var(--terminal-text-muted); opacity: .82; }
450
+ .terminal-input:hover, .terminal-textarea:hover, .terminal-select:hover { border-color: rgb(var(--terminal-primary-rgb) / .58); }
451
+ .terminal-input:focus, .terminal-textarea:focus, .terminal-select:focus { border-color: var(--terminal-focus); box-shadow: var(--terminal-focus-ring); }
452
+ .terminal-help-text { color: var(--terminal-text-muted); font-size: .875rem; line-height: 1.45; }
453
+
454
+ /* Checkbox / Radio */
455
+ .terminal-check, .terminal-radio { display: inline-flex; align-items: center; gap: var(--terminal-space-2); color: var(--terminal-text); cursor: pointer; }
456
+ .terminal-check input, .terminal-radio input { position: absolute; opacity: 0; pointer-events: none; }
457
+ .terminal-check-control, .terminal-radio-control { display: inline-grid; place-items: center; width: 1.35rem; height: 1.35rem; background: var(--terminal-surface-soft); border: 1px solid var(--terminal-border); transition: background var(--terminal-transition-fast), box-shadow var(--terminal-transition-fast); }
458
+ .terminal-check-control { border-radius: var(--terminal-radius-xs); }
459
+ .terminal-radio-control { border-radius: 50%; }
460
+ .terminal-check input:checked + .terminal-check-control, .terminal-radio input:checked + .terminal-radio-control { background: var(--terminal-primary); border-color: var(--terminal-primary); box-shadow: var(--terminal-focus-ring); }
461
+ .terminal-check input:checked + .terminal-check-control::after { content: "✓"; color: var(--terminal-on-primary); font-size: .9rem; font-weight: 900; }
462
+ .terminal-radio input:checked + .terminal-radio-control::after { content: ""; width: .55rem; height: .55rem; background: var(--terminal-on-primary); border-radius: 50%; }
463
+
464
+ /* Switch */
465
+ .terminal-switch { display: inline-flex; align-items: center; gap: var(--terminal-space-3); color: var(--terminal-text); cursor: pointer; }
466
+ .terminal-switch input { position: absolute; opacity: 0; pointer-events: none; }
467
+ .terminal-switch-track { position: relative; width: 3.5rem; height: 1.9rem; background: var(--terminal-surface-soft); border: 1px solid var(--terminal-border); border-radius: var(--terminal-radius-pill); transition: background var(--terminal-transition-fast), box-shadow var(--terminal-transition-fast); }
468
+ .terminal-switch-thumb { position: absolute; top: .22rem; left: .22rem; width: 1.34rem; height: 1.34rem; background: var(--terminal-surface-strong); border: 1px solid var(--terminal-border); border-radius: 50%; box-shadow: 0 4px 12px rgb(0 0 0 / var(--terminal-shadow-alpha)); transition: left var(--terminal-transition-fast), background var(--terminal-transition-fast); }
469
+ .terminal-switch input:checked + .terminal-switch-track { background: var(--terminal-primary); border-color: var(--terminal-primary); }
470
+ .terminal-switch input:checked + .terminal-switch-track .terminal-switch-thumb { left: calc(100% - 1.34rem - .22rem); background: var(--terminal-on-primary); }
471
+
472
+ /* =========================================================
473
+ Badges / Nav / Progress / Alerts / Tables
474
+ ========================================================= */
475
+
476
+ .terminal-badge { display: inline-flex; align-items: center; gap: var(--terminal-space-1); min-height: 1.75rem; padding: .35rem .7rem; background: var(--terminal-surface-soft); color: var(--terminal-text); border: 1px solid var(--terminal-border); border-radius: var(--terminal-radius-pill); font-size: .8125rem; font-weight: 850; line-height: 1; }
477
+ .terminal-badge-primary { background: var(--terminal-primary); color: var(--terminal-on-primary); border-color: var(--terminal-primary); }
478
+ .terminal-badge-secondary { background: var(--terminal-secondary); color: var(--terminal-on-secondary); border-color: var(--terminal-secondary); }
479
+ .terminal-badge-success { background: var(--terminal-success); color: var(--terminal-on-success); border-color: var(--terminal-success); }
480
+ .terminal-badge-warning { background: var(--terminal-warning); color: var(--terminal-on-warning); border-color: var(--terminal-warning); }
481
+ .terminal-badge-danger { background: var(--terminal-danger); color: var(--terminal-on-danger); border-color: var(--terminal-danger); }
482
+
483
+ .terminal-nav { display: flex; flex-wrap: wrap; align-items: center; gap: var(--terminal-space-2); padding: var(--terminal-space-2); background: var(--terminal-surface); border: 1px solid var(--terminal-border); border-radius: var(--terminal-radius-xl); box-shadow: 0 10px 30px rgb(0 0 0 / var(--terminal-shadow-alpha)); }
484
+ .terminal-nav-link { display: inline-flex; align-items: center; justify-content: center; min-height: 2.5rem; padding: .65rem 1rem; color: var(--terminal-text-muted); border-radius: var(--terminal-radius-pill); text-decoration: none; font-weight: 850; transition: color var(--terminal-transition-fast), background var(--terminal-transition-fast), box-shadow var(--terminal-transition-fast); }
485
+ .terminal-nav-link:hover { color: var(--terminal-text); background: var(--terminal-surface-soft); }
486
+ .terminal-nav-link[aria-current="page"], .terminal-nav-link.is-active { color: var(--terminal-on-primary); background: var(--terminal-primary); }
487
+
488
+ /* Tooltips use compact contrast surfaces that stay readable across theme modes. */
489
+ .terminal-tooltip, [data-ui="data-terminal"] :where(.ui-tooltip, [role="tooltip"], [data-tooltip]) {
490
+ display: inline-flex; align-items: center; gap: .45rem; max-inline-size: 16rem; padding: .55rem .75rem;
491
+ background: var(--terminal-text); color: var(--terminal-bg); border: 1px solid var(--terminal-border); border-radius: var(--terminal-radius-md);
492
+ box-shadow: 0 .75rem 1.6rem rgb(15 23 42 / .24); font-size: .82rem; font-weight: 850; line-height: 1.35;
493
+ }
494
+ .terminal-tooltip-arrow { inline-size: .55rem; block-size: .55rem; flex: 0 0 auto; background: currentColor; border-radius: .12rem; opacity: .9; transform: rotate(45deg); }
495
+
496
+ .terminal-progress { width: 100%; height: .9rem; overflow: hidden; background: var(--terminal-surface-soft); border: 1px solid var(--terminal-border); border-radius: var(--terminal-radius-pill); }
497
+ .terminal-progress-bar { height: 100%; width: var(--terminal-progress-value, 50%); background: linear-gradient(90deg, var(--terminal-primary), var(--terminal-accent)); border-radius: inherit; }
498
+
499
+ .terminal-alert { display: grid; gap: var(--terminal-space-2); padding: var(--terminal-space-4); background: var(--terminal-surface); color: var(--terminal-text); border: 1px solid var(--terminal-border); border-radius: var(--terminal-radius-lg); box-shadow: 0 10px 30px rgb(0 0 0 / var(--terminal-shadow-alpha)); }
500
+ .terminal-alert-success { border-left-color: var(--terminal-success); }
501
+ .terminal-alert-warning { border-left-color: var(--terminal-warning); }
502
+ .terminal-alert-danger { border-left-color: var(--terminal-danger); }
503
+ .terminal-alert-title { margin: 0; font-weight: 900; }
504
+ .terminal-alert-body { margin: 0; color: var(--terminal-text-muted); line-height: 1.55; }
505
+
506
+ .terminal-table-wrap { overflow: auto; }
507
+ .terminal-table { width: 100%; border-collapse: collapse; }
508
+ .terminal-table th, .terminal-table td { padding: .95rem 1rem; text-align: left; border-bottom: 1px solid var(--terminal-border); }
509
+ .terminal-table th { color: var(--terminal-text); font-size: .82rem; font-weight: 900; text-transform: uppercase; letter-spacing: .08em; background: rgb(var(--terminal-primary-rgb) / .08); }
510
+ .terminal-table td { color: var(--terminal-text-muted); }
511
+ .terminal-table tr:hover td { background: rgb(var(--terminal-primary-rgb) / .045); }
512
+
513
+ /* =========================================================
514
+ Utilities
515
+ ========================================================= */
516
+
517
+ .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); }
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); }
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); }
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; }
521
+ .terminal-skip-link { position: absolute; left: 1rem; top: 1rem; z-index: 9999; transform: translateY(-150%); padding: .75rem 1rem; background: var(--terminal-primary); color: var(--terminal-on-primary); border-radius: var(--terminal-radius-md); font-weight: 900; }
522
+ .terminal-skip-link:focus { transform: translateY(0); }
523
+
524
+ /* Minimal SaaS-specific product helpers */
525
+ .terminal-metric { display: grid; gap: .25rem; padding: var(--terminal-space-5); background: var(--terminal-surface); border: 1px solid var(--terminal-border); border-radius: var(--terminal-radius-lg); }
526
+ .terminal-metric-value { color: var(--terminal-text); font-size: clamp(1.8rem, 3vw, 2.6rem); font-weight: 850; line-height: 1; letter-spacing: -.04em; }
527
+ .terminal-metric-label { color: var(--terminal-text-muted); font-size: .9rem; font-weight: 700; }
528
+ .terminal-empty-state { display: grid; place-items: center; gap: var(--terminal-space-3); min-height: 14rem; padding: var(--terminal-space-6); text-align: center; background: var(--terminal-surface-soft); border: 1px dashed var(--terminal-border); border-radius: var(--terminal-radius-lg); }
529
+
530
+ .terminal-spinner, .terminal-loading-spinner, [data-ui="data-terminal"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]) {
531
+ display: inline-block;
532
+ inline-size: 2rem;
533
+ block-size: 2rem;
534
+ border: .25rem solid var(--terminal-spinner-track);
535
+ border-block-start-color: var(--terminal-spinner-stroke);
536
+ border-inline-end-color: var(--terminal-spinner-accent);
537
+ border-radius: 50%;
538
+ vertical-align: -.2em;
539
+ animation: terminal-spin .75s linear infinite;
540
+ }
541
+ .terminal-spinner-sm { inline-size: 1rem; block-size: 1rem; border-width: .16rem; }
542
+ .terminal-spinner-lg { inline-size: 3rem; block-size: 3rem; border-width: .32rem; }
543
+ .terminal-button[aria-busy="true"], .terminal-icon-button[aria-busy="true"], [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"]) { gap: .55rem; cursor: progress; }
544
+ .terminal-button[aria-busy="true"]::after, .terminal-icon-button[aria-busy="true"]::after, [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 {
545
+ content: "";
546
+ display: inline-block;
547
+ inline-size: 1em;
548
+ block-size: 1em;
549
+ border: .16em solid rgb(var(--terminal-primary-text-rgb) / .42);
550
+ border-block-start-color: currentColor;
551
+ border-radius: 50%;
552
+ animation: terminal-spin .75s linear infinite;
553
+ }
554
+ @keyframes terminal-spin { to { transform: rotate(360deg); } }
555
+
556
+
557
+
558
+ /* =========================================================
559
+ Marketing / Commercial Component Modifiers
560
+ Reusable visual patterns derived from service-oriented brand systems.
561
+ ========================================================= */
562
+
563
+ .terminal-card-media {
564
+ display: block;
565
+ inline-size: 100%;
566
+ aspect-ratio: 16 / 9;
567
+ object-fit: cover;
568
+ border: 1px solid rgb(var(--terminal-border-rgb) / .72);
569
+ border-radius: var(--terminal-radius-lg);
570
+ }
571
+
572
+ .terminal-card-service {
573
+ position: relative;
574
+ display: grid;
575
+ gap: var(--terminal-space-3);
576
+ align-content: start;
577
+ text-align: center;
578
+ overflow: visible;
579
+ }
580
+ .terminal-card-service > .terminal-icon-medallion {
581
+ justify-self: center;
582
+ margin-block-start: -2.15rem;
583
+ position: relative;
584
+ z-index: 2;
585
+ }
586
+ .terminal-card-service > .terminal-card-media + .terminal-icon-medallion { margin-block-start: -2.15rem; }
587
+
588
+ .terminal-card-feature {
589
+ display: grid;
590
+ grid-template-columns: auto minmax(0, 1fr);
591
+ gap: var(--terminal-space-4);
592
+ align-items: start;
593
+ }
594
+
595
+ .terminal-card-accent-edge {
596
+ border-inline-start: .35rem solid var(--terminal-primary);
597
+ }
598
+
599
+ .terminal-icon-medallion {
600
+ display: inline-grid;
601
+ place-items: center;
602
+ inline-size: 3.75rem;
603
+ block-size: 3.75rem;
604
+ flex: 0 0 auto;
605
+ padding: .7rem;
606
+ background: var(--terminal-primary);
607
+ color: var(--terminal-on-primary);
608
+ border: 2px solid rgb(var(--terminal-border-rgb) / .82);
609
+ border-radius: 50%;
610
+ line-height: 1;
611
+ }
612
+ .terminal-icon-medallion > :where(svg, img) { inline-size: 100%; block-size: 100%; object-fit: contain; }
613
+
614
+ .terminal-button.terminal-button-cut,
615
+ .terminal-button-cut {
616
+ border-radius: 0;
617
+ clip-path: polygon(.6rem 0, 100% 0, 100% calc(100% - .6rem), calc(100% - .6rem) 100%, 0 100%, 0 .6rem);
618
+ }
619
+ .terminal-button.terminal-button-cut:focus-visible,
620
+ .terminal-button-cut:focus-visible { outline-offset: -3px; }
621
+
622
+ .terminal-button.terminal-button-outline-heavy,
623
+ .terminal-button-outline-heavy {
624
+ background: transparent;
625
+ color: var(--terminal-primary);
626
+ border-style: solid;
627
+ border-width: 2px;
628
+ border-color: var(--terminal-primary);
629
+ box-shadow: none;
630
+ }
631
+ .terminal-button.terminal-button-outline-heavy:hover,
632
+ .terminal-button-outline-heavy:hover {
633
+ background: var(--terminal-primary);
634
+ color: var(--terminal-on-primary);
635
+ border-color: var(--terminal-primary-hover);
636
+ }
637
+
638
+ .terminal-badge-seal {
639
+ display: inline-grid;
640
+ place-items: center;
641
+ align-content: center;
642
+ inline-size: 5rem;
643
+ min-inline-size: 5rem;
644
+ aspect-ratio: 1;
645
+ padding: .65rem;
646
+ background: var(--terminal-surface-strong);
647
+ color: var(--terminal-text);
648
+ border: 2px solid var(--terminal-primary);
649
+ border-radius: 50%;
650
+ text-align: center;
651
+ font-family: var(--terminal-font-heading);
652
+ font-size: .72rem;
653
+ font-weight: 900;
654
+ line-height: 1.05;
655
+ letter-spacing: .04em;
656
+ }
657
+
658
+ .terminal-feature-strip {
659
+ display: grid;
660
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
661
+ background: var(--terminal-card-bg);
662
+ color: var(--terminal-text);
663
+ border: 1px solid var(--terminal-border);
664
+ border-radius: var(--terminal-radius-lg);
665
+ }
666
+
667
+ .terminal-feature-item {
668
+ display: grid;
669
+ grid-template-columns: auto minmax(0, 1fr);
670
+ align-items: center;
671
+ gap: var(--terminal-space-3);
672
+ min-inline-size: 0;
673
+ padding: var(--terminal-space-4);
674
+ border-inline-end: 1px solid rgb(var(--terminal-border-rgb) / .62);
675
+ }
676
+ .terminal-feature-item:last-child { border-inline-end: 0; }
677
+ .terminal-feature-item > :where(p, small) { margin: 0; color: var(--terminal-text-muted); }
678
+
679
+ .terminal-callout-bar {
680
+ display: grid;
681
+ grid-template-columns: auto minmax(0, 1fr) auto;
682
+ align-items: center;
683
+ gap: var(--terminal-space-4);
684
+ padding: var(--terminal-space-4) var(--terminal-space-5);
685
+ background: var(--terminal-card-bg);
686
+ color: var(--terminal-text);
687
+ border: 1px solid var(--terminal-border);
688
+ border-radius: var(--terminal-radius-lg);
689
+ }
690
+ .terminal-callout-bar > :where(p, div) { min-inline-size: 0; }
691
+ .terminal-callout-bar > :where(.terminal-button, a, button):last-child { justify-self: end; }
692
+
693
+ .terminal-eyebrow {
694
+ margin: 0;
695
+ color: var(--terminal-primary);
696
+ font-family: var(--terminal-font-heading);
697
+ font-size: .76rem;
698
+ font-weight: 900;
699
+ line-height: 1.2;
700
+ letter-spacing: .14em;
701
+ text-transform: uppercase;
702
+ }
703
+
704
+ .terminal-media-scrim {
705
+ position: relative;
706
+ overflow: hidden;
707
+ isolation: isolate;
708
+ min-block-size: 12rem;
709
+ background: var(--terminal-surface-soft);
710
+ border: 1px solid var(--terminal-border);
711
+ border-radius: var(--terminal-radius-lg);
712
+ }
713
+ .terminal-media-scrim > :where(img, picture, video) {
714
+ display: block;
715
+ inline-size: 100%;
716
+ block-size: 100%;
717
+ min-block-size: inherit;
718
+ object-fit: cover;
719
+ }
720
+ .terminal-media-scrim > :where(figcaption, [data-media-caption]) {
721
+ position: absolute;
722
+ z-index: 1;
723
+ inset-inline: 0;
724
+ inset-block-end: 0;
725
+ padding: clamp(1rem, 4vw, 2rem);
726
+ color: #fff;
727
+ background: linear-gradient(to top, rgb(0 0 0 / .9), rgb(0 0 0 / .58) 56%, transparent);
728
+ }
729
+ .terminal-media-scrim > :where(figcaption, [data-media-caption]) * {
730
+ color: inherit;
731
+ }
732
+
733
+ @media (max-width: 42rem) {
734
+ .terminal-callout-bar { grid-template-columns: 1fr; align-items: start; }
735
+ .terminal-callout-bar > :where(.terminal-button, a, button):last-child { justify-self: stretch; }
736
+ .terminal-feature-item { border-inline-end: 0; border-block-end: 1px solid rgb(var(--terminal-border-rgb) / .62); }
737
+ .terminal-feature-item:last-child { border-block-end: 0; }
738
+ }
739
+
740
+ .terminal-card-service, .terminal-card-feature, .terminal-feature-strip, .terminal-callout-bar { box-shadow: 0 .9rem 2rem rgb(15 23 42 / calc(var(--terminal-shadow-alpha) + .03)); }
741
+ .terminal-card-accent-edge { border-inline-start-width: .3rem; }
742
+ .terminal-icon-medallion { box-shadow: 0 .55rem 1.2rem rgb(15 23 42 / calc(var(--terminal-shadow-alpha) + .05)); }
743
+
744
+ /* =========================================================
745
+ Data Terminal Identity
746
+ ========================================================= */
747
+ :root {
748
+ --terminal-font-display: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
749
+ --terminal-font-body: var(--terminal-font-display);
750
+ --terminal-font-heading: var(--terminal-font-display);
751
+ --terminal-font-control: var(--terminal-font-display);
752
+ --terminal-font-mono: var(--terminal-font-display);
753
+ --terminal-radius-xs: 0;
754
+ --terminal-radius-sm: .08rem;
755
+ --terminal-radius-md: .12rem;
756
+ --terminal-radius-lg: .16rem;
757
+ --terminal-radius-xl: .2rem;
758
+ }
759
+ [data-ui="data-terminal"] { font-family: var(--terminal-font-body); font-size: .94rem; }
760
+ [data-ui="data-terminal"][data-mode] {
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);
762
+ --terminal-theme-bg-size: 4px 4px, 3rem 3rem, auto;
763
+ --terminal-card-bg: rgb(var(--terminal-surface-rgb) / calc(var(--terminal-panel-alpha) * .84));
764
+ }
765
+ .terminal-title, .terminal-heading, .terminal-kicker, .terminal-eyebrow, .terminal-label, .terminal-table th { font-family: var(--terminal-font-mono); text-transform: uppercase; letter-spacing: .055em; }
766
+ .terminal-title { font-size: clamp(1.8rem, 4vw, 3.3rem); line-height: 1; font-weight: 700; }
767
+ .terminal-heading { font-size: clamp(1rem, 2vw, 1.45rem); font-weight: 700; }
768
+ .terminal-subtitle, .terminal-copy { line-height: 1.45; }
769
+ .terminal-copy a { display: inline-flex; align-items: center; min-block-size: 1.5rem; }
770
+ .terminal-surface, .terminal-card, .terminal-panel, .terminal-toolbar, .terminal-table-wrap { border-radius: 0; box-shadow: none; background: var(--terminal-card-bg); }
771
+ .terminal-card, .terminal-panel { padding: var(--terminal-space-4); }
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; }
773
+ .terminal-nav { border-radius: 0; box-shadow: none; padding: .2rem; }
774
+ .terminal-nav-link { min-height: 2rem; border-radius: 0; font-family: var(--terminal-font-mono); font-size: .72rem; text-transform: uppercase; }
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); }
776
+ .terminal-table { font-family: var(--terminal-font-mono); font-size: .78rem; }
777
+ .terminal-table th, .terminal-table td { padding: .5rem .6rem; }
778
+ .terminal-metric-value { font-family: var(--terminal-font-mono); font-size: clamp(1.35rem, 2.6vw, 2rem); color: var(--terminal-primary); }
779
+ .terminal-text-primary, .terminal-kicker, .terminal-eyebrow { text-shadow: 0 0 .75rem rgb(var(--terminal-primary-rgb) / .28); }
780
+ .terminal-card-media, .terminal-media-scrim, .terminal-feature-strip, .terminal-callout-bar { border-radius: 0; }
781
+ .terminal-icon-medallion, .terminal-badge-seal { border-radius: 0; background: transparent; color: var(--terminal-primary); font-family: var(--terminal-font-mono); box-shadow: none; }
782
+ .terminal-feature-item { padding: .75rem; }
783
+ .terminal-card-accent-edge { border-inline-start-width: 2px; }
784
+
785
+ /* Filled and framed actions share command brackets and restrained terminal glow. */
786
+ .terminal-button.terminal-button-cut, .terminal-button-cut {
787
+ min-block-size: 2.75rem;
788
+ min-inline-size: 6rem;
789
+ max-inline-size: 100%;
790
+ justify-self: start;
791
+ justify-content: center;
792
+ clip-path: polygon(.5rem 0, 100% 0, 100% calc(100% - .5rem), calc(100% - .5rem) 100%, .5rem 100%, 0 calc(100% - .5rem), 0 .5rem);
793
+ }
794
+ .terminal-button.terminal-button-outline-heavy, .terminal-button-outline-heavy {
795
+ border-width: 1px;
796
+ border-radius: 0;
797
+ clip-path: polygon(0 .4rem, .4rem 0, 100% 0, 100% calc(100% - .4rem), calc(100% - .4rem) 100%, 0 100%);
798
+ box-shadow: inset .25rem 0 0 rgb(var(--terminal-primary-rgb) / .24), 0 0 .65rem rgb(var(--terminal-primary-rgb) / .28);
799
+ }
800
+
801
+ /* Marketing and native surfaces repeat the luminous command-frame edge. */
802
+ .terminal-card-service, .terminal-media-scrim, .terminal-feature-strip, .terminal-callout-bar, .terminal-metric {
803
+ border: 1px solid var(--terminal-primary);
804
+ border-radius: 0;
805
+ box-shadow: inset .25rem 0 0 rgb(var(--terminal-primary-rgb) / .22), 0 0 .75rem rgb(var(--terminal-primary-rgb) / .2);
806
+ }
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])) {
808
+ border: 1px solid var(--terminal-primary);
809
+ border-radius: 0;
810
+ box-shadow: inset .2rem 0 0 rgb(var(--terminal-primary-rgb) / .22), 0 0 .6rem rgb(var(--terminal-primary-rgb) / .24);
811
+ }
812
+ [data-ui="data-terminal"][data-mode] :where(dialog) {
813
+ border: 1px solid var(--terminal-primary);
814
+ border-radius: 0;
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);
816
+ }
817
+
818
+ /* Data Terminal loaders use a luminous segmented bracket cursor. */
819
+ .terminal-spinner, .terminal-loading-spinner, [data-ui="data-terminal"] :where(.ui-spinner, .loading-spinner, [data-loading-spinner]) {
820
+ border-radius: 0; background: conic-gradient(var(--terminal-spinner-stroke) 0 20%, transparent 0 30%, var(--terminal-spinner-accent) 0 45%, transparent 0 70%, var(--terminal-spinner-stroke) 0 82%, transparent 0); box-shadow: 0 0 .8rem rgb(var(--terminal-primary-rgb) / .55), inset 0 0 0 .2rem var(--terminal-surface); clip-path: polygon(0 0, 42% 0, 42% 18%, 18% 18%, 18% 42%, 0 42%, 0 0, 100% 0, 100% 100%, 58% 100%, 58% 82%, 82% 82%, 82% 58%, 100% 58%); animation: terminal-spin .76s steps(4, end) infinite;
821
+ }
822
+ .terminal-button[aria-busy="true"]::after, .terminal-icon-button[aria-busy="true"]::after, [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 {
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;
824
+ }
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
+
973
+ @media (prefers-reduced-motion: reduce) {
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; }
975
+ }
976
+ @media (prefers-contrast: more) {
977
+ [data-ui="data-terminal"] { --terminal-border-alpha: 1; --terminal-focus-alpha: .75; }
978
+ }
979
+ @media (forced-colors: active) {
980
+ @supports (forced-color-adjust: auto) { [data-ui="data-terminal"] * { forced-color-adjust: auto; } }
981
+ [data-ui="data-terminal"] :where(:focus-visible) { outline: 3px solid CanvasText; }
982
+ }
983
+ @media print {
984
+ [data-ui="data-terminal"] { background: #fff !important; color: #000 !important; }
985
+ [data-ui="data-terminal"] * { box-shadow: none !important; text-shadow: none !important; }
986
+ [data-ui="data-terminal"] a { color: #000 !important; text-decoration: underline; }
987
+ }
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(--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(--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(--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(--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(--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(--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
+ }