@svadmin/ui 0.38.1 → 0.38.5

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 (144) hide show
  1. package/dist/app.css +10 -5
  2. package/dist/app.theme.css +1374 -0
  3. package/dist/components/AICommandBar.svelte +16 -15
  4. package/dist/components/AboutSettings.svelte +12 -11
  5. package/dist/components/AdminApp.svelte +144 -70
  6. package/dist/components/AdminApp.svelte.d.ts +6 -3
  7. package/dist/components/ApiSettings.svelte +19 -16
  8. package/dist/components/AppearanceSettings.svelte +18 -16
  9. package/dist/components/AuditLogDrawer.svelte +6 -3
  10. package/dist/components/AuditLogViewer.svelte +18 -15
  11. package/dist/components/Authenticated.svelte +4 -4
  12. package/dist/components/AutoForm.svelte +19 -16
  13. package/dist/components/AutoSaveIndicator.svelte +7 -5
  14. package/dist/components/AutoTable.svelte +85 -71
  15. package/dist/components/AutoTable.svelte.d.ts +1 -1
  16. package/dist/components/Breadcrumbs.svelte +17 -13
  17. package/dist/components/CancelTaskButton.svelte +5 -2
  18. package/dist/components/CatchAllNavigate.svelte +3 -3
  19. package/dist/components/ChatDialog.svelte +22 -19
  20. package/dist/components/ComboboxField.svelte +6 -4
  21. package/dist/components/CommandPalette.svelte +20 -20
  22. package/dist/components/ConfigErrorScreen.svelte +12 -10
  23. package/dist/components/ConfirmDialog.svelte +6 -4
  24. package/dist/components/CreatePage.svelte +4 -2
  25. package/dist/components/DevTools.svelte +11 -9
  26. package/dist/components/DrawerForm.svelte +5 -2
  27. package/dist/components/EditPage.svelte +8 -5
  28. package/dist/components/EmptyState.svelte +5 -3
  29. package/dist/components/ErrorBoundary.svelte +5 -3
  30. package/dist/components/ErrorComponent.svelte +6 -4
  31. package/dist/components/ErrorPage.svelte +12 -10
  32. package/dist/components/FieldRenderer.svelte +17 -15
  33. package/dist/components/ForgotPasswordPage.svelte +22 -19
  34. package/dist/components/Header.svelte +7 -4
  35. package/dist/components/InfiniteList.svelte +6 -3
  36. package/dist/components/IntegrationsSettings.svelte +9 -6
  37. package/dist/components/KeyboardShortcuts.svelte +4 -2
  38. package/dist/components/Layout.svelte +12 -13
  39. package/dist/components/LazyPage.svelte +47 -0
  40. package/dist/components/LazyPage.svelte.d.ts +14 -0
  41. package/dist/components/ListPage.svelte +8 -5
  42. package/dist/components/LoginPage.svelte +24 -22
  43. package/dist/components/MarkdownRenderer.svelte +89 -35
  44. package/dist/components/ModalForm.svelte +4 -2
  45. package/dist/components/NavigateToResource.svelte +3 -3
  46. package/dist/components/NotificationsSettings.svelte +26 -24
  47. package/dist/components/PasswordInput.svelte +4 -2
  48. package/dist/components/PermissionMatrix.svelte +15 -12
  49. package/dist/components/ProfilePage.svelte +23 -21
  50. package/dist/components/RegisterPage.svelte +21 -19
  51. package/dist/components/ResourceOperationsPage.svelte +3 -2
  52. package/dist/components/RetryTaskButton.svelte +5 -2
  53. package/dist/components/RolesSettings.svelte +10 -8
  54. package/dist/components/SecuritySettings.svelte +26 -23
  55. package/dist/components/SettingsPage.svelte +14 -11
  56. package/dist/components/ShowPage.svelte +9 -7
  57. package/dist/components/Sidebar.svelte +36 -28
  58. package/dist/components/SidebarItem.svelte +4 -4
  59. package/dist/components/SidebarItem.svelte.d.ts +1 -1
  60. package/dist/components/StepsForm.svelte +11 -8
  61. package/dist/components/TaskDetails.svelte +14 -11
  62. package/dist/components/TaskList.svelte +14 -11
  63. package/dist/components/TaskQueueDrawer.svelte +34 -32
  64. package/dist/components/TaskStatusBadge.svelte +5 -2
  65. package/dist/components/Toast.svelte +18 -4
  66. package/dist/components/TooltipButton.svelte +25 -3
  67. package/dist/components/TwoFactorAuthPage.svelte +26 -24
  68. package/dist/components/UndoableNotification.svelte +5 -2
  69. package/dist/components/UpdatePasswordPage.svelte +18 -15
  70. package/dist/components/VirtualTable.svelte +0 -4
  71. package/dist/components/account/CompanyProfilePage.svelte +13 -11
  72. package/dist/components/account/GetStartedPage.svelte +15 -13
  73. package/dist/components/account/ImportMembersPage.svelte +14 -12
  74. package/dist/components/account/MembersStarterPage.svelte +10 -8
  75. package/dist/components/account/SecurityLogPage.svelte +24 -22
  76. package/dist/components/account/SettingsEnterprisePage.svelte +6 -4
  77. package/dist/components/account/SettingsPlainPage.svelte +14 -12
  78. package/dist/components/account/SettingsSidebarPage.svelte +11 -9
  79. package/dist/components/account/TeamMembersPage.svelte +10 -8
  80. package/dist/components/buttons/CloneButton.svelte +4 -2
  81. package/dist/components/buttons/CreateButton.svelte +4 -2
  82. package/dist/components/buttons/DeleteButton.svelte +6 -4
  83. package/dist/components/buttons/EditButton.svelte +4 -2
  84. package/dist/components/buttons/ExportButton.svelte +4 -2
  85. package/dist/components/buttons/ImportButton.svelte +4 -2
  86. package/dist/components/buttons/RefreshButton.svelte +4 -2
  87. package/dist/components/buttons/SaveButton.svelte +4 -2
  88. package/dist/components/buttons/ShowButton.svelte +4 -2
  89. package/dist/components/fieldComponentMap.js +0 -3
  90. package/dist/components/fields/ArrayField.svelte +6 -4
  91. package/dist/components/fields/JsonField.svelte +5 -3
  92. package/dist/components/fields/RelationField.svelte +3 -3
  93. package/dist/components/fields/RichTextField.svelte +4 -2
  94. package/dist/components/network/TeamCrewTablePage.svelte +18 -16
  95. package/dist/components/network/UserCardsNFTPage.svelte +11 -9
  96. package/dist/components/profile/ActivityTimeline.svelte +10 -8
  97. package/dist/components/profile/ProfileCard.svelte +13 -11
  98. package/dist/components/profile/ProjectsGrid.svelte +7 -5
  99. package/dist/components/profile/PublicProfilePage.svelte +18 -16
  100. package/dist/components/profile/TeamsShowcase.svelte +7 -5
  101. package/dist/components/toast-host.svelte.d.ts +5 -0
  102. package/dist/components/toast-host.svelte.js +21 -0
  103. package/dist/components/ui/command/command-dialog.svelte +29 -13
  104. package/dist/components/ui/command/command-dialog.svelte.d.ts +4 -3
  105. package/dist/components/ui/command/command-empty.svelte +18 -0
  106. package/dist/components/ui/command/command-empty.svelte.d.ts +4 -0
  107. package/dist/components/ui/command/command-group.svelte +41 -0
  108. package/dist/components/ui/command/command-group.svelte.d.ts +8 -0
  109. package/dist/components/ui/command/command-input.svelte +23 -0
  110. package/dist/components/ui/command/command-input.svelte.d.ts +4 -0
  111. package/dist/components/ui/command/command-item.svelte +43 -0
  112. package/dist/components/ui/command/command-item.svelte.d.ts +11 -0
  113. package/dist/components/ui/command/command-list.svelte +18 -0
  114. package/dist/components/ui/command/command-list.svelte.d.ts +4 -0
  115. package/dist/components/ui/command/command-loading.svelte +12 -0
  116. package/dist/components/ui/command/command-loading.svelte.d.ts +4 -0
  117. package/dist/components/ui/command/command-separator.svelte +23 -0
  118. package/dist/components/ui/command/command-separator.svelte.d.ts +7 -0
  119. package/dist/components/ui/command/command.svelte +26 -0
  120. package/dist/components/ui/command/command.svelte.d.ts +4 -0
  121. package/dist/components/ui/command/index.d.ts +55 -2
  122. package/dist/components/ui/command/index.js +21 -2
  123. package/dist/components/ui/sheet/sheet-content.svelte +1 -4
  124. package/dist/components/ui/sheet/sheet-content.svelte.d.ts +1 -3
  125. package/dist/components/ui/tabs/tabs-content.svelte +6 -2
  126. package/dist/components/ui/tabs/tabs-context.svelte.d.ts +5 -0
  127. package/dist/components/ui/tabs/tabs-context.svelte.js +2 -0
  128. package/dist/components/ui/tabs/tabs-trigger.svelte +49 -4
  129. package/dist/components/ui/tabs/tabs.svelte +12 -1
  130. package/dist/components/ui/tooltip/index.d.ts +4 -1
  131. package/dist/components/ui/tooltip/index.js +3 -1
  132. package/dist/components/ui/tooltip/tooltip-content.svelte +308 -35
  133. package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +42 -3
  134. package/dist/components/ui/tooltip/tooltip-context.svelte.d.ts +37 -0
  135. package/dist/components/ui/tooltip/tooltip-context.svelte.js +220 -0
  136. package/dist/components/ui/tooltip/tooltip-layer-registry.svelte.d.ts +11 -0
  137. package/dist/components/ui/tooltip/tooltip-layer-registry.svelte.js +93 -0
  138. package/dist/components/ui/tooltip/tooltip-trigger.svelte +56 -3
  139. package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +23 -2
  140. package/dist/components/ui/tooltip/tooltip.svelte +63 -3
  141. package/dist/components/ui/tooltip/tooltip.svelte.d.ts +23 -2
  142. package/dist/router-state.svelte.d.ts +13 -0
  143. package/dist/router-state.svelte.js +72 -37
  144. package/package.json +18 -12
