decantr 0.9.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 (382) hide show
  1. package/AGENTS.md +868 -0
  2. package/CHANGELOG.md +255 -0
  3. package/CLAUDE.md +178 -0
  4. package/LICENSE +21 -0
  5. package/README.md +229 -0
  6. package/cli/art.js +127 -0
  7. package/cli/commands/a11y.js +61 -0
  8. package/cli/commands/audit.js +225 -0
  9. package/cli/commands/build.js +38 -0
  10. package/cli/commands/dev.js +18 -0
  11. package/cli/commands/doctor.js +197 -0
  12. package/cli/commands/figma-sync.js +48 -0
  13. package/cli/commands/figma-tokens.js +55 -0
  14. package/cli/commands/generate.js +26 -0
  15. package/cli/commands/init.js +116 -0
  16. package/cli/commands/lint.js +209 -0
  17. package/cli/commands/mcp.js +530 -0
  18. package/cli/commands/migrate.js +175 -0
  19. package/cli/commands/test.js +38 -0
  20. package/cli/commands/validate.js +354 -0
  21. package/cli/index.js +113 -0
  22. package/package.json +95 -0
  23. package/reference/atoms.md +517 -0
  24. package/reference/behaviors.md +384 -0
  25. package/reference/build-tooling.md +275 -0
  26. package/reference/color-guidelines.md +965 -0
  27. package/reference/component-lifecycle.md +137 -0
  28. package/reference/compound-spacing.md +95 -0
  29. package/reference/decantation-process.md +499 -0
  30. package/reference/dev-server-routes.md +93 -0
  31. package/reference/form-system.md +253 -0
  32. package/reference/i18n.md +336 -0
  33. package/reference/icons.md +576 -0
  34. package/reference/llm-primer.md +953 -0
  35. package/reference/plugins.md +252 -0
  36. package/reference/registry-consumption.md +76 -0
  37. package/reference/router.md +217 -0
  38. package/reference/shells.md +116 -0
  39. package/reference/spatial-guidelines.md +541 -0
  40. package/reference/ssr.md +234 -0
  41. package/reference/state-data.md +215 -0
  42. package/reference/state-patterns.md +166 -0
  43. package/reference/state.md +194 -0
  44. package/reference/style-system.md +110 -0
  45. package/reference/tokens.md +460 -0
  46. package/src/app.js +19 -0
  47. package/src/chart/_animate.js +266 -0
  48. package/src/chart/_base.js +109 -0
  49. package/src/chart/_data.js +209 -0
  50. package/src/chart/_format.js +106 -0
  51. package/src/chart/_interact.js +364 -0
  52. package/src/chart/_palette.js +105 -0
  53. package/src/chart/_renderer.js +52 -0
  54. package/src/chart/_scene.js +262 -0
  55. package/src/chart/_shared.js +371 -0
  56. package/src/chart/index.js +637 -0
  57. package/src/chart/layouts/_layout-base.js +328 -0
  58. package/src/chart/layouts/cartesian.js +148 -0
  59. package/src/chart/layouts/hierarchy.js +562 -0
  60. package/src/chart/layouts/polar.js +101 -0
  61. package/src/chart/renderers/canvas.js +179 -0
  62. package/src/chart/renderers/svg.js +256 -0
  63. package/src/chart/renderers/webgpu.js +715 -0
  64. package/src/chart/types/_type-base.js +26 -0
  65. package/src/chart/types/area.js +134 -0
  66. package/src/chart/types/bar.js +173 -0
  67. package/src/chart/types/box-plot.js +125 -0
  68. package/src/chart/types/bubble.js +63 -0
  69. package/src/chart/types/candlestick.js +115 -0
  70. package/src/chart/types/chord.js +85 -0
  71. package/src/chart/types/combination.js +108 -0
  72. package/src/chart/types/funnel.js +68 -0
  73. package/src/chart/types/gauge.js +163 -0
  74. package/src/chart/types/heatmap.js +98 -0
  75. package/src/chart/types/histogram.js +71 -0
  76. package/src/chart/types/line.js +111 -0
  77. package/src/chart/types/org-chart.js +93 -0
  78. package/src/chart/types/pie.js +81 -0
  79. package/src/chart/types/radar.js +96 -0
  80. package/src/chart/types/radial.js +68 -0
  81. package/src/chart/types/range-area.js +55 -0
  82. package/src/chart/types/range-bar.js +61 -0
  83. package/src/chart/types/sankey.js +73 -0
  84. package/src/chart/types/scatter.js +66 -0
  85. package/src/chart/types/sparkline.js +81 -0
  86. package/src/chart/types/sunburst.js +69 -0
  87. package/src/chart/types/swimlane.js +88 -0
  88. package/src/chart/types/treemap.js +62 -0
  89. package/src/chart/types/waterfall.js +100 -0
  90. package/src/components/_base.js +1658 -0
  91. package/src/components/_behaviors.js +1140 -0
  92. package/src/components/_primitives.js +534 -0
  93. package/src/components/_qr-encoder.js +539 -0
  94. package/src/components/accordion.js +207 -0
  95. package/src/components/affix.js +62 -0
  96. package/src/components/alert-dialog.js +75 -0
  97. package/src/components/alert.js +47 -0
  98. package/src/components/aspect-ratio.js +24 -0
  99. package/src/components/avatar-group.js +55 -0
  100. package/src/components/avatar.js +38 -0
  101. package/src/components/back-top.js +75 -0
  102. package/src/components/badge.js +74 -0
  103. package/src/components/banner.js +68 -0
  104. package/src/components/breadcrumb.js +162 -0
  105. package/src/components/button.js +115 -0
  106. package/src/components/calendar.js +131 -0
  107. package/src/components/card.js +192 -0
  108. package/src/components/carousel.js +98 -0
  109. package/src/components/cascader.js +261 -0
  110. package/src/components/checkbox.js +80 -0
  111. package/src/components/chip.js +81 -0
  112. package/src/components/code-block.js +82 -0
  113. package/src/components/collapsible.js +50 -0
  114. package/src/components/color-palette.js +438 -0
  115. package/src/components/color-picker.js +314 -0
  116. package/src/components/combobox.js +181 -0
  117. package/src/components/command.js +174 -0
  118. package/src/components/comment.js +206 -0
  119. package/src/components/context-menu.js +76 -0
  120. package/src/components/data-table.js +724 -0
  121. package/src/components/date-picker.js +217 -0
  122. package/src/components/date-range-picker.js +244 -0
  123. package/src/components/datetime-picker.js +271 -0
  124. package/src/components/descriptions.js +68 -0
  125. package/src/components/drawer.js +179 -0
  126. package/src/components/dropdown.js +88 -0
  127. package/src/components/empty.js +41 -0
  128. package/src/components/float-button.js +90 -0
  129. package/src/components/form.js +106 -0
  130. package/src/components/hover-card.js +49 -0
  131. package/src/components/icon.js +87 -0
  132. package/src/components/image.js +97 -0
  133. package/src/components/index.js +117 -0
  134. package/src/components/input-group.js +75 -0
  135. package/src/components/input-number.js +155 -0
  136. package/src/components/input-otp.js +178 -0
  137. package/src/components/input.js +91 -0
  138. package/src/components/kbd.js +36 -0
  139. package/src/components/label.js +25 -0
  140. package/src/components/list.js +118 -0
  141. package/src/components/masked-input.js +236 -0
  142. package/src/components/mentions.js +165 -0
  143. package/src/components/menu.js +259 -0
  144. package/src/components/message.js +80 -0
  145. package/src/components/modal.js +147 -0
  146. package/src/components/navigation-menu.js +166 -0
  147. package/src/components/notification.js +84 -0
  148. package/src/components/pagination.js +104 -0
  149. package/src/components/placeholder.js +132 -0
  150. package/src/components/popconfirm.js +70 -0
  151. package/src/components/popover.js +58 -0
  152. package/src/components/progress.js +61 -0
  153. package/src/components/qrcode.js +251 -0
  154. package/src/components/radiogroup.js +120 -0
  155. package/src/components/range-slider.js +176 -0
  156. package/src/components/rate.js +186 -0
  157. package/src/components/resizable.js +83 -0
  158. package/src/components/result.js +57 -0
  159. package/src/components/scroll-area.js +43 -0
  160. package/src/components/segmented.js +97 -0
  161. package/src/components/select.js +165 -0
  162. package/src/components/separator.js +31 -0
  163. package/src/components/shell.js +407 -0
  164. package/src/components/skeleton.js +39 -0
  165. package/src/components/slider.js +141 -0
  166. package/src/components/sortable-list.js +176 -0
  167. package/src/components/space.js +42 -0
  168. package/src/components/spinner.js +112 -0
  169. package/src/components/splitter.js +147 -0
  170. package/src/components/statistic.js +136 -0
  171. package/src/components/steps.js +99 -0
  172. package/src/components/switch.js +95 -0
  173. package/src/components/table.js +44 -0
  174. package/src/components/tabs.js +216 -0
  175. package/src/components/tag.js +115 -0
  176. package/src/components/textarea.js +82 -0
  177. package/src/components/time-picker.js +153 -0
  178. package/src/components/time-range-picker.js +170 -0
  179. package/src/components/timeline.js +226 -0
  180. package/src/components/toast.js +71 -0
  181. package/src/components/toggle.js +213 -0
  182. package/src/components/tooltip.js +57 -0
  183. package/src/components/tour.js +159 -0
  184. package/src/components/transfer.js +163 -0
  185. package/src/components/tree-select.js +274 -0
  186. package/src/components/tree.js +141 -0
  187. package/src/components/typography.js +136 -0
  188. package/src/components/upload.js +118 -0
  189. package/src/components/visually-hidden.js +20 -0
  190. package/src/components/watermark.js +124 -0
  191. package/src/core/index.js +539 -0
  192. package/src/core/lifecycle.js +69 -0
  193. package/src/css/atoms.js +651 -0
  194. package/src/css/components.js +940 -0
  195. package/src/css/derive.js +1296 -0
  196. package/src/css/index.js +265 -0
  197. package/src/css/runtime.js +268 -0
  198. package/src/css/styles/addons/bioluminescent.js +93 -0
  199. package/src/css/styles/addons/clay.js +70 -0
  200. package/src/css/styles/addons/clean.js +57 -0
  201. package/src/css/styles/addons/command-center.js +143 -0
  202. package/src/css/styles/addons/dopamine.js +83 -0
  203. package/src/css/styles/addons/editorial.js +80 -0
  204. package/src/css/styles/addons/glassmorphism.js +99 -0
  205. package/src/css/styles/addons/liquid-glass.js +105 -0
  206. package/src/css/styles/addons/prismatic.js +100 -0
  207. package/src/css/styles/addons/retro.js +63 -0
  208. package/src/css/styles/auradecantism.js +96 -0
  209. package/src/css/theme-registry.js +444 -0
  210. package/src/data/entity.js +281 -0
  211. package/src/data/index.js +13 -0
  212. package/src/data/persist.js +225 -0
  213. package/src/data/query.js +839 -0
  214. package/src/data/realtime.js +299 -0
  215. package/src/data/url.js +177 -0
  216. package/src/data/worker.js +134 -0
  217. package/src/explorer/archetypes.js +243 -0
  218. package/src/explorer/atoms.js +228 -0
  219. package/src/explorer/charts.js +497 -0
  220. package/src/explorer/components.js +129 -0
  221. package/src/explorer/foundations.js +949 -0
  222. package/src/explorer/icons.js +178 -0
  223. package/src/explorer/patterns.js +247 -0
  224. package/src/explorer/recipes.js +194 -0
  225. package/src/explorer/shared/pattern-examples.js +1337 -0
  226. package/src/explorer/shared/showcase-renderer.js +958 -0
  227. package/src/explorer/shared/spec-table.js +41 -0
  228. package/src/explorer/shared/usage-links.js +87 -0
  229. package/src/explorer/shell-config.js +10 -0
  230. package/src/explorer/shells.js +551 -0
  231. package/src/explorer/styles.js +161 -0
  232. package/src/explorer/tokens.js +262 -0
  233. package/src/explorer/tools.js +525 -0
  234. package/src/form/index.js +804 -0
  235. package/src/i18n/index.js +251 -0
  236. package/src/icons/essential.js +479 -0
  237. package/src/icons/index.js +53 -0
  238. package/src/plugins/index.js +282 -0
  239. package/src/registry/archetypes/content-site.json +71 -0
  240. package/src/registry/archetypes/docs-explorer.json +23 -0
  241. package/src/registry/archetypes/ecommerce.json +104 -0
  242. package/src/registry/archetypes/financial-dashboard.json +77 -0
  243. package/src/registry/archetypes/index.json +41 -0
  244. package/src/registry/archetypes/portfolio.json +82 -0
  245. package/src/registry/archetypes/recipe-community.json +159 -0
  246. package/src/registry/archetypes/saas-dashboard.json +86 -0
  247. package/src/registry/architect/cross-cutting.json +45 -0
  248. package/src/registry/architect/domains/ecommerce.json +294 -0
  249. package/src/registry/architect/domains/financial-services.json +302 -0
  250. package/src/registry/architect/index.json +26 -0
  251. package/src/registry/architect/traits.json +379 -0
  252. package/src/registry/atoms.json +16 -0
  253. package/src/registry/chart-showcase.json +160 -0
  254. package/src/registry/chart.json +136 -0
  255. package/src/registry/components.json +8616 -0
  256. package/src/registry/core.json +216 -0
  257. package/src/registry/css.json +319 -0
  258. package/src/registry/data.json +135 -0
  259. package/src/registry/foundations.json +11 -0
  260. package/src/registry/icons.json +463 -0
  261. package/src/registry/index.json +101 -0
  262. package/src/registry/patterns/activity-feed.json +37 -0
  263. package/src/registry/patterns/article-content.json +27 -0
  264. package/src/registry/patterns/auth-form.json +37 -0
  265. package/src/registry/patterns/author-card.json +20 -0
  266. package/src/registry/patterns/card-grid.json +127 -0
  267. package/src/registry/patterns/category-nav.json +26 -0
  268. package/src/registry/patterns/chart-grid.json +36 -0
  269. package/src/registry/patterns/chat-interface.json +37 -0
  270. package/src/registry/patterns/checklist-card.json +55 -0
  271. package/src/registry/patterns/comparison-panel.json +27 -0
  272. package/src/registry/patterns/component-showcase.json +24 -0
  273. package/src/registry/patterns/contact-form.json +31 -0
  274. package/src/registry/patterns/cta-section.json +20 -0
  275. package/src/registry/patterns/data-table.json +37 -0
  276. package/src/registry/patterns/detail-header.json +83 -0
  277. package/src/registry/patterns/detail-panel.json +27 -0
  278. package/src/registry/patterns/explorer-shell.json +22 -0
  279. package/src/registry/patterns/filter-bar.json +33 -0
  280. package/src/registry/patterns/filter-sidebar.json +27 -0
  281. package/src/registry/patterns/form-sections.json +110 -0
  282. package/src/registry/patterns/goal-tracker.json +27 -0
  283. package/src/registry/patterns/hero.json +107 -0
  284. package/src/registry/patterns/index.json +47 -0
  285. package/src/registry/patterns/kpi-grid.json +36 -0
  286. package/src/registry/patterns/media-gallery.json +20 -0
  287. package/src/registry/patterns/order-history.json +20 -0
  288. package/src/registry/patterns/pagination.json +19 -0
  289. package/src/registry/patterns/photo-to-recipe.json +36 -0
  290. package/src/registry/patterns/pipeline-tracker.json +28 -0
  291. package/src/registry/patterns/post-list.json +27 -0
  292. package/src/registry/patterns/pricing-table.json +32 -0
  293. package/src/registry/patterns/scorecard.json +28 -0
  294. package/src/registry/patterns/search-bar.json +20 -0
  295. package/src/registry/patterns/specimen-grid.json +19 -0
  296. package/src/registry/patterns/stat-card.json +55 -0
  297. package/src/registry/patterns/stats-bar.json +55 -0
  298. package/src/registry/patterns/steps-card.json +55 -0
  299. package/src/registry/patterns/table-of-contents.json +19 -0
  300. package/src/registry/patterns/testimonials.json +21 -0
  301. package/src/registry/patterns/timeline.json +27 -0
  302. package/src/registry/patterns/token-inspector.json +21 -0
  303. package/src/registry/patterns/wizard.json +27 -0
  304. package/src/registry/recipe-auradecantism.json +69 -0
  305. package/src/registry/recipe-clean.json +65 -0
  306. package/src/registry/recipe-command-center.json +78 -0
  307. package/src/registry/router.json +73 -0
  308. package/src/registry/schema/README.md +197 -0
  309. package/src/registry/skeletons.json +259 -0
  310. package/src/registry/state.json +137 -0
  311. package/src/registry/tokens.json +40 -0
  312. package/src/router/hash.js +17 -0
  313. package/src/router/history.js +18 -0
  314. package/src/router/index.js +598 -0
  315. package/src/ssr/index.js +922 -0
  316. package/src/state/arrays.js +181 -0
  317. package/src/state/devtools.js +647 -0
  318. package/src/state/index.js +498 -0
  319. package/src/state/middleware.js +288 -0
  320. package/src/state/scheduler.js +206 -0
  321. package/src/state/store.js +300 -0
  322. package/src/tags/index.js +19 -0
  323. package/src/tannins/auth.js +396 -0
  324. package/src/test/dom.js +352 -0
  325. package/src/test/index.js +62 -0
  326. package/src/test/state.js +306 -0
  327. package/tools/a11y-audit.js +487 -0
  328. package/tools/analyzer.js +315 -0
  329. package/tools/audit.js +706 -0
  330. package/tools/builder.js +1422 -0
  331. package/tools/css-extract.js +188 -0
  332. package/tools/dev-server.js +316 -0
  333. package/tools/dts-gen.js +1260 -0
  334. package/tools/figma-components.js +329 -0
  335. package/tools/figma-patterns.js +516 -0
  336. package/tools/figma-plugin/code.js +453 -0
  337. package/tools/figma-plugin/manifest.json +14 -0
  338. package/tools/figma-plugin/ui.html +268 -0
  339. package/tools/figma-render.js +293 -0
  340. package/tools/figma-tokens.js +712 -0
  341. package/tools/figma-upload.js +318 -0
  342. package/tools/generate.js +738 -0
  343. package/tools/icons.js +133 -0
  344. package/tools/init-templates.js +265 -0
  345. package/tools/install-hooks.sh +5 -0
  346. package/tools/migrations/0.5.0.js +53 -0
  347. package/tools/migrations/0.6.0.js +95 -0
  348. package/tools/minify.js +170 -0
  349. package/tools/pre-commit +4 -0
  350. package/tools/registry.js +662 -0
  351. package/tools/reset-playground.js +61 -0
  352. package/tools/starter-templates/content-site/app.js +49 -0
  353. package/tools/starter-templates/content-site/essence.js +19 -0
  354. package/tools/starter-templates/content-site/pages.js +31 -0
  355. package/tools/starter-templates/ecommerce/app.js +50 -0
  356. package/tools/starter-templates/ecommerce/essence.js +19 -0
  357. package/tools/starter-templates/ecommerce/pages.js +31 -0
  358. package/tools/starter-templates/landing-page/app.js +38 -0
  359. package/tools/starter-templates/landing-page/essence.js +18 -0
  360. package/tools/starter-templates/landing-page/pages.js +21 -0
  361. package/tools/starter-templates/portfolio/app.js +45 -0
  362. package/tools/starter-templates/portfolio/essence.js +19 -0
  363. package/tools/starter-templates/portfolio/pages.js +33 -0
  364. package/tools/starter-templates/saas-dashboard/app.js +70 -0
  365. package/tools/starter-templates/saas-dashboard/essence.js +19 -0
  366. package/tools/starter-templates/saas-dashboard/pages.js +31 -0
  367. package/tools/verify-pack.js +203 -0
  368. package/types/chart.d.ts +77 -0
  369. package/types/components.d.ts +587 -0
  370. package/types/core.d.ts +89 -0
  371. package/types/css.d.ts +149 -0
  372. package/types/data.d.ts +238 -0
  373. package/types/form.d.ts +164 -0
  374. package/types/i18n.d.ts +51 -0
  375. package/types/icons.d.ts +27 -0
  376. package/types/index.d.ts +13 -0
  377. package/types/router.d.ts +116 -0
  378. package/types/ssr.d.ts +102 -0
  379. package/types/state.d.ts +83 -0
  380. package/types/tags.d.ts +62 -0
  381. package/types/tannins.d.ts +63 -0
  382. package/types/test.d.ts +48 -0
