@arclux/arc-ui-html 1.0.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 (138) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -0
  3. package/css/animated-number.css +12 -0
  4. package/css/app-shell.css +52 -0
  5. package/css/arc-ui.css +3045 -0
  6. package/css/aspect-ratio.css +23 -0
  7. package/css/auth-shell.css +98 -0
  8. package/css/avatar-group.css +49 -0
  9. package/css/avatar.css +53 -0
  10. package/css/badge.css +76 -0
  11. package/css/button.css +94 -0
  12. package/css/callout.css +84 -0
  13. package/css/card.css +50 -0
  14. package/css/code-block.css +86 -0
  15. package/css/color-swatch.css +47 -0
  16. package/css/container.css +15 -0
  17. package/css/dashboard-grid.css +21 -0
  18. package/css/divider.css +128 -0
  19. package/css/empty-state.css +43 -0
  20. package/css/feature-card.css +102 -0
  21. package/css/footer.css +60 -0
  22. package/css/form.css +454 -0
  23. package/css/highlight.css +13 -0
  24. package/css/icon-button.css +118 -0
  25. package/css/icon.css +36 -0
  26. package/css/kbd.css +21 -0
  27. package/css/link.css +74 -0
  28. package/css/markdown.css +133 -0
  29. package/css/meter.css +59 -0
  30. package/css/page-header.css +55 -0
  31. package/css/page-layout.css +65 -0
  32. package/css/progress.css +96 -0
  33. package/css/scroll-area.css +70 -0
  34. package/css/section.css +27 -0
  35. package/css/settings-layout.css +55 -0
  36. package/css/skeleton.css +44 -0
  37. package/css/spinner.css +46 -0
  38. package/css/stack.css +38 -0
  39. package/css/stat.css +42 -0
  40. package/css/status-bar.css +50 -0
  41. package/css/stepper.css +134 -0
  42. package/css/table.css +85 -0
  43. package/css/text.css +77 -0
  44. package/css/timeline.css +117 -0
  45. package/css/toolbar.css +54 -0
  46. package/css/tooltip.css +107 -0
  47. package/css/top-bar.css +158 -0
  48. package/css/value-card.css +60 -0
  49. package/examples/animated-number.html +8 -0
  50. package/examples/animated-number.inline.html +8 -0
  51. package/examples/app-shell.html +20 -0
  52. package/examples/app-shell.inline.html +31 -0
  53. package/examples/aspect-ratio.html +12 -0
  54. package/examples/aspect-ratio.inline.html +12 -0
  55. package/examples/auth-shell.html +20 -0
  56. package/examples/auth-shell.inline.html +28 -0
  57. package/examples/avatar-group.html +8 -0
  58. package/examples/avatar-group.inline.html +8 -0
  59. package/examples/avatar.html +7 -0
  60. package/examples/avatar.inline.html +11 -0
  61. package/examples/badge.html +5 -0
  62. package/examples/badge.inline.html +10 -0
  63. package/examples/button.html +5 -0
  64. package/examples/button.inline.html +21 -0
  65. package/examples/callout.html +12 -0
  66. package/examples/callout.inline.html +12 -0
  67. package/examples/card.html +5 -0
  68. package/examples/card.inline.html +13 -0
  69. package/examples/code-block.html +18 -0
  70. package/examples/code-block.inline.html +22 -0
  71. package/examples/color-swatch.html +12 -0
  72. package/examples/color-swatch.inline.html +16 -0
  73. package/examples/container.html +5 -0
  74. package/examples/container.inline.html +5 -0
  75. package/examples/dashboard-grid.html +7 -0
  76. package/examples/dashboard-grid.inline.html +10 -0
  77. package/examples/divider.html +5 -0
  78. package/examples/divider.inline.html +10 -0
  79. package/examples/empty-state.html +14 -0
  80. package/examples/empty-state.inline.html +14 -0
  81. package/examples/feature-card.html +12 -0
  82. package/examples/feature-card.inline.html +25 -0
  83. package/examples/footer.html +18 -0
  84. package/examples/footer.inline.html +18 -0
  85. package/examples/form.html +86 -0
  86. package/examples/highlight.html +5 -0
  87. package/examples/highlight.inline.html +5 -0
  88. package/examples/icon-button.html +5 -0
  89. package/examples/icon-button.inline.html +22 -0
  90. package/examples/icon.html +12 -0
  91. package/examples/icon.inline.html +12 -0
  92. package/examples/kbd.html +5 -0
  93. package/examples/kbd.inline.html +5 -0
  94. package/examples/link.html +13 -0
  95. package/examples/link.inline.html +23 -0
  96. package/examples/markdown.html +6 -0
  97. package/examples/markdown.inline.html +16 -0
  98. package/examples/meter.html +20 -0
  99. package/examples/meter.inline.html +29 -0
  100. package/examples/page-header.html +22 -0
  101. package/examples/page-header.inline.html +22 -0
  102. package/examples/page-layout.html +15 -0
  103. package/examples/page-layout.inline.html +21 -0
  104. package/examples/progress.html +20 -0
  105. package/examples/progress.inline.html +27 -0
  106. package/examples/scroll-area.html +12 -0
  107. package/examples/scroll-area.inline.html +22 -0
  108. package/examples/section.html +8 -0
  109. package/examples/section.inline.html +13 -0
  110. package/examples/settings-layout.html +12 -0
  111. package/examples/settings-layout.inline.html +22 -0
  112. package/examples/skeleton.html +10 -0
  113. package/examples/skeleton.inline.html +15 -0
  114. package/examples/spinner.html +9 -0
  115. package/examples/spinner.inline.html +9 -0
  116. package/examples/stack.html +5 -0
  117. package/examples/stack.inline.html +5 -0
  118. package/examples/stat.html +9 -0
  119. package/examples/stat.inline.html +10 -0
  120. package/examples/status-bar.html +15 -0
  121. package/examples/status-bar.inline.html +15 -0
  122. package/examples/stepper.html +18 -0
  123. package/examples/stepper.inline.html +18 -0
  124. package/examples/table.html +7 -0
  125. package/examples/table.inline.html +7 -0
  126. package/examples/text.html +5 -0
  127. package/examples/text.inline.html +5 -0
  128. package/examples/timeline.html +10 -0
  129. package/examples/timeline.inline.html +10 -0
  130. package/examples/toolbar.html +15 -0
  131. package/examples/toolbar.inline.html +15 -0
  132. package/examples/tooltip.html +19 -0
  133. package/examples/tooltip.inline.html +19 -0
  134. package/examples/top-bar.html +23 -0
  135. package/examples/top-bar.inline.html +29 -0
  136. package/examples/value-card.html +11 -0
  137. package/examples/value-card.inline.html +15 -0
  138. package/package.json +31 -0