@@ -0,0 +1,1374 @@
1
+ /* Typography — Inter font for clean, modern look */
2
+
3
+ /* Tailwind v4 resolves this path relative to the published CSS file, so both
4
+ * src/app.css in the workspace and dist/app*.css on npm scan real components. */
5
+ @source "./components";
6
+
7
+ /* @svadmin/ui — Design Tokens (clean admin shell)
8
+ * Auto-imported by AdminApp. Can be overridden by consumer's CSS.
9
+ *
10
+ * Clean dashboard style: indigo primary, light glassmorphism,
11
+ * professional admin aesthetic with subtle depth.
12
+ */
13
+
14
+ @layer base {
15
+ /* Use the semantic token so consumers can normalize legacy channel-only
16
+ * values without the base reset falling back to currentColor. */
17
+ *,
18
+ ::after,
19
+ ::before {
20
+ border-color: var(--color-border, var(--border));
21
+ }
22
+
23
+ :root {
24
+ --radius: 0.75rem;
25
+ --background: oklch(0.975 0.005 264);
26
+ --foreground: oklch(0.13 0.02 265);
27
+ --card: oklch(1 0 0);
28
+ --card-foreground: oklch(0.13 0.02 265);
29
+ --popover: oklch(1 0 0);
30
+ --popover-foreground: oklch(0.13 0.02 265);
31
+ --primary: oklch(0.488 0.243 264.376);
32
+ --primary-foreground: oklch(0.985 0 0);
33
+ --secondary: oklch(0.955 0.008 264);
34
+ --secondary-foreground: oklch(0.2 0.04 265);
35
+ --muted: oklch(0.955 0.005 264);
36
+ --muted-foreground: oklch(0.45 0.03 260);
37
+ --accent: oklch(0.955 0.008 264);
38
+ --accent-foreground: oklch(0.2 0.04 265);
39
+ --destructive: oklch(0.577 0.245 27.325);
40
+ --destructive-foreground: oklch(0.985 0 0);
41
+ --border: oklch(0.935 0.005 264);
42
+ --input: oklch(0.935 0.005 264);
43
+ --ring: oklch(0.488 0.243 264.376);
44
+ --chart-1: oklch(0.488 0.243 264.376);
45
+ --chart-2: oklch(0.6 0.118 184.704);
46
+ --chart-3: oklch(0.398 0.07 227.392);
47
+ --chart-4: oklch(0.828 0.189 84.429);
48
+ --chart-5: oklch(0.769 0.188 70.08);
49
+ --success: oklch(0.6 0.2 145);
50
+ --success-foreground: oklch(0.985 0 0);
51
+ --warning: oklch(0.75 0.18 85);
52
+ --warning-foreground: oklch(0.3 0.08 60);
53
+ --info: oklch(0.6 0.15 250);
54
+ --info-foreground: oklch(0.985 0 0);
55
+ --sidebar: oklch(0.985 0.002 264);
56
+ --sidebar-foreground: oklch(0.23 0.02 265);
57
+ --sidebar-primary: oklch(0.488 0.243 264.376);
58
+ --sidebar-primary-foreground: oklch(0.985 0 0);
59
+ --sidebar-accent: oklch(0.955 0.012 264);
60
+ --sidebar-accent-foreground: oklch(0.33 0.17 264);
61
+ --sidebar-border: oklch(0.935 0.005 264);
62
+ --sidebar-ring: oklch(0.488 0.243 264.376);
63
+ }
64
+
65
+ .dark {
66
+ --background: oklch(0.13 0.015 265);
67
+ --foreground: oklch(0.985 0 0);
68
+ --card: oklch(0.16 0.015 265);
69
+ --card-foreground: oklch(0.985 0 0);
70
+ --popover: oklch(0.16 0.015 265);
71
+ --popover-foreground: oklch(0.985 0 0);
72
+ --primary: oklch(0.585 0.233 264);
73
+ --primary-foreground: oklch(0.15 0.04 265);
74
+ --secondary: oklch(0.23 0.025 265);
75
+ --secondary-foreground: oklch(0.985 0 0);
76
+ --muted: oklch(0.23 0.025 265);
77
+ --muted-foreground: oklch(0.7 0.02 260);
78
+ --accent: oklch(0.23 0.025 265);
79
+ --accent-foreground: oklch(0.985 0 0);
80
+ --destructive: oklch(0.704 0.191 22.216);
81
+ --destructive-foreground: oklch(0.985 0 0);
82
+ --border: oklch(0.27 0.02 265);
83
+ --input: oklch(0.27 0.02 265);
84
+ --ring: oklch(0.55 0.18 264);
85
+ --chart-1: oklch(0.585 0.233 264);
86
+ --chart-2: oklch(0.696 0.17 162.48);
87
+ --chart-3: oklch(0.769 0.188 70.08);
88
+ --chart-4: oklch(0.627 0.265 303.9);
89
+ --chart-5: oklch(0.645 0.246 16.439);
90
+ --success: oklch(0.65 0.2 150);
91
+ --success-foreground: oklch(0.985 0 0);
92
+ --warning: oklch(0.8 0.15 85);
93
+ --warning-foreground: oklch(0.25 0.05 60);
94
+ --info: oklch(0.65 0.15 250);
95
+ --info-foreground: oklch(0.985 0 0);
96
+ --sidebar: oklch(0.17 0.015 265);
97
+ --sidebar-foreground: oklch(0.92 0.005 264);
98
+ --sidebar-primary: oklch(0.585 0.233 264);
99
+ --sidebar-primary-foreground: oklch(0.985 0 0);
100
+ --sidebar-accent: oklch(0.488 0.243 264.376 / 12%);
101
+ --sidebar-accent-foreground: oklch(0.7 0.15 264);
102
+ --sidebar-border: oklch(0.27 0.02 265);
103
+ --sidebar-ring: oklch(0.55 0.18 264);
104
+ }
105
+
106
+ /* ── Color Theme Overrides ──────────────────────────────
107
+ * Each [data-theme] selector overrides the primary-related
108
+ * CSS variables for both light and dark mode.
109
+ * Values match builtinPresets in @svadmin/core/theme.
110
+ * This CSS-level fallback prevents FOUC before JS inits.
111
+ */
112
+
113
+ /* Neutral */
114
+ [data-theme="neutral"] {
115
+ --primary: oklch(0.205 0.006 286);
116
+ --primary-foreground: oklch(0.985 0 0);
117
+ --ring: oklch(0.205 0.006 286);
118
+ --sidebar-primary: oklch(0.205 0.006 286);
119
+ --sidebar-primary-foreground: oklch(0.985 0 0);
120
+ --sidebar-ring: oklch(0.205 0.006 286);
121
+ --chart-1: oklch(0.488 0.243 264.376);
122
+ }
123
+ .dark[data-theme="neutral"],
124
+ .dark [data-theme="neutral"] {
125
+ --primary: oklch(0.922 0.004 286);
126
+ --primary-foreground: oklch(0.205 0.006 286);
127
+ --ring: oklch(0.556 0.004 286);
128
+ --sidebar-primary: oklch(0.922 0.004 286);
129
+ --sidebar-primary-foreground: oklch(0.205 0.006 286);
130
+ --sidebar-ring: oklch(0.556 0.004 286);
131
+ --chart-1: oklch(0.585 0.233 264);
132
+ }
133
+
134
+ /* Indigo (default) */
135
+ [data-theme="indigo"] {
136
+ --primary: oklch(0.488 0.243 264.376);
137
+ --primary-foreground: oklch(0.985 0 0);
138
+ --ring: oklch(0.488 0.243 264.376);
139
+ --sidebar-primary: oklch(0.488 0.243 264.376);
140
+ --sidebar-primary-foreground: oklch(0.985 0 0);
141
+ --sidebar-ring: oklch(0.488 0.243 264.376);
142
+ --chart-1: oklch(0.488 0.243 264.376);
143
+ }
144
+ .dark[data-theme="indigo"],
145
+ .dark [data-theme="indigo"] {
146
+ --primary: oklch(0.585 0.233 264);
147
+ --primary-foreground: oklch(0.15 0.04 265);
148
+ --ring: oklch(0.55 0.18 264);
149
+ --sidebar-primary: oklch(0.585 0.233 264);
150
+ --sidebar-primary-foreground: oklch(0.985 0 0);
151
+ --sidebar-ring: oklch(0.55 0.18 264);
152
+ --chart-1: oklch(0.585 0.233 264);
153
+ }
154
+
155
+ /* Blue */
156
+ [data-theme="blue"] {
157
+ --primary: oklch(0.546 0.245 262.881);
158
+ --primary-foreground: oklch(0.985 0 0);
159
+ --ring: oklch(0.546 0.245 262.881);
160
+ --sidebar-primary: oklch(0.546 0.245 262.881);
161
+ --sidebar-primary-foreground: oklch(0.985 0 0);
162
+ --sidebar-ring: oklch(0.546 0.245 262.881);
163
+ --chart-1: oklch(0.546 0.245 262.881);
164
+ }
165
+ .dark[data-theme="blue"],
166
+ .dark [data-theme="blue"] {
167
+ --primary: oklch(0.623 0.214 259.815);
168
+ --primary-foreground: oklch(0.15 0.04 265);
169
+ --ring: oklch(0.546 0.245 262.881);
170
+ --sidebar-primary: oklch(0.623 0.214 259.815);
171
+ --sidebar-primary-foreground: oklch(0.985 0 0);
172
+ --sidebar-ring: oklch(0.546 0.245 262.881);
173
+ --chart-1: oklch(0.623 0.214 259.815);
174
+ }
175
+
176
+ /* Green */
177
+ [data-theme="green"] {
178
+ --primary: oklch(0.527 0.185 150.069);
179
+ --primary-foreground: oklch(0.985 0 0);
180
+ --ring: oklch(0.527 0.185 150.069);
181
+ --sidebar-primary: oklch(0.527 0.185 150.069);
182
+ --sidebar-primary-foreground: oklch(0.985 0 0);
183
+ --sidebar-ring: oklch(0.527 0.185 150.069);
184
+ --chart-1: oklch(0.527 0.185 150.069);
185
+ }
186
+ .dark[data-theme="green"],
187
+ .dark [data-theme="green"] {
188
+ --primary: oklch(0.627 0.194 149.214);
189
+ --primary-foreground: oklch(0.15 0.05 150);
190
+ --ring: oklch(0.527 0.185 150.069);
191
+ --sidebar-primary: oklch(0.627 0.194 149.214);
192
+ --sidebar-primary-foreground: oklch(0.985 0 0);
193
+ --sidebar-ring: oklch(0.527 0.185 150.069);
194
+ --chart-1: oklch(0.627 0.194 149.214);
195
+ }
196
+
197
+ /* Rose */
198
+ [data-theme="rose"] {
199
+ --primary: oklch(0.577 0.245 27.325);
200
+ --primary-foreground: oklch(0.985 0 0);
201
+ --ring: oklch(0.577 0.245 27.325);
202
+ --sidebar-primary: oklch(0.577 0.245 27.325);
203
+ --sidebar-primary-foreground: oklch(0.985 0 0);
204
+ --sidebar-ring: oklch(0.577 0.245 27.325);
205
+ --chart-1: oklch(0.577 0.245 27.325);
206
+ }
207
+ .dark[data-theme="rose"],
208
+ .dark [data-theme="rose"] {
209
+ --primary: oklch(0.577 0.245 27.325);
210
+ --primary-foreground: oklch(0.985 0 0);
211
+ --ring: oklch(0.577 0.245 27.325);
212
+ --sidebar-primary: oklch(0.577 0.245 27.325);
213
+ --sidebar-primary-foreground: oklch(0.985 0 0);
214
+ --sidebar-ring: oklch(0.577 0.245 27.325);
215
+ --chart-1: oklch(0.577 0.245 27.325);
216
+ }
217
+
218
+ /* Orange */
219
+ [data-theme="orange"] {
220
+ --primary: oklch(0.646 0.222 41.116);
221
+ --primary-foreground: oklch(0.985 0 0);
222
+ --ring: oklch(0.646 0.222 41.116);
223
+ --sidebar-primary: oklch(0.646 0.222 41.116);
224
+ --sidebar-primary-foreground: oklch(0.985 0 0);
225
+ --sidebar-ring: oklch(0.646 0.222 41.116);
226
+ --chart-1: oklch(0.646 0.222 41.116);
227
+ }
228
+ .dark[data-theme="orange"],
229
+ .dark [data-theme="orange"] {
230
+ --primary: oklch(0.646 0.222 41.116);
231
+ --primary-foreground: oklch(0.985 0 0);
232
+ --ring: oklch(0.646 0.222 41.116);
233
+ --sidebar-primary: oklch(0.646 0.222 41.116);
234
+ --sidebar-primary-foreground: oklch(0.985 0 0);
235
+ --sidebar-ring: oklch(0.646 0.222 41.116);
236
+ --chart-1: oklch(0.646 0.222 41.116);
237
+ }
238
+
239
+ /* Violet */
240
+ [data-theme="violet"] {
241
+ --primary: oklch(0.541 0.281 293.009);
242
+ --primary-foreground: oklch(0.985 0 0);
243
+ --ring: oklch(0.541 0.281 293.009);
244
+ --sidebar-primary: oklch(0.541 0.281 293.009);
245
+ --sidebar-primary-foreground: oklch(0.985 0 0);
246
+ --sidebar-ring: oklch(0.541 0.281 293.009);
247
+ --chart-1: oklch(0.541 0.281 293.009);
248
+ }
249
+ .dark[data-theme="violet"],
250
+ .dark [data-theme="violet"] {
251
+ --primary: oklch(0.541 0.281 293.009);
252
+ --primary-foreground: oklch(0.985 0 0);
253
+ --ring: oklch(0.541 0.281 293.009);
254
+ --sidebar-primary: oklch(0.541 0.281 293.009);
255
+ --sidebar-primary-foreground: oklch(0.985 0 0);
256
+ --sidebar-ring: oklch(0.541 0.281 293.009);
257
+ --chart-1: oklch(0.541 0.281 293.009);
258
+ }
259
+
260
+ /* Soft shadows — premium, multi-layered depth */
261
+ [data-slot="button"],
262
+ [data-slot="input"],
263
+ [data-slot="select-trigger"],
264
+ [data-slot="select"],
265
+ [data-slot="textarea"] {
266
+ /* Subtle interaction shadow */
267
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.04), 0 0 0 1px rgb(0 0 0 / 0.02);
268
+ }
269
+
270
+ /* Form inputs use card background instead of transparent */
271
+ [data-slot="input"],
272
+ [data-slot="textarea"],
273
+ [data-slot="select"] {
274
+ background-color: var(--card);
275
+ }
276
+
277
+ [data-slot="card"] {
278
+ /* Classic soft shadow: faint ambient + directional drop */
279
+ box-shadow: 0 2px 5px -1px rgb(0 0 0 / 0.04), 0 1px 1px -1px rgb(0 0 0 / 0.04), 0 0 0 1px rgb(0 0 0 / 0.02);
280
+ }
281
+
282
+ [data-slot="dialog-content"],
283
+ [data-slot="sheet-content"] {
284
+ /* Deep floating layer for modals */
285
+ box-shadow: 0 10px 30px -5px rgb(0 0 0 / 0.08), 0 20px 40px -10px rgb(0 0 0 / 0.04);
286
+ }
287
+ }
288
+
289
+ body {
290
+ font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
291
+ -webkit-font-smoothing: antialiased;
292
+ -moz-osx-font-smoothing: grayscale;
293
+ }
294
+
295
+ /* Premium Typography Refinements */
296
+ h1, h2, h3 {
297
+ letter-spacing: -0.025em;
298
+ font-weight: 600;
299
+ }
300
+ h4, h5, h6 {
301
+ letter-spacing: -0.01em;
302
+ }
303
+
304
+ /* Micro-interactions: Linear/Apple ecosystem click scales */
305
+ [data-slot="button"],
306
+ button {
307
+ transition: transform 0.1s cubic-bezier(0.16, 1, 0.3, 1), background-color 0.15s ease, box-shadow 0.15s ease;
308
+ }
309
+ [data-slot="button"]:active:not(:disabled),
310
+ button:active:not(:disabled) {
311
+ transform: scale(0.98);
312
+ }
313
+
314
+ /* Subtle glowing focus ring for inputs */
315
+ [data-slot="button"]:focus-visible,
316
+ [data-slot="input"]:focus-visible,
317
+ [data-slot="textarea"]:focus-visible,
318
+ [data-slot="select-trigger"]:focus-visible {
319
+ box-shadow: 0 0 0 1px var(--color-background), 0 0 0 3px color-mix(in oklch, var(--color-primary) 20%, transparent) !important;
320
+ border-color: var(--color-primary);
321
+ }
322
+
323
+ /* Base scrollbar styling (Firefox + Standard) */
324
+ * {
325
+ scrollbar-width: thin;
326
+ scrollbar-color: oklch(0.8 0 0) transparent;
327
+ }
328
+ .dark * {
329
+ scrollbar-color: oklch(0.35 0 0) transparent;
330
+ }
331
+
332
+ /* Scrollbar styling (Webkit) */
333
+ ::-webkit-scrollbar { width: 6px; height: 6px; }
334
+ ::-webkit-scrollbar-track { background: transparent; }
335
+ ::-webkit-scrollbar-thumb { background: oklch(0.8 0 0); border-radius: 3px; }
336
+ ::-webkit-scrollbar-thumb:hover { background: oklch(0.65 0 0); }
337
+ .dark ::-webkit-scrollbar-thumb { background: oklch(0.35 0 0); }
338
+ .dark ::-webkit-scrollbar-thumb:hover { background: oklch(0.45 0 0); }
339
+
340
+ /* Card Hover Elevation Lift — subtle float on hover */
341
+ [data-slot="card"] {
342
+ transition: box-shadow 0.2s ease, transform 0.2s ease;
343
+ }
344
+ @media (hover: hover) {
345
+ [data-slot="card"]:hover {
346
+ box-shadow: 0 6px 16px -4px rgb(0 0 0 / 0.06), 0 4px 8px -2px rgb(0 0 0 / 0.04), 0 0 0 1px rgb(0 0 0 / 0.02);
347
+ transform: translateY(-1px);
348
+ }
349
+ }
350
+
351
+ /* ② Table Row Hover — primary color tint instead of plain gray */
352
+ [data-slot="table-row"]:hover {
353
+ background-color: color-mix(in oklch, var(--primary) 4%, var(--background)) !important;
354
+ }
355
+ [data-slot="table-row"] {
356
+ transition: background-color 0.15s ease;
357
+ }
358
+
359
+
360
+ /* ④ Skeleton Shimmer — metallic light sweep instead of static pulse */
361
+ @keyframes svadmin-shimmer {
362
+ 0% { background-position: -200% 0; }
363
+ 100% { background-position: 200% 0; }
364
+ }
365
+ [data-slot="skeleton"] {
366
+ animation: svadmin-shimmer 1.5s ease-in-out infinite !important;
367
+ background: linear-gradient(90deg, var(--muted) 25%, color-mix(in oklch, var(--muted) 60%, white) 50%, var(--muted) 75%) !important;
368
+ background-size: 200% 100% !important;
369
+ }
370
+ .dark [data-slot="skeleton"] {
371
+ background: linear-gradient(90deg, var(--muted) 25%, color-mix(in oklch, var(--muted) 60%, var(--foreground)) 50%, var(--muted) 75%) !important;
372
+ }
373
+
374
+ /* ⑤ Route Page Transition — fade + subtle slide-up */
375
+ @keyframes svadmin-page-enter {
376
+ from {
377
+ opacity: 0;
378
+ transform: translateY(6px);
379
+ }
380
+ to {
381
+ opacity: 1;
382
+ transform: translateY(0);
383
+ }
384
+ }
385
+ .svadmin-page-enter {
386
+ animation: svadmin-page-enter 0.25s ease-out;
387
+ }
388
+
389
+ /* ⑥ Toast slide-in refinement (svelte-sonner) — tighter timing */
390
+ [data-sonner-toaster] [data-sonner-toast] {
391
+ transition-duration: 200ms !important;
392
+ transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1) !important;
393
+ }
394
+
395
+ /* ⑦ Gradient Top Border on Cards — Vercel dashboard style */
396
+ [data-slot="card"]::before {
397
+ content: '';
398
+ position: absolute;
399
+ top: 0;
400
+ left: 0;
401
+ right: 0;
402
+ height: 1px;
403
+ background: linear-gradient(90deg, transparent, color-mix(in oklch, var(--primary) 20%, transparent), transparent);
404
+ border-radius: inherit;
405
+ pointer-events: none;
406
+ }
407
+ [data-slot="card"] {
408
+ position: relative;
409
+ overflow: hidden;
410
+ }
411
+
412
+ /* ⑧ Dark Mode Primary Glow — Linear-style neon accents */
413
+ .dark [data-slot="button"][data-variant="default"],
414
+ .dark [data-slot="badge"][data-variant="default"] {
415
+ box-shadow: 0 0 12px -3px color-mix(in oklch, var(--primary) 40%, transparent);
416
+ }
417
+
418
+ /* ⑨ Form Validation Shake Animation */
419
+ @keyframes svadmin-shake {
420
+ 0%, 100% { transform: translateX(0); }
421
+ 20% { transform: translateX(-6px); }
422
+ 40% { transform: translateX(5px); }
423
+ 60% { transform: translateX(-4px); }
424
+ 80% { transform: translateX(2px); }
425
+ }
426
+ .svadmin-shake {
427
+ animation: svadmin-shake 0.4s ease-out;
428
+ }
429
+
430
+ /* ⑩ Table Row Staggered Entrance */
431
+ @keyframes svadmin-row-enter {
432
+ from {
433
+ opacity: 0;
434
+ transform: translateY(4px);
435
+ }
436
+ to {
437
+ opacity: 1;
438
+ transform: translateY(0);
439
+ }
440
+ }
441
+ [data-slot="table-body"] [data-slot="table-row"] {
442
+ animation: svadmin-row-enter 0.3s ease-out both;
443
+ }
444
+ [data-slot="table-body"] [data-slot="table-row"]:nth-child(1) { animation-delay: 0s; }
445
+ [data-slot="table-body"] [data-slot="table-row"]:nth-child(2) { animation-delay: 0.03s; }
446
+ [data-slot="table-body"] [data-slot="table-row"]:nth-child(3) { animation-delay: 0.06s; }
447
+ [data-slot="table-body"] [data-slot="table-row"]:nth-child(4) { animation-delay: 0.09s; }
448
+ [data-slot="table-body"] [data-slot="table-row"]:nth-child(5) { animation-delay: 0.12s; }
449
+ [data-slot="table-body"] [data-slot="table-row"]:nth-child(6) { animation-delay: 0.15s; }
450
+ [data-slot="table-body"] [data-slot="table-row"]:nth-child(7) { animation-delay: 0.18s; }
451
+ [data-slot="table-body"] [data-slot="table-row"]:nth-child(8) { animation-delay: 0.21s; }
452
+ [data-slot="table-body"] [data-slot="table-row"]:nth-child(9) { animation-delay: 0.24s; }
453
+ [data-slot="table-body"] [data-slot="table-row"]:nth-child(10) { animation-delay: 0.27s; }
454
+
455
+ /* ⑪ Accessibility: Respect reduced motion preferences */
456
+ @media (prefers-reduced-motion: reduce) {
457
+ *, *::before, *::after {
458
+ animation-duration: 0.01ms !important;
459
+ animation-iteration-count: 1 !important;
460
+ transition-duration: 0.01ms !important;
461
+ scroll-behavior: auto !important;
462
+ }
463
+ }
464
+
465
+ /* ⑫b Safe Area Inset — iPhone notch / Home Bar support */
466
+ @supports (padding-bottom: env(safe-area-inset-bottom)) {
467
+ main {
468
+ padding-bottom: env(safe-area-inset-bottom);
469
+ }
470
+ }
471
+
472
+ /* ⑫ Optimistic Delete — row fade-out visual feedback */
473
+ @keyframes svadmin-row-delete {
474
+ from {
475
+ opacity: 1;
476
+ transform: translateX(0);
477
+ }
478
+ to {
479
+ opacity: 0;
480
+ transform: translateX(20px);
481
+ height: 0;
482
+ padding: 0;
483
+ margin: 0;
484
+ }
485
+ }
486
+ .svadmin-deleting {
487
+ animation: svadmin-row-delete 0.3s ease-out forwards;
488
+ pointer-events: none;
489
+ }
490
+
491
+ /* ⑬ Popover & Dropdown — frosted glass backdrop + spring entrance */
492
+ [data-slot="popover-content"],
493
+ [data-slot="dropdown-menu-content"],
494
+ [data-slot="context-menu-content"] {
495
+ backdrop-filter: blur(8px);
496
+ -webkit-backdrop-filter: blur(8px);
497
+ }
498
+
499
+ /* ⑭ Tooltip spring entrance */
500
+ [data-slot="tooltip-content"] {
501
+ animation: svadmin-tooltip-enter 0.15s cubic-bezier(0.16, 1, 0.3, 1);
502
+ }
503
+ @keyframes svadmin-tooltip-enter {
504
+ from {
505
+ opacity: 0;
506
+ transform: scale(0.96);
507
+ }
508
+ to {
509
+ opacity: 1;
510
+ transform: scale(1);
511
+ }
512
+ }
513
+
514
+ /* ⑮ Smooth scrolling for content areas */
515
+ main {
516
+ scroll-behavior: smooth;
517
+ }
518
+
519
+ /* ⑯ RTL (Right-to-Left) Language Support */
520
+ [dir="rtl"] {
521
+ direction: rtl;
522
+ }
523
+ [dir="rtl"] aside {
524
+ left: auto;
525
+ right: 0;
526
+ }
527
+ /* Mirror sidebar margins for RTL */
528
+ [dir="rtl"] .sidebar-content-expanded {
529
+ margin-left: 0;
530
+ margin-right: 252px;
531
+ }
532
+ [dir="rtl"] .sidebar-content-collapsed {
533
+ margin-left: 0;
534
+ margin-right: 70px;
535
+ }
536
+
537
+ /* ── Sidebar Menu Item Styles ── */
538
+ .sidebar-menu-item {
539
+ position: relative;
540
+ cursor: pointer;
541
+ -webkit-tap-highlight-color: transparent;
542
+ }
543
+
544
+ .sidebar-menu-item-active {
545
+ position: relative;
546
+ }
547
+
548
+ .sidebar-scroll [data-radix-scroll-area-viewport] > div {
549
+ min-height: 100%;
550
+ display: flex;
551
+ flex-direction: column;
552
+ }
553
+
554
+ /* ⑰ Accessibility Minimum Touch Target — Apple HIG 44px minimum */
555
+ @media (max-width: 640px) and (pointer: coarse) {
556
+ [data-slot="button"] {
557
+ position: relative;
558
+ }
559
+ [data-slot="button"]::after {
560
+ content: '';
561
+ position: absolute;
562
+ top: 50%;
563
+ left: 50%;
564
+ transform: translate(-50%, -50%);
565
+ min-width: 44px;
566
+ min-height: 44px;
567
+ width: 100%;
568
+ height: 100%;
569
+ z-index: 1;
570
+ }
571
+ }
572
+
573
+ /* Tailwind CSS v4 — Map design tokens to utility classes */
574
+ @theme {
575
+ --color-background: var(--background);
576
+ --color-foreground: var(--foreground);
577
+ --color-card: var(--card);
578
+ --color-card-foreground: var(--card-foreground);
579
+ --color-popover: var(--popover);
580
+ --color-popover-foreground: var(--popover-foreground);
581
+ --color-primary: var(--primary);
582
+ --color-primary-foreground: var(--primary-foreground);
583
+ --color-secondary: var(--secondary);
584
+ --color-secondary-foreground: var(--secondary-foreground);
585
+ --color-muted: var(--muted);
586
+ --color-muted-foreground: var(--muted-foreground);
587
+ --color-accent: var(--accent);
588
+ --color-accent-foreground: var(--accent-foreground);
589
+ --color-destructive: var(--destructive);
590
+ --color-destructive-foreground: var(--destructive-foreground);
591
+ --color-border: var(--border);
592
+ --color-input: var(--input);
593
+ --color-ring: var(--ring);
594
+ --color-chart-1: var(--chart-1);
595
+ --color-chart-2: var(--chart-2);
596
+ --color-chart-3: var(--chart-3);
597
+ --color-chart-4: var(--chart-4);
598
+ --color-chart-5: var(--chart-5);
599
+ --color-sidebar: var(--sidebar);
600
+ --color-sidebar-foreground: var(--sidebar-foreground);
601
+ --color-sidebar-primary: var(--sidebar-primary);
602
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
603
+ --color-sidebar-accent: var(--sidebar-accent);
604
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
605
+ --color-sidebar-border: var(--sidebar-border);
606
+ --color-sidebar-ring: var(--sidebar-ring);
607
+ --color-success: var(--success);
608
+ --color-success-foreground: var(--success-foreground);
609
+ --color-warning: var(--warning);
610
+ --color-warning-foreground: var(--warning-foreground);
611
+ --color-info: var(--info);
612
+ --color-info-foreground: var(--info-foreground);
613
+ --radius-sm: calc(var(--radius) - 4px);
614
+ --radius-md: calc(var(--radius) - 2px);
615
+ --radius-lg: var(--radius);
616
+ --radius-xl: calc(var(--radius) + 4px);
617
+ }
618
+
619
+ /* ─── svadmin UI Components CSS ─────────────────────────────── */
620
+ /* These rules were moved from .svelte files to eliminate <style> tags */
621
+
622
+ /* MarkdownRenderer Styles */
623
+ .prose {
624
+ line-height: 1.6;
625
+ }
626
+ .prose p {
627
+ margin-top: 0.5em;
628
+ margin-bottom: 0.5em;
629
+ }
630
+
631
+ /* Streaming cursor effect */
632
+ .streaming > *:last-child::after {
633
+ content: '▋';
634
+ display: inline-block;
635
+ animation: svadmin-blink 1s step-start infinite;
636
+ margin-left: 2px;
637
+ vertical-align: baseline;
638
+ color: currentColor;
639
+ }
640
+
641
+ @keyframes svadmin-blink {
642
+ 50% { opacity: 0; }
643
+ }
644
+
645
+ /* Handle copied state for dynamically injected buttons */
646
+ .copy-btn[data-copied-id] {
647
+ color: #10b981; /* Tailwind emerald-500 */
648
+ }
649
+ .copy-btn[data-copied-id] svg {
650
+ /* Swap to Check icon */
651
+ content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="%2310b981" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>');
652
+ }
653
+
654
+ /* ChatDialog Styles */
655
+ .chat-markdown pre.chat-code-block {
656
+ background: var(--color-muted, hsl(var(--muted)));
657
+ border-radius: 0.5rem;
658
+ padding: 0.75rem;
659
+ margin: 0.5rem 0;
660
+ overflow-x: auto;
661
+ font-size: 0.75rem;
662
+ line-height: 1.5;
663
+ }
664
+ .chat-markdown code.chat-inline-code {
665
+ background: var(--color-muted, hsl(var(--muted)));
666
+ padding: 0.125rem 0.375rem;
667
+ border-radius: 0.25rem;
668
+ font-size: 0.8125em;
669
+ font-family: ui-monospace, monospace;
670
+ }
671
+ .chat-markdown strong {
672
+ font-weight: 600;
673
+ }
674
+
675
+ /* ─── High-Contrast Flat Layout Preset (clean-flat) ─── */
676
+ .layout-clean-flat {
677
+ --radius: 0.75rem;
678
+ }
679
+
680
+ /* Base card flat background overrides */
681
+ .layout-clean-flat .bg-card,
682
+ .layout-clean-flat [data-slot="card"] {
683
+ background: #ffffff !important;
684
+ border: 1px solid #f1f3f7 !important;
685
+ box-shadow: none !important;
686
+ border-radius: 0.5rem !important;
687
+ }
688
+ .dark.layout-clean-flat .bg-card,
689
+ .dark .layout-clean-flat .bg-card,
690
+ .dark.layout-clean-flat [data-slot="card"],
691
+ .dark .layout-clean-flat [data-slot="card"] {
692
+ background: #1e1e2d !important;
693
+ border: 1px solid #2b2b40 !important;
694
+ box-shadow: none !important;
695
+ }
696
+
697
+ /* Crisp table header styles */
698
+ .layout-clean-flat th {
699
+ background-color: #f9f9f9 !important;
700
+ border-bottom: 1px solid #f1f3f7 !important;
701
+ color: #181c32 !important;
702
+ font-weight: 600 !important;
703
+ font-size: 0.75rem !important;
704
+ text-transform: uppercase !important;
705
+ letter-spacing: 0.05em !important;
706
+ }
707
+ .dark.layout-clean-flat th,
708
+ .dark .layout-clean-flat th {
709
+ background-color: #1a1a27 !important;
710
+ border-bottom: 1px solid #2b2b40 !important;
711
+ color: #a1a5b7 !important;
712
+ }
713
+
714
+ /* Crisp table cell styles */
715
+ .layout-clean-flat td {
716
+ border-bottom: 1px solid #f1f3f7 !important;
717
+ color: #5e6278 !important;
718
+ font-size: 0.8125rem !important;
719
+ }
720
+ .dark.layout-clean-flat td,
721
+ .dark .layout-clean-flat td {
722
+ border-bottom: 1px solid rgba(43, 43, 64, 0.6) !important;
723
+ color: #a1a5b7 !important;
724
+ }
725
+
726
+ /* Table row hover state */
727
+ .layout-clean-flat tr:hover td {
728
+ background-color: #f9f9f9 !important;
729
+ }
730
+ .dark.layout-clean-flat tr:hover td,
731
+ .dark .layout-clean-flat tr:hover td {
732
+ background-color: rgba(43, 43, 64, 0.3) !important;
733
+ }
734
+
735
+ /* Sidebar layout adjustments for clean-flat theme */
736
+ .layout-clean-flat aside {
737
+ background: #fafbfc !important;
738
+ color: #181c32 !important;
739
+ border-right-color: #f1f3f7 !important;
740
+ box-shadow: none !important;
741
+ }
742
+ .dark.layout-clean-flat aside,
743
+ .dark .layout-clean-flat aside {
744
+ background: #1e1e2d !important;
745
+ color: #a1a5b7 !important;
746
+ border-right-color: #2b2b40 !important;
747
+ }
748
+
749
+ .layout-clean-flat .sidebar-menu-item {
750
+ color: #5e6278 !important;
751
+ border-radius: 0.5rem !important;
752
+ transition: color 0.15s ease, background-color 0.15s ease !important;
753
+ box-shadow: none !important;
754
+ }
755
+
756
+ .layout-clean-flat .sidebar-menu-item:hover {
757
+ background: transparent !important;
758
+ color: #181c32 !important;
759
+ }
760
+ .dark.layout-clean-flat .sidebar-menu-item:hover,
761
+ .dark .layout-clean-flat .sidebar-menu-item:hover {
762
+ background: transparent !important;
763
+ color: #f1f6ff !important;
764
+ }
765
+
766
+ .layout-clean-flat .sidebar-menu-item-active {
767
+ background: transparent !important;
768
+ color: #3e97ff !important;
769
+ font-weight: 600 !important;
770
+ box-shadow: none !important;
771
+ }
772
+ .dark.layout-clean-flat .sidebar-menu-item-active,
773
+ .dark .layout-clean-flat .sidebar-menu-item-active {
774
+ background: transparent !important;
775
+ color: #3e97ff !important;
776
+ }
777
+
778
+ .layout-clean-flat .sidebar-menu-item-active svg {
779
+ color: #3e97ff !important;
780
+ opacity: 1 !important;
781
+ }
782
+
783
+ /* Button & input styles override under clean-flat layout */
784
+ .layout-clean-flat [data-slot="button"][data-variant="default"] {
785
+ background: #3e97ff !important;
786
+ color: #ffffff !important;
787
+ box-shadow: none !important;
788
+ border-radius: 8px !important;
789
+ font-weight: 600 !important;
790
+ transition: all 0.15s ease !important;
791
+ }
792
+ .layout-clean-flat [data-slot="button"][data-variant="default"]:hover {
793
+ background: #1880ff !important;
794
+ }
795
+
796
+ .layout-clean-flat [data-slot="button"][data-variant="outline"] {
797
+ background: #ffffff !important;
798
+ color: #5e6278 !important;
799
+ border: 1px solid #e1e3ea !important;
800
+ box-shadow: none !important;
801
+ border-radius: 8px !important;
802
+ font-weight: 600 !important;
803
+ transition: all 0.15s ease !important;
804
+ }
805
+ .layout-clean-flat [data-slot="button"][data-variant="outline"]:hover {
806
+ background: #f5f8fa !important;
807
+ border-color: #cbd5e1 !important;
808
+ color: #181c32 !important;
809
+ }
810
+ .dark.layout-clean-flat [data-slot="button"][data-variant="outline"],
811
+ .dark .layout-clean-flat [data-slot="button"][data-variant="outline"] {
812
+ background: #1e1e2d !important;
813
+ color: #a1a5b7 !important;
814
+ border-color: #2b2b40 !important;
815
+ }
816
+ .dark.layout-clean-flat [data-slot="button"][data-variant="outline"]:hover,
817
+ .dark .layout-clean-flat [data-slot="button"][data-variant="outline"]:hover {
818
+ background: #2b2b40 !important;
819
+ color: #ffffff !important;
820
+ }
821
+
822
+ .layout-clean-flat [data-slot="input"] {
823
+ border: 1px solid #e1e3ea !important;
824
+ border-radius: 8px !important;
825
+ box-shadow: none !important;
826
+ outline: none !important;
827
+ transition: all 0.15s ease !important;
828
+ }
829
+ .layout-clean-flat [data-slot="input"]:focus {
830
+ border-color: #3e97ff !important;
831
+ box-shadow: 0 0 0 4px rgba(62,151,255,0.1) !important;
832
+ }
833
+ .dark.layout-clean-flat [data-slot="input"],
834
+ .dark .layout-clean-flat [data-slot="input"] {
835
+ border-color: #2b2b40 !important;
836
+ background: #151521 !important;
837
+ color: #f1f6ff !important;
838
+ }
839
+ .dark.layout-clean-flat [data-slot="input"]:focus,
840
+ .dark .layout-clean-flat [data-slot="input"]:focus {
841
+ border-color: #3e97ff !important;
842
+ }
843
+
844
+ /* svadmin flat list and edit surfaces */
845
+ [data-svadmin-list-header],
846
+ [data-svadmin-table-toolbar],
847
+ [data-svadmin-table-card],
848
+ [data-svadmin-form-header],
849
+ [data-svadmin-form-card],
850
+ [data-svadmin-form-actions] {
851
+ box-shadow: none !important;
852
+ }
853
+
854
+ .layout-clean-flat [data-svadmin-list-header],
855
+ .layout-clean-flat [data-svadmin-table-toolbar],
856
+ .layout-clean-flat [data-svadmin-table-card],
857
+ .layout-clean-flat [data-svadmin-form-header],
858
+ .layout-clean-flat [data-svadmin-form-card],
859
+ .layout-clean-flat [data-svadmin-form-actions] {
860
+ border-color: #f1f3f7 !important;
861
+ background: #ffffff !important;
862
+ border-radius: 0.5rem !important;
863
+ }
864
+
865
+ .layout-clean-flat [data-svadmin-list-actions] [data-slot="button"],
866
+ .layout-clean-flat [data-svadmin-table-toolbar] [data-slot="button"],
867
+ .layout-clean-flat [data-svadmin-form-actions] [data-slot="button"] {
868
+ height: 2.625rem !important;
869
+ border-radius: 0.5rem !important;
870
+ }
871
+
872
+ .layout-clean-flat [data-svadmin-table-toolbar] {
873
+ padding: 0.875rem !important;
874
+ }
875
+
876
+ .layout-clean-flat [data-svadmin-table-toolbar] [data-slot="input"] {
877
+ height: 2.75rem !important;
878
+ border-radius: 0.5rem !important;
879
+ background: #f9f9f9 !important;
880
+ }
881
+
882
+ [data-svadmin-datatable] {
883
+ border-collapse: separate !important;
884
+ border-spacing: 0 !important;
885
+ }
886
+
887
+ [data-svadmin-table-head] [data-slot="table-head"] {
888
+ height: 3.25rem !important;
889
+ border-bottom: 1px solid rgba(225, 227, 234, 0.78) !important;
890
+ background: #f9f9f9 !important;
891
+ color: #a1a5b7 !important;
892
+ font-size: 0.6875rem !important;
893
+ font-weight: 700 !important;
894
+ letter-spacing: 0.08em !important;
895
+ text-transform: uppercase !important;
896
+ }
897
+
898
+ [data-svadmin-table-row] {
899
+ border-bottom-color: rgba(241, 243, 247, 0.95) !important;
900
+ }
901
+
902
+ [data-svadmin-table-row] [data-slot="table-cell"] {
903
+ height: 3.625rem !important;
904
+ color: #5e6278 !important;
905
+ font-size: 0.8125rem !important;
906
+ }
907
+
908
+ [data-svadmin-table-row]:hover [data-slot="table-cell"] {
909
+ background: #fbfcfd !important;
910
+ }
911
+
912
+ [data-svadmin-pagination] {
913
+ border-radius: 0.5rem;
914
+ padding: 0.35rem 0.15rem;
915
+ }
916
+
917
+ [data-svadmin-form-content] {
918
+ padding-top: 0 !important;
919
+ padding-bottom: 0 !important;
920
+ }
921
+
922
+ [data-svadmin-form-row] {
923
+ border-bottom: 1px solid rgba(241, 243, 247, 0.95);
924
+ padding: 1.35rem 0;
925
+ }
926
+
927
+ [data-svadmin-form-row]:last-child {
928
+ border-bottom: 0;
929
+ }
930
+
931
+ [data-svadmin-field-label] {
932
+ color: #3f4254 !important;
933
+ font-weight: 600 !important;
934
+ }
935
+
936
+ [data-svadmin-form-settings] [data-slot="input"],
937
+ [data-svadmin-form-settings] textarea,
938
+ [data-svadmin-form-settings] [data-slot="select-trigger"] {
939
+ min-height: 2.75rem !important;
940
+ border-radius: 0.5rem !important;
941
+ background: #f9f9f9 !important;
942
+ }
943
+
944
+ [data-svadmin-form-actions] {
945
+ width: fit-content;
946
+ max-width: 100%;
947
+ }
948
+
949
+ @media (min-width: 768px) {
950
+ [data-svadmin-form-settings] [data-svadmin-field] {
951
+ display: grid !important;
952
+ grid-template-columns: minmax(10rem, 14rem) minmax(0, 1fr) !important;
953
+ align-items: start !important;
954
+ column-gap: 2rem !important;
955
+ row-gap: 0.35rem !important;
956
+ }
957
+
958
+ [data-svadmin-form-settings] [data-svadmin-field] > [data-svadmin-field-label] {
959
+ padding-top: 0.8rem !important;
960
+ }
961
+
962
+ [data-svadmin-form-settings] [data-svadmin-field] > :not([data-svadmin-field-label]) {
963
+ grid-column: 2 !important;
964
+ }
965
+ }
966
+
967
+ .dark [data-svadmin-table-head] [data-slot="table-head"] {
968
+ background: #1a1a27 !important;
969
+ border-bottom-color: #2b2b40 !important;
970
+ color: #a1a5b7 !important;
971
+ }
972
+
973
+ .dark [data-svadmin-table-row] {
974
+ border-bottom-color: rgba(43, 43, 64, 0.82) !important;
975
+ }
976
+
977
+ .dark [data-svadmin-table-row] [data-slot="table-cell"] {
978
+ color: #a1a5b7 !important;
979
+ }
980
+
981
+ .dark [data-svadmin-table-row]:hover [data-slot="table-cell"] {
982
+ background: rgba(43, 43, 64, 0.32) !important;
983
+ }
984
+
985
+ .dark [data-svadmin-form-row] {
986
+ border-bottom-color: rgba(43, 43, 64, 0.82);
987
+ }
988
+
989
+ /* ─── Flat workspace redesign pass: non-sidebar pages ─── */
990
+ .layout-clean-flat main {
991
+ background:
992
+ linear-gradient(180deg, color-mix(in oklch, var(--background) 86%, white) 0%, var(--background) 34rem),
993
+ var(--background) !important;
994
+ }
995
+
996
+ .layout-clean-flat main > div {
997
+ min-width: 0 !important;
998
+ }
999
+
1000
+ .layout-clean-flat [data-svadmin-page-header],
1001
+ .layout-clean-flat [data-svadmin-list-header],
1002
+ .layout-clean-flat [data-svadmin-form-header] {
1003
+ background: transparent !important;
1004
+ border-radius: 0 !important;
1005
+ border-left: 0 !important;
1006
+ border-right: 0 !important;
1007
+ border-top: 0 !important;
1008
+ padding-left: 0 !important;
1009
+ padding-right: 0 !important;
1010
+ }
1011
+
1012
+ .layout-clean-flat [data-svadmin-page-header] h1,
1013
+ .layout-clean-flat [data-svadmin-list-header] h1,
1014
+ .layout-clean-flat [data-svadmin-form-header] h1,
1015
+ .layout-clean-flat [data-svadmin-resource-operations] h1 {
1016
+ line-height: 1.12 !important;
1017
+ letter-spacing: 0 !important;
1018
+ }
1019
+
1020
+ .layout-clean-flat [data-slot="card"] {
1021
+ border-color: color-mix(in oklch, var(--border) 82%, transparent) !important;
1022
+ border-radius: 0.5rem !important;
1023
+ box-shadow: none !important;
1024
+ min-width: 0 !important;
1025
+ }
1026
+
1027
+ .layout-clean-flat main section,
1028
+ .layout-clean-flat main [class*="grid"],
1029
+ .layout-clean-flat main [class*="flex"],
1030
+ .layout-clean-flat main [data-slot="card-content"] {
1031
+ min-width: 0;
1032
+ }
1033
+
1034
+ .layout-clean-flat main h1,
1035
+ .layout-clean-flat main h2,
1036
+ .layout-clean-flat main h3,
1037
+ .layout-clean-flat main p,
1038
+ .layout-clean-flat main [data-slot="badge"] {
1039
+ max-width: 100%;
1040
+ }
1041
+
1042
+ .layout-clean-flat main h1,
1043
+ .layout-clean-flat main h2,
1044
+ .layout-clean-flat main h3,
1045
+ .layout-clean-flat main [data-slot="card-title"] {
1046
+ overflow-wrap: anywhere;
1047
+ }
1048
+
1049
+ .layout-clean-flat main p,
1050
+ .layout-clean-flat main [data-slot="card-description"] {
1051
+ overflow-wrap: break-word;
1052
+ }
1053
+
1054
+ .layout-clean-flat main > div[class*="space-y"] > section:first-child {
1055
+ border-radius: 0 !important;
1056
+ background: transparent !important;
1057
+ }
1058
+
1059
+ .layout-clean-flat main > div[class*="space-y"] > section:first-child [data-slot="card"],
1060
+ .layout-clean-flat main > div[class*="space-y"] > section:first-child + [class*="grid"] [data-slot="card"],
1061
+ .layout-clean-flat main [data-svadmin-ops-hero] [data-slot="card"] {
1062
+ background: transparent !important;
1063
+ border-color: color-mix(in oklch, var(--border) 72%, transparent) !important;
1064
+ box-shadow: none !important;
1065
+ }
1066
+
1067
+ .layout-clean-flat main > div[class*="space-y"] > section:first-child [data-slot="card"]:has([data-slot="card"]),
1068
+ .layout-clean-flat main [data-slot="card"]:has(> [data-slot="card-content"] [data-svadmin-table-card]) {
1069
+ border: 0 !important;
1070
+ background: transparent !important;
1071
+ padding: 0 !important;
1072
+ }
1073
+
1074
+ .layout-clean-flat main [data-slot="card"] [data-slot="card"] {
1075
+ background: color-mix(in oklch, var(--card) 88%, var(--background)) !important;
1076
+ border-color: color-mix(in oklch, var(--border) 70%, transparent) !important;
1077
+ }
1078
+
1079
+ .layout-clean-flat main [data-slot="card-content"] > .flex,
1080
+ .layout-clean-flat main [data-slot="card-content"] > .grid {
1081
+ min-width: 0;
1082
+ }
1083
+
1084
+ .layout-clean-flat main [data-slot="card-content"] span[class*="h-10"][class*="w-10"],
1085
+ .layout-clean-flat main [data-slot="card-content"] span[class*="h-11"][class*="w-11"],
1086
+ .layout-clean-flat main [data-slot="card-content"] span[class*="h-12"][class*="w-12"] {
1087
+ flex-shrink: 0;
1088
+ }
1089
+
1090
+ .layout-clean-flat main [data-slot="card-content"] [class*="text-2xl"],
1091
+ .layout-clean-flat main [data-slot="card-content"] [class*="text-3xl"] {
1092
+ line-height: 1.12;
1093
+ }
1094
+
1095
+ .layout-clean-flat main [data-slot="badge"] {
1096
+ overflow: hidden;
1097
+ text-overflow: ellipsis;
1098
+ white-space: nowrap;
1099
+ }
1100
+
1101
+ .layout-clean-flat main [data-slot="tabs-list"] {
1102
+ min-width: 0;
1103
+ border-radius: 0.5rem !important;
1104
+ }
1105
+
1106
+ .layout-clean-flat main [data-slot="tabs-trigger"] {
1107
+ min-width: 0;
1108
+ overflow: hidden;
1109
+ text-overflow: ellipsis;
1110
+ white-space: nowrap;
1111
+ }
1112
+
1113
+ .layout-clean-flat [data-svadmin-ops-hero] {
1114
+ align-items: stretch;
1115
+ }
1116
+
1117
+ .layout-clean-flat [data-svadmin-metric-card],
1118
+ .layout-clean-flat [data-svadmin-panel-card] {
1119
+ background: color-mix(in oklch, var(--card) 92%, var(--background)) !important;
1120
+ }
1121
+
1122
+ .layout-clean-flat [data-svadmin-metric-card] [data-slot="card-content"] {
1123
+ min-height: 8.25rem;
1124
+ }
1125
+
1126
+ .layout-clean-flat [data-svadmin-panel-card] [data-slot="card-content"] > * + * {
1127
+ border-top: 1px solid color-mix(in oklch, var(--border) 78%, transparent);
1128
+ }
1129
+
1130
+ .layout-clean-flat [data-svadmin-table-card],
1131
+ .layout-clean-flat [data-svadmin-show-card],
1132
+ .layout-clean-flat [data-svadmin-form-card] {
1133
+ border-left: 0 !important;
1134
+ border-right: 0 !important;
1135
+ border-radius: 0 !important;
1136
+ min-width: 0 !important;
1137
+ max-width: 100% !important;
1138
+ }
1139
+
1140
+ .layout-clean-flat [data-svadmin-table-toolbar] {
1141
+ background: transparent !important;
1142
+ border-left: 0 !important;
1143
+ border-right: 0 !important;
1144
+ border-top: 0 !important;
1145
+ border-radius: 0 !important;
1146
+ padding-left: 0 !important;
1147
+ padding-right: 0 !important;
1148
+ }
1149
+
1150
+ .layout-clean-flat [data-svadmin-table-scroll] {
1151
+ min-width: 0 !important;
1152
+ max-width: 100% !important;
1153
+ scrollbar-gutter: stable both-edges;
1154
+ }
1155
+
1156
+ .layout-clean-flat [data-svadmin-datatable] {
1157
+ min-width: 0 !important;
1158
+ table-layout: fixed !important;
1159
+ }
1160
+
1161
+ @media (min-width: 1024px) {
1162
+ .layout-clean-flat [data-svadmin-datatable] {
1163
+ min-width: 760px !important;
1164
+ }
1165
+ }
1166
+
1167
+ .layout-clean-flat [data-svadmin-table-head] [data-slot="table-head"],
1168
+ .layout-clean-flat [data-svadmin-table-row] [data-slot="table-cell"] {
1169
+ overflow: hidden !important;
1170
+ text-overflow: ellipsis !important;
1171
+ white-space: nowrap !important;
1172
+ }
1173
+
1174
+ .layout-clean-flat [data-svadmin-list-actions] [data-slot="button"],
1175
+ .layout-clean-flat [data-svadmin-table-toolbar] [data-slot="button"] {
1176
+ flex-shrink: 0 !important;
1177
+ }
1178
+
1179
+ .layout-clean-flat [data-svadmin-pagination] {
1180
+ border-top: 1px solid color-mix(in oklch, var(--border) 82%, transparent);
1181
+ border-radius: 0 !important;
1182
+ padding-top: 0.75rem !important;
1183
+ }
1184
+
1185
+ .layout-clean-flat [data-svadmin-pagination] [data-slot="pagination-content"] {
1186
+ flex-wrap: wrap !important;
1187
+ justify-content: center !important;
1188
+ }
1189
+
1190
+ .layout-clean-flat [data-svadmin-form-actions] {
1191
+ border-radius: 0.5rem !important;
1192
+ box-shadow: 0 12px 28px rgba(15, 23, 42, 0.08) !important;
1193
+ }
1194
+
1195
+ @media (max-width: 767px) {
1196
+ .layout-clean-flat main {
1197
+ padding-left: 1rem !important;
1198
+ padding-right: 1rem !important;
1199
+ }
1200
+
1201
+ .layout-clean-flat main h1 {
1202
+ font-size: clamp(1.75rem, 1.55rem + 1vw, 2.125rem) !important;
1203
+ }
1204
+
1205
+ .layout-clean-flat main [data-slot="card"] {
1206
+ border-left: 1px solid color-mix(in oklch, var(--border) 72%, transparent) !important;
1207
+ border-right: 1px solid color-mix(in oklch, var(--border) 72%, transparent) !important;
1208
+ border-radius: 0.5rem !important;
1209
+ }
1210
+
1211
+ .layout-clean-flat main [data-slot="card-header"],
1212
+ .layout-clean-flat main [data-slot="card-content"],
1213
+ .layout-clean-flat main [data-slot="card-footer"] {
1214
+ padding-left: 1rem !important;
1215
+ padding-right: 1rem !important;
1216
+ }
1217
+
1218
+ .layout-clean-flat main > div[class*="space-y"] > section:first-child {
1219
+ padding-bottom: 1rem !important;
1220
+ }
1221
+
1222
+ .layout-clean-flat [data-svadmin-list-actions] [data-slot="button"],
1223
+ .layout-clean-flat [data-svadmin-table-toolbar] [data-slot="button"],
1224
+ .layout-clean-flat [data-svadmin-form-actions] [data-slot="button"] {
1225
+ min-width: 0 !important;
1226
+ max-width: 100% !important;
1227
+ }
1228
+
1229
+ .layout-clean-flat [data-svadmin-table-toolbar] [data-slot="button"] {
1230
+ width: fit-content !important;
1231
+ }
1232
+
1233
+ .layout-clean-flat [data-svadmin-form-actions] {
1234
+ width: 100% !important;
1235
+ }
1236
+
1237
+ .layout-clean-flat [data-svadmin-table-card],
1238
+ .layout-clean-flat [data-svadmin-show-card],
1239
+ .layout-clean-flat [data-svadmin-form-card] {
1240
+ border-left: 1px solid color-mix(in oklch, var(--border) 72%, transparent) !important;
1241
+ border-right: 1px solid color-mix(in oklch, var(--border) 72%, transparent) !important;
1242
+ border-radius: 0.5rem !important;
1243
+ }
1244
+
1245
+ .layout-clean-flat [data-svadmin-table-card] [data-slot="card-header"],
1246
+ .layout-clean-flat [data-svadmin-table-card] [data-slot="card-content"],
1247
+ .layout-clean-flat [data-svadmin-show-card] [data-slot="card-header"],
1248
+ .layout-clean-flat [data-svadmin-show-card] [data-slot="card-content"],
1249
+ .layout-clean-flat [data-svadmin-form-card] [data-slot="card-header"],
1250
+ .layout-clean-flat [data-svadmin-form-card] [data-slot="card-content"] {
1251
+ padding-left: 1rem !important;
1252
+ padding-right: 1rem !important;
1253
+ }
1254
+ }
1255
+
1256
+ @media (min-width: 768px) and (max-width: 1023px) {
1257
+ .layout-clean-flat main [class*="md:grid-cols"],
1258
+ .layout-clean-flat main [class*="lg:grid-cols"],
1259
+ .layout-clean-flat main [class*="xl:grid-cols"] {
1260
+ grid-template-columns: minmax(0, 1fr) !important;
1261
+ }
1262
+
1263
+ .layout-clean-flat main [class*="lg:flex-row"],
1264
+ .layout-clean-flat main [class*="xl:flex-row"] {
1265
+ flex-direction: column !important;
1266
+ align-items: stretch !important;
1267
+ }
1268
+ }
1269
+
1270
+ /* svadmin content pages: profile/account/network/auth/error surfaces */
1271
+ .layout-clean-flat [data-svadmin-content-page] {
1272
+ --svadmin-content-border: color-mix(in oklch, var(--border) 78%, transparent);
1273
+ --svadmin-content-muted: color-mix(in oklch, var(--muted) 58%, var(--background));
1274
+ max-width: 1180px;
1275
+ margin-inline: auto;
1276
+ }
1277
+
1278
+ .layout-clean-flat [data-svadmin-content-page] > div:first-child:not([data-slot="card-content"]),
1279
+ .layout-clean-flat [data-svadmin-content-page] > .flex:first-child,
1280
+ .layout-clean-flat [data-svadmin-content-page] > .relative:first-child {
1281
+ min-width: 0;
1282
+ }
1283
+
1284
+ .layout-clean-flat [data-svadmin-content-page] > div:first-child:has(h2),
1285
+ .layout-clean-flat [data-svadmin-content-page] > .flex:first-child:has(h2) {
1286
+ border-bottom: 1px solid var(--svadmin-content-border);
1287
+ padding-bottom: 1rem;
1288
+ }
1289
+
1290
+ .layout-clean-flat [data-svadmin-content-page] h1,
1291
+ .layout-clean-flat [data-svadmin-content-page] h2 {
1292
+ line-height: 1.15 !important;
1293
+ letter-spacing: 0 !important;
1294
+ }
1295
+
1296
+ .layout-clean-flat [data-svadmin-content-page] [data-slot="card"] {
1297
+ border-color: var(--svadmin-content-border) !important;
1298
+ border-radius: 0.625rem !important;
1299
+ box-shadow: none !important;
1300
+ background: var(--card) !important;
1301
+ }
1302
+
1303
+ .layout-clean-flat [data-svadmin-content-page] [data-slot="card"]:hover {
1304
+ border-color: color-mix(in oklch, var(--border) 60%, var(--primary)) !important;
1305
+ }
1306
+
1307
+ .layout-clean-flat [data-svadmin-content-page] [class*="bg-gradient-to-r"] {
1308
+ background: linear-gradient(90deg, var(--svadmin-content-muted), color-mix(in oklch, var(--primary) 8%, var(--background))) !important;
1309
+ }
1310
+
1311
+ .layout-clean-flat [data-svadmin-content-page] [class*="shadow"],
1312
+ .layout-clean-flat [data-svadmin-content-page] [class*="ring-1"] {
1313
+ box-shadow: none !important;
1314
+ }
1315
+
1316
+ .layout-clean-flat [data-svadmin-content-page] [data-slot="tabs-list"] {
1317
+ background: transparent !important;
1318
+ border-radius: 0 !important;
1319
+ border-bottom: 1px solid var(--svadmin-content-border);
1320
+ padding: 0 !important;
1321
+ }
1322
+
1323
+ .layout-clean-flat [data-svadmin-content-page] [data-slot="tabs-trigger"] {
1324
+ border-radius: 0 !important;
1325
+ min-height: 2.5rem;
1326
+ }
1327
+
1328
+ .layout-clean-flat [data-svadmin-content-page] table {
1329
+ min-width: 0;
1330
+ }
1331
+
1332
+ .layout-clean-flat [data-svadmin-content-page] th,
1333
+ .layout-clean-flat [data-svadmin-content-page] td {
1334
+ overflow-wrap: break-word;
1335
+ }
1336
+
1337
+ .layout-clean-flat [data-svadmin-content-page="error"] [data-slot="card"],
1338
+ .layout-clean-flat [data-svadmin-content-page="auth-2fa"] [data-slot="card"] {
1339
+ max-width: 32rem;
1340
+ width: 100%;
1341
+ }
1342
+
1343
+ @media (max-width: 767px) {
1344
+ .layout-clean-flat [data-svadmin-content-page] {
1345
+ max-width: 100%;
1346
+ }
1347
+
1348
+ .layout-clean-flat [data-svadmin-content-page] > .flex:first-child:has(h2) {
1349
+ flex-direction: column;
1350
+ align-items: stretch;
1351
+ }
1352
+
1353
+ .layout-clean-flat [data-svadmin-content-page] [data-slot="card"] {
1354
+ border-left: 1px solid var(--svadmin-content-border) !important;
1355
+ border-right: 1px solid var(--svadmin-content-border) !important;
1356
+ border-radius: 0.5rem !important;
1357
+ }
1358
+
1359
+ .layout-clean-flat [data-svadmin-content-page] [data-slot="card-content"],
1360
+ .layout-clean-flat [data-svadmin-content-page] [data-slot="card-header"] {
1361
+ padding-left: 1rem !important;
1362
+ padding-right: 1rem !important;
1363
+ }
1364
+
1365
+ .layout-clean-flat [data-svadmin-content-page] [class*="grid-cols-3"] {
1366
+ grid-template-columns: minmax(0, 1fr) !important;
1367
+ }
1368
+
1369
+ .layout-clean-flat [data-svadmin-content-page="auth-2fa"] [data-slot="card-content"],
1370
+ .layout-clean-flat [data-svadmin-content-page="error"] [data-slot="card-content"] {
1371
+ padding-left: 1rem !important;
1372
+ padding-right: 1rem !important;
1373
+ }
1374
+ }