@@ -0,0 +1,1658 @@
1
+ /**
2
+ * Base structural CSS for ALL Decantr components (~75 components).
3
+ * Injected once on first component render.
4
+ * Visual styling (colors, shadows, gradients) comes from active theme (src/css/themes/).
5
+ * This file handles STRUCTURE ONLY: layout, sizing, spacing, typography, transitions.
6
+ *
7
+ * Naming: .d-{component} root, .d-{component}-{variant|part|state} for sub-parts.
8
+ * All sizing uses design tokens: var(--d-*) with fallbacks.
9
+ */
10
+ import { createEffect } from '../state/index.js';
11
+
12
+ let injected = false;
13
+
14
+ const BASE_CSS = [
15
+ // ═══════════════════════════════════════════════════════════════
16
+ // UTILITIES
17
+ // ═══════════════════════════════════════════════════════════════
18
+ '.d-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}',
19
+ // Field sizing utility — override density tokens locally so child form elements inherit the tier
20
+ '.d-field-xs{--d-density-min-h:var(--d-field-h-xs);--d-density-pad-y:var(--d-field-py-xs);--d-density-pad-x:var(--d-field-px-xs);--d-density-text:var(--d-field-text-xs);--d-density-gap:var(--d-field-gap-xs)}',
21
+ '.d-field-sm{--d-density-min-h:var(--d-field-h-sm);--d-density-pad-y:var(--d-field-py-sm);--d-density-pad-x:var(--d-field-px-sm);--d-density-text:var(--d-field-text-sm);--d-density-gap:var(--d-field-gap-sm)}',
22
+ '.d-field-lg{--d-density-min-h:var(--d-field-h-lg);--d-density-pad-y:var(--d-field-py-lg);--d-density-pad-x:var(--d-field-px-lg);--d-density-text:var(--d-field-text-lg);--d-density-gap:var(--d-field-gap-lg)}',
23
+ // Field visual base — border, background, transitions, states
24
+ '.d-field{background:var(--d-field-bg);border:var(--d-group-border,var(--d-field-border-width)) var(--d-border-style) var(--d-field-border);border-radius:var(--d-group-radius,var(--d-field-radius));transition:border-color var(--d-duration-fast) var(--d-easing-standard),box-shadow var(--d-duration-fast) var(--d-easing-standard),background var(--d-duration-fast) var(--d-easing-standard);color:var(--d-fg)}',
25
+ '.d-field:hover:not(:disabled,[aria-disabled],[data-disabled]){border-color:var(--d-field-border-hover);background:var(--d-field-bg-hover)}',
26
+ '.d-field:focus-within:not(:disabled,[aria-disabled],[data-disabled]){border-color:var(--d-field-border-focus);box-shadow:var(--d-group-shadow,var(--d-field-ring))}',
27
+ '.d-field[data-error]{border-color:var(--d-field-border-error);background:var(--d-field-bg-error)}',
28
+ '.d-field[data-error]:focus-within{box-shadow:var(--d-field-ring-error)}',
29
+ '.d-field[data-success]{border-color:var(--d-field-border-success);background:var(--d-field-bg-success)}',
30
+ '.d-field[data-success]:focus-within{box-shadow:var(--d-field-ring-success)}',
31
+ '.d-field[aria-disabled],.d-field[data-disabled]{opacity:var(--d-disabled-opacity);background:var(--d-field-bg-disabled);border-color:var(--d-field-border-disabled);cursor:not-allowed}',
32
+ '.d-field[readonly]{background:var(--d-field-bg-readonly)}',
33
+ '.d-field::placeholder{color:var(--d-field-placeholder)}',
34
+ // Field variant modifiers
35
+ '.d-field-outlined{/* default — inherits .d-field as-is */}',
36
+ '.d-field-filled{--d-field-bg:var(--d-surface-1);--d-field-border:transparent;--d-field-border-hover:transparent}',
37
+ '.d-field-ghost{--d-field-bg:transparent;--d-field-border:transparent;--d-field-border-hover:transparent}',
38
+ '.d-field-ghost:focus-within{--d-field-border:var(--d-field-border-focus)}',
39
+ 'button,input,select,textarea{color:inherit}',
40
+ '.d-i{display:inline-block;vertical-align:middle;background:currentColor;mask-size:contain;-webkit-mask-size:contain;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;flex-shrink:0}',
41
+ '@keyframes d-spin{to{transform:rotate(360deg)}}',
42
+ '@keyframes d-shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}',
43
+ '@keyframes d-fadein{from{opacity:0}to{opacity:1}}',
44
+ '@keyframes d-fadeout{from{opacity:1}to{opacity:0}}',
45
+ '@keyframes d-slidein-b{from{opacity:0;transform:translateY(var(--d-slide-distance))}to{opacity:1;transform:translateY(0)}}',
46
+ '@keyframes d-slidein-t{from{opacity:0;transform:translateY(calc(var(--d-slide-distance) * -1))}to{opacity:1;transform:translateY(0)}}',
47
+ '@keyframes d-slidein-l{from{opacity:0;transform:translateX(calc(var(--d-slide-distance) * -1))}to{opacity:1;transform:translateX(0)}}',
48
+ '@keyframes d-slidein-r{from{opacity:0;transform:translateX(var(--d-slide-distance))}to{opacity:1;transform:translateX(0)}}',
49
+ '@keyframes d-scalein{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}',
50
+ '@keyframes d-pulse{0%,100%{opacity:1}50%{opacity:0.5}}',
51
+ '@keyframes d-bounce{0%,100%{transform:translateY(-25%);animation-timing-function:cubic-bezier(0.8,0,1,1)}50%{transform:translateY(0);animation-timing-function:cubic-bezier(0,0,0.2,1)}}',
52
+
53
+ // ═══════════════════════════════════════════════════════════════
54
+ // BUTTON
55
+ // ═══════════════════════════════════════════════════════════════
56
+ '.d-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--d-density-gap,var(--d-sp-2));font-family:inherit;font-size:var(--d-density-text,var(--d-text-base));font-weight:var(--d-fw-medium,500);line-height:var(--d-lh-none);padding:var(--d-density-pad-y,var(--d-sp-2)) var(--d-density-pad-x,var(--d-sp-4));min-height:var(--d-density-min-h,auto);cursor:pointer;user-select:none;white-space:nowrap;outline:none;text-decoration:none;border:none;background:none}',
57
+ '.d-btn:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
58
+ '.d-btn[disabled]{cursor:not-allowed;pointer-events:none;opacity:var(--d-disabled-opacity)}',
59
+ '.d-btn-xs{min-height:var(--d-field-h-xs);font-size:var(--d-field-text-xs);padding:var(--d-field-py-xs) var(--d-field-px-xs);gap:var(--d-field-gap-xs)}',
60
+ '.d-btn-sm{min-height:var(--d-field-h-sm);font-size:var(--d-field-text-sm);padding:var(--d-field-py-sm) var(--d-field-px-sm);gap:var(--d-field-gap-sm)}',
61
+ '.d-btn-lg{min-height:var(--d-field-h-lg);font-size:var(--d-field-text-lg);padding:var(--d-field-py-lg) var(--d-field-px-lg);gap:var(--d-field-gap-lg)}',
62
+ '.d-btn-icon{padding:var(--d-sp-2);aspect-ratio:1}',
63
+ '.d-btn-icon-xs{min-height:var(--d-field-h-xs);padding:var(--d-field-py-xs);aspect-ratio:1;font-size:var(--d-field-text-xs)}',
64
+ '.d-btn-icon-sm{min-height:var(--d-field-h-sm);padding:var(--d-field-py-sm);aspect-ratio:1;font-size:var(--d-field-text-sm)}',
65
+ '.d-btn-icon-lg{min-height:var(--d-field-h-lg);padding:var(--d-field-py-lg);aspect-ratio:1;font-size:var(--d-field-text-lg)}',
66
+ '.d-btn-block{display:flex;width:100%}',
67
+ '.d-btn-rounded{border-radius:var(--d-radius-full)}',
68
+ '.d-btn-group{display:inline-flex;gap:var(--d-density-gap,0)}',
69
+ '.d-btn-group>.d-btn{border-radius:0}',
70
+ '.d-btn-group>.d-btn:first-child{border-top-left-radius:var(--d-radius);border-bottom-left-radius:var(--d-radius)}',
71
+ '.d-btn-group>.d-btn:last-child{border-top-right-radius:var(--d-radius);border-bottom-right-radius:var(--d-radius)}',
72
+ '.d-btn-group>.d-btn:not(:first-child){margin-left:-1px}',
73
+ '.d-btn-loading{position:relative;cursor:wait;color:transparent !important}',
74
+ '.d-btn-loading>*:not(.d-btn-spinner){visibility:hidden}',
75
+ '.d-btn-spinner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}',
76
+
77
+ // ═══════════════════════════════════════════════════════════════
78
+ // TOGGLE / TOGGLE GROUP
79
+ // ═══════════════════════════════════════════════════════════════
80
+ '.d-toggle{display:inline-flex;align-items:center;justify-content:center;gap:var(--d-density-gap,var(--d-sp-2));padding:var(--d-density-pad-y,var(--d-sp-2)) var(--d-density-pad-x,var(--d-sp-3));font:inherit;font-size:var(--d-density-text,var(--d-text-base));min-height:var(--d-density-min-h,auto);cursor:pointer;border:none;background:none;outline:none}',
81
+ '.d-toggle:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
82
+ '.d-toggle[disabled]{cursor:not-allowed;opacity:var(--d-disabled-opacity)}',
83
+ '.d-toggle[aria-pressed="true"]{font-weight:var(--d-fw-medium,500)}',
84
+ '.d-toggle-xs{min-height:var(--d-field-h-xs);font-size:var(--d-field-text-xs);padding:var(--d-field-py-xs) var(--d-field-px-xs)}',
85
+ '.d-toggle-sm{min-height:var(--d-field-h-sm);font-size:var(--d-field-text-sm);padding:var(--d-field-py-sm) var(--d-field-px-sm)}',
86
+ '.d-toggle-lg{min-height:var(--d-field-h-lg);font-size:var(--d-field-text-lg);padding:var(--d-field-py-lg) var(--d-field-px-lg)}',
87
+ '.d-toggle-group{display:inline-flex;position:relative;padding:var(--d-sp-0-5);gap:var(--d-density-gap,var(--d-sp-0-5));border-radius:var(--d-radius-panel);overflow:hidden}',
88
+ '.d-toggle-group>.d-toggle{position:relative;z-index:1;border-radius:var(--d-radius-inner)}',
89
+ '.d-toggle-indicator{position:absolute;top:var(--d-sp-0-5);bottom:var(--d-sp-0-5);border-radius:var(--d-radius-inner);transition:transform var(--d-duration-fast) var(--d-easing-standard),width var(--d-duration-fast) var(--d-easing-standard),opacity var(--d-duration-fast) var(--d-easing-standard);pointer-events:none;z-index:0}',
90
+ '.d-toggle-group-sm{padding:var(--d-sp-0-25);gap:var(--d-sp-0-25)}',
91
+ '.d-toggle-group-sm>.d-toggle{min-height:var(--d-field-h-sm);font-size:var(--d-field-text-sm);padding:var(--d-field-py-sm) var(--d-field-px-sm)}',
92
+ '.d-toggle-group-lg{padding:var(--d-sp-1);gap:var(--d-sp-0-5)}',
93
+ '.d-toggle-group-lg>.d-toggle{min-height:var(--d-field-h-lg);font-size:var(--d-field-text-lg);padding:var(--d-field-py-lg) var(--d-field-px-lg)}',
94
+ '.d-toggle-group-block{display:flex;width:100%}',
95
+ '.d-toggle-group-block>.d-toggle{flex:1}',
96
+ '.d-toggle-group[data-disabled]{opacity:var(--d-disabled-opacity);cursor:not-allowed;pointer-events:none}',
97
+
98
+ // ═══════════════════════════════════════════════════════════════
99
+ // SPINNER
100
+ // ═══════════════════════════════════════════════════════════════
101
+ // ── CARET (shared icon-based arrow for dropdowns, accordions, trees) ──
102
+ '.d-caret{transition:transform var(--d-duration-fast,150ms) var(--d-easing-standard,ease);flex-shrink:0;display:inline-flex;align-items:center}',
103
+ '.d-caret-open{transform:rotate(180deg)}',
104
+ '.d-caret-open-90{transform:rotate(90deg)}',
105
+ // Unified chevron rotation — any component toggles *-open on its wrapper
106
+ '.d-select-open .d-caret,.d-combobox-open .d-caret,.d-cascader-open > .d-cascader-trigger .d-caret,.d-treeselect-open > .d-treeselect-trigger .d-caret{transform:rotate(180deg)}',
107
+
108
+ '.d-spinner{display:inline-block}',
109
+ '.d-spinner-xs{width:var(--d-spinner-size-xs);height:var(--d-spinner-size-xs)}',
110
+ '.d-spinner-sm{width:var(--d-spinner-size-sm);height:var(--d-spinner-size-sm)}',
111
+ '.d-spinner-lg{width:var(--d-spinner-size-lg);height:var(--d-spinner-size-lg)}',
112
+ '.d-spinner-xl{width:var(--d-spinner-size-xl);height:var(--d-spinner-size-xl)}',
113
+ '.d-spinner-arc{animation:d-spin var(--d-duration-spin) linear infinite;transform-origin:center;transform-box:fill-box}',
114
+ '.d-spinner-wrap{display:inline-flex;align-items:center;justify-content:center;width:var(--d-spinner-size);height:var(--d-spinner-size)}',
115
+ // ── Spinner variants ──
116
+ '@keyframes d-dots{0%,80%,100%{transform:scale(0)}40%{transform:scale(1)}}',
117
+ '@keyframes d-bars{0%,100%{transform:scaleY(0.4)}20%{transform:scaleY(1)}}',
118
+ '@keyframes d-orbit{0%{transform:rotate(0deg) translateX(150%) rotate(0deg)}100%{transform:rotate(360deg) translateX(150%) rotate(-360deg)}}',
119
+ '.d-spinner-dots{display:inline-flex;align-items:center;gap:var(--d-sp-1)}',
120
+ '.d-spinner-dots>span{width:25%;aspect-ratio:1;border-radius:50%;background:currentColor;animation:d-dots calc(var(--d-duration-spin) * 1.6) ease-in-out infinite}',
121
+ '.d-spinner-dots>span:nth-child(2){animation-delay:0.16s}',
122
+ '.d-spinner-dots>span:nth-child(3){animation-delay:0.32s}',
123
+ '.d-spinner-pulse{display:inline-flex;align-items:center;justify-content:center}',
124
+ '.d-spinner-pulse>span{width:100%;height:100%;border-radius:50%;background:currentColor;animation:d-pulse calc(var(--d-duration-spin) * 1.8) ease-in-out infinite}',
125
+ '.d-spinner-bars{display:inline-flex;align-items:center;justify-content:center;gap:var(--d-sp-0-5)}',
126
+ '.d-spinner-bars>span{width:3px;height:60%;background:currentColor;border-radius:1px;animation:d-bars calc(var(--d-duration-spin) * 1.4) ease-in-out infinite}',
127
+ '.d-spinner-bars>span:nth-child(2){animation-delay:0.1s}',
128
+ '.d-spinner-bars>span:nth-child(3){animation-delay:0.2s}',
129
+ '.d-spinner-bars>span:nth-child(4){animation-delay:0.3s}',
130
+ '.d-spinner-orbit{display:inline-flex;align-items:center;justify-content:center;position:relative}',
131
+ '.d-spinner-orbit>span{position:absolute;width:20%;aspect-ratio:1;border-radius:50%;background:currentColor;animation:d-orbit calc(var(--d-duration-spin) * 1.8) linear infinite}',
132
+ '.d-spinner-orbit>span:nth-child(2){animation-delay:-0.75s}',
133
+ // ── Hybrid spinner (ring + center icon) ──
134
+ '.d-spinner-hybrid{position:relative;display:inline-flex;align-items:center;justify-content:center}',
135
+ '.d-spinner-hybrid>svg{position:absolute;inset:0}',
136
+ '.d-spinner-hybrid>.d-i{position:relative;z-index:1}',
137
+ '.d-spinner-dots,.d-spinner-pulse,.d-spinner-bars,.d-spinner-orbit,.d-spinner-hybrid{width:100%;height:100%}',
138
+ // ── Spinner colors ──
139
+ '.d-spinner-primary{color:var(--d-primary)}',
140
+ '.d-spinner-success{color:var(--d-success)}',
141
+ '.d-spinner-warning{color:var(--d-warning)}',
142
+ '.d-spinner-destructive{color:var(--d-destructive)}',
143
+ '.d-spinner-info{color:var(--d-info)}',
144
+ '.d-spinner-muted{color:var(--d-muted-fg)}',
145
+
146
+ // ═══════════════════════════════════════════════════════════════
147
+ // INPUT
148
+ // ═══════════════════════════════════════════════════════════════
149
+ '.d-input-wrap{display:flex;align-items:center}',
150
+ '.d-input{background:transparent;border:none;outline:none;width:100%;font:inherit;font-size:var(--d-density-text,inherit);padding:var(--d-density-pad-y,var(--d-sp-2)) var(--d-density-pad-x,var(--d-sp-3));min-height:var(--d-density-min-h,auto)}',
151
+ '.d-input-prefix,.d-input-suffix{display:flex;align-items:center;padding:0 var(--d-sp-2);color:var(--d-muted);flex-shrink:0}',
152
+ '.d-input[disabled]{cursor:not-allowed;opacity:var(--d-disabled-opacity)}',
153
+ '.d-input-xs{min-height:var(--d-field-h-xs);padding:var(--d-field-py-xs) var(--d-field-px-xs);font-size:var(--d-field-text-xs)}',
154
+ '.d-input-sm{min-height:var(--d-field-h-sm);padding:var(--d-field-py-sm) var(--d-field-px-sm);font-size:var(--d-field-text-sm)}',
155
+ '.d-input-lg{min-height:var(--d-field-h-lg);padding:var(--d-field-py-lg) var(--d-field-px-lg);font-size:var(--d-field-text-lg)}',
156
+ // ── INPUT GROUP ──
157
+ // Structure only — group draws the border, children go borderless.
158
+ // Three custom properties cascade to children:
159
+ // --d-group-border: 0 (children lose all borders)
160
+ // --d-group-radius: ... (positional border-radius)
161
+ // --d-group-shadow: none (suppress child focus rings)
162
+ '.d-input-group{display:flex;align-items:stretch}',
163
+ '.d-input-group-vertical{flex-direction:column;overflow:hidden}',
164
+ '.d-input-group>.d-input-wrap,.d-input-group>.d-select-wrap,.d-input-group>.d-combobox-input-wrap,.d-input-group>.d-inputnumber,.d-input-group>.d-textarea-wrap,.d-input-group>.d-cascader-trigger{flex:1;min-width:0}',
165
+ '.d-input-group-addon{display:flex;align-items:center;padding:0 var(--d-sp-3);font-size:var(--d-text-sm);white-space:nowrap;flex-shrink:0}',
166
+ // Horizontal — set group contract on children
167
+ '.d-input-group>*{--d-group-border:0;--d-group-shadow:none;--d-group-radius:0}',
168
+ '.d-input-group>:first-child{--d-group-radius:var(--d-radius) 0 0 var(--d-radius)}',
169
+ '.d-input-group>:last-child{--d-group-radius:0 var(--d-radius) var(--d-radius) 0}',
170
+ '.d-input-group>:only-child{--d-group-radius:var(--d-radius)}',
171
+ // Vertical — container clips corners via overflow:hidden + border-radius; reset ALL children
172
+ '.d-input-group-vertical>*{--d-group-radius:0}',
173
+ '.d-input-group-vertical>:first-child{--d-group-radius:0}',
174
+ '.d-input-group-vertical>:last-child{--d-group-radius:0}',
175
+ '.d-input-group-vertical>:only-child{--d-group-radius:0}',
176
+ // Group-level disabled
177
+ '.d-input-group[data-disabled]>*{opacity:var(--d-disabled-opacity);pointer-events:none}',
178
+ // Size variants for addons
179
+ '.d-input-group-xs .d-input-group-addon{padding:0 var(--d-field-px-xs);font-size:var(--d-field-text-xs)}',
180
+ '.d-input-group-sm .d-input-group-addon{padding:0 var(--d-field-px-sm);font-size:var(--d-field-text-sm)}',
181
+ '.d-input-group-lg .d-input-group-addon{padding:0 var(--d-field-px-lg);font-size:var(--d-field-text-lg)}',
182
+ // ── COMPACT GROUP ──
183
+ '.d-compact-group{display:inline-flex;align-items:stretch}',
184
+ '.d-compact-group>.d-input-wrap,.d-compact-group>.d-select-wrap,.d-compact-group>.d-combobox-input-wrap,.d-compact-group>.d-inputnumber{flex:1;min-width:0}',
185
+ '.d-compact-group>*{--d-group-border:0;--d-group-shadow:none;--d-group-radius:0}',
186
+ '.d-compact-group>:first-child{--d-group-radius:var(--d-radius) 0 0 var(--d-radius)}',
187
+ '.d-compact-group>:last-child{--d-group-radius:0 var(--d-radius) var(--d-radius) 0}',
188
+ '.d-compact-group>:only-child{--d-group-radius:var(--d-radius)}',
189
+
190
+ // ═══════════════════════════════════════════════════════════════
191
+ // INPUT NUMBER
192
+ // ═══════════════════════════════════════════════════════════════
193
+ '.d-inputnumber{display:inline-flex;align-items:stretch}',
194
+ '.d-inputnumber-input{background:transparent;border:none;outline:none;width:100%;font:inherit;padding:var(--d-sp-2) var(--d-sp-3);text-align:center;-moz-appearance:textfield}',
195
+ '.d-inputnumber-input::-webkit-inner-spin-button,.d-inputnumber-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}',
196
+ '.d-inputnumber-step{display:flex;align-items:center;justify-content:center;cursor:pointer;width:var(--d-stepper-w);flex-shrink:0;font-size:var(--d-text-sm);user-select:none;border:none;background:none;padding:0}',
197
+ '.d-inputnumber-step:first-child{border-right:var(--d-border-width,1px) var(--d-border-style,solid) var(--d-border);border-radius:var(--d-group-radius,var(--d-radius)) 0 0 var(--d-group-radius,var(--d-radius))}',
198
+ '.d-inputnumber-step:last-child{border-left:var(--d-border-width,1px) var(--d-border-style,solid) var(--d-border);border-radius:0 var(--d-group-radius,var(--d-radius)) var(--d-group-radius,var(--d-radius)) 0}',
199
+ '.d-inputnumber-step[disabled]{cursor:not-allowed;opacity:var(--d-disabled-opacity-soft)}',
200
+
201
+ // ═══════════════════════════════════════════════════════════════
202
+ // INPUT OTP
203
+ // ═══════════════════════════════════════════════════════════════
204
+ '.d-otp{display:inline-flex;gap:var(--d-sp-2)}',
205
+ '.d-otp-slot{width:var(--d-otp-w);height:var(--d-otp-h);--d-field-radius:var(--d-radius-full);text-align:center;font:inherit;font-size:var(--d-otp-text);font-weight:var(--d-fw-medium,500);padding:0;outline:none}',
206
+ '.d-otp-sm .d-otp-slot{width:var(--d-otp-w-sm);height:var(--d-otp-h-sm);font-size:var(--d-otp-text-sm)}',
207
+ '.d-otp-lg .d-otp-slot{width:var(--d-otp-w-lg);height:var(--d-otp-h-lg);font-size:var(--d-otp-text-lg)}',
208
+ // focus-visible handled by .d-field:focus-within (slot IS the field — no separate outline needed)
209
+ '.d-otp-separator{display:flex;align-items:center;padding:0 var(--d-sp-1);font-size:var(--d-text-lg)}',
210
+
211
+ // ═══════════════════════════════════════════════════════════════
212
+ // TEXTAREA
213
+ // ═══════════════════════════════════════════════════════════════
214
+ '.d-textarea-wrap{display:flex;--d-field-radius:var(--d-radius-panel)}',
215
+ '.d-textarea{background:transparent;border:none;outline:none;width:100%;font:inherit;padding:var(--d-sp-2) var(--d-sp-3);min-height:4rem;border-radius:inherit}',
216
+ '.d-textarea[disabled]{cursor:not-allowed;opacity:var(--d-disabled-opacity)}',
217
+ '.d-textarea-xs{padding:var(--d-field-py-xs) var(--d-field-px-xs);font-size:var(--d-field-text-xs)}',
218
+ '.d-textarea-sm{padding:var(--d-field-py-sm) var(--d-field-px-sm);font-size:var(--d-field-text-sm)}',
219
+ '.d-textarea-lg{padding:var(--d-field-py-lg) var(--d-field-px-lg);font-size:var(--d-field-text-lg)}',
220
+
221
+ // ═══════════════════════════════════════════════════════════════
222
+ // CARD
223
+ // ═══════════════════════════════════════════════════════════════
224
+ '.d-card{display:flex;flex-direction:column;overflow:hidden}',
225
+ '.d-card-header{padding:var(--d-compound-pad) var(--d-compound-pad) 0;font-weight:var(--d-fw-title);font-size:var(--d-text-lg)}',
226
+ '.d-card-body{padding:var(--d-compound-gap) var(--d-compound-pad)}',
227
+ '.d-card-body:first-child{padding-top:var(--d-compound-pad)}',
228
+ '.d-card-body:last-child{padding-bottom:var(--d-compound-pad)}',
229
+ '.d-card-footer{padding:var(--d-compound-pad)}',
230
+ '.d-card-cover{overflow:hidden}',
231
+ '.d-card-cover>img{width:100%;display:block}',
232
+ '.d-card-meta{display:flex;align-items:center;gap:var(--d-sp-3)}',
233
+ // Size: sm — reduced padding
234
+ '.d-card-sm .d-card-header{padding:var(--d-sp-3) var(--d-sp-3) 0;font-size:var(--d-text-base)}',
235
+ '.d-card-sm .d-card-body{padding:var(--d-sp-2) var(--d-sp-3)}',
236
+ '.d-card-sm .d-card-body:first-child{padding-top:var(--d-sp-3)}',
237
+ '.d-card-sm .d-card-body:last-child{padding-bottom:var(--d-sp-3)}',
238
+ '.d-card-sm .d-card-footer{padding:var(--d-sp-3)}',
239
+ '.d-card-sm .d-card-actions{font-size:var(--d-text-sm)}',
240
+ // Header with extra (flex row: title left, extra right)
241
+ '.d-card-header-extra{display:flex;align-items:center;justify-content:space-between}',
242
+ '.d-card-header-content{flex:1;min-width:0}',
243
+ '.d-card-extra{flex-shrink:0;margin-left:var(--d-sp-3)}',
244
+ // Card.Meta — avatar + detail column
245
+ '.d-card-meta-detail{display:flex;flex-direction:column;gap:var(--d-sp-1);min-width:0}',
246
+ '.d-card-meta-title{font-weight:var(--d-fw-title);font-size:var(--d-text-base);line-height:var(--d-lh-tight)}',
247
+ '.d-card-meta-description{font-size:var(--d-text-sm)}',
248
+ // Card.Grid
249
+ '.d-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}',
250
+ // Card.Actions — equal-width cells with separators
251
+ '.d-card-actions{display:flex}',
252
+ '.d-card-actions>*{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--d-compound-gap) 0;cursor:pointer}',
253
+ '.d-card-actions>*+*{border-left:var(--d-border-width) var(--d-border-style) var(--d-border)}',
254
+ // Card loading placeholder
255
+ '.d-card-loading{padding:var(--d-compound-pad)}',
256
+ // Tabs inside Card — seamless integration
257
+ '.d-card>.d-tabs .d-tabs-list{padding:0 var(--d-compound-pad)}',
258
+ '.d-card>.d-tabs .d-tabs-panel{padding:var(--d-compound-gap) var(--d-compound-pad) var(--d-compound-pad)}',
259
+
260
+ // ═══════════════════════════════════════════════════════════════
261
+ // BADGE
262
+ // ═══════════════════════════════════════════════════════════════
263
+ '.d-badge{display:inline-flex;align-items:center;gap:var(--d-sp-1);font-size:var(--d-text-sm);padding:var(--d-sp-1) var(--d-sp-2);font-weight:var(--d-fw-medium,500);line-height:var(--d-lh-none);vertical-align:middle}',
264
+ '.d-badge-dot{width:var(--d-badge-dot);height:var(--d-badge-dot);border-radius:50%;flex-shrink:0}',
265
+ '.d-badge-wrapper{position:relative;display:inline-flex}',
266
+ '.d-badge-sup{position:absolute;top:-4px;right:-4px;z-index:1}',
267
+
268
+ // ═══════════════════════════════════════════════════════════════
269
+ // TAG (extends Badge concept — removable labels)
270
+ // ═══════════════════════════════════════════════════════════════
271
+ '.d-tag{display:inline-flex;align-items:center;gap:var(--d-sp-1);font-size:var(--d-text-sm);padding:var(--d-sp-1) var(--d-sp-2);font-weight:var(--d-fw-medium,500);line-height:var(--d-lh-none);white-space:nowrap;vertical-align:middle}',
272
+ '.d-tag-close{display:inline-flex;align-items:center;cursor:pointer;background:none;border:none;padding:0;font-size:0.875em;line-height:var(--d-lh-none);opacity:var(--d-icon-muted)}',
273
+ '.d-tag-close:hover{opacity:1}',
274
+ '.d-tag-checkable{cursor:pointer}',
275
+ '.d-tag-custom{background:var(--d-tag-bg);color:var(--d-tag-fg);border-color:var(--d-tag-bg)}',
276
+
277
+ // ═══════════════════════════════════════════════════════════════
278
+ // CHIP (pill-shaped tag with icon support)
279
+ // ═══════════════════════════════════════════════════════════════
280
+ '.d-chip{display:inline-flex;align-items:center;gap:var(--d-sp-1-5);border-radius:var(--d-radius-full);padding:var(--d-sp-1) var(--d-sp-3);font-size:var(--d-text-sm);font-weight:var(--d-fw-medium,500);line-height:var(--d-lh-normal);cursor:default;white-space:nowrap;vertical-align:middle}',
281
+ '.d-chip-xs{padding:0 var(--d-sp-1-5);font-size:var(--d-text-xs);gap:var(--d-sp-1)}',
282
+ '.d-chip-sm{padding:0.125rem var(--d-sp-2);font-size:var(--d-text-sm);gap:var(--d-sp-1)}',
283
+ '.d-chip-lg{padding:var(--d-sp-1-5) var(--d-sp-4);font-size:var(--d-text-base);gap:var(--d-sp-2)}',
284
+ '.d-chip-icon{flex-shrink:0;width:1em;height:1em}',
285
+ '.d-chip-label{overflow:hidden;text-overflow:ellipsis}',
286
+ '.d-chip-remove{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;font-size:1em;line-height:var(--d-lh-none);padding:0;margin-left:0.125rem;opacity:var(--d-icon-muted)}',
287
+ '.d-chip-remove:hover{opacity:1}',
288
+ '.d-chip-interactive{cursor:pointer}',
289
+
290
+ // ═══════════════════════════════════════════════════════════════
291
+ // CHECKBOX
292
+ // ═══════════════════════════════════════════════════════════════
293
+ '.d-checkbox{display:inline-flex;align-items:center;gap:var(--d-sp-2);cursor:pointer;user-select:none}',
294
+ '.d-checkbox-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}',
295
+ '.d-checkbox-check{display:flex;align-items:center;justify-content:center;width:var(--d-checkbox-size,1.125rem);height:var(--d-checkbox-size,1.125rem);flex-shrink:0;position:relative;overflow:hidden}',
296
+ '.d-checkbox-check::after{content:"";display:block;width:100%;height:100%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D\'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg\'%20width%3D\'24\'%20height%3D\'24\'%20viewBox%3D\'0%200%2024%2024\'%20fill%3D\'none\'%20stroke%3D\'black\'%20stroke-width%3D\'2\'%20stroke-linecap%3D\'round\'%20stroke-linejoin%3D\'round\'%3E%3Cpolyline%20points%3D\'20%206%209%2017%204%2012\'%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D\'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg\'%20width%3D\'24\'%20height%3D\'24\'%20viewBox%3D\'0%200%2024%2024\'%20fill%3D\'none\'%20stroke%3D\'black\'%20stroke-width%3D\'2\'%20stroke-linecap%3D\'round\'%20stroke-linejoin%3D\'round\'%3E%3Cpolyline%20points%3D\'20%206%209%2017%204%2012\'%2F%3E%3C%2Fsvg%3E");-webkit-mask-size:65% 65%;mask-size:65% 65%;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:currentColor;opacity:0;transform:scale(0.5);transition:opacity var(--d-duration-fast) var(--d-easing-standard),transform var(--d-duration-fast) var(--d-easing-bounce,var(--d-easing-standard))}',
297
+ '.d-checkbox:has(:checked) .d-checkbox-check::after,.d-checkbox-inline:has(:checked) .d-checkbox-check::after{opacity:1;transform:scale(1)}',
298
+ '@keyframes d-check-pop{0%{transform:scale(1)}40%{transform:scale(0.85)}70%{transform:scale(1.08)}100%{transform:scale(1)}}',
299
+ '.d-checkbox:has(:checked) .d-checkbox-check,.d-checkbox-inline:has(:checked) .d-checkbox-check{animation:d-check-pop var(--d-duration-normal) var(--d-easing-bounce,var(--d-easing-standard))}',
300
+ '.d-checkbox:has(:indeterminate) .d-checkbox-check::after,.d-checkbox-inline:has(:indeterminate) .d-checkbox-check::after{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D\'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg\'%20width%3D\'24\'%20height%3D\'24\'%20viewBox%3D\'0%200%2024%2024\'%20fill%3D\'none\'%20stroke%3D\'black\'%20stroke-width%3D\'2\'%20stroke-linecap%3D\'round\'%20stroke-linejoin%3D\'round\'%3E%3Cline%20x1%3D\'5\'%20y1%3D\'12\'%20x2%3D\'19\'%20y2%3D\'12\'%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D\'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg\'%20width%3D\'24\'%20height%3D\'24\'%20viewBox%3D\'0%200%2024%2024\'%20fill%3D\'none\'%20stroke%3D\'black\'%20stroke-width%3D\'2\'%20stroke-linecap%3D\'round\'%20stroke-linejoin%3D\'round\'%3E%3Cline%20x1%3D\'5\'%20y1%3D\'12\'%20x2%3D\'19\'%20y2%3D\'12\'%2F%3E%3C%2Fsvg%3E");opacity:1;transform:scale(1)}',
301
+ '@media(prefers-reduced-motion:reduce){.d-checkbox:has(:checked) .d-checkbox-check,.d-checkbox-inline:has(:checked) .d-checkbox-check{animation:none}.d-checkbox-check::after{transition:none}}',
302
+ '.d-checkbox-native:focus-visible~.d-checkbox-check{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
303
+ '.d-checkbox-label{font-size:var(--d-text-base)}',
304
+ '.d-checkbox-xs .d-checkbox-check{width:var(--d-checkbox-size-xs);height:var(--d-checkbox-size-xs)}',
305
+ '.d-checkbox-xs .d-checkbox-label{font-size:var(--d-field-text-xs)}',
306
+ '.d-checkbox-sm .d-checkbox-check{width:var(--d-checkbox-size-sm);height:var(--d-checkbox-size-sm)}',
307
+ '.d-checkbox-sm .d-checkbox-label{font-size:var(--d-field-text-sm)}',
308
+ '.d-checkbox-lg .d-checkbox-check{width:var(--d-checkbox-size-lg);height:var(--d-checkbox-size-lg)}',
309
+ '.d-checkbox-lg .d-checkbox-label{font-size:var(--d-field-text-lg)}',
310
+ '.d-checkbox-native:disabled~.d-checkbox-check{opacity:var(--d-disabled-opacity);cursor:not-allowed}',
311
+ '.d-checkbox-native:disabled~.d-checkbox-label{opacity:var(--d-disabled-opacity);cursor:not-allowed}',
312
+ '.d-checkbox-group{display:flex;flex-direction:column;gap:var(--d-sp-2)}',
313
+ '.d-checkbox-group-horizontal{flex-direction:row;gap:var(--d-sp-4)}',
314
+ '.d-checkbox-inline{display:inline-flex;align-items:center;position:relative}',
315
+
316
+ // ═══════════════════════════════════════════════════════════════
317
+ // SWITCH
318
+ // ═══════════════════════════════════════════════════════════════
319
+ '.d-switch{display:inline-flex;align-items:center;gap:var(--d-sp-2);cursor:pointer;user-select:none}',
320
+ '.d-switch-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}',
321
+ '.d-switch-track{position:relative;width:var(--d-switch-w);height:var(--d-switch-h);border-radius:calc(var(--d-switch-h) / 2);flex-shrink:0}',
322
+ '.d-switch-thumb{position:absolute;width:var(--d-switch-thumb);height:var(--d-switch-thumb);border-radius:50%;top:50%;transform:translateY(-50%);left:calc((var(--d-switch-h) - var(--d-switch-thumb)) / 2)}',
323
+ '.d-switch:has(:checked) .d-switch-thumb{left:calc(var(--d-switch-w) - var(--d-switch-thumb) - (var(--d-switch-h) - var(--d-switch-thumb)) / 2)}',
324
+ // Switch size variants
325
+ '.d-switch-xs{--d-switch-w:var(--d-switch-w-xs);--d-switch-h:var(--d-switch-h-xs);--d-switch-thumb:var(--d-switch-thumb-xs)}',
326
+ '.d-switch-xs .d-switch-label{font-size:var(--d-field-text-xs)}',
327
+ '.d-switch-sm{--d-switch-w:var(--d-switch-w-sm);--d-switch-h:var(--d-switch-h-sm);--d-switch-thumb:var(--d-switch-thumb-sm)}',
328
+ '.d-switch-sm .d-switch-label{font-size:var(--d-field-text-sm)}',
329
+ '.d-switch-lg{--d-switch-w:var(--d-switch-w-lg);--d-switch-h:var(--d-switch-h-lg);--d-switch-thumb:var(--d-switch-thumb-lg)}',
330
+ '.d-switch-lg .d-switch-label{font-size:var(--d-field-text-lg)}',
331
+ '.d-switch-label{font-size:var(--d-text-base)}',
332
+ '.d-switch-native:disabled~.d-switch-track{opacity:var(--d-disabled-opacity);cursor:not-allowed}',
333
+ '.d-switch:has(:disabled),.d-switch[data-disabled]{cursor:not-allowed}',
334
+
335
+ // ═══════════════════════════════════════════════════════════════
336
+ // RADIO GROUP
337
+ // ═══════════════════════════════════════════════════════════════
338
+ '.d-radiogroup{display:flex;flex-direction:column;gap:var(--d-sp-2)}',
339
+ '.d-radiogroup-horizontal{flex-direction:row;gap:var(--d-sp-4)}',
340
+ '.d-radio{display:inline-flex;align-items:center;gap:var(--d-sp-2);cursor:pointer;user-select:none}',
341
+ '.d-radio-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}',
342
+ '.d-radio-indicator{display:flex;align-items:center;justify-content:center;width:var(--d-checkbox-size);height:var(--d-checkbox-size);border-radius:50%;flex-shrink:0}',
343
+ '.d-radio-dot{width:calc(var(--d-checkbox-size) * 0.44);height:calc(var(--d-checkbox-size) * 0.44);border-radius:50%;transform:scale(0);transition:transform var(--d-duration-fast) var(--d-easing-standard)}',
344
+ '.d-radio:has(:checked) .d-radio-dot{transform:scale(1)}',
345
+ '.d-radio-label{font-size:var(--d-text-base)}',
346
+ '.d-radiogroup-xs .d-radio-indicator{width:var(--d-checkbox-size-xs);height:var(--d-checkbox-size-xs)}',
347
+ '.d-radiogroup-xs .d-radio-dot{width:calc(var(--d-checkbox-size-xs) * 0.44);height:calc(var(--d-checkbox-size-xs) * 0.44)}',
348
+ '.d-radiogroup-xs .d-radio-label{font-size:var(--d-field-text-xs)}',
349
+ '.d-radiogroup-sm .d-radio-indicator{width:var(--d-checkbox-size-sm);height:var(--d-checkbox-size-sm)}',
350
+ '.d-radiogroup-sm .d-radio-dot{width:calc(var(--d-checkbox-size-sm) * 0.44);height:calc(var(--d-checkbox-size-sm) * 0.44)}',
351
+ '.d-radiogroup-sm .d-radio-label{font-size:var(--d-field-text-sm)}',
352
+ '.d-radiogroup-lg .d-radio-indicator{width:var(--d-checkbox-size-lg);height:var(--d-checkbox-size-lg)}',
353
+ '.d-radiogroup-lg .d-radio-dot{width:calc(var(--d-checkbox-size-lg) * 0.44);height:calc(var(--d-checkbox-size-lg) * 0.44)}',
354
+ '.d-radiogroup-lg .d-radio-label{font-size:var(--d-field-text-lg)}',
355
+ '.d-radio-disabled{opacity:var(--d-disabled-opacity);cursor:not-allowed}',
356
+
357
+ // ═══════════════════════════════════════════════════════════════
358
+ // SELECT
359
+ // ═══════════════════════════════════════════════════════════════
360
+ '.d-select-wrap{position:relative;display:inline-flex;flex-direction:column}',
361
+ '.d-select{display:flex;align-items:center;justify-content:space-between;gap:var(--d-density-gap,var(--d-sp-2));width:100%;font:inherit;font-size:var(--d-density-text,var(--d-text-base));padding:var(--d-density-pad-y,var(--d-sp-2)) var(--d-density-pad-x,var(--d-sp-3));min-height:var(--d-density-min-h,auto);cursor:pointer;outline:none;text-align:left;border:none;background:none}',
362
+ // focus-visible handled by .d-field:focus-within on .d-select-wrap
363
+ '.d-select[disabled]{cursor:not-allowed;opacity:var(--d-disabled-opacity)}',
364
+ '.d-select-display{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}',
365
+ '.d-select-arrow{flex-shrink:0;font-size:var(--d-text-sm);transition:transform var(--d-duration-fast)}',
366
+ // Chevron rotation now handled by unified rule above (.d-select-open .d-caret, etc.)
367
+ '.d-select-dropdown{position:absolute;top:100%;left:0;right:0;z-index:var(--d-z-dropdown);max-height:var(--d-panel-max-h);overflow:auto;margin-top:var(--d-offset-dropdown);padding:var(--d-sp-1)}',
368
+ '.d-select-option{padding:var(--d-sp-2) var(--d-sp-3);cursor:pointer;font-size:var(--d-text-base);border-radius:var(--d-radius-inner)}',
369
+ '.d-select-option-disabled{opacity:var(--d-disabled-opacity);cursor:not-allowed}',
370
+ '.d-select-placeholder{color:var(--d-muted)}',
371
+ '.d-select-optgroup{padding:var(--d-sp-1) var(--d-sp-3);font-size:var(--d-text-sm);font-weight:var(--d-fw-title);color:var(--d-muted)}',
372
+ '.d-select-clear{display:flex;align-items:center;cursor:pointer;padding:0 var(--d-sp-2);font-size:var(--d-text-sm);opacity:var(--d-icon-muted)}',
373
+ '.d-select-clear:hover{opacity:1}',
374
+ '.d-select-multi-tag{display:inline-flex;align-items:center;gap:var(--d-sp-1);padding:var(--d-sp-1) var(--d-sp-2);font-size:var(--d-text-sm);border-radius:var(--d-radius)}',
375
+ '.d-select-multi-tag-close{cursor:pointer;font-size:0.75em;opacity:var(--d-icon-muted)}',
376
+ '.d-select-multi-tag-close:hover{opacity:1}',
377
+ // Size variants
378
+ '.d-select-xs .d-select{min-height:var(--d-field-h-xs);padding:var(--d-field-py-xs) var(--d-field-px-xs);font-size:var(--d-field-text-xs)}',
379
+ '.d-select-xs .d-select-option{padding:var(--d-field-py-xs) var(--d-field-px-xs);font-size:var(--d-field-text-xs)}',
380
+ '.d-select-sm .d-select{min-height:var(--d-field-h-sm);padding:var(--d-field-py-sm) var(--d-field-px-sm);font-size:var(--d-field-text-sm)}',
381
+ '.d-select-sm .d-select-option{padding:var(--d-field-py-sm) var(--d-field-px-sm);font-size:var(--d-field-text-sm)}',
382
+ '.d-select-lg .d-select{min-height:var(--d-field-h-lg);padding:var(--d-field-py-lg) var(--d-field-px-lg);font-size:var(--d-field-text-lg)}',
383
+ '.d-select-lg .d-select-option{padding:var(--d-field-py-lg) var(--d-field-px-lg);font-size:var(--d-field-text-lg)}',
384
+
385
+ // ═══════════════════════════════════════════════════════════════
386
+ // COMBOBOX / AUTOCOMPLETE
387
+ // ═══════════════════════════════════════════════════════════════
388
+ '.d-combobox{position:relative;display:inline-flex;flex-direction:column}',
389
+ '.d-combobox-input-wrap{display:flex;align-items:center}',
390
+ '.d-combobox-input{background:transparent;border:none;outline:none;width:100%;font:inherit;padding:var(--d-sp-2) var(--d-sp-3)}',
391
+ '.d-combobox-input[disabled]{cursor:not-allowed;opacity:var(--d-disabled-opacity)}',
392
+ '.d-combobox-arrow{flex-shrink:0;padding:0 var(--d-sp-2);cursor:pointer;font-size:var(--d-text-sm)}',
393
+ '.d-combobox-listbox{position:absolute;top:100%;left:0;right:0;z-index:var(--d-z-dropdown);max-height:var(--d-panel-max-h);overflow:auto;margin-top:var(--d-offset-dropdown);padding:var(--d-sp-1)}',
394
+ '.d-combobox-option{padding:var(--d-sp-2) var(--d-sp-3);cursor:pointer;font-size:var(--d-text-base);border-radius:var(--d-radius-inner)}',
395
+ '.d-combobox-option-disabled{opacity:var(--d-disabled-opacity);cursor:not-allowed}',
396
+ '.d-combobox-empty{padding:var(--d-sp-3);font-size:var(--d-text-sm);text-align:center}',
397
+ // Size variants
398
+ '.d-combobox-xs .d-combobox-input{min-height:var(--d-field-h-xs);padding:var(--d-field-py-xs) var(--d-field-px-xs);font-size:var(--d-field-text-xs)}',
399
+ '.d-combobox-xs .d-combobox-option{padding:var(--d-field-py-xs) var(--d-field-px-xs);font-size:var(--d-field-text-xs)}',
400
+ '.d-combobox-sm .d-combobox-input{min-height:var(--d-field-h-sm);padding:var(--d-field-py-sm) var(--d-field-px-sm);font-size:var(--d-field-text-sm)}',
401
+ '.d-combobox-sm .d-combobox-option{padding:var(--d-field-py-sm) var(--d-field-px-sm);font-size:var(--d-field-text-sm)}',
402
+ '.d-combobox-lg .d-combobox-input{min-height:var(--d-field-h-lg);padding:var(--d-field-py-lg) var(--d-field-px-lg);font-size:var(--d-field-text-lg)}',
403
+ '.d-combobox-lg .d-combobox-option{padding:var(--d-field-py-lg) var(--d-field-px-lg);font-size:var(--d-field-text-lg)}',
404
+
405
+ // ═══════════════════════════════════════════════════════════════
406
+ // SLIDER
407
+ // ═══════════════════════════════════════════════════════════════
408
+ '.d-slider{display:flex;align-items:center;gap:var(--d-sp-3);width:100%;user-select:none}',
409
+ '.d-slider-track{position:relative;flex:1;height:var(--d-slider-track-h);border-radius:var(--d-radius-full);cursor:pointer}',
410
+ '.d-slider-fill{position:absolute;top:0;left:0;height:100%;border-radius:var(--d-radius-full)}',
411
+ '.d-slider-thumb{position:absolute;top:50%;width:var(--d-slider-thumb);height:var(--d-slider-thumb);border-radius:50%;transform:translate(-50%,-50%);cursor:grab;outline:none}',
412
+ '.d-slider-thumb:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
413
+ '.d-slider-active .d-slider-thumb{cursor:grabbing}',
414
+ '.d-slider-disabled{opacity:var(--d-disabled-opacity);pointer-events:none}',
415
+ '.d-slider-value{font-size:var(--d-text-sm);min-width:2em;text-align:center}',
416
+ '.d-slider-marks{position:relative;width:100%;margin-top:var(--d-sp-1)}',
417
+ '.d-slider-mark{position:absolute;font-size:var(--d-text-xs);transform:translateX(-50%)}',
418
+ '.d-slider-vertical{flex-direction:column;width:auto;height:200px}',
419
+ '.d-slider-vertical .d-slider-track{width:var(--d-slider-track-h);height:100%;flex:1}',
420
+ '.d-slider-vertical .d-slider-fill{width:100%;height:auto;bottom:0;top:auto}',
421
+ '.d-slider-vertical .d-slider-thumb{left:50%;top:auto;transform:translate(-50%,50%)}',
422
+
423
+ // ═══════════════════════════════════════════════════════════════
424
+ // RATE (Star rating)
425
+ // ═══════════════════════════════════════════════════════════════
426
+ '.d-rate{display:inline-flex;gap:var(--d-sp-1);font-size:var(--d-rate-size)}',
427
+ '.d-rate-star{cursor:pointer;transition:transform var(--d-duration-instant),color var(--d-duration-instant);user-select:none;background:none;border:none;padding:0;font-size:inherit;line-height:var(--d-lh-none)}',
428
+ '.d-rate:not([aria-disabled="true"]) .d-rate-star:hover{transform:scale(1.15)}',
429
+ '.d-rate-star:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
430
+ '.d-rate[aria-disabled="true"] .d-rate-star{cursor:default;transform:none}',
431
+ '.d-rate-sm{font-size:var(--d-rate-size-sm);gap:var(--d-rate-gap-sm)}',
432
+ '.d-rate-lg{font-size:var(--d-rate-size-lg)}',
433
+
434
+ // ═══════════════════════════════════════════════════════════════
435
+ // COLOR PICKER
436
+ // ═══════════════════════════════════════════════════════════════
437
+ '.d-colorpicker{position:relative;display:inline-flex;flex-direction:column}',
438
+ '.d-colorpicker-trigger{display:inline-flex;align-items:center;gap:var(--d-sp-2);cursor:pointer;padding:var(--d-sp-1-5) var(--d-sp-3);font:inherit;font-size:var(--d-text-base);border:none;background:none;outline:none}',
439
+ '.d-colorpicker-swatch{width:var(--d-colorpicker-swatch);height:var(--d-colorpicker-swatch);border-radius:var(--d-radius-inner);flex-shrink:0}',
440
+ '.d-colorpicker-panel{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown);padding:var(--d-sp-5);margin-top:var(--d-offset-dropdown);min-width:240px;display:flex;flex-direction:column;gap:var(--d-sp-3)}',
441
+ '.d-colorpicker-controls{display:flex;flex-direction:column;gap:var(--d-sp-2)}',
442
+ '.d-colorpicker-saturation{position:relative;width:100%;height:var(--d-colorpicker-sat-h);cursor:crosshair;border-radius:var(--d-radius-inner)}',
443
+ '.d-colorpicker-bar-wrap{position:relative;display:flex;align-items:center;height:var(--d-colorpicker-thumb)}',
444
+ '.d-colorpicker-hue{position:relative;flex:1;height:var(--d-colorpicker-bar-h);border-radius:var(--d-radius-inner);cursor:pointer;background:linear-gradient(to right,red,yellow,lime,cyan,blue,magenta,red)}',
445
+ '.d-colorpicker-alpha{position:relative;flex:1;height:var(--d-colorpicker-bar-h);border-radius:var(--d-radius-inner);cursor:pointer}',
446
+ '.d-colorpicker-thumb{position:absolute;width:var(--d-colorpicker-thumb);height:var(--d-colorpicker-thumb);border-radius:50%;border:var(--d-border-width-strong) solid white;box-shadow:var(--d-elevation-1);transform:translate(-50%,-50%);pointer-events:none;box-sizing:border-box}',
447
+ '.d-colorpicker-input{display:flex;gap:var(--d-sp-2);align-items:center}',
448
+ '.d-colorpicker-input input{flex:1;font:inherit;font-size:var(--d-text-sm);padding:var(--d-sp-1) var(--d-sp-2);border-radius:var(--d-radius-inner);border:var(--d-border-width) solid var(--d-border);background:var(--d-surface-0);color:var(--d-fg);outline:none;box-sizing:border-box}',
449
+ '.d-colorpicker-input input:focus{border-color:var(--d-ring)}',
450
+ '.d-colorpicker-presets-section{display:flex;flex-direction:column;gap:var(--d-sp-1);border-top:var(--d-border-width) solid var(--d-border);padding-top:var(--d-sp-3)}',
451
+ '.d-colorpicker-presets-label{font-size:var(--d-text-xs);color:var(--d-muted-fg)}',
452
+ '.d-colorpicker-presets{display:flex;flex-wrap:wrap;gap:var(--d-sp-1)}',
453
+ '.d-colorpicker-preset{width:var(--d-colorpicker-preset);height:var(--d-colorpicker-preset);border-radius:var(--d-radius-inner);cursor:pointer;border:none;padding:0}',
454
+
455
+ // ═══════════════════════════════════════════════════════════════
456
+ // COLOR PALETTE
457
+ // ═══════════════════════════════════════════════════════════════
458
+ '.d-colorpalette{display:flex;flex-direction:column;gap:var(--d-sp-3)}',
459
+ '.d-colorpalette-toolbar{display:flex;flex-wrap:wrap;gap:var(--d-sp-2);align-items:center}',
460
+ '.d-colorpalette-swatches{display:flex;flex-wrap:wrap;gap:var(--d-sp-3)}',
461
+ '.d-colorpalette-swatch{display:flex;flex-direction:column;gap:var(--d-sp-1);border-radius:var(--d-radius);cursor:grab;outline:none}',
462
+ '.d-colorpalette-swatch:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
463
+ '.d-colorpalette-swatch-color{position:relative;width:var(--d-colorpalette-swatch-w);height:var(--d-colorpalette-swatch-h);border-radius:var(--d-radius-inner);display:flex;align-items:flex-end;padding:var(--d-sp-1);box-shadow:var(--d-elevation-1);transition:box-shadow var(--d-duration-fast) var(--d-easing-standard)}',
464
+ '.d-colorpalette-swatch-color:hover{box-shadow:var(--d-elevation-2)}',
465
+ '.d-colorpalette-lock{position:absolute;top:var(--d-sp-1);right:var(--d-sp-1);opacity:0;transition:opacity var(--d-duration-fast) var(--d-easing-standard);background:none;border:none;cursor:pointer;padding:0;line-height:1}',
466
+ '.d-colorpalette-swatch:hover .d-colorpalette-lock,.d-colorpalette-lock[aria-pressed="true"]{opacity:1}',
467
+ '.d-colorpalette-contrast{position:absolute;bottom:var(--d-sp-1);left:var(--d-sp-1);font-size:var(--d-text-xs);padding:var(--d-sp-0-5) var(--d-sp-1);border-radius:var(--d-radius-inner);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);line-height:var(--d-lh-none)}',
468
+ '.d-colorpalette-swatch-info{display:flex;align-items:center;gap:var(--d-sp-1);font-family:var(--d-font-mono);font-size:var(--d-text-sm)}',
469
+ '.d-colorpalette-hex{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--d-muted-fg)}',
470
+ '.d-colorpalette-copy,.d-colorpalette-edit,.d-colorpalette-remove{opacity:0;transition:opacity var(--d-duration-fast) var(--d-easing-standard);background:none;border:none;cursor:pointer;padding:0;color:var(--d-muted-fg);line-height:1}',
471
+ '.d-colorpalette-copy:hover,.d-colorpalette-edit:hover,.d-colorpalette-remove:hover{color:var(--d-fg)}',
472
+ '.d-colorpalette-swatch:hover .d-colorpalette-copy,.d-colorpalette-swatch:hover .d-colorpalette-edit,.d-colorpalette-swatch:hover .d-colorpalette-remove{opacity:1}',
473
+ '.d-colorpalette-shades{display:flex;gap:var(--d-sp-0-5)}',
474
+ '.d-colorpalette-shade{flex:1;height:var(--d-colorpalette-shade-h);border-radius:var(--d-radius-inner);transition:transform var(--d-duration-fast) var(--d-easing-standard)}',
475
+ '.d-colorpalette-shade:hover{transform:scaleY(1.3)}',
476
+ '.d-colorpalette-add{display:flex;align-items:center;justify-content:center;width:var(--d-colorpalette-swatch-w);height:var(--d-colorpalette-swatch-h);border:var(--d-border-width) dashed var(--d-border);border-radius:var(--d-radius-inner);cursor:pointer;background:none;color:var(--d-muted-fg);transition:border-color var(--d-duration-fast) var(--d-easing-standard),color var(--d-duration-fast) var(--d-easing-standard)}',
477
+ '.d-colorpalette-add:hover{border-color:var(--d-primary);color:var(--d-primary)}',
478
+ '.d-colorpalette-add:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
479
+ '.d-colorpalette-sm{--d-colorpalette-swatch-w:var(--d-colorpalette-swatch-w-sm);--d-colorpalette-swatch-h:var(--d-colorpalette-swatch-h-sm)}',
480
+ '.d-colorpalette-lg{--d-colorpalette-swatch-w:var(--d-colorpalette-swatch-w-lg);--d-colorpalette-swatch-h:var(--d-colorpalette-swatch-h-lg)}',
481
+ '.d-colorpalette-swatch-dragging{opacity:var(--d-disabled-opacity);z-index:var(--d-z-dropdown)}',
482
+
483
+ // ═══════════════════════════════════════════════════════════════
484
+ // DATE PICKER
485
+ // ═══════════════════════════════════════════════════════════════
486
+ '.d-datepicker{position:relative;display:inline-flex;flex-direction:column}',
487
+ '.d-datepicker-input{display:flex;align-items:center}',
488
+ '.d-datepicker-panel{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown);margin-top:var(--d-offset-dropdown);padding:var(--d-sp-3);min-width:280px}',
489
+ '.d-datepicker-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--d-sp-2)}',
490
+ '.d-datepicker-title{background:none;border:none;font:inherit;color:inherit;font-weight:var(--d-fw-title);font-size:var(--d-text-base);cursor:pointer;padding:var(--d-sp-1) var(--d-sp-2);border-radius:var(--d-radius-inner);line-height:var(--d-lh-normal);transition:background var(--d-motion-state),color var(--d-motion-state)}',
491
+ '.d-datepicker-nav{display:flex;gap:var(--d-sp-1)}',
492
+ '.d-datepicker-nav-btn{background:none;border:none;cursor:pointer;padding:var(--d-sp-1-5);font-size:var(--d-text-base);line-height:var(--d-lh-none);border-radius:var(--d-radius-inner);display:inline-flex;align-items:center;justify-content:center;color:inherit;transition:background var(--d-motion-state),color var(--d-motion-state)}',
493
+ '.d-datepicker-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--d-border-width);text-align:center}',
494
+ '.d-datepicker-weekday{font-size:var(--d-text-xs);font-weight:var(--d-fw-medium,500);padding:var(--d-sp-1);color:var(--d-muted)}',
495
+ '.d-datepicker-day{padding:var(--d-sp-1);font-size:var(--d-text-sm);cursor:pointer;border-radius:var(--d-radius-inner);border:none;background:none;font:inherit;line-height:var(--d-lh-none);display:inline-flex;align-items:center;justify-content:center;aspect-ratio:1;transition:background var(--d-motion-state),color var(--d-motion-state),box-shadow var(--d-motion-state)}',
496
+ '.d-datepicker-day:hover{background:var(--d-item-hover-bg)}',
497
+ '.d-datepicker-day:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset-inset)}',
498
+ '.d-datepicker-day-today{font-weight:var(--d-fw-heading);box-shadow:inset 0 0 0 1px var(--d-border-strong)}',
499
+ '.d-datepicker-day-selected{font-weight:var(--d-fw-medium,500)}',
500
+ '.d-datepicker-day-outside{opacity:var(--d-disabled-opacity-soft)}',
501
+ '.d-datepicker-day-disabled{opacity:var(--d-disabled-opacity-soft);cursor:not-allowed}',
502
+ '.d-datepicker-months,.d-datepicker-years{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--d-sp-2)}',
503
+ '.d-datepicker-month,.d-datepicker-year{padding:var(--d-sp-2);text-align:center;cursor:pointer;border:none;background:none;font:inherit;border-radius:var(--d-radius-inner);color:inherit;transition:background var(--d-motion-state),color var(--d-motion-state)}',
504
+
505
+ // ═══════════════════════════════════════════════════════════════
506
+ // TIME PICKER
507
+ // ═══════════════════════════════════════════════════════════════
508
+ '.d-timepicker{position:relative;display:inline-flex;flex-direction:column}',
509
+ '.d-timepicker-panel{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown);margin-top:var(--d-offset-dropdown);display:flex;gap:0;padding:var(--d-sp-2);overflow:hidden}',
510
+ '.d-timepicker-columns{display:flex;gap:0}',
511
+ '.d-timepicker-column{display:flex;flex-direction:column;height:var(--d-timepicker-column-h);overflow-y:auto;min-width:56px;text-align:center;scrollbar-width:thin}',
512
+ '.d-timepicker-cell{padding:var(--d-sp-1-5) var(--d-sp-2);cursor:pointer;font-size:var(--d-text-sm);border:none;background:none;font:inherit}',
513
+ '.d-timepicker-cell-selected{font-weight:var(--d-fw-medium,500)}',
514
+ '.d-timepicker-cell-disabled{opacity:var(--d-disabled-opacity-soft);cursor:not-allowed}',
515
+
516
+ // ═══════════════════════════════════════════════════════════════
517
+ // UPLOAD
518
+ // ═══════════════════════════════════════════════════════════════
519
+ '.d-upload{display:flex;flex-direction:column;gap:var(--d-sp-2)}',
520
+ '.d-upload-dragger{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--d-sp-8);cursor:pointer;border:var(--d-border-width-strong) dashed var(--d-border);border-radius:var(--d-radius-lg,var(--d-radius));text-align:center;gap:var(--d-sp-2)}',
521
+ '.d-upload-dragger:hover{border-color:var(--d-ring)}',
522
+ '.d-upload-dragger-active{border-color:var(--d-ring);background:var(--d-surface-1)}',
523
+ '.d-upload-trigger{cursor:pointer}',
524
+ '.d-upload-input{display:none}',
525
+ '.d-upload-list{display:flex;flex-direction:column;gap:var(--d-sp-1)}',
526
+ '.d-upload-item{display:flex;align-items:center;gap:var(--d-sp-2);padding:var(--d-sp-1-5) var(--d-sp-2);font-size:var(--d-text-sm);border-radius:var(--d-radius-inner)}',
527
+ '.d-upload-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}',
528
+ '.d-upload-item-remove{cursor:pointer;background:none;border:none;padding:0;font-size:1em;opacity:var(--d-disabled-opacity)}',
529
+ '.d-upload-item-remove:hover{opacity:1}',
530
+
531
+ // ═══════════════════════════════════════════════════════════════
532
+ // TRANSFER
533
+ // ═══════════════════════════════════════════════════════════════
534
+ '.d-transfer{display:flex;align-items:stretch;gap:var(--d-sp-3)}',
535
+ '.d-transfer-panel{display:flex;flex-direction:column;flex:1;min-width:200px;overflow:hidden}',
536
+ '.d-transfer-header{display:flex;align-items:center;justify-content:space-between;padding:var(--d-sp-2) var(--d-sp-3);font-size:var(--d-text-sm);font-weight:var(--d-fw-medium,500)}',
537
+ '.d-transfer-header label{display:flex;align-items:center;gap:var(--d-sp-2);cursor:pointer}',
538
+ '.d-transfer-body{flex:1;overflow:auto;min-height:200px}',
539
+ '.d-transfer-item{display:flex;align-items:center;gap:var(--d-sp-2);padding:var(--d-sp-1-5) var(--d-sp-3);cursor:pointer;font-size:var(--d-text-sm)}',
540
+ '.d-transfer-item:hover{background:var(--d-item-hover-bg)}',
541
+ '.d-transfer-item-disabled{opacity:var(--d-disabled-opacity);cursor:not-allowed}',
542
+ '.d-transfer-search{padding:var(--d-sp-2) var(--d-sp-3)}',
543
+ '.d-transfer-search input{font-size:var(--d-text-sm)}',
544
+ '.d-transfer-actions{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--d-sp-2)}',
545
+ '.d-transfer-footer{padding:var(--d-sp-2) var(--d-sp-3);font-size:var(--d-text-sm)}',
546
+
547
+ // ═══════════════════════════════════════════════════════════════
548
+ // CASCADER
549
+ // ═══════════════════════════════════════════════════════════════
550
+ '.d-cascader{position:relative;display:inline-flex;flex-direction:column}',
551
+ '.d-cascader-trigger{display:flex;align-items:center;gap:var(--d-sp-2);cursor:pointer;padding:var(--d-sp-2) var(--d-sp-3);outline:none}',
552
+ '.d-cascader-trigger:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset-inset)}',
553
+ '.d-cascader-display{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}',
554
+ '.d-cascader-placeholder{flex:1;min-width:0;color:var(--d-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}',
555
+ '.d-cascader-trigger .d-caret{flex-shrink:0;margin-left:auto}',
556
+ '.d-cascader-input{background:transparent;border:none;outline:none;flex:1;min-width:0;font:inherit;padding:0}',
557
+ '.d-cascader-disabled{cursor:not-allowed;opacity:var(--d-disabled-opacity)}',
558
+ '.d-cascader-clear{display:flex;align-items:center;cursor:pointer;padding:0 var(--d-sp-2);font-size:var(--d-text-sm);opacity:var(--d-icon-muted);border:none;background:none}',
559
+ '.d-cascader-clear:hover{opacity:1}',
560
+ '.d-cascader-dropdown{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown);display:flex;margin-top:var(--d-offset-dropdown);overflow:hidden}',
561
+ '.d-cascader-column{min-width:140px;max-height:var(--d-panel-max-h);overflow:auto;padding:var(--d-sp-1)}',
562
+ '.d-cascader-option{display:flex;align-items:center;justify-content:space-between;padding:var(--d-sp-2) var(--d-sp-3);cursor:pointer;font-size:var(--d-text-base);white-space:nowrap;border-radius:var(--d-radius-inner)}',
563
+ '.d-cascader-option:hover{background:var(--d-item-hover-bg)}',
564
+ '.d-cascader-option-disabled{opacity:var(--d-disabled-opacity);cursor:not-allowed}',
565
+ '.d-cascader-option-active{font-weight:var(--d-fw-medium,500)}',
566
+ '.d-cascader-arrow{font-size:var(--d-text-xs);opacity:var(--d-icon-muted)}',
567
+
568
+ // ═══════════════════════════════════════════════════════════════
569
+ // MENTIONS
570
+ // ═══════════════════════════════════════════════════════════════
571
+ '.d-mentions{position:relative;display:inline-flex;flex-direction:column}',
572
+ '.d-mentions-dropdown{position:absolute;bottom:100%;left:0;z-index:var(--d-z-dropdown);min-width:160px;max-height:var(--d-panel-max-h);overflow:auto;margin-bottom:var(--d-offset-dropdown);padding:var(--d-sp-1)}',
573
+ '.d-mentions-option{padding:var(--d-sp-2) var(--d-sp-3);cursor:pointer;font-size:var(--d-text-base);border-radius:var(--d-radius-inner)}',
574
+ '.d-mentions-option:hover{background:var(--d-item-hover-bg)}',
575
+
576
+ // ═══════════════════════════════════════════════════════════════
577
+ // LABEL
578
+ // ═══════════════════════════════════════════════════════════════
579
+ '.d-label{display:inline-block;font-size:var(--d-text-sm);font-weight:var(--d-fw-medium,500);line-height:var(--d-lh-normal);cursor:default}',
580
+ '.d-label-required::after{content:" *";color:var(--d-error)}',
581
+
582
+ // ═══════════════════════════════════════════════════════════════
583
+ // FORM FIELD (wrapper for any form control)
584
+ // ═══════════════════════════════════════════════════════════════
585
+ '.d-form-field{display:flex;flex-direction:column;gap:var(--d-sp-1-5)}',
586
+ '.d-form-field-label{font-size:var(--d-text-sm);font-weight:var(--d-fw-medium,500);line-height:var(--d-lh-normal)}',
587
+ '.d-form-field-required{color:var(--d-error)}',
588
+ '.d-form-field-help{font-size:var(--d-text-xs);color:var(--d-muted)}',
589
+ '.d-form-field-error{font-size:var(--d-text-xs);color:var(--d-error)}',
590
+ '.d-form{display:flex;flex-direction:column;gap:var(--d-sp-4)}',
591
+ '.d-form-horizontal{display:grid;grid-template-columns:auto 1fr;gap:var(--d-sp-3) var(--d-sp-4);align-items:start}',
592
+ '.d-form-actions{display:flex;gap:var(--d-sp-2);justify-content:flex-end}',
593
+
594
+ // ═══════════════════════════════════════════════════════════════
595
+ // MODAL (native <dialog>)
596
+ // ═══════════════════════════════════════════════════════════════
597
+ 'dialog.d-modal-content{border:0;padding:0;position:fixed;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;background:transparent}',
598
+ 'dialog.d-modal-content[open]{display:flex;align-items:center;justify-content:center}',
599
+ 'dialog.d-modal-content::backdrop{background:var(--d-overlay)}',
600
+ '.d-modal-panel{max-width:90vw;max-height:85vh;overflow:auto;display:flex;flex-direction:column}',
601
+ '.d-modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--d-compound-pad) var(--d-compound-pad) 0}',
602
+ '.d-modal-title{font-weight:var(--d-fw-title);font-size:var(--d-text-lg)}',
603
+ '.d-modal-body{padding:var(--d-compound-gap) var(--d-compound-pad)}',
604
+ '.d-modal-body:last-child{padding-bottom:var(--d-compound-pad)}',
605
+ '.d-modal-footer{display:flex;justify-content:flex-end;gap:var(--d-sp-2);padding:var(--d-compound-gap) var(--d-compound-pad) var(--d-compound-pad)}',
606
+ '.d-modal-close,.d-drawer-close,.d-notification-close,.d-tour-close{cursor:pointer;line-height:var(--d-lh-none);background:none;border:none;font-size:var(--d-text-xl);padding:var(--d-sp-1);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}',
607
+
608
+ // ═══════════════════════════════════════════════════════════════
609
+ // ALERT DIALOG (confirmation modal)
610
+ // ═══════════════════════════════════════════════════════════════
611
+ 'dialog.d-alertdialog{border:0;padding:0;position:fixed;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;background:transparent}',
612
+ 'dialog.d-alertdialog[open]{display:flex;align-items:center;justify-content:center}',
613
+ 'dialog.d-alertdialog::backdrop{background:var(--d-overlay)}',
614
+ '.d-alertdialog-panel{max-width:420px;display:flex;flex-direction:column}',
615
+ '.d-alertdialog-body{padding:var(--d-compound-pad);display:flex;flex-direction:column;gap:var(--d-sp-2)}',
616
+ '.d-alertdialog-title{font-weight:var(--d-fw-title);font-size:var(--d-text-lg)}',
617
+ '.d-alertdialog-desc{font-size:var(--d-text-base);color:var(--d-muted);line-height:var(--d-lh-normal)}',
618
+ '.d-alertdialog-footer{display:flex;justify-content:flex-end;gap:var(--d-sp-2);padding:var(--d-compound-gap) var(--d-compound-pad) var(--d-compound-pad)}',
619
+
620
+ // ═══════════════════════════════════════════════════════════════
621
+ // DRAWER (native <dialog>, 4 positions)
622
+ // ═══════════════════════════════════════════════════════════════
623
+ 'dialog.d-drawer{border:0;padding:0;position:fixed;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;background:transparent}',
624
+ 'dialog.d-drawer::backdrop{background:var(--d-overlay)}',
625
+ '.d-drawer-panel{position:absolute;display:flex;flex-direction:column;overflow:auto;outline:none}',
626
+ '.d-drawer-left{top:0;bottom:0;left:0}',
627
+ '.d-drawer-right{top:0;bottom:0;right:0}',
628
+ '.d-drawer-top{top:0;left:0;right:0}',
629
+ '.d-drawer-bottom{bottom:0;left:0;right:0;max-height:var(--d-drawer-bottom-max-h,85vh);border-top-left-radius:var(--d-radius-lg,12px);border-top-right-radius:var(--d-radius-lg,12px)}',
630
+ '.d-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:var(--d-compound-pad) var(--d-compound-pad) 0}',
631
+ '.d-drawer-title{font-weight:var(--d-fw-title);font-size:var(--d-text-lg)}',
632
+ '.d-drawer-body{flex:1;overflow:auto;padding:var(--d-compound-gap) var(--d-compound-pad)}',
633
+ '.d-drawer-body:last-child{padding-bottom:var(--d-compound-pad)}',
634
+ '.d-drawer-footer{display:flex;justify-content:flex-end;gap:var(--d-sp-2);padding:var(--d-compound-gap) var(--d-compound-pad) var(--d-compound-pad)}',
635
+
636
+ // ═══════════════════════════════════════════════════════════════
637
+ // TOOLTIP
638
+ // ═══════════════════════════════════════════════════════════════
639
+ '.d-tooltip-wrap{position:relative;display:inline-flex}',
640
+ '.d-tooltip{position:absolute;z-index:var(--d-z-tooltip);padding:var(--d-sp-1-5) var(--d-sp-2-5);font-size:var(--d-text-sm);line-height:var(--d-lh-normal);white-space:nowrap;pointer-events:none}',
641
+ '.d-tooltip-top{bottom:100%;left:50%;transform:translateX(-50%);margin-bottom:var(--d-offset-tooltip)}',
642
+ '.d-tooltip-bottom{top:100%;left:50%;transform:translateX(-50%);margin-top:var(--d-offset-tooltip)}',
643
+ '.d-tooltip-left{right:100%;top:50%;transform:translateY(-50%);margin-right:var(--d-offset-tooltip)}',
644
+ '.d-tooltip-right{left:100%;top:50%;transform:translateY(-50%);margin-left:var(--d-offset-tooltip)}',
645
+
646
+ // ═══════════════════════════════════════════════════════════════
647
+ // POPOVER
648
+ // ═══════════════════════════════════════════════════════════════
649
+ '.d-popover{position:relative;display:inline-flex}',
650
+ '.d-popover-content{position:absolute;z-index:var(--d-z-popover);min-width:200px;padding:var(--d-sp-3)}',
651
+ '.d-popover-top{bottom:100%;left:50%;transform:translateX(-50%);margin-bottom:var(--d-offset-popover)}',
652
+ '.d-popover-bottom{top:100%;left:50%;transform:translateX(-50%);margin-top:var(--d-offset-popover)}',
653
+ '.d-popover-left{right:100%;top:50%;transform:translateY(-50%);margin-right:var(--d-offset-popover)}',
654
+ '.d-popover-right{left:100%;top:50%;transform:translateY(-50%);margin-left:var(--d-offset-popover)}',
655
+ '.d-popover-align-start{left:0;transform:none}',
656
+ '.d-popover-align-end{left:auto;right:0;transform:none}',
657
+ '.d-popover-top.d-popover-align-start,.d-popover-bottom.d-popover-align-start{left:0;transform:none}',
658
+ '.d-popover-top.d-popover-align-end,.d-popover-bottom.d-popover-align-end{left:auto;right:0;transform:none}',
659
+
660
+ // ═══════════════════════════════════════════════════════════════
661
+ // HOVER CARD
662
+ // ═══════════════════════════════════════════════════════════════
663
+ '.d-hovercard{position:relative;display:inline-flex}',
664
+ '.d-hovercard-content{position:absolute;z-index:var(--d-z-popover);min-width:240px;padding:var(--d-sp-3);pointer-events:auto}',
665
+
666
+ // ═══════════════════════════════════════════════════════════════
667
+ // DROPDOWN
668
+ // ═══════════════════════════════════════════════════════════════
669
+ '.d-dropdown{position:relative;display:inline-flex}',
670
+ '.d-dropdown-menu{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown);min-width:180px;margin-top:var(--d-offset-menu);overflow:auto;max-height:var(--d-panel-max-h);padding:var(--d-sp-1)}',
671
+ '.d-dropdown-right{left:auto;right:0}',
672
+ '.d-dropdown-item{display:flex;align-items:center;gap:var(--d-sp-2);padding:var(--d-sp-2) var(--d-sp-3);cursor:pointer;font-size:var(--d-text-base);outline:none;border-radius:var(--d-radius-inner)}',
673
+ '.d-dropdown-item-disabled{opacity:var(--d-disabled-opacity);cursor:not-allowed}',
674
+ '.d-dropdown-item-label{flex:1}',
675
+ '.d-dropdown-item-icon{flex-shrink:0;width:1em;height:1em}',
676
+ '.d-dropdown-item-shortcut{flex-shrink:0;font-size:var(--d-text-sm);opacity:var(--d-icon-muted)}',
677
+ '.d-dropdown-separator{height:1px;margin:var(--d-sp-1) 0}',
678
+ '.d-dropdown-group-label{padding:var(--d-sp-1) var(--d-sp-3);font-size:var(--d-text-xs);font-weight:var(--d-fw-title);color:var(--d-muted);text-transform:uppercase;letter-spacing:var(--d-ls-caps)}',
679
+
680
+ // ═══════════════════════════════════════════════════════════════
681
+ // CONTEXT MENU
682
+ // ═══════════════════════════════════════════════════════════════
683
+ '.d-contextmenu{position:fixed;z-index:var(--d-z-popover);min-width:180px;max-height:var(--d-panel-max-h);overflow:auto;padding:var(--d-sp-1)}',
684
+
685
+ // ═══════════════════════════════════════════════════════════════
686
+ // COMMAND PALETTE
687
+ // ═══════════════════════════════════════════════════════════════
688
+ 'dialog.d-command{border:0;padding:0;position:fixed;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;background:transparent}',
689
+ 'dialog.d-command[open]{display:flex;align-items:center;justify-content:center}',
690
+ '.d-command-panel{display:flex;flex-direction:column;max-height:400px;overflow:hidden;width:560px;max-width:90vw}',
691
+ '.d-command-input-wrap{display:flex;align-items:center;padding:var(--d-sp-2) var(--d-sp-3);gap:var(--d-sp-2)}',
692
+ '.d-command-input{flex:1;background:transparent;border:none;outline:none;font:inherit;font-size:var(--d-text-base)}',
693
+ '.d-command-icon{flex-shrink:0;opacity:var(--d-icon-muted)}',
694
+ '.d-command-list{flex:1;overflow:auto;padding:var(--d-sp-1)}',
695
+ '.d-command-group{padding:var(--d-sp-1) 0}',
696
+ '.d-command-group-label{padding:var(--d-sp-1) var(--d-sp-3);font-size:var(--d-text-xs);font-weight:var(--d-fw-title);color:var(--d-muted);text-transform:uppercase;letter-spacing:var(--d-ls-caps)}',
697
+ '.d-command-item{display:flex;align-items:center;gap:var(--d-sp-2);padding:var(--d-sp-2) var(--d-sp-3);cursor:pointer;font-size:var(--d-text-base);outline:none;border-radius:var(--d-radius-inner)}',
698
+ '.d-command-item-icon{flex-shrink:0;width:1em;height:1em}',
699
+ '.d-command-item-label{flex:1}',
700
+ '.d-command-item-shortcut{font-size:var(--d-text-sm);opacity:var(--d-icon-muted)}',
701
+ '.d-command-empty{padding:var(--d-sp-6);text-align:center;font-size:var(--d-text-sm);color:var(--d-muted)}',
702
+ '.d-command-separator{height:1px;margin:var(--d-sp-1) 0;background:var(--d-border)}',
703
+
704
+ // ═══════════════════════════════════════════════════════════════
705
+ // POPCONFIRM
706
+ // ═══════════════════════════════════════════════════════════════
707
+ '.d-popconfirm-wrap{position:relative;display:inline-flex}',
708
+ '.d-popconfirm{position:absolute;z-index:var(--d-z-popover);min-width:220px;padding:var(--d-sp-3);display:flex;flex-direction:column;gap:var(--d-sp-3)}',
709
+ '.d-popconfirm-body{display:flex;align-items:flex-start;gap:var(--d-sp-2)}',
710
+ '.d-popconfirm-text{display:flex;flex-direction:column;gap:var(--d-sp-1)}',
711
+ '.d-popconfirm-title{font-size:var(--d-text-base);font-weight:var(--d-fw-medium,500)}',
712
+ '.d-popconfirm-desc{font-size:var(--d-text-sm);color:var(--d-muted);line-height:var(--d-lh-normal)}',
713
+ '.d-popconfirm-footer{display:flex;justify-content:flex-end;gap:var(--d-sp-2)}',
714
+
715
+ // ═══════════════════════════════════════════════════════════════
716
+ // TABS
717
+ // ═══════════════════════════════════════════════════════════════
718
+ '.d-tabs{display:flex;flex-direction:column}',
719
+ '.d-tabs-list{display:flex;gap:0}',
720
+ '.d-tab{font:inherit;font-size:var(--d-text-base);font-weight:var(--d-fw-medium,500);padding:var(--d-sp-2-5) var(--d-sp-4);cursor:pointer;outline:none;background:transparent;border:none;white-space:nowrap}',
721
+ '.d-tab:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset-inset)}',
722
+ '.d-tabs-panel{padding:var(--d-sp-6) var(--d-sp-4) var(--d-sp-4)}',
723
+ '.d-tabs-vertical{flex-direction:row}',
724
+ '.d-tabs-vertical .d-tabs-list{flex-direction:column}',
725
+ '.d-tab[disabled]{cursor:not-allowed;opacity:var(--d-disabled-opacity)}',
726
+ '.d-tabs[data-disabled]{opacity:var(--d-disabled-opacity);pointer-events:none}',
727
+ '.d-tabs-sm .d-tab{padding:var(--d-sp-1-5) var(--d-sp-3);font-size:var(--d-text-sm)}',
728
+ '.d-tabs-lg .d-tab{padding:var(--d-sp-3) var(--d-sp-5);font-size:var(--d-text-md)}',
729
+ '.d-tab-closable{display:flex;align-items:center;gap:var(--d-sp-1)}',
730
+ '.d-tab-close{opacity:var(--d-disabled-opacity);font-size:0.75em;cursor:pointer;background:none;border:none;padding:0;color:inherit}',
731
+ '.d-tab-close:hover{opacity:1}',
732
+ '.d-tabs-panel-container{flex:1;min-width:0}',
733
+ '.d-tabs-vertical .d-tabs-list{min-width:max-content}',
734
+
735
+ // ═══════════════════════════════════════════════════════════════
736
+ // ACCORDION / COLLAPSIBLE
737
+ // ═══════════════════════════════════════════════════════════════
738
+ '.d-accordion{display:flex;flex-direction:column}',
739
+ '.d-accordion-item{border-bottom:1px solid var(--d-border)}',
740
+ '.d-accordion-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;flex:1 1 0%;font:inherit;font-size:var(--d-text-base);font-weight:var(--d-fw-medium,500);line-height:var(--d-lh-normal);padding:var(--d-sp-4) 0;cursor:pointer;outline:none;background:transparent;border:none;text-align:left;transition:all var(--d-duration-fast);color:inherit}',
741
+ '.d-accordion-trigger:hover{text-decoration-line:underline;text-underline-offset:4px}',
742
+ '.d-accordion-trigger:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset-inset)}',
743
+ '.d-accordion-trigger[data-disabled]{opacity:var(--d-disabled-opacity);cursor:not-allowed;pointer-events:none}',
744
+ '.d-accordion-icon{font-size:var(--d-text-sm);transition:transform var(--d-duration-fast);flex-shrink:0}',
745
+ '.d-accordion-open .d-accordion-icon{transform:rotate(180deg)}',
746
+ '.d-accordion-region{overflow:hidden;transition:height var(--d-duration-normal) var(--d-easing-decelerate)}',
747
+ '.d-accordion-content{padding-bottom:var(--d-sp-4);color:var(--d-muted-fg);font-size:var(--d-text-sm)}',
748
+ '.d-collapsible{display:flex;flex-direction:column}',
749
+ '.d-collapsible-trigger{cursor:pointer;user-select:none}',
750
+ '.d-collapsible-content{overflow:hidden;transition:height var(--d-duration-normal) var(--d-easing-decelerate)}',
751
+
752
+ // ═══════════════════════════════════════════════════════════════
753
+ // SEPARATOR / DIVIDER
754
+ // ═══════════════════════════════════════════════════════════════
755
+ '.d-separator{border:none;margin:var(--d-sp-3) 0}',
756
+ 'hr.d-separator{height:1px;background:var(--d-border)}',
757
+ '.d-separator-vertical{display:inline-block;width:1px;height:1em;margin:0 var(--d-sp-2);vertical-align:middle}',
758
+ 'div.d-separator{display:flex;align-items:center;gap:var(--d-sp-3)}',
759
+ '.d-separator-line{flex:1;height:1px;background:var(--d-border)}',
760
+ '.d-separator-label{font-size:var(--d-text-sm);white-space:nowrap}',
761
+
762
+ // ═══════════════════════════════════════════════════════════════
763
+ // BREADCRUMB
764
+ // ═══════════════════════════════════════════════════════════════
765
+ '.d-breadcrumb-list{display:flex;align-items:center;gap:var(--d-sp-1);list-style:none;margin:0;padding:0;flex-wrap:wrap}',
766
+ '.d-breadcrumb-item{display:flex;align-items:center;gap:var(--d-sp-1)}',
767
+ '.d-breadcrumb-link{display:inline-flex;align-items:center;gap:var(--d-sp-1);font:inherit;font-size:var(--d-text-base);line-height:var(--d-lh-normal);text-decoration:none;cursor:pointer;background:transparent;border:none;padding:0;outline:none;border-radius:var(--d-radius-inner)}',
768
+ '.d-breadcrumb-link:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
769
+ '.d-breadcrumb-link-disabled{opacity:var(--d-disabled-opacity);cursor:not-allowed;pointer-events:none}',
770
+ '.d-breadcrumb-separator{display:inline-flex;align-items:center;font-size:var(--d-text-sm);line-height:var(--d-lh-none)}',
771
+ '.d-breadcrumb-current{display:inline-flex;align-items:center;gap:var(--d-sp-1);font-size:var(--d-text-base);font-weight:var(--d-fw-medium,500);line-height:var(--d-lh-normal)}',
772
+ '.d-breadcrumb-icon{flex-shrink:0}',
773
+ '.d-breadcrumb-ellipsis{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;padding:var(--d-sp-0-5);border-radius:var(--d-radius-inner);outline:none}',
774
+ '.d-breadcrumb-ellipsis:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
775
+ '.d-breadcrumb-collapse{position:relative;display:inline-flex}',
776
+ '.d-breadcrumb-menu{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown);min-width:120px;margin-top:var(--d-offset-menu);overflow:auto;max-height:var(--d-panel-max-h);padding:var(--d-sp-1)}',
777
+ '.d-breadcrumb-sm .d-breadcrumb-link,.d-breadcrumb-sm .d-breadcrumb-current{font-size:var(--d-text-sm)}',
778
+ '.d-breadcrumb-sm .d-breadcrumb-separator{font-size:var(--d-text-xs)}',
779
+ '.d-breadcrumb-lg .d-breadcrumb-link,.d-breadcrumb-lg .d-breadcrumb-current{font-size:var(--d-text-md)}',
780
+ '.d-breadcrumb-lg .d-breadcrumb-list{gap:var(--d-sp-2)}',
781
+ '.d-breadcrumb-lg .d-breadcrumb-item{gap:var(--d-sp-2)}',
782
+
783
+ // ═══════════════════════════════════════════════════════════════
784
+ // PAGINATION
785
+ // ═══════════════════════════════════════════════════════════════
786
+ '.d-pagination{display:flex;align-items:center}',
787
+ '.d-pagination-list{display:flex;align-items:center;gap:var(--d-sp-1);list-style:none;margin:0;padding:0}',
788
+ '.d-pagination-btn{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;padding:0 var(--d-sp-2);font:inherit;font-size:var(--d-text-base);cursor:pointer;outline:none;background:transparent;border:none}',
789
+ '.d-pagination-btn:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
790
+ '.d-pagination-disabled{opacity:var(--d-disabled-opacity-soft);cursor:not-allowed;pointer-events:none}',
791
+ '.d-pagination-ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;font-size:var(--d-text-base)}',
792
+ '.d-pagination-simple{display:flex;align-items:center;gap:var(--d-sp-2)}',
793
+ '.d-pagination-sm .d-pagination-btn{min-width:var(--d-field-h-sm);height:var(--d-field-h-sm);font-size:var(--d-field-text-sm)}',
794
+ '.d-pagination-sm .d-pagination-ellipsis{min-width:var(--d-field-h-sm);height:var(--d-field-h-sm);font-size:var(--d-field-text-sm)}',
795
+ '.d-pagination-lg .d-pagination-btn{min-width:var(--d-field-h-lg);height:var(--d-field-h-lg);font-size:var(--d-field-text-lg)}',
796
+ '.d-pagination-lg .d-pagination-ellipsis{min-width:var(--d-field-h-lg);height:var(--d-field-h-lg);font-size:var(--d-field-text-lg)}',
797
+
798
+ // ═══════════════════════════════════════════════════════════════
799
+ // STEPS / STEPPER
800
+ // ═══════════════════════════════════════════════════════════════
801
+ '.d-steps{display:flex;align-items:flex-start}',
802
+ '.d-steps-vertical{flex-direction:column;gap:var(--d-sp-2)}',
803
+ '.d-step{display:flex;align-items:flex-start;flex:1;gap:var(--d-sp-2)}',
804
+ '.d-step:last-child{flex:none}',
805
+ '.d-step-clickable{cursor:pointer}',
806
+ '.d-step-icon{display:flex;align-items:center;justify-content:center;width:var(--d-step-icon-size);height:var(--d-step-icon-size);border-radius:50%;flex-shrink:0;font-size:var(--d-text-sm);font-weight:var(--d-fw-medium,500)}',
807
+ '.d-step-content{display:flex;flex-direction:column;gap:var(--d-sp-1);min-width:0}',
808
+ '.d-step-title{font-size:var(--d-text-base);font-weight:var(--d-fw-medium,500);line-height:var(--d-step-icon-size)}',
809
+ '.d-step-desc{font-size:var(--d-text-sm);color:var(--d-muted);line-height:var(--d-lh-normal)}',
810
+ '.d-step-connector{flex:1;height:2px;align-self:center;min-width:var(--d-sp-4)}',
811
+ '.d-steps-vertical .d-step{flex:none;position:relative}',
812
+ '.d-steps-vertical .d-step-connector{position:absolute;left:calc(var(--d-step-icon-size) / 2 - 1px);top:var(--d-step-icon-size);bottom:calc(-1 * var(--d-sp-2));width:2px;height:auto;flex:none;align-self:auto;min-width:0}',
813
+
814
+ // ═══════════════════════════════════════════════════════════════
815
+ // SEGMENTED CONTROL
816
+ // ═══════════════════════════════════════════════════════════════
817
+ '.d-segmented{display:inline-flex;padding:var(--d-sp-0-5);border-radius:var(--d-radius-panel);gap:var(--d-sp-0-5)}',
818
+ '.d-segmented-item{display:inline-flex;align-items:center;justify-content:center;padding:var(--d-sp-1-5) var(--d-sp-3);font:inherit;font-size:var(--d-text-sm);font-weight:var(--d-fw-medium,500);cursor:pointer;border:none;background:none;outline:none;border-radius:var(--d-radius-inner);white-space:nowrap;transition:all var(--d-duration-fast)}',
819
+ '.d-segmented-item:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
820
+ '.d-segmented-item[aria-checked="true"]{font-weight:var(--d-fw-medium,500)}',
821
+ '.d-segmented-item[disabled]{cursor:not-allowed;opacity:var(--d-disabled-opacity)}',
822
+ '.d-segmented-sm .d-segmented-item{padding:var(--d-field-py-xs) var(--d-sp-2);font-size:var(--d-field-text-xs)}',
823
+ '.d-segmented-lg .d-segmented-item{padding:var(--d-sp-2) var(--d-sp-4);font-size:var(--d-field-text-md)}',
824
+ '.d-segmented-block{display:flex;width:100%}',
825
+ '.d-segmented-block>.d-segmented-item{flex:1}',
826
+ '.d-segmented[data-disabled]{opacity:var(--d-disabled-opacity);cursor:not-allowed;pointer-events:none}',
827
+
828
+ // ═══════════════════════════════════════════════════════════════
829
+ // MENU / MENUBAR / NAVIGATION MENU
830
+ // ═══════════════════════════════════════════════════════════════
831
+ '.d-menu{display:flex;flex-direction:column;min-width:180px;padding:var(--d-sp-1)}',
832
+ '.d-menu-item{display:flex;align-items:center;gap:var(--d-sp-2);padding:var(--d-sp-2) var(--d-sp-3);cursor:pointer;font-size:var(--d-text-base);outline:none;border:none;background:none;text-align:left;width:100%;font:inherit;border-radius:var(--d-radius-inner)}',
833
+ '.d-menu-item:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset-inset)}',
834
+ '.d-menu-item-disabled{opacity:var(--d-disabled-opacity);cursor:not-allowed}',
835
+ '.d-menu-item-icon{flex-shrink:0;width:1em;height:1em}',
836
+ '.d-menu-item-label{flex:1}',
837
+ '.d-menu-item-arrow{flex-shrink:0;font-size:var(--d-text-xs);opacity:var(--d-icon-muted)}',
838
+ '.d-menu-group-label{padding:var(--d-sp-1) var(--d-sp-3);font-size:var(--d-text-xs);font-weight:var(--d-fw-title);color:var(--d-muted)}',
839
+ '.d-menu-separator{height:1px;margin:var(--d-sp-1) 0;background:var(--d-border)}',
840
+ '.d-menu-sub{position:absolute;left:100%;top:0;z-index:var(--d-z-dropdown);min-width:180px;padding:var(--d-sp-1);margin-top:var(--d-offset-menu);margin-left:var(--d-offset-menu)}',
841
+ '.d-menu-sub-wrap{position:relative}',
842
+ '.d-menubar{display:flex;align-items:center;gap:0}',
843
+ '.d-menubar-wrap{position:relative;display:inline-flex}',
844
+ '.d-menubar-item{display:flex;align-items:center;padding:var(--d-sp-1-5) var(--d-sp-3);cursor:pointer;font:inherit;font-size:var(--d-text-base);font-weight:var(--d-fw-medium,500);background:none;border:none;outline:none}',
845
+ '.d-menubar-item:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset-inset)}',
846
+ '.d-navmenu{display:flex;align-items:center;gap:var(--d-sp-1)}',
847
+ '.d-navmenu-item{display:flex;align-items:center;gap:var(--d-sp-2);padding:var(--d-sp-2) var(--d-sp-3);font:inherit;font-size:var(--d-text-base);font-weight:var(--d-fw-medium,500);cursor:pointer;text-decoration:none;border:none;background:none;outline:none;white-space:nowrap}',
848
+ '.d-navmenu-item:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset-inset)}',
849
+ '.d-navmenu-content{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown);min-width:200px;padding:var(--d-sp-3);margin-top:var(--d-offset-dropdown)}',
850
+
851
+ // ═══════════════════════════════════════════════════════════════
852
+ // AFFIX (sticky)
853
+ // ═══════════════════════════════════════════════════════════════
854
+ '.d-affix{position:relative}',
855
+ '.d-affix-fixed{position:fixed;z-index:var(--d-z-sticky)}',
856
+
857
+ // ═══════════════════════════════════════════════════════════════
858
+ // TABLE
859
+ // ═══════════════════════════════════════════════════════════════
860
+ '.d-table-wrap{overflow-x:auto}',
861
+ '.d-table{width:100%;border-collapse:collapse;font-size:var(--d-text-base)}',
862
+ '.d-th{text-align:left;font-weight:var(--d-fw-title);padding:var(--d-sp-3)}',
863
+ '.d-td{padding:var(--d-sp-3)}',
864
+ '.d-table-compact .d-th,.d-table-compact .d-td{padding:var(--d-sp-1-5) var(--d-sp-3)}',
865
+ '.d-th-sortable{cursor:pointer;user-select:none}',
866
+ '.d-th-sort-icon{display:inline-flex;margin-left:var(--d-sp-1);font-size:var(--d-text-xs);opacity:var(--d-disabled-opacity-soft)}',
867
+ '.d-th-sort-active .d-th-sort-icon{opacity:1}',
868
+ '.d-table-expandable .d-td:first-child{padding-left:var(--d-sp-6)}',
869
+ '.d-table-expand-btn{background:none;border:none;cursor:pointer;padding:0;font-size:var(--d-text-sm);margin-right:var(--d-sp-2)}',
870
+ '.d-table-row-selected{font-weight:var(--d-fw-medium,500)}',
871
+ '.d-table-sticky{position:sticky;top:0;z-index:2}',
872
+ '.d-table-footer{padding:var(--d-sp-3);display:flex;align-items:center;justify-content:space-between}',
873
+
874
+ // ═══════════════════════════════════════════════════════════════
875
+ // DATATABLE
876
+ // ═══════════════════════════════════════════════════════════════
877
+ '.d-datatable{display:flex;flex-direction:column;width:100%;font-size:var(--d-text-base)}',
878
+ '.d-datatable-header{display:flex;align-items:center;gap:var(--d-sp-3);padding:var(--d-sp-3)}',
879
+ '.d-datatable-scroll{overflow:auto;flex:1}',
880
+ '.d-datatable-table{width:100%;border-collapse:collapse;table-layout:auto}',
881
+ '.d-datatable-th{text-align:left;font-weight:var(--d-fw-title,600);padding:var(--d-sp-3);position:relative;white-space:nowrap;font-size:var(--d-text-sm);letter-spacing:var(--d-ls-caps);text-transform:uppercase}',
882
+ '.d-datatable-th-sortable{cursor:pointer;user-select:none}',
883
+ '.d-datatable-th-sortable:hover{opacity:0.8}',
884
+ '.d-datatable-sort-icon{display:inline;margin-left:var(--d-sp-1);font-size:var(--d-text-xs);opacity:var(--d-disabled-opacity-soft)}',
885
+ '.d-datatable-th-sorted-asc .d-datatable-sort-icon,.d-datatable-th-sorted-desc .d-datatable-sort-icon{opacity:1}',
886
+ '.d-datatable-td{padding:var(--d-sp-3);vertical-align:middle}',
887
+ '.d-datatable-td-editing{padding:0}',
888
+ '.d-datatable-edit-input{width:100%;padding:var(--d-sp-2) var(--d-sp-3);border:var(--d-border-width-strong) solid var(--d-primary);background:var(--d-surface-0);color:var(--d-fg);font:inherit;font-size:var(--d-text-base);outline:none;box-sizing:border-box}',
889
+ '.d-datatable-row{transition:background var(--d-duration-fast,100ms) var(--d-easing-standard,ease)}',
890
+ '.d-datatable-hoverable .d-datatable-row:hover{background:var(--d-surface-1,rgba(0,0,0,0.03))}',
891
+ '.d-datatable-striped .d-datatable-row:nth-child(even){background:var(--d-surface-0,rgba(0,0,0,0.02))}',
892
+ '.d-datatable-row-selected{background:var(--d-selected-bg) !important;font-weight:var(--d-fw-medium,500)}',
893
+ '.d-datatable-row-expanded{background:var(--d-surface-1)}',
894
+ '.d-datatable-expand-row{background:var(--d-surface-0)}',
895
+ '.d-datatable-expand-row .d-datatable-td{padding:var(--d-sp-4) var(--d-sp-6)}',
896
+ '.d-datatable-expand-btn{background:none;border:none;cursor:pointer;padding:var(--d-sp-1);font-size:var(--d-text-sm);color:var(--d-muted-fg);line-height:var(--d-lh-none)}',
897
+ '.d-datatable-expand-btn:hover{color:var(--d-fg)}',
898
+ '.d-datatable-checkbox{cursor:pointer;width:16px;height:16px;accent-color:var(--d-primary)}',
899
+ '.d-datatable-sticky{position:sticky;top:0;z-index:4;background:var(--d-surface-0)}',
900
+ '.d-datatable-pinned-left,.d-datatable-pinned-right{position:sticky;z-index:2;background:var(--d-surface-0)}',
901
+ '.d-datatable-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;user-select:none}',
902
+ '.d-datatable-resize-handle:hover{background:var(--d-primary)}',
903
+ '.d-datatable-filter-icon{background:none;border:none;cursor:pointer;font-size:var(--d-text-xs);padding:var(--d-sp-1);color:var(--d-muted-fg);line-height:var(--d-lh-none)}',
904
+ '.d-datatable-filter-icon:hover,.d-datatable-filter-active{color:var(--d-primary)}',
905
+ '.d-datatable-filter-popup{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown,1000);padding:var(--d-sp-2);min-width:180px}',
906
+ '.d-datatable-filter-popup input{width:100%;padding:var(--d-sp-1-5) var(--d-sp-2);border:var(--d-border-width) solid var(--d-border);border-radius:var(--d-radius-inner,4px);font:inherit;font-size:var(--d-text-sm);background:var(--d-surface-0);color:var(--d-fg);outline:none;box-sizing:border-box}',
907
+ '.d-datatable-filter-popup input:focus{border-color:var(--d-primary);box-shadow:0 0 0 var(--d-focus-ring-width) var(--d-ring)}',
908
+ '.d-datatable-pagination{display:flex;align-items:center;justify-content:flex-end;gap:var(--d-sp-3);padding:var(--d-sp-3);font-size:var(--d-text-sm)}',
909
+ '.d-datatable-page-size{display:flex;align-items:center;gap:var(--d-sp-2)}',
910
+ '.d-datatable-page-size select{padding:var(--d-sp-1) var(--d-sp-2);border:var(--d-border-width) solid var(--d-border);border-radius:var(--d-radius-inner,4px);font:inherit;font-size:var(--d-text-sm);background:var(--d-surface-0);color:var(--d-fg);cursor:pointer}',
911
+ '.d-datatable-page-btn{background:none;border:var(--d-border-width) solid var(--d-border);border-radius:var(--d-radius-inner,4px);padding:var(--d-sp-1-5) var(--d-sp-3);font:inherit;font-size:var(--d-text-sm);cursor:pointer;color:var(--d-fg)}',
912
+ '.d-datatable-page-btn:hover:not([disabled]){background:var(--d-item-hover-bg);border-color:var(--d-border-strong)}',
913
+ '.d-datatable-page-btn[disabled]{opacity:var(--d-disabled-opacity-soft);cursor:not-allowed}',
914
+ '.d-datatable-page-info{color:var(--d-muted-fg)}',
915
+ '.d-datatable-empty{text-align:center}',
916
+ '.d-datatable-empty .d-datatable-td{padding:var(--d-sp-8);color:var(--d-muted-fg);font-style:italic}',
917
+ '.d-datatable-export-btn{background:none;border:var(--d-border-width) solid var(--d-border);border-radius:var(--d-radius,4px);padding:var(--d-sp-1-5) var(--d-sp-3);font:inherit;font-size:var(--d-text-sm);cursor:pointer;color:var(--d-fg);margin-left:auto}',
918
+ '.d-datatable-export-btn:hover{background:var(--d-item-hover-bg);border-color:var(--d-border-strong)}',
919
+ '@media(prefers-reduced-motion:reduce){.d-datatable-row{transition:none}}',
920
+
921
+ // ═══════════════════════════════════════════════════════════════
922
+ // LIST
923
+ // ═══════════════════════════════════════════════════════════════
924
+ '.d-list{display:flex;flex-direction:column}',
925
+ '.d-list-item{display:flex;align-items:flex-start;gap:var(--d-sp-3);padding:var(--d-sp-3)}',
926
+ '.d-list-item-meta{display:flex;flex-direction:column;gap:var(--d-sp-1);flex:1;min-width:0}',
927
+ '.d-list-item-title{font-size:var(--d-text-base);font-weight:var(--d-fw-medium,500)}',
928
+ '.d-list-item-desc{font-size:var(--d-text-sm);color:var(--d-muted);line-height:var(--d-lh-normal)}',
929
+ '.d-list-item-actions{display:flex;gap:var(--d-sp-2);align-items:center;flex-shrink:0}',
930
+ '.d-list-item-avatar{flex-shrink:0}',
931
+ '.d-list-header{padding:var(--d-sp-3);font-weight:var(--d-fw-title)}',
932
+ '.d-list-footer{padding:var(--d-sp-3)}',
933
+ '.d-list-grid{display:grid}',
934
+ '.d-list-loading{display:flex;justify-content:center;padding:var(--d-sp-4)}',
935
+
936
+ // ═══════════════════════════════════════════════════════════════
937
+ // TREE
938
+ // ═══════════════════════════════════════════════════════════════
939
+ '.d-tree{display:flex;flex-direction:column}',
940
+ '.d-tree-node{display:flex;flex-direction:column}',
941
+ '.d-tree-node-content{display:flex;align-items:center;gap:var(--d-sp-1);padding:var(--d-sp-1) 0;cursor:pointer;font-size:var(--d-text-base)}',
942
+ '.d-tree-node-indent{display:inline-flex;width:var(--d-tree-indent);flex-shrink:0}',
943
+ '.d-tree-node-switcher{display:inline-flex;align-items:center;justify-content:center;width:var(--d-tree-indent);cursor:pointer;font-size:var(--d-text-sm);transition:transform var(--d-duration-fast);background:none;border:none;padding:0}',
944
+ '.d-tree-node-switcher-open{transform:rotate(90deg)}',
945
+ '.d-tree-node-checkbox{flex-shrink:0}',
946
+ '.d-tree-node-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}',
947
+ '.d-tree-node-selected .d-tree-node-label{font-weight:var(--d-fw-medium,500)}',
948
+ '.d-tree-children{padding-left:var(--d-tree-indent)}',
949
+ '.d-tree-node-dragging{opacity:var(--d-disabled-opacity)}',
950
+
951
+ // ═══════════════════════════════════════════════════════════════
952
+ // AVATAR
953
+ // ═══════════════════════════════════════════════════════════════
954
+ '.d-avatar{display:inline-flex;align-items:center;justify-content:center;width:var(--d-avatar-size);height:var(--d-avatar-size);overflow:hidden;flex-shrink:0}',
955
+ '.d-avatar-sm{width:var(--d-avatar-size-sm);height:var(--d-avatar-size-sm);font-size:var(--d-text-xs)}',
956
+ '.d-avatar-lg{width:var(--d-avatar-size-lg);height:var(--d-avatar-size-lg);font-size:var(--d-text-md)}',
957
+ '.d-avatar-xl{width:var(--d-avatar-size-xl);height:var(--d-avatar-size-xl);font-size:var(--d-text-lg)}',
958
+ '.d-avatar-img{width:100%;height:100%;object-fit:cover}',
959
+ '.d-avatar-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:var(--d-text-sm);font-weight:var(--d-fw-title)}',
960
+ '.d-avatar-group{display:flex}',
961
+ '.d-avatar-group>.d-avatar{margin-left:calc(var(--d-sp-2) * -1);outline:var(--d-border-width-strong) solid var(--d-bg)}',
962
+ '.d-avatar-group>.d-avatar:first-child{margin-left:0}',
963
+ '.d-avatar-group-count{display:inline-flex;align-items:center;justify-content:center;margin-left:calc(var(--d-sp-2) * -1);font-size:var(--d-text-xs);font-weight:var(--d-fw-title);z-index:1}',
964
+
965
+ // ═══════════════════════════════════════════════════════════════
966
+ // PROGRESS
967
+ // ═══════════════════════════════════════════════════════════════
968
+ '.d-progress-wrap{position:relative;width:100%;display:flex;flex-direction:column;gap:var(--d-sp-1)}',
969
+ '.d-progress{position:relative;width:100%;height:var(--d-progress-h);overflow:hidden}',
970
+ '.d-progress-sm{height:var(--d-progress-h-sm)}',
971
+ '.d-progress-md{height:var(--d-progress-h-md)}',
972
+ '.d-progress-lg{height:var(--d-progress-h-lg)}',
973
+ '.d-progress-bar{height:100%;transition:width var(--d-duration-normal) var(--d-easing-standard)}',
974
+ '.d-progress-label{font-size:var(--d-text-xs);font-weight:var(--d-fw-title);line-height:var(--d-lh-none);text-align:right}',
975
+ '.d-progress-md .d-progress-label,.d-progress-lg .d-progress-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}',
976
+ '.d-progress-circle{display:inline-flex;position:relative}',
977
+ '.d-progress-circle-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:var(--d-text-sm);font-weight:var(--d-fw-title)}',
978
+
979
+ // ═══════════════════════════════════════════════════════════════
980
+ // SKELETON
981
+ // ═══════════════════════════════════════════════════════════════
982
+ '.d-skeleton{animation:d-shimmer calc(var(--d-duration-spin) * 1.8) infinite linear;overflow:hidden}',
983
+ '.d-skeleton-text{height:var(--d-text-base);border-radius:var(--d-radius-inner)}',
984
+ '.d-skeleton-rect{border-radius:var(--d-radius-inner)}',
985
+ '.d-skeleton-circle{border-radius:50%}',
986
+ '.d-skeleton-group{display:flex;flex-direction:column;gap:var(--d-sp-2)}',
987
+ '.d-skeleton-avatar{border-radius:50%;flex-shrink:0}',
988
+ '.d-skeleton-button{height:var(--d-field-h-sm);border-radius:var(--d-radius);width:6rem}',
989
+ '.d-skeleton-input{height:var(--d-field-h-md);border-radius:var(--d-radius);width:100%}',
990
+
991
+ // ═══════════════════════════════════════════════════════════════
992
+ // ALERT
993
+ // ═══════════════════════════════════════════════════════════════
994
+ '.d-alert{display:flex;align-items:flex-start;gap:var(--d-sp-3);padding:var(--d-sp-3) var(--d-sp-4);font-size:var(--d-text-base)}',
995
+ '.d-alert-icon{flex-shrink:0;font-size:var(--d-text-lg);line-height:var(--d-lh-none)}',
996
+ '.d-alert-body{flex:1;min-width:0}',
997
+ '.d-alert-title{font-weight:var(--d-fw-medium,500);margin-bottom:var(--d-sp-1)}',
998
+ '.d-alert-desc{font-size:var(--d-text-sm);line-height:var(--d-lh-normal);color:var(--d-muted)}',
999
+ '.d-alert-dismiss{flex-shrink:0;background:transparent;border:none;cursor:pointer;font-size:var(--d-text-lg);line-height:var(--d-lh-none);padding:0}',
1000
+ '.d-alert-closable{padding-right:var(--d-sp-8)}',
1001
+
1002
+ // ═══════════════════════════════════════════════════════════════
1003
+ // TOAST / MESSAGE / NOTIFICATION
1004
+ // ═══════════════════════════════════════════════════════════════
1005
+ '.d-toast-container{position:fixed;z-index:var(--d-z-toast);display:flex;flex-direction:column;gap:var(--d-sp-2);pointer-events:none;max-width:360px}',
1006
+ '.d-toast-top-right{top:var(--d-sp-4);right:var(--d-sp-4)}',
1007
+ '.d-toast-top-left{top:var(--d-sp-4);left:var(--d-sp-4)}',
1008
+ '.d-toast-top-center{top:var(--d-sp-4);left:50%;transform:translateX(-50%)}',
1009
+ '.d-toast-bottom-right{bottom:var(--d-sp-4);right:var(--d-sp-4)}',
1010
+ '.d-toast-bottom-left{bottom:var(--d-sp-4);left:var(--d-sp-4)}',
1011
+ '.d-toast-bottom-center{bottom:var(--d-sp-4);left:50%;transform:translateX(-50%)}',
1012
+ '.d-toast{display:flex;align-items:flex-start;gap:var(--d-sp-2);padding:var(--d-sp-3) var(--d-sp-4);font-size:var(--d-text-base);pointer-events:auto;animation:d-slidein-t var(--d-duration-fast) var(--d-easing-standard)}',
1013
+ '.d-toast-message{flex:1}',
1014
+ '.d-toast-close{flex-shrink:0;background:transparent;border:none;cursor:pointer;font-size:var(--d-text-md);line-height:var(--d-lh-none);padding:0}',
1015
+ '.d-toast-exit{opacity:0;transform:translateY(calc(var(--d-slide-distance) * -1));transition:all var(--d-duration-fast) var(--d-easing-standard)}',
1016
+ // Notification (stacked notification system)
1017
+ '.d-notification-container{position:fixed;z-index:var(--d-z-toast);display:flex;flex-direction:column;gap:var(--d-sp-2);pointer-events:none;max-width:400px}',
1018
+ '.d-notification-top-right{top:var(--d-sp-4);right:var(--d-sp-4)}',
1019
+ '.d-notification-top-left{top:var(--d-sp-4);left:var(--d-sp-4)}',
1020
+ '.d-notification-bottom-right{bottom:var(--d-sp-4);right:var(--d-sp-4);flex-direction:column-reverse}',
1021
+ '.d-notification-bottom-left{bottom:var(--d-sp-4);left:var(--d-sp-4);flex-direction:column-reverse}',
1022
+ '.d-notification{display:flex;align-items:flex-start;gap:var(--d-sp-3);padding:var(--d-sp-3) var(--d-sp-4);min-width:320px;max-width:400px;pointer-events:auto;animation:d-slidein-t var(--d-duration-fast) var(--d-easing-standard)}',
1023
+ '.d-notification-icon{flex-shrink:0;font-size:var(--d-text-lg);line-height:var(--d-lh-none)}',
1024
+ '.d-notification-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--d-sp-2)}',
1025
+ '.d-notification-title{font-weight:var(--d-fw-medium,500)}',
1026
+ '.d-notification-desc{font-size:var(--d-text-sm);color:var(--d-muted);line-height:var(--d-lh-normal)}',
1027
+ '.d-notification-action{display:flex;gap:var(--d-sp-2)}',
1028
+ '.d-notification-exit{opacity:0;transform:translateY(calc(var(--d-slide-distance) * -1));transition:all var(--d-duration-fast) var(--d-easing-standard)}',
1029
+ // Message (inline centered toast)
1030
+ '.d-message-container{position:fixed;z-index:var(--d-z-toast);top:var(--d-sp-4);left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:var(--d-sp-2);pointer-events:none;align-items:center}',
1031
+ '.d-message{display:inline-flex;align-items:center;gap:var(--d-sp-2);padding:var(--d-sp-2) var(--d-sp-4);font-size:var(--d-text-base);pointer-events:auto;animation:d-slidein-b var(--d-duration-fast) var(--d-easing-standard);white-space:nowrap}',
1032
+
1033
+ // ═══════════════════════════════════════════════════════════════
1034
+ // RESULT (success/error/404 pages)
1035
+ // ═══════════════════════════════════════════════════════════════
1036
+ '.d-result{display:flex;flex-direction:column;align-items:center;padding:var(--d-sp-12) var(--d-sp-4);text-align:center;gap:var(--d-sp-3)}',
1037
+ '.d-result-icon{font-size:3rem;line-height:var(--d-lh-none)}',
1038
+ '.d-result-title{font-size:var(--d-text-xl);font-weight:var(--d-fw-title)}',
1039
+ '.d-result-desc{font-size:var(--d-text-base);color:var(--d-muted);max-width:480px;line-height:var(--d-lh-normal)}',
1040
+ '.d-result-actions{display:flex;gap:var(--d-sp-2)}',
1041
+
1042
+ // ═══════════════════════════════════════════════════════════════
1043
+ // DESCRIPTIONS (key-value pairs)
1044
+ // ═══════════════════════════════════════════════════════════════
1045
+ '.d-descriptions{display:flex;flex-direction:column;gap:var(--d-sp-3)}',
1046
+ '.d-descriptions-title{font-weight:var(--d-fw-title);font-size:var(--d-text-lg)}',
1047
+ '.d-descriptions-table{width:100%;border-collapse:collapse}',
1048
+ '.d-descriptions-label{padding:var(--d-sp-2) var(--d-sp-3);font-size:var(--d-text-sm);font-weight:var(--d-fw-medium,500);color:var(--d-muted);white-space:nowrap;vertical-align:top}',
1049
+ '.d-descriptions-content{padding:var(--d-sp-2) var(--d-sp-3);font-size:var(--d-text-base)}',
1050
+ '.d-descriptions-horizontal .d-descriptions-label{text-align:right;width:30%}',
1051
+
1052
+ // ═══════════════════════════════════════════════════════════════
1053
+ // STATISTIC
1054
+ // ═══════════════════════════════════════════════════════════════
1055
+ '.d-statistic{display:flex;flex-direction:column;gap:var(--d-sp-1)}',
1056
+ '.d-statistic-label{font-size:var(--d-text-sm);color:var(--d-muted)}',
1057
+ '.d-statistic-value{font-size:var(--d-text-3xl);font-weight:var(--d-fw-heading);line-height:var(--d-lh-tight);letter-spacing:var(--d-ls-heading)}',
1058
+ '.d-statistic-prefix,.d-statistic-suffix{font-size:var(--d-text-lg);vertical-align:baseline}',
1059
+ '.d-statistic-trend{display:inline-flex;align-items:center;gap:var(--d-sp-1);font-size:var(--d-text-sm);font-weight:var(--d-fw-medium,500)}',
1060
+ '.d-statistic-countdown{font-variant-numeric:tabular-nums}',
1061
+
1062
+ // ═══════════════════════════════════════════════════════════════
1063
+ // CALENDAR
1064
+ // ═══════════════════════════════════════════════════════════════
1065
+ '.d-calendar{display:flex;flex-direction:column}',
1066
+ '.d-calendar-header{display:flex;align-items:center;justify-content:space-between;padding:var(--d-sp-3)}',
1067
+ '.d-calendar-title{font-weight:var(--d-fw-title);font-size:var(--d-text-lg)}',
1068
+ '.d-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center}',
1069
+ '.d-calendar-weekday{font-size:var(--d-text-xs);font-weight:var(--d-fw-medium,500);padding:var(--d-sp-2);color:var(--d-muted)}',
1070
+ '.d-calendar-cell{padding:var(--d-sp-1);min-height:4rem;cursor:pointer;border:none;background:none;font:inherit;text-align:left;vertical-align:top;position:relative}',
1071
+ '.d-calendar-cell-content{font-size:var(--d-text-sm)}',
1072
+ '.d-calendar-mini .d-calendar-cell{min-height:auto;text-align:center;padding:var(--d-sp-1)}',
1073
+
1074
+ // ═══════════════════════════════════════════════════════════════
1075
+ // CAROUSEL
1076
+ // ═══════════════════════════════════════════════════════════════
1077
+ '.d-carousel{position:relative;overflow:hidden}',
1078
+ '.d-carousel-track{display:flex;transition:transform var(--d-duration-normal) var(--d-easing-standard)}',
1079
+ '.d-carousel-slide{flex:0 0 100%;min-width:0}',
1080
+ '.d-carousel-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:1;background:none;border:none;cursor:pointer;padding:var(--d-sp-2);font-size:var(--d-text-xl);opacity:0.7}',
1081
+ '.d-carousel-nav:hover{opacity:1}',
1082
+ '.d-carousel-prev{left:var(--d-sp-2)}',
1083
+ '.d-carousel-next{right:var(--d-sp-2)}',
1084
+ '.d-carousel-dots{display:flex;justify-content:center;gap:var(--d-sp-2);padding:var(--d-sp-3)}',
1085
+ '.d-carousel-dot{width:var(--d-carousel-dot);height:var(--d-carousel-dot);border-radius:50%;cursor:pointer;border:none;padding:0;opacity:var(--d-disabled-opacity-soft)}',
1086
+ '.d-carousel-dot-active{opacity:1}',
1087
+
1088
+ // ═══════════════════════════════════════════════════════════════
1089
+ // EMPTY (no data placeholder)
1090
+ // ═══════════════════════════════════════════════════════════════
1091
+ '.d-empty{display:flex;flex-direction:column;align-items:center;padding:var(--d-sp-8) var(--d-sp-4);text-align:center;gap:var(--d-sp-2)}',
1092
+ '.d-empty-icon{font-size:2.5rem;opacity:var(--d-disabled-opacity-soft);line-height:var(--d-lh-none)}',
1093
+ '.d-empty-desc{font-size:var(--d-text-sm);color:var(--d-muted);line-height:var(--d-lh-normal)}',
1094
+
1095
+ // ═══════════════════════════════════════════════════════════════
1096
+ // PLACEHOLDER
1097
+ // ═══════════════════════════════════════════════════════════════
1098
+ '.d-placeholder{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;overflow:hidden;aspect-ratio:16/9}',
1099
+ '.d-placeholder-avatar{border-radius:50%;aspect-ratio:1/1;width:auto}',
1100
+ '.d-placeholder-icon{aspect-ratio:1/1;width:auto}',
1101
+ '.d-placeholder-watermark{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}',
1102
+ '.d-placeholder-watermark>svg{width:40%;height:40%;opacity:0.08}',
1103
+ '.d-placeholder-label{position:relative;z-index:1;font-size:var(--d-text-sm);font-weight:var(--d-fw-medium)}',
1104
+ '.d-placeholder-content{position:relative;z-index:1}',
1105
+ '.d-placeholder-animate{background-size:200% 100%;animation:d-shimmer calc(var(--d-duration-spin) * 1.8) infinite linear}',
1106
+
1107
+ // ═══════════════════════════════════════════════════════════════
1108
+ // IMAGE (lightbox)
1109
+ // ═══════════════════════════════════════════════════════════════
1110
+ '.d-image{display:inline-block;overflow:hidden;position:relative}',
1111
+ '.d-image>img{display:block;width:100%;height:100%;object-fit:cover}',
1112
+ '.d-image-preview{cursor:zoom-in}',
1113
+ '.d-image-overlay{position:fixed;inset:0;z-index:var(--d-z-modal);background:var(--d-overlay);display:flex;align-items:center;justify-content:center;cursor:zoom-out}',
1114
+ '.d-image-overlay>img{max-width:90vw;max-height:90vh;object-fit:contain}',
1115
+ '.d-image-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:var(--d-text-sm);color:var(--d-muted)}',
1116
+
1117
+ // ═══════════════════════════════════════════════════════════════
1118
+ // TIMELINE
1119
+ // ═══════════════════════════════════════════════════════════════
1120
+ '.d-timeline{display:flex;flex-direction:column}',
1121
+ '.d-timeline-item{display:flex;gap:var(--d-sp-3);position:relative;padding-bottom:var(--d-sp-4)}',
1122
+ '.d-timeline-item:last-child{padding-bottom:0}',
1123
+ '.d-timeline-dot{display:flex;align-items:center;justify-content:center;width:var(--d-timeline-dot);height:var(--d-timeline-dot);border-radius:50%;flex-shrink:0;margin-top:var(--d-sp-1);z-index:1}',
1124
+ '.d-timeline-dot-lg{width:var(--d-timeline-dot-lg);height:var(--d-timeline-dot-lg);margin-top:0}',
1125
+ '.d-timeline-line{position:absolute;left:calc((var(--d-timeline-dot) - var(--d-timeline-line-w)) / 2);top:calc(var(--d-timeline-dot) + var(--d-sp-1));bottom:0;width:var(--d-timeline-line-w)}',
1126
+ '.d-timeline-item:last-child .d-timeline-line{display:none}',
1127
+ '.d-timeline-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--d-sp-1)}',
1128
+ '.d-timeline-label{font-size:var(--d-text-xs);color:var(--d-muted)}',
1129
+ '.d-timeline-alternate .d-timeline-item:nth-child(even){flex-direction:row-reverse;text-align:right}',
1130
+
1131
+ // Timeline: right-aligned mode
1132
+ '.d-timeline-right .d-timeline-item{flex-direction:row-reverse}',
1133
+ '.d-timeline-right .d-timeline-line{left:auto;right:calc((var(--d-timeline-dot) - var(--d-timeline-line-w)) / 2)}',
1134
+
1135
+ // Timeline: custom per-item positioning
1136
+ '.d-timeline-custom .d-timeline-item-right{flex-direction:row-reverse;text-align:right}',
1137
+ '.d-timeline-custom .d-timeline-item-right .d-timeline-line{left:auto;right:calc((var(--d-timeline-dot) - var(--d-timeline-line-w)) / 2)}',
1138
+
1139
+ // Timeline: horizontal layout
1140
+ '.d-timeline-horizontal{flex-direction:row;overflow-x:auto}',
1141
+ '.d-timeline-horizontal .d-timeline-item{flex-direction:column;padding-bottom:0;padding-right:var(--d-sp-4);min-width:var(--d-timeline-h-min-w)}',
1142
+ '.d-timeline-horizontal .d-timeline-item:last-child{padding-right:0}',
1143
+ '.d-timeline-horizontal .d-timeline-dot{margin-top:0}',
1144
+ '.d-timeline-horizontal .d-timeline-line{left:calc(var(--d-timeline-dot) + var(--d-sp-1));top:calc((var(--d-timeline-dot) - var(--d-timeline-line-w)) / 2);bottom:auto;right:0;width:auto;height:var(--d-timeline-line-w)}',
1145
+ '.d-timeline-horizontal .d-timeline-content{padding-top:var(--d-sp-2)}',
1146
+
1147
+ // Timeline: opposite label for alternate mode
1148
+ '.d-timeline-opposite{font-size:var(--d-text-xs);color:var(--d-muted);flex:1;min-width:0}',
1149
+ '.d-timeline-alternate .d-timeline-item:nth-child(odd) .d-timeline-opposite{text-align:right}',
1150
+ '.d-timeline-alternate .d-timeline-item:nth-child(even) .d-timeline-opposite{text-align:left}',
1151
+
1152
+ // Timeline: clickable + disabled items
1153
+ '.d-timeline-item-clickable{cursor:pointer}',
1154
+ '.d-timeline-item-clickable:hover .d-timeline-dot{transform:scale(1.2);transition:transform var(--d-duration-fast)}',
1155
+ '.d-timeline-item-disabled{opacity:var(--d-disabled-opacity);pointer-events:none}',
1156
+
1157
+ // Timeline: pending dot (pulsing)
1158
+ '.d-timeline-dot-pending{animation:d-timeline-pulse 1.5s ease-in-out infinite}',
1159
+ '@keyframes d-timeline-pulse{0%,100%{opacity:0.3;transform:scale(1)}50%{opacity:0.7;transform:scale(1.2)}}',
1160
+
1161
+ // Timeline: collapsible
1162
+ '.d-timeline-collapse-trigger{cursor:pointer;font-size:var(--d-text-xs);color:var(--d-primary);display:inline-flex;align-items:center;gap:var(--d-sp-1);user-select:none}',
1163
+ '.d-timeline-collapse-region{overflow:hidden;transition:max-height var(--d-duration-normal) var(--d-easing-standard)}',
1164
+
1165
+ // Timeline: skeleton loading
1166
+ '.d-timeline-skeleton .d-timeline-dot{background:var(--d-surface-1);animation:d-shimmer calc(var(--d-duration-spin)*1.8) infinite linear}',
1167
+ '.d-timeline-skeleton .d-timeline-content{display:flex;flex-direction:column;gap:var(--d-sp-2)}',
1168
+ '.d-timeline-skeleton .d-timeline-skel-bar{height:0.75em;border-radius:var(--d-radius-sm);background:var(--d-surface-1);animation:d-shimmer calc(var(--d-duration-spin)*1.8) infinite linear}',
1169
+
1170
+ // Timeline: data-color presets
1171
+ '.d-timeline-dot[data-color="blue"]{background-color:var(--d-info)}',
1172
+ '.d-timeline-dot[data-color="green"]{background-color:var(--d-success)}',
1173
+ '.d-timeline-dot[data-color="red"]{background-color:var(--d-error)}',
1174
+ '.d-timeline-dot[data-color="gray"]{background-color:var(--d-muted)}',
1175
+
1176
+ // Timeline: size small
1177
+ '.d-timeline-sm .d-timeline-dot{width:var(--d-timeline-sm-dot);height:var(--d-timeline-sm-dot);margin-top:var(--d-sp-1-5)}',
1178
+ '.d-timeline-sm .d-timeline-dot-lg{width:var(--d-timeline-sm-dot-lg);height:var(--d-timeline-sm-dot-lg)}',
1179
+ '.d-timeline-sm .d-timeline-line{left:calc((var(--d-timeline-sm-dot) - var(--d-timeline-line-w)) / 2);top:calc(var(--d-timeline-sm-dot) + var(--d-sp-1-5));width:var(--d-timeline-line-w)}',
1180
+ '.d-timeline-sm .d-timeline-item{gap:var(--d-sp-2);padding-bottom:var(--d-sp-2)}',
1181
+ '.d-timeline-sm .d-timeline-label{font-size:var(--d-text-xs)}',
1182
+
1183
+ // Timeline: size large
1184
+ '.d-timeline-lg .d-timeline-dot{width:var(--d-timeline-lg-dot);height:var(--d-timeline-lg-dot);margin-top:0;font-size:var(--d-text-sm)}',
1185
+ '.d-timeline-lg .d-timeline-dot-lg{width:var(--d-timeline-lg-dot-lg);height:var(--d-timeline-lg-dot-lg)}',
1186
+ '.d-timeline-lg .d-timeline-line{left:calc((var(--d-timeline-lg-dot) - var(--d-timeline-line-w)) / 2);top:calc(var(--d-timeline-lg-dot));width:var(--d-timeline-line-w)}',
1187
+ '.d-timeline-lg .d-timeline-item{gap:var(--d-sp-4);padding-bottom:var(--d-sp-6)}',
1188
+ '.d-timeline-lg .d-timeline-content{padding-top:var(--d-sp-1)}',
1189
+
1190
+ // Timeline: active dot
1191
+ '.d-timeline-dot-active{transform:scale(1.3);box-shadow:0 0 12px currentColor;transition:transform var(--d-duration-fast),box-shadow var(--d-duration-fast)}',
1192
+
1193
+ // Timeline: gradient line
1194
+ '.d-timeline-gradient .d-timeline-line{background:linear-gradient(to bottom,var(--d-primary),var(--d-accent)) !important}',
1195
+ '.d-timeline-horizontal.d-timeline-gradient .d-timeline-line{background:linear-gradient(to right,var(--d-primary),var(--d-accent)) !important}',
1196
+
1197
+ // Timeline: glass dots
1198
+ '.d-timeline-glass .d-timeline-dot{backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,0.1)}',
1199
+
1200
+ // Timeline: status dot colors
1201
+ '.d-timeline-dot[data-status="success"]{background-color:var(--d-success)}',
1202
+ '.d-timeline-dot[data-status="warning"]{background-color:var(--d-warning)}',
1203
+ '.d-timeline-dot[data-status="error"]{background-color:var(--d-error)}',
1204
+ '.d-timeline-dot[data-status="info"]{background-color:var(--d-info)}',
1205
+
1206
+ // Timeline: tag label
1207
+ '.d-timeline-tag{font-size:var(--d-text-xs);font-weight:var(--d-fw-medium,500);padding:var(--d-sp-0-5) var(--d-sp-1-5);border-radius:var(--d-radius-full);display:inline-flex;align-items:center}',
1208
+
1209
+ // ═══════════════════════════════════════════════════════════════
1210
+ // COMMENT
1211
+ // ═══════════════════════════════════════════════════════════════
1212
+ '.d-comment{display:flex;flex-direction:column;gap:var(--d-sp-3)}',
1213
+ '.d-comment-inner{display:flex;gap:var(--d-sp-3)}',
1214
+ '.d-comment-avatar{flex-shrink:0}',
1215
+ '.d-comment-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--d-sp-1)}',
1216
+ '.d-comment-header{display:flex;align-items:center;gap:var(--d-sp-2)}',
1217
+ '.d-comment-author{font-size:var(--d-text-sm);font-weight:var(--d-fw-medium)}',
1218
+ '.d-comment-time{font-size:var(--d-text-xs)}',
1219
+ '.d-comment-content{font-size:var(--d-text-base)}',
1220
+ '.d-comment-actions{display:flex;align-items:center;gap:var(--d-sp-3)}',
1221
+ '.d-comment-action{display:inline-flex;align-items:center;gap:var(--d-sp-1);cursor:pointer;border:0;background:none;padding:0;font-size:var(--d-text-xs);font-family:inherit;transition:color var(--d-duration-fast)}',
1222
+ '.d-comment-nested{padding-left:var(--d-sp-6);border-left:2px solid var(--d-border)}',
1223
+ '.d-comment-editor{display:flex;flex-direction:column;gap:var(--d-sp-2);margin-top:var(--d-sp-2)}',
1224
+ '.d-comment-editor-actions{display:flex;gap:var(--d-sp-2)}',
1225
+ '.d-comment-bordered{border:var(--d-border-width) var(--d-border-style) var(--d-border);border-radius:var(--d-radius-panel);padding:var(--d-sp-4)}',
1226
+ '.d-comment-minimal .d-comment-inner{gap:var(--d-sp-2)}',
1227
+ '.d-comment-minimal .d-comment-body{gap:0}',
1228
+ '.d-comment-minimal .d-comment-nested{padding-left:var(--d-sp-4);border-left:0}',
1229
+
1230
+ // ═══════════════════════════════════════════════════════════════
1231
+ // QRCODE
1232
+ // ═══════════════════════════════════════════════════════════════
1233
+ '.d-qrcode{display:inline-flex;align-items:center;justify-content:center;position:relative}',
1234
+ '.d-qrcode canvas,.d-qrcode svg{display:block}',
1235
+ '.d-qrcode-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:var(--d-radius-sm);overflow:hidden}',
1236
+ '.d-qrcode-bordered{border:var(--d-border-width) var(--d-border-style) var(--d-border);border-radius:var(--d-radius-lg);padding:var(--d-sp-3)}',
1237
+ '.d-qrcode-status{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:inherit}',
1238
+ '.d-qrcode-expired canvas,.d-qrcode-expired svg{filter:blur(3px);opacity:0.4}',
1239
+ '.d-qrcode-loading canvas,.d-qrcode-loading svg{opacity:0.3}',
1240
+ '.d-qrcode-scanned canvas,.d-qrcode-scanned svg{opacity:0.3}',
1241
+
1242
+ // ═══════════════════════════════════════════════════════════════
1243
+ // KBD (keyboard shortcut)
1244
+ // ═══════════════════════════════════════════════════════════════
1245
+ '.d-kbd{display:inline-flex;align-items:center;justify-content:center;padding:0.125rem var(--d-sp-1-5);font-family:var(--d-font-mono);font-size:0.75em;line-height:var(--d-lh-none);border-radius:var(--d-radius-sm);white-space:nowrap;vertical-align:baseline}',
1246
+ '.d-kbd-group{display:inline-flex;align-items:center;gap:var(--d-sp-1)}',
1247
+ '.d-kbd-separator{font-size:0.75em;opacity:var(--d-icon-muted)}',
1248
+
1249
+ // ═══════════════════════════════════════════════════════════════
1250
+ // TYPOGRAPHY
1251
+ // ═══════════════════════════════════════════════════════════════
1252
+ '.d-text{margin:0}',
1253
+ '.d-text-secondary{color:var(--d-muted)}',
1254
+ '.d-text-success{color:var(--d-success)}',
1255
+ '.d-text-warning{color:var(--d-warning)}',
1256
+ '.d-text-danger{color:var(--d-error)}',
1257
+ '.d-text-disabled{opacity:var(--d-disabled-opacity);cursor:not-allowed;user-select:none}',
1258
+ '.d-text-mark{padding:0 0.125em}',
1259
+ '.d-text-code{font-family:var(--d-font-mono);font-size:0.875em;padding:0.125em 0.375em;border-radius:var(--d-radius-sm)}',
1260
+ '.d-text-keyboard{font-family:var(--d-font-mono);font-size:0.875em}',
1261
+ '.d-text-underline{text-decoration:underline}',
1262
+ '.d-text-strikethrough{text-decoration:line-through}',
1263
+ '.d-text-strong{font-weight:var(--d-fw-heading)}',
1264
+ '.d-text-italic{font-style:italic}',
1265
+ '.d-title{margin:0;font-weight:var(--d-fw-heading);letter-spacing:var(--d-ls-heading);line-height:var(--d-lh-tight)}',
1266
+ '.d-title-1{font-size:var(--d-text-4xl)}',
1267
+ '.d-title-2{font-size:var(--d-text-3xl)}',
1268
+ '.d-title-3{font-size:var(--d-text-2xl)}',
1269
+ '.d-title-4{font-size:var(--d-text-xl)}',
1270
+ '.d-title-5{font-size:var(--d-text-lg)}',
1271
+ '.d-paragraph{margin:0;font-size:var(--d-text-base);line-height:var(--d-lh-relaxed)}',
1272
+ '.d-link{color:var(--d-primary);text-decoration:none;cursor:pointer}',
1273
+ '.d-link:hover{text-decoration:underline}',
1274
+ '.d-blockquote{margin:0;padding-left:var(--d-sp-4);font-style:italic;line-height:var(--d-lh-relaxed)}',
1275
+
1276
+ // ═══════════════════════════════════════════════════════════════
1277
+ // SPACE / FLEX (layout utility components)
1278
+ // ═══════════════════════════════════════════════════════════════
1279
+ '.d-space{display:flex;gap:var(--d-sp-2)}',
1280
+ '.d-space-vertical{flex-direction:column}',
1281
+ '.d-space-wrap{flex-wrap:wrap}',
1282
+
1283
+ // ═══════════════════════════════════════════════════════════════
1284
+ // ASPECT RATIO
1285
+ // ═══════════════════════════════════════════════════════════════
1286
+ '.d-aspect{position:relative;width:100%}',
1287
+ '.d-aspect>*{position:absolute;inset:0;width:100%;height:100%}',
1288
+
1289
+ // ═══════════════════════════════════════════════════════════════
1290
+ // RESIZABLE (split panes)
1291
+ // ═══════════════════════════════════════════════════════════════
1292
+ '.d-resizable{display:flex;overflow:hidden;position:relative}',
1293
+ '.d-resizable-vertical{flex-direction:column}',
1294
+ '.d-resizable-panel{overflow:auto;min-width:0;min-height:0}',
1295
+ '.d-resizable-handle{flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:col-resize;user-select:none;width:8px}',
1296
+ '.d-resizable-handle-vertical{cursor:row-resize;height:8px;width:auto}',
1297
+ '.d-resizable-handle-bar{width:4px;height:20px;border-radius:var(--d-radius-sm);opacity:var(--d-disabled-opacity-soft)}',
1298
+ '.d-resizable-handle-vertical .d-resizable-handle-bar{width:20px;height:4px}',
1299
+ '.d-resizable-handle:hover .d-resizable-handle-bar{opacity:var(--d-icon-muted)}',
1300
+
1301
+ // ═══════════════════════════════════════════════════════════════
1302
+ // SCROLL AREA
1303
+ // ═══════════════════════════════════════════════════════════════
1304
+ '.d-scrollarea{position:relative;overflow:hidden}',
1305
+ '.d-scrollarea-viewport{width:100%;height:100%;overflow:auto;scrollbar-width:thin}',
1306
+ '.d-scrollarea-viewport::-webkit-scrollbar{width:var(--d-scrollbar-w);height:var(--d-scrollbar-w)}',
1307
+ '.d-scrollarea-viewport::-webkit-scrollbar-thumb{border-radius:var(--d-radius-full)}',
1308
+
1309
+ // ═══════════════════════════════════════════════════════════════
1310
+ // WATERMARK
1311
+ // ═══════════════════════════════════════════════════════════════
1312
+ '.d-watermark{position:relative}',
1313
+ '.d-watermark-canvas{position:absolute;inset:0;pointer-events:none;z-index:10}',
1314
+
1315
+ // ═══════════════════════════════════════════════════════════════
1316
+ // TOUR
1317
+ // ═══════════════════════════════════════════════════════════════
1318
+ '.d-tour-overlay{position:fixed;inset:0;z-index:var(--d-z-modal);pointer-events:none}',
1319
+ '.d-tour-highlight{position:fixed;z-index:calc(var(--d-z-modal) + 1);box-shadow:0 0 0 9999px var(--d-overlay);border-radius:var(--d-radius-panel);pointer-events:none}',
1320
+ '.d-tour-popover{position:fixed;z-index:calc(var(--d-z-modal) + 2);min-width:280px;max-width:400px;padding:var(--d-sp-4);pointer-events:auto;display:flex;flex-direction:column;gap:var(--d-sp-3)}',
1321
+ '.d-tour-popover>.d-tour-close{position:absolute;top:var(--d-sp-2);right:var(--d-sp-2)}',
1322
+ '.d-tour-body{display:flex;flex-direction:column;gap:var(--d-sp-2)}',
1323
+ '.d-tour-title{font-weight:var(--d-fw-title);font-size:var(--d-text-base)}',
1324
+ '.d-tour-desc{font-size:var(--d-text-sm);color:var(--d-muted);line-height:var(--d-lh-normal)}',
1325
+ '.d-tour-footer{display:flex;align-items:center;justify-content:space-between}',
1326
+ '.d-tour-steps{font-size:var(--d-text-xs);color:var(--d-muted)}',
1327
+ '.d-tour-actions{display:flex;gap:var(--d-sp-2)}',
1328
+
1329
+ // ═══════════════════════════════════════════════════════════════
1330
+ // FLOAT BUTTON (FAB)
1331
+ // ═══════════════════════════════════════════════════════════════
1332
+ '.d-float-btn{position:fixed;z-index:var(--d-z-sticky);display:flex;align-items:center;justify-content:center;width:var(--d-float-btn-size);height:var(--d-float-btn-size);border-radius:50%;cursor:pointer;border:none;font-size:var(--d-text-xl);box-shadow:var(--d-elevation-2)}',
1333
+ '.d-float-btn:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
1334
+ '.d-float-btn-group{position:fixed;z-index:var(--d-z-sticky);display:flex;flex-direction:column-reverse;gap:var(--d-sp-2)}',
1335
+ '.d-float-btn-group .d-float-btn{position:relative}',
1336
+ '.d-float-btn-badge{position:absolute;top:-4px;right:-4px}',
1337
+
1338
+ // ═══════════════════════════════════════════════════════════════
1339
+ // SHARED OPTION (used by Select, Combobox, Command, Dropdown, etc.)
1340
+ // ═══════════════════════════════════════════════════════════════
1341
+ '.d-option{padding:var(--d-sp-2) var(--d-sp-3);cursor:pointer;font-size:var(--d-text-base);outline:none}',
1342
+ '.d-option:hover{background:var(--d-item-hover-bg)}',
1343
+ '.d-option-active{background:var(--d-item-hover-bg)}',
1344
+ '.d-option-disabled{opacity:var(--d-disabled-opacity);cursor:not-allowed}',
1345
+ '.d-option-selected{font-weight:var(--d-fw-medium,500)}',
1346
+
1347
+ // ═══════════════════════════════════════════════════════════════
1348
+ // DISCLOSURE REGION (shared by Accordion, Collapsible, Tree)
1349
+ // ═══════════════════════════════════════════════════════════════
1350
+ '.d-disclosure-region{transition:height var(--d-duration-normal) var(--d-easing-decelerate);overflow:hidden}',
1351
+
1352
+ // ═══════════════════════════════════════════════════════════════
1353
+ // DATE RANGE PICKER
1354
+ // ═══════════════════════════════════════════════════════════════
1355
+ '.d-daterange{position:relative;display:inline-flex;flex-direction:column}',
1356
+ '.d-daterange-panel{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown);margin-top:var(--d-offset-dropdown);display:flex;gap:0}',
1357
+ '.d-daterange-calendars{display:flex;gap:var(--d-sp-2)}',
1358
+ '.d-daterange-calendar{padding:var(--d-sp-3);min-width:280px}',
1359
+ '.d-daterange-presets{display:flex;flex-direction:column;gap:var(--d-sp-1);padding:var(--d-sp-3);border-right:var(--d-border-width) solid var(--d-border);min-width:140px}',
1360
+ '.d-daterange-preset{padding:var(--d-sp-1-5) var(--d-sp-2);cursor:pointer;font-size:var(--d-text-sm);border:none;background:none;font:inherit;text-align:left;border-radius:var(--d-radius-inner);white-space:nowrap}',
1361
+ '.d-daterange-preset:hover{background:var(--d-item-hover-bg)}',
1362
+ '.d-daterange-preset:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset-inset)}',
1363
+ '.d-datepicker-day-in-range{background:var(--d-selected-bg);border-radius:0}',
1364
+ '.d-datepicker-day-range-start{border-radius:var(--d-radius-inner) 0 0 var(--d-radius-inner)}',
1365
+ '.d-datepicker-day-range-end{border-radius:0 var(--d-radius-inner) var(--d-radius-inner) 0}',
1366
+
1367
+ // ═══════════════════════════════════════════════════════════════
1368
+ // TIME RANGE PICKER
1369
+ // ═══════════════════════════════════════════════════════════════
1370
+ '.d-timerange{position:relative;display:inline-flex;flex-direction:column}',
1371
+ '.d-timerange-panel{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown);margin-top:var(--d-offset-dropdown);display:flex;flex-direction:column;gap:0;padding:var(--d-sp-2);overflow:hidden}',
1372
+ '.d-timerange-row{display:flex;align-items:stretch}',
1373
+ '.d-timerange-section{display:flex;flex-direction:column;align-items:center}',
1374
+ '.d-timerange-label{font-size:var(--d-text-xs);font-weight:var(--d-fw-medium,500);padding:var(--d-sp-1-5);color:var(--d-muted)}',
1375
+ '.d-timerange-columns{display:flex;gap:0}',
1376
+ '.d-timerange-divider{display:flex;align-items:center;padding:0 var(--d-sp-2);font-size:var(--d-text-sm);color:var(--d-muted)}',
1377
+ '.d-timerange-error{font-size:var(--d-text-xs);color:var(--d-error);padding:var(--d-sp-1) var(--d-sp-2)}',
1378
+ '.d-timerange-error:empty{display:none}',
1379
+
1380
+ // ═══════════════════════════════════════════════════════════════
1381
+ // RANGE SLIDER
1382
+ // ═══════════════════════════════════════════════════════════════
1383
+ '.d-rangeslider{position:relative;display:flex;align-items:center;width:100%;height:32px;cursor:pointer;touch-action:none;user-select:none}',
1384
+ '.d-rangeslider[data-disabled]{opacity:var(--d-disabled-opacity);cursor:not-allowed;pointer-events:none}',
1385
+ '.d-rangeslider-track{position:absolute;left:0;right:0;height:var(--d-slider-track-h);border-radius:var(--d-radius-full);background:var(--d-surface-1)}',
1386
+ '.d-rangeslider-fill{position:absolute;height:var(--d-slider-track-h);border-radius:var(--d-radius-full);background:var(--d-primary)}',
1387
+ '.d-rangeslider-thumb{position:absolute;width:var(--d-rangeslider-thumb);height:var(--d-rangeslider-thumb);border-radius:50%;background:var(--d-primary);transform:translate(-50%,-50%);top:50%;cursor:grab;outline:none;z-index:1}',
1388
+ '.d-rangeslider-thumb:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
1389
+ '.d-rangeslider-thumb:active{cursor:grabbing}',
1390
+ '.d-rangeslider-tooltip{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);margin-bottom:var(--d-offset-tooltip);font-size:var(--d-text-xs);white-space:nowrap;padding:var(--d-sp-1);border-radius:var(--d-radius-panel);pointer-events:none}',
1391
+
1392
+ // ═══════════════════════════════════════════════════════════════
1393
+ // TREE SELECT
1394
+ // ═══════════════════════════════════════════════════════════════
1395
+ '.d-treeselect{position:relative;display:inline-flex;flex-direction:column}',
1396
+ '.d-treeselect-trigger{display:flex;align-items:center;padding:var(--d-sp-2) var(--d-sp-3)}',
1397
+ '.d-treeselect-display{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}',
1398
+ '.d-treeselect-panel{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown);margin-top:var(--d-offset-dropdown);min-width:240px;max-height:var(--d-panel-max-h);overflow:auto}',
1399
+ '.d-treeselect-panel .d-tree{padding:var(--d-sp-1) 0}',
1400
+ '.d-treeselect-panel .d-tree-node-content{padding:var(--d-sp-1) var(--d-sp-2)}',
1401
+ '.d-treeselect-search{display:block;width:100%;border:none;background:transparent;outline:none;font:inherit;padding:var(--d-sp-2) var(--d-sp-3);border-bottom:var(--d-border-width) solid var(--d-border)}',
1402
+ '.d-treeselect-tags{display:flex;flex-wrap:wrap;gap:var(--d-sp-1);padding:var(--d-sp-1) var(--d-sp-2)}',
1403
+ '.d-treeselect-tag{display:inline-flex;align-items:center;gap:var(--d-sp-1);font-size:var(--d-text-xs);padding:var(--d-sp-1) var(--d-sp-1-5);border-radius:var(--d-radius)}',
1404
+ '.d-treeselect-tag-remove{cursor:pointer;background:none;border:none;padding:0;font-size:0.75em;opacity:var(--d-icon-muted);line-height:var(--d-lh-none)}',
1405
+ '.d-treeselect-tag-remove:hover{opacity:1}',
1406
+
1407
+ // ═══════════════════════════════════════════════════════════════
1408
+ // NAVIGATION MENU (horizontal nav with dropdowns)
1409
+ // ═══════════════════════════════════════════════════════════════
1410
+ '.d-navmenu-list{display:flex;align-items:center;gap:0;list-style:none;margin:0;padding:0}',
1411
+ '.d-navmenu-trigger{position:relative}',
1412
+ '.d-navmenu-link{display:flex;align-items:center;gap:var(--d-sp-2);padding:var(--d-sp-2) var(--d-sp-3);font-size:var(--d-text-sm);text-decoration:none;cursor:pointer;border-radius:var(--d-radius-inner);outline:none}',
1413
+ '.d-navmenu-link:hover{background:var(--d-item-hover-bg)}',
1414
+ '.d-navmenu-link:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset-inset)}',
1415
+ '.d-navmenu-link-highlight{outline:none}',
1416
+ '.d-navmenu-link-desc{font-size:var(--d-text-xs);color:var(--d-muted);line-height:var(--d-lh-normal)}',
1417
+ '.d-navmenu-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--d-sp-1)}',
1418
+
1419
+ // ═══════════════════════════════════════════════════════════════
1420
+ // SPLITTER (resizable panels)
1421
+ // ═══════════════════════════════════════════════════════════════
1422
+ '.d-splitter{display:flex;width:100%;height:100%;overflow:hidden}',
1423
+ '.d-splitter-vertical{flex-direction:column}',
1424
+ '.d-splitter-panel{overflow:auto;flex-shrink:0}',
1425
+ '.d-splitter-handle{display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--d-surface-1);cursor:col-resize;user-select:none;touch-action:none}',
1426
+ '.d-splitter-handle-h{width:4px;cursor:col-resize}',
1427
+ '.d-splitter-handle-v{height:4px;cursor:row-resize}',
1428
+ '.d-splitter-handle:hover{background:var(--d-item-active-bg)}',
1429
+ '.d-splitter-handle:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset-inset)}',
1430
+ '.d-splitter-handle-dot{width:4px;height:24px;border-radius:2px;background:var(--d-border-strong);pointer-events:none}',
1431
+ '.d-splitter-handle-v .d-splitter-handle-dot{width:24px;height:4px}',
1432
+
1433
+ // ═══════════════════════════════════════════════════════════════
1434
+ // BACK TOP
1435
+ // ═══════════════════════════════════════════════════════════════
1436
+ '.d-backtop{position:fixed;bottom:var(--d-sp-8);right:var(--d-sp-8);z-index:var(--d-z-sticky);display:flex;align-items:center;justify-content:center;width:var(--d-backtop-size);height:var(--d-backtop-size);border-radius:50%;cursor:pointer;border:none;font-size:var(--d-text-lg);box-shadow:var(--d-elevation-2);transition:opacity var(--d-duration-fast) var(--d-easing-standard),transform var(--d-duration-fast) var(--d-easing-standard)}',
1437
+ '.d-backtop:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
1438
+ '.d-backtop-hidden{opacity:0;pointer-events:none;transform:translateY(var(--d-slide-distance))}',
1439
+ '.d-backtop-visible{opacity:1;pointer-events:auto;transform:translateY(0)}',
1440
+
1441
+ // Route outlet (View Transitions API)
1442
+ 'd-route{display:block;view-transition-name:d-route;contain:layout}',
1443
+
1444
+ // ═══════════════════════════════════════════════════════════════
1445
+ // PROSE (vertical rhythm for content-heavy sections)
1446
+ // ═══════════════════════════════════════════════════════════════
1447
+ '.d-prose{font-size:var(--d-text-base);line-height:var(--d-lh-relaxed);color:var(--d-fg)}',
1448
+ '.d-prose>*+*{margin-top:var(--d-sp-4)}',
1449
+ '.d-prose>*:first-child{margin-top:0}',
1450
+ '.d-prose h1{font-size:var(--d-text-4xl);font-weight:var(--d-fw-heading);line-height:var(--d-lh-tight);letter-spacing:var(--d-ls-heading);margin-top:var(--d-sp-12);margin-bottom:var(--d-sp-4)}',
1451
+ '.d-prose h2{font-size:var(--d-text-3xl);font-weight:var(--d-fw-heading);line-height:var(--d-lh-tight);letter-spacing:var(--d-ls-heading);margin-top:var(--d-sp-10);margin-bottom:var(--d-sp-3)}',
1452
+ '.d-prose h3{font-size:var(--d-text-2xl);font-weight:var(--d-fw-heading);line-height:var(--d-lh-snug);letter-spacing:var(--d-ls-heading);margin-top:var(--d-sp-8);margin-bottom:var(--d-sp-3)}',
1453
+ '.d-prose h4{font-size:var(--d-text-xl);font-weight:var(--d-fw-title);line-height:var(--d-lh-snug);margin-top:var(--d-sp-6);margin-bottom:var(--d-sp-2)}',
1454
+ '.d-prose p{margin:0}',
1455
+ '.d-prose ul,.d-prose ol{padding-left:var(--d-sp-6);margin:0}',
1456
+ '.d-prose li{margin-top:var(--d-sp-1)}',
1457
+ '.d-prose li>p{margin:0}',
1458
+ '.d-prose blockquote{border-left:3px solid var(--d-primary);padding-left:var(--d-sp-4);margin-left:0;margin-right:0;font-style:italic;color:var(--d-muted-fg)}',
1459
+ '.d-prose pre{padding:var(--d-sp-4);overflow-x:auto;font-family:var(--d-font-mono);font-size:var(--d-text-sm);line-height:var(--d-lh-normal);border-radius:var(--d-radius-panel)}',
1460
+ '.d-prose code{font-family:var(--d-font-mono);font-size:0.9em;padding:var(--d-sp-1) var(--d-sp-1-5);border-radius:var(--d-radius-sm,4px)}',
1461
+ '.d-prose pre code{padding:0;border-radius:0;font-size:inherit}',
1462
+ '.d-prose img{max-width:100%;height:auto;border-radius:var(--d-radius-panel)}',
1463
+ '.d-prose hr{border:none;height:1px;background:var(--d-border);margin:var(--d-sp-8) 0}',
1464
+ '.d-prose a{color:var(--d-primary);text-decoration:underline}',
1465
+ '.d-prose a:hover{color:var(--d-primary-hover)}',
1466
+ '.d-prose table{width:100%;border-collapse:collapse}',
1467
+ '.d-prose th,.d-prose td{padding:var(--d-sp-2) var(--d-sp-3);text-align:left;border-bottom:var(--d-border-width) solid var(--d-border)}',
1468
+ '.d-prose th{font-weight:var(--d-fw-title)}',
1469
+
1470
+ // ═══════════════════════════════════════════════════════════════
1471
+ // SPACE-Y / SPACE-X (child spacing utilities)
1472
+ // ═══════════════════════════════════════════════════════════════
1473
+ '.d-spacey-1>*+*{margin-top:0.25rem}','.d-spacey-2>*+*{margin-top:0.5rem}','.d-spacey-3>*+*{margin-top:0.75rem}',
1474
+ '.d-spacey-4>*+*{margin-top:1rem}','.d-spacey-5>*+*{margin-top:1.25rem}','.d-spacey-6>*+*{margin-top:1.5rem}',
1475
+ '.d-spacey-8>*+*{margin-top:2rem}','.d-spacey-10>*+*{margin-top:2.5rem}','.d-spacey-12>*+*{margin-top:3rem}',
1476
+ '.d-spacey-14>*+*{margin-top:3.5rem}','.d-spacey-16>*+*{margin-top:4rem}','.d-spacey-20>*+*{margin-top:5rem}',
1477
+ '.d-spacey-24>*+*{margin-top:6rem}',
1478
+ '.d-spacex-1>*+*{margin-left:0.25rem}','.d-spacex-2>*+*{margin-left:0.5rem}','.d-spacex-3>*+*{margin-left:0.75rem}',
1479
+ '.d-spacex-4>*+*{margin-left:1rem}','.d-spacex-5>*+*{margin-left:1.25rem}','.d-spacex-6>*+*{margin-left:1.5rem}',
1480
+ '.d-spacex-8>*+*{margin-left:2rem}','.d-spacex-10>*+*{margin-left:2.5rem}','.d-spacex-12>*+*{margin-left:3rem}',
1481
+ '.d-spacex-14>*+*{margin-left:3.5rem}','.d-spacex-16>*+*{margin-left:4rem}','.d-spacex-20>*+*{margin-left:5rem}',
1482
+ '.d-spacex-24>*+*{margin-left:6rem}',
1483
+
1484
+ // ═══════════════════════════════════════════════════════════════
1485
+ // DIVIDE (border between stacked children)
1486
+ // ═══════════════════════════════════════════════════════════════
1487
+ '.d-dividey>*+*{border-top:var(--d-border-width) solid var(--d-border)}',
1488
+ '.d-dividex>*+*{border-left:var(--d-border-width) solid var(--d-border)}',
1489
+ '.d-dividey-strong>*+*{border-top:var(--d-border-width) solid var(--d-border-strong)}',
1490
+ '.d-dividex-strong>*+*{border-left:var(--d-border-width) solid var(--d-border-strong)}',
1491
+
1492
+ // ═══════════════════════════════════════════════════════════════
1493
+ // BANNER (full-width announcement bar)
1494
+ // ═══════════════════════════════════════════════════════════════
1495
+ '.d-banner{display:flex;align-items:center;gap:var(--d-sp-3);padding:var(--d-sp-2-5) var(--d-sp-4);width:100%;font-size:var(--d-text-sm);line-height:var(--d-lh-normal)}',
1496
+ '.d-banner-sticky-top{position:sticky;top:0;z-index:var(--d-z-sticky)}',
1497
+ '.d-banner-sticky-bottom{position:sticky;bottom:0;z-index:var(--d-z-sticky)}',
1498
+ '.d-banner-icon{flex-shrink:0;font-size:var(--d-text-md)}',
1499
+ '.d-banner-body{flex:1;min-width:0}',
1500
+ '.d-banner-action{flex-shrink:0}',
1501
+ '.d-banner-dismiss{background:none;border:none;cursor:pointer;padding:var(--d-sp-1);font-size:var(--d-text-lg);line-height:var(--d-lh-none);opacity:var(--d-icon-muted);flex-shrink:0}',
1502
+ '.d-banner-dismiss:hover{opacity:1}',
1503
+ '.d-banner-dismiss:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
1504
+
1505
+ // ═══════════════════════════════════════════════════════════════
1506
+ // MASKED INPUT (inherits d-input styling)
1507
+ // ═══════════════════════════════════════════════════════════════
1508
+ '.d-masked-input{font-family:var(--d-font-mono);letter-spacing:var(--d-ls-caps)}',
1509
+
1510
+ // ═══════════════════════════════════════════════════════════════
1511
+ // CODE BLOCK
1512
+ // ═══════════════════════════════════════════════════════════════
1513
+ '.d-codeblock{position:relative;border-radius:var(--d-radius-panel);overflow:hidden;background:var(--d-surface-1);color:var(--d-surface-1-fg);border:var(--d-border-width) solid var(--d-border)}',
1514
+ '.d-codeblock-header{display:flex;align-items:center;justify-content:space-between;padding:var(--d-sp-2) var(--d-sp-3);font-size:var(--d-text-xs);gap:var(--d-sp-2);background:var(--d-surface-2);border-bottom:var(--d-border-width) solid var(--d-border);color:var(--d-surface-2-fg)}',
1515
+ '.d-codeblock-lang{opacity:var(--d-icon-muted);text-transform:uppercase;font-weight:var(--d-fw-medium,500);letter-spacing:var(--d-ls-caps)}',
1516
+ '.d-codeblock-copy{background:none;border:none;cursor:pointer;font:inherit;font-size:var(--d-text-xs);padding:var(--d-sp-1) var(--d-sp-2);border-radius:var(--d-radius-inner);opacity:var(--d-icon-muted)}',
1517
+ '.d-codeblock-copy:hover{opacity:1;background:var(--d-surface-2)}',
1518
+ '.d-codeblock-copy:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset)}',
1519
+ '.d-codeblock-pre{margin:0;padding:var(--d-sp-4);overflow-x:auto;font-family:var(--d-font-mono);font-size:var(--d-text-sm);line-height:var(--d-lh-normal);display:flex;gap:var(--d-sp-4)}',
1520
+ '.d-codeblock-gutter{display:flex;flex-direction:column;text-align:right;user-select:none;opacity:var(--d-disabled-opacity-soft);flex-shrink:0;min-width:2ch}',
1521
+ '.d-codeblock-ln{display:block}',
1522
+ '.d-codeblock-code{flex:1;min-width:0;white-space:pre;tab-size:2}',
1523
+
1524
+ // ═══════════════════════════════════════════════════════════════
1525
+ // SORTABLE LIST
1526
+ // ═══════════════════════════════════════════════════════════════
1527
+ '.d-sortable{display:flex;flex-direction:column;gap:0;position:relative}',
1528
+ '.d-sortable-h{flex-direction:row}',
1529
+ '.d-sortable-item{position:relative;transition:transform var(--d-duration-fast,150ms) var(--d-easing-standard,ease)}',
1530
+ '.d-sortable-dragging{opacity:var(--d-disabled-opacity);z-index:1}',
1531
+ '.d-sortable-handle{cursor:grab;display:inline-flex;align-items:center;justify-content:center;padding:var(--d-sp-1);font-size:var(--d-text-lg);opacity:var(--d-disabled-opacity-soft);user-select:none;touch-action:none}',
1532
+ '.d-sortable-handle:hover{opacity:0.7}',
1533
+ '.d-sortable-handle:active{cursor:grabbing}',
1534
+ '.d-sortable-indicator{height:2px;background:var(--d-primary);border-radius:1px;flex-shrink:0}',
1535
+ '.d-sortable-h .d-sortable-indicator{width:2px;height:auto}',
1536
+ '.d-sortable-active .d-sortable-item{transition:none}',
1537
+
1538
+ // ═══════════════════════════════════════════════════════════════
1539
+ // DATETIME PICKER
1540
+ // ═══════════════════════════════════════════════════════════════
1541
+ '.d-datetimepicker{position:relative;display:inline-flex;flex-direction:column}',
1542
+ '.d-datetimepicker-panel{position:absolute;top:100%;left:0;z-index:var(--d-z-dropdown);margin-top:var(--d-offset-dropdown);display:flex;flex-direction:column;min-width:280px}',
1543
+ '.d-datetimepicker-date{padding:var(--d-sp-3)}',
1544
+ '.d-datetimepicker-time{padding:var(--d-sp-2) var(--d-sp-3);border-top:var(--d-border-width) solid var(--d-border);display:flex;flex-direction:column;gap:var(--d-sp-2)}',
1545
+ '.d-datetimepicker-time-label{font-size:var(--d-text-xs);font-weight:var(--d-fw-medium,500);color:var(--d-muted)}',
1546
+ '.d-datetimepicker-time-row{display:flex;align-items:center;gap:var(--d-sp-1)}',
1547
+ '.d-datetimepicker-spinner{width:3rem;text-align:center;font-family:var(--d-font-mono);font-size:var(--d-text-sm);padding:var(--d-sp-1);border:var(--d-border-width) solid var(--d-border);border-radius:var(--d-radius-inner);background:transparent;color:inherit;outline:none}',
1548
+ '.d-datetimepicker-spinner:focus-visible{outline:var(--d-focus-ring-width) var(--d-focus-ring-style,solid) var(--d-focus-ring-color,var(--d-ring));outline-offset:var(--d-focus-ring-offset-inset)}',
1549
+ '.d-datetimepicker-sep{font-size:var(--d-text-sm);color:var(--d-muted);font-weight:var(--d-fw-medium,500)}',
1550
+ '.d-datetimepicker-ampm{font-size:var(--d-text-xs);padding:var(--d-sp-1) var(--d-sp-2);border:var(--d-border-width) solid var(--d-border);border-radius:var(--d-radius-inner);background:transparent;color:inherit;cursor:pointer;font-weight:var(--d-fw-medium,500)}',
1551
+ '.d-datetimepicker-ampm:hover{background:var(--d-item-hover-bg)}',
1552
+ '.d-datetimepicker-now{font-size:var(--d-text-xs);color:var(--d-primary);background:none;border:none;cursor:pointer;padding:0;font:inherit;text-align:left}',
1553
+ '.d-datetimepicker-now:hover{text-decoration:underline}',
1554
+ '.d-datetimepicker-footer{display:flex;justify-content:flex-end;padding:var(--d-sp-2) var(--d-sp-3);border-top:var(--d-border-width) solid var(--d-border)}',
1555
+
1556
+ // ═══════════════════════════════════════════════════════════════
1557
+ // SHELL (configurable layout system)
1558
+ // ═══════════════════════════════════════════════════════════════
1559
+ '.d-shell{display:grid;height:100vh;width:100%;overflow:hidden;transition:grid-template-columns var(--d-duration-normal,200ms) var(--d-easing-standard,ease)}',
1560
+ '.d-shell-header{grid-area:header;display:flex;align-items:center;gap:var(--d-sp-4);padding:0 var(--d-sp-6);min-height:var(--d-shell-header-h,52px);z-index:var(--d-z-sticky,1100);overflow:hidden}',
1561
+ '.d-shell-header-sticky{position:sticky;top:0}',
1562
+ '.d-shell-nav{grid-area:nav;display:flex;flex-direction:column;gap:var(--d-sp-1);padding:var(--d-sp-3);overflow-y:auto;overflow-x:hidden;transition:width var(--d-duration-normal,200ms) var(--d-easing-standard,ease),padding var(--d-duration-normal,200ms) var(--d-easing-standard,ease)}',
1563
+ '.d-shell-nav-hidden .d-shell-nav{padding:0;overflow:hidden}',
1564
+ '.d-shell-nav-rail .d-shell-nav{padding:var(--d-sp-2);align-items:center}',
1565
+ '.d-shell-nav-inline{display:flex;align-items:center;gap:var(--d-sp-4);flex:1;justify-content:center}',
1566
+ '.d-shell-body{grid-area:body;overflow:auto;display:flex;flex-direction:column;min-height:0}',
1567
+ '.d-shell-footer{grid-area:footer;display:flex;align-items:center;gap:var(--d-sp-4);padding:0 var(--d-sp-6);min-height:var(--d-shell-footer-h,auto)}',
1568
+ '.d-shell-aside{grid-area:aside;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;padding:var(--d-sp-3)}',
1569
+
1570
+ // ═══════════════════════════════════════════════════════════════
1571
+ // REDUCED MOTION
1572
+ // ═══════════════════════════════════════════════════════════════
1573
+ '@media(prefers-reduced-motion:reduce){*{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important}}',
1574
+
1575
+ // Scrollbar defaults (overridable per style)
1576
+ '::-webkit-scrollbar{width:var(--d-scrollbar-w);height:var(--d-scrollbar-w)}',
1577
+ '::-webkit-scrollbar-track{background:var(--d-scrollbar-track)}',
1578
+ '::-webkit-scrollbar-thumb{background:var(--d-scrollbar-thumb);border-radius:var(--d-radius-full)}',
1579
+ '::-webkit-scrollbar-thumb:hover{background:var(--d-scrollbar-thumb-hover)}'
1580
+ ].join('');
1581
+
1582
+ export function injectBase() {
1583
+ if (injected) return;
1584
+ if (typeof document === 'undefined') return;
1585
+ injected = true;
1586
+ let el = document.querySelector('[data-decantr-base]');
1587
+ if (!el) {
1588
+ el = document.createElement('style');
1589
+ el.setAttribute('data-decantr-base', '');
1590
+ document.head.appendChild(el);
1591
+ }
1592
+ el.textContent = `@layer d.base{${BASE_CSS}}`;
1593
+ }
1594
+
1595
+ /**
1596
+ * Merge class names, filtering falsy values.
1597
+ * @param {...(string|false|null|undefined)} classes
1598
+ * @returns {string}
1599
+ */
1600
+ export function cx(...classes) {
1601
+ return classes.filter(Boolean).join(' ');
1602
+ }
1603
+
1604
+ export function resetBase() {
1605
+ injected = false;
1606
+ }
1607
+
1608
+ /**
1609
+ * Toggle a boolean attribute reactively.
1610
+ * @param {HTMLElement} el
1611
+ * @param {boolean|Function} prop
1612
+ * @param {string} attr
1613
+ */
1614
+ export function reactiveAttr(el, prop, attr) {
1615
+ if (typeof prop === 'function') {
1616
+ createEffect(() => { prop() ? el.setAttribute(attr, '') : el.removeAttribute(attr); });
1617
+ } else if (prop) {
1618
+ el.setAttribute(attr, '');
1619
+ }
1620
+ }
1621
+
1622
+ /**
1623
+ * Toggle a CSS class reactively.
1624
+ * @param {HTMLElement} el
1625
+ * @param {boolean|Function} prop
1626
+ * @param {string} baseClass
1627
+ * @param {string} activeClass
1628
+ */
1629
+ export function reactiveClass(el, prop, baseClass, activeClass) {
1630
+ if (typeof prop === 'function') {
1631
+ createEffect(() => { el.className = prop() ? cx(baseClass, activeClass) : baseClass; });
1632
+ } else if (prop) {
1633
+ el.className = cx(baseClass, activeClass);
1634
+ }
1635
+ }
1636
+
1637
+ /**
1638
+ * Sync a DOM property reactively.
1639
+ * @param {HTMLElement} el
1640
+ * @param {*|Function} prop
1641
+ * @param {string} domProp
1642
+ */
1643
+ export function reactiveProp(el, prop, domProp) {
1644
+ if (typeof prop === 'function') {
1645
+ createEffect(() => { el[domProp] = prop(); });
1646
+ } else if (prop !== undefined) {
1647
+ el[domProp] = prop;
1648
+ }
1649
+ }
1650
+
1651
+ /**
1652
+ * Resolve a prop that may be a static value or signal getter.
1653
+ * @param {*|Function} prop
1654
+ * @returns {*}
1655
+ */
1656
+ export function resolve(prop) {
1657
+ return typeof prop === 'function' ? prop() : prop;
1658
+ }