package/css/arc-ui.css ADDED
@@ -0,0 +1,3045 @@
1
+ /* Auto-generated by @arclux/prism — do not edit manually */
2
+
3
+ /* Design Tokens */
4
+ :root {
5
+
6
+ /* ── Backgrounds ── */
7
+ --bg-deep: rgb(3, 3, 7);
8
+ --bg-surface: rgb(10, 10, 15);
9
+ --bg-base: rgb(10, 10, 15);
10
+ --bg-card: rgb(13, 13, 18);
11
+ --bg-elevated: rgb(17, 17, 22);
12
+
13
+ /* ── Text ── */
14
+ --text-primary: rgb(232, 232, 236);
15
+ --text-secondary: rgb(138, 138, 150);
16
+ --text-muted: rgb(124, 124, 137);
17
+ --text-ghost: rgb(107, 107, 128);
18
+
19
+ /* ── Borders ── */
20
+ --border-subtle: rgb(24, 24, 30);
21
+ --border-default: rgb(34, 34, 41);
22
+ --border-bright: rgb(51, 51, 64);
23
+
24
+ /* ── Accent ── */
25
+ --accent-primary: rgb(77, 126, 247);
26
+ --accent-secondary: rgb(139, 92, 246);
27
+
28
+ /* RGB channels (for alpha compositing) */
29
+ --accent-primary-rgb: 77, 126, 247;
30
+ --accent-secondary-rgb: 139, 92, 246;
31
+ --text-primary-rgb: 232, 232, 236;
32
+ --text-muted-rgb: 124, 124, 137;
33
+ --color-error-rgb: 239, 68, 68;
34
+ --white-rgb: 255, 255, 255;
35
+ --black-rgb: 0, 0, 0;
36
+
37
+ /* Accent alpha variants */
38
+ --accent-primary-subtle: rgba(var(--accent-primary-rgb), 0.06);
39
+ --accent-primary-border: rgba(var(--accent-primary-rgb), 0.12);
40
+ --accent-primary-glow: rgba(var(--accent-primary-rgb), 0.2);
41
+ --accent-primary-ring: rgba(var(--accent-primary-rgb), 0.15);
42
+ --accent-secondary-subtle: rgba(var(--accent-secondary-rgb), 0.06);
43
+ --accent-secondary-border: rgba(var(--accent-secondary-rgb), 0.12);
44
+ --accent-secondary-glow: rgba(var(--accent-secondary-rgb), 0.2);
45
+
46
+ /* Feedback */
47
+ --color-success: rgb(52, 211, 153);
48
+ --color-success-rgb: 52, 211, 153;
49
+ --color-error: rgb(239, 68, 68);
50
+ --color-error-subtle: rgba(var(--color-error-rgb), 0.1);
51
+ --color-warning: rgb(245, 158, 11);
52
+ --color-warning-rgb: 245, 158, 11;
53
+ --color-warning-subtle: rgba(245, 158, 11, 0.1);
54
+ --color-info: rgb(59, 130, 246);
55
+ --color-info-rgb: 59, 130, 246;
56
+ --color-info-subtle: rgba(59, 130, 246, 0.1);
57
+
58
+ /* ── Shadows ── */
59
+ --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.2);
60
+ --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.2), 0 1px 2px rgba(0, 0, 0, 0.15);
61
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.25), 0 2px 4px rgba(0, 0, 0, 0.15);
62
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.3), 0 4px 8px rgba(0, 0, 0, 0.15);
63
+ --shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.35), 0 8px 16px rgba(0, 0, 0, 0.15);
64
+ --shadow-overlay: 0 8px 32px rgba(0, 0, 0, 0.4);
65
+
66
+ /* ── Z-Index ── */
67
+ --z-base: 0;
68
+ --z-dropdown: 100;
69
+ --z-sticky: 200;
70
+ --z-drawer: 300;
71
+ --z-modal: 400;
72
+ --z-popover: 500;
73
+ --z-toast: 600;
74
+ --z-tooltip: 700;
75
+ --z-max: 9999;
76
+
77
+ /* ── Breakpoints ── */
78
+ --breakpoint-xs: 480px;
79
+ --breakpoint-sm: 640px;
80
+ --breakpoint-md: 768px;
81
+ --breakpoint-lg: 1024px;
82
+ --breakpoint-xl: 1280px;
83
+ --breakpoint-2xl: 1536px;
84
+
85
+ /* ── Opacity ── */
86
+ --opacity-disabled: 0.5;
87
+ --opacity-muted: 0.6;
88
+ --opacity-hover: 0.8;
89
+ --opacity-visible: 1;
90
+
91
+ /* ── Typography ── */
92
+ --font-body: 'Host Grotesk', system-ui, sans-serif;
93
+ --font-accent: 'Tektur', system-ui, sans-serif;
94
+ --font-mono: 'JetBrains Mono', ui-monospace, monospace;
95
+
96
+ --display-xl-size: var(--text-3xl);
97
+ --display-xl-weight: 500;
98
+ --display-xl-spacing: -1px;
99
+
100
+ --heading-size: var(--text-xl);
101
+ --heading-weight: 500;
102
+
103
+ /* ── Type scale ── */
104
+ --text-xs: 12px; /* uppercase labels, badges, counters — decorative only */
105
+ --text-sm: 14px; /* minimum readable size — captions, hints, metadata */
106
+ --text-md: 15px; /* body text */
107
+ --text-lg: clamp(18px, 1.5vw, 20px);
108
+ --text-xl: clamp(22px, 2.5vw, 26px);
109
+ --text-2xl: clamp(28px, 3vw, 36px);
110
+ --text-3xl: clamp(36px, 5vw, 52px);
111
+
112
+ --body-size: var(--text-md);
113
+ --body-weight: 500;
114
+ --body-lh: 1.7;
115
+
116
+ --wordmark-size: clamp(20px, 2.5vw, 28px);
117
+ --wordmark-weight: 500;
118
+ --wordmark-spacing: clamp(8px, 1.2vw, 14px);
119
+
120
+ --section-title-size: var(--text-xs);
121
+ --section-title-weight: 600;
122
+ --section-title-spacing: 4px;
123
+
124
+ --ui-accent-size: 16px;
125
+ --ui-accent-weight: 600;
126
+ --ui-accent-spacing: 1px;
127
+
128
+ --code-size: var(--text-sm);
129
+ --code-lh: 1.8;
130
+
131
+ --label-inline-size: var(--text-xs);
132
+ --label-inline-spacing: 3px;
133
+
134
+ /* ── Interactive ── */
135
+ --touch-min: 24px;
136
+ --touch-pad: 4px;
137
+
138
+ /* ── Spacing ── */
139
+ --space-xs: 4px;
140
+ --space-sm: 8px;
141
+ --space-md: 16px;
142
+ --space-lg: 24px;
143
+ --space-xl: 40px;
144
+ --space-2xl: 64px;
145
+ --space-3xl: 96px;
146
+ --space-4xl: 128px;
147
+
148
+ /* ── Radii ── */
149
+ --radius-sm: 4px;
150
+ --radius-md: 10px;
151
+ --radius-lg: 14px;
152
+ --radius-xl: 20px;
153
+ --radius-full: 9999px;
154
+
155
+ /* ── Transitions ── */
156
+ --transition-fast: 120ms ease;
157
+ --transition-base: 200ms ease;
158
+ --transition-slow: 400ms ease;
159
+
160
+ /* ── Motion ── */
161
+ --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
162
+ --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
163
+ --duration-enter: 500ms;
164
+ --duration-exit: 300ms;
165
+
166
+ /* ── Gradients ── */
167
+ --gradient-display-text: linear-gradient(135deg, rgb(232, 232, 236) 0%, rgb(124, 124, 137) 100%);
168
+ --gradient-accent-text: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary));
169
+ --gradient-divider: linear-gradient(90deg, transparent, var(--border-subtle), transparent);
170
+ --gradient-divider-glow: linear-gradient(90deg, transparent, rgba(var(--accent-primary-rgb),0.2), rgba(var(--accent-secondary-rgb),0.12), transparent);
171
+ --gradient-page-ambient: radial-gradient(ellipse, rgba(var(--white-rgb),0.015) 0%, transparent 70%);
172
+
173
+ /* ── Glow ── */
174
+ --glow-white:
175
+ 0 0 6px rgba(var(--text-primary-rgb),0.6),
176
+ 0 0 18px rgba(var(--text-primary-rgb),0.25),
177
+ 0 0 40px rgba(var(--text-primary-rgb),0.1);
178
+
179
+ --glow-primary:
180
+ 0 0 8px rgba(var(--accent-primary-rgb),0.9),
181
+ 0 0 20px rgba(var(--accent-primary-rgb),0.5),
182
+ 0 0 44px rgba(var(--accent-primary-rgb),0.25),
183
+ 0 0 80px rgba(var(--accent-primary-rgb),0.1);
184
+
185
+ --glow-secondary:
186
+ 0 0 8px rgba(var(--accent-secondary-rgb),0.9),
187
+ 0 0 20px rgba(var(--accent-secondary-rgb),0.4),
188
+ 0 0 40px rgba(var(--accent-secondary-rgb),0.15);
189
+
190
+ --glow-line-white: linear-gradient(90deg, transparent, rgba(var(--text-primary-rgb),0.35), transparent);
191
+ --glow-line-blue: linear-gradient(90deg, transparent, rgba(var(--accent-primary-rgb),0.7), transparent);
192
+ --glow-line-gradient: linear-gradient(90deg, transparent, var(--accent-primary), var(--accent-secondary), transparent);
193
+
194
+ /* ── Card / Ambient Glow ── */
195
+ --glow-card-hover: 0 0 20px rgba(var(--accent-primary-rgb),0.08), 0 0 40px rgba(var(--accent-secondary-rgb),0.04);
196
+ --gradient-border-glow: linear-gradient(135deg, rgba(var(--accent-primary-rgb),0.15), rgba(var(--accent-secondary-rgb),0.1), rgba(var(--accent-primary-rgb),0.05));
197
+ --gradient-ambient: radial-gradient(circle at 15% 85%, rgba(var(--accent-primary-rgb),0.04) 0%, transparent 50%),
198
+ radial-gradient(circle at 85% 15%, rgba(var(--accent-secondary-rgb),0.03) 0%, transparent 50%);
199
+
200
+ /* ── Focus ── */
201
+ --focus-ring: 0 0 0 1px rgba(var(--accent-primary-rgb),0.25);
202
+ --focus-glow: 0 0 0 1px rgba(var(--accent-primary-rgb),0.2), 0 0 6px rgba(var(--accent-primary-rgb),0.35), 0 0 16px rgba(var(--accent-primary-rgb),0.2), 0 0 40px rgba(var(--accent-secondary-rgb),0.12);
203
+
204
+ /* ── Layout ── */
205
+ --max-width: 1120px;
206
+ --max-width-sm: 720px;
207
+ --nav-height: 64px;
208
+
209
+ /* ── Utility ── */
210
+ --bg-hover: rgba(var(--white-rgb), 0.04);
211
+ --overlay-backdrop: rgba(var(--black-rgb), 0.6);
212
+
213
+ }
214
+
215
+ /* arc-animated-number */
216
+ .arc-animated-number {
217
+ display: inline-block;
218
+ font-family: var(--font-mono);
219
+ font-variant-numeric: tabular-nums;
220
+ }
221
+
222
+ .arc-animated-number .value {
223
+ white-space: nowrap;
224
+ }
225
+
226
+ /* arc-aspect-ratio */
227
+ .arc-aspect-ratio { display: block; }
228
+
229
+ .arc-aspect-ratio .aspect-ratio {
230
+ position: relative;
231
+ width: 100%;
232
+ overflow: hidden;
233
+ border-radius: var(--radius-md);
234
+ }
235
+
236
+ .arc-aspect-ratio .aspect-ratio__inner {
237
+ width: 100%;
238
+ height: 100%;
239
+ }
240
+
241
+ ::slotted(*) {
242
+ width: 100%;
243
+ height: 100%;
244
+ object-fit: cover;
245
+ display: block;
246
+ }
247
+
248
+ /* arc-avatar-group */
249
+ .arc-avatar-group { display: inline-flex; }
250
+
251
+ .arc-avatar-group .group {
252
+ display: flex;
253
+ align-items: center;
254
+ }
255
+
256
+ ::slotted(*) {
257
+ position: relative;
258
+ box-sizing: border-box;
259
+ box-shadow: 0 0 0 3px var(--bg-deep);
260
+ border-radius: var(--radius-full);
261
+ transition: transform var(--transition-fast), box-shadow var(--transition-fast);
262
+ }
263
+
264
+ ::slotted(:hover) {
265
+ transform: translateY(-2px) scale(1.08);
266
+ z-index: 100 !important;
267
+ box-shadow: 0 0 0 3px var(--bg-deep), 0 4px 12px rgba(0, 0, 0, 0.3);
268
+ }
269
+
270
+ .arc-avatar-group .group__overflow {
271
+ display: inline-flex;
272
+ align-items: center;
273
+ justify-content: center;
274
+ font-family: var(--font-accent);
275
+ font-weight: 600;
276
+ font-size: var(--text-sm);
277
+ letter-spacing: 0.5px;
278
+ color: var(--text-ghost);
279
+ user-select: none;
280
+ padding-left: var(--space-sm);
281
+ }
282
+
283
+ .arc-avatar-group[data-overlap="sm"] .group__overflow { padding-left: var(--space-xs); }
284
+ .arc-avatar-group[data-overlap="lg"] .group__overflow { padding-left: var(--space-md); }
285
+
286
+ @media (prefers-reduced-motion: reduce) {
287
+ .arc-avatar-group *,
288
+ .arc-avatar-group *::before,
289
+ .arc-avatar-group *::after {
290
+ animation-duration: 0.01ms !important;
291
+ animation-iteration-count: 1 !important;
292
+ transition-duration: 0.01ms !important;
293
+ }
294
+ }
295
+
296
+ /* arc-avatar */
297
+ .arc-avatar { display: inline-flex; }
298
+
299
+ .arc-avatar .avatar {
300
+ display: inline-flex;
301
+ align-items: center;
302
+ justify-content: center;
303
+ border-radius: var(--radius-full);
304
+ border: 1px solid var(--border-default);
305
+ overflow: hidden;
306
+ background: var(--bg-elevated);
307
+ transition: border-color var(--transition-base), box-shadow var(--transition-base);
308
+ }
309
+
310
+ .arc-avatar .avatar:hover {
311
+ border-color: var(--border-bright);
312
+ box-shadow: 0 0 12px rgba(var(--accent-primary-rgb), 0.15);
313
+ }
314
+
315
+ .arc-avatar[data-size="sm"] .avatar { width: 32px; height: 32px; }
316
+ .arc-avatar[data-size="md"] .avatar { width: 40px; height: 40px; }
317
+ .arc-avatar[data-size="lg"] .avatar { width: 56px; height: 56px; }
318
+
319
+ .arc-avatar .avatar__img {
320
+ width: 100%;
321
+ height: 100%;
322
+ object-fit: cover;
323
+ border-radius: var(--radius-full);
324
+ }
325
+
326
+ .arc-avatar .avatar__initials {
327
+ font-family: var(--font-accent);
328
+ font-weight: 600;
329
+ color: var(--text-primary);
330
+ text-transform: uppercase;
331
+ user-select: none;
332
+ }
333
+
334
+ .arc-avatar[data-size="sm"] .avatar__initials { font-size: var(--text-xs); }
335
+ .arc-avatar[data-size="md"] .avatar__initials { font-size: var(--text-sm); }
336
+ .arc-avatar[data-size="lg"] .avatar__initials { font-size: var(--text-lg); }
337
+
338
+ @media (prefers-reduced-motion: reduce) {
339
+ .arc-avatar *,
340
+ .arc-avatar *::before,
341
+ .arc-avatar *::after {
342
+ animation-duration: 0.01ms !important;
343
+ animation-iteration-count: 1 !important;
344
+ transition-duration: 0.01ms !important;
345
+ }
346
+ }
347
+
348
+ /* arc-badge */
349
+ .arc-badge { display: inline-flex; }
350
+
351
+ .arc-badge .badge {
352
+ display: inline-flex;
353
+ align-items: center;
354
+ gap: var(--space-xs);
355
+ font-family: var(--font-accent);
356
+ font-weight: 600;
357
+ font-size: var(--text-xs);
358
+ letter-spacing: 2px;
359
+ text-transform: uppercase;
360
+ color: var(--text-muted);
361
+ padding: var(--space-xs) var(--space-sm);
362
+ border: 1px solid var(--border-default);
363
+ border-radius: var(--radius-sm);
364
+ background: var(--bg-hover);
365
+ transition: box-shadow 200ms ease, border-color 200ms ease;
366
+ line-height: 1.4;
367
+ }
368
+
369
+ .arc-badge[data-variant="primary"] .badge {
370
+ border-color: var(--accent-primary-border);
371
+ color: var(--accent-primary);
372
+ background: rgba(var(--accent-primary-rgb), 0.06);
373
+ }
374
+
375
+ .arc-badge[data-variant="secondary"] .badge {
376
+ border-color: var(--accent-secondary-border);
377
+ color: var(--accent-secondary);
378
+ background: rgba(var(--accent-secondary-rgb), 0.06);
379
+ }
380
+
381
+ .arc-badge[data-variant="success"] .badge {
382
+ border-color: rgba(var(--color-success-rgb), 0.2);
383
+ color: var(--color-success);
384
+ background: rgba(var(--color-success-rgb), 0.06);
385
+ }
386
+
387
+ .arc-badge[data-variant="warning"] .badge {
388
+ border-color: rgba(var(--color-warning-rgb), 0.2);
389
+ color: var(--color-warning);
390
+ background: rgba(var(--color-warning-rgb), 0.06);
391
+ }
392
+
393
+ .arc-badge[data-variant="error"] .badge {
394
+ border-color: rgba(var(--color-error-rgb), 0.2);
395
+ color: var(--color-error);
396
+ background: rgba(var(--color-error-rgb), 0.06);
397
+ }
398
+
399
+ .arc-badge[data-variant="info"] .badge {
400
+ border-color: rgba(var(--color-info-rgb), 0.2);
401
+ color: var(--color-info);
402
+ background: rgba(var(--color-info-rgb), 0.06);
403
+ }
404
+
405
+ .arc-badge:hover .badge { border-color: var(--border-bright); }
406
+ .arc-badge[data-variant="primary"]:hover .badge { box-shadow: 0 0 12px rgba(var(--accent-primary-rgb), 0.15); }
407
+ .arc-badge[data-variant="secondary"]:hover .badge { box-shadow: 0 0 12px rgba(var(--accent-secondary-rgb), 0.15); }
408
+ .arc-badge[data-variant="success"]:hover .badge { box-shadow: 0 0 12px rgba(var(--color-success-rgb), 0.15); }
409
+ .arc-badge[data-variant="warning"]:hover .badge { box-shadow: 0 0 12px rgba(var(--color-warning-rgb), 0.15); }
410
+ .arc-badge[data-variant="error"]:hover .badge { box-shadow: 0 0 12px rgba(var(--color-error-rgb), 0.15); }
411
+ .arc-badge[data-variant="info"]:hover .badge { box-shadow: 0 0 12px rgba(var(--color-info-rgb), 0.15); }
412
+
413
+ @media (prefers-reduced-motion: reduce) {
414
+ .arc-badge *,
415
+ .arc-badge *::before,
416
+ .arc-badge *::after {
417
+ animation-duration: 0.01ms !important;
418
+ animation-iteration-count: 1 !important;
419
+ transition-duration: 0.01ms !important;
420
+ }
421
+ }
422
+
423
+ /* arc-callout */
424
+ .arc-callout { display: block; }
425
+
426
+ .arc-callout .callout {
427
+ display: flex;
428
+ flex-direction: column;
429
+ gap: var(--space-sm);
430
+ padding: var(--space-md) var(--space-lg);
431
+ border-radius: var(--radius-md);
432
+ border: 1px solid var(--border-default);
433
+ background: var(--bg-card);
434
+ font-family: var(--font-body);
435
+ font-size: var(--text-sm);
436
+ line-height: 1.7;
437
+ color: var(--text-secondary);
438
+ }
439
+
440
+ .arc-callout .callout__header {
441
+ display: flex;
442
+ align-items: center;
443
+ gap: var(--space-sm);
444
+ }
445
+
446
+ .arc-callout .callout__icon {
447
+ flex-shrink: 0;
448
+ display: flex;
449
+ align-items: center;
450
+ }
451
+
452
+ .arc-callout .callout__label {
453
+ font-family: var(--font-accent);
454
+ font-size: var(--text-xs);
455
+ font-weight: 600;
456
+ letter-spacing: 1.5px;
457
+ text-transform: uppercase;
458
+ }
459
+
460
+ .arc-callout .callout__content {
461
+ min-width: 0;
462
+ }
463
+
464
+ /* ── Info ── */
465
+ .arc-callout[data-variant="info"] .callout {
466
+ border-color: rgba(var(--accent-primary-rgb), 0.12);
467
+ background: rgba(var(--accent-primary-rgb), 0.04);
468
+ }
469
+ .arc-callout[data-variant="info"] .callout__icon { color: var(--accent-primary); }
470
+ .arc-callout[data-variant="info"] .callout__label { color: var(--accent-primary); }
471
+
472
+ /* ── Warning ── */
473
+ .arc-callout[data-variant="warning"] .callout {
474
+ border-color: rgba(var(--color-warning-rgb), 0.15);
475
+ background: rgba(var(--color-warning-rgb), 0.04);
476
+ }
477
+ .arc-callout[data-variant="warning"] .callout__icon { color: var(--color-warning); }
478
+ .arc-callout[data-variant="warning"] .callout__label { color: var(--color-warning); }
479
+
480
+ /* ── Tip ── */
481
+ .arc-callout[data-variant="tip"] .callout {
482
+ border-color: rgba(var(--color-success-rgb), 0.15);
483
+ background: rgba(var(--color-success-rgb), 0.04);
484
+ }
485
+ .arc-callout[data-variant="tip"] .callout__icon { color: var(--color-success); }
486
+ .arc-callout[data-variant="tip"] .callout__label { color: var(--color-success); }
487
+
488
+ /* ── Danger ── */
489
+ .arc-callout[data-variant="danger"] .callout {
490
+ border-color: rgba(var(--color-error-rgb), 0.15);
491
+ background: rgba(var(--color-error-rgb), 0.04);
492
+ }
493
+ .arc-callout[data-variant="danger"] .callout__icon { color: var(--color-error); }
494
+ .arc-callout[data-variant="danger"] .callout__label { color: var(--color-error); }
495
+
496
+ @media (prefers-reduced-motion: reduce) {
497
+ .arc-callout *,
498
+ .arc-callout *::before,
499
+ .arc-callout *::after {
500
+ animation-duration: 0.01ms !important;
501
+ animation-iteration-count: 1 !important;
502
+ transition-duration: 0.01ms !important;
503
+ }
504
+ }
505
+
506
+ /* arc-card */
507
+ .arc-card { display: block; }
508
+
509
+ .arc-card .card {
510
+ position: relative;
511
+ border-radius: var(--radius-lg);
512
+ padding: 1px;
513
+ background: var(--border-subtle);
514
+ transition: background var(--transition-slow);
515
+ text-decoration: none;
516
+ display: flex;
517
+ flex-direction: column;
518
+ height: 100%;
519
+ }
520
+
521
+ .arc-card[href] .card:hover {
522
+ background: linear-gradient(135deg, rgba(var(--accent-primary-rgb),0.3), rgba(var(--accent-secondary-rgb),0.15), var(--border-default));
523
+ }
524
+
525
+ .arc-card .card__inner {
526
+ position: relative;
527
+ background: var(--bg-card);
528
+ border-radius: calc(var(--radius-lg) - 1px);
529
+ padding: var(--space-xl) var(--space-lg);
530
+ flex: 1;
531
+ min-height: 0;
532
+ transition: box-shadow var(--transition-slow);
533
+ }
534
+
535
+ .arc-card .card:hover .card__inner {
536
+ box-shadow: inset 0 1px 0 var(--bg-hover), var(--glow-card-hover);
537
+ }
538
+
539
+ .arc-card .card:focus-visible { outline: none; box-shadow: var(--focus-glow); border-radius: var(--radius-lg); }
540
+
541
+ @media (max-width: 768px) {
542
+ .arc-card .card__inner { padding: var(--space-lg) var(--space-md); }
543
+ }
544
+
545
+ @media (prefers-reduced-motion: reduce) {
546
+ .arc-card *,
547
+ .arc-card *::before,
548
+ .arc-card *::after {
549
+ animation-duration: 0.01ms !important;
550
+ animation-iteration-count: 1 !important;
551
+ transition-duration: 0.01ms !important;
552
+ }
553
+ }
554
+
555
+ /* arc-code-block */
556
+ .arc-code-block { display: block; }
557
+
558
+ .arc-code-block .code-block {
559
+ background: var(--bg-surface);
560
+ border: 1px solid var(--border-default);
561
+ border-radius: var(--radius-lg);
562
+ overflow: hidden;
563
+ }
564
+
565
+ .arc-code-block .code-block__header {
566
+ display: flex;
567
+ align-items: center;
568
+ justify-content: space-between;
569
+ padding: var(--space-xs) var(--space-md);
570
+ border-bottom: 1px solid var(--border-subtle);
571
+ background: var(--bg-card);
572
+ }
573
+
574
+ .arc-code-block .code-block__filename {
575
+ font-family: var(--font-mono);
576
+ font-size: var(--text-sm);
577
+ color: var(--text-muted);
578
+ }
579
+
580
+ .arc-code-block .code-block__lang {
581
+ font-family: var(--font-accent);
582
+ font-size: var(--text-xs);
583
+ letter-spacing: 2px;
584
+ text-transform: uppercase;
585
+ color: var(--text-ghost);
586
+ }
587
+
588
+ .arc-code-block .code-block__copy {
589
+ display: flex;
590
+ align-items: center;
591
+ gap: var(--space-xs);
592
+ background: none;
593
+ border: 1px solid var(--border-default);
594
+ border-radius: var(--radius-sm);
595
+ color: var(--text-muted);
596
+ font-family: var(--font-accent);
597
+ font-size: var(--text-xs);
598
+ letter-spacing: 1px;
599
+ text-transform: uppercase;
600
+ padding: var(--space-xs) var(--space-sm);
601
+ cursor: pointer;
602
+ transition: color var(--transition-fast), border-color var(--transition-fast);
603
+ }
604
+
605
+ .arc-code-block .code-block__copy:hover {
606
+ color: var(--text-primary);
607
+ border-color: var(--border-bright);
608
+ }
609
+
610
+ .arc-code-block .code-block__copy[data-copied] {
611
+ color: var(--color-success);
612
+ border-color: var(--color-success);
613
+ }
614
+
615
+ .arc-code-block .code-block__body {
616
+ padding: var(--space-md);
617
+ overflow-x: auto;
618
+ }
619
+
620
+ .arc-code-block .code-block__pre {
621
+ margin: 0;
622
+ font-family: var(--font-mono);
623
+ font-size: var(--code-size);
624
+ line-height: var(--code-lh);
625
+ color: var(--text-primary);
626
+ white-space: pre;
627
+ tab-size: 2;
628
+ }
629
+
630
+ @media (prefers-reduced-motion: reduce) {
631
+ .arc-code-block *,
632
+ .arc-code-block *::before,
633
+ .arc-code-block *::after {
634
+ animation-duration: 0.01ms !important;
635
+ animation-iteration-count: 1 !important;
636
+ transition-duration: 0.01ms !important;
637
+ }
638
+ }
639
+
640
+ /* arc-color-swatch */
641
+ .arc-color-swatch { display: inline-flex; }
642
+
643
+ .arc-color-swatch .swatch {
644
+ display: flex;
645
+ flex-direction: column;
646
+ align-items: center;
647
+ gap: var(--space-sm);
648
+ }
649
+
650
+ .arc-color-swatch .swatch__color {
651
+ border-radius: var(--radius-md);
652
+ border: 1px solid var(--border-default);
653
+ transition: border-color var(--transition-base), box-shadow var(--transition-base);
654
+ }
655
+
656
+ .arc-color-swatch .swatch__color:hover {
657
+ border-color: var(--border-bright);
658
+ box-shadow: 0 0 12px rgba(var(--accent-primary-rgb), 0.1);
659
+ }
660
+
661
+ .arc-color-swatch[data-size="sm"] .swatch__color { width: 32px; height: 32px; border-radius: var(--radius-sm); }
662
+ .arc-color-swatch[data-size="md"] .swatch__color { width: 48px; height: 48px; }
663
+ .arc-color-swatch[data-size="lg"] .swatch__color { width: 64px; height: 64px; border-radius: var(--radius-lg); }
664
+
665
+ .arc-color-swatch .swatch__label {
666
+ font-family: var(--font-mono);
667
+ font-size: var(--text-sm);
668
+ color: var(--text-muted);
669
+ text-align: center;
670
+ max-width: 80px;
671
+ overflow: hidden;
672
+ text-overflow: ellipsis;
673
+ white-space: nowrap;
674
+ }
675
+
676
+ @media (prefers-reduced-motion: reduce) {
677
+ .arc-color-swatch *,
678
+ .arc-color-swatch *::before,
679
+ .arc-color-swatch *::after {
680
+ animation-duration: 0.01ms !important;
681
+ animation-iteration-count: 1 !important;
682
+ transition-duration: 0.01ms !important;
683
+ }
684
+ }
685
+
686
+ /* arc-divider */
687
+ .arc-divider { display: block; width: 100%; }
688
+
689
+ .arc-divider .divider { width: 100%; height: 1px; }
690
+
691
+ .arc-divider:not([data-variant]) .divider,
692
+ .arc-divider[data-variant="subtle"] .divider { background: var(--gradient-divider); }
693
+
694
+ .arc-divider[data-variant="glow"] .divider {
695
+ position: relative;
696
+ background: var(--gradient-divider-glow);
697
+ box-shadow: 0 0 6px rgba(var(--accent-primary-rgb),0.08);
698
+ }
699
+ .arc-divider[data-variant="glow"] .divider::after {
700
+ content: '';
701
+ position: absolute;
702
+ inset: 0;
703
+ background: linear-gradient(90deg, transparent 0%, rgba(var(--accent-secondary-rgb),0.4) 50%, transparent 100%);
704
+ background-size: 200% 100%;
705
+ animation: divider-shimmer 6s ease-in-out infinite;
706
+ mix-blend-mode: screen;
707
+ }
708
+
709
+ .arc-divider[data-variant="line-white"] .divider,
710
+ .arc-divider[data-variant="line-primary"] .divider,
711
+ .arc-divider[data-variant="line-gradient"] .divider {
712
+ height: 2px;
713
+ margin-inline: auto;
714
+ }
715
+ .arc-divider[data-variant="line-white"] .divider {
716
+ max-width: 160px;
717
+ background: linear-gradient(90deg, transparent, rgba(var(--text-primary-rgb),0.35), transparent);
718
+ }
719
+ .arc-divider[data-variant="line-primary"] .divider {
720
+ max-width: 200px;
721
+ background: linear-gradient(90deg, transparent, rgba(var(--accent-primary-rgb),0.7), transparent);
722
+ box-shadow: 0 0 8px rgba(var(--accent-primary-rgb),0.3);
723
+ }
724
+ .arc-divider[data-variant="line-gradient"] .divider {
725
+ max-width: 240px;
726
+ background: var(--glow-line-gradient);
727
+ box-shadow: 0 0 10px rgba(var(--accent-primary-rgb),0.25);
728
+ }
729
+
730
+ /* Alignment — rewrite gradients to originate from one edge */
731
+ .arc-divider[data-align="left"] .divider { margin-inline: 0; }
732
+ .arc-divider[data-align="right"] .divider { margin-left: auto; margin-right: 0; }
733
+
734
+ .arc-divider([align="left"]:not([variant])) .divider,
735
+ .arc-divider([align="left"][variant="subtle"]) .divider {
736
+ background: linear-gradient(90deg, var(--border-default), transparent);
737
+ }
738
+ .arc-divider([align="right"]:not([variant])) .divider,
739
+ .arc-divider([align="right"][variant="subtle"]) .divider {
740
+ background: linear-gradient(90deg, transparent, var(--border-default));
741
+ }
742
+
743
+ .arc-divider([align="left"][variant="glow"]) .divider {
744
+ background: linear-gradient(90deg, rgba(var(--accent-primary-rgb),0.5), rgba(var(--accent-secondary-rgb),0.3), transparent);
745
+ }
746
+ .arc-divider([align="right"][variant="glow"]) .divider {
747
+ background: linear-gradient(90deg, transparent, rgba(var(--accent-secondary-rgb),0.3), rgba(var(--accent-primary-rgb),0.5));
748
+ }
749
+
750
+ .arc-divider([align="left"][variant="line-white"]) .divider {
751
+ background: linear-gradient(90deg, rgba(var(--text-primary-rgb),0.35), transparent);
752
+ }
753
+ .arc-divider([align="right"][variant="line-white"]) .divider {
754
+ background: linear-gradient(90deg, transparent, rgba(var(--text-primary-rgb),0.35));
755
+ }
756
+
757
+ .arc-divider([align="left"][variant="line-primary"]) .divider {
758
+ background: linear-gradient(90deg, rgba(var(--accent-primary-rgb),0.7), transparent);
759
+ }
760
+ .arc-divider([align="right"][variant="line-primary"]) .divider {
761
+ background: linear-gradient(90deg, transparent, rgba(var(--accent-primary-rgb),0.7));
762
+ }
763
+
764
+ .arc-divider([align="left"][variant="line-gradient"]) .divider {
765
+ background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary), transparent);
766
+ }
767
+ .arc-divider([align="right"][variant="line-gradient"]) .divider {
768
+ background: linear-gradient(90deg, transparent, var(--accent-primary), var(--accent-secondary));
769
+ }
770
+
771
+ /* ── Vertical ── */
772
+ .arc-divider[vertical] { display: inline-flex; width: auto; height: 100%; }
773
+ .arc-divider[vertical] .divider { width: 1px; height: 100%; }
774
+
775
+ .arc-divider([vertical]:not([variant])) .divider,
776
+ .arc-divider([vertical][variant="subtle"]) .divider {
777
+ background: linear-gradient(180deg, transparent, var(--border-default), transparent);
778
+ }
779
+
780
+ .arc-divider([vertical][variant="glow"]) .divider {
781
+ background: linear-gradient(180deg, transparent, rgba(var(--accent-primary-rgb),0.5), rgba(var(--accent-secondary-rgb),0.3), transparent);
782
+ }
783
+
784
+ .arc-divider([vertical][variant="line-gradient"]) .divider {
785
+ width: 2px;
786
+ max-width: none;
787
+ background: linear-gradient(180deg, transparent, var(--accent-primary), var(--accent-secondary), transparent);
788
+ box-shadow: 0 0 10px rgba(var(--accent-primary-rgb),0.25);
789
+ }
790
+
791
+ .arc-divider([vertical][variant="line-primary"]) .divider {
792
+ width: 2px;
793
+ max-width: none;
794
+ background: linear-gradient(180deg, transparent, rgba(var(--accent-primary-rgb),0.7), transparent);
795
+ box-shadow: 0 0 8px rgba(var(--accent-primary-rgb),0.3);
796
+ }
797
+
798
+ .arc-divider([vertical][variant="line-white"]) .divider {
799
+ width: 2px;
800
+ max-width: none;
801
+ background: linear-gradient(180deg, transparent, rgba(var(--text-primary-rgb),0.35), transparent);
802
+ }
803
+
804
+ @keyframes divider-shimmer {
805
+ 0%, 100% { background-position: 200% 0; }
806
+ 50% { background-position: -100% 0; }
807
+ }
808
+
809
+ @media (prefers-reduced-motion: reduce) {
810
+ .arc-divider[data-variant="glow"] .divider::after { animation: none; }
811
+ }
812
+
813
+ /* arc-empty-state */
814
+ .arc-empty-state { display: block; }
815
+
816
+ .arc-empty-state .empty {
817
+ display: flex;
818
+ flex-direction: column;
819
+ align-items: center;
820
+ text-align: center;
821
+ padding: var(--space-2xl) var(--space-xl);
822
+ border: 1px dashed var(--border-default);
823
+ border-radius: var(--radius-lg);
824
+ background: var(--bg-card);
825
+ }
826
+
827
+ .arc-empty-state .empty__icon {
828
+ margin-bottom: var(--space-lg);
829
+ color: var(--text-ghost);
830
+ font-size: 40px; /* icon size, not text */
831
+ }
832
+
833
+ .arc-empty-state .empty__heading {
834
+ margin: 0 0 var(--space-sm);
835
+ font-family: var(--font-body);
836
+ font-size: var(--heading-size);
837
+ font-weight: var(--heading-weight);
838
+ color: var(--text-primary);
839
+ }
840
+
841
+ .arc-empty-state .empty__desc {
842
+ margin: 0 0 var(--space-lg);
843
+ font-family: var(--font-body);
844
+ font-size: var(--body-size);
845
+ line-height: var(--body-lh);
846
+ color: var(--text-muted);
847
+ max-width: 360px;
848
+ }
849
+
850
+ .arc-empty-state .empty__actions {
851
+ display: flex;
852
+ gap: var(--space-sm);
853
+ }
854
+
855
+ /* arc-feature-card */
856
+ .arc-feature-card { display: block; height: 100%; }
857
+
858
+ .arc-feature-card .card {
859
+ position: relative;
860
+ border-radius: var(--radius-lg);
861
+ height: 100%;
862
+ padding: 1px;
863
+ background: var(--border-subtle);
864
+ transition: background var(--transition-slow);
865
+ text-decoration: none;
866
+ display: flex;
867
+ flex-direction: column;
868
+ }
869
+
870
+ .arc-feature-card .card:hover {
871
+ background: linear-gradient(135deg, rgba(var(--accent-primary-rgb),0.3), rgba(var(--accent-secondary-rgb),0.15), var(--border-default));
872
+ }
873
+
874
+ .arc-feature-card .card__inner {
875
+ position: relative;
876
+ background: var(--bg-card);
877
+ border-radius: calc(var(--radius-lg) - 1px);
878
+ padding: var(--space-xl) var(--space-lg);
879
+ display: flex;
880
+ flex-direction: column;
881
+ gap: var(--space-md);
882
+ flex: 1;
883
+ transition: box-shadow var(--transition-slow);
884
+ z-index: 1;
885
+ }
886
+
887
+ .arc-feature-card .card:hover .card__inner {
888
+ box-shadow: inset 0 1px 0 var(--bg-hover), var(--glow-card-hover);
889
+ }
890
+
891
+ .arc-feature-card .card__icon {
892
+ width: 44px;
893
+ height: 44px;
894
+ display: flex;
895
+ align-items: center;
896
+ justify-content: center;
897
+ border-radius: var(--radius-md);
898
+ background: var(--accent-primary-subtle);
899
+ border: 1px solid var(--accent-primary-border);
900
+ color: var(--accent-primary);
901
+ font-size: 20px; /* icon size, not text */
902
+ transition: box-shadow var(--transition-slow), border-color var(--transition-slow), transform var(--transition-slow);
903
+ }
904
+
905
+ .arc-feature-card .card:hover .card__icon {
906
+ border-color: rgba(var(--accent-primary-rgb),0.3);
907
+ box-shadow: 0 0 20px var(--accent-primary-glow), 0 0 6px var(--accent-primary-border);
908
+ transform: translateY(-2px);
909
+ }
910
+
911
+ .arc-feature-card .card__title {
912
+ font-size: 17px; /* heading size, keep hardcoded */
913
+ font-weight: 600;
914
+ color: var(--text-primary);
915
+ transition: color var(--transition-slow);
916
+ margin: 0;
917
+ }
918
+
919
+ .arc-feature-card .card:hover .card__title { color: var(--text-primary); }
920
+
921
+ .arc-feature-card .card__desc {
922
+ color: var(--text-secondary);
923
+ font-family: var(--font-body);
924
+ font-size: var(--text-sm);
925
+ line-height: 1.7;
926
+ flex: 1;
927
+ margin: 0;
928
+ }
929
+
930
+ .arc-feature-card .card__rule {
931
+ width: 32px;
932
+ height: 1px;
933
+ background: linear-gradient(90deg, var(--accent-primary), transparent);
934
+ opacity: 0;
935
+ transition: opacity var(--transition-slow), width var(--transition-slow);
936
+ }
937
+
938
+ .arc-feature-card .card:hover .card__rule { opacity: 0.5; width: 48px; }
939
+
940
+ .arc-feature-card .card:focus-visible { outline: none; box-shadow: var(--focus-glow); border-radius: var(--radius-lg); }
941
+
942
+ @media (max-width: 768px) {
943
+ .arc-feature-card .card__inner { padding: var(--space-lg) var(--space-md); }
944
+ }
945
+
946
+ @media (prefers-reduced-motion: reduce) {
947
+ .arc-feature-card *,
948
+ .arc-feature-card *::before,
949
+ .arc-feature-card *::after {
950
+ animation-duration: 0.01ms !important;
951
+ animation-iteration-count: 1 !important;
952
+ transition-duration: 0.01ms !important;
953
+ }
954
+ }
955
+
956
+ /* arc-highlight */
957
+ .arc-highlight { display: inline; }
958
+
959
+ mark {
960
+ background: var(--accent-primary-subtle);
961
+ color: var(--accent-primary);
962
+ border-radius: var(--radius-sm);
963
+ padding: 1px var(--space-xs); /* cosmetic 1px vertical for inline highlight */
964
+ font-style: inherit;
965
+ font-weight: inherit;
966
+ }
967
+
968
+ /* arc-icon */
969
+ .arc-icon {
970
+ display: inline-flex;
971
+ align-items: center;
972
+ justify-content: center;
973
+ color: currentColor;
974
+ vertical-align: middle;
975
+ }
976
+
977
+ .arc-icon[data-size="xs"] { width: 12px; height: 12px; }
978
+ .arc-icon:not([data-size]),
979
+ .arc-icon[data-size="sm"] { width: 16px; height: 16px; }
980
+ .arc-icon[data-size="md"] { width: 20px; height: 20px; }
981
+ .arc-icon[data-size="lg"] { width: 24px; height: 24px; }
982
+ .arc-icon[data-size="xl"] { width: 32px; height: 32px; }
983
+
984
+ .arc-icon .icon {
985
+ display: flex;
986
+ align-items: center;
987
+ justify-content: center;
988
+ width: 100%;
989
+ height: 100%;
990
+ }
991
+
992
+ svg {
993
+ width: 100%;
994
+ height: 100%;
995
+ }
996
+
997
+ ::slotted(svg) {
998
+ width: 100%;
999
+ height: 100%;
1000
+ fill: currentColor;
1001
+ }
1002
+
1003
+ /* arc-kbd */
1004
+ .arc-kbd { display: inline; }
1005
+
1006
+ .arc-kbd .kbd {
1007
+ display: inline-flex;
1008
+ align-items: center;
1009
+ font-family: var(--font-mono);
1010
+ font-size: var(--text-sm);
1011
+ line-height: 1;
1012
+ color: var(--text-secondary);
1013
+ background: var(--bg-elevated);
1014
+ border: 1px solid var(--border-default);
1015
+ border-bottom-width: 2px;
1016
+ border-radius: var(--radius-sm);
1017
+ padding: 2px calc(var(--space-xs) + 2px); /* cosmetic 2px vertical for kbd element */
1018
+ white-space: nowrap;
1019
+ user-select: none;
1020
+ vertical-align: baseline;
1021
+ }
1022
+
1023
+ /* arc-markdown */
1024
+ .arc-markdown { display: block; }
1025
+
1026
+ .arc-markdown .markdown {
1027
+ font-family: var(--font-body);
1028
+ font-size: var(--body-size);
1029
+ font-weight: var(--body-weight);
1030
+ line-height: var(--body-lh);
1031
+ color: var(--text-secondary);
1032
+ }
1033
+
1034
+ .arc-markdown .markdown h1,
1035
+ .arc-markdown .markdown h2,
1036
+ .arc-markdown .markdown h3,
1037
+ .arc-markdown .markdown h4,
1038
+ .arc-markdown .markdown h5,
1039
+ .arc-markdown .markdown h6 {
1040
+ font-family: var(--font-body);
1041
+ color: var(--text-primary);
1042
+ line-height: 1.3;
1043
+ margin-top: var(--space-xl);
1044
+ margin-bottom: var(--space-md);
1045
+ }
1046
+
1047
+ .arc-markdown .markdown h1 { font-size: var(--text-3xl); font-weight: 600; }
1048
+ .arc-markdown .markdown h2 { font-size: var(--heading-size); font-weight: 600; }
1049
+ .arc-markdown .markdown h3 { font-size: var(--text-lg); font-weight: 600; }
1050
+ .arc-markdown .markdown h4 { font-size: var(--body-size); font-weight: 600; }
1051
+ .arc-markdown .markdown h5 { font-size: var(--body-size); font-weight: 500; }
1052
+ .arc-markdown .markdown h6 { font-size: var(--code-size); font-weight: 500; text-transform: uppercase; letter-spacing: 1px; }
1053
+
1054
+ .arc-markdown .markdown h1:first-child,
1055
+ .arc-markdown .markdown h2:first-child,
1056
+ .arc-markdown .markdown h3:first-child,
1057
+ .arc-markdown .markdown h4:first-child,
1058
+ .arc-markdown .markdown h5:first-child,
1059
+ .arc-markdown .markdown h6:first-child { margin-top: 0; }
1060
+
1061
+ .arc-markdown .markdown p {
1062
+ margin: 0 0 var(--space-md) 0;
1063
+ }
1064
+
1065
+ .arc-markdown .markdown p:last-child { margin-bottom: 0; }
1066
+
1067
+ .arc-markdown .markdown strong { color: var(--text-primary); font-weight: 600; }
1068
+
1069
+ .arc-markdown .markdown em { font-style: italic; }
1070
+
1071
+ .arc-markdown .markdown a {
1072
+ color: var(--accent-primary);
1073
+ text-decoration: none;
1074
+ transition: color var(--transition-fast);
1075
+ }
1076
+
1077
+ .arc-markdown .markdown a:hover {
1078
+ text-decoration: underline;
1079
+ }
1080
+
1081
+ .arc-markdown .markdown code {
1082
+ font-family: var(--font-mono);
1083
+ font-size: var(--code-size);
1084
+ color: var(--accent-secondary);
1085
+ background: var(--bg-surface);
1086
+ padding: 2px calc(var(--space-xs) + 2px); /* cosmetic 2px vertical for inline code */
1087
+ border-radius: var(--radius-sm);
1088
+ }
1089
+
1090
+ .arc-markdown .markdown pre {
1091
+ background: var(--bg-surface);
1092
+ border: 1px solid var(--border-subtle);
1093
+ border-radius: var(--radius-md);
1094
+ padding: var(--space-md);
1095
+ overflow-x: auto;
1096
+ margin: 0 0 var(--space-md) 0;
1097
+ }
1098
+
1099
+ .arc-markdown .markdown pre code {
1100
+ background: none;
1101
+ padding: 0;
1102
+ border-radius: 0;
1103
+ font-size: var(--code-size);
1104
+ line-height: var(--code-lh);
1105
+ color: var(--text-primary);
1106
+ }
1107
+
1108
+ .arc-markdown .markdown blockquote {
1109
+ margin: 0 0 var(--space-md) 0;
1110
+ padding: var(--space-sm) var(--space-md);
1111
+ background: var(--bg-card);
1112
+ border: 1px solid var(--border-subtle);
1113
+ border-radius: var(--radius-md);
1114
+ }
1115
+
1116
+ .arc-markdown .markdown blockquote p:last-child { margin-bottom: 0; }
1117
+
1118
+ .arc-markdown .markdown ul,
1119
+ .arc-markdown .markdown ol {
1120
+ margin: 0 0 var(--space-md) 0;
1121
+ padding-left: var(--space-lg);
1122
+ color: var(--text-secondary);
1123
+ }
1124
+
1125
+ .arc-markdown .markdown li {
1126
+ margin-bottom: var(--space-xs);
1127
+ }
1128
+
1129
+ .arc-markdown .markdown li:last-child { margin-bottom: 0; }
1130
+
1131
+ .arc-markdown .markdown hr {
1132
+ border: none;
1133
+ height: 1px;
1134
+ background: var(--border-subtle);
1135
+ margin: var(--space-xl) 0;
1136
+ }
1137
+
1138
+ .arc-markdown .markdown img {
1139
+ max-width: 100%;
1140
+ height: auto;
1141
+ border-radius: var(--radius-md);
1142
+ margin: var(--space-sm) 0;
1143
+ }
1144
+
1145
+ @media (prefers-reduced-motion: reduce) {
1146
+ .arc-markdown *,
1147
+ .arc-markdown *::before,
1148
+ .arc-markdown *::after {
1149
+ animation-duration: 0.01ms !important;
1150
+ animation-iteration-count: 1 !important;
1151
+ transition-duration: 0.01ms !important;
1152
+ }
1153
+ }
1154
+
1155
+ /* arc-meter */
1156
+ .arc-meter { display: block; }
1157
+
1158
+ .arc-meter .meter {
1159
+ display: flex;
1160
+ flex-direction: column;
1161
+ gap: var(--space-xs);
1162
+ }
1163
+
1164
+ .arc-meter .meter__header {
1165
+ display: flex;
1166
+ align-items: center;
1167
+ justify-content: space-between;
1168
+ }
1169
+
1170
+ .arc-meter .meter__label {
1171
+ font-family: var(--font-body);
1172
+ font-size: var(--body-size);
1173
+ color: var(--text-secondary);
1174
+ user-select: none;
1175
+ }
1176
+
1177
+ .arc-meter .meter__value {
1178
+ font-family: var(--font-mono);
1179
+ font-size: var(--code-size);
1180
+ color: var(--text-muted);
1181
+ }
1182
+
1183
+ .arc-meter .meter__track {
1184
+ position: relative;
1185
+ width: 100%;
1186
+ height: 8px;
1187
+ background: var(--bg-elevated);
1188
+ border-radius: var(--radius-full);
1189
+ overflow: hidden;
1190
+ }
1191
+
1192
+ .arc-meter .meter__fill {
1193
+ height: 100%;
1194
+ border-radius: var(--radius-full);
1195
+ transition: width var(--transition-base), background var(--transition-base);
1196
+ min-width: 0;
1197
+ }
1198
+
1199
+ .arc-meter .meter__fill--success { background: var(--color-success); }
1200
+ .arc-meter .meter__fill--warning { background: var(--color-warning); }
1201
+ .arc-meter .meter__fill--error { background: var(--color-error); }
1202
+
1203
+ @media (prefers-reduced-motion: reduce) {
1204
+ .arc-meter *,
1205
+ .arc-meter *::before,
1206
+ .arc-meter *::after {
1207
+ animation-duration: 0.01ms !important;
1208
+ animation-iteration-count: 1 !important;
1209
+ transition-duration: 0.01ms !important;
1210
+ }
1211
+ }
1212
+
1213
+ /* arc-scroll-area */
1214
+ .arc-scroll-area {
1215
+ display: block;
1216
+ position: relative;
1217
+ }
1218
+
1219
+ .arc-scroll-area .scroll-area {
1220
+ overflow: hidden;
1221
+ scroll-behavior: smooth;
1222
+ border-radius: inherit;
1223
+ }
1224
+
1225
+ /* Orientation variants */
1226
+ .arc-scroll-area[data-orientation="vertical"] .scroll-area,
1227
+ .arc-scroll-area:not([data-orientation]) .scroll-area {
1228
+ overflow-y: auto;
1229
+ overflow-x: hidden;
1230
+ }
1231
+
1232
+ .arc-scroll-area[data-orientation="horizontal"] .scroll-area {
1233
+ overflow-x: auto;
1234
+ overflow-y: hidden;
1235
+ }
1236
+
1237
+ .arc-scroll-area[data-orientation="both"] .scroll-area {
1238
+ overflow: auto;
1239
+ }
1240
+
1241
+ /* Webkit scrollbar styling */
1242
+ .arc-scroll-area .scroll-area::-webkit-scrollbar {
1243
+ width: 6px;
1244
+ height: 6px;
1245
+ }
1246
+
1247
+ .arc-scroll-area .scroll-area::-webkit-scrollbar-track {
1248
+ background: var(--bg-elevated);
1249
+ border-radius: var(--radius-full);
1250
+ }
1251
+
1252
+ .arc-scroll-area .scroll-area::-webkit-scrollbar-thumb {
1253
+ background: var(--border-bright);
1254
+ border-radius: var(--radius-full);
1255
+ transition: background var(--transition-fast);
1256
+ }
1257
+
1258
+ .arc-scroll-area .scroll-area::-webkit-scrollbar-thumb:hover {
1259
+ background: var(--text-ghost);
1260
+ }
1261
+
1262
+ .arc-scroll-area .scroll-area::-webkit-scrollbar-corner {
1263
+ background: var(--bg-elevated);
1264
+ }
1265
+
1266
+ /* Firefox scrollbar styling */
1267
+ .arc-scroll-area .scroll-area {
1268
+ scrollbar-width: thin;
1269
+ scrollbar-color: var(--border-bright) var(--bg-elevated);
1270
+ }
1271
+
1272
+ @media (prefers-reduced-motion: reduce) {
1273
+ .arc-scroll-area *,
1274
+ .arc-scroll-area *::before,
1275
+ .arc-scroll-area *::after {
1276
+ animation-duration: 0.01ms !important;
1277
+ animation-iteration-count: 1 !important;
1278
+ transition-duration: 0.01ms !important;
1279
+ }
1280
+ }
1281
+
1282
+ /* arc-skeleton */
1283
+ .arc-skeleton { display: block; }
1284
+
1285
+ @keyframes shimmer {
1286
+ 0% { background-position: -200% 0; }
1287
+ 100% { background-position: 200% 0; }
1288
+ }
1289
+
1290
+ .arc-skeleton .skeleton {
1291
+ background: linear-gradient(
1292
+ 90deg,
1293
+ var(--bg-elevated) 25%,
1294
+ var(--border-subtle) 37%,
1295
+ var(--bg-elevated) 63%
1296
+ );
1297
+ background-size: 200% 100%;
1298
+ animation: shimmer 1.8s ease-in-out infinite;
1299
+ }
1300
+
1301
+ .arc-skeleton[data-variant="text"] .skeleton {
1302
+ width: 100%;
1303
+ height: 1em;
1304
+ border-radius: var(--radius-sm);
1305
+ }
1306
+
1307
+ .arc-skeleton[data-variant="circle"] .skeleton {
1308
+ border-radius: var(--radius-full);
1309
+ }
1310
+
1311
+ .arc-skeleton[data-variant="rect"] .skeleton {
1312
+ border-radius: var(--radius-md);
1313
+ }
1314
+
1315
+ @media (prefers-reduced-motion: reduce) {
1316
+ .arc-skeleton *,
1317
+ .arc-skeleton *::before,
1318
+ .arc-skeleton *::after {
1319
+ animation-duration: 0.01ms !important;
1320
+ animation-iteration-count: 1 !important;
1321
+ transition-duration: 0.01ms !important;
1322
+ }
1323
+ }
1324
+
1325
+ /* arc-spinner */
1326
+ .arc-spinner { display: inline-flex; }
1327
+
1328
+ @keyframes spin {
1329
+ to { transform: rotate(360deg); }
1330
+ }
1331
+
1332
+ .arc-spinner .spinner {
1333
+ border-radius: var(--radius-full);
1334
+ border-style: solid;
1335
+ border-color: var(--accent-primary);
1336
+ border-top-color: transparent;
1337
+ animation: spin 0.75s linear infinite;
1338
+ box-sizing: border-box;
1339
+ }
1340
+
1341
+ .arc-spinner[data-size="sm"] .spinner { width: 16px; height: 16px; border-width: 2px; }
1342
+ .arc-spinner[data-size="md"] .spinner { width: 24px; height: 24px; border-width: 2.5px; }
1343
+ .arc-spinner[data-size="lg"] .spinner { width: 40px; height: 40px; border-width: 3px; }
1344
+
1345
+ .arc-spinner[data-variant="primary"] .spinner {
1346
+ border-color: var(--accent-primary);
1347
+ border-top-color: transparent;
1348
+ }
1349
+
1350
+ .arc-spinner[data-variant="secondary"] .spinner {
1351
+ border-color: var(--accent-secondary);
1352
+ border-top-color: transparent;
1353
+ }
1354
+
1355
+ .arc-spinner[data-variant="white"] .spinner {
1356
+ border-color: var(--text-primary);
1357
+ border-top-color: transparent;
1358
+ }
1359
+
1360
+ @media (prefers-reduced-motion: reduce) {
1361
+ .arc-spinner *,
1362
+ .arc-spinner *::before,
1363
+ .arc-spinner *::after {
1364
+ animation-duration: 0.01ms !important;
1365
+ animation-iteration-count: 1 !important;
1366
+ transition-duration: 0.01ms !important;
1367
+ }
1368
+ }
1369
+
1370
+ /* arc-stack */
1371
+ .arc-stack {
1372
+ display: flex;
1373
+ flex-direction: column;
1374
+ gap: var(--space-md);
1375
+ align-items: stretch;
1376
+ justify-content: flex-start;
1377
+ }
1378
+
1379
+ /* Direction */
1380
+ .arc-stack[data-direction="horizontal"] { flex-direction: row; }
1381
+ .arc-stack[data-direction="vertical"] { flex-direction: column; }
1382
+
1383
+ /* Gap */
1384
+ .arc-stack[data-gap="xs"] { gap: var(--space-xs); }
1385
+ .arc-stack[data-gap="sm"] { gap: var(--space-sm); }
1386
+ .arc-stack[data-gap="md"] { gap: var(--space-md); }
1387
+ .arc-stack[data-gap="lg"] { gap: var(--space-lg); }
1388
+ .arc-stack[data-gap="xl"] { gap: var(--space-xl); }
1389
+ .arc-stack[data-gap="2xl"] { gap: var(--space-2xl); }
1390
+
1391
+ /* Align */
1392
+ .arc-stack[data-align="start"] { align-items: flex-start; }
1393
+ .arc-stack[data-align="center"] { align-items: center; }
1394
+ .arc-stack[data-align="end"] { align-items: flex-end; }
1395
+ .arc-stack[data-align="stretch"] { align-items: stretch; }
1396
+
1397
+ /* Justify */
1398
+ .arc-stack[data-justify="start"] { justify-content: flex-start; }
1399
+ .arc-stack[data-justify="center"] { justify-content: center; }
1400
+ .arc-stack[data-justify="end"] { justify-content: flex-end; }
1401
+ .arc-stack[data-justify="between"] { justify-content: space-between; }
1402
+ .arc-stack[data-justify="around"] { justify-content: space-around; }
1403
+
1404
+ /* Wrap */
1405
+ .arc-stack[wrap] { flex-wrap: wrap; }
1406
+
1407
+ /* arc-stat */
1408
+ .arc-stat { display: block; }
1409
+
1410
+ .arc-stat .stat {
1411
+ display: flex;
1412
+ flex-direction: column;
1413
+ align-items: center;
1414
+ gap: var(--space-sm);
1415
+ text-align: center;
1416
+ padding: var(--space-lg) var(--space-md);
1417
+ }
1418
+
1419
+ .arc-stat .stat__value {
1420
+ font-size: clamp(32px, 4.5vw, 48px);
1421
+ font-weight: 200;
1422
+ letter-spacing: -1px;
1423
+ line-height: 1;
1424
+ background: var(--gradient-accent-text);
1425
+ -webkit-background-clip: text;
1426
+ -webkit-text-fill-color: transparent;
1427
+ background-clip: text;
1428
+ filter: drop-shadow(0 0 16px rgba(var(--accent-primary-rgb),0.3))
1429
+ drop-shadow(0 0 40px rgba(var(--accent-secondary-rgb),0.12));
1430
+ }
1431
+
1432
+ .arc-stat .stat__rule {
1433
+ width: 24px;
1434
+ height: 1px;
1435
+ background: linear-gradient(90deg, transparent, var(--accent-primary), transparent);
1436
+ opacity: 0.4;
1437
+ }
1438
+
1439
+ .arc-stat .stat__label {
1440
+ font-family: var(--font-accent);
1441
+ font-weight: 600;
1442
+ font-size: var(--label-inline-size);
1443
+ letter-spacing: var(--label-inline-spacing);
1444
+ text-transform: uppercase;
1445
+ color: var(--text-muted);
1446
+ }
1447
+
1448
+ /* arc-stepper */
1449
+ .arc-stepper { display: block; }
1450
+
1451
+ .arc-stepper .stepper {
1452
+ display: flex;
1453
+ align-items: flex-start;
1454
+ gap: var(--space-xs);
1455
+ }
1456
+
1457
+ .arc-stepper .step {
1458
+ display: flex;
1459
+ flex-direction: column;
1460
+ align-items: center;
1461
+ flex: 1;
1462
+ position: relative;
1463
+ padding: 0 var(--space-sm);
1464
+ }
1465
+
1466
+ .arc-stepper .step__header {
1467
+ display: flex;
1468
+ align-items: center;
1469
+ width: 100%;
1470
+ position: relative;
1471
+ }
1472
+
1473
+ .arc-stepper .step__circle {
1474
+ width: 36px;
1475
+ height: 36px;
1476
+ border-radius: var(--radius-full);
1477
+ display: flex;
1478
+ align-items: center;
1479
+ justify-content: center;
1480
+ font-family: var(--font-accent);
1481
+ font-size: var(--text-sm);
1482
+ font-weight: 700;
1483
+ letter-spacing: 1px;
1484
+ flex-shrink: 0;
1485
+ position: relative;
1486
+ z-index: 1;
1487
+ transition: background var(--transition-base),
1488
+ color var(--transition-base),
1489
+ border-color var(--transition-base),
1490
+ box-shadow var(--transition-base);
1491
+ margin: 0 auto;
1492
+ box-sizing: border-box;
1493
+ }
1494
+
1495
+ /* Upcoming (default) */
1496
+ .arc-stepper .step__circle {
1497
+ background: var(--bg-elevated);
1498
+ color: var(--text-ghost);
1499
+ border: 1px solid var(--border-default);
1500
+ }
1501
+
1502
+ /* Active */
1503
+ .arc-stepper .step--active .step__circle {
1504
+ background: transparent;
1505
+ color: var(--accent-primary);
1506
+ border: 2px solid var(--accent-primary);
1507
+ box-shadow: 0 0 12px rgba(var(--accent-primary-rgb), 0.25);
1508
+ }
1509
+
1510
+ /* Completed */
1511
+ .arc-stepper .step--completed .step__circle {
1512
+ background: var(--accent-primary);
1513
+ color: var(--text-primary);
1514
+ border: 2px solid var(--accent-primary);
1515
+ }
1516
+
1517
+ .arc-stepper .step__line {
1518
+ position: absolute;
1519
+ top: 50%;
1520
+ height: 1px;
1521
+ background: var(--border-default);
1522
+ transform: translateY(-50%);
1523
+ }
1524
+
1525
+ .arc-stepper .step__line--left {
1526
+ left: calc(-1 * var(--space-xs) - var(--space-sm));
1527
+ right: calc(50% + 20px);
1528
+ }
1529
+
1530
+ .arc-stepper .step__line--right {
1531
+ left: calc(50% + 20px);
1532
+ right: calc(-1 * var(--space-xs) - var(--space-sm));
1533
+ }
1534
+
1535
+ .arc-stepper .step--completed .step__line--left,
1536
+ .arc-stepper .step--active .step__line--left {
1537
+ background: var(--accent-primary);
1538
+ }
1539
+
1540
+ .arc-stepper .step--completed .step__line--right {
1541
+ background: var(--accent-primary);
1542
+ }
1543
+
1544
+ .arc-stepper .step__label {
1545
+ margin-top: var(--space-md);
1546
+ font-family: var(--font-accent);
1547
+ font-size: var(--text-xs);
1548
+ font-weight: 600;
1549
+ letter-spacing: 2px;
1550
+ text-transform: uppercase;
1551
+ color: var(--text-muted);
1552
+ text-align: center;
1553
+ transition: color var(--transition-base);
1554
+ }
1555
+
1556
+ .arc-stepper .step--active .step__label {
1557
+ color: var(--text-primary);
1558
+ }
1559
+
1560
+ .arc-stepper .step--completed .step__label {
1561
+ color: var(--text-secondary);
1562
+ }
1563
+
1564
+ .arc-stepper .step__check {
1565
+ font-size: var(--text-sm);
1566
+ line-height: 1;
1567
+ }
1568
+
1569
+ .arc-stepper .stepper__slot-host { display: none; }
1570
+
1571
+ @media (prefers-reduced-motion: reduce) {
1572
+ .arc-stepper *,
1573
+ .arc-stepper *::before,
1574
+ .arc-stepper *::after {
1575
+ animation-duration: 0.01ms !important;
1576
+ animation-iteration-count: 1 !important;
1577
+ transition-duration: 0.01ms !important;
1578
+ }
1579
+ }
1580
+
1581
+ /* arc-table */
1582
+ .arc-table {
1583
+ display: block;
1584
+ font-family: var(--font-body);
1585
+ font-size: var(--body-size);
1586
+ }
1587
+
1588
+ .arc-table .table-wrap {
1589
+ overflow-x: auto;
1590
+ border: 1px solid var(--border-subtle);
1591
+ border-radius: var(--radius-md);
1592
+ }
1593
+
1594
+ table {
1595
+ width: 100%;
1596
+ border-collapse: collapse;
1597
+ font-size: var(--text-sm);
1598
+ color: var(--text-primary);
1599
+ }
1600
+
1601
+ thead {
1602
+ background: var(--bg-elevated);
1603
+ }
1604
+
1605
+ th {
1606
+ text-align: left;
1607
+ padding: var(--space-sm) var(--space-md);
1608
+ font-family: var(--font-accent);
1609
+ font-weight: 600;
1610
+ font-size: var(--text-xs);
1611
+ letter-spacing: 2px;
1612
+ text-transform: uppercase;
1613
+ color: var(--text-ghost);
1614
+ border-bottom: 1px solid var(--border-default);
1615
+ white-space: nowrap;
1616
+ }
1617
+
1618
+ .arc-table[compact] th {
1619
+ padding: var(--space-xs) var(--space-sm);
1620
+ }
1621
+
1622
+ td {
1623
+ padding: var(--space-sm) var(--space-md);
1624
+ border-bottom: 1px solid var(--border-subtle);
1625
+ color: var(--text-secondary);
1626
+ line-height: 1.5;
1627
+ font-size: var(--text-sm);
1628
+ }
1629
+
1630
+ .arc-table[compact] td {
1631
+ padding: var(--space-xs) var(--space-sm);
1632
+ font-size: var(--text-sm);
1633
+ }
1634
+
1635
+ tr:last-child td {
1636
+ border-bottom: none;
1637
+ }
1638
+
1639
+ .arc-table[striped] tbody tr:nth-child(odd) {
1640
+ background: var(--bg-surface);
1641
+ }
1642
+
1643
+ .arc-table[striped] tbody tr:nth-child(even) {
1644
+ background: var(--bg-card);
1645
+ }
1646
+
1647
+ tbody tr {
1648
+ transition: background var(--transition-fast);
1649
+ }
1650
+
1651
+ tbody tr:hover {
1652
+ background: var(--bg-hover);
1653
+ }
1654
+
1655
+ @media (prefers-reduced-motion: reduce) {
1656
+ .arc-table *,
1657
+ .arc-table *::before,
1658
+ .arc-table *::after {
1659
+ animation-duration: 0.01ms !important;
1660
+ animation-iteration-count: 1 !important;
1661
+ transition-duration: 0.01ms !important;
1662
+ }
1663
+ }
1664
+
1665
+ /* arc-text */
1666
+ .arc-text { display: block; }
1667
+ .arc-text[data-variant="accent"],
1668
+ .arc-text[data-variant="code"] { display: inline; }
1669
+
1670
+ .arc-text .text--display {
1671
+ font-size: var(--display-xl-size);
1672
+ font-weight: var(--display-xl-weight);
1673
+ letter-spacing: var(--display-xl-spacing);
1674
+ line-height: 1.2;
1675
+ padding-bottom: 0.1em;
1676
+ background: var(--gradient-display-text);
1677
+ -webkit-background-clip: text;
1678
+ -webkit-text-fill-color: transparent;
1679
+ background-clip: text;
1680
+ }
1681
+
1682
+ .arc-text .text--heading {
1683
+ font-size: var(--heading-size);
1684
+ font-weight: var(--heading-weight);
1685
+ color: var(--text-primary);
1686
+ line-height: 1.4;
1687
+ text-wrap: balance;
1688
+ margin-bottom: var(--space-md);
1689
+ }
1690
+
1691
+ .arc-text .text--body {
1692
+ color: var(--text-secondary);
1693
+ font-family: var(--font-body);
1694
+ font-size: var(--body-size);
1695
+ font-weight: var(--body-weight);
1696
+ line-height: var(--body-lh);
1697
+ text-wrap: balance;
1698
+ }
1699
+
1700
+ .arc-text .text--muted { color: var(--text-muted); }
1701
+ .arc-text .text--ghost { color: var(--text-ghost); }
1702
+
1703
+ .arc-text .text--accent {
1704
+ font-family: var(--font-accent);
1705
+ font-weight: var(--ui-accent-weight);
1706
+ font-size: var(--ui-accent-size);
1707
+ letter-spacing: var(--ui-accent-spacing);
1708
+ background: var(--gradient-accent-text);
1709
+ -webkit-background-clip: text;
1710
+ -webkit-text-fill-color: transparent;
1711
+ background-clip: text;
1712
+ filter: drop-shadow(0 0 12px var(--accent-primary-glow));
1713
+ }
1714
+
1715
+ .arc-text .text--label {
1716
+ font-family: var(--font-accent);
1717
+ font-weight: var(--section-title-weight);
1718
+ font-size: var(--section-title-size);
1719
+ letter-spacing: var(--section-title-spacing);
1720
+ text-transform: uppercase;
1721
+ color: var(--text-muted);
1722
+ }
1723
+
1724
+ .arc-text .text--wordmark {
1725
+ font-weight: var(--wordmark-weight);
1726
+ font-size: var(--wordmark-size);
1727
+ letter-spacing: var(--wordmark-spacing);
1728
+ text-transform: uppercase;
1729
+ color: var(--text-primary);
1730
+ text-shadow: 0 0 30px var(--accent-primary-glow);
1731
+ }
1732
+
1733
+ .arc-text .text--code {
1734
+ font-family: var(--font-mono);
1735
+ font-size: var(--code-size);
1736
+ line-height: var(--code-lh);
1737
+ color: var(--accent-secondary);
1738
+ text-shadow: 0 0 14px rgba(var(--accent-secondary-rgb),0.3);
1739
+ }
1740
+
1741
+ /* arc-timeline */
1742
+ .arc-timeline { display: block; }
1743
+
1744
+ .arc-timeline .timeline {
1745
+ display: flex;
1746
+ flex-direction: column;
1747
+ gap: 0;
1748
+ padding: 0;
1749
+ margin: 0;
1750
+ list-style: none;
1751
+ }
1752
+
1753
+ .arc-timeline .timeline__item {
1754
+ display: flex;
1755
+ gap: var(--space-lg);
1756
+ position: relative;
1757
+ padding-bottom: var(--space-xl);
1758
+ }
1759
+
1760
+ .arc-timeline .timeline__item:last-child { padding-bottom: 0; }
1761
+
1762
+ .arc-timeline .timeline__marker {
1763
+ display: flex;
1764
+ flex-direction: column;
1765
+ align-items: center;
1766
+ flex-shrink: 0;
1767
+ width: 24px;
1768
+ position: relative;
1769
+ }
1770
+
1771
+ .arc-timeline .timeline__dot {
1772
+ width: 12px;
1773
+ height: 12px;
1774
+ border-radius: var(--radius-full);
1775
+ background: var(--accent-primary);
1776
+ border: 2px solid var(--bg-deep);
1777
+ box-shadow:
1778
+ 0 0 0 1px rgba(var(--accent-primary-rgb), 0.3),
1779
+ 0 0 8px rgba(var(--accent-primary-rgb), 0.25);
1780
+ flex-shrink: 0;
1781
+ z-index: 1;
1782
+ position: relative;
1783
+ transition: box-shadow var(--transition-fast), transform var(--transition-fast);
1784
+ }
1785
+
1786
+ .arc-timeline .timeline__item:hover .timeline__dot {
1787
+ box-shadow:
1788
+ 0 0 0 2px rgba(var(--accent-primary-rgb), 0.4),
1789
+ 0 0 14px rgba(var(--accent-primary-rgb), 0.4);
1790
+ transform: scale(1.2);
1791
+ }
1792
+
1793
+ .arc-timeline .timeline__line {
1794
+ position: absolute;
1795
+ top: 16px;
1796
+ bottom: calc(-1 * var(--space-xl));
1797
+ left: 50%;
1798
+ width: 1px;
1799
+ transform: translateX(-50%);
1800
+ background: linear-gradient(180deg, rgba(var(--accent-primary-rgb), 0.4), var(--border-default) 40%);
1801
+ }
1802
+
1803
+ .arc-timeline .timeline__item:last-child .timeline__line { display: none; }
1804
+
1805
+ .arc-timeline .timeline__content {
1806
+ flex: 1;
1807
+ min-width: 0;
1808
+ padding-top: 0;
1809
+ }
1810
+
1811
+ .arc-timeline .timeline__title {
1812
+ margin: 0;
1813
+ font-family: var(--font-accent);
1814
+ font-size: var(--text-xs);
1815
+ font-weight: 600;
1816
+ letter-spacing: 1.5px;
1817
+ text-transform: uppercase;
1818
+ color: var(--text-primary);
1819
+ line-height: 1.4;
1820
+ transition: color var(--transition-fast);
1821
+ }
1822
+
1823
+ .arc-timeline .timeline__item:hover .timeline__title {
1824
+ color: var(--accent-primary);
1825
+ }
1826
+
1827
+ .arc-timeline .timeline__desc {
1828
+ margin: var(--space-sm) 0 0;
1829
+ font-family: var(--font-body);
1830
+ font-size: var(--text-sm);
1831
+ line-height: 1.6;
1832
+ color: var(--text-muted);
1833
+ }
1834
+
1835
+ .arc-timeline .timeline__date {
1836
+ margin: var(--space-sm) 0 0;
1837
+ font-family: var(--font-accent);
1838
+ font-size: var(--text-xs);
1839
+ font-weight: 600;
1840
+ letter-spacing: 2px;
1841
+ text-transform: uppercase;
1842
+ color: var(--text-ghost);
1843
+ }
1844
+
1845
+ .arc-timeline .timeline__slot-host { display: none; }
1846
+
1847
+ @media (prefers-reduced-motion: reduce) {
1848
+ .arc-timeline *,
1849
+ .arc-timeline *::before,
1850
+ .arc-timeline *::after {
1851
+ animation-duration: 0.01ms !important;
1852
+ animation-iteration-count: 1 !important;
1853
+ transition-duration: 0.01ms !important;
1854
+ }
1855
+ }
1856
+
1857
+ /* arc-value-card */
1858
+ .arc-value-card { display: flex; flex-direction: column; height: 100%; }
1859
+
1860
+ .arc-value-card .card {
1861
+ position: relative;
1862
+ display: flex;
1863
+ align-items: flex-start;
1864
+ gap: var(--space-lg);
1865
+ padding: var(--space-lg);
1866
+ flex: 1;
1867
+ border: 1px solid var(--border-subtle);
1868
+ border-radius: var(--radius-lg);
1869
+ transition: border-color var(--transition-base), box-shadow var(--transition-base);
1870
+ }
1871
+
1872
+ .arc-value-card .card:hover {
1873
+ border-color: var(--border-bright);
1874
+ box-shadow: 0 0 20px rgba(var(--accent-secondary-rgb),0.06);
1875
+ }
1876
+
1877
+ .arc-value-card .card__icon {
1878
+ flex-shrink: 0;
1879
+ color: var(--accent-secondary);
1880
+ font-size: 24px; /* icon size, not text */
1881
+ line-height: 1;
1882
+ padding-top: 2px;
1883
+ }
1884
+
1885
+ .arc-value-card .card__text {
1886
+ display: flex;
1887
+ flex-direction: column;
1888
+ gap: var(--space-sm);
1889
+ }
1890
+
1891
+ .arc-value-card .card__title {
1892
+ font-size: 17px; /* heading size, keep hardcoded */
1893
+ font-weight: 600;
1894
+ color: var(--text-primary);
1895
+ margin: 0;
1896
+ }
1897
+
1898
+ .arc-value-card .card__desc {
1899
+ color: var(--text-secondary);
1900
+ font-family: var(--font-body);
1901
+ font-size: var(--text-sm);
1902
+ line-height: 1.7;
1903
+ margin: 0;
1904
+ }
1905
+
1906
+ @media (prefers-reduced-motion: reduce) {
1907
+ .arc-value-card *,
1908
+ .arc-value-card *::before,
1909
+ .arc-value-card *::after {
1910
+ animation-duration: 0.01ms !important;
1911
+ animation-iteration-count: 1 !important;
1912
+ transition-duration: 0.01ms !important;
1913
+ }
1914
+ }
1915
+
1916
+ /* arc-button */
1917
+ .arc-button { display: inline-flex; }
1918
+ .arc-button[disabled] { pointer-events: none; }
1919
+
1920
+ .arc-button .btn {
1921
+ display: inline-flex;
1922
+ align-items: center;
1923
+ justify-content: center;
1924
+ gap: var(--space-sm);
1925
+ font-family: var(--font-accent);
1926
+ font-weight: 600;
1927
+ text-transform: uppercase;
1928
+ letter-spacing: 2px;
1929
+ border: 1px solid transparent;
1930
+ border-radius: var(--radius-md);
1931
+ cursor: pointer;
1932
+ transition:
1933
+ background var(--transition-base),
1934
+ border-color var(--transition-base),
1935
+ box-shadow var(--transition-base),
1936
+ color var(--transition-base),
1937
+ transform var(--transition-fast);
1938
+ text-decoration: none;
1939
+ white-space: nowrap;
1940
+ box-sizing: border-box;
1941
+ min-height: var(--touch-min);
1942
+ }
1943
+
1944
+ /* Sizes */
1945
+ .arc-button[data-size="sm"] .btn { font-size: var(--text-xs); padding: var(--space-xs) var(--space-md); }
1946
+ .arc-button:not([data-size]) .btn,
1947
+ .arc-button[data-size="md"] .btn { font-size: var(--text-xs); padding: var(--space-sm) var(--space-lg); }
1948
+ .arc-button[data-size="lg"] .btn { font-size: var(--text-xs); padding: var(--space-md) var(--space-xl); letter-spacing: 3px; }
1949
+
1950
+ /* Primary */
1951
+ .arc-button:not([data-variant]) .btn,
1952
+ .arc-button[data-variant="primary"] .btn {
1953
+ background: var(--accent-primary);
1954
+ color: var(--bg-deep);
1955
+ border-color: var(--accent-primary);
1956
+ }
1957
+ .arc-button:not([data-variant]) .btn:hover,
1958
+ .arc-button[data-variant="primary"] .btn:hover { box-shadow: var(--glow-primary); }
1959
+ .arc-button:not([data-variant]) .btn:active,
1960
+ .arc-button[data-variant="primary"] .btn:active { transform: scale(0.97); box-shadow: 0 0 8px rgba(var(--accent-primary-rgb),0.5); }
1961
+
1962
+ /* Secondary */
1963
+ .arc-button[data-variant="secondary"] .btn {
1964
+ background: transparent;
1965
+ color: var(--text-primary);
1966
+ border-color: var(--border-default);
1967
+ }
1968
+ .arc-button[data-variant="secondary"] .btn:hover {
1969
+ border-color: var(--accent-primary);
1970
+ color: var(--accent-primary);
1971
+ box-shadow: 0 0 20px var(--accent-primary-ring);
1972
+ }
1973
+ .arc-button[data-variant="secondary"] .btn:active {
1974
+ transform: scale(0.97);
1975
+ background: rgba(var(--accent-primary-rgb),0.05);
1976
+ }
1977
+
1978
+ /* Ghost */
1979
+ .arc-button[data-variant="ghost"] .btn {
1980
+ background: transparent;
1981
+ color: var(--text-muted);
1982
+ border-color: transparent;
1983
+ }
1984
+ .arc-button[data-variant="ghost"] .btn:hover {
1985
+ color: var(--text-primary);
1986
+ background: var(--bg-hover);
1987
+ }
1988
+ .arc-button[data-variant="ghost"] .btn:active {
1989
+ transform: scale(0.97);
1990
+ background: var(--bg-elevated);
1991
+ }
1992
+
1993
+ /* Focus */
1994
+ .arc-button .btn:focus-visible { outline: none; box-shadow: var(--focus-glow); }
1995
+
1996
+ /* Disabled */
1997
+ .arc-button[disabled] .btn { opacity: 0.4; cursor: not-allowed; pointer-events: none; }
1998
+
1999
+ @media (prefers-reduced-motion: reduce) {
2000
+ .arc-button *,
2001
+ .arc-button *::before,
2002
+ .arc-button *::after {
2003
+ animation-duration: 0.01ms !important;
2004
+ animation-iteration-count: 1 !important;
2005
+ transition-duration: 0.01ms !important;
2006
+ }
2007
+ }
2008
+
2009
+ /* arc-icon-button */
2010
+ .arc-icon-button { display: inline-flex; }
2011
+ .arc-icon-button[disabled] { pointer-events: none; }
2012
+
2013
+ .arc-icon-button .btn {
2014
+ display: inline-flex;
2015
+ align-items: center;
2016
+ justify-content: center;
2017
+ gap: var(--space-xs);
2018
+ border: 1px solid transparent;
2019
+ border-radius: var(--radius-md);
2020
+ cursor: pointer;
2021
+ transition:
2022
+ background var(--transition-base),
2023
+ border-color var(--transition-base),
2024
+ box-shadow var(--transition-base),
2025
+ color var(--transition-base),
2026
+ transform var(--transition-fast);
2027
+ text-decoration: none;
2028
+ box-sizing: border-box;
2029
+ color: inherit;
2030
+ }
2031
+
2032
+ /* Icon-only (square) */
2033
+ .arc-icon-button .btn:not(.btn--has-text) { aspect-ratio: 1; }
2034
+
2035
+ /* With text */
2036
+ .arc-icon-button .btn--has-text {
2037
+ font-family: var(--font-accent);
2038
+ font-weight: 600;
2039
+ text-transform: uppercase;
2040
+ letter-spacing: 1.5px;
2041
+ white-space: nowrap;
2042
+ }
2043
+
2044
+ .arc-icon-button .btn__text {
2045
+ line-height: 1;
2046
+ }
2047
+
2048
+ /* Sizes — icon-only */
2049
+ .arc-icon-button[data-size="xs"] .btn:not(.btn--has-text) { width: 28px; height: 28px; border-radius: var(--radius-sm); }
2050
+ .arc-icon-button[data-size="sm"] .btn:not(.btn--has-text) { width: 32px; height: 32px; }
2051
+ .arc-icon-button:not([data-size]) .btn:not(.btn--has-text),
2052
+ .arc-icon-button[data-size="md"] .btn:not(.btn--has-text) { width: 36px; height: 36px; }
2053
+ .arc-icon-button[data-size="lg"] .btn:not(.btn--has-text) { width: 44px; height: 44px; }
2054
+
2055
+ /* Sizes — with text */
2056
+ .arc-icon-button[data-size="xs"] .btn--has-text { padding: var(--space-xs) var(--space-sm); font-size: var(--text-xs); }
2057
+ .arc-icon-button[data-size="sm"] .btn--has-text { padding: calc(var(--space-xs) + 2px) calc(var(--space-sm) + 2px); font-size: var(--text-xs); }
2058
+ .arc-icon-button:not([data-size]) .btn--has-text,
2059
+ .arc-icon-button[data-size="md"] .btn--has-text { padding: var(--space-xs) var(--space-sm); font-size: var(--text-xs); }
2060
+ .arc-icon-button[data-size="lg"] .btn--has-text { padding: var(--space-sm) var(--space-md); font-size: var(--text-xs); }
2061
+
2062
+ /* Ghost (default) */
2063
+ .arc-icon-button:not([data-variant]) .btn,
2064
+ .arc-icon-button[data-variant="ghost"] .btn {
2065
+ background: transparent;
2066
+ color: var(--text-muted);
2067
+ border-color: transparent;
2068
+ }
2069
+ .arc-icon-button:not([data-variant]) .btn:hover,
2070
+ .arc-icon-button[data-variant="ghost"] .btn:hover {
2071
+ color: var(--text-primary);
2072
+ background: var(--bg-hover);
2073
+ }
2074
+ .arc-icon-button:not([data-variant]) .btn:active,
2075
+ .arc-icon-button[data-variant="ghost"] .btn:active {
2076
+ transform: scale(0.93);
2077
+ background: var(--bg-elevated);
2078
+ }
2079
+
2080
+ /* Secondary */
2081
+ .arc-icon-button[data-variant="secondary"] .btn {
2082
+ background: transparent;
2083
+ color: var(--text-secondary);
2084
+ border-color: var(--border-default);
2085
+ }
2086
+ .arc-icon-button[data-variant="secondary"] .btn:hover {
2087
+ border-color: var(--accent-primary);
2088
+ color: var(--accent-primary);
2089
+ box-shadow: 0 0 16px var(--accent-primary-ring);
2090
+ }
2091
+ .arc-icon-button[data-variant="secondary"] .btn:active {
2092
+ transform: scale(0.93);
2093
+ background: rgba(var(--accent-primary-rgb), 0.05);
2094
+ }
2095
+
2096
+ /* Primary */
2097
+ .arc-icon-button[data-variant="primary"] .btn {
2098
+ background: var(--accent-primary);
2099
+ color: var(--bg-deep);
2100
+ border-color: var(--accent-primary);
2101
+ }
2102
+ .arc-icon-button[data-variant="primary"] .btn:hover {
2103
+ box-shadow: var(--glow-primary);
2104
+ }
2105
+ .arc-icon-button[data-variant="primary"] .btn:active {
2106
+ transform: scale(0.93);
2107
+ box-shadow: 0 0 8px rgba(var(--accent-primary-rgb), 0.5);
2108
+ }
2109
+
2110
+ /* Focus */
2111
+ .arc-icon-button .btn:focus-visible { outline: none; box-shadow: var(--focus-glow); }
2112
+
2113
+ /* Disabled */
2114
+ .arc-icon-button[disabled] .btn { opacity: 0.4; cursor: not-allowed; pointer-events: none; }
2115
+
2116
+ @media (prefers-reduced-motion: reduce) {
2117
+ .arc-icon-button *,
2118
+ .arc-icon-button *::before,
2119
+ .arc-icon-button *::after {
2120
+ animation-duration: 0.01ms !important;
2121
+ animation-iteration-count: 1 !important;
2122
+ transition-duration: 0.01ms !important;
2123
+ }
2124
+ }
2125
+
2126
+ /* arc-footer */
2127
+ .arc-footer {
2128
+ display: block;
2129
+ background: var(--bg-deep);
2130
+ color: var(--text-secondary);
2131
+ font-family: var(--font-body);
2132
+ font-size: var(--body-size);
2133
+ }
2134
+
2135
+ .arc-footer[border] .footer {
2136
+ border-top: 1px solid var(--border-subtle);
2137
+ }
2138
+
2139
+ .arc-footer .footer {
2140
+ padding: var(--space-2xl) var(--space-xl) var(--space-xl);
2141
+ }
2142
+
2143
+ .arc-footer[compact] .footer {
2144
+ padding: var(--space-lg) var(--space-md) var(--space-md);
2145
+ }
2146
+
2147
+ .arc-footer .footer__brand {
2148
+ margin-bottom: var(--space-xl);
2149
+ }
2150
+
2151
+ .arc-footer[compact] .footer__brand {
2152
+ margin-bottom: var(--space-md);
2153
+ }
2154
+
2155
+ .arc-footer .footer__columns {
2156
+ display: grid;
2157
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
2158
+ gap: var(--space-xl);
2159
+ margin-bottom: var(--space-xl);
2160
+ }
2161
+
2162
+ .arc-footer[compact] .footer__columns {
2163
+ gap: var(--space-md);
2164
+ margin-bottom: var(--space-md);
2165
+ }
2166
+
2167
+ .arc-footer .footer__social {
2168
+ display: flex;
2169
+ align-items: center;
2170
+ gap: var(--space-md);
2171
+ margin-bottom: var(--space-lg);
2172
+ }
2173
+
2174
+ .arc-footer[compact] .footer__social {
2175
+ margin-bottom: var(--space-sm);
2176
+ }
2177
+
2178
+ .arc-footer .footer__legal {
2179
+ padding-top: var(--space-md);
2180
+ border-top: 1px solid var(--border-subtle);
2181
+ color: var(--text-muted);
2182
+ font-size: var(--text-sm);
2183
+ }
2184
+
2185
+ /* arc-link */
2186
+ .arc-link { display: inline; }
2187
+
2188
+ .arc-link .link {
2189
+ font-family: var(--font-body);
2190
+ font-size: inherit;
2191
+ color: var(--accent-primary);
2192
+ text-decoration: none;
2193
+ cursor: pointer;
2194
+ transition:
2195
+ color var(--transition-fast),
2196
+ opacity var(--transition-fast);
2197
+ border: none;
2198
+ background: none;
2199
+ padding: 0;
2200
+ min-height: var(--touch-min);
2201
+ display: inline-flex;
2202
+ align-items: center;
2203
+ }
2204
+
2205
+ .arc-link .link:hover {
2206
+ text-decoration: underline;
2207
+ text-underline-offset: 3px;
2208
+ }
2209
+
2210
+ .arc-link[data-variant="muted"] .link {
2211
+ color: var(--text-muted);
2212
+ }
2213
+ .arc-link[data-variant="muted"] .link:hover {
2214
+ color: var(--text-primary);
2215
+ }
2216
+
2217
+ .arc-link[data-variant="nav"] .link {
2218
+ color: var(--text-secondary);
2219
+ font-size: var(--text-sm);
2220
+ display: inline-flex;
2221
+ align-items: center;
2222
+ gap: var(--space-xs);
2223
+ }
2224
+ .arc-link[data-variant="nav"] .link:hover {
2225
+ color: var(--text-primary);
2226
+ text-decoration: none;
2227
+ }
2228
+
2229
+ .arc-link[active] .link {
2230
+ color: var(--accent-primary);
2231
+ }
2232
+
2233
+ .arc-link .link:focus-visible {
2234
+ outline: none;
2235
+ box-shadow: var(--focus-ring);
2236
+ border-radius: var(--radius-xs);
2237
+ }
2238
+
2239
+ .arc-link .link__external-icon {
2240
+ display: inline-block;
2241
+ width: 12px;
2242
+ height: 12px;
2243
+ margin-left: 2px; /* cosmetic micro-spacing for external icon */
2244
+ vertical-align: middle;
2245
+ opacity: 0.6;
2246
+ }
2247
+
2248
+ @media (prefers-reduced-motion: reduce) {
2249
+ .arc-link *,
2250
+ .arc-link *::before,
2251
+ .arc-link *::after {
2252
+ animation-duration: 0.01ms !important;
2253
+ animation-iteration-count: 1 !important;
2254
+ transition-duration: 0.01ms !important;
2255
+ }
2256
+ }
2257
+
2258
+ /* arc-top-bar */
2259
+ .arc-top-bar {
2260
+ display: block;
2261
+ width: 100%;
2262
+ z-index: 100;
2263
+ }
2264
+
2265
+ .arc-top-bar[fixed] {
2266
+ position: fixed;
2267
+ top: 0;
2268
+ left: 0;
2269
+ right: 0;
2270
+ }
2271
+
2272
+ .arc-top-bar .topbar {
2273
+ position: relative;
2274
+ display: flex;
2275
+ align-items: center;
2276
+ height: var(--nav-height);
2277
+ padding: 0 var(--space-lg);
2278
+ background: color-mix(in srgb, var(--bg-deep) 85%, transparent);
2279
+ backdrop-filter: blur(12px) saturate(130%);
2280
+ -webkit-backdrop-filter: blur(12px) saturate(130%);
2281
+ border-bottom: 1px solid var(--border-subtle);
2282
+ gap: var(--space-md);
2283
+ }
2284
+
2285
+ .arc-top-bar .topbar__glow {
2286
+ position: absolute;
2287
+ bottom: -1px;
2288
+ left: 20%;
2289
+ right: 20%;
2290
+ height: 1px;
2291
+ background: linear-gradient(90deg, transparent, rgba(var(--accent-secondary-rgb), 0.2), rgba(var(--accent-primary-rgb), 0.15), transparent);
2292
+ opacity: 0;
2293
+ transition: opacity var(--transition-slow);
2294
+ pointer-events: none;
2295
+ }
2296
+
2297
+ .arc-top-bar[scrolled] .topbar__glow {
2298
+ opacity: 1;
2299
+ }
2300
+
2301
+ .arc-top-bar .topbar__brand {
2302
+ display: flex;
2303
+ align-items: center;
2304
+ gap: var(--space-sm);
2305
+ color: var(--text-primary);
2306
+ text-decoration: none;
2307
+ flex: 0 0 auto;
2308
+ overflow: visible;
2309
+ }
2310
+
2311
+ .arc-top-bar .topbar__heading {
2312
+ font-family: var(--font-body);
2313
+ font-size: var(--wordmark-size);
2314
+ font-weight: var(--wordmark-weight);
2315
+ letter-spacing: var(--wordmark-spacing);
2316
+ text-transform: uppercase;
2317
+ }
2318
+
2319
+ .arc-top-bar .topbar__center {
2320
+ flex: 1;
2321
+ display: flex;
2322
+ align-items: center;
2323
+ justify-content: center;
2324
+ }
2325
+
2326
+ .arc-top-bar .topbar__actions {
2327
+ display: flex;
2328
+ align-items: center;
2329
+ gap: var(--space-sm);
2330
+ flex-shrink: 0;
2331
+ }
2332
+
2333
+ .arc-top-bar .topbar__menu-btn {
2334
+ display: none;
2335
+ align-items: center;
2336
+ justify-content: center;
2337
+ width: 36px;
2338
+ height: 36px;
2339
+ min-width: 36px;
2340
+ aspect-ratio: 1;
2341
+ background: none;
2342
+ border: 1px solid var(--border-subtle);
2343
+ color: var(--text-primary);
2344
+ cursor: pointer;
2345
+ padding: 0;
2346
+ border-radius: var(--radius-sm);
2347
+ transition: background var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);
2348
+ }
2349
+
2350
+ .arc-top-bar .topbar__menu-btn:hover {
2351
+ background: var(--bg-hover);
2352
+ border-color: var(--border-default);
2353
+ }
2354
+
2355
+ .arc-top-bar .topbar__menu-btn:focus-visible {
2356
+ outline: none;
2357
+ box-shadow: var(--focus-glow);
2358
+ }
2359
+
2360
+ .arc-top-bar .topbar__menu-btn--open {
2361
+ border-color: rgba(var(--accent-primary-rgb), 0.3);
2362
+ background: rgba(var(--accent-primary-rgb), 0.06);
2363
+ }
2364
+
2365
+ .arc-top-bar .topbar__hamburger {
2366
+ width: 16px;
2367
+ height: 12px;
2368
+ position: relative;
2369
+ display: flex;
2370
+ flex-direction: column;
2371
+ justify-content: space-between;
2372
+ }
2373
+
2374
+ .arc-top-bar .topbar__hamburger-line {
2375
+ display: block;
2376
+ width: 100%;
2377
+ height: 1.5px;
2378
+ background: currentColor;
2379
+ border-radius: 1px; /* cosmetic rounding on 1.5px hamburger lines -- intentionally not tokenized */
2380
+ transition: transform 400ms var(--ease-out-expo), opacity 250ms ease, width 400ms var(--ease-out-expo);
2381
+ transform-origin: center;
2382
+ }
2383
+
2384
+ .arc-top-bar .topbar__hamburger-line:nth-child(2) {
2385
+ width: 100%;
2386
+ }
2387
+
2388
+ .arc-top-bar .topbar__menu-btn--open .topbar__hamburger-line:nth-child(1) {
2389
+ transform: translateY(5.25px) rotate(45deg);
2390
+ }
2391
+
2392
+ .arc-top-bar .topbar__menu-btn--open .topbar__hamburger-line:nth-child(2) {
2393
+ opacity: 0;
2394
+ width: 0;
2395
+ }
2396
+
2397
+ .arc-top-bar .topbar__menu-btn--open .topbar__hamburger-line:nth-child(3) {
2398
+ transform: translateY(-5.25px) rotate(-45deg);
2399
+ }
2400
+
2401
+ @media (max-width: 900px) {
2402
+ .arc-top-bar .topbar__menu-btn { display: flex; }
2403
+ }
2404
+
2405
+ @media (prefers-reduced-motion: reduce) {
2406
+ .arc-top-bar *,
2407
+ .arc-top-bar *::before,
2408
+ .arc-top-bar *::after {
2409
+ animation-duration: 0.01ms !important;
2410
+ animation-iteration-count: 1 !important;
2411
+ transition-duration: 0.01ms !important;
2412
+ }
2413
+ }
2414
+
2415
+ /* arc-auth-shell */
2416
+ .arc-auth-shell {
2417
+ display: block;
2418
+ box-sizing: border-box;
2419
+ }
2420
+
2421
+ /* Centered variant */
2422
+ .arc-auth-shell .auth-shell--centered {
2423
+ display: flex;
2424
+ flex-direction: column;
2425
+ align-items: center;
2426
+ justify-content: center;
2427
+ min-height: 100vh;
2428
+ background: var(--bg-surface);
2429
+ padding: var(--space-xl) var(--space-lg);
2430
+ box-sizing: border-box;
2431
+ }
2432
+
2433
+ .arc-auth-shell .auth-shell--centered .logo {
2434
+ margin-bottom: var(--space-xl);
2435
+ text-align: center;
2436
+ }
2437
+
2438
+ .arc-auth-shell .auth-shell--centered .card {
2439
+ background: var(--bg-card);
2440
+ border: 1px solid var(--border-default);
2441
+ border-radius: var(--radius-lg);
2442
+ padding: var(--space-xl);
2443
+ width: 100%;
2444
+ max-width: 420px;
2445
+ box-sizing: border-box;
2446
+ }
2447
+
2448
+ .arc-auth-shell .auth-shell--centered .footer {
2449
+ margin-top: var(--space-lg);
2450
+ color: var(--text-muted);
2451
+ font-size: var(--text-sm);
2452
+ text-align: center;
2453
+ }
2454
+
2455
+ /* Split variant */
2456
+ .arc-auth-shell .auth-shell--split {
2457
+ display: grid;
2458
+ grid-template-columns: 1fr 1fr;
2459
+ min-height: 100vh;
2460
+ box-sizing: border-box;
2461
+ }
2462
+
2463
+ .arc-auth-shell .auth-shell--split .form-side {
2464
+ display: flex;
2465
+ flex-direction: column;
2466
+ align-items: center;
2467
+ justify-content: center;
2468
+ background: var(--bg-surface);
2469
+ padding: var(--space-xl) var(--space-lg);
2470
+ }
2471
+
2472
+ .arc-auth-shell .auth-shell--split .logo {
2473
+ margin-bottom: var(--space-xl);
2474
+ text-align: center;
2475
+ }
2476
+
2477
+ .arc-auth-shell .auth-shell--split .card {
2478
+ background: var(--bg-card);
2479
+ border: 1px solid var(--border-default);
2480
+ border-radius: var(--radius-lg);
2481
+ padding: var(--space-xl);
2482
+ width: 100%;
2483
+ max-width: 420px;
2484
+ box-sizing: border-box;
2485
+ }
2486
+
2487
+ .arc-auth-shell .auth-shell--split .footer {
2488
+ margin-top: var(--space-lg);
2489
+ color: var(--text-muted);
2490
+ font-size: var(--text-sm);
2491
+ text-align: center;
2492
+ }
2493
+
2494
+ .arc-auth-shell .auth-shell--split .aside-side {
2495
+ display: flex;
2496
+ align-items: center;
2497
+ justify-content: center;
2498
+ background: var(--bg-deep);
2499
+ padding: var(--space-xl);
2500
+ }
2501
+
2502
+ @media (max-width: 768px) {
2503
+ .arc-auth-shell .auth-shell--split {
2504
+ grid-template-columns: 1fr;
2505
+ }
2506
+
2507
+ .arc-auth-shell .auth-shell--split .aside-side {
2508
+ display: none;
2509
+ }
2510
+ }
2511
+
2512
+ /* arc-container */
2513
+ .arc-container { display: block; }
2514
+
2515
+ .arc-container .container {
2516
+ width: 100%;
2517
+ max-width: var(--max-width);
2518
+ margin-inline: auto;
2519
+ padding-inline: var(--space-lg);
2520
+ }
2521
+
2522
+ .arc-container[narrow] .container {
2523
+ max-width: var(--max-width-sm);
2524
+ }
2525
+
2526
+ /* arc-dashboard-grid */
2527
+ .arc-dashboard-grid {
2528
+ display: block;
2529
+ box-sizing: border-box;
2530
+ }
2531
+
2532
+ .arc-dashboard-grid .dashboard-grid {
2533
+ display: grid;
2534
+ grid-template-columns: repeat(
2535
+ auto-fill,
2536
+ minmax(var(--min-col, 280px), 1fr)
2537
+ );
2538
+ gap: var(--gap, var(--space-lg));
2539
+ padding: var(--space-lg);
2540
+ }
2541
+
2542
+ .arc-dashboard-grid[data-explicit-columns] .dashboard-grid {
2543
+ grid-template-columns: repeat(var(--columns, 3), 1fr);
2544
+ }
2545
+
2546
+ /* arc-page-header */
2547
+ .arc-page-header {
2548
+ display: block;
2549
+ font-family: var(--font-body);
2550
+ }
2551
+
2552
+ .arc-page-header .page-header {
2553
+ padding: var(--space-lg) 0 var(--space-md);
2554
+ border-bottom: 1px solid var(--border-subtle);
2555
+ }
2556
+
2557
+ .arc-page-header .page-header__breadcrumb {
2558
+ margin-bottom: var(--space-sm);
2559
+ }
2560
+
2561
+ .arc-page-header .page-header__title-row {
2562
+ display: flex;
2563
+ align-items: center;
2564
+ justify-content: space-between;
2565
+ gap: var(--space-md);
2566
+ flex-wrap: wrap;
2567
+ }
2568
+
2569
+ .arc-page-header .page-header__heading {
2570
+ margin: 0;
2571
+ font-family: var(--font-body);
2572
+ font-size: 28px; /* size-variant, keep hardcoded */
2573
+ font-weight: 700;
2574
+ color: var(--text-primary);
2575
+ line-height: 1.2;
2576
+ }
2577
+
2578
+ .arc-page-header .page-header__actions {
2579
+ display: flex;
2580
+ align-items: center;
2581
+ gap: var(--space-sm);
2582
+ flex-shrink: 0;
2583
+ }
2584
+
2585
+ .arc-page-header .page-header__description {
2586
+ margin-top: var(--space-sm);
2587
+ color: var(--text-secondary);
2588
+ font-size: var(--body-size);
2589
+ line-height: 1.5;
2590
+ }
2591
+
2592
+ .arc-page-header .page-header__tabs {
2593
+ margin-top: var(--space-md);
2594
+ }
2595
+
2596
+ .arc-page-header .page-header__content {
2597
+ margin-top: var(--space-md);
2598
+ }
2599
+
2600
+ /* arc-page-layout */
2601
+ .arc-page-layout {
2602
+ display: block;
2603
+ box-sizing: border-box;
2604
+ }
2605
+
2606
+ .arc-page-layout .page-layout {
2607
+ padding: var(--space-xl) var(--space-lg);
2608
+ gap: var(--gap);
2609
+ min-height: 100%;
2610
+ box-sizing: border-box;
2611
+ }
2612
+
2613
+ /* Centered layout */
2614
+ .arc-page-layout([layout='centered']) .page-layout {
2615
+ display: block;
2616
+ max-width: var(--max-width);
2617
+ margin: 0 auto;
2618
+ }
2619
+
2620
+ /* Wide layout */
2621
+ .arc-page-layout([layout='wide']) .page-layout {
2622
+ display: block;
2623
+ }
2624
+
2625
+ /* Sidebar left layout */
2626
+ .arc-page-layout([layout='sidebar-left']) .page-layout {
2627
+ display: grid;
2628
+ grid-template-columns: 240px 1fr;
2629
+ }
2630
+
2631
+ /* Sidebar right layout */
2632
+ .arc-page-layout([layout='sidebar-right']) .page-layout {
2633
+ display: grid;
2634
+ grid-template-columns: 1fr 300px;
2635
+ }
2636
+
2637
+ .arc-page-layout .sidebar {
2638
+ display: none;
2639
+ }
2640
+
2641
+ .arc-page-layout([layout='sidebar-left']) .sidebar {
2642
+ display: block;
2643
+ }
2644
+
2645
+ .arc-page-layout .aside {
2646
+ display: none;
2647
+ }
2648
+
2649
+ .arc-page-layout([layout='sidebar-right']) .aside {
2650
+ display: block;
2651
+ }
2652
+
2653
+ .arc-page-layout .main {
2654
+ min-width: 0;
2655
+ }
2656
+
2657
+ @media (max-width: 768px) {
2658
+ .arc-page-layout([layout='sidebar-left']) .page-layout,
2659
+ .arc-page-layout([layout='sidebar-right']) .page-layout {
2660
+ grid-template-columns: 1fr;
2661
+ }
2662
+ }
2663
+
2664
+ /* arc-section */
2665
+ .arc-section { display: block; }
2666
+
2667
+ .arc-section .section {
2668
+ width: 100%;
2669
+ max-width: var(--max-width);
2670
+ margin-inline: auto;
2671
+ padding: var(--space-3xl) var(--space-lg);
2672
+ scroll-margin-top: var(--space-md);
2673
+ }
2674
+
2675
+ @media (max-width: 768px) {
2676
+ .arc-section .section { padding: var(--space-2xl) var(--space-md); }
2677
+ }
2678
+
2679
+ .arc-section .section__label {
2680
+ display: block;
2681
+ font-family: var(--font-accent);
2682
+ font-weight: var(--section-title-weight);
2683
+ font-size: var(--section-title-size);
2684
+ letter-spacing: var(--section-title-spacing);
2685
+ text-transform: uppercase;
2686
+ color: var(--text-muted);
2687
+ margin-bottom: var(--space-lg);
2688
+ }
2689
+
2690
+ /* arc-settings-layout */
2691
+ .arc-settings-layout {
2692
+ display: block;
2693
+ box-sizing: border-box;
2694
+ }
2695
+
2696
+ /* Left nav layout */
2697
+ .arc-settings-layout .settings-layout--left {
2698
+ display: grid;
2699
+ grid-template-columns: 220px 1fr;
2700
+ min-height: 100%;
2701
+ }
2702
+
2703
+ .arc-settings-layout .settings-layout--left .nav {
2704
+ padding: var(--space-lg);
2705
+ background: var(--bg-card);
2706
+ border-right: 1px solid var(--border-subtle);
2707
+ }
2708
+
2709
+ .arc-settings-layout .settings-layout--left .content {
2710
+ padding: var(--space-xl);
2711
+ flex: 1;
2712
+ }
2713
+
2714
+ /* Top nav layout */
2715
+ .arc-settings-layout .settings-layout--top {
2716
+ display: flex;
2717
+ flex-direction: column;
2718
+ min-height: 100%;
2719
+ }
2720
+
2721
+ .arc-settings-layout .settings-layout--top .nav {
2722
+ padding: var(--space-lg);
2723
+ background: var(--bg-card);
2724
+ border-bottom: 1px solid var(--border-subtle);
2725
+ }
2726
+
2727
+ .arc-settings-layout .settings-layout--top .content {
2728
+ padding: var(--space-xl);
2729
+ flex: 1;
2730
+ }
2731
+
2732
+ @media (max-width: 768px) {
2733
+ .arc-settings-layout .settings-layout--left {
2734
+ display: flex;
2735
+ flex-direction: column;
2736
+ }
2737
+
2738
+ .arc-settings-layout .settings-layout--left .nav {
2739
+ border-right: none;
2740
+ border-bottom: 1px solid var(--border-subtle);
2741
+ }
2742
+ }
2743
+
2744
+ /* arc-status-bar */
2745
+ .arc-status-bar {
2746
+ display: block;
2747
+ font-family: var(--font-mono);
2748
+ font-size: var(--text-sm);
2749
+ color: var(--text-muted);
2750
+ }
2751
+
2752
+ .arc-status-bar([position='fixed']) {
2753
+ position: fixed;
2754
+ bottom: 0;
2755
+ left: 0;
2756
+ right: 0;
2757
+ z-index: 100;
2758
+ }
2759
+
2760
+ .arc-status-bar .status-bar {
2761
+ display: flex;
2762
+ align-items: center;
2763
+ height: 28px;
2764
+ padding: 0 var(--space-sm);
2765
+ background: var(--bg-deep);
2766
+ border-top: 1px solid var(--border-subtle);
2767
+ gap: var(--space-sm);
2768
+ }
2769
+
2770
+ .arc-status-bar .status-bar__left {
2771
+ display: flex;
2772
+ align-items: center;
2773
+ gap: var(--space-sm);
2774
+ flex-shrink: 0;
2775
+ }
2776
+
2777
+ .arc-status-bar .status-bar__center {
2778
+ display: flex;
2779
+ align-items: center;
2780
+ gap: var(--space-sm);
2781
+ flex: 1;
2782
+ justify-content: center;
2783
+ }
2784
+
2785
+ .arc-status-bar .status-bar__right {
2786
+ display: flex;
2787
+ align-items: center;
2788
+ gap: var(--space-sm);
2789
+ flex-shrink: 0;
2790
+ margin-left: auto;
2791
+ }
2792
+
2793
+ /* arc-toolbar */
2794
+ .arc-toolbar {
2795
+ display: block;
2796
+ font-family: var(--font-body);
2797
+ }
2798
+
2799
+ .arc-toolbar[sticky] {
2800
+ position: sticky;
2801
+ top: 0;
2802
+ z-index: 50;
2803
+ }
2804
+
2805
+ .arc-toolbar .toolbar {
2806
+ display: flex;
2807
+ align-items: center;
2808
+ height: 48px;
2809
+ padding: 0 var(--space-md);
2810
+ background: var(--bg-card);
2811
+ gap: var(--space-sm);
2812
+ }
2813
+
2814
+ .arc-toolbar([size='sm']) .toolbar {
2815
+ height: 36px;
2816
+ padding: 0 var(--space-sm);
2817
+ }
2818
+
2819
+ .arc-toolbar[border] .toolbar {
2820
+ border-bottom: 1px solid var(--border-subtle);
2821
+ }
2822
+
2823
+ .arc-toolbar .toolbar__start {
2824
+ display: flex;
2825
+ align-items: center;
2826
+ gap: var(--space-sm);
2827
+ flex-shrink: 0;
2828
+ }
2829
+
2830
+ .arc-toolbar .toolbar__center {
2831
+ display: flex;
2832
+ align-items: center;
2833
+ gap: var(--space-sm);
2834
+ flex: 1;
2835
+ justify-content: center;
2836
+ }
2837
+
2838
+ .arc-toolbar .toolbar__end {
2839
+ display: flex;
2840
+ align-items: center;
2841
+ gap: var(--space-sm);
2842
+ flex-shrink: 0;
2843
+ margin-left: auto;
2844
+ }
2845
+
2846
+ /* arc-progress */
2847
+ .arc-progress { display: block; }
2848
+
2849
+ .arc-progress .progress__label {
2850
+ font-family: var(--font-accent);
2851
+ font-weight: 600;
2852
+ font-size: var(--label-inline-size);
2853
+ letter-spacing: var(--label-inline-spacing);
2854
+ text-transform: uppercase;
2855
+ color: var(--text-muted);
2856
+ margin-bottom: var(--space-xs);
2857
+ display: block;
2858
+ }
2859
+
2860
+ /* Bar */
2861
+ .arc-progress .progress__track {
2862
+ width: 100%;
2863
+ border-radius: var(--radius-full);
2864
+ background: var(--border-subtle);
2865
+ overflow: hidden;
2866
+ }
2867
+
2868
+ .arc-progress[data-size="sm"] .progress__track { height: 4px; }
2869
+ .arc-progress:not([data-size]) .progress__track,
2870
+ .arc-progress[data-size="md"] .progress__track { height: 8px; }
2871
+ .arc-progress[data-size="lg"] .progress__track { height: 12px; }
2872
+
2873
+ .arc-progress .progress__fill {
2874
+ height: 100%;
2875
+ border-radius: var(--radius-full);
2876
+ background: var(--gradient-accent-text);
2877
+ transition: width var(--transition-base);
2878
+ box-shadow: 0 0 8px rgba(var(--accent-primary-rgb), 0.3);
2879
+ }
2880
+
2881
+ .arc-progress[indeterminate] .progress__fill {
2882
+ width: 30% !important;
2883
+ animation: progress-indeterminate 1.5s ease-in-out infinite;
2884
+ }
2885
+
2886
+ /* Spinner */
2887
+ .arc-progress .progress__spinner {
2888
+ display: inline-block;
2889
+ }
2890
+
2891
+ .arc-progress[data-size="sm"] .progress__spinner { width: 20px; height: 20px; }
2892
+ .arc-progress:not([data-size]) .progress__spinner,
2893
+ .arc-progress[data-size="md"] .progress__spinner { width: 32px; height: 32px; }
2894
+ .arc-progress[data-size="lg"] .progress__spinner { width: 48px; height: 48px; }
2895
+
2896
+ .arc-progress .progress__spinner svg {
2897
+ width: 100%;
2898
+ height: 100%;
2899
+ animation: spinner-rotate 1.4s linear infinite;
2900
+ }
2901
+
2902
+ .arc-progress .progress__spinner-track {
2903
+ fill: none;
2904
+ stroke: var(--border-subtle);
2905
+ stroke-width: 3;
2906
+ }
2907
+
2908
+ .arc-progress .progress__spinner-fill {
2909
+ fill: none;
2910
+ stroke: var(--accent-primary);
2911
+ stroke-width: 3;
2912
+ stroke-linecap: round;
2913
+ stroke-dasharray: 80, 200;
2914
+ stroke-dashoffset: 0;
2915
+ animation: spinner-dash 1.4s ease-in-out infinite;
2916
+ }
2917
+
2918
+ @keyframes progress-indeterminate {
2919
+ 0% { transform: translateX(-100%); }
2920
+ 100% { transform: translateX(400%); }
2921
+ }
2922
+
2923
+ @keyframes spinner-rotate {
2924
+ 100% { transform: rotate(360deg); }
2925
+ }
2926
+
2927
+ @keyframes spinner-dash {
2928
+ 0% { stroke-dasharray: 1, 200; stroke-dashoffset: 0; }
2929
+ 50% { stroke-dasharray: 80, 200; stroke-dashoffset: -35; }
2930
+ 100% { stroke-dasharray: 80, 200; stroke-dashoffset: -125; }
2931
+ }
2932
+
2933
+ @media (prefers-reduced-motion: reduce) {
2934
+ .arc-progress .progress__fill,
2935
+ .arc-progress .progress__spinner svg,
2936
+ .arc-progress .progress__spinner-fill {
2937
+ animation: none;
2938
+ }
2939
+ }
2940
+
2941
+ /* arc-tooltip */
2942
+ .arc-tooltip {
2943
+ display: inline-block;
2944
+ position: relative;
2945
+ }
2946
+
2947
+ .arc-tooltip .tooltip__trigger {
2948
+ display: inline-block;
2949
+ }
2950
+
2951
+ .arc-tooltip .tooltip__popup {
2952
+ position: absolute;
2953
+ z-index: 1000;
2954
+ background: var(--bg-elevated);
2955
+ border: 1px solid var(--border-default);
2956
+ border-radius: var(--radius-sm);
2957
+ padding: var(--space-xs) var(--space-sm);
2958
+ font-family: var(--font-body);
2959
+ font-size: var(--text-sm);
2960
+ color: var(--text-primary);
2961
+ white-space: nowrap;
2962
+ pointer-events: none;
2963
+ opacity: 0;
2964
+ transition: opacity var(--transition-fast);
2965
+ box-shadow: var(--shadow-overlay);
2966
+ }
2967
+
2968
+ .arc-tooltip .tooltip__popup.is-visible {
2969
+ opacity: 1;
2970
+ }
2971
+
2972
+ /* Arrow */
2973
+ .arc-tooltip .tooltip__arrow {
2974
+ position: absolute;
2975
+ width: 8px;
2976
+ height: 8px;
2977
+ background: var(--bg-elevated);
2978
+ border: 1px solid var(--border-default);
2979
+ transform: rotate(45deg);
2980
+ }
2981
+
2982
+ /* Positions */
2983
+ .arc-tooltip:not([data-position]) .tooltip__popup,
2984
+ .arc-tooltip[data-position="top"] .tooltip__popup {
2985
+ bottom: calc(100% + 8px);
2986
+ left: 50%;
2987
+ transform: translateX(-50%);
2988
+ }
2989
+ .arc-tooltip:not([data-position]) .tooltip__arrow,
2990
+ .arc-tooltip[data-position="top"] .tooltip__arrow {
2991
+ bottom: -5px;
2992
+ left: 50%;
2993
+ transform: translateX(-50%) rotate(45deg);
2994
+ border-top: none;
2995
+ border-left: none;
2996
+ }
2997
+
2998
+ .arc-tooltip[data-position="bottom"] .tooltip__popup {
2999
+ top: calc(100% + 8px);
3000
+ left: 50%;
3001
+ transform: translateX(-50%);
3002
+ }
3003
+ .arc-tooltip[data-position="bottom"] .tooltip__arrow {
3004
+ top: -5px;
3005
+ left: 50%;
3006
+ transform: translateX(-50%) rotate(45deg);
3007
+ border-bottom: none;
3008
+ border-right: none;
3009
+ }
3010
+
3011
+ .arc-tooltip[data-position="left"] .tooltip__popup {
3012
+ right: calc(100% + 8px);
3013
+ top: 50%;
3014
+ transform: translateY(-50%);
3015
+ }
3016
+ .arc-tooltip[data-position="left"] .tooltip__arrow {
3017
+ right: -5px;
3018
+ top: 50%;
3019
+ transform: translateY(-50%) rotate(45deg);
3020
+ border-bottom: none;
3021
+ border-left: none;
3022
+ }
3023
+
3024
+ .arc-tooltip[data-position="right"] .tooltip__popup {
3025
+ left: calc(100% + 8px);
3026
+ top: 50%;
3027
+ transform: translateY(-50%);
3028
+ }
3029
+ .arc-tooltip[data-position="right"] .tooltip__arrow {
3030
+ left: -5px;
3031
+ top: 50%;
3032
+ transform: translateY(-50%) rotate(45deg);
3033
+ border-top: none;
3034
+ border-right: none;
3035
+ }
3036
+
3037
+ @media (prefers-reduced-motion: reduce) {
3038
+ .arc-tooltip *,
3039
+ .arc-tooltip *::before,
3040
+ .arc-tooltip *::after {
3041
+ animation-duration: 0.01ms !important;
3042
+ animation-iteration-count: 1 !important;
3043
+ transition-duration: 0.01ms !important;
3044
+ }
3045
+ }